<?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>199230</bug_id>
          
          <creation_ts>2019-06-26 13:15:27 -0700</creation_ts>
          <short_desc>testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set</short_desc>
          <delta_ts>2019-06-26 21:48:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1548095</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 13:15:27 -0700</bug_when>
    <thetext>testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548097</commentid>
    <comment_count>1</comment_count>
      <attachid>372943</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 13:19:55 -0700</bug_when>
    <thetext>Created attachment 372943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548114</commentid>
    <comment_count>2</comment_count>
      <attachid>372948</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 13:50:38 -0700</bug_when>
    <thetext>Created attachment 372948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548118</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 13:54:04 -0700</bug_when>
    <thetext>Attachment 372948 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/C/WKMessageListener.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548121</commentid>
    <comment_count>4</comment_count>
      <attachid>372950</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 14:15:12 -0700</bug_when>
    <thetext>Created attachment 372950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548122</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 14:17:06 -0700</bug_when>
    <thetext>Attachment 372950 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/C/WKMessageListener.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548123</commentid>
    <comment_count>6</comment_count>
      <attachid>372951</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 14:24:13 -0700</bug_when>
    <thetext>Created attachment 372951
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548124</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 14:26:21 -0700</bug_when>
    <thetext>Attachment 372951 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/C/WKMessageListener.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548125</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 14:30:50 -0700</bug_when>
    <thetext>I have no idea why linux doesn&apos;t like this.  Michael?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548150</commentid>
    <comment_count>9</comment_count>
      <attachid>372958</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-26 15:47:34 -0700</bug_when>
    <thetext>Created attachment 372958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548152</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-26 15:49:09 -0700</bug_when>
    <thetext>Attachment 372958 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/C/WKMessageListener.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548198</commentid>
    <comment_count>11</comment_count>
      <attachid>372958</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-26 16:30:25 -0700</bug_when>
    <thetext>Comment on attachment 372958
Patch

Clearing flags on attachment: 372958

Committed r246856: &lt;https://trac.webkit.org/changeset/246856&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548199</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-26 16:30:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548201</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-26 16:31:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/52217933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548358</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-06-26 21:48:06 -0700</bug_when>
    <thetext>Committed r246870: &lt;https://trac.webkit.org/changeset/246870&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372943</attachid>
            <date>2019-06-26 13:19:55 -0700</date>
            <delta_ts>2019-06-26 13:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199230-20190626131954.patch</filename>
            <type>text/plain</type>
            <size>59865</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2MDY1NDBiM2RmY2Q0MWRj
YTk4NjJkNzdlNjRkZTkyMmUzMWYyYWQuLjE2YmRiZTUwOTdiZTVmMDZkMjY2NDY4YjUzNzE2YTA5
N2MxYmJlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDYtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICB0ZXN0UnVubmVy
LnNldEFsd2F5c0FjY2VwdENvb2tpZXMgc2hvdWxkIHdhaXQgZm9yIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHRvIGJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MjMwCisgICAgICAgIDxyZGFyOi8vNTE3NTcxMDc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
d2hpY2ggaXMgbHVja2lseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAgIEl0IGFsc28g
YWRkcyBsaXN0ZW5lci1iYXNlZCBhc3luY2hyb25vdXMgdmVyc2lvbnMgb2YgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIHRoZXNlIG5ldyBhYmlsaXRpZXMgdG8gd2FpdCBmb3IgdGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIGJlIHNldCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoaWxlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBodW5nLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIHJhY2UgY29uZGl0aW9u
IHRoYXQgd2FzIGNhdXNpbmcgc29tZSBmbGFraW5lc3MgaW4gdGVzdHMgdGhhdCB1c2UgdGVzdFJ1
bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU1lc3NhZ2VMaXN0ZW5lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaC4KKyAgICAgICAgKEFQSTo6TWVzc2FnZUxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OnNlbmRSZXBs
eSk6CisgICAgICAgIChBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6TWVzc2FnZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVj
dGVkQnVuZGxlQ2xpZW50LmguCisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCk6
CisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5qZWN0
ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJv
bm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE5LTA2LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTWFrZSBIVFRQQ29va2llQWNjZXB0UG9saWN5IGFuIGVudW0gY2xhc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBiZThjNzhiZjMyMzEyZTYwNzU5
ZDI5NGM2MzFhNGE2M2RmNTMwNDRjLi40MDI5ZGY5MGU3Y2UyMjhkYzEzOTU3MjEyNGE1OTZjMjg0
ZTgwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzMsNiArMTMz
LDcgQEAgcHVibGljOgogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIEtleVZhbHVlU3RvcmFn
ZU1hbmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5hZ2VyLAorICAgICAgICBNZXNzYWdlTGlz
dGVuZXIsCiAgICAgICAgIE5hdmlnYXRpb24sCiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24sCiAg
ICAgICAgIE5hdmlnYXRpb25EYXRhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRl
eCAxMTY0YzE1ODJjNDEyYTdiNTUwYTViMWM1NmJiMWRmNTRmZmU3YWE5Li4wMzkxNGIyMWQyZjgz
Nzg0ODc3MDE5YTZkY2U1ZjQ4YmFmMGY5ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jh
c2UuaApAQCAtMTA2LDYgKzEwNiw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5z
cGVjdG9yKiBXS0luc3BlY3RvclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIqIFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRp
YVNlc3Npb25NZXRhZGF0YSogV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLTWVzc2FnZUxpc3RlbmVyKiBXS01lc3NhZ2VMaXN0ZW5lclJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkFjdGlvbiogV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0
YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2
aWdhdGlvbiogV0tOYXZpZ2F0aW9uUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMmQ3N2VhMDliNTBjZTIz
ODk3YmNmMmJkNWJhMWMyMWU1NTZiNzcwZC4uN2QyNWVkNGQwYmQ4NjQwNTJmZDQ3ZDI1M2FmYzlh
YTI2YjM1ZDQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zNDQsNiArMzQ0LDcgQEAgVUlQcm9jZXNzL0FQ
SS9DL1dLSWNvbkRhdGFiYXNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9B
UEkvQy9XS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcAorVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2Fn
ZUxpc3RlbmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja0Rpc3BsYXkuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tNb2NrTWVkaWFEZXZpY2UuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCAyMzUwYzYxZmUxMzIxOTg3OWUzZDE5OWNk
ODkwZWVkOGFhMzdjNTM1Li5hODA1MTEzZjM3MTZhNWUzMTZhNzg0MjY3OGQ2MWQ0MDdlYTgyOWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQ
STo6T2JqZWN0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyKTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElNZXNzYWdlTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElNZXNzYWdlTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjhkYmZjOWJkYTJhNDU1OTJhZTYxZjdk
Mzk4YmY0YmE4MzZmNmZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgTWVzc2FnZUxp
c3RlbmVyIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpNZXNzYWdlTGlzdGVuZXI+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXNzYWdlTGlzdGVuZXIpOworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8TWVzc2FnZUxpc3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+JiYpPiYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUxpc3RlbmVyKFdURk1vdmUocmVwbHkpKSk7CisgICAg
fQorCisgICAgdm9pZCBzZW5kUmVwbHkoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJlcGx5KQorICAg
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJNRVNTQUdFIExJU1RFTkVSIFNFTkRJTkcgUkVQTFkg
JXAiLCByZXBseS5nZXQoKSk7CisgICAgICAgIG1fcmVwbHkoV1RGTW92ZShyZXBseSkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBNZXNzYWdlTGlzdGVuZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8QVBJOjpPYmplY3Q+JiYpPiYmIHJlcGx5KQorICAgICAgICA6IG1fcmVwbHkoV1RG
TW92ZShyZXBseSkpIHsgV1RGTG9nQWx3YXlzKCJDUkVBVElORyBNRVNTQUdFIExJU1RFTkVSIik7
IH0KKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4mJik+IG1f
cmVwbHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKaW5kZXggYzg2NjAzZGRjOTRmZGRlNzhmZjVlN2U4YzNjZjczZDVj
ZDkzYzYwOS4uNTE3Mzc1NTk0OGRkNDE1ZTI3YTVmNzNlYTQ3MmZhYzgwOTViZWIxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTU4LDYgKzU4LDcgQEAg
Y2xhc3MgRXhwZXJpbWVudGFsRmVhdHVyZTsKIGNsYXNzIEZyYW1lSGFuZGxlOwogY2xhc3MgRnJh
bWVJbmZvOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIE1lc3NhZ2VMaXN0ZW5lcjsKIGNs
YXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmF2aWdhdGlv
bkRhdGE7CkBAIC0xMzcsNiArMTM4LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLSWNvbkRhdGFi
YXNlUmVmLCBXZWJJY29uRGF0YWJhc2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JS
ZWYsIFdlYkluc3BlY3RvclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmLCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiwgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEpCitXS19BRERfQVBJX01BUFBJTkcoV0tNZXNzYWdlTGlzdGVuZXJSZWYsIEFQSTo6TWVzc2Fn
ZUxpc3RlbmVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFS
ZWYsIEFQSTo6TmF2aWdhdGlvbkRhdGEpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9u
UmVmLCBBUEk6Ok5hdmlnYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBkMzQ1
NmFhNjgwMjcyYmM0MTA3MjZkYWVmM2U0YjkwOWI4YzgxODJkLi5iMzMyOGU4YzBiN2EyMGQxMTJl
OTQ3NTA5ZTZiN2UyZGM4Yjc1ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTI5
LDkgKzI5LDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgogCiAvLyBJbmplY3RlZCBC
dW5kbGUgQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgV0tUeXBlUmVmICgqV0tDb250ZXh0R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXJDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdL
TWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAog
dHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlIHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC01Nyw0ICs1OCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIHsKICAgICBXS0NvbnRleHRHZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjayAgICAgICAgICAgIGdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKIH0gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRWMTsKIAordHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRW
MiB7CisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLQ29u
dGV4dERpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0
RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAg
ICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworCisgICAg
Ly8gVmVyc2lvbiAxLgorICAgIFdLQ29udGV4dEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrICAgICAgICAgICAgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLQ29udGV4dERpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXJDYWxsYmFj
ayBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3Rl
bmVyOworfSBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYyOworCiAjZW5kaWYgLy8gV0tD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKaW5kZXggY2I3ZjBiZDFiNzFmYjA5NWFhNGI1
ZmIzMzgwM2E1MzJhNGM1NmY3Ny4uMDYzNmVhNmMyYzc3ZTNmZDRkMGI0ZGM2ZjEyZDA4ZGViODY5
NTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1h
bmFnZXIuY3BwCkBAIC02Miw5ICs2MiwxMiBAQCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTQogICAg
IHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGRhdGUpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAotdm9pZCBXS0Nvb2tp
ZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29r
aWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXS0Nvb2tp
ZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29r
aWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCB2b2lkKiBjb250ZXh0
LCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJh
Y2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKKyAgICB0b0ltcGwo
Y29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtj
b250ZXh0LCBjYWxsYmFja10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogbnVsbHB0
ciwgY29udGV4dCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCog
Y29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9u
IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1h
bmFnZXIuaAppbmRleCBjNjUxNGUzZmEwN2IzZTIzOGIwNGM0YjllYjAwOWNlOGVlMWJmOTNkLi43
MzM1NGQyY2JhNGVkZjk3YjlhNTc5MjBjZDQ1YmM3NzQyNTJiYWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaApAQCAtNjgsNyArNjgsOCBA
QCBXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJEZWxldGVBbGxDb29raWVzKFdLQ29va2ll
TWFuYWdlclJlZiBjb29raWVNYW5hZ2VyKQogLy8gVGhlIHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0
byB0aGUgVW5peCBlcG9jaC4KIFdLX0VYUE9SVCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdl
ciwgZG91YmxlKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSk7Cit0eXBlZGVmIHZvaWQgKCpXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24pKFdLRXJyb3JSZWYsIHZvaWQqKTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tD
b29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3ksIHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3lGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS0Nvb2tpZU1hbmFnZXJH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24pKFdLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgV0tFcnJvclJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1
bmN0aW9uIGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tNZXNzYWdlTGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMDEwYzQ3YzE5OTVkZGI2MDE1
YzYyMjVkOGM2NDJhMGQzNDEzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS01lc3NhZ2VMaXN0ZW5l
ci5oIgorCisjaW5jbHVkZSAiQVBJTWVzc2FnZUxpc3RlbmVyLmgiCisKK1dLVHlwZUlEIFdLTWVz
c2FnZUxpc3RlbmVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpNZXNzYWdl
TGlzdGVuZXI6OkFQSVR5cGUpOworfQorCit2b2lkIFdLTWVzc2FnZUxpc3RlbmVyU2VuZFJlcGx5
KFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYgdmFsdWUpCit7Cisg
ICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+c2VuZFJlcGx5KHRvSW1wbCh2YWx1ZSkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTRlOGEyZWY4MjE2YmRhNTBmYjBlZWE0NGMzNWU3MDRiM2UyMmRkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tNZXNzYWdlTGlz
dGVuZXJfaAorI2RlZmluZSBXS01lc3NhZ2VMaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQv
V0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
V0tfRVhQT1JUIFdLVHlwZUlEIFdLTWVzc2FnZUxpc3RlbmVyR2V0VHlwZUlEKCk7CisKK1dLX0VY
UE9SVCB2b2lkIFdLTWVzc2FnZUxpc3RlbmVyU2VuZFJlcGx5KFdLTWVzc2FnZUxpc3RlbmVyUmVm
IGxpc3RlbmVyLCBXS1R5cGVSZWYgcmVwbHkpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tNZXNzYWdlTGlzdGVuZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmgKaW5kZXggYjIyYzNlYjg2NjJmNWU3NmEwMzg2MGRlOWIyNThhNTM4YjFiMGM5My4uZWRiYmY1
OGNjYzY1OTc0MmI5YjFiNDRiNTM2NTI1N2EzMDI5ZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
CkBAIC0zMSw2ICszMSw3IEBACiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBXS1R5cGVSZWYgKCpXS1BhZ2VHZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogCiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2Ug
ewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTQ1LDQgKzQ2LDE1IEBAIHR5cGVkZWYgc3Ry
dWN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgewogICAgIFdLUGFnZURpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayAgICAgZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKIH0gV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRWMDsKIAordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnRWMSB7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLUGFn
ZURpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tQYWdlRGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworCisgICAgLy8gVmVy
c2lvbiAxLgorICAgIFdLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGVXaXRoTGlzdGVuZXJDYWxsYmFjayBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyOworfSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudFYxOworCiAjZW5kaWYgLy8gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHAKaW5kZXggZjRjYTYyY2NhYjZjM2RjZTUyMjIzNGEzZmVhNTQxZWIyZWNkZGRl
NS4uNTljNjZkYWZlMWE1YWE0NWM0N2YxM2VjZTYyNGM5MGZjNzNlMWNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJBUElNZXNz
YWdlTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDUsMTQgKzQ2
LDE4IEBAIHZvaWQgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9jCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkobWVzc2Fn
ZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCi12b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdl
Qm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKK3ZvaWQgV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxBUEk6Ok9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlICYmICFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKQorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisKKyAgICBpZiAobV9jbGllbnQuZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkgeworICAgICAgICBXS1R5
cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkoJnByb2Nlc3NQb29s
KSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCAmcmV0dXJu
RGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSkpOworICAgIH0KIAot
ICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0gbnVsbHB0cjsKLSAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKCZwcm9jZXNz
UG9vbCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgJnJl
dHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcih0b0FQSSgm
cHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9k
eSksIHRvQVBJKEFQSTo6TWVzc2FnZUxpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogUmVmUHRy
PEFQSTo6T2JqZWN0PiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCmluZGV4IGFiZmQ2YTRiNzg2ZmY1ZjI0ZmI5Y2RkNWNhOTYxN2IxOTUw
NzQwYTQuLjI2ZDcyZmQzZmFlMmM1OTA1OTI3NDQ1YWE3NDNlYmEyZmE1ZjgxMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50VjAsIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjE+IFZlcnNpb25z
OworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYw
LCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudFYyPiBWZXJzaW9uczsKIH07CiB9CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudChjb25zdCBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJv
Y2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+JiYpPiYmKSBvdmVycmlkZTsKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShX
ZWJQcm9jZXNzUG9vbCYpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggMzUzZTdm
YjQyMzdhYzlhNjQ1NmI0ODBiMmVjMDBjOWE1OGZhN2M2Mi4uZjdhMzhiM2RkM2E1YTY5NTdjNmQ1
MmZhODQ2OGFkMThiNjFjZTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmgiCiAKKyNpbmNsdWRlICJBUElNZXNzYWdlTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNDEsMTQgKzQyLDE5IEBAIHZvaWQgV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJvCiAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkocGFn
ZSksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVz
c2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpCit2b2lkIFdlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
QVBJOjpPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGll
bnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkKLSAgICAg
ICAgcmV0dXJuOworICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZQorICAgICAgICAmJiAhbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcikKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworCisgICAgaWYgKG1fY2xpZW50LmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpIHsKKyAgICAgICAgV0tU
eXBlUmVmIHJldHVybkRhdGFSZWYgPSBudWxscHRyOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKHBhZ2UpLCB0b0FQ
SShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVm
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoYWRvcHRSZWYodG9JbXBsKHJldHVybkRhdGFSZWYpKSk7CisgICAgfQogCi0gICAgV0tU
eXBlUmVmIHJldHVybkRhdGFSZWYgPSAwOwotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2VO
YW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuRGF0YSA9IGFkb3B0UmVmKHRvSW1wbChyZXR1
cm5EYXRhUmVmKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcih0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZU5h
bWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCB0b0FQSShBUEk6Ok1lc3NhZ2VMaXN0ZW5l
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRl
eCAzMGM3ZjM1NGMwMDFiNGVkNzI0NDg1MDE2YTNhZTdjNGNmNzQzNDdmLi5kZWJhZDY3OTY4MWRi
NWIyNTYwYzE0MTQ4MDJhM2Y1OGJkYzYxOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKLSNkZWZpbmUgV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV0tQYWdlLmgiCkBAIC0zNCw3ICszMyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2Jq
ZWN0OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50VjA+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudFYwLCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxPiBWZXJzaW9u
czsKIH07CiB9CiAKQEAgLTQ1LDkgKzQ0LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJ
OjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBS
ZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9i
amVjdD4mJik+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZDdiNmQ3NWEwNTY1MTY3N2VlNjBkMWViOTZkM2Y5MWEwNzdkMDBl
ZS4uMDU2YmM2MDdjM2RlNjgzMGFhNzRhMjEyZGFiNDQwZmI4YjQ2MmUxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MDQsOCArNzA0LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJuRGF0YSk7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlckRhdGEobV9wcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKSk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgp
KS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHByb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJlZigpXSAoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJl
dHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyRGF0YShw
cm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggNmUzMjk3ZGMxNjc0MjU1NmZhNjA2Mzc4ZTc3Y2E1Mzk5NDFmNDdm
Yy4uNDc5YzlhNmZkZTgwYmYzMDM1MzgxM2ZjOTk0NDNlZDExMzA5YTMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ5Myw3ICs0OTMsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50
PiYmKTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xp
Y3lDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7Ci0gICAgV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50KiBpbmplY3RlZEJ1bmRsZUNsaWVudCgpIHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQuZ2V0KCk7IH0KIAogICAgIEFQSTo6VUlDbGllbnQmIHVpQ2xpZW50KCkgeyByZXR1cm4g
Km1fdWlDbGllbnQ7IH0KICAgICB2b2lkIHNldFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlVJQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCA3ODY0YTE4M2Y3ZDczOGRlZDU0YTkwZDI4MmE1MDMzN2ZhNDI1NTM1Li45NDYyNzk5
ZjJhOGJkMWE0ZDc2ZjJkMzlmYzgyMzk0OWQxMDg1Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xOTAyLDkgKzE5MDIsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdAogICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gcmV0dXJu
RGF0YTsKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5kaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKCp0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzc1By
b3h5LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQo
KSwgcmV0dXJuRGF0YSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoVXNlckRhdGEod2ViUHJvY2Vz
c1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7Cisg
ICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSgqdGhpcywgbWVzc2FnZU5hbWUsIHdlYlByb2Nlc3NQcm94eS0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIFt3ZWJQ
cm9jZXNzUHJveHkgPSBtYWtlUmVmKCp3ZWJQcm9jZXNzUHJveHkpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJl
dHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyRGF0YSh3
ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMocmV0dXJuRGF0YS5nZXQo
KSkpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkR2V0U3RhdGlzdGlj
cyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IHJlcXVlc3RJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM3MTc3NmEwZDJkYzRmMTczZTljNjMzOTMwYWFhOGFiZjBkYzQ1NmEuLjAwNGJiZWFlYzRk
MjM2MWFlM2ZiZjFjMDY0YTIxOTkxZTMyNWQxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMSw2ICsxMTAxLDggQEAKIAkJNUNB
MjZEODEyMTdBQkQ1QjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMjZEODAyMTdBQkJCNjAw
Rjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovOyB9OwogCQk1Q0EyNkQ4MzIxN0FE
MUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMjZEN0YyMTdBQkJCNjAwRjk3QTM1IC8q
IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLzsgfTsKIAkJNUNBOTg1NEEyMTBCRUI2NDAwNTdF
QjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3Np
bmdXYXJuaW5nLmggKi87IH07CisJCTVDQUJEQzgxMjJDMkZDNEYwMDFFREU4RSAvKiBBUElNZXNz
YWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDQUJEQzdGMjJDMkZDMzIwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLzsg
fTsKKwkJNUNBQkRDODIyMkMyRkQyMjAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0FCREM3RTIyQzJG
QTA4MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0FEREUwNTIxNTA0NkJEMDA2N0QzMDkgLyog
V0tXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Qzc0MzAwRTIxNTAwNDkyMDA0QkZBMTcgLyogV0tXZWJQcm9jZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNBRkRFNDUyMTMwODQ2
MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVD
QUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDQyMTMwODQzNjAw
QjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi87IH07CkBAIC0zNjAyLDYgKzM2MDQs
OSBAQAogCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBUElIVFRQQ29v
a2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJSFRUUENvb2tp
ZVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNBOTg1NDky
MTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2Fy
bmluZ0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0FCREM3RDIyQzJGQTA4MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZXNzYWdlTGlzdGVuZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FCREM3RTIyQzJGQTA4MDAxRURFOEUgLyogV0tN
ZXNzYWdlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNZXNz
YWdlTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBQkRDN0YyMkMy
RkMzMjAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBUElNZXNzYWdlTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0FGREU0MzIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg0MCw2ICs3ODQ1LDcgQEAKIAkJCQkz
MUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywK
IAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xp
ZW50LmggKi8sCisJCQkJNUNBQkRDN0YyMkMyRkMzMjAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0
ZW5lci5oICovLAogCQkJCTdDRDNBNDgwMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9u
LmNwcCAqLywKIAkJCQk3Q0QzQTQ4MTFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5o
ICovLAogCQkJCTJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uQWN0aW9u
LmggKi8sCkBAIC03OTQzLDYgKzc5NDksOCBAQAogCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEw
MyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAy
NDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKIAkJCQlDOUNENDM5
QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAorCQkJCTVD
QUJEQzdEMjJDMkZBMDgwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5jcHAgKi8sCisJCQkJ
NUNBQkRDN0UyMkMyRkEwODAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi8sCiAJCQkJ
QzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovLAogCQkJCUMx
MUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi8sCiAJCQkJNDExQThE
REEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLywKQEAgLTkyNDcs
NiArOTI1NSw3IEBACiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAwN0JGQTUzIC8qIEFQSUludGVybmFs
RGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBDN0Yx
NTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTVDQUJEQzgxMjJDMkZDNEYwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDNBNDgzMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZp
Z2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVFQzFBNzgzNkVFMDBCNkNGQkUgLyog
QVBJTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkREOUVCMkQxQTZGMDEy
NTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTYz
NiwxMSArOTY0NSwxMSBAQAogCQkJCTgzRjk2NDRFMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRT
dHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQ2N0IzMzkyMTJF
MUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxsYmFja0lELmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTQxRTlGQjIxRjgxREFEMDBCODhDREIgLyogU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRo
b3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTIyNkQ2MjA3RDE4
NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
N0ZEMzE4MzIyQjM1MTYyMDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhvcml6
YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODUyMkIzNTE2OTAw
OEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
NzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE0QkRFRDMxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTEwMDk1LDYgKzEwMTA0LDcgQEAKIAkJCQlDOThDNDhBQTFCNkZENUI1
MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRl
bUlkZW50aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNBQkRDODIyMkMyRkQy
MjAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFF
MTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXku
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDhmNTY1MzhhNmFjMjc0OTgyYzBmZjkwZDQ1Zjk4Yjk3MzBjOTg5OTIuLmY5
ODcwMmNlZTYwYmVlNDJhMjgyY2VlMTc3ZDlkYjU4N2JlNTFlYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0w
Ni0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyBzaG91bGQgd2FpdCBmb3IgY29v
a2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyMzAKKyAgICAgICAgPHJkYXI6Ly81MTc1NzEwNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGlkR2V0VXNlckhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZVdpdGhMaXN0ZW5lcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjppbnZva2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDYtMjUg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
T2NjYXNpb25hbCBjcmFzaCB1bmRlciAtW1VJUHJldmlld1RhcmdldCBpbml0V2l0aENvbnRhaW5l
cjpjZW50ZXI6dHJhbnNmb3JtOl0gd2hlbiBnZW5lcmF0aW5nIGEgZHJhZyBwcmV2aWV3CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVNYW5hZ2VyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IDQ5NWQwZWQzY2Q3ZjFiNWE4MzdkOGQyOTg4ZWVmYmVjNWM0YTM4MjUuLjg0MGM2YzVhMDYy
MThjZDk4M2Q2MThiYzdjNTJkMzllOGY0ZjRhNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0
YXRpYyB2b2lkIGRpZEdldFRlc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3ksIFdLCiAgICAgRVhQRUNUX0VRKHRlc3RQb2xpY3ksIHBvbGljeSk7
CiAKICAgICBXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciA9IFdLQ29udGV4dEdldENv
b2tpZU1hbmFnZXIod2tDb250ZXh0LmdldCgpKTsKLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHVzZXJQb2xpY3kpOworICAgIFdLQ29v
a2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciwgdXNlclBv
bGljeSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICB0ZXN0RG9uZSA9IHRydWU7CiB9CkBAIC02
MCw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGRpZEdldFVzZXJIVFRQQ29va2llQWNjZXB0UG9saWN5
KFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLCiAgICAgLy8gTWFrZSBzdXJlIHRv
IGNob29zZSBhIHBvbGljeSBkaWZmZXJlbnQgZnJvbSB0aGUgcG9saWN5IHRoZSB1c2VyIGN1cnJl
bnRseSBoYXMgc2V0LgogICAgIHRlc3RQb2xpY3kgPSAodXNlclBvbGljeSArIDEpICUgMzsKICAg
ICBXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1h
bmFnZXIod2tDb250ZXh0LmdldCgpKTsKLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHRlc3RQb2xpY3kpOworICAgIFdLQ29va2llTWFu
YWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciwgdGVzdFBvbGljeSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShjb29raWVNYW5hZ2VyLCByZWludGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1Nzgp
LCBkaWRHZXRUZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggY2Q4ZWYxODM2YTFmNGVkMzk3ODVkYjcy
NjVhMmUzNTY0NTM1ODhlMS4uYmZhYzE5MjMzNGMzNjJlMTc3NGE3YmVkZjc3MjdjNjNjMTY2Mjgw
YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ljb25EYXRhYmFz
ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS01lc3NhZ2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS01vY2tEaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTW9ja01lZGlhRGV2aWNl
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oPgpAQCAtNzMsNiAr
NzQsNyBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRl
IDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5o
PgpAQCAtNTM4LDExICs1NDAsMTIgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAg
cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpOwogICAgIH0KIAotICAgIFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwg
dGhpcyB9LAorICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjIgaW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSB7CisgICAgICAgIHsgMiwgdGhpcyB9LAogICAgICAgICBkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAgICAgbnVsbHB0ciwKICAgICAgICAgZ2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhLAorICAgICAgICBkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyLAogICAgIH07CiAg
ICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmaW5q
ZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7CiAKQEAgLTcxNywxMCArNzIwLDExIEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9ucykKICAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0KCksICZkb3du
bG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAvLyB0aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUg
b24gdGhlIHBhZ2U/Ci0gICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1
bmRsZUNsaWVudCA9IHsKLSAgICAgICAgeyAwLCB0aGlzIH0sCisgICAgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAxLCB0aGlz
IH0sCiAgICAgICAgIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKLSAg
ICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUK
KyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIsCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmaW5qZWN0ZWRC
dW5kbGVDbGllbnQuYmFzZSk7CiAKQEAgLTE3MjksOSArMTczMyw5IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXCiAgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1l
c3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdL
VHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVX
aXRoTGlzdGVuZXIoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgICpyZXR1cm5EYXRhID0gc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3Nh
Z2VCb2R5KS5sZWFrUmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCBsaXN0ZW5lcik7CiB9
CiAKIFdLVHlwZVJlZiBUZXN0Q29udHJvbGxlcjo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE3
NDYsOSArMTc1MCw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVQYWdlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTCiAgICAgc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcihXS1BhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNz
YWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
KnJldHVybkRhdGEgPSBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWNf
Y2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwg
bWVzc2FnZUJvZHksIGxpc3RlbmVyKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6bmV0d29y
a1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKQEAgLTE4ODUsMTEgKzE4ODksMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCi1XS1JldGFpblB0cjxXS1R5cGVSZWY+
IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHks
IFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyKQogeworICAgIGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBbbGlzdGVuZXIgPSByZXRhaW5XSyhsaXN0ZW5lcildIChXS1R5cGVSZWYgcmVwbHkp
IHsKKyAgICAgICAgV0tNZXNzYWdlTGlzdGVuZXJTZW5kUmVwbHkobGlzdGVuZXIuZ2V0KCksIHJl
cGx5KTsKKyAgICB9OworCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIGlmIChtX3N0YXRlICE9IFJ1bm5p
bmdUZXN0KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRGlj
dGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25h
cnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAgLTE5MDAsNyArMTkwOCw3IEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiS2V5RG93biIpKSB7CiAgICAgICAgICAgICBkaWRSZWNlaXZlS2V5RG93bk1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0cnVlKTsKIAot
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpIHx8IFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZVVwIikpIHsKQEAgLTE5MTUsNyAr
MTkyMyw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5tb3VzZURvd24oYnV0dG9uLCBtb2RpZmllcnMpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VVcChidXR0b24s
IG1vZGlmaWVycyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkg
ewpAQCAtMTkyNywyOCArMTkzNSwyOCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250
cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogCiAgICAg
ICAgICAgICAvLyBGb3J3YXJkIHRvIFdlYlByb2Nlc3MKICAgICAgICAgICAgIG1fZXZlbnRTZW5k
ZXJQcm94eS0+bW91c2VNb3ZlVG8oeCwgeSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRm9yY2VDbGljayIpKSB7CiAgICAgICAgICAgICBtX2V2
ZW50U2VuZGVyUHJveHktPm1vdXNlRm9yY2VDbGljaygpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIlN0YXJ0QW5kQ2FuY2VsTW91c2VGb3JjZUNsaWNrIikpIHsKICAgICAgICAgICAgIG1f
ZXZlbnRTZW5kZXJQcm94eS0+c3RhcnRBbmRDYW5jZWxNb3VzZUZvcmNlQ2xpY2soKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZUZvcmNlRG93biIpKSB7CiAgICAgICAgICAgICBt
X2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRm9yY2VEb3duKCk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3Nh
Z2VOYW1lLCAiTW91c2VGb3JjZVVwIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94
eS0+bW91c2VGb3JjZVVwKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VGb3Jj
ZUNoYW5nZWQiKSkgewpAQCAtMTk1Niw3ICsxOTY0LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEIKICAgICAgICAgICAgIGRvdWJsZSBmb3JjZSA9IFdLRG91YmxlR2V0VmFsdWUoc3RhdGljX2Nh
c3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBmb3JjZUtleS5nZXQoKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5tb3VzZUZvcmNlQ2hhbmdlZChmb3JjZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQog
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApAQCAtMTk3Miw3ICsxOTgwLDcgQEAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEIKIAogICAgICAgICAgICAgLy8gRm9yd2FyZCB0byBXZWJQcm9jZXNzCiAg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KHgs
IHksIHBhZ2VkKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJMZWFwRm9yd2FyZCIpKSB7
CkBAIC0xOTgwLDcgKzE5ODgsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9s
bGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAg
ICAgdW5zaWduZWQgdGltZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgdGltZUtleS5nZXQoKSkpKSk7CiAKICAgICAgICAgICAgIG1fZXZl
bnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGltZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAg
fQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTE5OTIsNyArMjAwMCw3IEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4o
V0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0KCkpKSkpOwogCiAgICAg
ICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmFkZFRvdWNoUG9pbnQoeCwgeSk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVXBkYXRlVG91Y2hQb2ludCIpKSB7CkBAIC0yMDA2LDcgKzIw
MTQsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0
aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgp
KSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT51cGRhdGVUb3VjaFBvaW50
KGluZGV4LCB4LCB5KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTZXRUb3VjaE1vZGlm
aWVyIikpIHsKQEAgLTIwMTcsNyArMjAyNSw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVz
dENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAg
ICAgICAgICAgICBib29sIGVuYWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KFdLVUludDY0R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBlbmFibGVLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBt
X2V2ZW50U2VuZGVyUHJveHktPnNldFRvdWNoTW9kaWZpZXIobW9kaWZpZXIsIGVuYWJsZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hQb2ludFJhZGl1cyIpKSB7CkBAIC0y
MDI4LDUxICsyMDM2LDczIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICBp
bnQgeSA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJ
bnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IHlLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnNldFRv
dWNoUG9pbnRSYWRpdXMoeCwgeSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hT
dGFydCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoU3RhcnQoKTsK
LSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJUb3VjaE1vdmUiKSkgewogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT50b3VjaE1vdmUoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5h
bWUsICJUb3VjaEVuZCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNo
RW5kKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hDYW5jZWwiKSkgewogICAg
ICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaENhbmNlbCgpOwotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIkNsZWFyVG91Y2hQb2ludHMiKSkgewogICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5jbGVhclRvdWNoUG9pbnRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VO
YW1lLCAiUmVsZWFzZVRvdWNoUG9pbnQiKSkgewogICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGluZGV4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiSW5kZXgiKSk7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdL
VUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpbmRleEtleS5nZXQoKSkpKSk7CiAgICAg
ICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJlbGVhc2VUb3VjaFBvaW50KGluZGV4KTsKLSAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJDYW5jZWxUb3VjaFBvaW50IikpIHsKICAgICAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4IikpOwogICAgICAgICAgICAgaW50IGluZGV4ID0g
c3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaW5kZXhL
ZXkuZ2V0KCkpKSkpOwogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5jYW5jZWxUb3Vj
aFBvaW50KGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJldHVybiBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3Nh
Z2VOYW1lLCBtZXNzYWdlQm9keSk7CisKKyAgICBhdXRvIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgPSBbJl0gKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV0tUeXBlUmVmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBhdXRv
IGNvbnRleHQgPSBuZXcgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXS1R5cGVSZWYpPihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcih0aGlzLT5jb250ZXh0KCkp
LCBwb2xpY3ksIGNvbnRleHQsIFtdIChXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBjb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyUG9pbnRlciA9IHN0YXRpY19jYXN0
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4qPihjb250ZXh0KTsKKyAgICAgICAg
ICAgICgqY29tcGxldGlvbkhhbmRsZXJQb2ludGVyKShudWxscHRyKTsKKyAgICAgICAgICAgIGRl
bGV0ZSBjb21wbGV0aW9uSGFuZGxlclBvaW50ZXI7CisgICAgICAgIH0pOworICAgIH07CisKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5
c0FjY2VwdENvb2tpZXMiKSkgeworICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENv
b2tpZUFjY2VwdFBvbGljeUFsd2F5cyA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAgcmV0dXJuIHNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kocG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRPbmx5QWNj
ZXB0Rmlyc3RQYXJ0eUNvb2tpZXMiKSkgeworICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLSFRUUENv
b2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dL
SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA6
IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAg
ICAgICAgcmV0dXJuIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIobV9jdXJy
ZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpLmdldCgpKTsKIH0KIAogV0tSZXRhaW5QdHI8
V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAx
ZGIzMDhkMzEzOWU0Y2JjMzQ5ZTU1MTNmMmM5ZGRmYzdjOGNmZTlkLi5iMDRlNTgyZDgyZDZkYTQy
MTY2MGM4YTc1Y2ZiYjY2MWQ0NjkzMWZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCkBAIC0zNzcsMTQgKzM3NywxNCBAQCBwcml2YXRlOgogCiAgICAgLy8gV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJl
ZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBl
UmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcihXS0NvbnRl
eHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdL
TWVzc2FnZUxpc3RlbmVyUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIFdLVHlwZVJlZiBn
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIAogICAgIC8vIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25z
dCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiwg
Y29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7Ci0gICAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHkpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01l
c3NhZ2VMaXN0ZW5lclJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBnZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUtl
eURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9k
eURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCBjY2FmMTAzMTZjZTdiOTU0M2Q1NzhhNTk1Y2QzMzgyMGE2
M2U2OTQ4Li5jNGQ3N2I4NTkzYTBjYzdhNmNhZGQ5YjI2ZmUxMGMyNmY5NjY3NDBlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuc2V0U2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNrcyhzaG91bGRMb2dIaXN0
b3J5Q2xpZW50Q2FsbGJhY2tzKCkpOwogCi0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5jb250ZXh0KCkpLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21N
YWluRG9jdW1lbnREb21haW4pOworICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuY29udGV4dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgY2xlYXIgb3V0IHZpc2l0ZWQgbGlua3MgaGVyZS4KIApAQCAtOTA0LDIyICs5MDQsNiBAQCBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWx3
YXlzQWNjZXB0Q29va2llcyIpKSB7Ci0gICAgICAgIFdLQm9vbGVhblJlZiBhY2NlcHQgPSBzdGF0
aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgV0tIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbGljeSA9IFdLQm9vbGVhbkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQ
Q29va2llQWNjZXB0UG9saWN5QWx3YXlzIDoga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAgICAvLyBGSVhNRTogVGhpcyB1cGRhdGVzIHRo
ZSBwb2xpY3kgaW4gV2ViUHJvY2VzcyBhbmQgaW4gTmV0d29ya1Byb2Nlc3MgYXN5bmNocm9ub3Vz
bHksIHdoaWNoIG1pZ2h0IGJyZWFrIHNvbWUgdGVzdHMnIGV4cGVjdGF0aW9ucy4KLSAgICAgICAg
V0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29r
aWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBwb2xpY3kp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldE9ubHlBY2NlcHRGaXJzdFBhcnR5Q29v
a2llcyIpKSB7Ci0gICAgICAgIFdLQm9vbGVhblJlZiBhY2NlcHQgPSBzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSA9IFdLQm9vbGVhbkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQQ29va2llQWNjZXB0
UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIDoga1dLSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAgICAvLyBGSVhNRTog
VGhpcyB1cGRhdGVzIHRoZSBwb2xpY3kgaW4gV2ViUHJvY2VzcyBhbmQgaW4gTmV0d29ya1Byb2Nl
c3MgYXN5bmNocm9ub3VzbHksIHdoaWNoIG1pZ2h0IGJyZWFrIHNvbWUgdGVzdHMnIGV4cGVjdGF0
aW9ucy4KLSAgICAgICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShX
S0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250
ZXh0KCkpLCBwb2xpY3kpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRDdXN0
b21Vc2VyQWdlbnQiKSkgewogICAgICAgICBXS1N0cmluZ1JlZiB1c2VyQWdlbnQgPSBzdGF0aWNf
Y2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOwogICAgICAgICBXS1BhZ2VTZXRDdXN0b21V
c2VyQWdlbnQoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgdXNlckFnZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372948</attachid>
            <date>2019-06-26 13:50:38 -0700</date>
            <delta_ts>2019-06-26 14:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199230-20190626135037.patch</filename>
            <type>text/plain</type>
            <size>58939</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiNjkyZTcxZmM0ZGQ2YmIx
OTQ5ZjdiMzNhYTJkYTdhMTc3YTI5YzMuLmQxN2VhOWQyMjI0NDc1NjQ3ZDAzZDYzM2JhYWEwMmJi
OThiMGQ3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDYtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICB0ZXN0UnVubmVy
LnNldEFsd2F5c0FjY2VwdENvb2tpZXMgc2hvdWxkIHdhaXQgZm9yIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHRvIGJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MjMwCisgICAgICAgIDxyZGFyOi8vNTE3NTcxMDc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
d2hpY2ggaXMgbHVja2lseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAgIEl0IGFsc28g
YWRkcyBsaXN0ZW5lci1iYXNlZCBhc3luY2hyb25vdXMgdmVyc2lvbnMgb2YgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIHRoZXNlIG5ldyBhYmlsaXRpZXMgdG8gd2FpdCBmb3IgdGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIGJlIHNldCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoaWxlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBodW5nLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIHJhY2UgY29uZGl0aW9u
IHRoYXQgd2FzIGNhdXNpbmcgc29tZSBmbGFraW5lc3MgaW4gdGVzdHMgdGhhdCB1c2UgdGVzdFJ1
bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU1lc3NhZ2VMaXN0ZW5lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaC4KKyAgICAgICAgKEFQSTo6TWVzc2FnZUxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OnNlbmRSZXBs
eSk6CisgICAgICAgIChBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6TWVzc2FnZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVj
dGVkQnVuZGxlQ2xpZW50LmguCisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCk6
CisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5qZWN0
ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJv
bm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE5LTA2LTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gRGlzcGF0Y2ggc3ludGhldGljIG1vdXNlIGV2ZW50
IGFzeW5jaHJvbm91c2x5IGluIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVu
dENoYW5nZU9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYmU4
Yzc4YmYzMjMxMmU2MDc1OWQyOTRjNjMxYTRhNjNkZjUzMDQ0Yy4uNDAyOWRmOTBlN2NlMjI4ZGMx
Mzk1NzIxMjRhNTk2YzI4NGU4MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aApAQCAtMTMzLDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yLAogICAgICAg
ICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBNZWRpYUNhY2hlTWFuYWdlciwKKyAg
ICAgICAgTWVzc2FnZUxpc3RlbmVyLAogICAgICAgICBOYXZpZ2F0aW9uLAogICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggMTE2NGMxNTgyYzQxMmE3YjU1MGE1YjFjNTZiYjFkZjU0ZmZlN2Fh
OS4uMDM5MTRiMjFkMmY4Mzc4NDg3NzAxOWE2ZGNlNWY0OGJhZjBmOTgwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0luc3BlY3RvciogV0tJbnNwZWN0b3JSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uTWV0YWRhdGEqIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lc3NhZ2VMaXN0ZW5lciogV0tNZXNz
YWdlTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25B
Y3Rpb24qIFdLTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLTmF2aWdhdGlvbkRhdGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb24qIFdLTmF2aWdhdGlvblJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDJkNzdlYTA5YjUwY2UyMzg5N2JjZjJiZDViYTFjMjFlNTU2Yjc3MGQuLjdkMjVlZDRkMGJkODY0
MDUyZmQ0N2QyNTNhZmM5YWEyNmIzNWQ0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQ0LDYgKzM0NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKK1VJUHJvY2Vz
cy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNw
bGF5LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggMjM1MGM2MWZl
MTMyMTk4NzllM2QxOTljZDg5MGVlZDhhYTM3YzUzNS4uYTgwNTExM2YzNzE2YTVlMzE2YTc4NDI2
NzhkNjFkNDA3ZWE4MjljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmpl
Y3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6Ok9iamVj
dD4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmKSB7IHJldHVybiBudWxscHRyOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTWVzc2FnZUxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTWVzc2FnZUxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI4ZGJmYzli
ZGEyYTQ1NTkyYWU2MWY3ZDM5OGJmNGJhODM2ZjZmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElNZXNzYWdlTGlzdGVuZXIuaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIEFQSSB7CisK
K2NsYXNzIE1lc3NhZ2VMaXN0ZW5lciA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
TWVzc2FnZUxpc3RlbmVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVzc2FnZUxpc3Rl
bmVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VMaXN0ZW5lcj4gY3JlYXRlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0PiYmKT4mJiByZXBseSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VMaXN0ZW5lcihXVEZNb3Zl
KHJlcGx5KSkpOworICAgIH0KKworICAgIHZvaWQgc2VuZFJlcGx5KFJlZlB0cjxBUEk6Ok9iamVj
dD4mJiByZXBseSkKKyAgICB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTUVTU0FHRSBMSVNURU5F
UiBTRU5ESU5HIFJFUExZICVwIiwgcmVwbHkuZ2V0KCkpOworICAgICAgICBtX3JlcGx5KFdURk1v
dmUocmVwbHkpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVzc2FnZUxpc3RlbmVyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0PiYmKT4mJiByZXBseSkKKyAgICAg
ICAgOiBtX3JlcGx5KFdURk1vdmUocmVwbHkpKSB7IFdURkxvZ0Fsd2F5cygiQ1JFQVRJTkcgTUVT
U0FHRSBMSVNURU5FUiIpOyB9CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJ
OjpPYmplY3Q+JiYpPiBtX3JlcGx5OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGM4NjYwM2RkYzk0ZmRkZTc4
ZmY1ZTdlOGMzY2Y3M2Q1Y2Q5M2M2MDkuLjUxNzM3NTU5NDhkZDQxNWUyN2E1ZjczZWE0NzJmYWM4
MDk1YmViMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBA
IC01OCw2ICs1OCw3IEBAIGNsYXNzIEV4cGVyaW1lbnRhbEZlYXR1cmU7CiBjbGFzcyBGcmFtZUhh
bmRsZTsKIGNsYXNzIEZyYW1lSW5mbzsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBNZXNz
YWdlTGlzdGVuZXI7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsK
IGNsYXNzIE5hdmlnYXRpb25EYXRhOwpAQCAtMTM3LDYgKzEzOCw3IEBAIFdLX0FERF9BUElfTUFQ
UElORyhXS0ljb25EYXRhYmFzZVJlZiwgV2ViSWNvbkRhdGFiYXNlKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFSZWYsIFdlYk1l
ZGlhU2Vzc2lvbk1ldGFkYXRhKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVzc2FnZUxpc3RlbmVy
UmVmLCBBUEk6Ok1lc3NhZ2VMaXN0ZW5lcikKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRp
b25BY3Rpb25SZWYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhX
S05hdmlnYXRpb25EYXRhUmVmLCBBUEk6Ok5hdmlnYXRpb25EYXRhKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLTmF2aWdhdGlvblJlZiwgQVBJOjpOYXZpZ2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmgKaW5kZXggZDM0NTZhYTY4MDI3MmJjNDEwNzI2ZGFlZjNlNGI5MDliOGM4MTgyZC4uYjMz
MjhlOGMwYjdhMjBkMTEyZTk0NzUwOWU2YjdlMmRjOGI3NWY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCkBAIC0yOSw5ICsyOSwxMCBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4K
IAogLy8gSW5qZWN0ZWQgQnVuZGxlIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tDb250ZXh0UmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tU
eXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9p
ZCAoKldLQ29udGV4dERpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
Q29udGV4dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxs
YmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIFdLVHlwZVJlZiAoKldLQ29udGV4dEdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyQ2FsbGJhY2sp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50QmFzZSB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNTcsNCArNTgsMTggQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSB7CiAgICAgV0tDb250
ZXh0R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2sgICAgICAg
ICAgICBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CiB9IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50VjE7CiAKK3R5cGVkZWYgc3RydWN0IFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50VjIgeworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNp
b24gMC4KKyAgICBXS0NvbnRleHREaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNh
bGxiYWNrICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
OworICAgIFdLQ29udGV4dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGVDYWxsYmFjayAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0NvbnRleHRHZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjayAgICAgICAgICAgIGdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgIC8vIFZlcnNpb24gMi4KKyAgICBX
S0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0
aExpc3RlbmVyQ2FsbGJhY2sgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZVdpdGhMaXN0ZW5lcjsKK30gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMjsK
KwogI2VuZGlmIC8vIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGNiN2Yw
YmQxYjcxZmIwOTVhYTRiNWZiMzM4MDNhNTMyYTRjNTZmNzcuLjA2MzZlYTZjMmM3N2UzZmQ0ZDBi
NGRjNmYxMmQwOGRlYjg2OTUwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjIsOSArNjIsMTIgQEAgdm9pZCBXS0Nvb2tp
ZU1hbmFnZXJEZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUoV0tDb29raWVNYW5hZ2Vy
UmVmIGNvb2tpZU0KICAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhkYXRlKSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9
CiAKLXZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tp
ZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSkKK3ZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tp
ZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0
b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7
fSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3kpLCBbY29udGV4dCwgY2FsbGJhY2tdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2soZXJyb3Ig
IT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgp
LnB0cigpKSA6IG51bGxwdHIsIGNvbnRleHQpOworICAgIH0pOwogfQogCiB2b2lkIFdLQ29va2ll
TWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tp
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3lGdW5jdGlvbiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmgKaW5kZXggYzY1MTRlM2ZhMDdiM2UyMzhiMDRjNGI5ZWIw
MDljZThlZTFiZjkzZC4uNzMzNTRkMmNiYTRlZGY5N2I5YTU3OTIwY2Q0NWJjNzc0MjUyYmFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmgK
QEAgLTY4LDcgKzY4LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxs
Q29va2llcyhXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlcikKIC8vIFRoZSB0aW1lIGhl
cmUgaXMgcmVsYXRpdmUgdG8gdGhlIFVuaXggZXBvY2guCiBXS19FWFBPUlQgdm9pZCBXS0Nvb2tp
ZU1hbmFnZXJEZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUoV0tDb29raWVNYW5hZ2Vy
UmVmIGNvb2tpZU1hbmFnZXIsIGRvdWJsZSk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29va2llTWFu
YWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwordHlwZWRlZiB2b2lkICgq
V0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uKShXS0Vycm9y
UmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgq
V0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uKShXS0hUVFBD
b29raWVBY2NlcHRQb2xpY3ksIFdLRXJyb3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdL
Q29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVm
IGNvb2tpZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3lGdW5jdGlvbiBjYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzAx
MGM0N2MxOTk1ZGRiNjAxNWM2MjI1ZDhjNjQyYTBkMzQxMzkwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuY3BwCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V0tNZXNzYWdlTGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIkFQSU1lc3NhZ2VMaXN0ZW5lci5oIgor
CitXS1R5cGVJRCBXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRv
QVBJKEFQSTo6TWVzc2FnZUxpc3RlbmVyOjpBUElUeXBlKTsKK30KKwordm9pZCBXS01lc3NhZ2VM
aXN0ZW5lclNlbmRSZXBseShXS01lc3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tUeXBl
UmVmIHZhbHVlKQoreworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPnNlbmRSZXBseSh0b0ltcGwo
dmFsdWUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
TWVzc2FnZUxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lc3Nh
Z2VMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0ZThhMmVmODIxNmJkYTUwZmIwZWVhNDRjMzVlNzA0
YjNlMjJkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS01lc3NhZ2VMaXN0ZW5lci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLTWVzc2FnZUxpc3RlbmVyX2gKKyNkZWZpbmUgV0tNZXNzYWdlTGlzdGVuZXJfaAorCisj
aW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS01lc3NhZ2VMaXN0ZW5lckdldFR5
cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseShXS01l
c3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHJlcGx5KTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLTWVzc2FnZUxpc3RlbmVyX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGIyMmMzZWI4NjYyZjVlNzZhMDM4NjBkZTliMjU4YTUz
OGIxYjBjOTMuLmVkYmJmNThjY2M2NTk3NDJiOWIxYjQ0YjUzNjUyNTdhMzAyOWQxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVm
KiByZXR1cm5EYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tUeXBlUmVm
ICgqV0tQYWdlR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2sp
KFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRo
TGlzdGVuZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRCYXNlIHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC00NSw0ICs0Niwx
NSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwIHsKICAgICBX
S1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJh
Y2sgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CiB9
IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjA7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50VjEgeworICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNp
b24gMC4KKyAgICBXS1BhZ2VEaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxi
YWNrICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwor
ICAgIFdLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVD
YWxsYmFjayAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyQ2FsbGJhY2sgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcjsKK30gV0tQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnRWMTsKKwogI2VuZGlmIC8vIFdLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGY0Y2E2MmNjYWI2YzNkY2U1MjIyMzRh
M2ZlYTU0MWViMmVjZGRkZTUuLjU5YzY2ZGFmZTFhNWFhNDVjNDdmMTNlY2U2MjRjOTBmYzczZTFj
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgogCisj
aW5jbHVkZSAiQVBJTWVzc2FnZUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTQ1LDE0ICs0NiwxOCBAQCB2b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvYwogICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKCZwcm9jZXNzUG9v
bCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6
Ok9iamVjdCogbWVzc2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpCit2
b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9jbGllbnQuZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSAmJiAhbV9jbGllbnQu
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5l
cikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworCisgICAgaWYg
KG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
IHsKKyAgICAgICAgV0tUeXBlUmVmIHJldHVybkRhdGFSZWYgPSBudWxscHRyOworICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRv
QVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3Nh
Z2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJl
ZikpKTsKKyAgICB9CiAKLSAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7Ci0g
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSSht
ZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJlZikpOworICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRo
TGlzdGVuZXIodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwg
dG9BUEkobWVzc2FnZUJvZHkpLCB0b0FQSShBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiB9CiAKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBhYmZkNmE0Yjc4NmZmNWYyNGZi
OWNkZDVjYTk2MTdiMTk1MDc0MGE0Li4yNmQ3MmZkM2ZhZTJjNTkwNTkyNzQ0NWFhNzQzZWJhMmZh
NWY4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIE9iamVjdDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYwLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudFYxPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnRWMCwgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSwgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMj4gVmVyc2lvbnM7CiB9OwogfQogCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9jZXNzUG9vbCYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBBUEk6Ok9iamVj
dCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0PiYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEoV2ViUHJvY2Vzc1Bvb2wmKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCmluZGV4IDM1M2U3ZmI0MjM3YWM5YTY0NTZiNDgwYjJlYzAwYzlhNThmYTdjNjIuLmY3YTM4
YjNkZDNhNWE2OTU3YzZkNTJmYTg0NjhhZDE4YjYxY2UzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIgogCisjaW5jbHVkZSAiQVBJTWVzc2FnZUxpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQxLDE0ICs0MiwxOSBAQCB2b2lkIFdlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViUGFnZVBybwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNz
YWdlQm9keSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwg
QVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRh
KQordm9pZCBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUKKyAgICAgICAgJiYgIW1fY2xpZW50
LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKworICAgIGlm
IChtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KSB7CisgICAgICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0gbnVsbHB0cjsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0
b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkp
LCAmcmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSkpOwor
ICAgIH0KIAotICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0gMDsKLSAgICBtX2NsaWVudC5k
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKHBhZ2Up
LCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksICZyZXR1cm5E
YXRhUmVmLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgIHJldHVybkRhdGEgPSBhZG9w
dFJlZih0b0ltcGwocmV0dXJuRGF0YVJlZikpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIodG9BUEkocGFnZSks
IHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgdG9BUEkoQVBJ
OjpNZXNzYWdlTGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRy
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmgKaW5kZXggMzBjN2YzNTRjMDAxYjRlZDcyNDQ4NTAxNmEzYWU3YzRjZjc0MzQ3
Zi4uZGViYWQ2Nzk2ODFkYjViMjU2MGMxNDE0ODAyYTNmNThiZGM2MThjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudF9oCi0jZGVmaW5lIFdlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSUNs
aWVudC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgpAQCAtMzQsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIE9iamVjdDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdL
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCwgV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRWMT4gVmVyc2lvbnM7CiB9OwogfQogCkBAIC00NSw5ICs0NCw3IEBAIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1YmxpYyBBUEk6
OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYs
IEFQSTo6T2JqZWN0KiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSk7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8QVBJOjpPYmplY3Q+JiYpPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFjNzRiZDRjN2FjNGExMzA1NDAxNjAy
ZDNiMjc2NDMwYWRiODg4YjguLjI2MDdiMzAwMzRlYzk3YmU3NmE0MmIwZDVhMzI4NmY0ZjMxOTY1
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzA0LDgg
KzcwNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwot
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZU5hbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIHJldHVybkRhdGEp
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJEYXRhKG1fcHJvY2Vzcy0+dHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyhyZXR1cm5EYXRhLmdldCgpKSkpOworICAgIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodGhp
cywgbWVzc2FnZU5hbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNz
YWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0gKFJlZlB0cjxB
UEk6Ok9iamVjdD4mJiByZXR1cm5EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1cm5E
YXRhLmdldCgpKSkpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJv
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDM1ZTg1ZjBlMzUxYzcyMzgyNGY2ZmEx
MzZlN2JlZmQ1NzQ2MjI5ZmEuLjJjNTQwZjdjMDU3NTZmZjhkZDk0NjhjMzQzOWZiZDJkMWJiOWE1
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OTcsNyArNDk3
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxvYWRlckNsaWVudD4mJik7CiAgICAgdm9pZCBzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmKTsKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxl
Q2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSopOwotICAgIFdlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudCogaW5qZWN0ZWRCdW5kbGVDbGllbnQoKSB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlQ2xpZW50LmdldCgpOyB9CiAKICAgICBBUEk6OlVJQ2xpZW50JiB1aUNs
aWVudCgpIHsgcmV0dXJuICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNzg2NGExODNmN2Q3MzhkZWQ1NGE5MGQyODJhNTAzMzdm
YTQyNTUzNS4uOTQ2Mjc5OWYyYThiZDFhNGQ3NmYyZDM5ZmM4MjM5NDlkMTA4NTc5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTkwMiw5ICsxOTAy
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QKICAgICBpZiAoIXdlYlByb2Nlc3NQcm94eSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSgqdGhpcywgbWVzc2FnZU5h
bWUsIHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9k
eS5vYmplY3QoKSkuZ2V0KCksIHJldHVybkRhdGEpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFVz
ZXJEYXRhKHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1cm5E
YXRhLmdldCgpKSkpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoKnRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQ
cm9jZXNzUHJveHktPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2JqZWN0
KCkpLmdldCgpLCBbd2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVJlZigqd2ViUHJvY2Vzc1Byb3h5KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZlB0cjxB
UEk6Ok9iamVjdD4mJiByZXR1cm5EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoVXNlckRhdGEod2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHJldHVybkRhdGEuZ2V0KCkpKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmIHN0YXRpc3RpY3NEYXRhLCB1
aW50NjRfdCByZXF1ZXN0SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxYjUyMjYzYzQ2ZGI1ZWZhMDNlZTI1ODI3OTFjZDk2NTQ4Zjk3
OTVmLi4xNjA0M2M1ZjU5NmEyNzlhOTNhMzlkZjA4ZWYwMjQ1MjM3MjRjNDExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDIsNiAr
MTEwMiw4IEBACiAJCTVDQTI2RDgxMjE3QUJENUIwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dh
cm5pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QTI2RDgwMjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaCAqLzsgfTsK
IAkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTI2RDdGMjE3
QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gKi87IH07CiAJCTVDQTk4
NTRBMjEwQkVCNjQwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0E5ODU0OTIxMEJFQjVBMDA1N0VC
NkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovOyB9OworCQk1Q0FCREM4NjIyQzQwRkRFMDAx
RURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VM
aXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTVDQUJEQzg3MjJDNDBGRUQwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUJEQzgzMjJDNDBG
QTcwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLzsgfTsKIAkJNUNBRERFMDUyMTUw
NDZCRDAwNjdEMzA5IC8qIFdLV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3NDMwMEUyMTUwMDQ5MjAwNEJGQTE3IC8qIFdLV2ViUHJv
Y2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVDQUZERTQ1MjEzMDg0NjMwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUZERTQyMjEzMDg0MzUwMEIxRjdF
MSAvKiBfV0tJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovOyB9OwpA
QCAtMzYwNCw2ICszNjA2LDkgQEAKIAkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQSUhU
VFBDb29raWVTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW07IHBhdGggPSBVSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2luZ1dhcm5pbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8q
IFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNBQkRDODMyMkM0MEZBNzAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0
ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElNZXNzYWdlTGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBQkRDODQyMkM0MEZDQzAwMUVE
RThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLTWVzc2FnZUxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTWVzc2FnZUxpc3RlbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQURERTBEMjE1MUFBMDEwMDY3RDMwOSAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3Bl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDMyMTMwODQzNjAwQjFGN0UxIC8q
IF9XS0luc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0luc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NDMsNiAr
Nzg0OCw3IEBACiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVi
dWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVC
IC8qIEFQSUxvYWRlckNsaWVudC5oICovLAorCQkJCTVDQUJEQzgzMjJDNDBGQTcwMDFFREU4RSAv
KiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLywKIAkJCQk3Q0QzQTQ4MDFBNUQwMkZBMDA5NjIzQjgg
LyogQVBJTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4IC8q
IEFQSU5hdmlnYXRpb24uaCAqLywKIAkJCQkyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJ
TmF2aWdhdGlvbkFjdGlvbi5oICovLApAQCAtNzk0Niw2ICs3OTUyLDggQEAKIAkJCQlDOThDNDhB
ODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLywKIAkJ
CQlDOUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAg
Ki8sCiAJCQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRh
dGEuaCAqLywKKwkJCQk1Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVu
ZXIuY3BwICovLAorCQkJCTVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0
ZW5lci5oICovLAogCQkJCUMxMUUxNjkzMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5
LmNwcCAqLywKIAkJCQlDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5o
ICovLAogCQkJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5j
cHAgKi8sCkBAIC05MjUwLDYgKzkyNTgsNyBAQAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdCRkE1
MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQy
MDcxQTQ2Nzc2MTAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTI0NjRGMzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0FCREM4NzIyQzQwRkVEMDAxRURFOEUgLyogQVBJ
TWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QzQTQ4MzFBNUQwMkZBMDA5
NjIzQjggLyogQVBJTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGOUVFRUMxQTc4
MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJERDlFQjJEMUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMDk5LDYgKzEwMTA4LDcgQEAKIAkJCQlDOThDNDhBQTFCNkZENUI1MDAx
NDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlk
ZW50aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNBQkRDODYyMkM0MEZERTAw
MUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFFMTY5
NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDA5ZWUzNzAzOWE2MjAwOTg3M2UxMDY0MWZkNmJjNTY2N2ZiMjYzNzQuLjlhNGM3
ZjdkOGYzNGY2NGYxZmQ0NWJiZWRjYmI0NTJiZGNhNTU0NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wNi0y
NiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyBzaG91bGQgd2FpdCBmb3IgY29va2ll
IGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTkyMzAKKyAgICAgICAgPHJkYXI6Ly81MTc1NzEwNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6ZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkR2V0VXNlckhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdp
dGhMaXN0ZW5lcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcik6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjppbnZva2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDYtMjUgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYSBu
ZXcgU1BJIHRvIGluZm9ybSBjbGllbnRzIGFib3V0IEFwcFNTTwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcAppbmRleCA0OTVkMGVkM2Nk
N2YxYjVhODM3ZDhkMjk4OGVlZmJlYzVjNGEzODI1Li44NDBjNmM1YTA2MjE4Y2Q5ODNkNjE4YmM3
YzUyZDM5ZThmNGY0YTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9Db29raWVNYW5hZ2VyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgdm9pZCBkaWRH
ZXRUZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBXSwogICAgIEVYUEVDVF9FUSh0ZXN0UG9saWN5LCBwb2xpY3kpOwogCiAgICAgV0tDb29r
aWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIgPSBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKHdr
Q29udGV4dC5nZXQoKSk7Ci0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShjb29raWVNYW5hZ2VyLCB1c2VyUG9saWN5KTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHVzZXJQb2xpY3ksIG51bGxwdHIs
IG51bGxwdHIpOwogCiAgICAgdGVzdERvbmUgPSB0cnVlOwogfQpAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgdm9pZCBkaWRHZXRVc2VySFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9saWN5LCBXSwogICAgIC8vIE1ha2Ugc3VyZSB0byBjaG9vc2UgYSBwb2xp
Y3kgZGlmZmVyZW50IGZyb20gdGhlIHBvbGljeSB0aGUgdXNlciBjdXJyZW50bHkgaGFzIHNldC4K
ICAgICB0ZXN0UG9saWN5ID0gKHVzZXJQb2xpY3kgKyAxKSAlIDM7CiAgICAgV0tDb29raWVNYW5h
Z2VyUmVmIGNvb2tpZU1hbmFnZXIgPSBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKHdrQ29udGV4
dC5nZXQoKSk7Ci0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVNYW5hZ2VyLCB0ZXN0UG9saWN5KTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHRlc3RQb2xpY3ksIG51bGxwdHIsIG51bGxw
dHIpOwogICAgIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2ll
TWFuYWdlciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSwgZGlkR2V0VGVzdEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IGNkOGVmMTgzNmExZjRlZDM5Nzg1ZGI3MjY1YTJlMzU2NDUzNTg4
ZTEuLmJmYWMxOTIzMzRjMzYyZTE3NzRhN2JlZGY3NzI3YzYzYzE2NjI4MGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFt
ZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJY29uRGF0YWJhc2UuaD4KKyNpbmNsdWRl
IDxXZWJLaXQvV0tNZXNzYWdlTGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tNb2NrRGlz
cGxheS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS01vY2tNZWRpYURldmljZS5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS05hdmlnYXRpb25BY3Rpb25SZWYuaD4KQEAgLTczLDYgKzc0LDcgQEAKICNpbmNs
dWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFp
bmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KQEAgLTUzOCwxMSAr
NTQwLDEyIEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9s
bGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZUNvbnRleHQoKTsKICAgICB9CiAKLSAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKKyAgICBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYyIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewor
ICAgICAgICB7IDIsIHRoaXMgfSwKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUsCi0gICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUsCisgICAgICAgIG51bGxwdHIsCiAgICAgICAgIGdldEluamVjdGVkQnVuZGxlSW5p
dGlhbGl6YXRpb25Vc2VyRGF0YSwKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lciwKICAgICB9OwogICAgIFdLQ29udGV4dFNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xp
ZW50LmJhc2UpOwogCkBAIC03MTcsMTAgKzcyMCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCgpLCAmZG93bmxvYWRDbGllbnQuYmFz
ZSk7CiAgICAgCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9uIHRoZSBwYWdlPwot
ICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7
Ci0gICAgICAgIHsgMCwgdGhpcyB9LAorICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEg
aW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7CisgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICBk
aWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsCi0gICAgICAgIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlCisgICAgICAgIG51bGxw
dHIsCisgICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlV2l0aExpc3RlbmVyLAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50LmJh
c2UpOwogCkBAIC0xNzI5LDkgKzE3MzMsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgVwogICAg
IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVz
c2FnZUJvZHkpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVy
bkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKLSAgICAqcmV0dXJuRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkubGVha1Jl
ZigpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSwgbGlzdGVuZXIpOwogfQogCiBXS1R5cGVSZWYg
VGVzdENvbnRyb2xsZXI6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShX
S0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNzQ2LDkgKzE3NTAsOSBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tQYWdlUmVmIHBhZ2UsIFdLUwogICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBt
ZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVm
IGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgICpyZXR1cm5EYXRhID0g
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2Fn
ZU5hbWUsIG1lc3NhZ2VCb2R5KS5sZWFrUmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCBs
aXN0ZW5lcik7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6Om5ldHdvcmtQcm9jZXNzRGlkQ3Jh
c2goV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCkBAIC0xODg1
LDExICsxODg5LDE1IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUs
IG1lc3NhZ2VCb2R5KTsKIH0KIAotV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxl
cjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQordm9pZCBUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0
ZW5lclJlZiBsaXN0ZW5lcikKIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2xpc3Rl
bmVyID0gcmV0YWluV0sobGlzdGVuZXIpXSAoV0tUeXBlUmVmIHJlcGx5KSB7CisgICAgICAgIFdL
TWVzc2FnZUxpc3RlbmVyU2VuZFJlcGx5KGxpc3RlbmVyLmdldCgpLCByZXBseSk7CisgICAgfTsK
KwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRXZl
bnRTZW5kZXIiKSkgewogICAgICAgICBpZiAobV9zdGF0ZSAhPSBSdW5uaW5nVGVzdCkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwogCiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkg
PT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVz
c2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdl
Qm9keSk7CkBAIC0xOTAwLDcgKzE5MDgsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIktl
eURvd24iKSkgewogICAgICAgICAgICAgZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdHJ1ZSk7CiAKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VVcCIpKSB7CkBAIC0xOTE1LDcgKzE5MjMsNyBAQCBXS1Jl
dGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+
bW91c2VEb3duKGJ1dHRvbiwgbW9kaWZpZXJzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlVXAoYnV0dG9uLCBtb2RpZmllcnMpOwot
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlTW92ZVRvIikpIHsKQEAgLTE5MjcsMjgg
KzE5MzUsMjggQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKIAogICAgICAgICAgICAgLy8gRm9y
d2FyZCB0byBXZWJQcm9jZXNzCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNl
TW92ZVRvKHgsIHkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5h
bWUsICJNb3VzZUZvcmNlQ2xpY2siKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5
LT5tb3VzZUZvcmNlQ2xpY2soKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTdGFydEFu
ZENhbmNlbE1vdXNlRm9yY2VDbGljayIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJv
eHktPnN0YXJ0QW5kQ2FuY2VsTW91c2VGb3JjZUNsaWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3Nh
Z2VOYW1lLCAiTW91c2VGb3JjZURvd24iKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5tb3VzZUZvcmNlRG93bigpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNl
Rm9yY2VVcCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRm9yY2VV
cCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRm9yY2VDaGFuZ2VkIikpIHsK
QEAgLTE5NTYsNyArMTk2NCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAg
ICBkb3VibGUgZm9yY2UgPSBXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZm9yY2VL
ZXkuZ2V0KCkpKSk7CiAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VGb3Jj
ZUNoYW5nZWQoZm9yY2UpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKQEAgLTE5NzIsNyArMTk4MCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
CiAKICAgICAgICAgICAgIC8vIEZvcndhcmQgdG8gV2ViUHJvY2VzcwogICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5jb250aW51b3VzTW91c2VTY3JvbGxCeSh4LCB5LCBwYWdlZCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTGVhcEZvcndhcmQiKSkgewpAQCAtMTk4MCw3ICsx
OTg4LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIHVuc2lnbmVkIHRp
bWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxX
S1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIHRpbWVLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHkt
PmxlYXBGb3J3YXJkKHRpbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCkBAIC0xOTkyLDcgKzIwMDAsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5hZGRUb3VjaFBvaW50KHgsIHkpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIlVwZGF0ZVRvdWNoUG9pbnQiKSkgewpAQCAtMjAwNiw3ICsyMDE0LDcgQEAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihX
S1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeUtleS5nZXQoKSkpKSk7CiAKICAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dXBkYXRlVG91Y2hQb2ludChpbmRleCwgeCwgeSk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hNb2RpZmllciIpKSB7CkBAIC0y
MDE3LDcgKzIwMjUsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgYm9v
bCBlbmFibGUgPSBzdGF0aWNfY2FzdDxib29sPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0
PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgZW5hYmxlS2V5LmdldCgpKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5zZXRUb3VjaE1vZGlmaWVyKG1vZGlmaWVyLCBlbmFibGUpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJN
ZXNzYWdlTmFtZSwgIlNldFRvdWNoUG9pbnRSYWRpdXMiKSkgewpAQCAtMjAyOCw1MSArMjAzNiw3
MyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkp
KTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5zZXRUb3VjaFBvaW50UmFkaXVz
KHgsIHkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoU3RhcnQiKSkgewogICAg
ICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaFN0YXJ0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiVG91Y2hNb3ZlIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQ
cm94eS0+dG91Y2hNb3ZlKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hFbmQi
KSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaEVuZCgpOwotICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoQ2FuY2VsIikpIHsKICAgICAgICAgICAgIG1fZXZl
bnRTZW5kZXJQcm94eS0+dG91Y2hDYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUs
ICJDbGVhclRvdWNoUG9pbnRzIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+
Y2xlYXJUb3VjaFBvaW50cygpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJlbGVhc2VU
b3VjaFBvaW50IikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRl
eEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4IikpOwog
ICAgICAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkpKSkpOwogICAgICAgICAgICAgbV9ldmVu
dFNlbmRlclByb3h5LT5yZWxlYXNlVG91Y2hQb2ludChpbmRleCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiQ2FuY2VsVG91Y2hQb2ludCIpKSB7CiAgICAgICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJJbmRleCIpKTsKICAgICAgICAgICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGlu
dD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGluZGV4S2V5LmdldCgpKSkpKTsK
ICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+Y2FuY2VsVG91Y2hQb2ludChpbmRleCk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2Fn
ZUJvZHkpOworCisgICAgYXV0byBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5ID0gWyZdIChXS0hU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdLVHlw
ZVJlZik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbmV3
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4oV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIodGhpcy0+Y29udGV4dCgpKSwgcG9saWN5LCBjb250
ZXh0LCBbXSAoV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkgeworICAgICAgICAgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdLVHlwZVJlZik+Kj4oY29udGV4dCk7CisgICAgICAgICAgICAoKmNvbXBsZXRp
b25IYW5kbGVyUG9pbnRlcikobnVsbHB0cik7CisgICAgICAgICAgICBkZWxldGUgY29tcGxldGlv
bkhhbmRsZXJQb2ludGVyOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBbHdheXNBY2NlcHRDb29raWVz
IikpIHsKKyAgICAgICAgV0tCb29sZWFuUmVmIGFjY2VwdCA9IHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5ID0gV0tCb29sZWFuR2V0VmFsdWUoYWNjZXB0KSA/IGtXS0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lBbHdheXMgOiBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnRE
b21haW47CisgICAgICAgIHJldHVybiBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0T25seUFjY2VwdEZpcnN0UGFydHlD
b29raWVzIikpIHsKKyAgICAgICAgV0tCb29sZWFuUmVmIGFjY2VwdCA9IHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9saWN5ID0gV0tCb29sZWFuR2V0VmFsdWUoYWNjZXB0KSA/IGtXS0hUVFBDb29raWVBY2Nl
cHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4gOiBrV0tIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW47CisgICAgICAgIHJldHVybiBz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY3VycmVudEludm9jYXRpb24t
PmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5h
bWUsIG1lc3NhZ2VCb2R5KS5nZXQoKSk7CiB9CiAKIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVz
dENvbnRyb2xsZXI6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMWRiMzA4ZDMxMzllNGNi
YzM0OWU1NTEzZjJjOWRkZmM3YzhjZmU5ZC4uYjA0ZTU4MmQ4MmQ2ZGE0MjE2NjBjOGE3NWNmYmI2
NjFkNDY5MzFmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAt
Mzc3LDE0ICszNzcsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0
YSwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tDb250ZXh0UmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5l
clJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiAKICAgICAvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudAogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQq
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCopOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlV2l0aExpc3RlbmVyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYsIGNvbnN0IHZvaWQqKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwotICAgIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJS
ZWYpOwogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBi
b29sIHN5bmNocm9ub3VzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggY2NhZjEwMzE2Y2U3Yjk1NDNkNTc4YTU5NWNkMzM4MjBhNjNlNjk0OC4uYzRkNzdi
ODU5M2EwY2M3YTZjYWRkOWIyNmZlMTBjMjZmOTY2NzQwZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjppbnZva2UoKQogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFNo
b3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Moc2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxi
YWNrcygpKTsKIAotICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
V0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29u
dGV4dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29u
dGV4dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQo
KSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiwg
bnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNsZWFyIG91dCB2
aXNpdGVkIGxpbmtzIGhlcmUuCiAKQEAgLTkwNCwyMiArOTA0LDYgQEAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEIKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5c0FjY2VwdENvb2tp
ZXMiKSkgewotICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBv
bGljeUFsd2F5cyA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbjsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgdXBkYXRlcyB0aGUgcG9saWN5IGluIFdl
YlByb2Nlc3MgYW5kIGluIE5ldHdvcmtQcm9jZXNzIGFzeW5jaHJvbm91c2x5LCB3aGljaCBtaWdo
dCBicmVhayBzb21lIHRlc3RzJyBleHBlY3RhdGlvbnMuCi0gICAgICAgIFdLQ29va2llTWFuYWdl
clNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwgcG9saWN5KTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRPbmx5QWNjZXB0Rmlyc3RQYXJ0eUNvb2tpZXMiKSkgewotICAg
ICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNz
YWdlQm9keSk7Ci0gICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jv
b2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2
ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgdXBkYXRlcyB0
aGUgcG9saWN5IGluIFdlYlByb2Nlc3MgYW5kIGluIE5ldHdvcmtQcm9jZXNzIGFzeW5jaHJvbm91
c2x5LCB3aGljaCBtaWdodCBicmVhayBzb21lIHRlc3RzJyBleHBlY3RhdGlvbnMuCi0gICAgICAg
IFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29v
a2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwgcG9saWN5
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0Q3VzdG9tVXNlckFnZW50Iikp
IHsKICAgICAgICAgV0tTdHJpbmdSZWYgdXNlckFnZW50ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgV0tQYWdlU2V0Q3VzdG9tVXNlckFnZW50KFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIHVzZXJBZ2VudCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372950</attachid>
            <date>2019-06-26 14:15:12 -0700</date>
            <delta_ts>2019-06-26 14:24:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199230-20190626141511.patch</filename>
            <type>text/plain</type>
            <size>58809</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiNjkyZTcxZmM0ZGQ2YmIx
OTQ5ZjdiMzNhYTJkYTdhMTc3YTI5YzMuLmQxN2VhOWQyMjI0NDc1NjQ3ZDAzZDYzM2JhYWEwMmJi
OThiMGQ3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDYtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICB0ZXN0UnVubmVy
LnNldEFsd2F5c0FjY2VwdENvb2tpZXMgc2hvdWxkIHdhaXQgZm9yIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHRvIGJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MjMwCisgICAgICAgIDxyZGFyOi8vNTE3NTcxMDc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
d2hpY2ggaXMgbHVja2lseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAgIEl0IGFsc28g
YWRkcyBsaXN0ZW5lci1iYXNlZCBhc3luY2hyb25vdXMgdmVyc2lvbnMgb2YgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIHRoZXNlIG5ldyBhYmlsaXRpZXMgdG8gd2FpdCBmb3IgdGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIGJlIHNldCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoaWxlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBodW5nLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIHJhY2UgY29uZGl0aW9u
IHRoYXQgd2FzIGNhdXNpbmcgc29tZSBmbGFraW5lc3MgaW4gdGVzdHMgdGhhdCB1c2UgdGVzdFJ1
bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU1lc3NhZ2VMaXN0ZW5lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaC4KKyAgICAgICAgKEFQSTo6TWVzc2FnZUxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OnNlbmRSZXBs
eSk6CisgICAgICAgIChBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6TWVzc2FnZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVj
dGVkQnVuZGxlQ2xpZW50LmguCisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCk6
CisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5qZWN0
ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJv
bm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE5LTA2LTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gRGlzcGF0Y2ggc3ludGhldGljIG1vdXNlIGV2ZW50
IGFzeW5jaHJvbm91c2x5IGluIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVu
dENoYW5nZU9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYmU4
Yzc4YmYzMjMxMmU2MDc1OWQyOTRjNjMxYTRhNjNkZjUzMDQ0Yy4uNDAyOWRmOTBlN2NlMjI4ZGMx
Mzk1NzIxMjRhNTk2YzI4NGU4MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aApAQCAtMTMzLDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yLAogICAgICAg
ICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBNZWRpYUNhY2hlTWFuYWdlciwKKyAg
ICAgICAgTWVzc2FnZUxpc3RlbmVyLAogICAgICAgICBOYXZpZ2F0aW9uLAogICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggMTE2NGMxNTgyYzQxMmE3YjU1MGE1YjFjNTZiYjFkZjU0ZmZlN2Fh
OS4uMDM5MTRiMjFkMmY4Mzc4NDg3NzAxOWE2ZGNlNWY0OGJhZjBmOTgwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0luc3BlY3RvciogV0tJbnNwZWN0b3JSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uTWV0YWRhdGEqIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lc3NhZ2VMaXN0ZW5lciogV0tNZXNz
YWdlTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25B
Y3Rpb24qIFdLTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLTmF2aWdhdGlvbkRhdGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb24qIFdLTmF2aWdhdGlvblJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDJkNzdlYTA5YjUwY2UyMzg5N2JjZjJiZDViYTFjMjFlNTU2Yjc3MGQuLjdkMjVlZDRkMGJkODY0
MDUyZmQ0N2QyNTNhZmM5YWEyNmIzNWQ0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQ0LDYgKzM0NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKK1VJUHJvY2Vz
cy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNw
bGF5LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggMjM1MGM2MWZl
MTMyMTk4NzllM2QxOTljZDg5MGVlZDhhYTM3YzUzNS4uMmJlYmMxMmY2NjE4YTc4NDM5YTMzMjZk
MmE1MmIwMzI1ZWZkMDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmpl
Y3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8QVBJOjpPYmplY3Q+
IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJikgeyByZXR1cm4gbnVsbHB0cjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OGE1NzY2Yzcx
Yzg0YTE4OGEyNGJlNTNkYWQ1ZjY2YWIyMmNiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTWVzc2FnZUxpc3RlbmVyLmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBNZXNzYWdlTGlzdGVuZXIgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok1l
c3NhZ2VMaXN0ZW5lcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lc3NhZ2VMaXN0ZW5l
cik7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZXNzYWdlTGlzdGVuZXI+IGNyZWF0ZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIHJlcGx5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUxpc3RlbmVyKFdURk1vdmUocmVw
bHkpKSk7CisgICAgfQorCisgICAgdm9pZCBzZW5kUmVwbHkoUmVmUHRyPEFQSTo6T2JqZWN0PiYm
IHJlcGx5KQorICAgIHsKKyAgICAgICAgbV9yZXBseShXVEZNb3ZlKHJlcGx5KSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIE1lc3NhZ2VMaXN0ZW5lcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxBUEk6Ok9iamVjdD4pPiYmIHJlcGx5KQorICAgICAgICA6IG1fcmVwbHkoV1RGTW92ZShy
ZXBseSkpIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmpl
Y3Q+KT4gbV9yZXBseTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBjODY2MDNkZGM5NGZkZGU3OGZmNWU3ZThj
M2NmNzNkNWNkOTNjNjA5Li41MTczNzU1OTQ4ZGQ0MTVlMjdhNWY3M2VhNDcyZmFjODA5NWJlYjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNTgsNiAr
NTgsNyBAQCBjbGFzcyBFeHBlcmltZW50YWxGZWF0dXJlOwogY2xhc3MgRnJhbWVIYW5kbGU7CiBj
bGFzcyBGcmFtZUluZm87CiBjbGFzcyBIaXRUZXN0UmVzdWx0OworY2xhc3MgTWVzc2FnZUxpc3Rl
bmVyOwogY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBO
YXZpZ2F0aW9uRGF0YTsKQEAgLTEzNyw2ICsxMzgsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tJ
Y29uRGF0YWJhc2VSZWYsIFdlYkljb25EYXRhYmFzZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0lu
c3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcikKIFdL
X0FERF9BUElfTUFQUElORyhXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmLCBXZWJNZWRpYVNlc3Np
b25NZXRhZGF0YSkKK1dLX0FERF9BUElfTUFQUElORyhXS01lc3NhZ2VMaXN0ZW5lclJlZiwgQVBJ
OjpNZXNzYWdlTGlzdGVuZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uQWN0aW9u
UmVmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0
aW9uRGF0YVJlZiwgQVBJOjpOYXZpZ2F0aW9uRGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS05h
dmlnYXRpb25SZWYsIEFQSTo6TmF2aWdhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmlu
ZGV4IGQzNDU2YWE2ODAyNzJiYzQxMDcyNmRhZWYzZTRiOTA5YjhjODE4MmQuLmIzMzI4ZThjMGI3
YTIwZDExMmU5NDc1MDllNmI3ZTJkYzhiNzVmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
aApAQCAtMjksOSArMjksMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKIC8vIElu
amVjdGVkIEJ1bmRsZSBDbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tDb250ZXh0UmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiog
cmV0dXJuRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Nv
bnRleHREaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRE
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiBXS1R5cGVSZWYgKCpXS0NvbnRleHRHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGFDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNrKShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogCiB0eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2Ug
ewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTU3LDQgKzU4LDE4IEBAIHR5cGVkZWYgc3Ry
dWN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgewogICAgIFdLQ29udGV4dEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrICAgICAgICAgICAgZ2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOwogfSBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudFYxOwogCit0eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudFYyIHsKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisg
ICAgV0tDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBX
S0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2Fs
bGJhY2sgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7
CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tDb250ZXh0R2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2sgICAgICAgICAgICBnZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGE7CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tDb250ZXh0
RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5l
ckNhbGxiYWNrIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVX
aXRoTGlzdGVuZXI7Cit9IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjI7CisKICNlbmRp
ZiAvLyBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRleCBjYjdmMGJkMWI3MWZi
MDk1YWE0YjVmYjMzODAzYTUzMmE0YzU2Zjc3Li4wNjM2ZWE2YzJjNzdlM2ZkNGQwYjRkYzZmMTJk
MDhkZWI4Njk1MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5jcHAKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgV0tDb29raWVNYW5hZ2Vy
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29va2llTWFuYWdlclJlZiBjb29r
aWVNCiAgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5kZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoZGF0ZSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogfQogCi12b2lk
IFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2Vy
UmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lk
IFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2Vy
UmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIHZvaWQq
IGNvbnRleHQsIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5jdGlv
biBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOworICAg
IHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSwgW2NvbnRleHQsIGNhbGxiYWNrXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Cisg
ICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkg
OiBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
RnVuY3Rpb24gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5oCmluZGV4IGM2NTE0ZTNmYTA3YjNlMjM4YjA0YzRiOWViMDA5Y2U4ZWUx
YmY5M2QuLjczMzU0ZDJjYmE0ZWRmOTdiOWE1NzkyMGNkNDViYzc3NDI1MmJhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCkBAIC02OCw3
ICs2OCw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXMo
V0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpCiAvLyBUaGUgdGltZSBoZXJlIGlzIHJl
bGF0aXZlIHRvIHRoZSBVbml4IGVwb2NoLgogV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2Vy
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29va2llTWFuYWdlclJlZiBjb29r
aWVNYW5hZ2VyLCBkb3VibGUpOwogCi1XS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KTsKK3R5cGVkZWYgdm9pZCAoKldLQ29va2ll
TWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5jdGlvbikoV0tFcnJvclJlZiwgdm9p
ZCopOworV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29va2llQWNjZXB0
UG9saWN5IHBvbGljeSwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLQ29va2ll
TWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5jdGlvbikoV0tIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1h
bmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVN
YW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwMTBjNDdjMTk5
NWRkYjYwMTVjNjIyNWQ4YzY0MmEwZDM0MTM5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLTWVzc2Fn
ZUxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJBUElNZXNzYWdlTGlzdGVuZXIuaCIKKworV0tUeXBl
SUQgV0tNZXNzYWdlTGlzdGVuZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShBUEk6
Ok1lc3NhZ2VMaXN0ZW5lcjo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tNZXNzYWdlTGlzdGVuZXJT
ZW5kUmVwbHkoV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLVHlwZVJlZiB2YWx1
ZSkKK3sKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5zZW5kUmVwbHkodG9JbXBsKHZhbHVlKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VM
aXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVu
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNGU4YTJlZjgyMTZiZGE1MGZiMGVlYTQ0YzM1ZTcwNGIzZTIyZGQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNz
YWdlTGlzdGVuZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS01l
c3NhZ2VMaXN0ZW5lcl9oCisjZGVmaW5lIFdLTWVzc2FnZUxpc3RlbmVyX2gKKworI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tNZXNzYWdlTGlzdGVuZXJHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIHZvaWQgV0tNZXNzYWdlTGlzdGVuZXJTZW5kUmVwbHkoV0tNZXNzYWdlTGlz
dGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiByZXBseSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS01lc3NhZ2VMaXN0ZW5lcl9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAppbmRleCBiMjJjM2ViODY2MmY1ZTc2YTAzODYwZGU5YjI1OGE1MzhiMWIwYzkz
Li5lZGJiZjU4Y2NjNjU5NzQyYjliMWI0NGI1MzY1MjU3YTMwMjlkMTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJu
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIFdLVHlwZVJlZiAoKldLUGFn
ZUdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VE
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVy
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBl
UmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgc3RydWN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50QmFzZSB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNDUsNCArNDYsMTUgQEAgdHlw
ZWRlZiBzdHJ1Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCB7CiAgICAgV0tQYWdlRGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICBk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwogfSBXS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudFYwOwogCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudFYxIHsKKyAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisg
ICAgV0tQYWdlRGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayAgICAg
ICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBXS1Bh
Z2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sg
ICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisKKyAg
ICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNrIGRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXI7Cit9IFdLUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50VjE7CisKICNlbmRpZiAvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCBmNGNhNjJjY2FiNmMzZGNlNTIyMjM0YTNmZWE1NDFl
YjJlY2RkZGU1Li42ZGIxNDUyMmYwNTcyYjlhNzg1ZGUxN2E2OWE5YWU5MTBkYjkxMDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKIAorI2luY2x1ZGUg
IkFQSU1lc3NhZ2VMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00
NSwxNCArNDYsMTggQEAgdm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2MKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQ
SShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3Qq
IG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQordm9pZCBXZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlICYmICFtX2NsaWVudC5kaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisKKyAgICBpZiAobV9jbGllbnQu
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkgeworICAgICAg
ICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7CisgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkoJnByb2Nl
c3NQb29sKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCAm
cmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSkpOworICAg
IH0KIAotICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0gbnVsbHB0cjsKLSAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKCZw
cm9jZXNzUG9vbCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5
KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJu
RGF0YSA9IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSk7CisgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcih0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNz
YWdlQm9keSksIHRvQVBJKEFQSTo6TWVzc2FnZUxpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAog
UmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGFiZmQ2YTRiNzg2ZmY1ZjI0ZmI5Y2RkNWNhOTYx
N2IxOTUwNzQwYTQuLjA5NDhiYzU5Nzc0MWU1NzhiOTNkY2YzODQwZWIzNzAyMmI2OWE5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
T2JqZWN0OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50VjAsIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjE+IFZl
cnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudFYwLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxLCBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudFYyPiBWZXJzaW9uczsKIH07CiB9CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudChjb25zdCBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0
cmluZyYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJikgb3ZlcnJpZGU7CiAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoV2ViUHJvY2Vzc1Bvb2wmKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDM1
M2U3ZmI0MjM3YWM5YTY0NTZiNDgwYjJlYzAwYzlhNThmYTdjNjIuLjQ0ZGU4MzY0YjUyODQzMTIw
MjJkZDFjMDNlY2E5ODhlZmY2MDI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oIgogCisjaW5jbHVkZSAiQVBJTWVzc2FnZUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTQxLDE0ICs0MiwxOSBAQCB2b2lkIFdlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVBy
bwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdl
YlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3Qq
IG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQordm9pZCBXZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEFQSTo6T2JqZWN0Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX2Ns
aWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKQotICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlCisgICAgICAgICYmICFtX2NsaWVudC5kaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKQorICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisKKyAgICBpZiAobV9jbGllbnQuZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkgeworICAgICAgICBX
S1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEkocGFnZSksIHRv
QVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgJnJldHVybkRhdGFS
ZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJlZikpKTsKKyAgICB9CiAKLSAgICBX
S1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IDA7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2Fn
ZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCAmcmV0dXJuRGF0YVJlZiwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm5EYXRhID0gYWRvcHRSZWYodG9JbXBsKHJl
dHVybkRhdGFSZWYpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdl
TmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIHRvQVBJKEFQSTo6TWVzc2FnZUxpc3Rl
bmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmlu
ZGV4IDMwYzdmMzU0YzAwMWI0ZWQ3MjQ0ODUwMTZhM2FlN2M0Y2Y3NDM0N2YuLjY1Mjk4MmE4MTJh
OWVmYmVmNTIxYTZhOTg5OWZhNGJlZTVmYWYzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaAotI2RlZmluZSBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNs
dWRlICJXS1BhZ2UuaCIKQEAgLTM0LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBP
YmplY3Q7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRWMD4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50VjAsIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjE+IFZlcnNp
b25zOwogfTsKIH0KIApAQCAtNDUsOSArNDQsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFz
cyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBB
UEk6Ok9iamVjdCopOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCos
IFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6
T2JqZWN0Pik+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggYWM3NGJkNGM3YWM0YTEzMDU0MDE2MDJkM2IyNzY0MzBhZGI4ODhi
OC4uMjYwN2IzMDAzNGVjOTdiZTc2YTQyYjBkNWEzMjg2ZjRmMzE5NjU0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MDQsOCArNzA0LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJuRGF0YSk7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlckRhdGEobV9wcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKSk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgp
KS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHByb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJlZigpXSAoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJl
dHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyRGF0YShw
cm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggMzVlODVmMGUzNTFjNzIzODI0ZjZmYTEzNmU3YmVmZDU3NDYyMjlm
YS4uMmM1NDBmN2MwNTc1NmZmOGRkOTQ2OGMzNDM5ZmJkMmQxYmI5YTU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ5Nyw3ICs0OTcsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50
PiYmKTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xp
Y3lDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7Ci0gICAgV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50KiBpbmplY3RlZEJ1bmRsZUNsaWVudCgpIHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQuZ2V0KCk7IH0KIAogICAgIEFQSTo6VUlDbGllbnQmIHVpQ2xpZW50KCkgeyByZXR1cm4g
Km1fdWlDbGllbnQ7IH0KICAgICB2b2lkIHNldFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlVJQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCA3ODY0YTE4M2Y3ZDczOGRlZDU0YTkwZDI4MmE1MDMzN2ZhNDI1NTM1Li45NDYyNzk5
ZjJhOGJkMWE0ZDc2ZjJkMzlmYzgyMzk0OWQxMDg1Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xOTAyLDkgKzE5MDIsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdAogICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5KQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gcmV0dXJu
RGF0YTsKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5kaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKCp0aGlzLCBtZXNzYWdlTmFtZSwgd2ViUHJvY2Vzc1By
b3h5LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQo
KSwgcmV0dXJuRGF0YSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoVXNlckRhdGEod2ViUHJvY2Vz
c1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7Cisg
ICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSgqdGhpcywgbWVzc2FnZU5hbWUsIHdlYlByb2Nlc3NQcm94eS0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIFt3ZWJQ
cm9jZXNzUHJveHkgPSBtYWtlUmVmKCp3ZWJQcm9jZXNzUHJveHkpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJl
dHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihVc2VyRGF0YSh3
ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMocmV0dXJuRGF0YS5nZXQo
KSkpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkR2V0U3RhdGlzdGlj
cyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IHJlcXVlc3RJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDFiNTIyNjNjNDZkYjVlZmEwM2VlMjU4Mjc5MWNkOTY1NDhmOTc5NWYuLjE2MDQzYzVmNTk2
YTI3OWE5M2EzOWRmMDhlZjAyNDUyMzcyNGM0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMiw2ICsxMTAyLDggQEAKIAkJNUNB
MjZEODEyMTdBQkQ1QjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMjZEODAyMTdBQkJCNjAw
Rjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovOyB9OwogCQk1Q0EyNkQ4MzIxN0FE
MUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMjZEN0YyMTdBQkJCNjAwRjk3QTM1IC8q
IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLzsgfTsKIAkJNUNBOTg1NEEyMTBCRUI2NDAwNTdF
QjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3Np
bmdXYXJuaW5nLmggKi87IH07CisJCTVDQUJEQzg2MjJDNDBGREUwMDFFREU4RSAvKiBXS01lc3Nh
Z2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNBQkRDODcyMkM0
MEZFRDAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBQkRDODMyMkM0MEZBNzAwMUVERThFIC8qIEFQ
SU1lc3NhZ2VMaXN0ZW5lci5oICovOyB9OwogCQk1Q0FEREUwNTIxNTA0NkJEMDA2N0QzMDkgLyog
V0tXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Qzc0MzAwRTIxNTAwNDkyMDA0QkZBMTcgLyogV0tXZWJQcm9jZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNBRkRFNDUyMTMwODQ2
MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVD
QUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDQyMTMwODQzNjAw
QjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi87IH07CkBAIC0zNjA0LDYgKzM2MDYs
OSBAQAogCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBUElIVFRQQ29v
a2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJSFRUUENvb2tp
ZVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNBOTg1NDky
MTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2Fy
bmluZ0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0FCREM4MzIyQzQwRkE3MDAxRURFOEUgLyogQVBJTWVzc2FnZUxpc3RlbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU1lc3NhZ2VMaXN0ZW5lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdl
TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZXNz
YWdlTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FCREM4NTIy
QzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tNZXNzYWdlTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0FGREU0MzIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg0Myw2ICs3ODQ4LDcgQEAKIAkJCQkz
MUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywK
IAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xp
ZW50LmggKi8sCisJCQkJNUNBQkRDODMyMkM0MEZBNzAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0
ZW5lci5oICovLAogCQkJCTdDRDNBNDgwMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9u
LmNwcCAqLywKIAkJCQk3Q0QzQTQ4MTFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5o
ICovLAogCQkJCTJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uQWN0aW9u
LmggKi8sCkBAIC03OTQ2LDYgKzc5NTIsOCBAQAogCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEw
MyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAy
NDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKIAkJCQlDOUNENDM5
QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAorCQkJCTVD
QUJEQzg0MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5jcHAgKi8sCisJCQkJ
NUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggKi8sCiAJCQkJ
QzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovLAogCQkJCUMx
MUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi8sCiAJCQkJNDExQThE
REEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCAqLywKQEAgLTkyNTAs
NiArOTI1OCw3IEBACiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAwN0JGQTUzIC8qIEFQSUludGVybmFs
RGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBDN0Yx
NTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTVDQUJEQzg3MjJDNDBGRUQwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDNBNDgzMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZp
Z2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVFQzFBNzgzNkVFMDBCNkNGQkUgLyog
QVBJTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkREOUVCMkQxQTZGMDEy
NTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAw
OTksNiArMTAxMDgsNyBAQAogCQkJCUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlDRDQzOUQxQjRCMDI0
RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0FCREM4NjIyQzQwRkRFMDAxRURFOEUgLyogV0tNZXNz
YWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZG
NiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTFBOEREQjIwREREMUFD
MDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3
NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDllZTM3
MDM5YTYyMDA5ODczZTEwNjQxZmQ2YmM1NjY3ZmIyNjM3NC4uOWE0YzdmN2Q4ZjM0ZjY0ZjFmZDQ1
YmJlZGNiYjQ1MmJkY2E1NTQ1NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA2LTI2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRB
bHdheXNBY2NlcHRDb29raWVzIHNob3VsZCB3YWl0IGZvciBjb29raWUgYWNjZXB0IHBvbGljeSB0
byBiZSBzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTIzMAorICAgICAgICA8cmRhcjovLzUxNzU3MTA3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRHZXRUZXN0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRHZXRVc2Vy
SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBh
Z2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wNi0yNSAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhIG5ldyBTUEkgdG8gaW5mb3Jt
IGNsaWVudHMgYWJvdXQgQXBwU1NPCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDQ5NWQwZWQzY2Q3ZjFiNWE4MzdkOGQyOTg4
ZWVmYmVjNWM0YTM4MjUuLjg0MGM2YzVhMDYyMThjZDk4M2Q2MThiYzdjNTJkMzllOGY0ZjRhNmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFn
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFn
ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lkIGRpZEdldFRlc3RIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLCiAgICAgRVhQ
RUNUX0VRKHRlc3RQb2xpY3ksIHBvbGljeSk7CiAKICAgICBXS0Nvb2tpZU1hbmFnZXJSZWYgY29v
a2llTWFuYWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIod2tDb250ZXh0LmdldCgpKTsK
LSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFn
ZXIsIHVzZXJQb2xpY3kpOworICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koY29va2llTWFuYWdlciwgdXNlclBvbGljeSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAg
ICB0ZXN0RG9uZSA9IHRydWU7CiB9CkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGRpZEdl
dFVzZXJIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xp
Y3ksIFdLCiAgICAgLy8gTWFrZSBzdXJlIHRvIGNob29zZSBhIHBvbGljeSBkaWZmZXJlbnQgZnJv
bSB0aGUgcG9saWN5IHRoZSB1c2VyIGN1cnJlbnRseSBoYXMgc2V0LgogICAgIHRlc3RQb2xpY3kg
PSAodXNlclBvbGljeSArIDEpICUgMzsKICAgICBXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFu
YWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIod2tDb250ZXh0LmdldCgpKTsKLSAgICBX
S0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHRl
c3RQb2xpY3kpOworICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
Y29va2llTWFuYWdlciwgdGVzdFBvbGljeSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgV0tDb29r
aWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVNYW5hZ2VyLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpLCBkaWRHZXRUZXN0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggY2Q4ZWYxODM2YTFmNGVkMzk3ODVkYjcyNjVhMmUzNTY0NTM1ODhlMS4uYmZhYzE5MjMzNGMz
NjJlMTc3NGE3YmVkZjc3MjdjNjNjMTY2MjgwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tG
cmFtZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0ljb25EYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS01lc3Nh
Z2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS01vY2tEaXNwbGF5Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTW9ja01lZGlhRGV2aWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF2aWdh
dGlvbkFjdGlvblJlZi5oPgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgpAQCAtNTM4LDExICs1NDAsMTIgQEAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFn
ZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpOwog
ICAgIH0KIAotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAorICAgIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50VjIgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7CisgICAgICAgIHsgMiwgdGhp
cyB9LAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKLSAgICAg
ICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAg
ICAgbnVsbHB0ciwKICAgICAgICAgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhLAorICAgICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlV2l0aExpc3RlbmVyLAogICAgIH07CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQobV9jb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7CiAKQEAg
LTcxNywxMCArNzIwLDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChjb250ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAv
LyB0aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/Ci0gICAgV0tQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKLSAgICAgICAgeyAwLCB0
aGlzIH0sCisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRsZUNs
aWVudCA9IHsKKyAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAgICAgIGRpZFJlY2VpdmVQYWdlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXIsCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQobV9tYWlu
V2ViVmlldy0+cGFnZSgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7CiAKQEAgLTE3Mjks
OSArMTczMyw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXCiAgICAgc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVz
c2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
ICpyZXR1cm5EYXRhID0gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KS5sZWFrUmVmKCk7CisgICAgc3RhdGlj
X2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUs
IG1lc3NhZ2VCb2R5LCBsaXN0ZW5lcik7CiB9CiAKIFdLVHlwZVJlZiBUZXN0Q29udHJvbGxlcjo6
Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE3NDYsOSArMTc1MCw5IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYg
cGFnZSwgV0tTCiAgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1l
c3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5
cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250
cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZVdpdGhMaXN0ZW5lcihXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgKnJldHVybkRhdGEgPSBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHksIGxpc3RlbmVyKTsKIH0KIAog
dm9pZCBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXS0NvbnRleHRSZWYg
Y29udGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKQEAgLTE4ODUsMTEgKzE4ODksMTUgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwog
fQogCi1XS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVy
KQogeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXIgPSByZXRhaW5XSyhs
aXN0ZW5lcildIChXS1R5cGVSZWYgcmVwbHkpIHsKKyAgICAgICAgV0tNZXNzYWdlTGlzdGVuZXJT
ZW5kUmVwbHkobGlzdGVuZXIuZ2V0KCksIHJlcGx5KTsKKyAgICB9OworCiAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJFdmVudFNlbmRlciIpKSB7CiAg
ICAgICAgIGlmIChtX3N0YXRlICE9IFJ1bm5pbmdUZXN0KQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAK
ICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlH
ZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAgLTE5MDAs
NyArMTkwOCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiS2V5RG93biIpKSB7CiAgICAg
ICAgICAgICBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCB0cnVlKTsKIAotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1v
dXNlRG93biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUs
ICJNb3VzZVVwIikpIHsKQEAgLTE5MTUsNyArMTkyMyw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCCiAgICAgICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZURvd24oYnV0dG9u
LCBtb2RpZmllcnMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fZXZlbnRT
ZW5kZXJQcm94eS0+bW91c2VVcChidXR0b24sIG1vZGlmaWVycyk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewpAQCAtMTkyNywyOCArMTkzNSwyOCBAQCBXS1Jl
dGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQgogCiAgICAgICAgICAgICAvLyBGb3J3YXJkIHRvIFdlYlByb2Nl
c3MKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VNb3ZlVG8oeCwgeSk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRm9yY2VD
bGljayIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRm9yY2VDbGlj
aygpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlN0YXJ0QW5kQ2FuY2VsTW91c2VGb3Jj
ZUNsaWNrIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+c3RhcnRBbmRDYW5j
ZWxNb3VzZUZvcmNlQ2xpY2soKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZUZv
cmNlRG93biIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRm9yY2VE
b3duKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VGb3JjZVVwIikpIHsKICAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VGb3JjZVVwKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VGb3JjZUNoYW5nZWQiKSkgewpAQCAtMTk1Niw3ICsxOTY0
LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIGRvdWJsZSBmb3JjZSA9
IFdLRG91YmxlR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBmb3JjZUtleS5nZXQoKSkpKTsKIAog
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZUZvcmNlQ2hhbmdlZChmb3JjZSk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKICAgICAgICAgfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApAQCAt
MTk3Miw3ICsxOTgwLDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKIAogICAgICAgICAgICAg
Ly8gRm9yd2FyZCB0byBXZWJQcm9jZXNzCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHkt
PmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KHgsIHksIHBhZ2VkKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVz
c2FnZU5hbWUsICJMZWFwRm9yd2FyZCIpKSB7CkBAIC0xOTgwLDcgKzE5ODgsNyBAQCBXS1JldGFp
blB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgdW5zaWduZWQgdGltZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGltZUtleS5nZXQo
KSkpKSk7CiAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGlt
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
QEAgLTE5OTIsNyArMjAwMCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAg
ICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxX
S1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIHlLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPmFk
ZFRvdWNoUG9pbnQoeCwgeSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVXBkYXRlVG91
Y2hQb2ludCIpKSB7CkBAIC0yMDA2LDcgKzIwMTQsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+
IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QgogICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUo
c3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNl
bmRlclByb3h5LT51cGRhdGVUb3VjaFBvaW50KGluZGV4LCB4LCB5KTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJTZXRUb3VjaE1vZGlmaWVyIikpIHsKQEAgLTIwMTcsNyArMjAyNSw3IEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICBib29sIGVuYWJsZSA9IHN0YXRp
Y19jYXN0PGJvb2w+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBlbmFibGVLZXku
Z2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnNldFRvdWNoTW9k
aWZpZXIobW9kaWZpZXIsIGVuYWJsZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0
VG91Y2hQb2ludFJhZGl1cyIpKSB7CkBAIC0yMDI4LDUxICsyMDM2LDczIEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50
NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAg
ICBtX2V2ZW50U2VuZGVyUHJveHktPnNldFRvdWNoUG9pbnRSYWRpdXMoeCwgeSk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hTdGFydCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50
U2VuZGVyUHJveHktPnRvdWNoU3RhcnQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJU
b3VjaE1vdmUiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaE1vdmUo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJUb3VjaEVuZCIpKSB7CiAgICAgICAgICAg
ICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoRW5kKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VO
YW1lLCAiVG91Y2hDYW5jZWwiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50
b3VjaENhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkNsZWFyVG91Y2hQb2lu
dHMiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5jbGVhclRvdWNoUG9pbnRz
KCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmVsZWFzZVRvdWNoUG9pbnQiKSkgewog
ICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluZGV4S2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgiKSk7CiAgICAgICAgICAgICBpbnQg
aW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tV
SW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBpbmRleEtleS5nZXQoKSkpKSk7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnJl
bGVhc2VUb3VjaFBvaW50KGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJDYW5j
ZWxUb3VjaFBvaW50IikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBp
bmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4Iikp
OwogICAgICAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZh
bHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkpKSkpOwogICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5jYW5jZWxUb3VjaFBvaW50KGluZGV4KTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQot
ICAgIHJldHVybiBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CisKKyAgICBh
dXRvIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBbJl0gKFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBuZXcgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXS1R5cGVSZWYpPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29v
a2llTWFuYWdlcih0aGlzLT5jb250ZXh0KCkpLCBwb2xpY3ksIGNvbnRleHQsIFtdIChXS0Vycm9y
UmVmIGVycm9yLCB2b2lkKiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyUG9pbnRlciA9IHN0YXRpY19jYXN0PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBl
UmVmKT4qPihjb250ZXh0KTsKKyAgICAgICAgICAgICgqY29tcGxldGlvbkhhbmRsZXJQb2ludGVy
KShudWxscHRyKTsKKyAgICAgICAgICAgIGRlbGV0ZSBjb21wbGV0aW9uSGFuZGxlclBvaW50ZXI7
CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5c0FjY2VwdENvb2tpZXMiKSkgeworICAgICAgICBX
S0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9k
eSk7CisgICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5H
ZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyA6IGtXS0hU
VFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAg
cmV0dXJuIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRPbmx5QWNjZXB0Rmlyc3RQYXJ0eUNvb2tpZXMiKSkgeworICAg
ICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNz
YWdlQm9keSk7CisgICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBXS0Jv
b2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2
ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAgcmV0dXJuIHNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kocG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisg
ICAgY29tcGxldGlvbkhhbmRsZXIobV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkp
LmdldCgpKTsKIH0KIAogV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAxZGIzMDhkMzEzOWU0Y2JjMzQ5ZTU1MTNmMmM5ZGRm
YzdjOGNmZTlkLi5iMDRlNTgyZDgyZDZkYTQyMTY2MGM4YTc1Y2ZiYjY2MWQ0NjkzMWZhIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNzcsMTQgKzM3NywxNCBA
QCBwcml2YXRlOgogCiAgICAgLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQKICAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRS
ZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0
IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZVdpdGhMaXN0ZW5lcihXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmLCBjb25zdCB2b2lk
Kik7CiAgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogICAgIC8v
IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBh
Z2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
UGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwg
V0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VC
b2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZik7CiAgICAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEo
KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnksIGJvb2wgc3luY2hyb25vdXMp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBjY2FmMTAz
MTZjZTdiOTU0M2Q1NzhhNTk1Y2QzMzgyMGE2M2U2OTQ4Li5jNGQ3N2I4NTkzYTBjYzdhNmNhZGQ5
YjI2ZmUxMGMyNmY5NjY3NDBlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgp
CiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTG9nSGlzdG9yeUNs
aWVudENhbGxiYWNrcyhzaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkpOwogCi0gICAg
V0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29r
aWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBrV0tIVFRQ
Q29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIFdLQ29v
a2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFu
YWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwga1dLSFRUUENvb2tp
ZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluLCBudWxscHRyLCBudWxscHRy
KTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xlYXIgb3V0IHZpc2l0ZWQgbGlua3MgaGVy
ZS4KIApAQCAtOTA0LDIyICs5MDQsNiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWx3YXlzQWNjZXB0Q29va2llcyIpKSB7Ci0gICAgICAg
IFdLQm9vbGVhblJlZiBhY2NlcHQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VC
b2R5KTsKLSAgICAgICAgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9IFdLQm9vbGVh
bkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzIDoga1dL
SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAg
ICAvLyBGSVhNRTogVGhpcyB1cGRhdGVzIHRoZSBwb2xpY3kgaW4gV2ViUHJvY2VzcyBhbmQgaW4g
TmV0d29ya1Byb2Nlc3MgYXN5bmNocm9ub3VzbHksIHdoaWNoIG1pZ2h0IGJyZWFrIHNvbWUgdGVz
dHMnIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5jb250ZXh0KCkpLCBwb2xpY3kpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldE9ubHlBY2NlcHRGaXJzdFBhcnR5Q29va2llcyIpKSB7Ci0gICAgICAgIFdLQm9vbGVhblJl
ZiBhY2NlcHQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAg
ICAgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9IFdLQm9vbGVhbkdldFZhbHVlKGFj
Y2VwdCkgPyBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluIDoga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluOwotICAgICAgICAvLyBGSVhNRTogVGhpcyB1cGRhdGVzIHRoZSBwb2xpY3kgaW4gV2Vi
UHJvY2VzcyBhbmQgaW4gTmV0d29ya1Byb2Nlc3MgYXN5bmNocm9ub3VzbHksIHdoaWNoIG1pZ2h0
IGJyZWFrIHNvbWUgdGVzdHMnIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgV0tDb29raWVNYW5hZ2Vy
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBwb2xpY3kpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJTZXRDdXN0b21Vc2VyQWdlbnQiKSkgewogICAgICAgICBXS1N0
cmluZ1JlZiB1c2VyQWdlbnQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkp
OwogICAgICAgICBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdXNlckFnZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372951</attachid>
            <date>2019-06-26 14:24:13 -0700</date>
            <delta_ts>2019-06-26 15:47:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>58830</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiNjkyZTcxZmM0ZGQ2YmIx
OTQ5ZjdiMzNhYTJkYTdhMTc3YTI5YzMuLmQxN2VhOWQyMjI0NDc1NjQ3ZDAzZDYzM2JhYWEwMmJi
OThiMGQ3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDYtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICB0ZXN0UnVubmVy
LnNldEFsd2F5c0FjY2VwdENvb2tpZXMgc2hvdWxkIHdhaXQgZm9yIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHRvIGJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MjMwCisgICAgICAgIDxyZGFyOi8vNTE3NTcxMDc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
d2hpY2ggaXMgbHVja2lseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAgIEl0IGFsc28g
YWRkcyBsaXN0ZW5lci1iYXNlZCBhc3luY2hyb25vdXMgdmVyc2lvbnMgb2YgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIHRoZXNlIG5ldyBhYmlsaXRpZXMgdG8gd2FpdCBmb3IgdGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIGJlIHNldCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoaWxlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBodW5nLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIHJhY2UgY29uZGl0aW9u
IHRoYXQgd2FzIGNhdXNpbmcgc29tZSBmbGFraW5lc3MgaW4gdGVzdHMgdGhhdCB1c2UgdGVzdFJ1
bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU1lc3NhZ2VMaXN0ZW5lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaC4KKyAgICAgICAgKEFQSTo6TWVzc2FnZUxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OnNlbmRSZXBs
eSk6CisgICAgICAgIChBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6TWVzc2FnZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVj
dGVkQnVuZGxlQ2xpZW50LmguCisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCk6
CisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5qZWN0
ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJv
bm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE5LTA2LTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gRGlzcGF0Y2ggc3ludGhldGljIG1vdXNlIGV2ZW50
IGFzeW5jaHJvbm91c2x5IGluIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVu
dENoYW5nZU9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYmU4
Yzc4YmYzMjMxMmU2MDc1OWQyOTRjNjMxYTRhNjNkZjUzMDQ0Yy4uNDAyOWRmOTBlN2NlMjI4ZGMx
Mzk1NzIxMjRhNTk2YzI4NGU4MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aApAQCAtMTMzLDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yLAogICAgICAg
ICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBNZWRpYUNhY2hlTWFuYWdlciwKKyAg
ICAgICAgTWVzc2FnZUxpc3RlbmVyLAogICAgICAgICBOYXZpZ2F0aW9uLAogICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggMTE2NGMxNTgyYzQxMmE3YjU1MGE1YjFjNTZiYjFkZjU0ZmZlN2Fh
OS4uMDM5MTRiMjFkMmY4Mzc4NDg3NzAxOWE2ZGNlNWY0OGJhZjBmOTgwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0luc3BlY3RvciogV0tJbnNwZWN0b3JSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uTWV0YWRhdGEqIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lc3NhZ2VMaXN0ZW5lciogV0tNZXNz
YWdlTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25B
Y3Rpb24qIFdLTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLTmF2aWdhdGlvbkRhdGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb24qIFdLTmF2aWdhdGlvblJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDJkNzdlYTA5YjUwY2UyMzg5N2JjZjJiZDViYTFjMjFlNTU2Yjc3MGQuLjdkMjVlZDRkMGJkODY0
MDUyZmQ0N2QyNTNhZmM5YWEyNmIzNWQ0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQ0LDYgKzM0NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKK1VJUHJvY2Vz
cy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNw
bGF5LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggMjM1MGM2MWZl
MTMyMTk4NzllM2QxOTljZDg5MGVlZDhhYTM3YzUzNS4uMmJlYmMxMmY2NjE4YTc4NDM5YTMzMjZk
MmE1MmIwMzI1ZWZkMDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmpl
Y3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFJlZlB0cjxBUEk6Ok9iamVjdD4obnVsbHB0cikpOyB9CiAgICAgdmlydHVh
bCBSZWZQdHI8QVBJOjpPYmplY3Q+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJikgeyByZXR1cm4gbnVsbHB0cjsgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5l
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU4OGE1NzY2YzcxYzg0YTE4OGEyNGJlNTNkYWQ1ZjY2YWIyMmNiZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTWVzc2FnZUxpc3Rl
bmVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisK
K25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBNZXNzYWdlTGlzdGVuZXIgOiBwdWJsaWMgT2JqZWN0
SW1wbDxPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0ZW5lcj4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1lc3NhZ2VMaXN0ZW5lcik7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZXNzYWdl
TGlzdGVuZXI+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVj
dD4pPiYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2Fn
ZUxpc3RlbmVyKFdURk1vdmUocmVwbHkpKSk7CisgICAgfQorCisgICAgdm9pZCBzZW5kUmVwbHko
UmVmUHRyPEFQSTo6T2JqZWN0PiYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgbV9yZXBseShXVEZN
b3ZlKHJlcGx5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1lc3NhZ2VMaXN0ZW5lcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIHJlcGx5KQorICAgICAg
ICA6IG1fcmVwbHkoV1RGTW92ZShyZXBseSkpIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4gbV9yZXBseTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBjODY2
MDNkZGM5NGZkZGU3OGZmNWU3ZThjM2NmNzNkNWNkOTNjNjA5Li41MTczNzU1OTQ4ZGQ0MTVlMjdh
NWY3M2VhNDcyZmFjODA5NWJlYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBFeHBlcmltZW50YWxGZWF0dXJlOwog
Y2xhc3MgRnJhbWVIYW5kbGU7CiBjbGFzcyBGcmFtZUluZm87CiBjbGFzcyBIaXRUZXN0UmVzdWx0
OworY2xhc3MgTWVzc2FnZUxpc3RlbmVyOwogY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIE5hdmln
YXRpb25BY3Rpb247CiBjbGFzcyBOYXZpZ2F0aW9uRGF0YTsKQEAgLTEzNyw2ICsxMzgsNyBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tJY29uRGF0YWJhc2VSZWYsIFdlYkljb25EYXRhYmFzZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcikKIFdLX0FERF9BUElfTUFQUElORyhXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhUmVmLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSkKK1dLX0FERF9BUElfTUFQUElORyhXS01l
c3NhZ2VMaXN0ZW5lclJlZiwgQVBJOjpNZXNzYWdlTGlzdGVuZXIpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERf
QVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgQVBJOjpOYXZpZ2F0aW9uRGF0YSkKIFdL
X0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25SZWYsIEFQSTo6TmF2aWdhdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGQzNDU2YWE2ODAyNzJiYzQxMDcyNmRhZWYzZTRiOTA5
YjhjODE4MmQuLmIzMzI4ZThjMGI3YTIwZDExMmU5NDc1MDllNmI3ZTJkYzhiNzVmOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMjksOSArMjksMTAgQEAKICNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CiAKIC8vIEluamVjdGVkIEJ1bmRsZSBDbGllbnQKLXR5cGVkZWYgdm9pZCAo
KldLQ29udGV4dERpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdL
Q29udGV4dFJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayko
V0tDb250ZXh0UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Cit0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBl
ZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBXS1R5cGVSZWYgKCpXS0NvbnRleHRHZXRJ
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjaykoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250
ZXh0RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0
ZW5lckNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudEJhc2UgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTU3LDQg
KzU4LDE4IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEg
ewogICAgIFdLQ29udGV4dEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrICAgICAgICAgICAgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
OwogfSBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxOwogCit0eXBlZGVmIHN0cnVjdCBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYyIHsKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisK
KyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGVDYWxsYmFjayAgICAgICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZTsKKyAgICBXS0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tDb250ZXh0
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2sgICAgICAgICAg
ICBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CisKKyAgICAvLyBWZXJz
aW9uIDIuCisgICAgV0tDb250ZXh0RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNrIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXI7Cit9IFdLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50VjI7CisKICNlbmRpZiAvLyBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNw
cAppbmRleCBjYjdmMGJkMWI3MWZiMDk1YWE0YjVmYjMzODAzYTUzMmE0YzU2Zjc3Li4wNjM2ZWE2
YzJjNzdlM2ZkNGQwYjRkYzZmMTJkMDhkZWI4Njk1MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKQEAgLTYyLDkgKzYyLDEyIEBA
IHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdL
Q29va2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXJSZWYpLT5k
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF0ZSksIFtdKENhbGxiYWNrQmFzZTo6
RXJyb3Ipe30pOwogfQogCi12b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kpCit2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3ksIHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3lGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29va2llTWFu
YWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKENhbGxiYWNr
QmFzZTo6RXJyb3Ipe30pOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBD
b29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW2NvbnRleHQsIGNhbGxiYWNrXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVy
cm9yOjpjcmVhdGUoKS5wdHIoKSkgOiBudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAog
dm9pZCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFu
YWdlclJlZiBjb29raWVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCmluZGV4IGM2NTE0ZTNmYTA3YjNl
MjM4YjA0YzRiOWViMDA5Y2U4ZWUxYmY5M2QuLjczMzU0ZDJjYmE0ZWRmOTdiOWE1NzkyMGNkNDVi
Yzc3NDI1MmJhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29v
a2llTWFuYWdlci5oCkBAIC02OCw3ICs2OCw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29va2llTWFu
YWdlckRlbGV0ZUFsbENvb2tpZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpCiAv
LyBUaGUgdGltZSBoZXJlIGlzIHJlbGF0aXZlIHRvIHRoZSBVbml4IGVwb2NoLgogV0tfRVhQT1JU
IHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdL
Q29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBkb3VibGUpOwogCi1XS19FWFBPUlQgdm9p
ZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdl
clJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KTsKK3R5
cGVkZWYgdm9pZCAoKldLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5j
dGlvbikoV0tFcnJvclJlZiwgdm9pZCopOworV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2Vy
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdl
ciwgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdm9pZCogY29udGV4dCwgV0tDb29r
aWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5
cGVkZWYgdm9pZCAoKldLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5j
dGlvbikoV0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19F
WFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWMwMTBjNDdjMTk5NWRkYjYwMTVjNjIyNWQ4YzY0MmEwZDM0MTM5MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldLTWVzc2FnZUxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJBUElNZXNzYWdl
TGlzdGVuZXIuaCIKKworV0tUeXBlSUQgV0tNZXNzYWdlTGlzdGVuZXJHZXRUeXBlSUQoKQorewor
ICAgIHJldHVybiB0b0FQSShBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6QVBJVHlwZSk7Cit9CisKK3Zv
aWQgV0tNZXNzYWdlTGlzdGVuZXJTZW5kUmVwbHkoV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVu
ZXJSZWYsIFdLVHlwZVJlZiB2YWx1ZSkKK3sKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5zZW5k
UmVwbHkodG9JbXBsKHZhbHVlKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGU4YTJlZjgyMTZiZGE1MGZi
MGVlYTQ0YzM1ZTcwNGIzZTIyZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS01lc3NhZ2VMaXN0ZW5lcl9oCisjZGVmaW5lIFdLTWVzc2FnZUxp
c3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tNZXNzYWdl
TGlzdGVuZXJHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tNZXNzYWdlTGlzdGVuZXJT
ZW5kUmVwbHkoV0tNZXNzYWdlTGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiByZXBseSk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS01lc3NhZ2VM
aXN0ZW5lcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBiMjJjM2ViODY2MmY1ZTc2YTAz
ODYwZGU5YjI1OGE1MzhiMWIwYzkzLi5lZGJiZjU4Y2NjNjU5NzQyYjliMWI0NGI1MzY1MjU3YTMw
MjlkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZURpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2sp
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIFdLVHlwZVJlZiAoKldLUGFnZUdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlV2l0aExpc3RlbmVyQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJl
ZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgc3RydWN0IFdL
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpA
QCAtNDUsNCArNDYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnRWMCB7CiAgICAgV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlOwogfSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwOwogCit0eXBlZGVmIHN0
cnVjdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxIHsKKyAgICBXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisK
KyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlRGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGVDYWxsYmFjayAgICAgICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZTsKKyAgICBXS1BhZ2VEaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlQ2FsbGJhY2sgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdlRGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNr
IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXI7Cit9IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjE7CisKICNlbmRpZiAvLyBXS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCBmNGNhNjJjY2Fi
NmMzZGNlNTIyMjM0YTNmZWE1NDFlYjJlY2RkZGU1Li42ZGIxNDUyMmYwNTcyYjlhNzg1ZGUxN2E2
OWE5YWU5MTBkYjkxMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCIKIAorI2luY2x1ZGUgIkFQSU1lc3NhZ2VMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC00NSwxNCArNDYsMTggQEAgdm9pZCBXZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBy
b2MKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQ
SSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdl
Qm9keSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiBy
ZXR1cm5EYXRhKQordm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2Fn
ZUJvZHksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFt
X2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlICYm
ICFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
V2l0aExpc3RlbmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CisKKyAgICBpZiAobV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSkgeworICAgICAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7
CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwg
dG9BUEkobWVzc2FnZUJvZHkpLCAmcmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChy
ZXR1cm5EYXRhUmVmKSkpOworICAgIH0KIAotICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhUmVmID0g
bnVsbHB0cjsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwo
KSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgcmV0dXJuRGF0YSA9IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVm
KSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZVdpdGhMaXN0ZW5lcih0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFt
ZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIHRvQVBJKEFQSTo6TWVzc2FnZUxpc3RlbmVy
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIH0KIAogUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGFiZmQ2YTRi
Nzg2ZmY1ZjI0ZmI5Y2RkNWNhOTYxN2IxOTUwNzQwYTQuLjA5NDhiYzU5Nzc0MWU1NzhiOTNkY2Yz
ODQwZWIzNzAyMmI2OWE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRU
cmFpdHM8V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjAsIFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50VjE+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYwLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dFYxLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYyPiBWZXJzaW9uczsKIH07CiB9CiAK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqKTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vz
c1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBy
b2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYs
IEFQSTo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+
KT4mJikgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViUHJvY2Vzc1Bvb2wmKSBvdmVycmlkZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCmluZGV4IDM1M2U3ZmI0MjM3YWM5YTY0NTZiNDgwYjJlYzAwYzlhNThmYTdj
NjIuLjQ0ZGU4MzY0YjUyODQzMTIwMjJkZDFjMDNlY2E5ODhlZmY2MDI4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIgogCisjaW5jbHVkZSAiQVBJTWVzc2FnZUxpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQxLDE0ICs0MiwxOSBAQCB2
b2lkIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV2ViUGFnZVBybwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0
b0FQSShtZXNzYWdlQm9keSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQg
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiBy
ZXR1cm5EYXRhKQordm9pZCBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlCisgICAgICAgICYmICFt
X2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0
aExpc3RlbmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisK
KyAgICBpZiAobV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSkgeworICAgICAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51bGxwdHI7Cisg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3Nh
Z2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJl
ZikpKTsKKyAgICB9CiAKLSAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IDA7Ci0gICAgbV9j
bGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0b0FQ
SShwYWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCAm
cmV0dXJuRGF0YVJlZiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm5EYXRh
ID0gYWRvcHRSZWYodG9JbXBsKHJldHVybkRhdGFSZWYpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIHRv
QVBJKEFQSTo6TWVzc2FnZUxpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDMwYzdmMzU0YzAwMWI0ZWQ3MjQ0ODUwMTZhM2FlN2M0
Y2Y3NDM0N2YuLjY1Mjk4MmE4MTJhOWVmYmVmNTIxYTZhOTg5OWZhNGJlZTVmYWYzNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaAotI2RlZmlu
ZSBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKQEAgLTM0LDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRy
YWl0czxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMD4gVmVyc2lvbnM7CisgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAsIFdLUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50VjE+IFZlcnNpb25zOwogfTsKIH0KIApAQCAtNDUsOSArNDQsNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
ZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWM3NGJkNGM3YWM0YTEzMDU0
MDE2MDJkM2IyNzY0MzBhZGI4ODhiOC4uMjYwN2IzMDAzNGVjOTdiZTc2YTQyYjBkNWEzMjg2ZjRm
MzE5NjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03
MDQsOCArNzA0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRh
dGE7Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJu
RGF0YSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoVXNlckRhdGEobV9wcm9jZXNzLT50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7CisgICAgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudC0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSh0aGlzLCBtZXNzYWdlTmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KG1lc3NhZ2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHByb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJlZigpXSAoUmVm
UHRyPEFQSTo6T2JqZWN0PiYmIHJldHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihVc2VyRGF0YShwcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVu
Y2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzVlODVmMGUzNTFjNzIzODI0
ZjZmYTEzNmU3YmVmZDU3NDYyMjlmYS4uMmM1NDBmN2MwNTc1NmZmOGRkOTQ2OGMzNDM5ZmJkMmQx
YmI5YTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ5Nyw3
ICs0OTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TG9hZGVyQ2xpZW50PiYmKTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+JiYpOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7Ci0gICAg
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KiBpbmplY3RlZEJ1bmRsZUNsaWVudCgpIHsgcmV0
dXJuIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZ2V0KCk7IH0KIAogICAgIEFQSTo6VUlDbGllbnQm
IHVpQ2xpZW50KCkgeyByZXR1cm4gKm1fdWlDbGllbnQ7IH0KICAgICB2b2lkIHNldFVJQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ODY0YTE4M2Y3ZDczOGRlZDU0YTkwZDI4MmE1
MDMzN2ZhNDI1NTM1Li45NDYyNzk5ZjJhOGJkMWE0ZDc2ZjJkMzlmYzgyMzk0OWQxMDg1Nzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xOTAyLDkg
KzE5MDIsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdAogICAgIGlmICghd2ViUHJvY2Vzc1By
b3h5KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gcmV0dXJuRGF0YTsKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5k
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKCp0aGlzLCBtZXNz
YWdlTmFtZSwgd2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3Nh
Z2VCb2R5Lm9iamVjdCgpKS5nZXQoKSwgcmV0dXJuRGF0YSk7Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIoVXNlckRhdGEod2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKSk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSgqdGhpcywgbWVzc2FnZU5hbWUs
IHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5v
YmplY3QoKSkuZ2V0KCksIFt3ZWJQcm9jZXNzUHJveHkgPSBtYWtlUmVmKCp3ZWJQcm9jZXNzUHJv
eHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVm
UHRyPEFQSTo6T2JqZWN0PiYmIHJldHVybkRhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihVc2VyRGF0YSh3ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXMocmV0dXJuRGF0YS5nZXQoKSkpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZGlkR2V0U3RhdGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0Rh
dGEsIHVpbnQ2NF90IHJlcXVlc3RJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFiNTIyNjNjNDZkYjVlZmEwM2VlMjU4Mjc5MWNkOTY1
NDhmOTc5NWYuLjE2MDQzYzVmNTk2YTI3OWE5M2EzOWRmMDhlZjAyNDUyMzcyNGM0MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEw
Miw2ICsxMTAyLDggQEAKIAkJNUNBMjZEODEyMTdBQkQ1QjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dz
aW5nV2FybmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNBMjZEODAyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICov
OyB9OwogCQk1Q0EyNkQ4MzIxN0FEMUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5n
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMjZE
N0YyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLzsgfTsKIAkJ
NUNBOTg1NEEyMTBCRUI2NDAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTk4NTQ5MjEwQkVCNUEw
MDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi87IH07CisJCTVDQUJEQzg2MjJDNDBG
REUwMDFFREU4RSAvKiBXS01lc3NhZ2VMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVz
c2FnZUxpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNUNBQkRDODcyMkM0MEZFRDAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBQkRDODMy
MkM0MEZBNzAwMUVERThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oICovOyB9OwogCQk1Q0FEREUw
NTIxNTA0NkJEMDA2N0QzMDkgLyogV0tXZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzc0MzAwRTIxNTAwNDkyMDA0QkZBMTcgLyogV0tX
ZWJQcm9jZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUNBRkRFNDUyMTMwODQ2MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBRkRFNDIyMTMwODQzNTAw
QjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0
b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi87
IH07CkBAIC0zNjA0LDYgKzM2MDYsOSBAQAogCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyog
QVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbTsgcGF0aCA9IFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5p
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VC
NkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0FCREM4MzIyQzQwRkE3MDAxRURFOEUgLyogQVBJTWVzc2Fn
ZUxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU1lc3NhZ2VM
aXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0FCREM4NDIyQzQwRkND
MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tNZXNzYWdlTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0FCREM4NTIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNZXNzYWdlTGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRERFMEQyMTUxQUEwMTAwNjdEMzA5IC8q
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dL
SW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0FGREU0MzIxMzA4NDM2MDBCMUY3
RTEgLyogX1dLSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gX1dLSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg0
Myw2ICs3ODQ4LDcgQEAKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJ
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAy
MzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggKi8sCisJCQkJNUNBQkRDODMyMkM0MEZBNzAwMUVE
RThFIC8qIEFQSU1lc3NhZ2VMaXN0ZW5lci5oICovLAogCQkJCTdDRDNBNDgwMUE1RDAyRkEwMDk2
MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQk3Q0QzQTQ4MTFBNUQwMkZBMDA5NjIz
QjggLyogQVBJTmF2aWdhdGlvbi5oICovLAogCQkJCTJERjlFRUVBMUE3ODM2RUUwMEI2Q0ZCRSAv
KiBBUElOYXZpZ2F0aW9uQWN0aW9uLmggKi8sCkBAIC03OTQ2LDYgKzc5NTIsOCBAQAogCQkJCUM5
OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICov
LAogCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmNwcCAqLywKIAkJCQlDOUNENDM5QTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25N
ZXRhZGF0YS5oICovLAorCQkJCTVDQUJEQzg0MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VM
aXN0ZW5lci5jcHAgKi8sCisJCQkJNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2Fn
ZUxpc3RlbmVyLmggKi8sCiAJCQkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rp
c3BsYXkuY3BwICovLAogCQkJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmggKi8sCiAJCQkJNDExQThEREEyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2
aWNlLmNwcCAqLywKQEAgLTkyNTAsNiArOTI1OCw3IEBACiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAw
N0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Q0U0RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQUJEQzg3MjJDNDBGRUQwMDFFREU4RSAv
KiBBUElNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDNBNDgzMUE1RDAy
RkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVF
QzFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkREOUVCMkQxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMTAwOTksNiArMTAxMDgsNyBAQAogCQkJCUM5OEM0OEFBMUI2RkQ1
QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzlDRDQzOUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJ
dGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0FCREM4NjIyQzQw
RkRFMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMx
MUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tNb2NrTWVkaWFEZXZpY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDA3NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMDllZTM3MDM5YTYyMDA5ODczZTEwNjQxZmQ2YmM1NjY3ZmIyNjM3NC4u
OWE0YzdmN2Q4ZjM0ZjY0ZjFmZDQ1YmJlZGNiYjQ1MmJkY2E1NTQ1NSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5
LTA2LTI2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzIHNob3VsZCB3YWl0IGZvciBj
b29raWUgYWNjZXB0IHBvbGljeSB0byBiZSBzZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTIzMAorICAgICAgICA8cmRhcjovLzUxNzU3MTA3Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpkaWRHZXRUZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpkaWRHZXRVc2VySFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlV2l0aExpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wNi0y
NSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhIG5ldyBTUEkgdG8gaW5mb3JtIGNsaWVudHMgYWJvdXQgQXBwU1NPCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDQ5NWQw
ZWQzY2Q3ZjFiNWE4MzdkOGQyOTg4ZWVmYmVjNWM0YTM4MjUuLjg0MGM2YzVhMDYyMThjZDk4M2Q2
MThiYzdjNTJkMzllOGY0ZjRhNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lk
IGRpZEdldFRlc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3ksIFdLCiAgICAgRVhQRUNUX0VRKHRlc3RQb2xpY3ksIHBvbGljeSk7CiAKICAgICBX
S0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFn
ZXIod2tDb250ZXh0LmdldCgpKTsKLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHVzZXJQb2xpY3kpOworICAgIFdLQ29va2llTWFuYWdl
clNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciwgdXNlclBvbGljeSwgbnVs
bHB0ciwgbnVsbHB0cik7CiAKICAgICB0ZXN0RG9uZSA9IHRydWU7CiB9CkBAIC02MCw3ICs2MCw3
IEBAIHN0YXRpYyB2b2lkIGRpZEdldFVzZXJIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLSFRUUENv
b2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLCiAgICAgLy8gTWFrZSBzdXJlIHRvIGNob29zZSBh
IHBvbGljeSBkaWZmZXJlbnQgZnJvbSB0aGUgcG9saWN5IHRoZSB1c2VyIGN1cnJlbnRseSBoYXMg
c2V0LgogICAgIHRlc3RQb2xpY3kgPSAodXNlclBvbGljeSArIDEpICUgMzsKICAgICBXS0Nvb2tp
ZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIod2tD
b250ZXh0LmdldCgpKTsKLSAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KGNvb2tpZU1hbmFnZXIsIHRlc3RQb2xpY3kpOworICAgIFdLQ29va2llTWFuYWdlclNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciwgdGVzdFBvbGljeSwgbnVsbHB0ciwg
bnVsbHB0cik7CiAgICAgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVNYW5hZ2VyLCByZWludGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpLCBkaWRHZXRU
ZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggY2Q4ZWYxODM2YTFmNGVkMzk3ODVkYjcyNjVhMmUzNTY0
NTM1ODhlMS4uYmZhYzE5MjMzNGMzNjJlMTc3NGE3YmVkZjc3MjdjNjNjMTY2MjgwYiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ljb25EYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdC9XS01lc3NhZ2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS01v
Y2tEaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTW9ja01lZGlhRGV2aWNlLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oPgpAQCAtNzMsNiArNzQsNyBAQAog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQXV0
b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgpAQCAtNTM4
LDExICs1NDAsMTIgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENv
bnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgcGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpOwogICAgIH0KIAotICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50VjEgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAor
ICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjIgaW5qZWN0ZWRCdW5kbGVDbGllbnQg
PSB7CisgICAgICAgIHsgMiwgdGhpcyB9LAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSwKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSwKKyAgICAgICAgbnVsbHB0ciwKICAgICAgICAgZ2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhLAorICAgICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyLAogICAgIH07CiAgICAgV0tDb250
ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5k
bGVDbGllbnQuYmFzZSk7CiAKQEAgLTcxNywxMCArNzIwLDExIEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
ICAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0KCksICZkb3dubG9hZENsaWVu
dC5iYXNlKTsKICAgICAKICAgICAvLyB0aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBh
Z2U/Ci0gICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVu
dCA9IHsKLSAgICAgICAgeyAwLCB0aGlzIH0sCisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAg
ICAgIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKLSAgICAgICAgZGlk
UmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUKKyAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIsCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmaW5qZWN0ZWRCdW5kbGVDbGll
bnQuYmFzZSk7CiAKQEAgLTE3MjksOSArMTczMyw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
CiAgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1l
LCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiog
cmV0dXJuRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXIoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewotICAgICpyZXR1cm5EYXRhID0gc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCBsaXN0ZW5lcik7CiB9CiAKIFdLVHlw
ZVJlZiBUZXN0Q29udHJvbGxlcjo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE3NDYsOSArMTc1
MCw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTCiAgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBl
UmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcihXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVu
ZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgKnJldHVybkRh
dGEgPSBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSht
ZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHksIGxpc3RlbmVyKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NE
aWRDcmFzaChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKQEAg
LTE4ODUsMTEgKzE4ODksMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdl
TmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCi1XS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250
cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2Fn
ZUxpc3RlbmVyUmVmIGxpc3RlbmVyKQogeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
bGlzdGVuZXIgPSByZXRhaW5XSyhsaXN0ZW5lcildIChXS1R5cGVSZWYgcmVwbHkpIHsKKyAgICAg
ICAgV0tNZXNzYWdlTGlzdGVuZXJTZW5kUmVwbHkobGlzdGVuZXIuZ2V0KCksIHJlcGx5KTsKKyAg
ICB9OworCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJFdmVudFNlbmRlciIpKSB7CiAgICAgICAgIGlmIChtX3N0YXRlICE9IFJ1bm5pbmdUZXN0KQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7CiAKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VC
b2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLRGljdGlvbmFyeVJl
ZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1l
c3NhZ2VCb2R5KTsKQEAgLTE5MDAsNyArMTkwOCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
CiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1l
LCAiS2V5RG93biIpKSB7CiAgICAgICAgICAgICBkaWRSZWNlaXZlS2V5RG93bk1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0cnVlKTsKIAotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRG93biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZVVwIikpIHsKQEAgLTE5MTUsNyArMTkyMyw3IEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5tb3VzZURvd24oYnV0dG9uLCBtb2RpZmllcnMpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VVcChidXR0b24sIG1vZGlmaWVy
cyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VNb3ZlVG8iKSkgewpAQCAtMTky
NywyOCArMTkzNSwyOCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogCiAgICAgICAgICAgICAv
LyBGb3J3YXJkIHRvIFdlYlByb2Nlc3MKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+
bW91c2VNb3ZlVG8oeCwgeSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNz
YWdlTmFtZSwgIk1vdXNlRm9yY2VDbGljayIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVy
UHJveHktPm1vdXNlRm9yY2VDbGljaygpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlN0
YXJ0QW5kQ2FuY2VsTW91c2VGb3JjZUNsaWNrIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5k
ZXJQcm94eS0+c3RhcnRBbmRDYW5jZWxNb3VzZUZvcmNlQ2xpY2soKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJNb3VzZUZvcmNlRG93biIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2Vu
ZGVyUHJveHktPm1vdXNlRm9yY2VEb3duKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAi
TW91c2VGb3JjZVVwIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VG
b3JjZVVwKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VGb3JjZUNoYW5nZWQi
KSkgewpAQCAtMTk1Niw3ICsxOTY0LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAg
ICAgICAgIGRvdWJsZSBmb3JjZSA9IFdLRG91YmxlR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tEb3Vi
bGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBm
b3JjZUtleS5nZXQoKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3Vz
ZUZvcmNlQ2hhbmdlZChmb3JjZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIApAQCAtMTk3Miw3ICsxOTgwLDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKIAogICAgICAgICAgICAgLy8gRm9yd2FyZCB0byBXZWJQcm9jZXNzCiAgICAgICAgICAg
ICBtX2V2ZW50U2VuZGVyUHJveHktPmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KHgsIHksIHBhZ2Vk
KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJMZWFwRm9yd2FyZCIpKSB7CkBAIC0xOTgw
LDcgKzE5ODgsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgdW5zaWdu
ZWQgdGltZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19j
YXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgdGltZUtleS5nZXQoKSkpKSk7CiAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQ
cm94eS0+bGVhcEZvcndhcmQodGltZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTE5OTIsNyArMjAwMCw3IEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCCiAgICAgICAgICAgICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4oV0tVSW50NjRH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBt
X2V2ZW50U2VuZGVyUHJveHktPmFkZFRvdWNoUG9pbnQoeCwgeSk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiVXBkYXRlVG91Y2hQb2ludCIpKSB7CkBAIC0yMDA2LDcgKzIwMTQsNyBAQCBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxp
bnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpKTsKIAog
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT51cGRhdGVUb3VjaFBvaW50KGluZGV4LCB4
LCB5KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTZXRUb3VjaE1vZGlmaWVyIikpIHsK
QEAgLTIwMTcsNyArMjAyNSw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAg
ICBib29sIGVuYWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KFdLVUludDY0R2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlE
aWN0aW9uYXJ5LCBlbmFibGVLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2Vu
ZGVyUHJveHktPnNldFRvdWNoTW9kaWZpZXIobW9kaWZpZXIsIGVuYWJsZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hQb2ludFJhZGl1cyIpKSB7CkBAIC0yMDI4LDUxICsy
MDM2LDczIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgICAgICBpbnQgeSA9IHN0
YXRpY19jYXN0PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0
KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnNldFRvdWNoUG9pbnRS
YWRpdXMoeCwgeSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hTdGFydCIpKSB7
CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoU3RhcnQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcoc3ViTWVzc2FnZU5hbWUsICJUb3VjaE1vdmUiKSkgewogICAgICAgICAgICAgbV9ldmVudFNl
bmRlclByb3h5LT50b3VjaE1vdmUoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJUb3Vj
aEVuZCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPnRvdWNoRW5kKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hDYW5jZWwiKSkgewogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT50b3VjaENhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIkNsZWFyVG91Y2hQb2ludHMiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5jbGVhclRvdWNoUG9pbnRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiUmVs
ZWFzZVRvdWNoUG9pbnQiKSkgewogICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGluZGV4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSW5kZXgi
KSk7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0
VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpbmRleEtleS5nZXQoKSkpKSk7CiAgICAgICAgICAgICBt
X2V2ZW50U2VuZGVyUHJveHktPnJlbGVhc2VUb3VjaFBvaW50KGluZGV4KTsKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
c3ViTWVzc2FnZU5hbWUsICJDYW5jZWxUb3VjaFBvaW50IikpIHsKICAgICAgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBpbmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkluZGV4IikpOwogICAgICAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nh
c3Q8aW50PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkp
KSkpOwogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5jYW5jZWxUb3VjaFBvaW50KGlu
ZGV4KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJldHVybiBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBt
ZXNzYWdlQm9keSk7CisKKyAgICBhdXRvIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBbJl0g
KFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V0tUeXBlUmVmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBhdXRvIGNvbnRleHQg
PSBuZXcgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXS1R5cGVSZWYpPihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcih0aGlzLT5jb250ZXh0KCkpLCBwb2xpY3ks
IGNvbnRleHQsIFtdIChXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyUG9pbnRlciA9IHN0YXRpY19jYXN0PENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4qPihjb250ZXh0KTsKKyAgICAgICAgICAgICgqY29t
cGxldGlvbkhhbmRsZXJQb2ludGVyKShudWxscHRyKTsKKyAgICAgICAgICAgIGRlbGV0ZSBjb21w
bGV0aW9uSGFuZGxlclBvaW50ZXI7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5c0FjY2VwdENv
b2tpZXMiKSkgeworICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeUFsd2F5cyA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjsKKyAgICAgICAgcmV0dXJuIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRPbmx5QWNjZXB0Rmlyc3RQ
YXJ0eUNvb2tpZXMiKSkgeworICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nh
c3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA6IGtXS0hUVFBD
b29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICAgICAgcmV0
dXJuIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIobV9jdXJyZW50SW52b2Nh
dGlvbi0+ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNz
YWdlTmFtZSwgbWVzc2FnZUJvZHkpLmdldCgpKTsKIH0KIAogV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0Q29udHJvbGxlcjo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAxZGIzMDhkMzEz
OWU0Y2JjMzQ5ZTU1MTNmMmM5ZGRmYzdjOGNmZTlkLi5iMDRlNTgyZDgyZDZkYTQyMTY2MGM4YTc1
Y2ZiYjY2MWQ0NjkzMWZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CkBAIC0zNzcsMTQgKzM3NywxNCBAQCBwcml2YXRlOgogCiAgICAgLy8gV0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1
cm5EYXRhLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcihXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxp
c3RlbmVyUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIAogICAgIC8vIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qg
dm9pZCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiwgY29uc3Qgdm9p
ZCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0
ZW5lclJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBnZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGEoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUtleURvd25NZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnksIGJvb2wgc3luY2hyb25vdXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCBjY2FmMTAzMTZjZTdiOTU0M2Q1NzhhNTk1Y2QzMzgyMGE2M2U2OTQ4Li5j
NGQ3N2I4NTkzYTBjYzdhNmNhZGQ5YjI2ZmUxMGMyNmY5NjY3NDBlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVGVz
dEludm9jYXRpb246Omludm9rZSgpCiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
c2V0U2hvdWxkTG9nSGlzdG9yeUNsaWVudENhbGxiYWNrcyhzaG91bGRMb2dIaXN0b3J5Q2xpZW50
Q2FsbGJhY2tzKCkpOwogCi0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5jb250ZXh0KCkpLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1l
bnREb21haW4pOworICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
V0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29u
dGV4dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xlYXIg
b3V0IHZpc2l0ZWQgbGlua3MgaGVyZS4KIApAQCAtOTA0LDIyICs5MDQsNiBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWx3YXlzQWNjZXB0
Q29va2llcyIpKSB7Ci0gICAgICAgIFdLQm9vbGVhblJlZiBhY2NlcHQgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgV0tIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSA9IFdLQm9vbGVhbkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQQ29va2llQWNj
ZXB0UG9saWN5QWx3YXlzIDoga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluOwotICAgICAgICAvLyBGSVhNRTogVGhpcyB1cGRhdGVzIHRoZSBwb2xpY3kg
aW4gV2ViUHJvY2VzcyBhbmQgaW4gTmV0d29ya1Byb2Nlc3MgYXN5bmNocm9ub3VzbHksIHdoaWNo
IG1pZ2h0IGJyZWFrIHNvbWUgdGVzdHMnIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgV0tDb29raWVN
YW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRHZXRDb29raWVNYW5hZ2Vy
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBwb2xpY3kpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldE9ubHlBY2NlcHRGaXJzdFBhcnR5Q29va2llcyIpKSB7
Ci0gICAgICAgIFdLQm9vbGVhblJlZiBhY2NlcHQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9
IFdLQm9vbGVhbkdldFZhbHVlKGFjY2VwdCkgPyBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5RXhj
bHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIDoga1dLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwotICAgICAgICAvLyBGSVhNRTogVGhpcyB1cGRh
dGVzIHRoZSBwb2xpY3kgaW4gV2ViUHJvY2VzcyBhbmQgaW4gTmV0d29ya1Byb2Nlc3MgYXN5bmNo
cm9ub3VzbHksIHdoaWNoIG1pZ2h0IGJyZWFrIHNvbWUgdGVzdHMnIGV4cGVjdGF0aW9ucy4KLSAg
ICAgICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0NvbnRleHRH
ZXRDb29raWVNYW5hZ2VyKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpLCBw
b2xpY3kpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRDdXN0b21Vc2VyQWdl
bnQiKSkgewogICAgICAgICBXS1N0cmluZ1JlZiB1c2VyQWdlbnQgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4obWVzc2FnZUJvZHkpOwogICAgICAgICBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdXNlckFn
ZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372958</attachid>
            <date>2019-06-26 15:47:34 -0700</date>
            <delta_ts>2019-06-26 16:30:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199230-20190626154733.patch</filename>
            <type>text/plain</type>
            <size>58999</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiNjkyZTcxZmM0ZGQ2YmIx
OTQ5ZjdiMzNhYTJkYTdhMTc3YTI5YzMuLmQxN2VhOWQyMjI0NDc1NjQ3ZDAzZDYzM2JhYWEwMmJi
OThiMGQ3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDYtMjYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICB0ZXN0UnVubmVy
LnNldEFsd2F5c0FjY2VwdENvb2tpZXMgc2hvdWxkIHdhaXQgZm9yIGNvb2tpZSBhY2NlcHQgcG9s
aWN5IHRvIGJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5MjMwCisgICAgICAgIDxyZGFyOi8vNTE3NTcxMDc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlv
bmFsIGNhbGxiYWNrIHRvIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
d2hpY2ggaXMgbHVja2lseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAgIEl0IGFsc28g
YWRkcyBsaXN0ZW5lci1iYXNlZCBhc3luY2hyb25vdXMgdmVyc2lvbnMgb2YgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIHRoZXNlIG5ldyBhYmlsaXRpZXMgdG8gd2FpdCBmb3IgdGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIGJlIHNldCBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoaWxlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBodW5nLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIHJhY2UgY29uZGl0aW9u
IHRoYXQgd2FzIGNhdXNpbmcgc29tZSBmbGFraW5lc3MgaW4gdGVzdHMgdGhhdCB1c2UgdGVzdFJ1
bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU1lc3NhZ2VMaXN0ZW5lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaC4KKyAgICAgICAgKEFQSTo6TWVzc2FnZUxp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OnNlbmRSZXBs
eSk6CisgICAgICAgIChBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6TWVzc2FnZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tD
b29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3Rl
bmVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVj
dGVkQnVuZGxlQ2xpZW50LmguCisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lckdldFR5cGVJRCk6
CisgICAgICAgIChXS01lc3NhZ2VMaXN0ZW5lclNlbmRSZXBseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5qZWN0
ZWRCdW5kbGVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJv
bm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE5LTA2LTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gRGlzcGF0Y2ggc3ludGhldGljIG1vdXNlIGV2ZW50
IGFzeW5jaHJvbm91c2x5IGluIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0NsaWNrRm9yQ29udGVu
dENoYW5nZU9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYmU4
Yzc4YmYzMjMxMmU2MDc1OWQyOTRjNjMxYTRhNjNkZjUzMDQ0Yy4uNDAyOWRmOTBlN2NlMjI4ZGMx
Mzk1NzIxMjRhNTk2YzI4NGU4MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aApAQCAtMTMzLDYgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yLAogICAgICAg
ICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBNZWRpYUNhY2hlTWFuYWdlciwKKyAg
ICAgICAgTWVzc2FnZUxpc3RlbmVyLAogICAgICAgICBOYXZpZ2F0aW9uLAogICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0YSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggMTE2NGMxNTgyYzQxMmE3YjU1MGE1YjFjNTZiYjFkZjU0ZmZlN2Fh
OS4uMDM5MTRiMjFkMmY4Mzc4NDg3NzAxOWE2ZGNlNWY0OGJhZjBmOTgwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0luc3BlY3RvciogV0tJbnNwZWN0b3JSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLTWVkaWFTZXNzaW9uTWV0YWRhdGEqIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGFS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lc3NhZ2VMaXN0ZW5lciogV0tNZXNz
YWdlTGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25B
Y3Rpb24qIFdLTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLTmF2aWdhdGlvbkRhdGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb24qIFdLTmF2aWdhdGlvblJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDJkNzdlYTA5YjUwY2UyMzg5N2JjZjJiZDViYTFjMjFlNTU2Yjc3MGQuLjdkMjVlZDRkMGJkODY0
MDUyZmQ0N2QyNTNhZmM5YWEyNmIzNWQ0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQ0LDYgKzM0NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAKK1VJUHJvY2Vz
cy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01vY2tEaXNw
bGF5LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTW9ja01lZGlhRGV2aWNlLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggMjM1MGM2MWZl
MTMyMTk4NzllM2QxOTljZDg5MGVlZDhhYTM3YzUzNS4uYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRi
NTgxZmUzMmZjYjQwYWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTI2LDcgKzI2LDkgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CkBAIC0zOSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBBUEk6
Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6
OlN0cmluZyYsIEFQSTo6T2JqZWN0KiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXVEY6OlN0cmluZyYsIEFQSTo6T2JqZWN0
KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQogICAgIHZpcnR1YWwg
UmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElNZXNzYWdlTGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElNZXNzYWdlTGlzdGVuZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lODhhNTc2NmM3MWM4NGExODhhMjRiZTUzZGFkNWY2NmFiMjJjYmVhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU1lc3NhZ2VMaXN0ZW5l
ci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworY2xhc3MgTWVzc2FnZUxpc3RlbmVyIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpNZXNzYWdlTGlzdGVuZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNZXNzYWdlTGlzdGVuZXIpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVzc2FnZUxp
c3RlbmVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+
KT4mJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VM
aXN0ZW5lcihXVEZNb3ZlKHJlcGx5KSkpOworICAgIH0KKworICAgIHZvaWQgc2VuZFJlcGx5KFJl
ZlB0cjxBUEk6Ok9iamVjdD4mJiByZXBseSkKKyAgICB7CisgICAgICAgIG1fcmVwbHkoV1RGTW92
ZShyZXBseSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXNzYWdlTGlzdGVuZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJiByZXBseSkKKyAgICAgICAg
OiBtX3JlcGx5KFdURk1vdmUocmVwbHkpKSB7IH0KKworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+IG1fcmVwbHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXggYzg2NjAz
ZGRjOTRmZGRlNzhmZjVlN2U4YzNjZjczZDVjZDkzYzYwOS4uNTE3Mzc1NTk0OGRkNDE1ZTI3YTVm
NzNlYTQ3MmZhYzgwOTViZWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgRXhwZXJpbWVudGFsRmVhdHVyZTsKIGNs
YXNzIEZyYW1lSGFuZGxlOwogY2xhc3MgRnJhbWVJbmZvOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsK
K2NsYXNzIE1lc3NhZ2VMaXN0ZW5lcjsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZpZ2F0
aW9uQWN0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkRhdGE7CkBAIC0xMzcsNiArMTM4LDcgQEAgV0tf
QUREX0FQSV9NQVBQSU5HKFdLSWNvbkRhdGFiYXNlUmVmLCBXZWJJY29uRGF0YWJhc2UpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmLCBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25NZXRhZGF0
YVJlZiwgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEpCitXS19BRERfQVBJX01BUFBJTkcoV0tNZXNz
YWdlTGlzdGVuZXJSZWYsIEFQSTo6TWVzc2FnZUxpc3RlbmVyKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYsIEFQSTo6TmF2aWdhdGlvbkRhdGEpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uUmVmLCBBUEk6Ok5hdmlnYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuaAppbmRleCBkMzQ1NmFhNjgwMjcyYmM0MTA3MjZkYWVmM2U0YjkwOWI4
YzgxODJkLi5iMzMyOGU4YzBiN2EyMGQxMTJlOTQ3NTA5ZTZiN2UyZGM4Yjc1ZjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgogCiAvLyBJbmplY3RlZCBCdW5kbGUgQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpX
S0NvbnRleHREaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0Nv
bnRleHRSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRE
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdL
Q29udGV4dFJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
dHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGVDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRl
ZiB2b2lkICgqV0tDb250ZXh0RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tUeXBlUmVmICgqV0tDb250ZXh0R2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVu
ZXJDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnRCYXNlIHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC01Nyw0ICs1
OCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIHsK
ICAgICBXS0NvbnRleHRHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxs
YmFjayAgICAgICAgICAgIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsK
IH0gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMTsKIAordHlwZWRlZiBzdHJ1Y3QgV0tD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMiB7CisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisg
ICAgLy8gVmVyc2lvbiAwLgorICAgIFdLQ29udGV4dERpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQ29udGV4dEdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrICAgICAgICAgICAg
Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgLy8gVmVyc2lv
biAyLgorICAgIFdLQ29udGV4dERpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGVXaXRoTGlzdGVuZXJDYWxsYmFjayBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVyOworfSBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudFYyOworCiAjZW5kaWYgLy8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAK
aW5kZXggY2I3ZjBiZDFiNzFmYjA5NWFhNGI1ZmIzMzgwM2E1MzJhNGM1NmY3Ny4uMDYzNmVhNmMy
Yzc3ZTNmZDRkMGI0ZGM2ZjEyZDA4ZGViODY5NTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC02Miw5ICs2MiwxMiBAQCB2
b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nv
b2tpZU1hbmFnZXJSZWYgY29va2llTQogICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRhdGUpLCBbXShDYWxsYmFja0Jhc2U6OkVy
cm9yKXt9KTsKIH0KIAotdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5KQordm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5LCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFn
ZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jh
c2U6OkVycm9yKXt9KTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtjb250ZXh0LCBjYWxsYmFja10oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxs
YmFjayhlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJv
cjo6Y3JlYXRlKCkucHRyKCkpIDogbnVsbHB0ciwgY29udGV4dCk7CisgICAgfSk7CiB9CiAKIHZv
aWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFn
ZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAppbmRleCBjNjUxNGUzZmEwN2IzZTIz
OGIwNGM0YjllYjAwOWNlOGVlMWJmOTNkLi43MzM1NGQyY2JhNGVkZjk3YjlhNTc5MjBjZDQ1YmM3
NzQyNTJiYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
b2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tp
ZU1hbmFnZXIuaApAQCAtNjgsNyArNjgsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJEZWxldGVBbGxDb29raWVzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyKQogLy8g
VGhlIHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUgVW5peCBlcG9jaC4KIFdLX0VYUE9SVCB2
b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nv
b2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgZG91YmxlKTsKIAotV0tfRVhQT1JUIHZvaWQg
V0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJS
ZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSk7Cit0eXBl
ZGVmIHZvaWQgKCpXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rp
b24pKFdLRXJyb3JSZWYsIHZvaWQqKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29va2llTWFuYWdlclNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIs
IFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIHZvaWQqIGNvbnRleHQsIFdLQ29va2ll
TWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3lGdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBl
ZGVmIHZvaWQgKCpXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rp
b24pKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgV0tFcnJvclJlZiwgdm9pZCopOwogV0tfRVhQ
T1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tp
ZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2Vy
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjljMDEwYzQ3YzE5OTVkZGI2MDE1YzYyMjVkOGM2NDJhMGQzNDEzOTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lc3NhZ2VMaXN0ZW5l
ci5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS01lc3NhZ2VMaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiQVBJTWVzc2FnZUxp
c3RlbmVyLmgiCisKK1dLVHlwZUlEIFdLTWVzc2FnZUxpc3RlbmVyR2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gdG9BUEkoQVBJOjpNZXNzYWdlTGlzdGVuZXI6OkFQSVR5cGUpOworfQorCit2b2lk
IFdLTWVzc2FnZUxpc3RlbmVyU2VuZFJlcGx5KFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVy
UmVmLCBXS1R5cGVSZWYgdmFsdWUpCit7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+c2VuZFJl
cGx5KHRvSW1wbCh2YWx1ZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tNZXNzYWdlTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTWVzc2FnZUxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRlOGEyZWY4MjE2YmRhNTBmYjBl
ZWE0NGMzNWU3MDRiM2UyMmRkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTWVzc2FnZUxpc3RlbmVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tNZXNzYWdlTGlzdGVuZXJfaAorI2RlZmluZSBXS01lc3NhZ2VMaXN0
ZW5lcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLTWVzc2FnZUxp
c3RlbmVyR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLTWVzc2FnZUxpc3RlbmVyU2Vu
ZFJlcGx5KFdLTWVzc2FnZUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgcmVwbHkpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tNZXNzYWdlTGlz
dGVuZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYjIyYzNlYjg2NjJmNWU3NmEwMzg2
MGRlOWIyNThhNTM4YjFiMGM5My4uZWRiYmY1OGNjYzY1OTc0MmI5YjFiNDRiNTM2NTI1N2EzMDI5
ZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5
LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiBXS1R5cGVSZWYgKCpXS1BhZ2VHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGFDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZVdpdGhMaXN0ZW5lckNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UgewogICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAg
LTQ1LDQgKzQ2LDE1IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
VjAgewogICAgIFdLUGFnZURpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGVDYWxsYmFjayAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZTsKIH0gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMDsKIAordHlwZWRlZiBzdHJ1
Y3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMSB7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisg
ICAgLy8gVmVyc2lvbiAwLgorICAgIFdLUGFnZURpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGU7CisgICAgV0tQYWdlRGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZURpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXJDYWxsYmFjayBk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVy
OworfSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxOworCiAjZW5kaWYgLy8gV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggZjRjYTYyY2NhYjZj
M2RjZTUyMjIzNGEzZmVhNTQxZWIyZWNkZGRlNS4uNmRiMTQ1MjJmMDU3MmI5YTc4NWRlMTdhNjlh
OWFlOTEwZGI5MTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmgiCiAKKyNpbmNsdWRlICJBUElNZXNzYWdlTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNDUsMTQgKzQ2LDE4IEBAIHZvaWQgV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9j
CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEko
JnByb2Nlc3NQb29sKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJv
ZHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0
dXJuRGF0YSkKK3ZvaWQgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VC
b2R5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9j
bGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSAmJiAh
bV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdp
dGhMaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwor
CisgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpIHsKKyAgICAgICAgV0tUeXBlUmVmIHJldHVybkRhdGFSZWYgPSBudWxscHRyOwor
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRv
QVBJKG1lc3NhZ2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9wdFJlZih0b0ltcGwocmV0
dXJuRGF0YVJlZikpKTsKKyAgICB9CiAKLSAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YVJlZiA9IG51
bGxwdHI7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkp
LCB0b0FQSShtZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0dXJuRGF0YVJlZikp
OworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGVXaXRoTGlzdGVuZXIodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkobWVzc2FnZU5hbWUu
aW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCB0b0FQSShBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6
Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBhYmZkNmE0Yjc4
NmZmNWYyNGZiOWNkZDVjYTk2MTdiMTk1MDc0MGE0Li4wOTQ4YmM1OTc3NDFlNTc4YjkzZGNmMzg0
MGViMzcwMjJiNjlhOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJh
aXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYwLCBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudFYxPiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMCwgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRW
MSwgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMj4gVmVyc2lvbnM7CiB9OwogfQogCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQ
b29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQVBJOjpPYmplY3QqLCBSZWZQdHI8QVBJOjpP
YmplY3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBB
UEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+
JiYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gZ2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKFdlYlByb2Nlc3NQb29sJikgb3ZlcnJpZGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcAppbmRleCAzNTNlN2ZiNDIzN2FjOWE2NDU2YjQ4MGIyZWMwMGM5YTU4ZmE3YzYy
Li40NGRlODM2NGI1Mjg0MzEyMDIyZGQxYzAzZWNhOTg4ZWZmNjAyODA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKIAorI2luY2x1ZGUgIkFQSU1lc3NhZ2VMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxNCArNDIsMTkgQEAgdm9p
ZCBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlBhZ2VQcm8KICAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSh0b0FQSShwYWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9B
UEkobWVzc2FnZUJvZHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIFdl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0
dXJuRGF0YSkKK3ZvaWQgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9jbGllbnQuZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZQorICAgICAgICAmJiAhbV9j
bGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhM
aXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworCisg
ICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpIHsKKyAgICAgICAgV0tUeXBlUmVmIHJldHVybkRhdGFSZWYgPSBudWxscHRyOworICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdl
Qm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9JbXBsKHJldHVybkRhdGFSZWYp
KSk7CisgICAgfQogCi0gICAgV0tUeXBlUmVmIHJldHVybkRhdGFSZWYgPSAwOwotICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9BUEko
cGFnZSksIHRvQVBJKG1lc3NhZ2VOYW1lLmltcGwoKSksIHRvQVBJKG1lc3NhZ2VCb2R5KSwgJnJl
dHVybkRhdGFSZWYsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRhUmVmKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcih0b0FQSShw
YWdlKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCB0b0FQ
SShBUEk6Ok1lc3NhZ2VMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaAppbmRleCAzMGM3ZjM1NGMwMDFiNGVkNzI0NDg1MDE2YTNhZTdjNGNm
NzQzNDdmLi42NTI5ODJhODEyYTllZmJlZjUyMWE2YTk4OTlmYTRiZWU1ZmFmMzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKLSNkZWZpbmUg
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCkBAIC0zNCw3ICszMyw3IEBAIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFp
dHM8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjA+IFZlcnNpb25zOworICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwLCBXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudFYxPiBWZXJzaW9uczsKIH07CiB9CiAKQEAgLTQ1LDkgKzQ0LDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGlj
IEFQSTo6Q2xpZW50PFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4gewogcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiwgQVBJOjpPYmplY3QqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFjNzRiZDRjN2FjNGExMzA1NDAx
NjAyZDNiMjc2NDMwYWRiODg4YjguLjI2MDdiMzAwMzRlYzk3YmU3NmE0MmIwZDVhMzI4NmY0ZjMx
OTY1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzA0
LDggKzcwNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRh
OwotICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZU5hbWUsIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIHJldHVybkRh
dGEpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFVzZXJEYXRhKG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyhyZXR1cm5EYXRhLmdldCgpKSkpOworICAgIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
dGhpcywgbWVzc2FnZU5hbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyht
ZXNzYWdlQm9keS5vYmplY3QoKSkuZ2V0KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0gKFJlZlB0
cjxBUEk6Ok9iamVjdD4mJiByZXR1cm5EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1
cm5EYXRhLmdldCgpKSkpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDM1ZTg1ZjBlMzUxYzcyMzgyNGY2
ZmExMzZlN2JlZmQ1NzQ2MjI5ZmEuLjJjNTQwZjdjMDU3NTZmZjhkZDk0NjhjMzQzOWZiZDJkMWJi
OWE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OTcsNyAr
NDk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkxvYWRlckNsaWVudD4mJik7CiAgICAgdm9pZCBzZXRQb2xpY3lDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmKTsKICAgICB2b2lkIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSopOwotICAgIFdl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCogaW5qZWN0ZWRCdW5kbGVDbGllbnQoKSB7IHJldHVy
biBtX2luamVjdGVkQnVuZGxlQ2xpZW50LmdldCgpOyB9CiAKICAgICBBUEk6OlVJQ2xpZW50JiB1
aUNsaWVudCgpIHsgcmV0dXJuICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNzg2NGExODNmN2Q3MzhkZWQ1NGE5MGQyODJhNTAz
MzdmYTQyNTUzNS4uOTQ2Mjc5OWYyYThiZDFhNGQ3NmYyZDM5ZmM4MjM5NDlkMTA4NTc5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTkwMiw5ICsx
OTAyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QKICAgICBpZiAoIXdlYlByb2Nlc3NQcm94
eSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8
QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSgqdGhpcywgbWVzc2Fn
ZU5hbWUsIHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhtZXNzYWdl
Qm9keS5vYmplY3QoKSkuZ2V0KCksIHJldHVybkRhdGEpOwotICAgIGNvbXBsZXRpb25IYW5kbGVy
KFVzZXJEYXRhKHdlYlByb2Nlc3NQcm94eS0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1
cm5EYXRhLmdldCgpKSkpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoKnRoaXMsIG1lc3NhZ2VOYW1lLCB3
ZWJQcm9jZXNzUHJveHktPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2Jq
ZWN0KCkpLmdldCgpLCBbd2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVJlZigqd2ViUHJvY2Vzc1Byb3h5
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZlB0
cjxBUEk6Ok9iamVjdD4mJiByZXR1cm5EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlckRhdGEod2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmIHN0YXRpc3RpY3NEYXRh
LCB1aW50NjRfdCByZXF1ZXN0SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxYjUyMjYzYzQ2ZGI1ZWZhMDNlZTI1ODI3OTFjZDk2NTQ4
Zjk3OTVmLi4xNjA0M2M1ZjU5NmEyNzlhOTNhMzlkZjA4ZWYwMjQ1MjM3MjRjNDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDIs
NiArMTEwMiw4IEBACiAJCTVDQTI2RDgxMjE3QUJENUIwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2lu
Z1dhcm5pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQTI2RDgwMjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaCAqLzsg
fTsKIAkJNUNBMjZEODMyMTdBRDFCODAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTI2RDdG
MjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gKi87IH07CiAJCTVD
QTk4NTRBMjEwQkVCNjQwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0E5ODU0OTIxMEJFQjVBMDA1
N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovOyB9OworCQk1Q0FCREM4NjIyQzQwRkRF
MDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3Nh
Z2VMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTVDQUJEQzg3MjJDNDBGRUQwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUJEQzgzMjJD
NDBGQTcwMDFFREU4RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLzsgfTsKIAkJNUNBRERFMDUy
MTUwNDZCRDAwNjdEMzA5IC8qIFdLV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3NDMwMEUyMTUwMDQ5MjAwNEJGQTE3IC8qIFdLV2Vi
UHJvY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVDQUZERTQ1MjEzMDg0NjMwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQUZERTQyMjEzMDg0MzUwMEIx
RjdFMSAvKiBfV0tJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9y
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovOyB9
OwpAQCAtMzYwNCw2ICszNjA2LDkgQEAKIAkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQ
SUhUVFBDb29raWVTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW07IHBhdGggPSBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2luZ1dhcm5pbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZC
IC8qIFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUNBQkRDODMyMkM0MEZBNzAwMUVERThFIC8qIEFQSU1lc3NhZ2VM
aXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElNZXNzYWdlTGlz
dGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBQkRDODQyMkM0MEZDQzAw
MUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLTWVzc2FnZUxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNBQkRDODUyMkM0MEZDQzAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTWVzc2FnZUxpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQURERTBEMjE1MUFBMDEwMDY3RDMwOSAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0lu
c3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBRkRFNDMyMTMwODQzNjAwQjFGN0Ux
IC8qIF9XS0luc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IF9XS0luc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NDMs
NiArNzg0OCw3IEBACiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFs
RGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0
QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oICovLAorCQkJCTVDQUJEQzgzMjJDNDBGQTcwMDFFREU4
RSAvKiBBUElNZXNzYWdlTGlzdGVuZXIuaCAqLywKIAkJCQk3Q0QzQTQ4MDFBNUQwMkZBMDA5NjIz
QjggLyogQVBJTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4
IC8qIEFQSU5hdmlnYXRpb24uaCAqLywKIAkJCQkyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyog
QVBJTmF2aWdhdGlvbkFjdGlvbi5oICovLApAQCAtNzk0Niw2ICs3OTUyLDggQEAKIAkJCQlDOThD
NDhBODFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLywK
IAkJCQlDOUNENDM5OTFCNEIwMjQyMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5j
cHAgKi8sCiAJCQkJQzlDRDQzOUExQjRCMDI0MjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaCAqLywKKwkJCQk1Q0FCREM4NDIyQzQwRkNDMDAxRURFOEUgLyogV0tNZXNzYWdlTGlz
dGVuZXIuY3BwICovLAorCQkJCTVDQUJEQzg1MjJDNDBGQ0MwMDFFREU4RSAvKiBXS01lc3NhZ2VM
aXN0ZW5lci5oICovLAogCQkJCUMxMUUxNjkzMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmNwcCAqLywKIAkJCQlDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxh
eS5oICovLAogCQkJCTQxMUE4RERBMjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmlj
ZS5jcHAgKi8sCkBAIC05MjUwLDYgKzkyNTgsNyBAQAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NF
NEQyMDcxQTQ2Nzc2MTAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTI0NjRGMzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0FCREM4NzIyQzQwRkVEMDAxRURFOEUgLyog
QVBJTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QzQTQ4MzFBNUQwMkZB
MDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGOUVFRUMx
QTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJERDlFQjJEMUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTEwMDk5LDYgKzEwMTA4LDcgQEAKIAkJCQlDOThDNDhBQTFCNkZENUI1
MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM5Q0Q0MzlEMUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRl
bUlkZW50aWZpZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNBQkRDODYyMkM0MEZE
RTAwMUVERThFIC8qIFdLTWVzc2FnZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFF
MTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExQThEREIyMERERDFBQzAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXku
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDA5ZWUzNzAzOWE2MjAwOTg3M2UxMDY0MWZkNmJjNTY2N2ZiMjYzNzQuLjlh
NGM3ZjdkOGYzNGY2NGYxZmQ0NWJiZWRjYmI0NTJiZGNhNTU0NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0w
Ni0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyBzaG91bGQgd2FpdCBmb3IgY29v
a2llIGFjY2VwdCBwb2xpY3kgdG8gYmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyMzAKKyAgICAgICAgPHJkYXI6Ly81MTc1NzEwNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0Nvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGlkR2V0VXNlckhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZVdpdGhMaXN0ZW5lcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lcik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjppbnZva2UpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDYtMjUg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQg
YSBuZXcgU1BJIHRvIGluZm9ybSBjbGllbnRzIGFib3V0IEFwcFNTTwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ29va2llTWFuYWdlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcAppbmRleCA0OTVkMGVk
M2NkN2YxYjVhODM3ZDhkMjk4OGVlZmJlYzVjNGEzODI1Li44NDBjNmM1YTA2MjE4Y2Q5ODNkNjE4
YmM3YzUyZDM5ZThmNGY0YTZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Db29raWVNYW5hZ2VyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgdm9pZCBk
aWRHZXRUZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kg
cG9saWN5LCBXSwogICAgIEVYUEVDVF9FUSh0ZXN0UG9saWN5LCBwb2xpY3kpOwogCiAgICAgV0tD
b29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIgPSBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2Vy
KHdrQ29udGV4dC5nZXQoKSk7Ci0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShjb29raWVNYW5hZ2VyLCB1c2VyUG9saWN5KTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHVzZXJQb2xpY3ksIG51bGxw
dHIsIG51bGxwdHIpOwogCiAgICAgdGVzdERvbmUgPSB0cnVlOwogfQpAQCAtNjAsNyArNjAsNyBA
QCBzdGF0aWMgdm9pZCBkaWRHZXRVc2VySFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXSwogICAgIC8vIE1ha2Ugc3VyZSB0byBjaG9vc2UgYSBw
b2xpY3kgZGlmZmVyZW50IGZyb20gdGhlIHBvbGljeSB0aGUgdXNlciBjdXJyZW50bHkgaGFzIHNl
dC4KICAgICB0ZXN0UG9saWN5ID0gKHVzZXJQb2xpY3kgKyAxKSAlIDM7CiAgICAgV0tDb29raWVN
YW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIgPSBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKHdrQ29u
dGV4dC5nZXQoKSk7Ci0gICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVNYW5hZ2VyLCB0ZXN0UG9saWN5KTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHRlc3RQb2xpY3ksIG51bGxwdHIsIG51
bGxwdHIpOwogICAgIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29v
a2llTWFuYWdlciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSwgZGlkR2V0VGVz
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGNkOGVmMTgzNmExZjRlZDM5Nzg1ZGI3MjY1YTJlMzU2NDUz
NTg4ZTEuLmJmYWMxOTIzMzRjMzYyZTE3NzRhN2JlZGY3NzI3YzYzYzE2NjI4MGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tG
cmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJY29uRGF0YWJhc2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tNZXNzYWdlTGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tNb2Nr
RGlzcGxheS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS01vY2tNZWRpYURldmljZS5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS05hdmlnYXRpb25BY3Rpb25SZWYuaD4KQEAgLTczLDYgKzc0LDcgQEAKICNp
bmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0F1dG9k
cmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KQEAgLTUzOCwx
MSArNTQwLDEyIEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250
cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgICAgIHBsYXRmb3JtSW5p
dGlhbGl6ZUNvbnRleHQoKTsKICAgICB9CiAKLSAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKKyAg
ICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYyIGluamVjdGVkQnVuZGxlQ2xpZW50ID0g
eworICAgICAgICB7IDIsIHRoaXMgfSwKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUsCi0gICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUsCisgICAgICAgIG51bGxwdHIsCiAgICAgICAgIGdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSwKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZVdpdGhMaXN0ZW5lciwKICAgICB9OwogICAgIFdLQ29udGV4
dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxl
Q2xpZW50LmJhc2UpOwogCkBAIC03MTcsMTAgKzcyMCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVy
OjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCgpLCAmZG93bmxvYWRDbGllbnQu
YmFzZSk7CiAgICAgCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9uIHRoZSBwYWdl
PwotICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQg
PSB7Ci0gICAgICAgIHsgMCwgdGhpcyB9LAorICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
VjEgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7CisgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAg
ICBkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsCi0gICAgICAgIGRpZFJl
Y2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlCisgICAgICAgIG51
bGxwdHIsCisgICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlV2l0aExpc3RlbmVyLAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50
LmJhc2UpOwogCkBAIC0xNzI5LDkgKzE3MzMsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgVwog
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwg
bWVzc2FnZUJvZHkpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJl
dHVybkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlV2l0aExpc3RlbmVy
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKLSAgICAqcmV0dXJuRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSkubGVh
a1JlZigpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSwgbGlzdGVuZXIpOwogfQogCiBXS1R5cGVS
ZWYgVGVzdENvbnRyb2xsZXI6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YShXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNzQ2LDkgKzE3NTAs
OSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2UsIFdLUwogICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQogCi12b2lkIFRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLTWVzc2FnZUxpc3RlbmVy
UmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgICpyZXR1cm5EYXRh
ID0gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZU5hbWUsIG1lc3NhZ2VCb2R5KS5sZWFrUmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5
LCBsaXN0ZW5lcik7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6Om5ldHdvcmtQcm9jZXNzRGlk
Q3Jhc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCkBAIC0x
ODg1LDExICsxODg5LDE1IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5h
bWUsIG1lc3NhZ2VCb2R5KTsKIH0KIAotV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VM
aXN0ZW5lclJlZiBsaXN0ZW5lcikKIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW2xp
c3RlbmVyID0gcmV0YWluV0sobGlzdGVuZXIpXSAoV0tUeXBlUmVmIHJlcGx5KSB7CisgICAgICAg
IFdLTWVzc2FnZUxpc3RlbmVyU2VuZFJlcGx5KGxpc3RlbmVyLmdldCgpLCByZXBseSk7CisgICAg
fTsKKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
RXZlbnRTZW5kZXIiKSkgewogICAgICAgICBpZiAobV9zdGF0ZSAhPSBSdW5uaW5nVGVzdCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOwogCiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0RpY3Rpb25hcnlSZWYg
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNz
YWdlQm9keSk7CkBAIC0xOTAwLDcgKzE5MDgsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgog
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
IktleURvd24iKSkgewogICAgICAgICAgICAgZGlkUmVjZWl2ZUtleURvd25NZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdHJ1ZSk7CiAKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
c3ViTWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VVcCIpKSB7CkBAIC0xOTE1LDcgKzE5MjMsNyBAQCBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94
eS0+bW91c2VEb3duKGJ1dHRvbiwgbW9kaWZpZXJzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlVXAoYnV0dG9uLCBtb2RpZmllcnMp
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlTW92ZVRvIikpIHsKQEAgLTE5Mjcs
MjggKzE5MzUsMjggQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKIAogICAgICAgICAgICAgLy8g
Rm9yd2FyZCB0byBXZWJQcm9jZXNzCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1v
dXNlTW92ZVRvKHgsIHkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2Fn
ZU5hbWUsICJNb3VzZUZvcmNlQ2xpY2siKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclBy
b3h5LT5tb3VzZUZvcmNlQ2xpY2soKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJTdGFy
dEFuZENhbmNlbE1vdXNlRm9yY2VDbGljayIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVy
UHJveHktPnN0YXJ0QW5kQ2FuY2VsTW91c2VGb3JjZUNsaWNrKCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiTW91c2VGb3JjZURvd24iKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRl
clByb3h5LT5tb3VzZUZvcmNlRG93bigpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1v
dXNlRm9yY2VVcCIpKSB7CiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRm9y
Y2VVcCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlRm9yY2VDaGFuZ2VkIikp
IHsKQEAgLTE5NTYsNyArMTk2NCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRy
b2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAg
ICAgICBkb3VibGUgZm9yY2UgPSBXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91Ymxl
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZm9y
Y2VLZXkuZ2V0KCkpKSk7CiAKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VG
b3JjZUNoYW5nZWQoZm9yY2UpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCiAKQEAgLTE5NzIsNyArMTk4MCw3IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCCiAKICAgICAgICAgICAgIC8vIEZvcndhcmQgdG8gV2ViUHJvY2VzcwogICAgICAgICAgICAg
bV9ldmVudFNlbmRlclByb3h5LT5jb250aW51b3VzTW91c2VTY3JvbGxCeSh4LCB5LCBwYWdlZCk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTGVhcEZvcndhcmQiKSkgewpAQCAtMTk4MCw3
ICsxOTg4LDcgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIHVuc2lnbmVk
IHRpbWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2Fz
dDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rp
b25hcnksIHRpbWVLZXkuZ2V0KCkpKSkpOwogCiAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJv
eHktPmxlYXBGb3J3YXJkKHRpbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xOTkyLDcgKzIwMDAsNyBAQCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0
VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpKTsKIAogICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5hZGRUb3VjaFBvaW50KHgsIHkpOwotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNz
YWdlTmFtZSwgIlVwZGF0ZVRvdWNoUG9pbnQiKSkgewpAQCAtMjAwNiw3ICsyMDE0LDcgQEAgV0tS
ZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50
PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgeUtleS5nZXQoKSkpKSk7CiAKICAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+dXBkYXRlVG91Y2hQb2ludChpbmRleCwgeCwg
eSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiU2V0VG91Y2hNb2RpZmllciIpKSB7CkBA
IC0yMDE3LDcgKzIwMjUsNyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVy
OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAg
Ym9vbCBlbmFibGUgPSBzdGF0aWNfY2FzdDxib29sPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19j
YXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgZW5hYmxlS2V5LmdldCgpKSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRl
clByb3h5LT5zZXRUb3VjaE1vZGlmaWVyKG1vZGlmaWVyLCBlbmFibGUpOwotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIlNldFRvdWNoUG9pbnRSYWRpdXMiKSkgewpAQCAtMjAyOCw1MSArMjAz
Niw3MyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICAgICAgaW50IHkgPSBzdGF0
aWNfY2FzdDxpbnQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgp
KSkpKTsKIAogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5zZXRUb3VjaFBvaW50UmFk
aXVzKHgsIHkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoU3RhcnQiKSkgewog
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaFN0YXJ0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hNb3ZlIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5k
ZXJQcm94eS0+dG91Y2hNb3ZlKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiVG91Y2hF
bmQiKSkgewogICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT50b3VjaEVuZCgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlRvdWNoQ2FuY2VsIikpIHsKICAgICAgICAgICAgIG1f
ZXZlbnRTZW5kZXJQcm94eS0+dG91Y2hDYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5h
bWUsICJDbGVhclRvdWNoUG9pbnRzIikpIHsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94
eS0+Y2xlYXJUb3VjaFBvaW50cygpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIlJlbGVh
c2VUb3VjaFBvaW50IikpIHsKICAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBp
bmRleEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkluZGV4Iikp
OwogICAgICAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihXS1VJbnQ2NEdldFZh
bHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgaW5kZXhLZXkuZ2V0KCkpKSkpOwogICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5yZWxlYXNlVG91Y2hQb2ludChpbmRleCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1
Yk1lc3NhZ2VOYW1lLCAiQ2FuY2VsVG91Y2hQb2ludCIpKSB7CiAgICAgICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaW5kZXhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJJbmRleCIpKTsKICAgICAgICAgICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0
PGludD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGluZGV4S2V5LmdldCgpKSkp
KTsKICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+Y2FuY2VsVG91Y2hQb2ludChpbmRl
eCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVz
c2FnZUJvZHkpOworCisgICAgYXV0byBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5ID0gWyZdIChX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdL
VHlwZVJlZik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0g
bmV3IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0tUeXBlUmVmKT4oV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIodGhpcy0+Y29udGV4dCgpKSwgcG9saWN5LCBj
b250ZXh0LCBbXSAoV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkgeworICAgICAgICAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdLVHlwZVJlZik+Kj4oY29udGV4dCk7CisgICAgICAgICAgICAoKmNvbXBs
ZXRpb25IYW5kbGVyUG9pbnRlcikobnVsbHB0cik7CisgICAgICAgICAgICBkZWxldGUgY29tcGxl
dGlvbkhhbmRsZXJQb2ludGVyOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBbHdheXNBY2NlcHRDb29r
aWVzIikpIHsKKyAgICAgICAgV0tCb29sZWFuUmVmIGFjY2VwdCA9IHN0YXRpY19jYXN0PFdLQm9v
bGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kg
cG9saWN5ID0gV0tCb29sZWFuR2V0VmFsdWUoYWNjZXB0KSA/IGtXS0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXMgOiBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1l
bnREb21haW47CisgICAgICAgIHJldHVybiBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KKworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0T25seUFjY2VwdEZpcnN0UGFy
dHlDb29raWVzIikpIHsKKyAgICAgICAgV0tCb29sZWFuUmVmIGFjY2VwdCA9IHN0YXRpY19jYXN0
PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5ID0gV0tCb29sZWFuR2V0VmFsdWUoYWNjZXB0KSA/IGtXS0hUVFBDb29raWVB
Y2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4gOiBrV0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW47CisgICAgICAgIHJldHVy
biBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fY3VycmVudEludm9jYXRp
b24tPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2Fn
ZU5hbWUsIG1lc3NhZ2VCb2R5KS5nZXQoKSk7CiB9CiAKIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdENvbnRyb2xsZXI6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSgp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMWRiMzA4ZDMxMzll
NGNiYzM0OWU1NTEzZjJjOWRkZmM3YzhjZmU5ZC4uYjA0ZTU4MmQ4MmQ2ZGE0MjE2NjBjOGE3NWNm
YmI2NjFkNDY5MzFmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMzc3LDE0ICszNzcsMTQgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJu
RGF0YSwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVXaXRoTGlzdGVuZXIoV0tDb250ZXh0UmVmLCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS01lc3NhZ2VMaXN0
ZW5lclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiAKICAgICAvLyBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudAogICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYs
IFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNQYWdlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5
cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9pZCopOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c1BhZ2VNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlV2l0aExpc3RlbmVyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUs
IFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVuZXJSZWYsIGNvbnN0IHZvaWQq
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwotICAgIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJp
bmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tNZXNzYWdlTGlzdGVu
ZXJSZWYpOwogICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVLZXlEb3duTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBib29sIHN5bmNocm9ub3VzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKaW5kZXggY2NhZjEwMzE2Y2U3Yjk1NDNkNTc4YTU5NWNkMzM4MjBhNjNlNjk0OC4uYzRk
NzdiODU5M2EwY2M3YTZjYWRkOWIyNmZlMTBjMjZmOTY2NzQwZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjppbnZva2UoKQogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dFNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3Moc2hvdWxkTG9nSGlzdG9yeUNsaWVudENh
bGxiYWNrcygpKTsKIAotICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
Y29udGV4dCgpKSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdL
Q29udGV4dEdldENvb2tpZU1hbmFnZXIoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRl
eHQoKSksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNsZWFyIG91
dCB2aXNpdGVkIGxpbmtzIGhlcmUuCiAKQEAgLTkwNCwyMiArOTA0LDYgQEAgV0tSZXRhaW5QdHI8
V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsd2F5c0FjY2VwdENv
b2tpZXMiKSkgewotICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kgPSBXS0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeUFsd2F5cyA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgdXBkYXRlcyB0aGUgcG9saWN5IGlu
IFdlYlByb2Nlc3MgYW5kIGluIE5ldHdvcmtQcm9jZXNzIGFzeW5jaHJvbm91c2x5LCB3aGljaCBt
aWdodCBicmVhayBzb21lIHRlc3RzJyBleHBlY3RhdGlvbnMuCi0gICAgICAgIFdLQ29va2llTWFu
YWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwgcG9saWN5KTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJTZXRPbmx5QWNjZXB0Rmlyc3RQYXJ0eUNvb2tpZXMiKSkgewot
ICAgICAgICBXS0Jvb2xlYW5SZWYgYWNjZXB0ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPiht
ZXNzYWdlQm9keSk7Ci0gICAgICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBX
S0Jvb2xlYW5HZXRWYWx1ZShhY2NlcHQpID8ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1
c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiA6IGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lP
bmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgdXBkYXRl
cyB0aGUgcG9saWN5IGluIFdlYlByb2Nlc3MgYW5kIGluIE5ldHdvcmtQcm9jZXNzIGFzeW5jaHJv
bm91c2x5LCB3aGljaCBtaWdodCBicmVhayBzb21lIHRlc3RzJyBleHBlY3RhdGlvbnMuCi0gICAg
ICAgIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb250ZXh0R2V0
Q29va2llTWFuYWdlcihUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKSwgcG9s
aWN5KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0Q3VzdG9tVXNlckFnZW50
IikpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgdXNlckFnZW50ID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgV0tQYWdlU2V0Q3VzdG9tVXNlckFnZW50KFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIHVzZXJBZ2Vu
dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>