<?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>205713</bug_id>
          
          <creation_ts>2020-01-03 00:05:20 -0800</creation_ts>
          <short_desc>Implement RTC VTB encoders in GPUProcess</short_desc>
          <delta_ts>2020-01-06 01:48:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602340</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-03 00:05:20 -0800</bug_when>
    <thetext>Implement RTC VTB encoders in GPUProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602341</commentid>
    <comment_count>1</comment_count>
      <attachid>386663</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-03 00:08:22 -0800</bug_when>
    <thetext>Created attachment 386663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602384</commentid>
    <comment_count>2</comment_count>
      <attachid>386672</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-03 03:07:27 -0800</bug_when>
    <thetext>Created attachment 386672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602400</commentid>
    <comment_count>3</comment_count>
      <attachid>386676</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-03 06:01:15 -0800</bug_when>
    <thetext>Created attachment 386676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602405</commentid>
    <comment_count>4</comment_count>
      <attachid>386677</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-03 06:28:20 -0800</bug_when>
    <thetext>Created attachment 386677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602960</commentid>
    <comment_count>5</comment_count>
      <attachid>386818</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-06 01:01:54 -0800</bug_when>
    <thetext>Created attachment 386818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602971</commentid>
    <comment_count>6</comment_count>
      <attachid>386818</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-06 01:47:44 -0800</bug_when>
    <thetext>Comment on attachment 386818
Patch

Clearing flags on attachment: 386818

Committed r254050: &lt;https://trac.webkit.org/changeset/254050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602972</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-06 01:47:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602973</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-06 01:48:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/58336179&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386663</attachid>
            <date>2020-01-03 00:08:22 -0800</date>
            <delta_ts>2020-01-03 03:07:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205713-20200103090821.patch</filename>
            <type>text/plain</type>
            <size>72181</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAwZTA5OTcwNWY5ZDJhMDMwNjIxZWM0MTRiYTAyOGZiZWNjMTAyYmRkLi5kNTQw
NjE0MGRmNGFjMzc2Y2M3NmY4Y2YzNDUwN2QwMjJiOTE5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0wMS0wMyAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5j
b2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0RW5jb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0UlRQ
RnJhZ21lbnRhdGlvbkhlYWRlcjo6dmFsdWUpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvOjpkZWNvZGUpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRFbmNvZGVkRnJh
bWVJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyKToKKyAgICAgICAgKHdl
YnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbTogQWRkZWQuCisg
ICAgICAgICh3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0OjpDcmVhdGVW
aWRlb0VuY29kZXIpOgorICAgICAgICAod2VicnRjOjp2aWRlb0VuY29kZXJDYWxsYmFja3MpOgor
ICAgICAgICAod2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MpOgorICAgICAgICAod2Vi
cnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlJlbW90ZVZpZGVvRW5jb2Rlcik6CisgICAgICAgICh3
ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6SW5pdEVuY29kZSk6CisgICAgICAgICh3ZWJydGM6
OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVsZWFzZSk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZp
ZGVvRW5jb2Rlcjo6RW5jb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVy
OjpTZXRSYXRlcyk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6R2V0RW5j
b2RlckluZm8gY29uc3QpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlJl
Z2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZp
ZGVvRW5jb2Rlcjo6ZW5jb2RlQ29tcGxldGUpOgorICAgICAgICAod2VicnRjOjpjcmVhdGVMb2Nh
bEVuY29kZXIpOgorICAgICAgICAod2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKToKKyAgICAg
ICAgKHdlYnJ0Yzo6aW5pdGlhbGl6ZUxvY2FsRW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OmVu
Y29kZUxvY2FsRW5jb2RlckZyYW1lKToKKyAgICAgICAgKHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVy
UmF0ZXMpOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVz
Lm1tOgorICAgICAgICAqIGxpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE5LTEyLTMxICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgdHJhbnNjZWl2ZXIgc2V0Q29kZWNQcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgy
OWJiZjJjZWU4OTBlMDZiYjU2YmRhM2U2MzVhMTI5ZTBjYTU0YmIuLjYyZTcxMjkwYTQ0NmVkOTE4
MmMwZGU4NzMzODRjNmQ0NTQyZjQ0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
MC0wMS0wMyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFJUQyBWVEIgZW5jb2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4
ZWxCdWZmZXIpOgorCiAyMDE5LTEyLTMxICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBcHBseSByb3RhdGlvbiBhdCBzb3VyY2UgbGV2ZWwgaWYgV2ViUlRDIHNp
bmsgYXNrIHNvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhkMGRmYTk0NWQ5MDk5ZTM4ZDNlMmQ1NmNlOTE5NDZhMjhh
Njk0YTAuLjlhYjgwM2MyYzFhZWE5ZDc0M2U5OGIwYWE2ZjRiZDZhNjU0NDM0Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDEtMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSVEMgVlRCIGVuY29kZXJzIGluIEdQVVByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTcx
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5Ojp+TGliV2ViUlRDQ29kZWNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVmlk
ZW9FbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVZpZGVvRW5jb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OmluaXRpYWxpemVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0Ojpl
bmNvZGVWaWRlb0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6c2V0RW5jb2RlUmF0ZXNDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjczo6ZmFpbGVkRGVjb2RpbmcpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzOjpjcmVhdGVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNz
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6aW5p
dGlhbGl6ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmVuY29k
ZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpyZWdpc3RlckVuY29k
ZUZyYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldEVu
Y29kZVJhdGVzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWRF
bmNvZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oLgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnBpeGVs
QnVmZmVyUG9vbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJ
ZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJv
dmlkZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKwogMjAxOS0xMi0zMSAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbHkgcm90YXRpb24gYXQgc291cmNl
IGxldmVsIGlmIFdlYlJUQyBzaW5rIGFzayBzbwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4
IGVhNzg5ZTJjNWQzMjk1MWViNmRmNGNhNWE4ZjQ3M2ZmOTExNmM1ZWIuLmYzYjI2ZmU5MmY0M2U4
NzJlNWI1Y2UwNWZjNWY0MTg4NzViOTczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAg
LTI2OCwzICsyNjgsMTcgQEAgX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KIF9fWk42
d2VicnRjMThSZW1vdGVWaWRlb0RlY29kZXIxNGRlY29kZUNvbXBsZXRlRVB2alAxMF9fQ1ZCdWZm
ZXJqCiBfX1pONndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2Rw
VmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9qUEtobUVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE4
UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgorX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxi
YWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBf
UzBfRQorX19aTjZ3ZWJydGMxOFJ0cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjJS
VFBGcmFnbWVudGF0aW9uSGVhZGVyRDFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25I
ZWFkZXJDMUV2CitfX1pONndlYnJ0YzE4UmVtb3RlVmlkZW9FbmNvZGVyMTRlbmNvZGVDb21wbGV0
ZUVQdlBobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFnbWVudGF0
aW9uSGVhZGVyRQorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVzaXplRW0K
K19fWk42d2VicnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRl
b0Zvcm1hdEVFUEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05TXzEwVmlk
ZW9GcmFtZUViRVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRlQ29udHJv
bFBhcmFtZXRlcnNFRQorX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2amoKK19f
Wk42d2VicnRjMjJpbml0aWFsaXplTG9jYWxFbmNvZGVyRVB2dHRqampqCitfX1pONndlYnJ0YzE0
U2RwVmlkZW9Gb3JtYXRDMUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFp
dHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUVSS05TMV8zbWFwSVM3X1M3X05TMV80bGVzc0lTN19F
RU5TNV9JTlMxXzRwYWlySVM4X1M3X0VFRUVFRQorX19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2FsRW5j
b2RlckVSS05TXzE0U2RwVmlkZW9Gb3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJLTlNfMjJX
ZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFRQorX19a
TjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0RDFFdgorX19aTjZ3ZWJydGMyM2VuY29kZUxvY2FsRW5j
b2RlckZyYW1lRVB2UDEwX19DVkJ1ZmZlcmIKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNv
ZGVyRVB2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZWE3ODllMmM1ZDMyOTUx
ZWI2ZGY0Y2E1YThmNDczZmY5MTE2YzVlYi4uZjNiMjZmZTkyZjQzZTg3MmU1YjVjZTA1ZmM1ZjQx
ODg3NWI5NzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMjY4LDMgKzI2
OCwxNyBAQCBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQogX19aTjZ3ZWJydGMxOFJl
bW90ZVZpZGVvRGVjb2RlcjE0ZGVjb2RlQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKIF9fWk42
d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1h
dEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMThSdHBDb2RlY0Nh
cGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZS
S05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9qUEtobUVQRmlTMF9TMF9FCitfX1pO
NndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50
YXRpb25IZWFkZXJEMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckMxRXYK
K19fWk42d2VicnRjMThSZW1vdGVWaWRlb0VuY29kZXIxNGVuY29kZUNvbXBsZXRlRVB2UGhtUktO
U18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FUEtOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJF
CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlcjZSZXNpemVFbQorX19aTjZ3ZWJy
dGMyNHNldFZpZGVvRW5jb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQ
RmlTMF9FUEZpUzBfUktOU18xMFZpZGVvQ29kZWNFRVBGaVMwX1JLTlNfMTBWaWRlb0ZyYW1lRWJF
UEZpUzBfUzBfRVBGdlMwX1JLTlNfMTJWaWRlb0VuY29kZXIyMVJhdGVDb250cm9sUGFyYW1ldGVy
c0VFCitfX1pONndlYnJ0YzIwc2V0TG9jYWxFbmNvZGVyUmF0ZXNFUHZqagorX19aTjZ3ZWJydGMy
MmluaXRpYWxpemVMb2NhbEVuY29kZXJFUHZ0dGpqamoKK19fWk42d2VicnRjMTRTZHBWaWRlb0Zv
cm1hdEMxRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFf
OWFsbG9jYXRvckljRUVFRVJLTlMxXzNtYXBJUzdfUzdfTlMxXzRsZXNzSVM3X0VFTlM1X0lOUzFf
NHBhaXJJUzhfUzdfRUVFRUVFCitfX1pONndlYnJ0YzE4Y3JlYXRlTG9jYWxFbmNvZGVyRVJLTlNf
MTRTZHBWaWRlb0Zvcm1hdEVVMTNibG9ja19wb2ludGVyRnZQS2htUktOU18yMldlYktpdEVuY29k
ZWRGcmFtZUluZm9FUE5TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckVFCitfX1pONndlYnJ0YzE0
U2RwVmlkZW9Gb3JtYXREMUV2CitfX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVF
UHZQMTBfX0NWQnVmZmVyYgorX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCBlYTc4OWUyYzVkMzI5NTFlYjZkZjRjYTVhOGY0NzNm
ZjkxMTZjNWViLi43OTY4YTcyYzE5NWJlNmQ4ZTQ5MmQ5NDBmNTc3NzgwY2JiYTIwYWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0yNjgsMyArMjY4LDE1IEBAIF9fWk42d2VicnRjMTFk
ZWNvZGVGcmFtZUVQdmpQS2htCiBfX1pONndlYnJ0YzE4UmVtb3RlVmlkZW9EZWNvZGVyMTRkZWNv
ZGVDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2Rl
ckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1F
UEZpUzBfUzBfRQogX19aTjZ3ZWJydGMxOFJ0cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2Vi
cnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRDFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50
YXRpb25IZWFkZXJDMUV2CitfX1pONndlYnJ0YzE4UmVtb3RlVmlkZW9FbmNvZGVyMTRlbmNvZGVD
b21wbGV0ZUVQdlBobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFn
bWVudGF0aW9uSGVhZGVyRQorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVz
aXplRW0KK19fWk42d2VicnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRT
ZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05T
XzEwVmlkZW9GcmFtZUViRVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRl
Q29udHJvbFBhcmFtZXRlcnNFRQorX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2
amoKK19fWk42d2VicnRjMjJpbml0aWFsaXplTG9jYWxFbmNvZGVyRVB2dHRqampqCitfX1pONndl
YnJ0YzE0U2RwVmlkZW9Gb3JtYXRDMUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hh
cl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJY0VFRUVSS05TMV8zbWFwSVM3X1M3X05TMV80bGVz
c0lTN19FRU5TNV9JTlMxXzRwYWlySVM4X1M3X0VFRUVFRQorX19aTjZ3ZWJydGMxOGNyZWF0ZUxv
Y2FsRW5jb2RlckVSS05TXzE0U2RwVmlkZW9Gb3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJL
TlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJF
RQorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0RDFFdgorX19aTjZ3ZWJydGMyM2VuY29kZUxv
Y2FsRW5jb2RlckZyYW1lRVB2UDEwX19DVkJ1ZmZlcmIKK19fWk42d2VicnRjMTlyZWxlYXNlTG9j
YWxFbmNvZGVyRVB2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc5NGMxODhkNGFlYWEwODZlOTIyYTI2M2RlMGU2NzkyYjRhZmE4NjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdEVuY29kZXIuaApAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgi
CisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNp
bmNsdWRlICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5j
bHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzLmgiCisKK3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBz
dHJ1Y3QgX19DVkJ1ZmZlcio7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBFbmNvZGVk
SW1hZ2VDYWxsYmFjazsKK2NsYXNzIFZpZGVvQ29kZWM7CitjbGFzcyBWaWRlb0ZyYW1lOworc3Ry
dWN0IFNkcFZpZGVvRm9ybWF0OworY2xhc3MgU2V0dGluZ3M7CisKK2NsYXNzIFZpZGVvRW5jb2Rl
ckZhY3RvcnlXaXRoU2ltdWxjYXN0IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3Rvcnkg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0
KHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiYmIGZhY3RvcnkpCisgICAgICAg
IDogbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5KHN0ZDo6bW92ZShmYWN0b3J5KSkKKyAgICB7Cisg
ICAgfQorCisgICAgVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNv
ZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aW50ZXJuYWxFbmNvZGVyRmFjdG9yeS0+UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0
IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIGZpbmFsOworIAorICAgIHN0ZDo6dmVjdG9yPFNkcFZp
ZGVvRm9ybWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
bnRlcm5hbEVuY29kZXJGYWN0b3J5LT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7IH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRl
cm5hbEVuY29kZXJGYWN0b3J5OworfTsKKwordXNpbmcgV2ViS2l0VmlkZW9FbmNvZGVyID0gdm9p
ZCo7Cit1c2luZyBWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayA9IFdlYktpdFZpZGVvRW5jb2Rl
cigqKShjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KTsKK3VzaW5nIFZpZGVvRW5jb2RlclJl
bGVhc2VDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyKTsKK3VzaW5nIFZp
ZGVvRW5jb2RlckluaXRpYWxpemVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNv
ZGVyLCBjb25zdCBWaWRlb0NvZGVjJik7Cit1c2luZyBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFj
ayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0ZyYW1lJiwgYm9v
bCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5j
b2RlQ29tcGxldGVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCB2b2lk
KiBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7Cit1c2luZyBWaWRlb0VuY29kZXJTZXRSYXRlc0NhbGxi
YWNrID0gdm9pZCgqKShXZWJLaXRWaWRlb0VuY29kZXIsIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UmF0
ZUNvbnRyb2xQYXJhbWV0ZXJzJik7CisKK3ZvaWQgc2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKFZp
ZGVvRW5jb2RlckNyZWF0ZUNhbGxiYWNrLCBWaWRlb0VuY29kZXJSZWxlYXNlQ2FsbGJhY2ssIFZp
ZGVvRW5jb2RlckluaXRpYWxpemVDYWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2ss
IFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywgVmlkZW9FbmNvZGVy
U2V0UmF0ZXNDYWxsYmFjayk7CisKK3VzaW5nIFdlYktpdEVuY29kZWRGcmFtZVRpbWluZyA9IEVu
Y29kZWRJbWFnZTo6VGltaW5nOworc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm8geworICAg
IHVpbnQzMl90IHdpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IGhlaWdodCB7IDAgfTsKKyAgICBp
bnQ2NF90IHRpbWVTdGFtcCB7IDAgfTsKKyAgICBpbnQ2NF90IG50cFRpbWVNUyB7IDAgfTsKKyAg
ICBpbnQ2NF90IGNhcHR1cmVUaW1lTVMgeyAwIH07CisgICAgVmlkZW9GcmFtZVR5cGUgZnJhbWVU
eXBlIHsgVmlkZW9GcmFtZVR5cGU6OmtWaWRlb0ZyYW1lRGVsdGEgfTsKKyAgICBWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uIHsga1ZpZGVvUm90YXRpb25fMCB9OworICAgIFZpZGVvQ29udGVudFR5cGUg
Y29udGVudFR5cGUgeyBWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRCB9OworICAgIGJvb2wg
Y29tcGxldGVGcmFtZSA9IGZhbHNlOworICAgIGludCBxcCB7IC0xIH07CisgICAgV2ViS2l0RW5j
b2RlZEZyYW1lVGltaW5nIHRpbWluZzsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYktpdEVuY29kZWRGcmFtZUluZm8mKTsKK307
CisKK2NsYXNzIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIod2VicnRjOjpSVFBGcmFnbWVudGF0
aW9uSGVhZGVyKiA9IG51bGxwdHIpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYp
OworCisgICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiB2YWx1ZSgpIHsgcmV0dXJu
IG1fdmFsdWU7IH07CisKK3ByaXZhdGU6CisgICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJU
UEZyYWdtZW50YXRpb25IZWFkZXI+IG1fb3duZWRIZWFkZXI7Cit9OworCitjbGFzcyBSZW1vdGVW
aWRlb0VuY29kZXIgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIpOwor
ICAgIH5SZW1vdGVWaWRlb0VuY29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGVDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVu
Z3RoLCBjb25zdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiwgY29uc3Qgd2VicnRjOjpSVFBGcmFn
bWVudGF0aW9uSGVhZGVyKik7CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBJbml0RW5jb2RlKGNv
bnN0IFZpZGVvQ29kZWMqLCBjb25zdCBTZXR0aW5ncyYpIGZpbmFsOworICAgIGludDMyX3QgUmVn
aXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKikgZmluYWw7
CisgICAgaW50MzJfdCBSZWxlYXNlKCkgZmluYWw7CisgICAgaW50MzJfdCBFbmNvZGUoY29uc3Qg
VmlkZW9GcmFtZSYsIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiopIGZpbmFsOwor
ICAgIHZvaWQgU2V0UmF0ZXMoY29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJikgZmluYWw7Cisg
ICAgRW5jb2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBmaW5hbDsKKworICAgIFdlYktp
dFZpZGVvRW5jb2RlciBtX2ludGVybmFsRW5jb2RlcjsKK307CisKK3VzaW5nIExvY2FsRW5jb2Rl
ciA9IHZvaWQqOwordXNpbmcgTG9jYWxFbmNvZGVyQ2FsbGJhY2sgPSB2b2lkICheKShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRG
cmFtZUluZm8mLCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqKTsKK3ZvaWQqIGNyZWF0
ZUxvY2FsRW5jb2Rlcihjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiwgTG9jYWxFbmNvZGVy
Q2FsbGJhY2spOwordm9pZCByZWxlYXNlTG9jYWxFbmNvZGVyKExvY2FsRW5jb2Rlcik7Cit2b2lk
IGluaXRpYWxpemVMb2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWlu
dDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4
Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7
Cit2b2lkIGVuY29kZUxvY2FsRW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZl
clJlZiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQpOwordm9pZCBzZXRMb2NhbEVuY29kZXJSYXRl
cyhMb2NhbEVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdlYktpdEVuY29kZWRGcmFtZUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiBpbmZvKQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby53aWR0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaGVpZ2h0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1lU3RhbXApKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm50cFRpbWVNUykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uY2Fw
dHVyZVRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShpbmZvLmZyYW1lVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShpbmZvLnJvdGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGluZm8uY29udGVudFR5cGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmNvbXBsZXRlRnJh
bWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZv
LnFwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShp
bmZvLnRpbWluZy5mbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZW5jb2RlX3N0YXJ0X21zKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5lbmNvZGVfZmlu
aXNoX21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbmZvLnRpbWluZy5wYWNrZXRpemF0aW9uX2ZpbmlzaF9tcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucGFjZXJfZXhpdF9t
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5m
by50aW1pbmcubmV0d29ya190aW1lc3RhbXBfbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9t
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5m
by50aW1pbmcucmVjZWl2ZV9zdGFydF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHdpZHRoOworICAgIGVuY29kZXIgPDwgaGVpZ2h0OworICAgIGVuY29kZXIgPDwg
dGltZVN0YW1wOworICAgIGVuY29kZXIgPDwgbnRwVGltZU1TOworICAgIGVuY29kZXIgPDwgY2Fw
dHVyZVRpbWVNUzsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oZnJhbWVUeXBlKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUVudW0ocm90YXRpb24pOworICAgIGVuY29kZXIuZW5jb2RlRW51bShjb250ZW50
VHlwZSk7CisgICAgZW5jb2RlciA8PCBjb21wbGV0ZUZyYW1lOworICAgIGVuY29kZXIgPDwgcXA7
CisKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5mbGFnczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5l
bmNvZGVfc3RhcnRfbXM7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuZW5jb2RlX2ZpbmlzaF9tczsK
KyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNrZXRpemF0aW9uX2ZpbmlzaF9tczsKKyAgICBlbmNv
ZGVyIDw8IHRpbWluZy5wYWNlcl9leGl0X21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLm5ldHdv
cmtfdGltZXN0YW1wX21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLm5ldHdvcmsyX3RpbWVzdGFt
cF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5yZWNlaXZlX3N0YXJ0X21zOworICAgIGVuY29k
ZXIgPDwgdGltaW5nLnJlY2VpdmVfZmluaXNoX21zOworfQorCitpbmxpbmUgV2ViS2l0UlRQRnJh
Z21lbnRhdGlvbkhlYWRlcjo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcih3ZWJydGM6OlJU
UEZyYWdtZW50YXRpb25IZWFkZXIqIGhlYWRlcikKKyAgICA6IG1fdmFsdWUoaGVhZGVyKQorewor
fQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXZWJLaXRSVFBGcmFnbWVudGF0aW9u
SGVhZGVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
ICEhbV92YWx1ZTsKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLT5TaXplKCkpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlLT5TaXplKCk7ICsraSkgeworICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLT5PZmZzZXQoaSkpOworICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLT5MZW5ndGgoaSkpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgV2ViS2l0UlRQRnJhZ21l
bnRhdGlvbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYktpdFJUUEZyYWdtZW50
YXRpb25IZWFkZXImIGhlYWRlcikKK3sKKyAgICBib29sIGlzTnVsbDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGlzTnVsbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAo
aXNOdWxsKSB7CisgICAgICAgIGhlYWRlci5tX3ZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBoZWFkZXIubV9vd25l
ZEhlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVy
PigpOworICAgIGhlYWRlci5tX3ZhbHVlID0gaGVhZGVyLm1fb3duZWRIZWFkZXIuZ2V0KCk7CisK
KyAgICBoZWFkZXIubV92YWx1ZS0+VmVyaWZ5QW5kQWxsb2NhdGVGcmFnbWVudGF0aW9uSGVhZGVy
KHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhZGVyLm1fdmFsdWUtPlNpemUo
KTsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOworICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBoZWFkZXIubV92YWx1ZS0+ZnJhZ21lbnRhdGlvbk9mZnNldFtpXSA9IG9m
ZnNldDsKKyAgICAgICAgaGVhZGVyLm1fdmFsdWUtPmZyYWdtZW50YXRpb25MZW5ndGhbaV0gPSBs
ZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RW5jb2Rlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzBjZjY5YzBjZmI0MDhlZDY2
ZDdjZGU1MzFhYjA3YzMxYThjMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tCkBA
IC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYktpdEVuY29kZXIuaCIK
KworI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRl
b19mcmFtZS5oIgorI2luY2x1ZGUgImNvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVj
aWZpY0luZm9IMjY0K1ByaXZhdGUuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91
dGlsaXR5L3NpbXVsY2FzdF91dGlsaXR5LmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJj
b25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMv
YXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgor
I2luY2x1ZGUgInNkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0NvZGVjSW5mbytQ
cml2YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVv
RW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCIKKyNpbmNsdWRlICJzZGsvb2JqYy9jb21wb25lbnRz
L3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQuaCIKKyNpbmNsdWRlICJzZGsvb2JqYy9u
YXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitz
dGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVs
Y2FzdDo6Q3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpCit7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW5jb2RlclNpbXVsY2FzdFByb3h5PihtX2lu
dGVybmFsRW5jb2RlckZhY3RvcnkuZ2V0KCksIGZvcm1hdCk7Cit9CisKK3N0cnVjdCBWaWRlb0Vu
Y29kZXJDYWxsYmFja3MgeworICAgIFZpZGVvRW5jb2RlckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNh
bGxiYWNrOworICAgIFZpZGVvRW5jb2RlclJlbGVhc2VDYWxsYmFjayByZWxlYXNlQ2FsbGJhY2s7
CisgICAgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemVDYWxsYmFjazsK
KyAgICBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayBlbmNvZGVDYWxsYmFjazsKKyAgICBWaWRl
b0VuY29kZXJSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2sgcmVnaXN0ZXJFbmNvZGVDb21w
bGV0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2RlclNldFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXND
YWxsYmFjazsKK307CisKK3N0YXRpYyBWaWRlb0VuY29kZXJDYWxsYmFja3MmIHZpZGVvRW5jb2Rl
ckNhbGxiYWNrcygpIHsKKyAgICBzdGF0aWMgVmlkZW9FbmNvZGVyQ2FsbGJhY2tzIGNhbGxiYWNr
czsKKyAgICByZXR1cm4gY2FsbGJhY2tzOworfQorCit2b2lkIHNldFZpZGVvRW5jb2RlckNhbGxi
YWNrcyhWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayBjcmVhdGVDYWxsYmFjaywgVmlkZW9FbmNv
ZGVyUmVsZWFzZUNhbGxiYWNrIHJlbGVhc2VDYWxsYmFjaywgVmlkZW9FbmNvZGVySW5pdGlhbGl6
ZUNhbGxiYWNrIGluaXRpYWxpemVDYWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2sg
ZW5jb2RlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFj
ayByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclNldFJhdGVzQ2Fs
bGJhY2sgc2V0UmF0ZXNDYWxsYmFjaykKK3sKKyAgICBhdXRvJiBjYWxsYmFja3MgPSB2aWRlb0Vu
Y29kZXJDYWxsYmFja3MoKTsKKyAgICBjYWxsYmFja3MuY3JlYXRlQ2FsbGJhY2sgPSBjcmVhdGVD
YWxsYmFjazsKKyAgICBjYWxsYmFja3MucmVsZWFzZUNhbGxiYWNrID0gcmVsZWFzZUNhbGxiYWNr
OworICAgIGNhbGxiYWNrcy5pbml0aWFsaXplQ2FsbGJhY2sgPSBpbml0aWFsaXplQ2FsbGJhY2s7
CisgICAgY2FsbGJhY2tzLmVuY29kZUNhbGxiYWNrID0gZW5jb2RlQ2FsbGJhY2s7CisgICAgY2Fs
bGJhY2tzLnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayA9IHJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjazsKKyAgICBjYWxsYmFja3Muc2V0UmF0ZXNDYWxsYmFjayA9IHNldFJhdGVz
Q2FsbGJhY2s7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKFdl
YktpdFZpZGVvRW5jb2RlciBpbnRlcm5hbEVuY29kZXIpCisgICAgOiBtX2ludGVybmFsRW5jb2Rl
cihpbnRlcm5hbEVuY29kZXIpCit7Cit9CisKK2ludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJ
bml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVjLCBjb25zdCBTZXR0aW5ncyYpCit7Cisg
ICAgaWYgKFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9mU2ltdWxjYXN0U3RyZWFtcygqY29kZWMp
ID4gMSkKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJfU0lNVUxDQVNUX1BB
UkFNRVRFUlNfTk9UX1NVUFBPUlRFRDsKKworICAgIHJldHVybiB2aWRlb0VuY29kZXJDYWxsYmFj
a3MoKS5pbml0aWFsaXplQ2FsbGJhY2sobV9pbnRlcm5hbEVuY29kZXIsICpjb2RlYyk7Cit9CisK
K2ludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpSZWxlYXNlKCkKK3sKKyAgICByZXR1cm4gdmlk
ZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyKTsK
K30KKworaW50MzJfdCBSZW1vdGVWaWRlb0VuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1l
JiBmcmFtZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZVR5cGU+KiBmcmFtZVR5cGVzKQor
eworICAgIGJvb2wgc2hvdWxkRW5jb2RlS2V5RnJhbWUgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZyYW1lVHlwZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChmcmFt
ZVR5cGVzLT5hdChpKSA9PSBWaWRlb0ZyYW1lVHlwZTo6a1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAg
ICAgICAgIHNob3VsZEVuY29kZUtleUZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpLmVu
Y29kZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBmcmFtZSwgc2hvdWxkRW5jb2RlS2V5RnJh
bWUpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRW5jb2Rlcjo6U2V0UmF0ZXMoY29uc3QgUmF0ZUNv
bnRyb2xQYXJhbWV0ZXJzJiByYXRlcykKK3sKKyAgICB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5z
ZXRSYXRlc0NhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCByYXRlcyk7Cit9CisKK1JlbW90ZVZp
ZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gUmVtb3RlVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVySW5m
bygpIGNvbnN0Cit7CisgICAgRW5jb2RlckluZm8gaW5mbzsKKyAgICBpbmZvLnN1cHBvcnRzX25h
dGl2ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJSZW1v
dGVWaWRlb1Rvb2xCb3giOworCisgICAgLy8gRklYTUU6IHByb3ZpZGUgc2NhbGluZyBzZXR0aW5n
cy4KKyAgICBpbmZvLnNjYWxpbmdfc2V0dGluZ3MgPSBTY2FsaW5nU2V0dGluZ3M6OmtPZmY7CisK
KyAgICBpbmZvLmlzX2hhcmR3YXJlX2FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBpbmZvLmhhc19p
bnRlcm5hbF9zb3VyY2UgPSBmYWxzZTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworaW50MzJfdCBS
ZW1vdGVWaWRlb0VuY29kZXI6OlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVk
SW1hZ2VDYWxsYmFjayogY2FsbGJhY2spCit7CisgICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxi
YWNrcygpLnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhtX2ludGVybmFsRW5jb2Rlciwg
Y2FsbGJhY2spOworfQorCit2b2lkIFJlbW90ZVZpZGVvRW5jb2Rlcjo6ZW5jb2RlQ29tcGxldGUo
dm9pZCogY2FsbGJhY2ssIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgY29uc3QgV2Vi
S2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9u
SGVhZGVyKiBoZWFkZXIpCit7CisgICAgd2VicnRjOjpFbmNvZGVkSW1hZ2UgZW5jb2RlZEltYWdl
KGJ1ZmZlciwgbGVuZ3RoLCBsZW5ndGgpOworICAgIGVuY29kZWRJbWFnZS5fZW5jb2RlZFdpZHRo
ID0gaW5mby53aWR0aDsKKyAgICBlbmNvZGVkSW1hZ2UuX2VuY29kZWRIZWlnaHQgPSBpbmZvLmhl
aWdodDsKKyAgICBlbmNvZGVkSW1hZ2UuU2V0VGltZXN0YW1wKGluZm8udGltZVN0YW1wKTsKKyAg
ICBlbmNvZGVkSW1hZ2UuY2FwdHVyZV90aW1lX21zXyA9IGluZm8uY2FwdHVyZVRpbWVNUzsKKyAg
ICBlbmNvZGVkSW1hZ2UubnRwX3RpbWVfbXNfID0gaW5mby5udHBUaW1lTVM7CisgICAgZW5jb2Rl
ZEltYWdlLnRpbWluZ18gPSBpbmZvLnRpbWluZzsKKyAgICBlbmNvZGVkSW1hZ2UuX2ZyYW1lVHlw
ZSA9IGluZm8uZnJhbWVUeXBlOworICAgIGVuY29kZWRJbWFnZS5yb3RhdGlvbl8gPSBpbmZvLnJv
dGF0aW9uOworICAgIGVuY29kZWRJbWFnZS5fY29tcGxldGVGcmFtZSA9IGluZm8uY29tcGxldGVG
cmFtZTsKKyAgICBlbmNvZGVkSW1hZ2UucXBfID0gaW5mby5xcDsKKyAgICBlbmNvZGVkSW1hZ2Uu
Y29udGVudF90eXBlXyA9IGluZm8uY29udGVudFR5cGU7CisKKyAgICBDb2RlY1NwZWNpZmljSW5m
byBjb2RlY1NwZWNpZmljSW5mbzsKKyAgICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1R5cGUgPSB3
ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsKKyAgICAvLyBGSVhNRTogRW5zdXJlIHRoaXMgaXMgdGhl
IHJpZ2h0IHBhY2tldGl6YXRpb24gbW9kZSwgb3IgcGFzcyBpdCBhcyBhIHBhcmFtZXRlci4KKyAg
ICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1NwZWNpZmljLkgyNjQucGFja2V0aXphdGlvbl9tb2Rl
ID0gSDI2NFBhY2tldGl6YXRpb25Nb2RlOjpOb25JbnRlcmxlYXZlZDsKKworICAgIHN0YXRpY19j
YXN0PEVuY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2spLT5PbkVuY29kZWRJbWFnZShlbmNv
ZGVkSW1hZ2UsICZjb2RlY1NwZWNpZmljSW5mbywgaGVhZGVyKTsKK30KKwordm9pZCogY3JlYXRl
TG9jYWxFbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCwgTG9jYWxF
bmNvZGVyQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgYXV0byAqY29kZWNJbmZvID0gW1tSVENW
aWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYXRpdmVTZHBWaWRlb0Zvcm1hdDogZm9ybWF0
XTsKKyAgICBhdXRvICplbmNvZGVyID0gW1tSVENWaWRlb0VuY29kZXJIMjY0IGFsbG9jXSBpbml0
V2l0aENvZGVjSW5mbzpjb2RlY0luZm9dOworICAgIAorICAgIFtlbmNvZGVyIHNldENhbGxiYWNr
Ol5CT09MKFJUQ0VuY29kZWRJbWFnZSAqX05vbm51bGwgZnJhbWUsIGlkPFJUQ0NvZGVjU3BlY2lm
aWNJbmZvPiBfTm9ubnVsbCBjb2RlY1NwZWNpZmljSW5mbywgIFJUQ1J0cEZyYWdtZW50YXRpb25I
ZWFkZXIgKl9Ob25udWxsIGhlYWRlcikgeworICAgICAgICBFbmNvZGVkSW1hZ2UgZW5jb2RlZElt
YWdlID0gW2ZyYW1lIG5hdGl2ZUVuY29kZWRJbWFnZV07CisKKyAgICAgICAgV2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mbyBpbmZvOworICAgICAgICBpbmZvLndpZHRoID0gZW5jb2RlZEltYWdlLl9lbmNv
ZGVkV2lkdGg7CisgICAgICAgIGluZm8uaGVpZ2h0ID0gZW5jb2RlZEltYWdlLl9lbmNvZGVkSGVp
Z2h0OworICAgICAgICBpbmZvLnRpbWVTdGFtcCA9IGVuY29kZWRJbWFnZS5UaW1lc3RhbXAoKTsK
KyAgICAgICAgaW5mby5udHBUaW1lTVMgPSBlbmNvZGVkSW1hZ2UubnRwX3RpbWVfbXNfOworICAg
ICAgICBpbmZvLmNhcHR1cmVUaW1lTVMgPSBlbmNvZGVkSW1hZ2UuY2FwdHVyZV90aW1lX21zXzsK
KyAgICAgICAgaW5mby5mcmFtZVR5cGUgPSBlbmNvZGVkSW1hZ2UuX2ZyYW1lVHlwZTsKKyAgICAg
ICAgaW5mby5yb3RhdGlvbiA9IGVuY29kZWRJbWFnZS5yb3RhdGlvbl87CisgICAgICAgIGluZm8u
Y29udGVudFR5cGUgPSBlbmNvZGVkSW1hZ2UuY29udGVudF90eXBlXzsKKyAgICAgICAgaW5mby5j
b21wbGV0ZUZyYW1lID0gZW5jb2RlZEltYWdlLl9jb21wbGV0ZUZyYW1lOworICAgICAgICBpbmZv
LnFwID0gZW5jb2RlZEltYWdlLnFwXzsKKyAgICAgICAgaW5mby50aW1pbmcgPSBlbmNvZGVkSW1h
Z2UudGltaW5nXzsKKworICAgICAgICBjYWxsYmFjayhlbmNvZGVkSW1hZ2UuZGF0YSgpLCBlbmNv
ZGVkSW1hZ2Uuc2l6ZSgpLCBpbmZvLCBbaGVhZGVyIGNyZWF0ZU5hdGl2ZUZyYWdtZW50YXRpb25I
ZWFkZXJdLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9XTsKKworICAgIHJldHVy
biAoX19icmlkZ2VfcmV0YWluZWQgdm9pZCopZW5jb2RlcjsKKworfQorCit2b2lkIHJlbGVhc2VM
b2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyIGxvY2FsRW5jb2RlcikKK3sKKyAgICBhdXRvICplbmNv
ZGVyID0gKF9fYnJpZGdlX3RyYW5zZmVyIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNv
ZGVyKTsKKyAgICBbZW5jb2RlciByZWxlYXNlRW5jb2Rlcl07Cit9CisKK3ZvaWQgaW5pdGlhbGl6
ZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwg
dWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQg
bWF4Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0
ZSkKK3sKKyAgICAvLyBNYXliZSB3ZSBzaG91bGQgSVBDOjplbmNvZGUvZGVjb2RlIFZpZGVvQ29k
ZWMgc3RydWN0dXJlcy4KKyAgICB3ZWJydGM6OlZpZGVvQ29kZWMgY29kZWNTZXR0aW5nczsKKyAg
ICBjb2RlY1NldHRpbmdzLndpZHRoID0gd2lkdGg7CisgICAgY29kZWNTZXR0aW5ncy5oZWlnaHQg
PSBoZWlnaHQ7CisgICAgY29kZWNTZXR0aW5ncy5zdGFydEJpdHJhdGUgPSBzdGFydEJpdHJhdGU7
CisgICAgY29kZWNTZXR0aW5ncy5tYXhCaXRyYXRlID0gbWF4Qml0cmF0ZTsKKyAgICBjb2RlY1Nl
dHRpbmdzLm1pbkJpdHJhdGUgPSBtaW5CaXRyYXRlOworICAgIGNvZGVjU2V0dGluZ3MubWF4RnJh
bWVyYXRlID0gbWF4RnJhbWVyYXRlOworCisgICAgYXV0byAqZW5jb2RlciA9IChfX2JyaWRnZSBS
VENWaWRlb0VuY29kZXJIMjY0ICopKGxvY2FsRW5jb2Rlcik7CisgICAgW2VuY29kZXIgc3RhcnRF
bmNvZGVXaXRoU2V0dGluZ3M6W1tSVENWaWRlb0VuY29kZXJTZXR0aW5ncyBhbGxvY10gaW5pdFdp
dGhOYXRpdmVWaWRlb0NvZGVjOiZjb2RlY1NldHRpbmdzXSBudW1iZXJPZkNvcmVzOjFdOworfQor
Cit2b2lkIGVuY29kZUxvY2FsRW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciBsb2NhbEVuY29kZXIs
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIGJvb2wgaXNLZXlmcmFtZVJlcXVpcmVkKQor
eworICAgIE5TTXV0YWJsZUFycmF5PE5TTnVtYmVyICo+ICpydGNGcmFtZVR5cGVzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKKyAgICBpZiAoaXNLZXlmcmFtZVJlcXVpcmVkKQorICAgICAgICBb
cnRjRnJhbWVUeXBlcyBhZGRPYmplY3Q6QChSVENGcmFtZVR5cGUoUlRDRnJhbWVUeXBlVmlkZW9G
cmFtZUtleSkpXTsKKworICAgIC8vIEZJWE1FOiBQcm92aWRlIHJvdGF0aW9uIGFuZCB0aW1lU3Rh
bXA7CisgICAgYXV0byAqdmlkZW9GcmFtZSA9IFtbUlRDVmlkZW9GcmFtZSBhbGxvY10gaW5pdFdp
dGhCdWZmZXI6VG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcihwaXhlbEJ1ZmZlclRvRnJhbWUocGl4ZWxC
dWZmZXIpKSByb3RhdGlvbjpSVENWaWRlb1JvdGF0aW9uXzAgdGltZVN0YW1wTnM6MF07CisgICAg
YXV0byAqZW5jb2RlciA9IChfX2JyaWRnZSBSVENWaWRlb0VuY29kZXJIMjY0ICopKGxvY2FsRW5j
b2Rlcik7CisgICAgW2VuY29kZXIgZW5jb2RlOnZpZGVvRnJhbWUgY29kZWNTcGVjaWZpY0luZm86
bmlsIGZyYW1lVHlwZXM6cnRjRnJhbWVUeXBlc107Cit9CisKK3ZvaWQgc2V0TG9jYWxFbmNvZGVy
UmF0ZXMoTG9jYWxFbmNvZGVyIGxvY2FsRW5jb2RlciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMy
X3QgZnJhbWVSYXRlKQoreworICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2UgUlRDVmlkZW9F
bmNvZGVySDI2NCAqKShsb2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIHNldEJpdHJhdGU6Yml0
UmF0ZSBmcmFtZXJhdGU6ZnJhbWVSYXRlXTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLmgKaW5kZXggNmE1OGJhMTczYTYxMzIzOTFhYTE3ODIyZDQ2YmMw
NzkzNDU0MWQ0Mi4uYWI3Nzk0MmU2OTQ2YmRlMzAwMjk5MGEzYTI2YTEwMDFlZjYzMDUyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCkBAIC01MiwyMyArNTIs
NiBAQCBib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Q1ZQaXhlbEJ1ZmZlclJlZihzaXplX3QsIHNpemVfdCk+Jik7CiBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhl
bEJ1ZmZlclJlZik7CiAKLWNsYXNzIFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0IGZp
bmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgewotcHVibGljOgotICAgIGV4cGxpY2l0
IFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0KHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Vu
Y29kZXJGYWN0b3J5PiYmIGZhY3RvcnkpCi0gICAgICAgIDogbV9pbnRlcm5hbEVuY29kZXJGYWN0
b3J5KHN0ZDo6bW92ZShmYWN0b3J5KSkKLSAgICB7Ci0gICAgfQotCi0gICAgVmlkZW9FbmNvZGVy
RmFjdG9yeTo6Q29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0
JiBmb3JtYXQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeS0+
UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQp
IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW5jb2RlclNpbXVsY2FzdFByb3h5Piht
X2ludGVybmFsRW5jb2RlckZhY3RvcnkuZ2V0KCksIGZvcm1hdCk7IH0KLQotICAgIHN0ZDo6dmVj
dG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5LT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7IH0K
LQotcHJpdmF0ZToKLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9y
eT4gbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5OwotfTsKLQogdXNpbmcgV2ViS2l0VmlkZW9EZWNv
ZGVyID0gdm9pZCo7CiB1c2luZyBWaWRlb0RlY29kZXJDcmVhdGVDYWxsYmFjayA9IFdlYktpdFZp
ZGVvRGVjb2RlcigqKShjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KTsKIHVzaW5nIFZpZGVv
RGVjb2RlclJlbGVhc2VDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9EZWNvZGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KaW5kZXggMTIxZWRh
OThkOGZmZWIwNmE5ZjMwZGUzODgxMGQ3MDVkNDA2OGIwZC4uMTQwMmMyYmYzYTQxNzAzYWNiOGYz
ZDBmMWYwYTQzYTc5YWEzY2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZXdvcmsvTmF0aXZl
L2FwaS92aWRlb19kZWNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJGcmFtZXdvcmsvTmF0aXZl
L2FwaS92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKICNpbmNsdWRlICJWaWRlb1Byb2Nlc3NpbmdT
b2Z0TGluay5oIgorI2luY2x1ZGUgIldlYktpdEVuY29kZXIuaCIKIAogI2luY2x1ZGUgPG11dGV4
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGli
d2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTg0MDFkYTUzNzQ1ZDI5NDE4
NGM4ZjlhNjA5ZGZlZjk5M2IxZmUzMC4uZDU2MTQ1ZmZiYjczZWU1NzlhMzY3NjZmYjNjZTY1NDdh
NzkzNTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyNyw2ICsxMTI3
LDggQEAKIAkJNDE1NDQ5QjYyMUNBQzRDRTAwMUMwQTU1IC8qIHV0aWwuYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTQ0OUI1MjFDQUM0Q0UwMDFDMEE1
NSAvKiB1dGlsLmMgKi87IH07CiAJCTQxNTQ0OUI4MjFDQUM0RUMwMDFDMEE1NSAvKiBwMjU2LmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU0NDlCNzIx
Q0FDNEVDMDAxQzBBNTUgLyogcDI1Ni5jICovOyB9OwogCQk0MTU0NDlCQjIxQ0FDNUI0MDAxQzBB
NTUgLyogZWNkaF9leHRyYS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE1NDQ5QkEyMUNBQzVCMzAwMUMwQTU1IC8qIGVjZGhfZXh0cmEuYyAqLzsgfTsK
KwkJNDE1ODY0OTgyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTg2NDk2MjNCRTA1RTgwMEEw
QTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggKi87IH07CisJCTQxNTg2NDk5MjNCRTA1RTkwMEEwQTYx
RSAvKiBXZWJLaXRFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0g
Ki87IH07CiAJCTQxNUYxRkE2MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dh
aW5fYXBwbGllci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTA4QkU0MjEyNzJGODUwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBw
bGllci5jYyAqLzsgfTsKIAkJNDE1RjFGQTcyMTI3MkZCQTAwMDY0Q0JGIC8qIGFkYXB0aXZlX2Rp
Z2l0YWxfZ2Fpbl9hcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUEwOEJEQjIxMjcyRjg0MDAxRDVEN0IgLyogYWRhcHRpdmVfZGlnaXRhbF9n
YWluX2FwcGxpZXIuaCAqLzsgfTsKIAkJNDE1RjFGQTgyMTI3MkZCQTAwMDY0Q0JGIC8qIGFkYXB0
aXZlX21vZGVfbGV2ZWxfZXN0aW1hdG9yX2FnYy5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4QkU5MjEyNzJGODYwMDFENUQ3QiAvKiBhZGFwdGl2
ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2MuY2MgKi87IH07CkBAIC01MDQ3LDYgKzUwNDksOCBA
QAogCQk0MTU2NjdBMTIxNUJFNzc1MDAzMjI5NkEgLyogZGJnZm10LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGRiZ2ZtdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU2NjdBMjIxNUJFNzc1
MDAzMjI5NkEgLyogYmMtYWxpZ24uYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gImJjLWFsaWduLmMiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU2NjdBMzIxNUJFNzc2MDAzMjI5NkEgLyogc3lt
cmVjLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuYzsgcGF0aCA9IHN5bXJlYy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNTg2NDk3MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0RW5jb2Rl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RjFGQzUyMTI3MzA4RTAwMDY0
Q0JGIC8qIGF1ZGlvX3N0YXRlLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gYXVkaW9fc3RhdGUuY2M7IHBhdGggPSBjYWxsL2F1ZGlvX3N0YXRlLmNjOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTVGMUZEMDIxMjczMTNEMDAwNjRDQkYgLyogcmVjZWl2ZV90
aW1lX2NhbGN1bGF0b3IuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSByZWNlaXZlX3RpbWVfY2FsY3Vs
YXRvci5jYzsgcGF0aCA9IGNhbGwvcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUYxRkQxMjEyNzMxM0UwMDA2NENCRiAvKiBydHBfcGF5
bG9hZF9wYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnRwX3BheWxvYWRfcGFyYW1zLmg7IHBhdGgg
PSBjYWxsL3J0cF9wYXlsb2FkX3BhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTUyMiw2ICs5NTI2LDggQEAKIAkJCQk0MUVDRUFGQjIwNjQ2NjY0MDA5RDUxNDEgLyogVmlk
ZW9Qcm9jZXNzaW5nU29mdExpbmsuaCAqLywKIAkJCQk0MUVDRUFCQjIwNjQwM0MxMDA5RDUxNDEg
LyogV2ViS2l0VXRpbGl0aWVzLmggKi8sCiAJCQkJNDFFQ0VBQkQyMDY0MDQ5ODAwOUQ1MTQxIC8q
IFdlYktpdFV0aWxpdGllcy5tbSAqLywKKwkJCQk0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyog
V2ViS2l0RW5jb2Rlci5oICovLAorCQkJCTQxNTg2NDk3MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJL
aXRFbmNvZGVyLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBXZWJLaXQ7CiAJCQlwYXRoID0gc2Rr
L1dlYktpdDsKQEAgLTE1NTE4LDYgKzE1NTI0LDcgQEAKIAkJCQk0MTMxQzRGMjIzNEM4NjM5MDAy
OEE2MTUgLyogdGFza19xdWV1ZV9zdGRsaWIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMUQx
MjM0QjhBNEIwMDI4QTYxNSAvKiB0Y3BfcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMUMx
MkQyMzRCODlFMjAwMjhBNjE1IC8qIHRlbXBsYXRlX3V0aWwuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNTg2NDk4MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTlDODQzRDFGRTI0RTgwMDA0MEMzMEYgLyogdGVtcG9yYWxfbGF5ZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTMxQzEyODIzNEI4OUUyMDAyOEE2MTUgLyogdGhyZWFkLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTMxQzE1NDIzNEI4OUUyMDAyOEE2MTUgLyogdGhyZWFkX2Fubm90
YXRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTE3NzYxLDYgKzE3NzY4LDcgQEAKIAkJCQk1Q0RE
ODVCNjFFNDNCNUMwMDA2MjFFOTIgLyogc2VuZF9kZWxheV9zdGF0cy5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTVDREQ5MDYxMUU0M0QxMTIwMDYyMUU5MiAvKiBzZW5kX3NpZGVfYmFuZHdpZHRoX2Vz
dGltYXRpb24uY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODVCOTFFNDNCNUMwMDA2MjFFOTIg
Lyogc2VuZF9zdGF0aXN0aWNzX3Byb3h5LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE1ODY0OTky
M0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
MTI5OUI4QzIxMjczNjUxMDBCMzQxNEIgLyogc2VuZF90aW1lX2hpc3RvcnkuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REODk3MjFFNDNCRjNBMDA2MjFFOTIgLyogc2VuZGVyX3JlcG9ydC5jYyBp
biBTb3VyY2VzICovLAogCQkJCTQxRkNCQjI3MjFCMUY4N0UwMEE1REYyNyAvKiBzZW50X3BhY2tl
dC5jYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCmluZGV4IDNiNzQzMGZm
NGM4ZmY4YmQyNzRmYzZiMmVhZDdjZTViYzViMGU1ZGYuLjczODBmMDQyZjFhN2Q1MTBmYWZkZDhj
YmNkMDlhZGM1ZTVkMzJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKQEAgLTU2LDYgKzU2
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VS
ZWYsIGNvbnN0IEludFNpemUmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpp
bmRleCA4NjFhYzFkYjFiODZkOTVkNWU0NzBkYjQxOTE5MDg5ZWUzOGQ1NzMzLi4xNTM5N2FiN2Yy
NzhhZThkYzY5ZTMyNTIzNzY0ZmI4OGJmZWRkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
bW0KQEAgLTMwNyw2ICszMDcsMjAgQEAgQ0ZEaWN0aW9uYXJ5UmVmIEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmlvU3VyZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3UKICAgICByZXR1
cm4gbV9pb1N1cmZhY2VCdWZmZXJBdHRyaWJ1dGVzLmdldCgpOwogfQogCitSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIo
SU9TdXJmYWNlUmVmIHN1cmZhY2UpCit7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7CisgICAgYXV0
byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyQ3JlYXRlV2l0aElPU3VyZmFjZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBzdXJmYWNlLCBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhzdXJm
YWNlKSwgJnBpeGVsQnVmZmVyKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZlckNyZWF0ZVdpdGhJT1N1cmZhY2UgZmFpbGVkIHdpdGgg
ZXJyb3IgY29kZTogJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOworfQor
CiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKCFzdXJmYWNlIHx8ICFzZXRTaXplKHNpemUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0
L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCA3NDg5NjdlMjUxZWE5ZWIzYWQ0
YjljODZjYzM4Y2E5MDgwZmU5ZGE5Li4wZjlhZmVmN2NhZjlhMDJjNWFkNTIzZGViMjUxMjE5MzU5
YzA1NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZwpAQCAtMTM4LDcgKzEzOCw3IEBAIExJQldFQlJUQ19MSUJSQVJZX0RJUl9DT0NPQV9UT1VDSF9O
TyA9ICQoTElCV0VCUlRDX0xJQlJBUllfRElSX1VTRV9PVkVSUklERV9GUkFNCiBMSUJXRUJSVENf
TElCUkFSWV9ESVJfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX05PID0gJChXRUJDT1JFX0ZS
QU1FV09SS1NfRElSKS9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3M7CiBM
SUJXRUJSVENfTElCUkFSWV9ESVJfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICQo
V0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpOwogCi1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpIC1pZnJhbWV3b3JrIiQoU0RLX0RJUikkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZy
YW1ld29ya3MiICQoVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUykgJChBU0FOX09USEVSX0xERkxB
R1MpICQoRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MpICQoV0tfUkVMT0NBVEFCTEVfRlJB
TUVXT1JLX0xERkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaWZyYW1ld29y
ayIkKFNES19ESVIpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiAkKFVO
RVhQT1JURURfU1lNQk9MX0xERkxBR1MpICQoQVNBTl9PVEhFUl9MREZMQUdTKSAkKEZSQU1FV09S
S19BTkRfTElCUkFSWV9MREZMQUdTKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdT
KSAtWGxpbmtlciAtLW5vLWRlbWFuZ2xlOwogCiBSRUVYUE9SVEVEX0ZSQU1FV09SS19OQU1FUyA9
IFdlYktpdExlZ2FjeTsKIFJFRVhQT1JURURfRlJBTUVXT1JLX05BTUVTW3Nkaz1tYWNvc3gqXSA9
ICQoaW5oZXJpdGVkKSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IGY5ODgwMzk3ZWY4MTA5YmNm
ZmM1MmI3ZGI4NzU3MWY2NDZiYzQ3OGYuLjBmNzRiYjY1YTBmNWZhY2RkMTYxM2ZhNjNjODRkNDMy
YTM4NjVmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpA
QCAtMzYsOCArMzgsMTMgQEAgY2xhc3MgRGVjb2RlcjsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOworfQorCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIHVzaW5nIExvY2FsRGVjb2RlciA9IHZvaWQqOwordXNpbmcgTG9j
YWxFbmNvZGVyID0gdm9pZCo7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksOCArNjYs
MTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJf
dCB0aW1lU3RhbXAsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCisgICAgdm9pZCBjcmVh
dGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mKTsKKyAgICB2b2lkIHJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGluaXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVy
LCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUs
IHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZy
YW1lcmF0ZSk7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsK
KyAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBi
aXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOworCisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlvU3Vy
ZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3VyZmFjZVJlZik7CisKICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAg
SGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVj
b2RlcnM7CisgICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbEVu
Y29kZXI+IG1fZW5jb2RlcnM7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VU
cmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM3YTEzMzRkY2QwZDNhYTFkYjlkNTAxNTU0
ZjFhMzA5Y2M2NTcyNzAuLjJiMzRlNTY0MDVmMzg1MTZkODJjNTFkMjY5NGYyNTRhOWEzZWQ0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsMTIgQEAgbWVz
c2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRl
RGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkKQogICAgIFJlbGVhc2VEZWNv
ZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCiAgICAgRGVjb2RlRnJhbWUoV2Vi
S2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgdGltZVN0YW1wLCBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YSkKKworICAgIENyZWF0ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVy
SWRlbnRpZmllciBpZCwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRl
cnMpOworICAgIFJlbGVhc2VFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQp
CisgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwg
dWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1
bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFt
ZXJhdGUpCisgICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBib29sIHNob3VsZEVuY29kZUFzS2V5
RnJhbWUpCisgICAgU2V0RW5jb2RlUmF0ZXMoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBp
ZCwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCmluZGV4IDNhZmFiNmFmOGQ3ZjAzYjcyNDIzYmIzZjkwMmQ3ZWRhMWU2YTYwNjIu
LjQ2MDM2ZTcwZjA4NDQxNDA4YWVkNDU1YTA2MzVhYjVlNjhlMjYwZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZW1vdGVWaWRlb1NhbXBsZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVu
Y29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKQEAgLTQ4LDYgKzQ5LDggQEAgTGliV2ViUlRD
Q29kZWNzUHJveHk6On5MaWJXZWJSVENDb2RlY3NQcm94eSgpCiB7CiAgICAgZm9yIChhdXRvIGRl
Y29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKQogICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2Nh
bERlY29kZXIoZGVjb2Rlcik7CisgICAgZm9yIChhdXRvIGVuY29kZXIgOiBtX2VuY29kZXJzLnZh
bHVlcygpKQorICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CiB9
CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZURlY29kZXIoUlRDRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTc3LDYgKzgwLDYzIEBAIHZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVp
bnQzMl90CiAgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpGYWlsZWREZWNvZGluZyB7IGlkZW50aWZp
ZXIgfSwgMCk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiBwYXJhbWV0ZXJzKQoreworICAgIEFTU0VSVCghbV9lbmNvZGVycy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+IHJ0Y1BhcmFtZXRlcnM7CisgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBwYXJhbWV0
ZXJzKQorICAgICAgICBydGNQYXJhbWV0ZXJzLmVtcGxhY2UocGFyYW1ldGVyLmZpcnN0LnV0Zjgo
KS5kYXRhKCksIHBhcmFtZXRlci5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgbV9l
bmNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRj
OjpTZHBWaWRlb0Zvcm1hdCB7ICJIMjY0IiwgcnRjUGFyYW1ldGVycyB9LCBeKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1l
SW5mbyYgaW5mbywgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBoZWFkZXIpIHsKKyAg
ICAgICAgCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvLCB3ZWJydGM6
OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIgeyBoZWFkZXIgfSB9LCAwKTsKKyAgICB9KSk7
Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2Uo
aWRlbnRpZmllcikpCisgICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVy
KTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIoUlRD
RW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhl
aWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25l
ZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCit7CisgICAgQVNTRVJUKG1fZW5j
b2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2Rl
cnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKGVuY29kZXIsIHdpZHRoLCBoZWln
aHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsK
K30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUs
IGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBBU1NFUlQobV9lbmNvZGVycy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQo
aWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4
ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9Gb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5z
ZmVyU2Vzc2lvbiA9IFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShzYW1w
bGUudmlkZW9Gb3JtYXQoKSk7CisKKyNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQorICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5jcmVhdGVQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKTsKKyAgICB3ZWJydGM6OmVuY29k
ZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIsIHBpeGVsQnVmZmVyLmdldCgpLCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKTsKKyNlbmRpZgorfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBi
aXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCit7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlk
ZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Vi
cnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwor
fQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggNzUzZWE5N2UyZmIzMTJhZmFhNzc1ZmZlY2ZmOTY2YjdiZDk1MmQyOC4uYWVkYmJlMzBm
MDg4MzYwN2IyYTY2ZGY1Yjk0NmVmODQxZGUzODVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjEsNiArMjIxLDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fu
bm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5n
Q29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9y
YWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXInLApA
QCAtNjEwLDYgKzYxMSw4IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
c3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHls
ZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAog
ICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhJzogWyci
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCisgICAgICAgICd3ZWJydGM6
OldlYktpdEVuY29kZWRGcmFtZUluZm8nOiBbJzx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNv
ZGVyLmg+J10sCisgICAgICAgICd3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIn
OiBbJzx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+J10sCiAgICAgfQogCiAgICAg
aGVhZGVycyA9IFtdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYzcxM2JhZTM4ODdhY2VmNzlk
NDM5ZTkwMWVhN2E4Mjg1NjA0YjlkMS4uNmM0MDMxMjRlZTI1NWJhYmZlMzM2MjdkMTdlZDg4MGE5
MDVlYjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTQ4LDYgKzU0OCw4IEBAIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiAKIFdlYlByb2Nlc3MvRW50cnlQb2ludC9D
b2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCitXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1tCisKIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFubmVyLmNwcAogCiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EyZTgxZTQyMWU0Yzg0NWQwNTdmZWRk
ZTdmY2ZhZjcyZTVkZThjZi4uZjdhMGU0NWZhOWY5OWE4OThmMzU3M2MyYWJjYTU0NTNhODY4NjBm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zMjkyLDYgKzMyOTIsOCBAQAogCQk0MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9y
bURhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURh
dGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1Nzg1MzAyMTI3
NkI2RjAwREQzODAwIC8qIGNvcHktd2ViY29udGVudC1yZXNvdXJjZXMtdG8tcHJpdmF0ZS1oZWFk
ZXJzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY29weS13ZWJjb250ZW50LXJlc291cmNlcy10by1wcml2
YXRlLWhlYWRlcnMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3RTRBRjIw
RTJFQzk4MDBBNkMwRDcgLyogY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNiICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IGNvbS5nb29nbGUubzFkYnJvd3NlcnBsdWdpbi5zYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1ODY0OUEyM0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29k
ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29k
ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTg2NDlCMjNC
RTJFMjIwMEEwQTYxRSAvKiBMaWJXZWJSVENDb2RlY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMaWJXZWJSVENDb2RlY3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGliV2ViUlRDQ29kZWNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBM
aWJXZWJSVENDb2RlY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGliV2ViUlRDQ29kZWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjE5
OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0RlY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MDc4LDggKzcwODAsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MuY3BwICovLAog
CQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MuaCAqLywKKwkJ
CQk0MTU4NjQ5QjIzQkUyRTIyMDBBMEE2MUUgLyogTGliV2ViUlRDQ29kZWNzLm1tICovLAogCQkJ
CTQxNzIxOThEMjNCNjJDN0MwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDE3MjE5OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVy
LmggKi8sCisJCQkJNDE1ODY0OUEyM0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlm
aWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBiMjcxZDhlZjljY2NhNDFkODlmZjgwYjU2MjFjZjA3
YjI3Zjc3MmZiLi4wZWY2MDljOGZjNzkxNTUwNGIwN2E2YTA4ZmQ5ZmNhM2RjNTdhNDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJU
Q01hY3Jvcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KICNpbmNs
dWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRFbmNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNjQsMTcgKzY1
LDc0IEBAIHN0YXRpYyBpbnQzMl90IHJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayh3ZWJy
dGM6OldlYktpdFZpZGVvRGVjb2RlciBkZWNvZGVyCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
TGliV2ViUlRDQ29kZWNzOjpzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MoYm9vbCB1c2VHUFVQcm9j
ZXNzKQorc3RhdGljIHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGNyZWF0ZVZpZGVvRW5jb2Rl
cihjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1h
dC5uYW1lICE9ICJIMjY0IikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuY3JlYXRlRW5jb2Rlcihm
b3JtYXQucGFyYW1ldGVycyk7Cit9CisKK3N0YXRpYyBpbnQzMl90IHJlbGVhc2VWaWRlb0VuY29k
ZXIod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlcikKK3sKKyAgICByZXR1cm4gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkucmVsZWFzZUVuY29kZXIoKnN0
YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpKTsKK30KKworc3Rh
dGljIGludDMyX3QgaW5pdGlhbGl6ZVZpZGVvRW5jb2Rlcih3ZWJydGM6OldlYktpdFZpZGVvRW5j
b2RlciBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvQ29kZWMmIGNvZGVjKQoreworICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5pbml0aWFsaXpl
RW5jb2Rlcigqc3RhdGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2Rlciks
IGNvZGVjLndpZHRoLCBjb2RlYy5oZWlnaHQsIGNvZGVjLnN0YXJ0Qml0cmF0ZSwgY29kZWMubWF4
Qml0cmF0ZSwgY29kZWMubWluQml0cmF0ZSwgY29kZWMubWF4RnJhbWVyYXRlKTsKK30KKworc3Rh
dGljIGludDMyX3QgZW5jb2RlVmlkZW9GcmFtZSh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBl
bmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBib29sIHNob3VsZEVuY29k
ZUFzS2V5RnJhbWUpCit7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG5ld1BpeGVs
QnVmZmVyOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSB3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZy
YW1lKGZyYW1lLCBbJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQp
IC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnBpeGVsQnVmZmVyUG9vbCh3
aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0
ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBpeGVsQnVmZmVyUG9vbCwgJnBpeGVs
QnVmZmVyKTsKKworICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBhZG9wdENG
KHBpeGVsQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIG5ld1BpeGVsQnVmZmVyLmdldCgpOworICAg
IH0pOworCisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJPUjsKKworICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpLCAxMDAwMDAw
KSk7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygp
LmVuY29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNv
ZGVyKSwgKnNhbXBsZSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7Cit9CisKK3N0YXRpYyBpbnQz
Ml90IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayh3ZWJydGM6OldlYktpdFZpZGVvRW5j
b2RlciBlbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjaykKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5yZWdpc3RlckVuY29kZUZyYW1lQ2Fs
bGJhY2soKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBl
bmNvZGVkSW1hZ2VDYWxsYmFjayk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHNl
dEVuY29kZVJhdGVzQ2FsbGJhY2sod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2Rlciwg
Y29uc3Qgd2VicnRjOjpWaWRlb0VuY29kZXI6OlJhdGVDb250cm9sUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK3sKKyAgICB1aW50MzJfdCBiaXRSYXRlID0gcGFyYW1ldGVycy5iaXRyYXRlLmdldF9z
dW1fa2JwcygpOworICAgIHVpbnQzMl90IGZyYW1lUmF0ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihwYXJhbWV0ZXJzLmZyYW1lcmF0ZV9mcHMgKyAwLjUpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnNldEVuY29kZVJhdGVzKCpzdGF0aWNfY2FzdDxMaWJX
ZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKK30K
Kwordm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3Mp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmICghdXNlR1BVUHJvY2Vz
cykgewogICAgICAgICB3ZWJydGM6OnNldFZpZGVvRGVjb2RlckNhbGxiYWNrcyhudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgd2VicnRjOjpzZXRWaWRlb0VuY29k
ZXJDYWxsYmFja3MobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gTGV0J3MgY3JlYXRlIFdl
YlByb2Nlc3MgbGliV2ViUlRDQ29kZWNzIHNpbmNlIGl0IG1heSBiZSBjYWxsZWQgZnJvbSB2YXJp
b3VzIHRocmVhZHMuCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNz
KCk7CiAgICAgd2VicnRjOjpzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9EZWNv
ZGVyLCByZWxlYXNlVmlkZW9EZWNvZGVyLCBkZWNvZGVWaWRlb0ZyYW1lLCByZWdpc3RlckRlY29k
ZUNvbXBsZXRlQ2FsbGJhY2spOworICAgIHdlYnJ0Yzo6c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tz
KGNyZWF0ZVZpZGVvRW5jb2RlciwgcmVsZWFzZVZpZGVvRW5jb2RlciwgaW5pdGlhbGl6ZVZpZGVv
RW5jb2RlciwgZW5jb2RlVmlkZW9GcmFtZSwgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNr
LCBzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKTsKIH0KIAogTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVy
KiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIoKQpAQCAtODksOCArMTQ3LDggQEAgTGli
V2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIoKQog
ICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci0+aWRlbnRpZmllcjsKICAg
ICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OkNyZWF0ZURlY29kZXIgeyBkZWNvZGVySWRlbnRpZmllciB9LCAwKTsKIAotICAgICAg
ICBBU1NFUlQoIW1fZGVjb2RlQ2FsbGJhY2tzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7
Ci0gICAgICAgIG1fZGVjb2RlQ2FsbGJhY2tzLmFkZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92
ZShkZWNvZGVyKSk7CisgICAgICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVy
SWRlbnRpZmllcikpOworICAgICAgICBtX2RlY29kZXJzLmFkZChkZWNvZGVySWRlbnRpZmllciwg
V1RGTW92ZShkZWNvZGVyKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEw
MSw5ICsxNTksOSBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIoRGVj
b2RlciYgZGVjb2RlcikKICAgICBkZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0
cjsKIAogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllciA9IGRl
Y29kZXIuaWRlbnRpZmllcl0gewotICAgICAgICBBU1NFUlQobV9kZWNvZGVDYWxsYmFja3MuY29u
dGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29u
dGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKIAotICAgICAgICBtX2RlY29kZUNhbGxiYWNrcy5y
ZW1vdmUoZGVjb2RlcklkZW50aWZpZXIpOworICAgICAgICBtX2RlY29kZXJzLnJlbW92ZShkZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjpSZWxlYXNlRGVjb2RlciB7IGRlY29kZXJJZGVudGlmaWVyIH0sIDApOwog
ICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTMwLDcgKzE4OCw3IEBAIHZvaWQgTGliV2ViUlRD
Q29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGF1dG8qIGRl
Y29kZXIgPSBtX2RlY29kZUNhbGxiYWNrcy5nZXQoZGVjb2RlcklkZW50aWZpZXIpKQorICAgIGlm
IChhdXRvKiBkZWNvZGVyID0gbV9kZWNvZGVycy5nZXQoZGVjb2RlcklkZW50aWZpZXIpKQogICAg
ICAgICBkZWNvZGVyLT5oYXNFcnJvciA9IHRydWU7CiB9CiAKQEAgLTEzOSw3ICsxOTcsNyBAQCB2
b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZp
ZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAg
IC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgotICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29k
ZUNhbGxiYWNrcy5nZXQoZGVjb2RlcklkZW50aWZpZXIpOworICAgIGF1dG8qIGRlY29kZXIgPSBt
X2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcik7CiAgICAgaWYgKCFkZWNvZGVyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE2Nyw2ICsyMjUsMTAwIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNz
Ojpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmll
ciwKICAgICB3ZWJydGM6OlJlbW90ZVZpZGVvRGVjb2Rlcjo6ZGVjb2RlQ29tcGxldGUoZGVjb2Rl
ci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFtcCwgcGl4ZWxCdWZmZXIuZ2V0KCksIHJl
bW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSk7CiB9CiAKK0xpYldlYlJUQ0NvZGVjczo6RW5j
b2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVFbmNvZGVyKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4mIGZvcm1hdFBhcmFtZXRlcnMpCit7CisgICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigpOworICAgIGF1dG8qIHJlc3VsdCA9IGVuY29kZXIu
Z2V0KCk7CisgICAgZW5jb2Rlci0+aWRlbnRpZmllciA9IFJUQ0VuY29kZXJJZGVudGlmaWVyOjpn
ZW5lcmF0ZVRocmVhZFNhZmUoKTsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiBwYXJhbWV0ZXJzOworICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0
ZXJzKQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZy
b21VVEY4KGtleVZhbHVlLmZpcnN0LmRhdGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBT
dHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5s
ZW5ndGgoKSkpKTsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBlbmNvZGVyID0gV1RG
TW92ZShlbmNvZGVyKSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGF1dG8gZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLT5pZGVudGlmaWVy
OworICAgICAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIp
KTsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH0sIDApOwor
ICAgICAgICBtX2VuY29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmllciwgV1RGTW92ZShlbmNvZGVy
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50MzJfdCBMaWJXZWJSVEND
b2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXImIGVuY29kZXIpCit7CisgICAgTG9ja0hvbGRl
ciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spOworICAgIGVuY29kZXIu
ZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRyOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7CisgICAgICAg
IEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisKKyAgICAg
ICAgbV9lbmNvZGVycy5yZW1vdmUoZW5jb2RlcklkZW50aWZpZXIpOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6UmVsZWFzZUVuY29kZXIgeyBl
bmNvZGVySWRlbnRpZmllciB9LCAwKTsKKyAgICB9KTsKKyAgICByZXR1cm4gMDsKK30KKworaW50
MzJfdCBMaWJXZWJSVENDb2RlY3M6OmluaXRpYWxpemVFbmNvZGVyKEVuY29kZXImIGVuY29kZXIs
IHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZSwg
dW5zaWduZWQgbWF4Qml0UmF0ZSwgdW5zaWduZWQgbWluQml0UmF0ZSwgdWludDMyX3QgbWF4RnJh
bWVSYXRlKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBlbmNvZGVySWRlbnRpZmll
ciA9IGVuY29kZXIuaWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhC
aXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGVdIHsKKyAgICAgICAgaWYgKGF1dG8qIGVu
Y29kZXIgPSBtX2VuY29kZXJzLmdldChlbmNvZGVySWRlbnRpZmllcikpIHsKKyAgICAgICAgICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2Vu
ZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsgZW5j
b2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwg
bWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDApOworICAgICAgICAgICAgLy8gV2Ugc2V0IGVu
Y29kZXItPmNvbm5lY3Rpb24gaGVyZSBzbyB0aGF0IEluaXRpYWxpemVFbmNvZGVyIGlzIHNlbnQg
YmVmb3JlIGFueSBFbmNvZGVGcmFtZSBtZXNzYWdlLgorICAgICAgICAgICAgZW5jb2Rlci0+Y29u
bmVjdGlvbiA9ICZjb25uZWN0aW9uOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIDA7
Cit9CisKK2ludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYgZnJhbWUsIGJvb2wgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKworICAgIGVuY29kZXIuY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsg
ZW5jb2Rlci5pZGVudGlmaWVyLCBmcmFtZSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsK
KyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOworfQorCit2b2lkIExpYldlYlJUQ0Nv
ZGVjczo6cmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxiYWNrKEVuY29kZXImIGVuY29kZXIsIHZvaWQq
IGVuY29kZWRJbWFnZUNhbGxiYWNrKQoreworICAgIExvY2tIb2xkZXIgaG9sZGVyKGVuY29kZXIu
ZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKKyAgICBlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxi
YWNrID0gZW5jb2RlZEltYWdlQ2FsbGJhY2s7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpz
ZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpCit7CisgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pIHsKKyAgICAgICAg
Y2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVu
dGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGVdIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2VuY29k
ZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgICAgICBBU1NFUlQobV9l
bmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZpZXIpLT5jb25uZWN0aW9uKTsKKyAgICAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRFbmNvZGVS
YXRlcyB7IGVuY29kZXJJZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVuY29kZXIuY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29kZVJhdGVzIHsgZW5j
b2Rlci5pZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7Cit9CisKK3ZvaWQgTGli
V2ViUlRDQ29kZWNzOjpjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBjb25zdCB3ZWJydGM6OldlYktpdEVu
Y29kZWRGcmFtZUluZm8mIGluZm8sIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRl
ciYmIGZyYWdtZW50YXRpb25IZWFkZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgorICAgIGF1dG8qIGVuY29kZXIgPSBt
X2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2soZW5jb2Rlci0+ZW5jb2RlZElt
YWdlQ2FsbGJhY2tMb2NrKTsKKyAgICBpZiAoIWxvY2tlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFlbmNvZGVyLT5lbmNvZGVkSW1hZ2VDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgd2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKGVuY29kZXIt
PmVuY29kZWRJbWFnZUNhbGxiYWNrLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpLCBpbmZvLCBmcmFnbWVudGF0aW9uSGVhZGVyLnZhbHVlKCkpOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCBlM2NkOGE5M2ZkMzEzOWFkMTFkMTU3NDcxM2Q1Y2Vh
M2FmNTA5MmFiLi44OTNlMTk4N2I1YTZmNmNlOWVhMGYwY2FhZDY3ZmExNDYxMzdiNGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaApAQCAtMjksMTMgKzI5LDE4IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ0VuY29k
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lmg+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCit1c2luZyBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKKwogbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29k
ZXI7CiB9CiAKQEAgLTQzLDYgKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
bW90ZVZpZGVvU2FtcGxlOwogfQogCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFdlYktpdFJU
UEZyYWdtZW50YXRpb25IZWFkZXI7CitzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNTAsNiArNjAsOCBAQCBjbGFzcyBMaWJXZWJSVEND
b2RlY3MgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBMaWJX
ZWJSVENDb2RlY3MoKSA9IGRlZmF1bHQ7CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRDYWxsYmFja3Mo
Ym9vbCB1c2VHUFVQcm9jZXNzKTsKKwogICAgIHN0cnVjdCBEZWNvZGVyIHsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtNjAsMjMgKzcyLDQ2IEBAIHB1
YmxpYzoKICAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKICAgICB9
OwogCi0gICAgc3RhdGljIHZvaWQgc2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKGJvb2wgdXNlR1BV
UHJvY2Vzcyk7Ci0KICAgICBEZWNvZGVyKiBjcmVhdGVEZWNvZGVyKCk7CiAgICAgaW50MzJfdCBy
ZWxlYXNlRGVjb2RlcihEZWNvZGVyJik7CiAgICAgaW50MzJfdCBkZWNvZGVGcmFtZShEZWNvZGVy
JiwgdWludDMyX3QgdGltZVN0YW1wLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICB2b2lk
IHJlZ2lzdGVyRGVjb2RlRnJhbWVDYWxsYmFjayhEZWNvZGVyJiwgdm9pZCogZGVjb2RlZEltYWdl
Q2FsbGJhY2spOwogCisgICAgc3RydWN0IEVuY29kZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CisgICAgICAgIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrIHsgbnVsbHB0ciB9
OworICAgICAgICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKKyAgICAgICAgUmVmUHRy
PElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICB9OworCisgICAgRW5jb2RlciogY3Jl
YXRlRW5jb2Rlcihjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Jik7Cisg
ICAgaW50MzJfdCByZWxlYXNlRW5jb2RlcihFbmNvZGVyJik7CisgICAgaW50MzJfdCBpbml0aWFs
aXplRW5jb2RlcihFbmNvZGVyJiwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5z
aWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRy
YXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOworICAgIGludDMyX3QgZW5jb2RlRnJhbWUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKTsKKyAgICB2b2lkIHJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayhFbmNv
ZGVyJiwgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2spOworICAgIHZvaWQgc2V0RW5jb2RlUmF0
ZXMoRW5jb2RlciYsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisgICAg
CisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCk7CisKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgZmFpbGVk
RGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29tcGxldGVkRGVjb2Rp
bmcoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUmJik7CisgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5j
b2RlZEZyYW1lSW5mbyYsIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYmKTsK
IAotICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPj4gbV9kZWNvZGVDYWxsYmFja3M7Citwcml2YXRlOgorICAgIEhhc2hNYXA8UlRDRGVjb2Rl
cklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsKICAgICBI
YXNoU2V0PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwogCisgICAgSGFz
aE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+PiBtX2Vu
Y29kZXJzOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJQb29sUmVmPiBtX3BpeGVsQnVmZmVyUG9vbDsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBv
b2xXaWR0aCB7IDAgfTsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5p
bgppbmRleCAyYWFlOTc4NjgwZDNjM2E3ODBiOGMyNTllNDNhNWU0OGQxOTAzMTZiLi5mMmJmNWI4
MzZiMDk5N2MxZGQwZTM2OTk5NjVkYjc1MjY4Y2JmMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1l
c3NhZ2VzLmluCkBAIC0yMyw4ICsyMywxMCBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRG
T1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IExpYldlYlJU
Q0NvZGVjcyBOb3RSZWZDb3VudGVkIHsKLSAgICBGYWlsZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGlkKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVj
b2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUgc2FtcGxlKQorICAgIEZhaWxlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorCisgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0
OjpSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YSwgc3RydWN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvLCB3ZWJydGM6Oldl
YktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIgZnJhZ21lbnRhdGlvbkhlYWRlcik7CiB9CiAKICNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyM2UzYjRkMzljZWQ3ZDExMDRiNjZiZDU2
MzdiMmIyNWRlMTc2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubW0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIK
KworI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDVlBpeGVsQnVmZmVyUG9vbFJlZiBMaWJX
ZWJSVENDb2RlY3M6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQp
Cit7CisgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRo
ICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9IGhlaWdodCkgeworICAgICAg
ICBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQy
MFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKKyAgICAgICAgYXV0byBwaXhlbEF0dHJpYnV0ZXMg
PSBAeworICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJXaWR0
aEtleTogQCh3aWR0aCksCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlckhlaWdodEtleTogQChoZWlnaHQpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9DYXB0dXJlRm9y
bWF0KSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyQ0dJ
bWFnZUNvbXBhdGliaWxpdHlLZXk6IEBOTywKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
ICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxGb3JtYXRPcGVuR0xFU0NvbXBh
dGliaWxpdHkgOiBAWUVTLAorI2Vsc2UKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDVlBpeGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSA6IEBZRVMsCisjZW5kaWYKKyAg
ICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySU9TdXJmYWNlUHJv
cGVydGllc0tleSA6IEB7IH0KKyAgICAgICAgfTsKKworICAgICAgICBDVlBpeGVsQnVmZmVyUG9v
bFJlZiBwb29sID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVy
UG9vbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXBpeGVsQXR0cmlidXRlcywgJnBvb2wpOworCisgICAgICAgIGlmIChzdGF0dXMg
IT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gYWRvcHRDRihwb29sKTsKKyAgICAgICAgbV9waXhlbEJ1
ZmZlclBvb2xXaWR0aCA9IHdpZHRoOworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbEhlaWdodCA9
IGhlaWdodDsKKyAgICB9CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvUlRDRW5jb2RlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1JUQ0VuY29kZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhN2YzYzA0ZjZj
NDk5YjllZDY1NjJiZjJkMGM2YmY0OGUyYTgwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJZGVudGlmaWVyLmgKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09i
amVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUlRDRW5jb2Rl
cklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJUQ0VuY29kZXJJZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxSVENFbmNvZGVySWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGY5ODM2MjI3ZTliZTVmMzQ3ZWI3
YWMzOGZiMDI3Y2MwYzhlMjIwZjguLmQzOWUzOTk3ZTI0OTg1ZWYwNjM0MjVjZmUzOWE4OGIxZjUy
ZDkyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVEZWNvZGVyRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIC8vIFdl
IG9ubHkgc3VwcG9ydCBlZmZpY2llbnQgc2VuZGluZyBvZiB2aWRlbyBmcmFtZXMgd2l0aCBJT1NV
UkZBQ0UKICNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAg
IExpYldlYlJUQ0NvZGVjczo6c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKG1fdXNlR1BVUHJvY2Vz
cyk7CisgICAgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MobV91c2VHUFVQcm9jZXNzKTsK
ICNlbmRpZgogI2VuZGlmCiAgICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0
ZURlY29kZXJGYWN0b3J5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386672</attachid>
            <date>2020-01-03 03:07:27 -0800</date>
            <delta_ts>2020-01-03 06:01:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205713-20200103120725.patch</filename>
            <type>text/plain</type>
            <size>77433</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAxZDgyNWM0ZTE4ZWQxMzlkY2ViZWRlMWYzMTlhZTljNGNmYTJjMzJiLi4wNGU5
OGYwNDUyNTNiYzE0MDIzZjcyMmQ3ZWQwNGQ2ZDYzZmM1MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wMS0wMyAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5j
b2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlbW90ZSB2aWRlbyBlbmNvZGVycyBjcmVhdGVk
IGFuZCB1c2VkIHRocm91Z2ggc2ltcGxlIHJvdXRpbmVzLgorICAgICAgICBBZGQgZmFjdG9yeSB0
byBjcmVhdGUgdmlkZW8gZW5jb2RlcnMgaW1wbGVtZW50ZWQgZWxzZXdoZXJlIHRoYW4gaW4gV2Vi
UlRDIGJhY2tlbmQuCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgSDI2NCBlbmNvZGVycy4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRFbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRSVFBGcmFn
bWVudGF0aW9uSGVhZGVyOjp2YWx1ZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRG
cmFtZUluZm86OmRlY29kZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm86OmVuY29kZSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRp
b25IZWFkZXI6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIpOgorICAgICAgICAod2VicnRj
OjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
d2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjpkZWNvZGUpOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeVdpdGhTaW11bGNhc3Q6OkNyZWF0ZVZpZGVv
RW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAg
ICAgICh3ZWJydGM6OnNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAgICAgICh3ZWJydGM6
OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVt
b3RlVmlkZW9FbmNvZGVyOjpSZWxlYXNlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjpFbmNvZGUpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlNl
dFJhdGVzKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVy
SW5mbyBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjplbmNvZGVDb21wbGV0ZSk6CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZUxvY2FsRW5j
b2Rlcik6CisgICAgICAgICh3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIpOgorICAgICAgICAo
d2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6ZW5jb2Rl
TG9jYWxFbmNvZGVyRnJhbWUpOgorICAgICAgICAod2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRl
cyk6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06
CisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDEtMDEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCB0cmFuc2NlaXZlciBzZXRDb2RlY1ByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmNTY3
MTNhNTdiMDI5YjQ0NjAzOTZlMDgyMGI5YzAzM2RmZjYyMi4uMjMwOTRmNWM1ZWZiYWZhMmMwY2Mx
MzY3ZTZhYTI0YTMzOWQ3ZWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAx
LTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgUlRDIFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1
ZmZlcik6CisKIDIwMjAtMDEtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBYTUxTZXJpYWxpemVyIGRvZXNuJ3QgY29ycmVjdGx5IGVuY29kZSBlbnRpdGllcyBp
biA8c3R5bGU+IGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjc5ODU5MzNiNDI4ZDFjYjRiYzUyNGYxNTNi
NzMzOTM0Yjc4MzA4OC4uZTQzNzlhN2E2NDlkZDcyMzNjZmJlYmU2MWM0ZDFlZWM4M2NkM2RlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAyMC0wMS0wMyAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5jb2RlcnMgaW4g
R1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHJlbW90ZSB2aWRlbyBlbmNvZGVycyBpbiBHUFVQcm9jZXNzIGJh
c2VkIG9uIGxpYndlYnJ0YyBleHBvc2VkIHJvdXRpbmVzLgorICAgICAgICBXZWJQcm9jZXNzIHNl
dHMgY2FsbGJhY2tzIGluIHRoZSB3ZWJydGMgYmFja2VuZCB0byBpbXBsZW1lbnQgSDI2NCBlbmNv
ZGluZyBhcyBhIHJlbW90ZSB2aWRlbyBlbmNvZGVyLgorICAgICAgICBJbiBhZGRpdGlvbiB0byB2
aWRlbyBmcmFtZXMsIHdlIGFsc28gbmVlZCB0byBzZW5kIHJhdGUgc2V0dGluZyBvcmRlcnMuCisK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TGliV2ViUlRDQ29kZWNzUHJveHk6On5MaWJXZWJSVENDb2RlY3NQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVFbmNvZGVyKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVFbmNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlVmlkZW9F
bmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVZpZGVvRW5jb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OmVuY29kZVZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rl
ckVuY29kZUNvbXBsZXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpzZXRFbmNvZGVSYXRl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFj
a3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2RpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q0NvZGVjczo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OnJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q0NvZGVjczo6c2V0RW5jb2RlUmF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2Rl
Y3M6OmNvbXBsZXRlZEVuY29kaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29k
ZWNzOjpwaXhlbEJ1ZmZlclBvb2wpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9S
VENFbmNvZGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKwogMjAyMC0wMS0wMyAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5vbi1saWJ3ZWJydGMg
YnVpbGRzIGFmdGVyIHIyNTM5NTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBlYTc4OWUy
YzVkMzI5NTFlYjZkZjRjYTVhOGY0NzNmZjkxMTZjNWViLi41M2UzNTQ3ZTk5MzVmNWM3OTcwYmQx
ZWQ3YzBmZGMwMzgzMzA5OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0yNjgsMyAr
MjY4LDE3IEBAIF9fWk42d2VicnRjMTFkZWNvZGVGcmFtZUVQdmpQS2htCiBfX1pONndlYnJ0YzE4
UmVtb3RlVmlkZW9EZWNvZGVyMTRkZWNvZGVDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagogX19a
TjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9y
bWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQogX19aTjZ3ZWJydGMxOFJ0cENvZGVj
Q2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQ
dlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKK19f
Wk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21l
bnRhdGlvbkhlYWRlckQxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFF
dgorX19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1S
S05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRl
ckUKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndl
YnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRF
RVBGaVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVF
YkVQRmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0
ZXJzRUUKK19fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0
YzIyaW5pdGlhbGl6ZUxvY2FsRW5jb2RlckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVv
Rm9ybWF0QzFFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5T
MV85YWxsb2NhdG9ySWNFRUVFUktOUzFfM21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5T
MV80cGFpcklTOF9TN19FRUVFRUUKK19fWk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktO
U18xNFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5j
b2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRj
MTRTZHBWaWRlb0Zvcm1hdEQxRXYKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2
CitfX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5T
XzEzVmlkZW9Sb3RhdGlvbkViCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZWE3
ODllMmM1ZDMyOTUxZWI2ZGY0Y2E1YThmNDczZmY5MTE2YzVlYi4uNTNlMzU0N2U5OTM1ZjVjNzk3
MGJkMWVkN2MwZmRjMDM4MzMwOTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApA
QCAtMjY4LDMgKzI2OCwxNyBAQCBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQogX19a
TjZ3ZWJydGMxOFJlbW90ZVZpZGVvRGVjb2RlcjE0ZGVjb2RlQ29tcGxldGVFUHZqUDEwX19DVkJ1
ZmZlcmoKIF9fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRT
ZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKIF9fWk42d2VicnRj
MThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2Fs
bGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9qUEtobUVQRmlT
MF9TMF9FCitfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgorX19aTjZ3ZWJydGMy
MlJUUEZyYWdtZW50YXRpb25IZWFkZXJEMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlv
bkhlYWRlckMxRXYKK19fWk42d2VicnRjMThSZW1vdGVWaWRlb0VuY29kZXIxNGVuY29kZUNvbXBs
ZXRlRVB2UGhtUktOU18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FUEtOU18yMlJUUEZyYWdtZW50
YXRpb25IZWFkZXJFCitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlcjZSZXNpemVF
bQorX19aTjZ3ZWJydGMyNHNldFZpZGVvRW5jb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZp
ZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfUktOU18xMFZpZGVvQ29kZWNFRVBGaVMwX1JLTlNfMTBW
aWRlb0ZyYW1lRWJFUEZpUzBfUzBfRVBGdlMwX1JLTlNfMTJWaWRlb0VuY29kZXIyMVJhdGVDb250
cm9sUGFyYW1ldGVyc0VFCitfX1pONndlYnJ0YzIwc2V0TG9jYWxFbmNvZGVyUmF0ZXNFUHZqagor
X19aTjZ3ZWJydGMyMmluaXRpYWxpemVMb2NhbEVuY29kZXJFUHZ0dGpqamoKK19fWk42d2VicnRj
MTRTZHBWaWRlb0Zvcm1hdEMxRVJLTlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3Ry
YWl0c0ljRUVOUzFfOWFsbG9jYXRvckljRUVFRVJLTlMxXzNtYXBJUzdfUzdfTlMxXzRsZXNzSVM3
X0VFTlM1X0lOUzFfNHBhaXJJUzhfUzdfRUVFRUVFCitfX1pONndlYnJ0YzE4Y3JlYXRlTG9jYWxF
bmNvZGVyRVJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVVMTNibG9ja19wb2ludGVyRnZQS2htUktOU18y
MldlYktpdEVuY29kZWRGcmFtZUluZm9FUE5TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckVFCitf
X1pONndlYnJ0YzE0U2RwVmlkZW9Gb3JtYXREMUV2CitfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2Fs
RW5jb2RlckVQdgorX19aTjZ3ZWJydGMyM2VuY29kZUxvY2FsRW5jb2RlckZyYW1lRVB2UDEwX19D
VkJ1ZmZlcnhOU18xM1ZpZGVvUm90YXRpb25FYgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmluZGV4
IGVhNzg5ZTJjNWQzMjk1MWViNmRmNGNhNWE4ZjQ3M2ZmOTExNmM1ZWIuLjFhYWE2MDAwMjExOWE5
NzY0Zjc3MDNlNDUzYzU3NzVmYjdmZTE5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKQEAg
LTI2OCwzICsyNjgsMTUgQEAgX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KIF9fWk42
d2VicnRjMThSZW1vdGVWaWRlb0RlY29kZXIxNGRlY29kZUNvbXBsZXRlRVB2alAxMF9fQ1ZCdWZm
ZXJqCiBfX1pONndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2Rw
VmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9qUEtobUVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE4
UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFk
ZXJEMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckMxRXYKK19fWk42d2Vi
cnRjMThSZW1vdGVWaWRlb0VuY29kZXIxNGVuY29kZUNvbXBsZXRlRVB2UGhtUktOU18yMldlYktp
dEVuY29kZWRGcmFtZUluZm9FUEtOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFCitfX1pONndl
YnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlcjZSZXNpemVFbQorX19aTjZ3ZWJydGMyNHNldFZp
ZGVvRW5jb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZp
UzBfUktOU18xMFZpZGVvQ29kZWNFRVBGaVMwX1JLTlNfMTBWaWRlb0ZyYW1lRWJFUEZpUzBfUzBf
RVBGdlMwX1JLTlNfMTJWaWRlb0VuY29kZXIyMVJhdGVDb250cm9sUGFyYW1ldGVyc0VFCitfX1pO
NndlYnJ0YzIwc2V0TG9jYWxFbmNvZGVyUmF0ZXNFUHZqagorX19aTjZ3ZWJydGMyMmluaXRpYWxp
emVMb2NhbEVuY29kZXJFUHZ0dGpqamoKK19fWk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEMxRVJL
TlN0M19fMTEyYmFzaWNfc3RyaW5nSWNOUzFfMTFjaGFyX3RyYWl0c0ljRUVOUzFfOWFsbG9jYXRv
ckljRUVFRVJLTlMxXzNtYXBJUzdfUzdfTlMxXzRsZXNzSVM3X0VFTlM1X0lOUzFfNHBhaXJJUzhf
UzdfRUVFRUVFCitfX1pONndlYnJ0YzE4Y3JlYXRlTG9jYWxFbmNvZGVyRVJLTlNfMTRTZHBWaWRl
b0Zvcm1hdEVVMTNibG9ja19wb2ludGVyRnZQS2htUktOU18yMldlYktpdEVuY29kZWRGcmFtZUlu
Zm9FUE5TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckVFCitfX1pONndlYnJ0YzE0U2RwVmlkZW9G
b3JtYXREMUV2CitfX1pONndlYnJ0YzE5cmVsZWFzZUxvY2FsRW5jb2RlckVQdgorX19aTjZ3ZWJy
dGMyM2VuY29kZUxvY2FsRW5jb2RlckZyYW1lRVB2UDEwX19DVkJ1ZmZlcnhOU18xM1ZpZGVvUm90
YXRpb25FYgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMjBhMjU0MGFhOGU4YTdmZGU3NTI2NjhlOGVjZTA3Y2RkZTZiY2E4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRFbmNvZGVyLmgKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlci5oIgorI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5LmgiCisjaW5jbHVk
ZSAiYXBpL3ZpZGVvL2VuY29kZWRfaW1hZ2UuaCIKKyNpbmNsdWRlICJtb2R1bGVzL2luY2x1ZGUv
bW9kdWxlX2NvbW1vbl90eXBlcy5oIgorCit1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0
IF9fQ1ZCdWZmZXIqOworCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgRW5jb2RlZEltYWdl
Q2FsbGJhY2s7CitjbGFzcyBWaWRlb0NvZGVjOworY2xhc3MgVmlkZW9GcmFtZTsKK3N0cnVjdCBT
ZHBWaWRlb0Zvcm1hdDsKK2NsYXNzIFNldHRpbmdzOworCitjbGFzcyBWaWRlb0VuY29kZXJGYWN0
b3J5V2l0aFNpbXVsY2FzdCBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdChzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4mJiBmYWN0b3J5KQorICAgICAgICA6IG1f
aW50ZXJuYWxFbmNvZGVyRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeSkpCisgICAgeworICAgIH0K
KworICAgIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBRdWVyeVZpZGVvRW5jb2Rlcihj
b25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ludGVy
bmFsRW5jb2RlckZhY3RvcnktPlF1ZXJ5VmlkZW9FbmNvZGVyKGZvcm1hdCk7IH0KKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rlcihjb25zdCBTZHBW
aWRlb0Zvcm1hdCYgZm9ybWF0KSBmaW5hbDsKKyAKKyAgICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zv
cm1hdD4gR2V0U3VwcG9ydGVkRm9ybWF0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJu
YWxFbmNvZGVyRmFjdG9yeS0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOyB9CisKK3ByaXZhdGU6Cisg
ICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IG1faW50ZXJuYWxF
bmNvZGVyRmFjdG9yeTsKK307CisKK3VzaW5nIFdlYktpdFZpZGVvRW5jb2RlciA9IHZvaWQqOwor
dXNpbmcgVmlkZW9FbmNvZGVyQ3JlYXRlQ2FsbGJhY2sgPSBXZWJLaXRWaWRlb0VuY29kZXIoKiko
Y29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCk7Cit1c2luZyBWaWRlb0VuY29kZXJSZWxlYXNl
Q2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRW5jb2Rlcik7Cit1c2luZyBWaWRlb0Vu
Y29kZXJJbml0aWFsaXplQ2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRW5jb2Rlciwg
Y29uc3QgVmlkZW9Db2RlYyYpOwordXNpbmcgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2sgPSBp
bnQzMl90KCopKFdlYktpdFZpZGVvRW5jb2RlciwgY29uc3QgVmlkZW9GcmFtZSYsIGJvb2wgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSk7Cit1c2luZyBWaWRlb0VuY29kZXJSZWdpc3RlckVuY29kZUNv
bXBsZXRlQ2FsbGJhY2sgPSBpbnQzMl90KCopKFdlYktpdFZpZGVvRW5jb2Rlciwgdm9pZCogZW5j
b2RlZEltYWdlQ2FsbGJhY2spOwordXNpbmcgVmlkZW9FbmNvZGVyU2V0UmF0ZXNDYWxsYmFjayA9
IHZvaWQoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0VuY29kZXI6OlJhdGVDb250
cm9sUGFyYW1ldGVycyYpOworCit2b2lkIHNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyhWaWRlb0Vu
Y29kZXJDcmVhdGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyUmVsZWFzZUNhbGxiYWNrLCBWaWRlb0Vu
Y29kZXJJbml0aWFsaXplQ2FsbGJhY2ssIFZpZGVvRW5jb2RlckVuY29kZUNhbGxiYWNrLCBWaWRl
b0VuY29kZXJSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclNldFJh
dGVzQ2FsbGJhY2spOworCit1c2luZyBXZWJLaXRFbmNvZGVkRnJhbWVUaW1pbmcgPSBFbmNvZGVk
SW1hZ2U6OlRpbWluZzsKK3N0cnVjdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIHsKKyAgICB1aW50
MzJfdCB3aWR0aCB7IDAgfTsKKyAgICB1aW50MzJfdCBoZWlnaHQgeyAwIH07CisgICAgaW50NjRf
dCB0aW1lU3RhbXAgeyAwIH07CisgICAgaW50NjRfdCBudHBUaW1lTVMgeyAwIH07CisgICAgaW50
NjRfdCBjYXB0dXJlVGltZU1TIHsgMCB9OworICAgIFZpZGVvRnJhbWVUeXBlIGZyYW1lVHlwZSB7
IFZpZGVvRnJhbWVUeXBlOjprVmlkZW9GcmFtZURlbHRhIH07CisgICAgVmlkZW9Sb3RhdGlvbiBy
b3RhdGlvbiB7IGtWaWRlb1JvdGF0aW9uXzAgfTsKKyAgICBWaWRlb0NvbnRlbnRUeXBlIGNvbnRl
bnRUeXBlIHsgVmlkZW9Db250ZW50VHlwZTo6VU5TUEVDSUZJRUQgfTsKKyAgICBib29sIGNvbXBs
ZXRlRnJhbWUgPSBmYWxzZTsKKyAgICBpbnQgcXAgeyAtMSB9OworICAgIFdlYktpdEVuY29kZWRG
cmFtZVRpbWluZyB0aW1pbmc7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7Cit9OworCitj
bGFzcyBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyKHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhl
YWRlciogPSBudWxscHRyKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXImKTsKKwor
ICAgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogdmFsdWUoKSB7IHJldHVybiBtX3Zh
bHVlOyB9OworCitwcml2YXRlOgorICAgIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciog
bV92YWx1ZSB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpSVFBGcmFn
bWVudGF0aW9uSGVhZGVyPiBtX293bmVkSGVhZGVyOworfTsKKworY2xhc3MgUmVtb3RlVmlkZW9F
bmNvZGVyIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBSZW1vdGVWaWRlb0VuY29kZXIoV2ViS2l0VmlkZW9FbmNvZGVyKTsKKyAgICB+
UmVtb3RlVmlkZW9FbmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
Q29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwg
Y29uc3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYsIGNvbnN0IHdlYnJ0Yzo6UlRQRnJhZ21lbnRh
dGlvbkhlYWRlciopOworCitwcml2YXRlOgorICAgIGludDMyX3QgSW5pdEVuY29kZShjb25zdCBW
aWRlb0NvZGVjKiwgY29uc3QgU2V0dGluZ3MmKSBmaW5hbDsKKyAgICBpbnQzMl90IFJlZ2lzdGVy
RW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayopIGZpbmFsOworICAg
IGludDMyX3QgUmVsZWFzZSgpIGZpbmFsOworICAgIGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVv
RnJhbWUmLCBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1lVHlwZT4qKSBmaW5hbDsKKyAgICB2
b2lkIFNldFJhdGVzKGNvbnN0IFJhdGVDb250cm9sUGFyYW1ldGVycyYpIGZpbmFsOworICAgIEVu
Y29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3QgZmluYWw7CisKKyAgICBXZWJLaXRWaWRl
b0VuY29kZXIgbV9pbnRlcm5hbEVuY29kZXI7Cit9OworCit1c2luZyBMb2NhbEVuY29kZXIgPSB2
b2lkKjsKK3VzaW5nIExvY2FsRW5jb2RlckNhbGxiYWNrID0gdm9pZCAoXikoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJ
bmZvJiwgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKik7Cit2b2lkKiBjcmVhdGVMb2Nh
bEVuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYsIExvY2FsRW5jb2RlckNhbGxi
YWNrKTsKK3ZvaWQgcmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIpOwordm9pZCBpbml0
aWFsaXplTG9jYWxFbmNvZGVyKExvY2FsRW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgaW50IHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1heEJpdHJh
dGUsIHVuc2lnbmVkIGludCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOwordm9p
ZCBlbmNvZGVMb2NhbEVuY29kZXJGcmFtZShMb2NhbEVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYs
IGludDY0X3QgdGltZVN0YW1wLCB3ZWJydGM6OlZpZGVvUm90YXRpb24sIGJvb2wgaXNLZXlmcmFt
ZVJlcXVpcmVkKTsKK3ZvaWQgc2V0TG9jYWxFbmNvZGVyUmF0ZXMoTG9jYWxFbmNvZGVyLCB1aW50
MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOworCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorYm9vbCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGluZm8ud2lkdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLmhlaWdodCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGluZm8udGltZVN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5udHBUaW1lTVMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmNhcHR1cmVUaW1lTVMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaW5mby5mcmFtZVR5
cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
aW5mby5yb3RhdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShpbmZvLmNvbnRlbnRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb21wbGV0ZUZyYW1lKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5xcCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZmxhZ3MpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGlt
aW5nLmVuY29kZV9zdGFydF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZW5jb2RlX2ZpbmlzaF9tcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucGFja2V0
aXphdGlvbl9maW5pc2hfbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGluZm8udGltaW5nLnBhY2VyX2V4aXRfbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLm5ldHdvcmtfdGlt
ZXN0YW1wX21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLnRpbWluZy5uZXR3b3JrMl90aW1lc3RhbXBfbXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLnJlY2VpdmVfc3Rh
cnRfbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB3aWR0aDsKKyAg
ICBlbmNvZGVyIDw8IGhlaWdodDsKKyAgICBlbmNvZGVyIDw8IHRpbWVTdGFtcDsKKyAgICBlbmNv
ZGVyIDw8IG50cFRpbWVNUzsKKyAgICBlbmNvZGVyIDw8IGNhcHR1cmVUaW1lTVM7CisgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGZyYW1lVHlwZSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJvdGF0
aW9uKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oY29udGVudFR5cGUpOworICAgIGVuY29kZXIg
PDwgY29tcGxldGVGcmFtZTsKKyAgICBlbmNvZGVyIDw8IHFwOworCisgICAgZW5jb2RlciA8PCB0
aW1pbmcuZmxhZ3M7CisgICAgZW5jb2RlciA8PCB0aW1pbmcuZW5jb2RlX3N0YXJ0X21zOworICAg
IGVuY29kZXIgPDwgdGltaW5nLmVuY29kZV9maW5pc2hfbXM7CisgICAgZW5jb2RlciA8PCB0aW1p
bmcucGFja2V0aXphdGlvbl9maW5pc2hfbXM7CisgICAgZW5jb2RlciA8PCB0aW1pbmcucGFjZXJf
ZXhpdF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5uZXR3b3JrX3RpbWVzdGFtcF9tczsKKyAg
ICBlbmNvZGVyIDw8IHRpbWluZy5uZXR3b3JrMl90aW1lc3RhbXBfbXM7CisgICAgZW5jb2RlciA8
PCB0aW1pbmcucmVjZWl2ZV9zdGFydF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5yZWNlaXZl
X2ZpbmlzaF9tczsKK30KKworaW5saW5lIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXI6Oldl
YktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIod2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVy
KiBoZWFkZXIpCisgICAgOiBtX3ZhbHVlKGhlYWRlcikKK3sKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCAhIW1fdmFsdWU7CisgICAgaWYg
KCFtX3ZhbHVlKQorICAgICAgICByZXR1cm47CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV92YWx1ZS0+U2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV92YWx1ZS0+U2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV92YWx1ZS0+T2Zmc2V0KGkpKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV92YWx1ZS0+TGVuZ3RoKGkpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+Citib29sIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyJiBoZWFkZXIp
Cit7CisgICAgYm9vbCBpc051bGw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc051bGwpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKGlzTnVsbCkgeworICAgICAgICBo
ZWFkZXIubV92YWx1ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIHNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaGVhZGVyLm1fb3duZWRIZWFkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlcj4oKTsKKyAgICBoZWFkZXIubV92
YWx1ZSA9IGhlYWRlci5tX293bmVkSGVhZGVyLmdldCgpOworCisgICAgaGVhZGVyLm1fdmFsdWUt
PlZlcmlmeUFuZEFsbG9jYXRlRnJhZ21lbnRhdGlvbkhlYWRlcihzaXplKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGhlYWRlci5tX3ZhbHVlLT5TaXplKCk7ICsraSkgeworICAgICAgICB1
bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZz
ZXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGxlbmd0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGVhZGVy
Lm1fdmFsdWUtPmZyYWdtZW50YXRpb25PZmZzZXRbaV0gPSBvZmZzZXQ7CisgICAgICAgIGhlYWRl
ci5tX3ZhbHVlLT5mcmFnbWVudGF0aW9uTGVuZ3RoW2ldID0gbGVuZ3RoOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29k
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWIwNTgxZGUzMTNiMjkxNzBiY2Y3YWQwNTBlMDQ2NzJjOTc2Y2Qx
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbQpAQCAtMCwwICsxLDIxNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJXZWJLaXRFbmNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXRV
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWUuaCIKKyNpbmNsdWRl
ICJjb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ0NvZGVjU3BlY2lmaWNJbmZvSDI2NCtQcml2YXRl
LmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvdXRpbGl0eS9zaW11bGNhc3RfdXRp
bGl0eS5oIgorI2luY2x1ZGUgInNkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENFbmNvZGVk
SW1hZ2UrUHJpdmF0ZS5oIgorI2luY2x1ZGUgInNkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9S
VENSdHBGcmFnbWVudGF0aW9uSGVhZGVyK1ByaXZhdGUuaCIKKyNpbmNsdWRlICJzZGsvb2JqYy9h
cGkvcGVlcmNvbm5lY3Rpb24vUlRDVmlkZW9Db2RlY0luZm8rUHJpdmF0ZS5oIgorI2luY2x1ZGUg
InNkay9vYmpjL2FwaS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0VuY29kZXJTZXR0aW5ncytQcml2
YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMvY29tcG9uZW50cy92aWRlb19jb2RlYy9SVENWaWRl
b0VuY29kZXJIMjY0LmgiCisjaW5jbHVkZSAic2RrL29iamMvbmF0aXZlL3NyYy9vYmpjX2ZyYW1l
X2J1ZmZlci5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZGVv
RW5jb2Rlcj4gVmlkZW9FbmNvZGVyRmFjdG9yeVdpdGhTaW11bGNhc3Q6OkNyZWF0ZVZpZGVvRW5j
b2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KQoreworICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVuY29kZXJTaW11bGNhc3RQcm94eT4obV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5
LmdldCgpLCBmb3JtYXQpOworfQorCitzdHJ1Y3QgVmlkZW9FbmNvZGVyQ2FsbGJhY2tzIHsKKyAg
ICBWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayBjcmVhdGVDYWxsYmFjazsKKyAgICBWaWRlb0Vu
Y29kZXJSZWxlYXNlQ2FsbGJhY2sgcmVsZWFzZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2Rlcklu
aXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXplQ2FsbGJhY2s7CisgICAgVmlkZW9FbmNvZGVyRW5j
b2RlQ2FsbGJhY2sgZW5jb2RlQ2FsbGJhY2s7CisgICAgVmlkZW9FbmNvZGVyUmVnaXN0ZXJFbmNv
ZGVDb21wbGV0ZUNhbGxiYWNrIHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjazsKKyAgICBW
aWRlb0VuY29kZXJTZXRSYXRlc0NhbGxiYWNrIHNldFJhdGVzQ2FsbGJhY2s7Cit9OworCitzdGF0
aWMgVmlkZW9FbmNvZGVyQ2FsbGJhY2tzJiB2aWRlb0VuY29kZXJDYWxsYmFja3MoKSB7CisgICAg
c3RhdGljIFZpZGVvRW5jb2RlckNhbGxiYWNrcyBjYWxsYmFja3M7CisgICAgcmV0dXJuIGNhbGxi
YWNrczsKK30KKwordm9pZCBzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MoVmlkZW9FbmNvZGVyQ3Jl
YXRlQ2FsbGJhY2sgY3JlYXRlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlbGVhc2VDYWxsYmFjayBy
ZWxlYXNlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlckluaXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXpl
Q2FsbGJhY2ssIFZpZGVvRW5jb2RlckVuY29kZUNhbGxiYWNrIGVuY29kZUNhbGxiYWNrLCBWaWRl
b0VuY29kZXJSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2sgcmVnaXN0ZXJFbmNvZGVDb21w
bGV0ZUNhbGxiYWNrLCBWaWRlb0VuY29kZXJTZXRSYXRlc0NhbGxiYWNrIHNldFJhdGVzQ2FsbGJh
Y2spCit7CisgICAgYXV0byYgY2FsbGJhY2tzID0gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCk7Cisg
ICAgY2FsbGJhY2tzLmNyZWF0ZUNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2s7CisgICAgY2FsbGJh
Y2tzLnJlbGVhc2VDYWxsYmFjayA9IHJlbGVhc2VDYWxsYmFjazsKKyAgICBjYWxsYmFja3MuaW5p
dGlhbGl6ZUNhbGxiYWNrID0gaW5pdGlhbGl6ZUNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5lbmNv
ZGVDYWxsYmFjayA9IGVuY29kZUNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5yZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2sgPSByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2s7CisgICAg
Y2FsbGJhY2tzLnNldFJhdGVzQ2FsbGJhY2sgPSBzZXRSYXRlc0NhbGxiYWNrOworfQorCitSZW1v
dGVWaWRlb0VuY29kZXI6OlJlbW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIgaW50
ZXJuYWxFbmNvZGVyKQorICAgIDogbV9pbnRlcm5hbEVuY29kZXIoaW50ZXJuYWxFbmNvZGVyKQor
eworfQorCitpbnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRl
b0NvZGVjKiBjb2RlYywgY29uc3QgU2V0dGluZ3MmKQoreworICAgIGlmIChTaW11bGNhc3RVdGls
aXR5OjpOdW1iZXJPZlNpbXVsY2FzdFN0cmVhbXMoKmNvZGVjKSA+IDEpCisgICAgICAgIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfRVJSX1NJTVVMQ0FTVF9QQVJBTUVURVJTX05PVF9TVVBQT1JU
RUQ7CisKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkuaW5pdGlhbGl6ZUNhbGxi
YWNrKG1faW50ZXJuYWxFbmNvZGVyLCAqY29kZWMpOworfQorCitpbnQzMl90IFJlbW90ZVZpZGVv
RW5jb2Rlcjo6UmVsZWFzZSgpCit7CisgICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxiYWNrcygp
LnJlbGVhc2VDYWxsYmFjayhtX2ludGVybmFsRW5jb2Rlcik7Cit9CisKK2ludDMyX3QgUmVtb3Rl
VmlkZW9FbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IHN0ZDo6
dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiogZnJhbWVUeXBlcykKK3sKKyAgICBib29sIHNob3VsZEVu
Y29kZUtleUZyYW1lID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZVR5
cGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZnJhbWVUeXBlcy0+YXQoaSkgPT0gVmlk
ZW9GcmFtZVR5cGU6OmtWaWRlb0ZyYW1lS2V5KSB7CisgICAgICAgICAgICBzaG91bGRFbmNvZGVL
ZXlGcmFtZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5lbmNvZGVDYWxsYmFjayhtX2ludGVy
bmFsRW5jb2RlciwgZnJhbWUsIHNob3VsZEVuY29kZUtleUZyYW1lKTsKK30KKwordm9pZCBSZW1v
dGVWaWRlb0VuY29kZXI6OlNldFJhdGVzKGNvbnN0IFJhdGVDb250cm9sUGFyYW1ldGVycyYgcmF0
ZXMpCit7CisgICAgdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkuc2V0UmF0ZXNDYWxsYmFjayhtX2lu
dGVybmFsRW5jb2RlciwgcmF0ZXMpOworfQorCitSZW1vdGVWaWRlb0VuY29kZXI6OkVuY29kZXJJ
bmZvIFJlbW90ZVZpZGVvRW5jb2Rlcjo6R2V0RW5jb2RlckluZm8oKSBjb25zdAoreworICAgIEVu
Y29kZXJJbmZvIGluZm87CisgICAgaW5mby5zdXBwb3J0c19uYXRpdmVfaGFuZGxlID0gdHJ1ZTsK
KyAgICBpbmZvLmltcGxlbWVudGF0aW9uX25hbWUgPSAiUmVtb3RlVmlkZW9Ub29sQm94IjsKKyAg
ICBpbmZvLmlzX2hhcmR3YXJlX2FjY2VsZXJhdGVkID0gdHJ1ZTsKKyAgICBpbmZvLmhhc19pbnRl
cm5hbF9zb3VyY2UgPSBmYWxzZTsKKworICAgIC8vIFZhbHVlcyB0YWtlbiBmcm9tIFJUQ1ZpZGVv
RW5jb2RlckgyNjQubW0KKyAgICBjb25zdCBpbnQga0xvd0gyNjRRcFRocmVzaG9sZCA9IDI4Owor
ICAgIGNvbnN0IGludCBrSGlnaEgyNjRRcFRocmVzaG9sZCA9IDM5OworICAgIGluZm8uc2NhbGlu
Z19zZXR0aW5ncyA9IFNjYWxpbmdTZXR0aW5ncyhrTG93SDI2NFFwVGhyZXNob2xkLCBrSGlnaEgy
NjRRcFRocmVzaG9sZCk7CisKKyAgICByZXR1cm4gaW5mbzsKK30KKworaW50MzJfdCBSZW1vdGVW
aWRlb0VuY29kZXI6OlJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VD
YWxsYmFjayogY2FsbGJhY2spCit7CisgICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxiYWNrcygp
LnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhtX2ludGVybmFsRW5jb2RlciwgY2FsbGJh
Y2spOworfQorCit2b2lkIFJlbW90ZVZpZGVvRW5jb2Rlcjo6ZW5jb2RlQ29tcGxldGUodm9pZCog
Y2FsbGJhY2ssIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgY29uc3QgV2ViS2l0RW5j
b2RlZEZyYW1lSW5mbyYgaW5mbywgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVy
KiBoZWFkZXIpCit7CisgICAgd2VicnRjOjpFbmNvZGVkSW1hZ2UgZW5jb2RlZEltYWdlKGJ1ZmZl
ciwgbGVuZ3RoLCBsZW5ndGgpOworICAgIGVuY29kZWRJbWFnZS5fZW5jb2RlZFdpZHRoID0gaW5m
by53aWR0aDsKKyAgICBlbmNvZGVkSW1hZ2UuX2VuY29kZWRIZWlnaHQgPSBpbmZvLmhlaWdodDsK
KyAgICBlbmNvZGVkSW1hZ2UuU2V0VGltZXN0YW1wKGluZm8udGltZVN0YW1wKTsKKyAgICBlbmNv
ZGVkSW1hZ2UuY2FwdHVyZV90aW1lX21zXyA9IGluZm8uY2FwdHVyZVRpbWVNUzsKKyAgICBlbmNv
ZGVkSW1hZ2UubnRwX3RpbWVfbXNfID0gaW5mby5udHBUaW1lTVM7CisgICAgZW5jb2RlZEltYWdl
LnRpbWluZ18gPSBpbmZvLnRpbWluZzsKKyAgICBlbmNvZGVkSW1hZ2UuX2ZyYW1lVHlwZSA9IGlu
Zm8uZnJhbWVUeXBlOworICAgIGVuY29kZWRJbWFnZS5yb3RhdGlvbl8gPSBpbmZvLnJvdGF0aW9u
OworICAgIGVuY29kZWRJbWFnZS5fY29tcGxldGVGcmFtZSA9IGluZm8uY29tcGxldGVGcmFtZTsK
KyAgICBlbmNvZGVkSW1hZ2UucXBfID0gaW5mby5xcDsKKyAgICBlbmNvZGVkSW1hZ2UuY29udGVu
dF90eXBlXyA9IGluZm8uY29udGVudFR5cGU7CisKKyAgICBDb2RlY1NwZWNpZmljSW5mbyBjb2Rl
Y1NwZWNpZmljSW5mbzsKKyAgICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6
OmtWaWRlb0NvZGVjSDI2NDsKKyAgICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1NwZWNpZmljLkgy
NjQucGFja2V0aXphdGlvbl9tb2RlID0gSDI2NFBhY2tldGl6YXRpb25Nb2RlOjpOb25JbnRlcmxl
YXZlZDsKKworICAgIHN0YXRpY19jYXN0PEVuY29kZWRJbWFnZUNhbGxiYWNrKj4oY2FsbGJhY2sp
LT5PbkVuY29kZWRJbWFnZShlbmNvZGVkSW1hZ2UsICZjb2RlY1NwZWNpZmljSW5mbywgaGVhZGVy
KTsKK30KKwordm9pZCogY3JlYXRlTG9jYWxFbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9G
b3JtYXQmIGZvcm1hdCwgTG9jYWxFbmNvZGVyQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgYXV0
byAqY29kZWNJbmZvID0gW1tSVENWaWRlb0NvZGVjSW5mbyBhbGxvY10gaW5pdFdpdGhOYXRpdmVT
ZHBWaWRlb0Zvcm1hdDogZm9ybWF0XTsKKyAgICBhdXRvICplbmNvZGVyID0gW1tSVENWaWRlb0Vu
Y29kZXJIMjY0IGFsbG9jXSBpbml0V2l0aENvZGVjSW5mbzpjb2RlY0luZm9dOworICAgIAorICAg
IFtlbmNvZGVyIHNldENhbGxiYWNrOl5CT09MKFJUQ0VuY29kZWRJbWFnZSAqX05vbm51bGwgZnJh
bWUsIGlkPFJUQ0NvZGVjU3BlY2lmaWNJbmZvPiBfTm9ubnVsbCBjb2RlY1NwZWNpZmljSW5mbywg
IFJUQ1J0cEZyYWdtZW50YXRpb25IZWFkZXIgKl9Ob25udWxsIGhlYWRlcikgeworICAgICAgICBF
bmNvZGVkSW1hZ2UgZW5jb2RlZEltYWdlID0gW2ZyYW1lIG5hdGl2ZUVuY29kZWRJbWFnZV07CisK
KyAgICAgICAgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvOworICAgICAgICBpbmZvLndpZHRo
ID0gZW5jb2RlZEltYWdlLl9lbmNvZGVkV2lkdGg7CisgICAgICAgIGluZm8uaGVpZ2h0ID0gZW5j
b2RlZEltYWdlLl9lbmNvZGVkSGVpZ2h0OworICAgICAgICBpbmZvLnRpbWVTdGFtcCA9IGVuY29k
ZWRJbWFnZS5UaW1lc3RhbXAoKTsKKyAgICAgICAgaW5mby5udHBUaW1lTVMgPSBlbmNvZGVkSW1h
Z2UubnRwX3RpbWVfbXNfOworICAgICAgICBpbmZvLmNhcHR1cmVUaW1lTVMgPSBlbmNvZGVkSW1h
Z2UuY2FwdHVyZV90aW1lX21zXzsKKyAgICAgICAgaW5mby5mcmFtZVR5cGUgPSBlbmNvZGVkSW1h
Z2UuX2ZyYW1lVHlwZTsKKyAgICAgICAgaW5mby5yb3RhdGlvbiA9IGVuY29kZWRJbWFnZS5yb3Rh
dGlvbl87CisgICAgICAgIGluZm8uY29udGVudFR5cGUgPSBlbmNvZGVkSW1hZ2UuY29udGVudF90
eXBlXzsKKyAgICAgICAgaW5mby5jb21wbGV0ZUZyYW1lID0gZW5jb2RlZEltYWdlLl9jb21wbGV0
ZUZyYW1lOworICAgICAgICBpbmZvLnFwID0gZW5jb2RlZEltYWdlLnFwXzsKKyAgICAgICAgaW5m
by50aW1pbmcgPSBlbmNvZGVkSW1hZ2UudGltaW5nXzsKKworICAgICAgICBjYWxsYmFjayhlbmNv
ZGVkSW1hZ2UuZGF0YSgpLCBlbmNvZGVkSW1hZ2Uuc2l6ZSgpLCBpbmZvLCBbaGVhZGVyIGNyZWF0
ZU5hdGl2ZUZyYWdtZW50YXRpb25IZWFkZXJdLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFlFUzsK
KyAgICB9XTsKKworICAgIHJldHVybiAoX19icmlkZ2VfcmV0YWluZWQgdm9pZCopZW5jb2RlcjsK
KworfQorCit2b2lkIHJlbGVhc2VMb2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyIGxvY2FsRW5jb2Rl
cikKK3sKKyAgICBhdXRvICplbmNvZGVyID0gKF9fYnJpZGdlX3RyYW5zZmVyIFJUQ1ZpZGVvRW5j
b2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsKKyAgICBbZW5jb2RlciByZWxlYXNlRW5jb2Rlcl07
Cit9CisKK3ZvaWQgaW5pdGlhbGl6ZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNv
ZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBpbnQgc3RhcnRC
aXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1pbkJpdHJhdGUs
IHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKK3sKKyAgICAvLyBNYXliZSB3ZSBzaG91bGQgSVBDOjpl
bmNvZGUvZGVjb2RlIFZpZGVvQ29kZWMgc3RydWN0dXJlcy4KKyAgICB3ZWJydGM6OlZpZGVvQ29k
ZWMgY29kZWNTZXR0aW5nczsKKyAgICBjb2RlY1NldHRpbmdzLndpZHRoID0gd2lkdGg7CisgICAg
Y29kZWNTZXR0aW5ncy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgY29kZWNTZXR0aW5ncy5zdGFydEJp
dHJhdGUgPSBzdGFydEJpdHJhdGU7CisgICAgY29kZWNTZXR0aW5ncy5tYXhCaXRyYXRlID0gbWF4
Qml0cmF0ZTsKKyAgICBjb2RlY1NldHRpbmdzLm1pbkJpdHJhdGUgPSBtaW5CaXRyYXRlOworICAg
IGNvZGVjU2V0dGluZ3MubWF4RnJhbWVyYXRlID0gbWF4RnJhbWVyYXRlOworCisgICAgYXV0byAq
ZW5jb2RlciA9IChfX2JyaWRnZSBSVENWaWRlb0VuY29kZXJIMjY0ICopKGxvY2FsRW5jb2Rlcik7
CisgICAgW2VuY29kZXIgc3RhcnRFbmNvZGVXaXRoU2V0dGluZ3M6W1tSVENWaWRlb0VuY29kZXJT
ZXR0aW5ncyBhbGxvY10gaW5pdFdpdGhOYXRpdmVWaWRlb0NvZGVjOiZjb2RlY1NldHRpbmdzXSBu
dW1iZXJPZkNvcmVzOjFdOworfQorCit2b2lkIGVuY29kZUxvY2FsRW5jb2RlckZyYW1lKExvY2Fs
RW5jb2RlciBsb2NhbEVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIGludDY0
X3QgdGltZVN0YW1wLCB3ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgaXNLZXlm
cmFtZVJlcXVpcmVkKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5TTnVtYmVyICo+ICpydGNGcmFt
ZVR5cGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBpZiAoaXNLZXlmcmFtZVJlcXVp
cmVkKQorICAgICAgICBbcnRjRnJhbWVUeXBlcyBhZGRPYmplY3Q6QChSVENGcmFtZVR5cGUoUlRD
RnJhbWVUeXBlVmlkZW9GcmFtZUtleSkpXTsKKworICAgIGF1dG8gKnZpZGVvRnJhbWUgPSBbW1JU
Q1ZpZGVvRnJhbWUgYWxsb2NdIGluaXRXaXRoQnVmZmVyOlRvT2JqQ1ZpZGVvRnJhbWVCdWZmZXIo
cGl4ZWxCdWZmZXJUb0ZyYW1lKHBpeGVsQnVmZmVyKSkgcm90YXRpb246UlRDVmlkZW9Sb3RhdGlv
bihyb3RhdGlvbikgdGltZVN0YW1wTnM6dGltZVN0YW1wXTsKKyAgICBhdXRvICplbmNvZGVyID0g
KF9fYnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsKKyAgICBbZW5j
b2RlciBlbmNvZGU6dmlkZW9GcmFtZSBjb2RlY1NwZWNpZmljSW5mbzpuaWwgZnJhbWVUeXBlczpy
dGNGcmFtZVR5cGVzXTsKK30KKwordm9pZCBzZXRMb2NhbEVuY29kZXJSYXRlcyhMb2NhbEVuY29k
ZXIgbG9jYWxFbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCit7
CisgICAgYXV0byAqZW5jb2RlciA9IChfX2JyaWRnZSBSVENWaWRlb0VuY29kZXJIMjY0ICopKGxv
Y2FsRW5jb2Rlcik7CisgICAgW2VuY29kZXIgc2V0Qml0cmF0ZTpiaXRSYXRlIGZyYW1lcmF0ZTpm
cmFtZVJhdGVdOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaAppbmRleCA2YTU4YmExNzNhNjEzMjM5MWFhMTc4MjJkNDZiYzA3OTM0NTQxZDQyLi5hYjc3
OTQyZTY5NDZiZGUzMDAyOTkwYTNhMjZhMTAwMWVmNjMwNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTUyLDIzICs1Miw2IEBAIGJvb2wgaXNIMjY0
SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZy
b21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVm
ZmVyUmVmKHNpemVfdCwgc2l6ZV90KT4mKTsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAot
Y2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeVdpdGhTaW11bGNhc3QgZmluYWwgOiBwdWJsaWMgVmlk
ZW9FbmNvZGVyRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgVmlkZW9FbmNvZGVyRmFj
dG9yeVdpdGhTaW11bGNhc3Qoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+JiYg
ZmFjdG9yeSkKLSAgICAgICAgOiBtX2ludGVybmFsRW5jb2RlckZhY3Rvcnkoc3RkOjptb3ZlKGZh
Y3RvcnkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBWaWRlb0VuY29kZXJGYWN0b3J5OjpDb2RlY0lu
Zm8gUXVlcnlWaWRlb0VuY29kZXIoY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5LT5RdWVyeVZpZGVvRW5jb2Rl
cihmb3JtYXQpOyB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBDcmVhdGVW
aWRlb0VuY29kZXIoY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgZmluYWwgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyU2ltdWxjYXN0UHJveHk+KG1faW50ZXJuYWxFbmNvZGVy
RmFjdG9yeS5nZXQoKSwgZm9ybWF0KTsgfQotCi0gICAgc3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3Jt
YXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ludGVybmFs
RW5jb2RlckZhY3RvcnktPkdldFN1cHBvcnRlZEZvcm1hdHMoKTsgfQotCi1wcml2YXRlOgotICAg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiBtX2ludGVybmFsRW5j
b2RlckZhY3Rvcnk7Ci19OwotCiB1c2luZyBXZWJLaXRWaWRlb0RlY29kZXIgPSB2b2lkKjsKIHVz
aW5nIFZpZGVvRGVjb2RlckNyZWF0ZUNhbGxiYWNrID0gV2ViS2l0VmlkZW9EZWNvZGVyKCopKGNv
bnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpOwogdXNpbmcgVmlkZW9EZWNvZGVyUmVsZWFzZUNh
bGxiYWNrID0gaW50MzJfdCgqKShXZWJLaXRWaWRlb0RlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRleCAxMjFlZGE5OGQ4ZmZlYjA2YTlmMzBk
ZTM4ODEwZDcwNWQ0MDY4YjBkLi4xNDAyYzJiZjNhNDE3MDNhY2I4ZjNkMGYxZjBhNDNhNzlhYTNj
YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkZyYW1ld29yay9OYXRpdmUvYXBpL3ZpZGVvX2RlY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIkZyYW1ld29yay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgogI2luY2x1ZGUgIlZpZGVvUHJvY2Vzc2luZ1NvZnRMaW5rLmgiCisjaW5j
bHVkZSAiV2ViS2l0RW5jb2Rlci5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxODQwMWRhNTM3NDVkMjk0MTg0YzhmOWE2MDlkZmVmOTkz
YjFmZTMwLi4wZThhMDQ1OTUwNmQ1ZWU0YjU2NmJhNDFlNDgzMjk5ZjBlZDExNTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTI3LDYgKzExMjcsOCBAQAogCQk0MTU0NDlC
NjIxQ0FDNENFMDAxQzBBNTUgLyogdXRpbC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE1NDQ5QjUyMUNBQzRDRTAwMUMwQTU1IC8qIHV0aWwuYyAqLzsg
fTsKIAkJNDE1NDQ5QjgyMUNBQzRFQzAwMUMwQTU1IC8qIHAyNTYuYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTQ0OUI3MjFDQUM0RUMwMDFDMEE1NSAv
KiBwMjU2LmMgKi87IH07CiAJCTQxNTQ0OUJCMjFDQUM1QjQwMDFDMEE1NSAvKiBlY2RoX2V4dHJh
LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU0NDlC
QTIxQ0FDNUIzMDAxQzBBNTUgLyogZWNkaF9leHRyYS5jICovOyB9OworCQk0MTU4NjQ5ODIzQkUw
NUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1ODY0OTYyM0JFMDVFODAwQTBBNjFFIC8qIFdlYktpdEVu
Y29kZXIuaCAqLzsgfTsKKwkJNDE1ODY0OTkyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29k
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU4
NjQ5NzIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLzsgfTsKIAkJNDE1RjFG
QTYyMTI3MkZCQTAwMDY0Q0JGIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCRTQyMTI3
MkY4NTAwMUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmNjICovOyB9Owog
CQk0MTVGMUZBNzIxMjcyRkJBMDAwNjRDQkYgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTA4
QkRCMjEyNzJGODQwMDFENUQ3QiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oICov
OyB9OwogCQk0MTVGMUZBODIxMjcyRkJBMDAwNjRDQkYgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9l
c3RpbWF0b3JfYWdjLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFBMDhCRTkyMTI3MkY4NjAwMUQ1RDdCIC8qIGFkYXB0aXZlX21vZGVfbGV2ZWxfZXN0
aW1hdG9yX2FnYy5jYyAqLzsgfTsKQEAgLTUwNDcsNiArNTA0OSw4IEBACiAJCTQxNTY2N0ExMjE1
QkU3NzUwMDMyMjk2QSAvKiBkYmdmbXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZGJnZm10Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTY2N0EyMjE1QkU3NzUwMDMyMjk2QSAvKiBiYy1h
bGlnbi5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmM7IHBhdGggPSAiYmMtYWxpZ24uYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNTY2N0EzMjE1QkU3NzYwMDMyMjk2QSAvKiBzeW1yZWMuYyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBw
YXRoID0gc3ltcmVjLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTg2NDk2MjNC
RTA1RTgwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRFbmNvZGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTVGMUZDNTIxMjczMDhFMDAwNjRDQkYgLyogYXVkaW9fc3Rh
dGUuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhdWRpb19zdGF0ZS5j
YzsgcGF0aCA9IGNhbGwvYXVkaW9fc3RhdGUuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNUYxRkQwMjEyNzMxM0QwMDA2NENCRiAvKiByZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjOyBwYXRoID0g
Y2FsbC9yZWNlaXZlX3RpbWVfY2FsY3VsYXRvci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE1RjFGRDEyMTI3MzEzRTAwMDY0Q0JGIC8qIHJ0cF9wYXlsb2FkX3BhcmFtcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBydHBfcGF5bG9hZF9wYXJhbXMuaDsgcGF0aCA9IGNhbGwvcnRwX3BheWxv
YWRfcGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTIwLDYgKzk1MjQs
OCBAQAogCQkJCTQxRUNFQUY5MjA2NDY2NjMwMDlENTE0MSAvKiBFbmNvZGVyVXRpbGl0aWVzLmgg
Ki8sCiAJCQkJNDFFQ0VBRkEyMDY0NjY2MzAwOUQ1MTQxIC8qIFZpZGVvUHJvY2Vzc2luZ1NvZnRM
aW5rLmNwcCAqLywKIAkJCQk0MUVDRUFGQjIwNjQ2NjY0MDA5RDUxNDEgLyogVmlkZW9Qcm9jZXNz
aW5nU29mdExpbmsuaCAqLywKKwkJCQk0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0
RW5jb2Rlci5oICovLAorCQkJCTQxNTg2NDk3MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNv
ZGVyLm1tICovLAogCQkJCTQxRUNFQUJCMjA2NDAzQzEwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRp
ZXMuaCAqLywKIAkJCQk0MUVDRUFCRDIwNjQwNDk4MDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVz
Lm1tICovLAogCQkJKTsKQEAgLTE1NjU4LDYgKzE1NjY0LDcgQEAKIAkJCQk1QzRCNEM4MTFFNDMx
RjlDMDAyNjUxQzggLyogd2F2X2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEI0Qzg0MUU0
MzFGOUMwMDI2NTFDOCAvKiB3YXZfaGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMxQzE2
MzIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNTg2
NDk4MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUVDRUFCQzIwNjQwM0MyMDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0REOENBQjFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDE0NUU0OTExRUY4OEVGNzAwRkNGNkU2IC8qIHdlYnJ0Y19saWJ5dXYu
aCBpbiBIZWFkZXJzICovLApAQCAtMTYyNDAsMTAgKzE2MjQ3LDEwIEBACiAJCQkJNDFCRTcxQ0Ey
MTVDNDY0ODAwQTdCMTk2IC8qIGhhbXQuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MUNCMjE1
QzQ2NDgwMEE3QjE5NiAvKiBpbnNuLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUJFNzE3QjIxNUM0
NTkwMDBBN0IxOTYgLyogaW50bnVtLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MTdDMDM3MzIzQjIx
MEM0MDBERTVEOEIgLyogbWFpbl9ub29wLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUJFNzE3QzIx
NUM0NTkwMDBBN0IxOTYgLyogaW50dHJlZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxQ0My
MTVDNDY0ODAwQTdCMTk2IC8qIGxpbmVtYXAuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxOUVBMUYz
MjE1QzQ4QzcwMDgyQkZEMiAvKiBtYWNoby1vYmpmbXQuYyBpbiBTb3VyY2VzICovLAorCQkJCTQx
N0MwMzczMjNCMjEwQzQwMERFNUQ4QiAvKiBtYWluX25vb3AuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxQkU3MTdEMjE1QzQ1OTAwMEE3QjE5NiAvKiBtZDUuYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
QkU3MTdFMjE1QzQ1OTAwMEE3QjE5NiAvKiBtZXJnZXNvcnQuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxOUVBMUY5MjE1QzRBOUUwMDgyQkZEMiAvKiBtb2R1bGUuYyBpbiBTb3VyY2VzICovLApAQCAt
MTc5NzQsNiArMTc5ODEsNyBAQAogCQkJCTVDNEI0QzgwMUU0MzFGOUMwMDI2NTFDOCAvKiB3YXZf
ZmlsZS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDNEI0QzgzMUU0MzFGOUMwMDI2NTFDOCAvKiB3
YXZfaGVhZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMUMwRjkyMzRCODlFMjAwMjhBNjE1
IC8qIHdlYWtfcHRyLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJNDE1ODY0OTkyM0JFMDVFOTAwQTBB
NjFFIC8qIFdlYktpdEVuY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUVDRUFCRTIwNjQw
NDk4MDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNE
RDhDQUExRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19jbmcuY2MgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0REODM2NzFFNDMyNUQ1MDA2MjFFOTIgLyogd2VicnRjX2xpYnl1di5jYyBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwCmluZGV4IDlmZTgyNGIxODczOGVhMDA3ODg0ZjQyNjVhMWQ1OWE1ZTRh
NTIxODEuLmFhNjQ0NmQyODMxNzJhM2Q4MmVkZjVmM2MwZjRlMzFlNDE2YmE2Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBs
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxl
PiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiYgc2FtcGwKICAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1w
bGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUo
KSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpj
cmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0
aW9uVGltZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9T
YW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBNZWRpYVRpbWUmJiBw
cmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsK
ICAgICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlQnVmZmVy
KTsKICAgICBpZiAoIXN1cmZhY2UpIHsKQEAgLTY5LDcgKzY5LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZm
ZXJSZWYgaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1
cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIFdURk1vdmUocHJlc2VudGF0aW9uVGltZSksIE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSkpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJm
YWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3Rh
dGlvbiwgZmFsc2UpKTsKIH0KIAogUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxl
KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFU
aW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWly
cm9yZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuaAppbmRleCBiZDI1NWY3OTQwMDQyNzFlM2FiNGViMjYwMjdlNjRhNzRhOTI4
NDg4Li43MmViYzY5YjMzZTM3Zjk4OGI1YjQ1YjM0ZDI4N2UxYmZiZTg4Y2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgK
QEAgLTQ5LDEzICs0OSwxNCBAQCBwdWJsaWM6CiAKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBj
cmVhdGUoTWVkaWFTYW1wbGUmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlh
VGltZSYmIHByZXNlbnRhdGlvblRpbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmLCBN
ZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBJ
T1N1cmZhY2VSZWYgc3VyZmFjZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBNZWRpYVRpbWUmIHRp
bWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWU7IH0KICAgICB1aW50MzJfdCB2aWRlb0Zvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Gb3JtYXQ7IH0KICAgICBJbnRTaXplIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb247IH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5oCmluZGV4IDNiNzQzMGZmNGM4ZmY4YmQyNzRmYzZiMmVhZDdjZTVi
YzViMGU1ZGYuLjczODBmMDQyZjFhN2Q1MTBmYWZkZDhjYmNkMDlhZGM1ZTVkMzJjYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIFdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcihJ
T1N1cmZhY2VSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IEludFNpemUmKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCA4NjFhYzFkYjFiODZkOTVkNWU0
NzBkYjQxOTE5MDg5ZWUzOGQ1NzMzLi4xNTM5N2FiN2YyNzhhZThkYzY5ZTMyNTIzNzY0ZmI4OGJm
ZWRkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTMwNyw2ICszMDcsMjAgQEAg
Q0ZEaWN0aW9uYXJ5UmVmIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmlvU3VyZmFjZVBpeGVsQnVm
ZmVyQ3JlYXRpb25PcHRpb25zKElPU3UKICAgICByZXR1cm4gbV9pb1N1cmZhY2VCdWZmZXJBdHRy
aWJ1dGVzLmdldCgpOwogfQogCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmIHN1cmZhY2UpCit7
CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVy
Q3JlYXRlV2l0aElPU3VyZmFjZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdXJmYWNlLCBpb1N1cmZh
Y2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhzdXJmYWNlKSwgJnBpeGVsQnVmZmVyKTsKKyAg
ICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZl
ckNyZWF0ZVdpdGhJT1N1cmZhY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZTogJWQiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0YXR1cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOworfQorCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNl
UmVmIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKCFzdXJmYWNlIHx8
ICFzZXRTaXplKHNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZwppbmRleCAxNGFhYzc0ODU5N2Y3ZmM2ZmMyOTI5NzkzNzQxMTQzYTYzNDY4ZWVlLi4y
YjE5ZTVlNjRhODhkNzU3MjJkM2Y5YTM4Y2U2M2U5ODhmMWJkN2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTQxLDcgKzE0MSw3IEBAIExJ
QldFQlJUQ19MSUJSQVJZX0RJUl9DT0NPQV9UT1VDSF9OTyA9ICQoTElCV0VCUlRDX0xJQlJBUllf
RElSX1VTRV9PVkVSUklERV9GUkFNCiBMSUJXRUJSVENfTElCUkFSWV9ESVJfVVNFX09WRVJSSURF
X0ZSQU1FV09SS1NfRElSX05PID0gJChXRUJDT1JFX0ZSQU1FV09SS1NfRElSKS9XZWJDb3JlLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3M7CiBMSUJXRUJSVENfTElCUkFSWV9ESVJfVVNF
X09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVIpOwogCi1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1pZnJhbWV3b3JrIiQoU0RLX0RJ
UikkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MiICQoVU5FWFBPUlRFRF9T
WU1CT0xfTERGTEFHUykgJChBU0FOX09USEVSX0xERkxBR1MpICQoRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MpICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpOworT1RIRVJf
TERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaWZyYW1ld29yayIkKFNES19ESVIpJChTWVNURU1fTElC
UkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiAkKFVORVhQT1JURURfU1lNQk9MX0xERkxBR1Mp
ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKSAk
KFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtWGxpbmtlciAtLW5vLWRlbWFuZ2xl
OwogCiBSRUVYUE9SVEVEX0ZSQU1FV09SS19OQU1FUyA9IFdlYktpdExlZ2FjeTsKIFJFRVhQT1JU
RURfRlJBTUVXT1JLX05BTUVTW3Nkaz1tYWNvc3gqXSA9ICQoaW5oZXJpdGVkKSBXZWJDb3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5oCmluZGV4IGY5ODgwMzk3ZWY4MTA5YmNmZmM1MmI3ZGI4NzU3MWY2NDZiYzQ3OGYu
LjBmNzRiYjY1YTBmNWZhY2RkMTYxM2ZhNjNjODRkNDMyYTM4NjVmYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgK
QEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KIAogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpAQCAtMzYsOCArMzgsMTMgQEAgY2xhc3Mg
RGVjb2RlcjsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOworfQorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHVzaW5n
IExvY2FsRGVjb2RlciA9IHZvaWQqOwordXNpbmcgTG9jYWxFbmNvZGVyID0gdm9pZCo7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksOCArNjYsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlY29kZUZy
YW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOwogCisgICAgdm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKTsKKyAgICB2
b2lkIHJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRp
YWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2
X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVu
c2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7CisgICAgdm9pZCBlbmNv
ZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
JiwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICB2b2lkIHNldEVuY29kZVJhdGVz
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJh
dGUpOworCisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlvU3VyZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25P
cHRpb25zKElPU3VyZmFjZVJlZik7CisKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRp
Zmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnM7CisgICAgSGFzaE1hcDxSVENF
bmNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbEVuY29kZXI+IG1fZW5jb2RlcnM7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGM3YTEzMzRkY2QwZDNhYTFkYjlkNTAxNTU0ZjFhMzA5Y2M2NTcyNzAuLjJiMzRlNTY0
MDVmMzg1MTZkODJjNTFkMjY5NGYyNTRhOWEzZWQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsMTIgQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNz
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlRGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29k
ZXJJZGVudGlmaWVyIGlkKQogICAgIFJlbGVhc2VEZWNvZGVyKFdlYktpdDo6UlRDRGVjb2Rlcklk
ZW50aWZpZXIgaWQpCiAgICAgRGVjb2RlRnJhbWUoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmll
ciBpZCwgdWludDMyX3QgdGltZVN0YW1wLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKworICAg
IENyZWF0ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnMpOworICAgIFJlbGVhc2VFbmNvZGVy
KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQpCisgICAgSW5pdGlhbGl6ZUVuY29kZXIo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNp
Z25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCisgICAgRW5jb2RlRnJhbWUo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUgc2FtcGxlLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCisgICAgU2V0RW5jb2RlUmF0
ZXMoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgYml0UmF0ZSwgdWlu
dDMyX3QgZnJhbWVSYXRlKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IDUzYzAzMTc5
OGNkZTBlMmM3MTgzYzY4YTU2Y2NkNGNjODcwMDEzMWYuLjE4Y2M1ZDc0NzljOTdiOGQyMjI3YzEy
NTQ0YzUxNmY3Yjg5MzM4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2Vi
UlRDTWFjcm9zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgorI2lu
Y2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+CiAKQEAgLTQ4LDYgKzQ5LDggQEAgTGliV2ViUlRDQ29kZWNzUHJveHk6On5MaWJXZWJSVEND
b2RlY3NQcm94eSgpCiB7CiAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVl
cygpKQogICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CisgICAg
Zm9yIChhdXRvIGVuY29kZXIgOiBtX2VuY29kZXJzLnZhbHVlcygpKQorICAgICAgICB3ZWJydGM6
OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNz
UHJveHk6OmNyZWF0ZURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAg
LTc3LDYgKzgwLDc5IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90CiAgICAgICAgIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzOjpGYWlsZWREZWNvZGluZyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKK3ZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYXJhbWV0
ZXJzKQoreworICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisK
KyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHJ0Y1BhcmFtZXRlcnM7Cisg
ICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBwYXJhbWV0ZXJzKQorICAgICAgICBydGNQYXJhbWV0
ZXJzLmVtcGxhY2UocGFyYW1ldGVyLmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zZWNv
bmQudXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwg
d2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB7ICJIMjY0
IiwgcnRjUGFyYW1ldGVycyB9LCBeKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUs
IGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgd2VicnRjOjpSVFBG
cmFnbWVudGF0aW9uSGVhZGVyKiBoZWFkZXIpIHsKKyAgICAgICAgCisgICAgICAgIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvLCB3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRpb25I
ZWFkZXIgeyBoZWFkZXIgfSB9LCAwKTsKKyAgICB9KSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGlm
IChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHdl
YnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyKTsKK30KKwordm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRy
YXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBt
YXhGcmFtZXJhdGUpCit7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAg
IGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2VicnRjOjppbml0aWFsaXpl
TG9jYWxFbmNvZGVyKGVuY29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0
cmF0ZSwgbWluQml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsKK30KKworc3RhdGljIGlubGluZSB3ZWJy
dGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKQoreworICAgIHN3aXRjaCAocm90YXRpb24pIHsKKyAgICBjYXNl
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1cm4gd2VicnRj
OjprVmlkZW9Sb3RhdGlvbl8wOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
OlVwc2lkZURvd246CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDsK
KyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICAgICAgcmV0
dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
MjcwOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gd2VicnRj
OjprVmlkZW9Sb3RhdGlvbl8wOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNv
ZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmIHNhbXBsZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQoreworICAg
IEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHNhbXBsZS52aWRlb0Zvcm1hdCgpKQor
ICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlKHNhbXBsZS52aWRlb0Zvcm1hdCgpKTsKKworI2lmIEhBVkUoSU9TVVJG
QUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZVBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkp
OworICAgIHdlYnJ0Yzo6ZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoZW5jb2RlciwgcGl4ZWxCdWZm
ZXIuZ2V0KCksIHNhbXBsZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCks
IHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihzYW1wbGUucm90YXRpb24oKSksIHNob3VsZEVuY29kZUFz
S2V5RnJhbWUpOworI2VuZGlmCit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVu
Y29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJh
dGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKK3sKKyAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSk7CisgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRp
Zmllcik7CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJydGM6
OnNldExvY2FsRW5jb2RlclJhdGVzKGVuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSk7Cit9CisK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCA2OTA2MzEwNmNhYjU0MDIxYzQyODk2Y2RjYjc2M2E3NTZmNzhhZjg2Li5jOWQwZTdjNjkxZmY3
Yzk1NWY4YzM1MTEwMDFjNDBhNTU0YWI5MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTIyMiw2ICsyMjIsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3Rf
YmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllcicsCisg
ICAgICAgICdXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBs
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
JywKQEAgLTYxMSw2ICs2MTIsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2Vy
U3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCIn
XSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6
IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAorICAgICAgICAnd2Vi
cnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJzogWyc8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RW5jb2Rlci5oPiddLAorICAgICAgICAnd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyJzogWyc8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oPiddLAogICAgIH0KIAog
ICAgIGhlYWRlcnMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYwYjM5ZjM3YzU3ODU1
NjIxZjI5ZjY2Yjk2MTdkOWE3YjNkYTcwM2QuLjU4M2I5ODM2ZThiNTYwMWQ5NmE0YzM2MDcwYTUw
ZTgwZWQ1MTYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU0Nyw2ICs1NDcsOCBAQCBX
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQogCiBXZWJQcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAorV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbQorCiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5jcHAKIAogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1YzZlN2Q2NWFmNzIyN2VmNzNh
ZmQ4MjY4ZmY3MWRiMGQ4YTIxNTAuLmI4ODQyMGZhMzI0ZmZkMzYyNjFlYWRhNDJkNTYyZjk5MzRk
MGNkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzMyMCw2ICszMzIwLDggQEAKIAkJNDE1MUU1QzMxRkJCOTBBOTAwRTQ3RTJEIC8q
IEZvcm1EYXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
cm1EYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTc4NTMw
MjEyNzZCNkYwMEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUt
aGVhZGVycy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2ViY29udGVudC1yZXNvdXJjZXMtdG8t
cHJpdmF0ZS1oZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0U0
QUYyMEUyRUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJvd3NlcnBsdWdpbi5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2I7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTg2NDlBMjNCRTA5MjQwMEEwQTYxRSAvKiBSVENF
bmNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENF
bmNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4NjQ5
QjIzQkUyRTIyMDBBMEE2MUUgLyogTGliV2ViUlRDQ29kZWNzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGliV2ViUlRDQ29kZWNzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29k
ZWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpYldlYlJUQ0NvZGVjcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYg
LyogTGliV2ViUlRDQ29kZWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExpYldlYlJUQ0NvZGVjcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NzIxOThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEyNCw3ICs3MTI2LDkgQEAKIAkJCQk0MTcyMTk4QTIz
QjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmNwcCAqLywKIAkJCQk0MTcyMTk4OTIz
QjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2
MkM3QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MTU4
NjQ5QjIzQkUyRTIyMDBBMEE2MUUgLyogTGliV2ViUlRDQ29kZWNzLm1tICovLAogCQkJCTQxNzIx
OThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRlbnRpZmllci5oICovLAorCQkJCTQx
NTg2NDlBMjNCRTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVySWRlbnRpZmllci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSB3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKaW5kZXggYjI3MWQ4ZWY5Y2NjYTQxZDg5ZmY4MGI1NjIxY2YwN2IyN2Y3NzJmYi4uMzRm
ZjAyMmZiMWQ4MmZkMzY5MWVkMWY4ZGU1NzhiMmUyOTJhODljOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5j
b2Rlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTY0LDE3ICs2NSw5MCBAQCBzdGF0aWMg
aW50MzJfdCByZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2sod2VicnRjOjpXZWJLaXRWaWRl
b0RlY29kZXIgZGVjb2RlcgogICAgIHJldHVybiAwOwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVj
czo6c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykKK3N0YXRpYyB3
ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBjcmVhdGVWaWRlb0VuY29kZXIoY29uc3Qgd2VicnRj
OjpTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KQoreworICAgIGlmIChmb3JtYXQubmFtZSAhPSAiSDI2
NCIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmNyZWF0ZUVuY29kZXIoZm9ybWF0LnBhcmFtZXRl
cnMpOworfQorCitzdGF0aWMgaW50MzJfdCByZWxlYXNlVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2Vi
S2l0VmlkZW9FbmNvZGVyIGVuY29kZXIpCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnJlbGVhc2VFbmNvZGVyKCpzdGF0aWNfY2FzdDxMaWJX
ZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSk7Cit9CisKK3N0YXRpYyBpbnQzMl90IGlu
aXRpYWxpemVWaWRlb0VuY29kZXIod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2Rlciwg
Y29uc3Qgd2VicnRjOjpWaWRlb0NvZGVjJiBjb2RlYykKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuaW5pdGlhbGl6ZUVuY29kZXIoKnN0YXRp
Y19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBjb2RlYy53aWR0aCwg
Y29kZWMuaGVpZ2h0LCBjb2RlYy5zdGFydEJpdHJhdGUsIGNvZGVjLm1heEJpdHJhdGUsIGNvZGVj
Lm1pbkJpdHJhdGUsIGNvZGVjLm1heEZyYW1lcmF0ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24od2VicnRj
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQoreworICAgIHN3aXRjaCAocm90YXRpb24pIHsKKyAg
ICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKKyAgICAgICAgcmV0dXJuIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8xODA6CisgICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRl
RG93bjsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6CisgICAgICAgIHJldHVy
biBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgY2FzZSB3ZWJydGM6OmtW
aWRlb1JvdGF0aW9uXzI3MDoKKyAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpMZWZ0OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7Cit9CisKK3N0YXRpYyBpbnQzMl90IGVu
Y29kZVZpZGVvRnJhbWUod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQor
eworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQaXhlbEJ1ZmZlcjsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgWyZu
ZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSAtPiBDVlBpeGVsQnVm
ZmVyUmVmIHsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCk7
CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBwaXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1ZmZlcik7CisKKyAg
ICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIG5ld1BpeGVsQnVmZmVyID0gYWRvcHRDRihwaXhlbEJ1ZmZlcik7
CisgICAgICAgIHJldHVybiBuZXdQaXhlbEJ1ZmZlci5nZXQoKTsKKyAgICB9KTsKKworICAgIGlm
ICghcGl4ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7
CisKKyAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZm
ZXIsIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSwgMTAwMDAwMCksIHRvTWVkaWFTYW1w
bGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKKyAgICByZXR1cm4gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZW5jb2RlRnJhbWUoKnN0YXRpY19jYXN0
PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCAqc2FtcGxlLCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKTsKK30KKworc3RhdGljIGludDMyX3QgcmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIHZvaWQqIGVuY29k
ZWRJbWFnZUNhbGxiYWNrKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJU
Q0NvZGVjcygpLnJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjaygqc3RhdGljX2Nhc3Q8TGliV2Vi
UlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2RlciksIGVuY29kZWRJbWFnZUNhbGxiYWNrKTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2V0RW5jb2RlUmF0ZXNDYWxsYmFjayh3ZWJy
dGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRW5jb2Rl
cjo6UmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHVpbnQzMl90IGJp
dFJhdGUgPSBwYXJhbWV0ZXJzLmJpdHJhdGUuZ2V0X3N1bV9rYnBzKCk7CisgICAgdWludDMyX3Qg
ZnJhbWVSYXRlID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuZnJhbWVyYXRlX2Zw
cyArIDAuNSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCku
c2V0RW5jb2RlUmF0ZXMoKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVu
Y29kZXIpLCBiaXRSYXRlLCBmcmFtZVJhdGUpOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjczo6
c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCiAgICAgaWYgKCF1c2VHUFVQcm9jZXNzKSB7CiAgICAgICAgIHdlYnJ0Yzo6c2V0
VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIp
OworICAgICAgICB3ZWJydGM6OnNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyhudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAvLyBMZXQncyBjcmVhdGUgV2ViUHJvY2VzcyBsaWJXZWJSVENDb2RlY3Mg
c2luY2UgaXQgbWF5IGJlIGNhbGxlZCBmcm9tIHZhcmlvdXMgdGhyZWFkcy4KICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKTsKICAgICB3ZWJydGM6OnNldFZpZGVv
RGVjb2RlckNhbGxiYWNrcyhjcmVhdGVWaWRlb0RlY29kZXIsIHJlbGVhc2VWaWRlb0RlY29kZXIs
IGRlY29kZVZpZGVvRnJhbWUsIHJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayk7CisgICAg
d2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9FbmNvZGVyLCByZWxl
YXNlVmlkZW9FbmNvZGVyLCBpbml0aWFsaXplVmlkZW9FbmNvZGVyLCBlbmNvZGVWaWRlb0ZyYW1l
LCByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIHNldEVuY29kZVJhdGVzQ2FsbGJhY2sp
OwogfQogCiBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRl
RGVjb2RlcigpCkBAIC04OSw4ICsxNjMsOCBAQCBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExp
YldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcigpCiAgICAgICAgIGF1dG8gZGVjb2RlcklkZW50
aWZpZXIgPSBkZWNvZGVyLT5pZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRGVjb2RlciB7IGRl
Y29kZXJJZGVudGlmaWVyIH0sIDApOwogCi0gICAgICAgIEFTU0VSVCghbV9kZWNvZGVDYWxsYmFj
a3MuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKLSAgICAgICAgbV9kZWNvZGVDYWxsYmFj
a3MuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRlY29kZXIpKTsKKyAgICAgICAgQVNT
RVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgIG1f
ZGVjb2RlcnMuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRlY29kZXIpKTsKICAgICB9
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAxLDkgKzE3NSw5IEBAIGludDMyX3QgTGli
V2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihEZWNvZGVyJiBkZWNvZGVyKQogICAgIGRlY29k
ZXIuZGVjb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRyOwogCiAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3RoaXMsIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci5pZGVudGlmaWVyXSB7Ci0gICAg
ICAgIEFTU0VSVChtX2RlY29kZUNhbGxiYWNrcy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikp
OworICAgICAgICBBU1NFUlQobV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikp
OwogCi0gICAgICAgIG1fZGVjb2RlQ2FsbGJhY2tzLnJlbW92ZShkZWNvZGVySWRlbnRpZmllcik7
CisgICAgICAgIG1fZGVjb2RlcnMucmVtb3ZlKGRlY29kZXJJZGVudGlmaWVyKTsKICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VEZWNv
ZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIDA7CkBA
IC0xMzAsNyArMjA0LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmZhaWxlZERlY29kaW5nKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoYXV0byogZGVjb2RlciA9IG1fZGVjb2RlQ2FsbGJhY2tz
LmdldChkZWNvZGVySWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8qIGRlY29kZXIgPSBtX2RlY29k
ZXJzLmdldChkZWNvZGVySWRlbnRpZmllcikpCiAgICAgICAgIGRlY29kZXItPmhhc0Vycm9yID0g
dHJ1ZTsKIH0KIApAQCAtMTM5LDcgKzIxMyw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21w
bGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dp
bmcuCi0gICAgYXV0byogZGVjb2RlciA9IG1fZGVjb2RlQ2FsbGJhY2tzLmdldChkZWNvZGVySWRl
bnRpZmllcik7CisgICAgYXV0byogZGVjb2RlciA9IG1fZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVu
dGlmaWVyKTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTY3LDYg
KzI0MSwxMDEgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZERlY29kaW5nKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVyLAogICAgIHdlYnJ0Yzo6UmVtb3RlVmlk
ZW9EZWNvZGVyOjpkZWNvZGVDb21wbGV0ZShkZWNvZGVyLT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywg
dGltZVN0YW1wLCBwaXhlbEJ1ZmZlci5nZXQoKSwgcmVtb3RlU2FtcGxlLnRpbWUoKS50b0RvdWJs
ZSgpKTsKIH0KIAorTGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNy
ZWF0ZUVuY29kZXIoY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgZm9y
bWF0UGFyYW1ldGVycykKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCk7CisgICAgYXV0byogcmVzdWx0ID0gZW5jb2Rlci5nZXQoKTsKKyAgICBlbmNvZGVyLT5pZGVu
dGlmaWVyID0gUlRDRW5jb2RlcklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworCisg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnM7CisgICAgZm9y
IChhdXRvJiBrZXlWYWx1ZSA6IGZvcm1hdFBhcmFtZXRlcnMpCisgICAgICAgIHBhcmFtZXRlcnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFN0cmluZzo6ZnJvbVVURjgoa2V5VmFsdWUuZmlyc3QuZGF0
YSgpLCBrZXlWYWx1ZS5maXJzdC5sZW5ndGgoKSksIFN0cmluZzo6ZnJvbVVURjgoa2V5VmFsdWUu
c2Vjb25kLmRhdGEoKSwga2V5VmFsdWUuc2Vjb25kLmxlbmd0aCgpKSkpOworCisgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIpLCBwYXJhbWV0ZXJz
ID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBlbmNvZGVy
SWRlbnRpZmllciA9IGVuY29kZXItPmlkZW50aWZpZXI7CisgICAgICAgIEFTU0VSVCghbV9lbmNv
ZGVycy5jb250YWlucyhlbmNvZGVySWRlbnRpZmllcikpOworCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rl
cklkZW50aWZpZXIsIHBhcmFtZXRlcnMgfSwgMCk7CisgICAgICAgIG1fZW5jb2RlcnMuYWRkKGVu
Y29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGVuY29kZXIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVsZWFzZUVuY29kZXIoRW5j
b2RlciYgZW5jb2RlcikKK3sKKyAgICBMb2NrSG9sZGVyIGhvbGRlcihlbmNvZGVyLmVuY29kZWRJ
bWFnZUNhbGxiYWNrTG9jayk7CisgICAgZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxsYmFjayA9IG51
bGxwdHI7CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIg
PSBlbmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFp
bnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKworICAgICAgICBtX2VuY29kZXJzLnJlbW92ZShlbmNv
ZGVySWRlbnRpZmllcik7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyIH0sIDApOwor
ICAgIH0pOworICAgIHJldHVybiAwOworfQorCitpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5p
dGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRSYXRlLCB1bnNpZ25lZCBtYXhCaXRSYXRlLCB1bnNp
Z25lZCBtaW5CaXRSYXRlLCB1aW50MzJfdCBtYXhGcmFtZVJhdGUpCit7CisgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCB3
aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZy
YW1lUmF0ZV0geworICAgICAgICBpZiAoYXV0byogZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVu
Y29kZXJJZGVudGlmaWVyKSkgeworICAgICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVySWRlbnRpZmllciwgd2lkdGgsIGhl
aWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUg
fSwgMCk7CisgICAgICAgICAgICAvLyBXZSBzZXQgZW5jb2Rlci0+Y29ubmVjdGlvbiBoZXJlIHNv
IHRoYXQgSW5pdGlhbGl6ZUVuY29kZXIgaXMgc2VudCBiZWZvcmUgYW55IEVuY29kZUZyYW1lIG1l
c3NhZ2UuCisgICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0gJmNvbm5lY3Rpb247Cisg
ICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBMaWJXZWJSVEND
b2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQoreworICAg
IGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX0VSUk9SOworCisgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGZyYW1l
LCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0sIDApOworICAgIHJldHVybiBXRUJSVENfVklERU9f
Q09ERUNfT0s7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpyZWdpc3RlckVuY29kZUZyYW1l
Q2FsbGJhY2soRW5jb2RlciYgZW5jb2Rlciwgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2spCit7
CisgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2sp
OworICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBlbmNvZGVkSW1hZ2VDYWxsYmFj
azsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldEVuY29kZVJhdGVzKEVuY29kZXImIGVu
Y29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKK3sKKyAgICBpZiAo
IWVuY29kZXIuY29ubmVjdGlvbikgeworICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywg
ZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0
ZV0geworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOworICAgICAgICAgICAgQVNTRVJU
KG1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIEFT
U0VSVChtX2VuY29kZXJzLmdldChlbmNvZGVySWRlbnRpZmllciktPmNvbm5lY3Rpb24pOworICAg
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNl
dEVuY29kZVJhdGVzIHsgZW5jb2RlcklkZW50aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSB9LCAw
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZW5jb2Rlci5jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0RW5jb2RlUmF0
ZXMgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSB9LCAwKTsKK30KKwor
dm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIGNvbnN0IHdlYnJ0Yzo6
V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0
aW9uSGVhZGVyJiYgZnJhZ21lbnRhdGlvbkhlYWRlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgLy8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCisgICAgYXV0byogZW5j
b2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhlbmNvZGVyLT5l
bmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spOworICAgIGlmICghbG9ja2VyKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIWVuY29kZXItPmVuY29kZWRJbWFnZUNhbGxiYWNrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6ZW5jb2RlQ29tcGxldGUo
ZW5jb2Rlci0+ZW5jb2RlZEltYWdlQ2FsbGJhY2ssIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCksIGluZm8sIGZyYWdtZW50YXRpb25IZWFkZXIudmFsdWUoKSk7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGUzY2Q4YTkzZmQzMTM5YWQxMWQxNTc0
NzEzZDVjZWEzYWY1MDkyYWIuLjg5M2UxOTg3YjVhNmY2Y2U5ZWEwZjBjYWFkNjdmYTE0NjEzN2I0
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5oCkBAIC0yOSwxMyArMjksMTggQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
UlRDRW5jb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQuaD4KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKK3VzaW5nIENW
UGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOworCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNlOwogY2xh
c3MgRGVjb2RlcjsKIH0KIApAQCAtNDMsNiArNDgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiB9CiAKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3Mg
V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjsKK3N0cnVjdCBXZWJLaXRFbmNvZGVkRnJhbWVJ
bmZvOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGliV2ViUlRDQ29kZWNzIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC01MCw2ICs2MCw4IEBAIGNsYXNzIExp
YldlYlJUQ0NvZGVjcyA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgog
ICAgIExpYldlYlJUQ0NvZGVjcygpID0gZGVmYXVsdDsKIAorICAgIHN0YXRpYyB2b2lkIHNldENh
bGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpOworCiAgICAgc3RydWN0IERlY29kZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC02MCwyMyArNzIs
NDYgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9u
OwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MoYm9v
bCB1c2VHUFVQcm9jZXNzKTsKLQogICAgIERlY29kZXIqIGNyZWF0ZURlY29kZXIoKTsKICAgICBp
bnQzMl90IHJlbGVhc2VEZWNvZGVyKERlY29kZXImKTsKICAgICBpbnQzMl90IGRlY29kZUZyYW1l
KERlY29kZXImLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwog
ICAgIHZvaWQgcmVnaXN0ZXJEZWNvZGVGcmFtZUNhbGxiYWNrKERlY29kZXImLCB2b2lkKiBkZWNv
ZGVkSW1hZ2VDYWxsYmFjayk7CiAKKyAgICBzdHJ1Y3QgRW5jb2RlciB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUlRDRW5jb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2sgeyBu
dWxscHRyIH07CisgICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOworICAgICAg
ICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgIH07CisKKyAgICBFbmNv
ZGVyKiBjcmVhdGVFbmNvZGVyKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4mKTsKKyAgICBpbnQzMl90IHJlbGVhc2VFbmNvZGVyKEVuY29kZXImKTsKKyAgICBpbnQzMl90
IGluaXRpYWxpemVFbmNvZGVyKEVuY29kZXImLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVp
Z2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVk
IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7CisgICAgaW50MzJfdCBlbmNvZGVG
cmFtZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmLCBib29sIHNo
b3VsZEVuY29kZUFzS2V5RnJhbWUpOworICAgIHZvaWQgcmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxi
YWNrKEVuY29kZXImLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7CisgICAgdm9pZCBzZXRF
bmNvZGVSYXRlcyhFbmNvZGVyJiwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRl
KTsKKyAgICAKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0KTsKKwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBjb21wbGV0
ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5nKFJU
Q0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRjOjpX
ZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiwgd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyJiYpOwogCi0gICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+PiBtX2RlY29kZUNhbGxiYWNrczsKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxS
VENEZWNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2RlY29kZXJz
OwogICAgIEhhc2hTZXQ8UlRDRGVjb2RlcklkZW50aWZpZXI+IG1fZGVjb2RpbmdFcnJvcnM7CiAK
KyAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
cj4+IG1fZW5jb2RlcnM7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFu
c2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKKyAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclBvb2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sOworICAgIHNpemVfdCBtX3BpeGVs
QnVmZmVyUG9vbFdpZHRoIHsgMCB9OworICAgIHNpemVfdCBtX3BpeGVsQnVmZmVyUG9vbEhlaWdo
dCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1l
c3NhZ2VzLmluCmluZGV4IDJhYWU5Nzg2ODBkM2MzYTc4MGI4YzI1OWU0M2E1ZTQ4ZDE5MDMxNmIu
LmYyYmY1YjgzNmIwOTk3YzFkZDBlMzY5OTk2NWRiNzUyNjhjYmYyYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MubWVzc2FnZXMuaW4KQEAgLTIzLDggKzIzLDEwIEBACiAjaWYgVVNFKExJQldFQlJUQykg
JiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4g
TGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQgewotICAgIEZhaWxlZERlY29kaW5nKFdlYktp
dDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCi0gICAgQ29tcGxldGVkRGVjb2RpbmcoV2ViS2l0
OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgdGltZVN0YW1wLCBXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisgICAgRmFpbGVkRGVjb2RpbmcoV2ViS2l0OjpSVENE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktp
dDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisKKyAgICBDb21wbGV0ZWRFbmNvZGlu
ZyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBzdHJ1Y3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIGluZm8sIHdl
YnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciBmcmFnbWVudGF0aW9uSGVhZGVyKTsK
IH0KIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIzZTNiNGQzOWNlZDdkMTEw
NGI2NmJkNTYzN2IyYjI1ZGUxNzZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0Nv
ZGVjcy5oIgorCisjaWYgVVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0NWUGl4ZWxCdWZmZXJQb29s
UmVmIExpYldlYlJUQ0NvZGVjczo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCkKK3sKKyAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxCdWZmZXJQ
b29sV2lkdGggIT0gd2lkdGggfHwgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgIT0gaGVpZ2h0KSB7
CisgICAgICAgIGNvbnN0IE9TVHlwZSB2aWRlb0NhcHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1h
dFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOworICAgICAgICBhdXRvIHBpeGVsQXR0
cmlidXRlcyA9IEB7CisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlcldpZHRoS2V5OiBAKHdpZHRoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5OiBAKGhlaWdodCksCisgICAgICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0Nh
cHR1cmVGb3JtYXQpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxC
dWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleTogQE5PLAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEZvcm1hdE9wZW5H
TEVTQ29tcGF0aWJpbGl0eSA6IEBZRVMsCisjZWxzZQorICAgICAgICAgICAgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJPcGVuR0xDb21wYXRpYmlsaXR5S2V5IDogQFlFUywKKyNl
bmRpZgorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1
cmZhY2VQcm9wZXJ0aWVzS2V5IDogQHsgfQorICAgICAgICB9OworCisgICAgICAgIENWUGl4ZWxC
dWZmZXJQb29sUmVmIHBvb2wgPSBudWxscHRyOworICAgICAgICBhdXRvIHN0YXR1cyA9IENWUGl4
ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpcGl4ZWxBdHRyaWJ1dGVzLCAmcG9vbCk7CisKKyAgICAgICAgaWYg
KHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBhZG9wdENGKHBvb2wpOworICAgICAgICBt
X3BpeGVsQnVmZmVyUG9vbFdpZHRoID0gd2lkdGg7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29s
SGVpZ2h0ID0gaGVpZ2h0OworICAgIH0KKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0
KCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9SVENFbmNvZGVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvUlRDRW5jb2RlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGE3
ZjNjMDRmNmM0OTliOWVkNjU2MmJmMmQwYzZiZjQ4ZTJhODA0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUlRDRW5jb2RlcklkZW50aWZpZXIu
aApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
VENFbmNvZGVySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUlRDRW5jb2RlcklkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFJUQ0VuY29kZXJJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggZjk4MzYyMjdlOWJl
NWYzNDdlYjdhYzM4ZmIwMjdjYzBjOGUyMjBmOC4uZDM5ZTM5OTdlMjQ5ODVlZjA2MzQyNWNmZTM5
YTg4YjFmNTJkOTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0xNDEsNyArMTQx
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJGYWMKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAg
ICAgLy8gV2Ugb25seSBzdXBwb3J0IGVmZmljaWVudCBzZW5kaW5nIG9mIHZpZGVvIGZyYW1lcyB3
aXRoIElPU1VSRkFDRQogI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCi0gICAgTGliV2ViUlRDQ29kZWNzOjpzZXRWaWRlb0RlY29kZXJDYWxsYmFja3MobV91c2VH
UFVQcm9jZXNzKTsKKyAgICBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhtX3VzZUdQVVBy
b2Nlc3MpOwogI2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YTo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386676</attachid>
            <date>2020-01-03 06:01:15 -0800</date>
            <delta_ts>2020-01-03 06:28:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205713-20200103150113.patch</filename>
            <type>text/plain</type>
            <size>85393</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAxZDgyNWM0ZTE4ZWQxMzlkY2ViZWRlMWYzMTlhZTljNGNmYTJjMzJiLi4wNGU5
OGYwNDUyNTNiYzE0MDIzZjcyMmQ3ZWQwNGQ2ZDYzZmM1MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wMS0wMyAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5j
b2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlbW90ZSB2aWRlbyBlbmNvZGVycyBjcmVhdGVk
IGFuZCB1c2VkIHRocm91Z2ggc2ltcGxlIHJvdXRpbmVzLgorICAgICAgICBBZGQgZmFjdG9yeSB0
byBjcmVhdGUgdmlkZW8gZW5jb2RlcnMgaW1wbGVtZW50ZWQgZWxzZXdoZXJlIHRoYW4gaW4gV2Vi
UlRDIGJhY2tlbmQuCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgSDI2NCBlbmNvZGVycy4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRFbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRSVFBGcmFn
bWVudGF0aW9uSGVhZGVyOjp2YWx1ZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRG
cmFtZUluZm86OmRlY29kZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm86OmVuY29kZSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRp
b25IZWFkZXI6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIpOgorICAgICAgICAod2VicnRj
OjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
d2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjpkZWNvZGUpOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeVdpdGhTaW11bGNhc3Q6OkNyZWF0ZVZpZGVv
RW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAg
ICAgICh3ZWJydGM6OnNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAgICAgICh3ZWJydGM6
OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVt
b3RlVmlkZW9FbmNvZGVyOjpSZWxlYXNlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjpFbmNvZGUpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlNl
dFJhdGVzKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVy
SW5mbyBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjplbmNvZGVDb21wbGV0ZSk6CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZUxvY2FsRW5j
b2Rlcik6CisgICAgICAgICh3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIpOgorICAgICAgICAo
d2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6ZW5jb2Rl
TG9jYWxFbmNvZGVyRnJhbWUpOgorICAgICAgICAod2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRl
cyk6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06
CisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDEtMDEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCB0cmFuc2NlaXZlciBzZXRDb2RlY1ByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmNTY3
MTNhNTdiMDI5YjQ0NjAzOTZlMDgyMGI5YzAzM2RmZjYyMi4uYmVkNjVlN2YzNjAwOGFkNGU1ZWM3
YWJkYjRmYmYxNzMwYWMzZTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAx
LTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgUlRDIFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyB0byBleHBvc2UgYSBjcmVhdGVQ
aXhlbEJ1ZmZlciByb3V0aW5lLCB0byBzZXQvZ2V0IFJlbW90ZVZpZGVvU2FtcGxlIGFuZCB0byBj
cmVhdGUgYSBDVlBpeGVsQnVmZmVyIGZyb20gYW4gSU9TdXJmYWNlUmVmLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGluIHBhcnRpY3VsYXIgd2VicnRjL3ZpZGVvLWdwdVBy
b2Nlc3MuaHRtbC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6cm90YXRpb24g
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2wpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJQb29sKToKKwogMjAy
MC0wMS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFhNTFNl
cmlhbGl6ZXIgZG9lc24ndCBjb3JyZWN0bHkgZW5jb2RlIGVudGl0aWVzIGluIDxzdHlsZT4gZWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiNzk4NTkzM2I0MjhkMWNiNGJjNTI0ZjE1M2I3MzM5MzRiNzgzMDg4
Li4yNmQyYzU1NTlmNzVkMDI0NGVlOTY2ZTgxYzgyM2MyZTZkOWNhMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU0IEBACisyMDIwLTAxLTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgUlRDIFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgcmVtb3RlIHZpZGVvIGVuY29kZXJzIGluIEdQVVByb2Nlc3MgYmFzZWQgb24gbGlid2Vi
cnRjIGV4cG9zZWQgcm91dGluZXMuCisgICAgICAgIFdlYlByb2Nlc3Mgc2V0cyBjYWxsYmFja3Mg
aW4gdGhlIHdlYnJ0YyBiYWNrZW5kIHRvIGltcGxlbWVudCBIMjY0IGVuY29kaW5nIGFzIGEgcmVt
b3RlIHZpZGVvIGVuY29kZXIuCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHZpZGVvIGZyYW1lcywg
d2UgYWxzbyBuZWVkIHRvIHNlbmQgcmF0ZSBzZXR0aW5nIG9yZGVycy4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6fkxpYldlYlJUQ0NvZGVjc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0Ojp0
b1dlYlJUQ1ZpZGVvUm90YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6c2V0RW5jb2RlUmF0ZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlVmlkZW9F
bmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVZpZGVvRW5jb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OnRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6ZW5jb2RlVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OnNldEVuY29kZVJhdGVzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyk6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2Rlcik6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OmZhaWxlZERlY29kaW5nKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmluaXRpYWxpemVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpl
bmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJF
bmNvZGVGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y29tcGxl
dGVkRW5jb2RpbmcpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnBpeGVsQnVm
ZmVyUG9vbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJZGVu
dGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6
Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorCiAyMDIwLTAxLTAzICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbm9uLWxpYndlYnJ0YyBidWlsZHMgYWZ0ZXIg
cjI1Mzk1NwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGVhNzg5ZTJjNWQzMjk1MWViNmRm
NGNhNWE4ZjQ3M2ZmOTExNmM1ZWIuLjUzZTM1NDdlOTkzNWY1Yzc5NzBiZDFlZDdjMGZkYzAzODMz
MDk5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI2OCwzICsyNjgsMTcgQEAgX19a
TjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KIF9fWk42d2VicnRjMThSZW1vdGVWaWRlb0Rl
Y29kZXIxNGRlY29kZUNvbXBsZXRlRVB2alAxMF9fQ1ZCdWZmZXJqCiBfX1pONndlYnJ0YzI0c2V0
VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQ
RmlTMF9qUEtobUVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFF
dgorX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZp
ZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMxOFJ0
cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVy
RDFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXJDMUV2CitfX1pONndlYnJ0
YzE4UmVtb3RlVmlkZW9FbmNvZGVyMTRlbmNvZGVDb21wbGV0ZUVQdlBobVJLTlNfMjJXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRQorX19aTjZ3ZWJy
dGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVzaXplRW0KK19fWk42d2VicnRjMjRzZXRWaWRl
b0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMw
X1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05TXzEwVmlkZW9GcmFtZUViRVBGaVMwX1MwX0VQ
RnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRlQ29udHJvbFBhcmFtZXRlcnNFRQorX19aTjZ3
ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2amoKK19fWk42d2VicnRjMjJpbml0aWFsaXpl
TG9jYWxFbmNvZGVyRVB2dHRqampqCitfX1pONndlYnJ0YzE0U2RwVmlkZW9Gb3JtYXRDMUVSS05T
dDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJ
Y0VFRUVSS05TMV8zbWFwSVM3X1M3X05TMV80bGVzc0lTN19FRU5TNV9JTlMxXzRwYWlySVM4X1M3
X0VFRUVFRQorX19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2FsRW5jb2RlckVSS05TXzE0U2RwVmlkZW9G
b3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
RVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFRQorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9y
bWF0RDFFdgorX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYKK19fWk42d2VicnRj
MjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4TlNfMTNWaWRlb1JvdGF0
aW9uRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBlYTc4OWUyYzVkMzI5NTFl
YjZkZjRjYTVhOGY0NzNmZjkxMTZjNWViLi41M2UzNTQ3ZTk5MzVmNWM3OTcwYmQxZWQ3YzBmZGMw
MzgzMzA5OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0yNjgsMyArMjY4
LDE3IEBAIF9fWk42d2VicnRjMTFkZWNvZGVGcmFtZUVQdmpQS2htCiBfX1pONndlYnJ0YzE4UmVt
b3RlVmlkZW9EZWNvZGVyMTRkZWNvZGVDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagogX19aTjZ3
ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0
RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQogX19aTjZ3ZWJydGMxOFJ0cENvZGVjQ2Fw
YWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJL
TlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKK19fWk42
d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRh
dGlvbkhlYWRlckQxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgor
X19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05T
XzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUK
K19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndlYnJ0
YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBG
aVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQ
RmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJz
RUUKK19fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0YzIy
aW5pdGlhbGl6ZUxvY2FsRW5jb2RlckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9y
bWF0QzFFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85
YWxsb2NhdG9ySWNFRUVFUktOUzFfM21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5TMV80
cGFpcklTOF9TN19FRUVFRUUKK19fWk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18x
NFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRjMTRT
ZHBWaWRlb0Zvcm1hdEQxRXYKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2Citf
X1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEz
VmlkZW9Sb3RhdGlvbkViCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZWE3ODllMmM1ZDMy
OTUxZWI2ZGY0Y2E1YThmNDczZmY5MTE2YzVlYi4uMWFhYTYwMDAyMTE5YTk3NjRmNzcwM2U0NTNj
NTc3NWZiN2ZlMTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMjY4LDMgKzI2OCwx
NSBAQCBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQogX19aTjZ3ZWJydGMxOFJlbW90
ZVZpZGVvRGVjb2RlcjE0ZGVjb2RlQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKIF9fWk42d2Vi
cnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVF
UEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFi
aWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckQxRXYKK19fWk42
d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgorX19aTjZ3ZWJydGMxOFJlbW90ZVZp
ZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1l
SW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUKK19fWk42d2VicnRjMjJSVFBGcmFn
bWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndlYnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2Fs
bGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9SS05TXzEwVmlk
ZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQRmlTMF9TMF9FUEZ2UzBfUktOU18x
MlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzRUUKK19fWk42d2VicnRjMjBzZXRM
b2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0YzIyaW5pdGlhbGl6ZUxvY2FsRW5jb2Rl
ckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18xMTJiYXNp
Y19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFUktOUzFf
M21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5TMV80cGFpcklTOF9TN19FRUVFRUUKK19f
Wk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18xNFNkcFZpZGVvRm9ybWF0RVUxM2Js
b2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBG
cmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEQxRXYKK19f
Wk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2CitfX1pONndlYnJ0YzIzZW5jb2RlTG9j
YWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEzVmlkZW9Sb3RhdGlvbkViCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdEVuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMGEyNTQwYWE4
ZThhN2ZkZTc1MjY2OGU4ZWNlMDdjZGRlNmJjYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29k
ZXIuaApAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8v
ZW5jb2RlZF9pbWFnZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzLmgiCisKK3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBFbmNvZGVkSW1hZ2VDYWxsYmFjazsKK2Ns
YXNzIFZpZGVvQ29kZWM7CitjbGFzcyBWaWRlb0ZyYW1lOworc3RydWN0IFNkcFZpZGVvRm9ybWF0
OworY2xhc3MgU2V0dGluZ3M7CisKK2NsYXNzIFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxj
YXN0IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0KHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXJGYWN0b3J5PiYmIGZhY3RvcnkpCisgICAgICAgIDogbV9pbnRlcm5hbEVuY29k
ZXJGYWN0b3J5KHN0ZDo6bW92ZShmYWN0b3J5KSkKKyAgICB7CisgICAgfQorCisgICAgVmlkZW9F
bmNvZGVyRmFjdG9yeTo6Q29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVv
Rm9ybWF0JiBmb3JtYXQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFj
dG9yeS0+UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBm
b3JtYXQpIGZpbmFsOworIAorICAgIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBw
b3J0ZWRGb3JtYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnRlcm5hbEVuY29kZXJGYWN0
b3J5LT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5
OworfTsKKwordXNpbmcgV2ViS2l0VmlkZW9FbmNvZGVyID0gdm9pZCo7Cit1c2luZyBWaWRlb0Vu
Y29kZXJDcmVhdGVDYWxsYmFjayA9IFdlYktpdFZpZGVvRW5jb2RlcigqKShjb25zdCBTZHBWaWRl
b0Zvcm1hdCYgZm9ybWF0KTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlbGVhc2VDYWxsYmFjayA9IGlu
dDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyKTsKK3VzaW5nIFZpZGVvRW5jb2RlckluaXRpYWxp
emVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0Nv
ZGVjJik7Cit1c2luZyBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayA9IGludDMyX3QoKikoV2Vi
S2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0ZyYW1lJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lKTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFj
ayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxs
YmFjayk7Cit1c2luZyBWaWRlb0VuY29kZXJTZXRSYXRlc0NhbGxiYWNrID0gdm9pZCgqKShXZWJL
aXRWaWRlb0VuY29kZXIsIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UmF0ZUNvbnRyb2xQYXJhbWV0ZXJz
Jik7CisKK3ZvaWQgc2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKFZpZGVvRW5jb2RlckNyZWF0ZUNh
bGxiYWNrLCBWaWRlb0VuY29kZXJSZWxlYXNlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlckluaXRpYWxp
emVDYWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlZ2lz
dGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyU2V0UmF0ZXNDYWxsYmFjayk7
CisKK3VzaW5nIFdlYktpdEVuY29kZWRGcmFtZVRpbWluZyA9IEVuY29kZWRJbWFnZTo6VGltaW5n
Oworc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm8geworICAgIHVpbnQzMl90IHdpZHRoIHsg
MCB9OworICAgIHVpbnQzMl90IGhlaWdodCB7IDAgfTsKKyAgICBpbnQ2NF90IHRpbWVTdGFtcCB7
IDAgfTsKKyAgICBpbnQ2NF90IG50cFRpbWVNUyB7IDAgfTsKKyAgICBpbnQ2NF90IGNhcHR1cmVU
aW1lTVMgeyAwIH07CisgICAgVmlkZW9GcmFtZVR5cGUgZnJhbWVUeXBlIHsgVmlkZW9GcmFtZVR5
cGU6OmtWaWRlb0ZyYW1lRGVsdGEgfTsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsga1Zp
ZGVvUm90YXRpb25fMCB9OworICAgIFZpZGVvQ29udGVudFR5cGUgY29udGVudFR5cGUgeyBWaWRl
b0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRCB9OworICAgIGJvb2wgY29tcGxldGVGcmFtZSA9IGZh
bHNlOworICAgIGludCBxcCB7IC0xIH07CisgICAgV2ViS2l0RW5jb2RlZEZyYW1lVGltaW5nIHRp
bWluZzsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYktpdEVuY29kZWRGcmFtZUluZm8mKTsKK307CisKK2NsYXNzIFdlYktpdFJU
UEZyYWdtZW50YXRpb25IZWFkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYktpdFJUUEZy
YWdtZW50YXRpb25IZWFkZXIod2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiA9IG51bGxw
dHIpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYpOworCisgICAgd2VicnRjOjpS
VFBGcmFnbWVudGF0aW9uSGVhZGVyKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH07CisKK3By
aXZhdGU6CisgICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBtX3ZhbHVlIHsgbnVs
bHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFk
ZXI+IG1fb3duZWRIZWFkZXI7Cit9OworCitjbGFzcyBSZW1vdGVWaWRlb0VuY29kZXIgZmluYWwg
OiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFJl
bW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIpOworICAgIH5SZW1vdGVWaWRlb0Vu
Y29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVDb21wbGV0ZSh2b2lk
KiBjYWxsYmFjaywgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvJiwgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKik7
CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqLCBj
b25zdCBTZXR0aW5ncyYpIGZpbmFsOworICAgIGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKikgZmluYWw7CisgICAgaW50MzJfdCBSZWxl
YXNlKCkgZmluYWw7CisgICAgaW50MzJfdCBFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYsIGNvbnN0
IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiopIGZpbmFsOworICAgIHZvaWQgU2V0UmF0ZXMo
Y29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJikgZmluYWw7CisgICAgRW5jb2RlckluZm8gR2V0
RW5jb2RlckluZm8oKSBjb25zdCBmaW5hbDsKKworICAgIFdlYktpdFZpZGVvRW5jb2RlciBtX2lu
dGVybmFsRW5jb2RlcjsKK307CisKK3VzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwordXNpbmcg
TG9jYWxFbmNvZGVyQ2FsbGJhY2sgPSB2b2lkICheKShjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mLCB3ZWJydGM6
OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqKTsKK3ZvaWQqIGNyZWF0ZUxvY2FsRW5jb2Rlcihjb25z
dCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiwgTG9jYWxFbmNvZGVyQ2FsbGJhY2spOwordm9pZCBy
ZWxlYXNlTG9jYWxFbmNvZGVyKExvY2FsRW5jb2Rlcik7Cit2b2lkIGluaXRpYWxpemVMb2NhbEVu
Y29kZXIoTG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4Qml0cmF0ZSwgdW5zaWduZWQg
aW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Cit2b2lkIGVuY29kZUxvY2Fs
RW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiwgaW50NjRfdCB0aW1l
U3RhbXAsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQpOwor
dm9pZCBzZXRMb2NhbEVuY29kZXJSYXRlcyhMb2NhbEVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSk7CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdl
YktpdEVuY29kZWRGcmFtZUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJiBpbmZvKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby53aWR0
aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
aGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1lU3RhbXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLm50cFRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGluZm8uY2FwdHVyZVRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmZvLmZyYW1lVHlwZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmZvLnJvdGF0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGlu
Zm8uY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLmNvbXBsZXRlRnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnFwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5mbGFncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZW5jb2RlX3N0
YXJ0X21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbmZvLnRpbWluZy5lbmNvZGVfZmluaXNoX21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5wYWNrZXRpemF0aW9uX2Zpbmlz
aF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1pbmcucGFjZXJfZXhpdF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcubmV0d29ya190aW1lc3RhbXBfbXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGlt
aW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucmVjZWl2ZV9zdGFydF9tcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHdpZHRoOworICAgIGVuY29kZXIgPDwg
aGVpZ2h0OworICAgIGVuY29kZXIgPDwgdGltZVN0YW1wOworICAgIGVuY29kZXIgPDwgbnRwVGlt
ZU1TOworICAgIGVuY29kZXIgPDwgY2FwdHVyZVRpbWVNUzsKKyAgICBlbmNvZGVyLmVuY29kZUVu
dW0oZnJhbWVUeXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocm90YXRpb24pOworICAgIGVu
Y29kZXIuZW5jb2RlRW51bShjb250ZW50VHlwZSk7CisgICAgZW5jb2RlciA8PCBjb21wbGV0ZUZy
YW1lOworICAgIGVuY29kZXIgPDwgcXA7CisKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5mbGFnczsK
KyAgICBlbmNvZGVyIDw8IHRpbWluZy5lbmNvZGVfc3RhcnRfbXM7CisgICAgZW5jb2RlciA8PCB0
aW1pbmcuZW5jb2RlX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNrZXRpemF0
aW9uX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNlcl9leGl0X21zOworICAg
IGVuY29kZXIgPDwgdGltaW5nLm5ldHdvcmtfdGltZXN0YW1wX21zOworICAgIGVuY29kZXIgPDwg
dGltaW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5yZWNl
aXZlX3N0YXJ0X21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlY2VpdmVfZmluaXNoX21zOwor
fQorCitpbmxpbmUgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6V2ViS2l0UlRQRnJhZ21l
bnRhdGlvbkhlYWRlcih3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGhlYWRlcikKKyAg
ICA6IG1fdmFsdWUoaGVhZGVyKQoreworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8ICEhbV92YWx1ZTsKKyAgICBpZiAoIW1fdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Zh
bHVlLT5TaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlLT5TaXpl
KCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Zh
bHVlLT5PZmZzZXQoaSkpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3ZhbHVlLT5MZW5ndGgoaSkpOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXImIGhlYWRlcikKK3sKKyAgICBib29s
IGlzTnVsbDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoaXNOdWxsKSB7CisgICAgICAgIGhlYWRlci5tX3ZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdW5zaWduZWQg
c2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBoZWFkZXIubV9vd25lZEhlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2VicnRj
OjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyPigpOworICAgIGhlYWRlci5tX3ZhbHVlID0gaGVhZGVy
Lm1fb3duZWRIZWFkZXIuZ2V0KCk7CisKKyAgICBoZWFkZXIubV92YWx1ZS0+VmVyaWZ5QW5kQWxs
b2NhdGVGcmFnbWVudGF0aW9uSGVhZGVyKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaGVhZGVyLm1fdmFsdWUtPlNpemUoKTsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCwgbGVuZ3RoOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBoZWFkZXIubV92YWx1ZS0+ZnJh
Z21lbnRhdGlvbk9mZnNldFtpXSA9IG9mZnNldDsKKyAgICAgICAgaGVhZGVyLm1fdmFsdWUtPmZy
YWdtZW50YXRpb25MZW5ndGhbaV0gPSBsZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjA1ODFkZTMxM2IyOTE3MGJjZjdhZDA1MGUwNDY3MmM5NzZjZDFlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRFbmNvZGVyLm1tCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgIldlYktpdEVuY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgor
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImNvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91dGlsaXR5LmgiCisjaW5j
bHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRl
LmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEZyYWdtZW50
YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgorI2luY2x1ZGUgInNkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCIKKyNpbmNs
dWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQu
aCIKKyNpbmNsdWRlICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRl
b0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdDo6Q3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNk
cFZpZGVvRm9ybWF0JiBmb3JtYXQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2RlclNpbXVsY2FzdFByb3h5PihtX2ludGVybmFsRW5jb2RlckZhY3RvcnkuZ2V0KCksIGZvcm1h
dCk7Cit9CisKK3N0cnVjdCBWaWRlb0VuY29kZXJDYWxsYmFja3MgeworICAgIFZpZGVvRW5jb2Rl
ckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2RlclJlbGVhc2VD
YWxsYmFjayByZWxlYXNlQ2FsbGJhY2s7CisgICAgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxi
YWNrIGluaXRpYWxpemVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayBl
bmNvZGVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2Fs
bGJhY2sgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2RlclNl
dFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFjazsKK307CisKK3N0YXRpYyBWaWRlb0VuY29k
ZXJDYWxsYmFja3MmIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpIHsKKyAgICBzdGF0aWMgVmlkZW9F
bmNvZGVyQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICByZXR1cm4gY2FsbGJhY2tzOworfQorCit2
b2lkIHNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyhWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayBj
cmVhdGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyUmVsZWFzZUNhbGxiYWNrIHJlbGVhc2VDYWxsYmFj
aywgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemVDYWxsYmFjaywgVmlk
ZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2sgZW5jb2RlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlZ2lz
dGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ss
IFZpZGVvRW5jb2RlclNldFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFjaykKK3sKKyAgICBh
dXRvJiBjYWxsYmFja3MgPSB2aWRlb0VuY29kZXJDYWxsYmFja3MoKTsKKyAgICBjYWxsYmFja3Mu
Y3JlYXRlQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFjazsKKyAgICBjYWxsYmFja3MucmVsZWFzZUNh
bGxiYWNrID0gcmVsZWFzZUNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5pbml0aWFsaXplQ2FsbGJh
Y2sgPSBpbml0aWFsaXplQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLmVuY29kZUNhbGxiYWNrID0g
ZW5jb2RlQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxs
YmFjayA9IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjazsKKyAgICBjYWxsYmFja3Muc2V0
UmF0ZXNDYWxsYmFjayA9IHNldFJhdGVzQ2FsbGJhY2s7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rl
cjo6UmVtb3RlVmlkZW9FbmNvZGVyKFdlYktpdFZpZGVvRW5jb2RlciBpbnRlcm5hbEVuY29kZXIp
CisgICAgOiBtX2ludGVybmFsRW5jb2RlcihpbnRlcm5hbEVuY29kZXIpCit7Cit9CisKK2ludDMy
X3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVj
LCBjb25zdCBTZXR0aW5ncyYpCit7CisgICAgaWYgKFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9m
U2ltdWxjYXN0U3RyZWFtcygqY29kZWMpID4gMSkKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJfU0lNVUxDQVNUX1BBUkFNRVRFUlNfTk9UX1NVUFBPUlRFRDsKKworICAgIHJl
dHVybiB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5pbml0aWFsaXplQ2FsbGJhY2sobV9pbnRlcm5h
bEVuY29kZXIsICpjb2RlYyk7Cit9CisKK2ludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpSZWxl
YXNlKCkKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxi
YWNrKG1faW50ZXJuYWxFbmNvZGVyKTsKK30KKworaW50MzJfdCBSZW1vdGVWaWRlb0VuY29kZXI6
OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9G
cmFtZVR5cGU+KiBmcmFtZVR5cGVzKQoreworICAgIGJvb2wgc2hvdWxkRW5jb2RlS2V5RnJhbWUg
PSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lVHlwZXMtPnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChmcmFtZVR5cGVzLT5hdChpKSA9PSBWaWRlb0ZyYW1lVHlwZTo6
a1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAgICAgICAgIHNob3VsZEVuY29kZUtleUZyYW1lID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZp
ZGVvRW5jb2RlckNhbGxiYWNrcygpLmVuY29kZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBm
cmFtZSwgc2hvdWxkRW5jb2RlS2V5RnJhbWUpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRW5jb2Rl
cjo6U2V0UmF0ZXMoY29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJiByYXRlcykKK3sKKyAgICB2
aWRlb0VuY29kZXJDYWxsYmFja3MoKS5zZXRSYXRlc0NhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVy
LCByYXRlcyk7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gUmVtb3RlVmlk
ZW9FbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0Cit7CisgICAgRW5jb2RlckluZm8gaW5m
bzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1w
bGVtZW50YXRpb25fbmFtZSA9ICJSZW1vdGVWaWRlb1Rvb2xCb3giOworICAgIGluZm8uaXNfaGFy
ZHdhcmVfYWNjZWxlcmF0ZWQgPSB0cnVlOworICAgIGluZm8uaGFzX2ludGVybmFsX3NvdXJjZSA9
IGZhbHNlOworCisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gUlRDVmlkZW9FbmNvZGVySDI2NC5t
bQorICAgIGNvbnN0IGludCBrTG93SDI2NFFwVGhyZXNob2xkID0gMjg7CisgICAgY29uc3QgaW50
IGtIaWdoSDI2NFFwVGhyZXNob2xkID0gMzk7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0g
U2NhbGluZ1NldHRpbmdzKGtMb3dIMjY0UXBUaHJlc2hvbGQsIGtIaWdoSDI2NFFwVGhyZXNob2xk
KTsKKworICAgIHJldHVybiBpbmZvOworfQorCitpbnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6
UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVnaXN0ZXJFbmNv
ZGVDb21wbGV0ZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBjYWxsYmFjayk7Cit9CisKK3Zv
aWQgUmVtb3RlVmlkZW9FbmNvZGVyOjplbmNvZGVDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
JiBpbmZvLCBjb25zdCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGhlYWRlcikKK3sK
KyAgICB3ZWJydGM6OkVuY29kZWRJbWFnZSBlbmNvZGVkSW1hZ2UoYnVmZmVyLCBsZW5ndGgsIGxl
bmd0aCk7CisgICAgZW5jb2RlZEltYWdlLl9lbmNvZGVkV2lkdGggPSBpbmZvLndpZHRoOworICAg
IGVuY29kZWRJbWFnZS5fZW5jb2RlZEhlaWdodCA9IGluZm8uaGVpZ2h0OworICAgIGVuY29kZWRJ
bWFnZS5TZXRUaW1lc3RhbXAoaW5mby50aW1lU3RhbXApOworICAgIGVuY29kZWRJbWFnZS5jYXB0
dXJlX3RpbWVfbXNfID0gaW5mby5jYXB0dXJlVGltZU1TOworICAgIGVuY29kZWRJbWFnZS5udHBf
dGltZV9tc18gPSBpbmZvLm50cFRpbWVNUzsKKyAgICBlbmNvZGVkSW1hZ2UudGltaW5nXyA9IGlu
Zm8udGltaW5nOworICAgIGVuY29kZWRJbWFnZS5fZnJhbWVUeXBlID0gaW5mby5mcmFtZVR5cGU7
CisgICAgZW5jb2RlZEltYWdlLnJvdGF0aW9uXyA9IGluZm8ucm90YXRpb247CisgICAgZW5jb2Rl
ZEltYWdlLl9jb21wbGV0ZUZyYW1lID0gaW5mby5jb21wbGV0ZUZyYW1lOworICAgIGVuY29kZWRJ
bWFnZS5xcF8gPSBpbmZvLnFwOworICAgIGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfID0gaW5m
by5jb250ZW50VHlwZTsKKworICAgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjU3BlY2lmaWNJbmZv
OworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNI
MjY0OworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjU3BlY2lmaWMuSDI2NC5wYWNrZXRpemF0
aW9uX21vZGUgPSBIMjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbkludGVybGVhdmVkOworCisgICAg
c3RhdGljX2Nhc3Q8RW5jb2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPk9uRW5jb2RlZElt
YWdlKGVuY29kZWRJbWFnZSwgJmNvZGVjU3BlY2lmaWNJbmZvLCBoZWFkZXIpOworfQorCit2b2lk
KiBjcmVhdGVMb2NhbEVuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0
LCBMb2NhbEVuY29kZXJDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvICpjb2RlY0luZm8g
PSBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVNkcFZpZGVvRm9ybWF0
OiBmb3JtYXRdOworICAgIGF1dG8gKmVuY29kZXIgPSBbW1JUQ1ZpZGVvRW5jb2RlckgyNjQgYWxs
b2NdIGluaXRXaXRoQ29kZWNJbmZvOmNvZGVjSW5mb107CisgICAgCisgICAgW2VuY29kZXIgc2V0
Q2FsbGJhY2s6XkJPT0woUlRDRW5jb2RlZEltYWdlICpfTm9ubnVsbCBmcmFtZSwgaWQ8UlRDQ29k
ZWNTcGVjaWZpY0luZm8+IF9Ob25udWxsIGNvZGVjU3BlY2lmaWNJbmZvLCAgUlRDUnRwRnJhZ21l
bnRhdGlvbkhlYWRlciAqX05vbm51bGwgaGVhZGVyKSB7CisgICAgICAgIEVuY29kZWRJbWFnZSBl
bmNvZGVkSW1hZ2UgPSBbZnJhbWUgbmF0aXZlRW5jb2RlZEltYWdlXTsKKworICAgICAgICBXZWJL
aXRFbmNvZGVkRnJhbWVJbmZvIGluZm87CisgICAgICAgIGluZm8ud2lkdGggPSBlbmNvZGVkSW1h
Z2UuX2VuY29kZWRXaWR0aDsKKyAgICAgICAgaW5mby5oZWlnaHQgPSBlbmNvZGVkSW1hZ2UuX2Vu
Y29kZWRIZWlnaHQ7CisgICAgICAgIGluZm8udGltZVN0YW1wID0gZW5jb2RlZEltYWdlLlRpbWVz
dGFtcCgpOworICAgICAgICBpbmZvLm50cFRpbWVNUyA9IGVuY29kZWRJbWFnZS5udHBfdGltZV9t
c187CisgICAgICAgIGluZm8uY2FwdHVyZVRpbWVNUyA9IGVuY29kZWRJbWFnZS5jYXB0dXJlX3Rp
bWVfbXNfOworICAgICAgICBpbmZvLmZyYW1lVHlwZSA9IGVuY29kZWRJbWFnZS5fZnJhbWVUeXBl
OworICAgICAgICBpbmZvLnJvdGF0aW9uID0gZW5jb2RlZEltYWdlLnJvdGF0aW9uXzsKKyAgICAg
ICAgaW5mby5jb250ZW50VHlwZSA9IGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfOworICAgICAg
ICBpbmZvLmNvbXBsZXRlRnJhbWUgPSBlbmNvZGVkSW1hZ2UuX2NvbXBsZXRlRnJhbWU7CisgICAg
ICAgIGluZm8ucXAgPSBlbmNvZGVkSW1hZ2UucXBfOworICAgICAgICBpbmZvLnRpbWluZyA9IGVu
Y29kZWRJbWFnZS50aW1pbmdfOworCisgICAgICAgIGNhbGxiYWNrKGVuY29kZWRJbWFnZS5kYXRh
KCksIGVuY29kZWRJbWFnZS5zaXplKCksIGluZm8sIFtoZWFkZXIgY3JlYXRlTmF0aXZlRnJhZ21l
bnRhdGlvbkhlYWRlcl0uZ2V0KCkpOworICAgICAgICByZXR1cm4gWUVTOworICAgIH1dOworCisg
ICAgcmV0dXJuIChfX2JyaWRnZV9yZXRhaW5lZCB2b2lkKillbmNvZGVyOworCit9CisKK3ZvaWQg
cmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNvZGVyKQoreworICAgIGF1
dG8gKmVuY29kZXIgPSAoX19icmlkZ2VfdHJhbnNmZXIgUlRDVmlkZW9FbmNvZGVySDI2NCAqKShs
b2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIHJlbGVhc2VFbmNvZGVyXTsKK30KKwordm9pZCBp
bml0aWFsaXplTG9jYWxFbmNvZGVyKExvY2FsRW5jb2RlciBsb2NhbEVuY29kZXIsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIGludCBzdGFydEJpdHJhdGUsIHVuc2ln
bmVkIGludCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4
RnJhbWVyYXRlKQoreworICAgIC8vIE1heWJlIHdlIHNob3VsZCBJUEM6OmVuY29kZS9kZWNvZGUg
VmlkZW9Db2RlYyBzdHJ1Y3R1cmVzLgorICAgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBjb2RlY1NldHRp
bmdzOworICAgIGNvZGVjU2V0dGluZ3Mud2lkdGggPSB3aWR0aDsKKyAgICBjb2RlY1NldHRpbmdz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBjb2RlY1NldHRpbmdzLnN0YXJ0Qml0cmF0ZSA9IHN0YXJ0
Qml0cmF0ZTsKKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBtYXhCaXRyYXRlOworICAg
IGNvZGVjU2V0dGluZ3MubWluQml0cmF0ZSA9IG1pbkJpdHJhdGU7CisgICAgY29kZWNTZXR0aW5n
cy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CisKKyAgICBhdXRvICplbmNvZGVyID0gKF9f
YnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsKKyAgICBbZW5jb2Rl
ciBzdGFydEVuY29kZVdpdGhTZXR0aW5nczpbW1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIGFsbG9j
XSBpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6JmNvZGVjU2V0dGluZ3NdIG51bWJlck9mQ29yZXM6
MV07Cit9CisKK3ZvaWQgZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyIGxvY2Fs
RW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgaW50NjRfdCB0aW1lU3RhbXAs
IHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQp
Cit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNOdW1iZXIgKj4gKnJ0Y0ZyYW1lVHlwZXMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOworICAgIGlmIChpc0tleWZyYW1lUmVxdWlyZWQpCisgICAgICAg
IFtydGNGcmFtZVR5cGVzIGFkZE9iamVjdDpAKFJUQ0ZyYW1lVHlwZShSVENGcmFtZVR5cGVWaWRl
b0ZyYW1lS2V5KSldOworCisgICAgYXV0byAqdmlkZW9GcmFtZSA9IFtbUlRDVmlkZW9GcmFtZSBh
bGxvY10gaW5pdFdpdGhCdWZmZXI6VG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcihwaXhlbEJ1ZmZlclRv
RnJhbWUocGl4ZWxCdWZmZXIpKSByb3RhdGlvbjpSVENWaWRlb1JvdGF0aW9uKHJvdGF0aW9uKSB0
aW1lU3RhbXBOczp0aW1lU3RhbXBdOworICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2UgUlRD
VmlkZW9FbmNvZGVySDI2NCAqKShsb2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIGVuY29kZTp2
aWRlb0ZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOm5pbCBmcmFtZVR5cGVzOnJ0Y0ZyYW1lVHlwZXNd
OworfQorCit2b2lkIHNldExvY2FsRW5jb2RlclJhdGVzKExvY2FsRW5jb2RlciBsb2NhbEVuY29k
ZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKK3sKKyAgICBhdXRvICpl
bmNvZGVyID0gKF9fYnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsK
KyAgICBbZW5jb2RlciBzZXRCaXRyYXRlOmJpdFJhdGUgZnJhbWVyYXRlOmZyYW1lUmF0ZV07Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IDZh
NThiYTE3M2E2MTMyMzkxYWExNzgyMmQ0NmJjMDc5MzQ1NDFkNDIuLmFiNzc5NDJlNjk0NmJkZTMw
MDI5OTBhM2EyNmExMDAxZWY2MzA1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMuaApAQCAtNTIsMjMgKzUyLDYgQEAgYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29k
ZXJBbGxvd2VkKCk7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90
LCBzaXplX3QpPiYpOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCi1jbGFzcyBWaWRlb0Vu
Y29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdCBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0
b3J5IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVs
Y2FzdChzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4mJiBmYWN0b3J5KQotICAg
ICAgICA6IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeSkpCi0gICAg
ewotICAgIH0KLQotICAgIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBRdWVyeVZpZGVv
RW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2ludGVybmFsRW5jb2RlckZhY3RvcnktPlF1ZXJ5VmlkZW9FbmNvZGVyKGZvcm1hdCk7IH0K
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rlcihj
b25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEVuY29kZXJTaW11bGNhc3RQcm94eT4obV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5LmdldCgp
LCBmb3JtYXQpOyB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3VwcG9y
dGVkRm9ybWF0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFjdG9y
eS0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeTsK
LX07Ci0KIHVzaW5nIFdlYktpdFZpZGVvRGVjb2RlciA9IHZvaWQqOwogdXNpbmcgVmlkZW9EZWNv
ZGVyQ3JlYXRlQ2FsbGJhY2sgPSBXZWJLaXRWaWRlb0RlY29kZXIoKikoY29uc3QgU2RwVmlkZW9G
b3JtYXQmIGZvcm1hdCk7CiB1c2luZyBWaWRlb0RlY29kZXJSZWxlYXNlQ2FsbGJhY2sgPSBpbnQz
Ml90KCopKFdlYktpdFZpZGVvRGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLm1tCmluZGV4IDEyMWVkYTk4ZDhmZmViMDZhOWYzMGRlMzg4MTBkNzA1ZDQw
NjhiMGQuLjE0MDJjMmJmM2E0MTcwM2FjYjhmM2QwZjFmMGE0M2E3OWFhM2NiNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaCIKKyNpbmNsdWRlICJXZWJLaXRF
bmNvZGVyLmgiCiAKICNpbmNsdWRlIDxtdXRleD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE4NDAxZGE1Mzc0NWQyOTQxODRjOGY5YTYwOWRmZWY5OTNiMWZlMzAuLjBlOGEw
NDU5NTA2ZDVlZTRiNTY2YmE0MWU0ODMyOTlmMGVkMTE1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExMjcsNiArMTEyNyw4IEBACiAJCTQxNTQ0OUI2MjFDQUM0Q0UwMDFD
MEE1NSAvKiB1dGlsLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTU0NDlCNTIxQ0FDNENFMDAxQzBBNTUgLyogdXRpbC5jICovOyB9OwogCQk0MTU0NDlC
ODIxQ0FDNEVDMDAxQzBBNTUgLyogcDI1Ni5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE1NDQ5QjcyMUNBQzRFQzAwMUMwQTU1IC8qIHAyNTYuYyAqLzsg
fTsKIAkJNDE1NDQ5QkIyMUNBQzVCNDAwMUMwQTU1IC8qIGVjZGhfZXh0cmEuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTQ0OUJBMjFDQUM1QjMwMDFD
MEE1NSAvKiBlY2RoX2V4dHJhLmMgKi87IH07CisJCTQxNTg2NDk4MjNCRTA1RTkwMEEwQTYxRSAv
KiBXZWJLaXRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICovOyB9
OworCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTg2NDk3MjNCRTA1RTkw
MEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tICovOyB9OwogCQk0MTVGMUZBNjIxMjcyRkJBMDAw
NjRDQkYgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFNDIxMjcyRjg1MDAxRDVEN0Ig
LyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgKi87IH07CiAJCTQxNUYxRkE3MjEy
NzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREIyMTI3MkY4NDAw
MUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmggKi87IH07CiAJCTQxNUYx
RkE4MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2Mu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJF
OTIxMjcyRjg2MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNj
ICovOyB9OwpAQCAtNTA0Nyw2ICs1MDQ5LDggQEAKIAkJNDE1NjY3QTEyMTVCRTc3NTAwMzIyOTZB
IC8qIGRiZ2ZtdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkYmdmbXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE1NjY3QTIyMTVCRTc3NTAwMzIyOTZBIC8qIGJjLWFsaWduLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgcGF0aCA9ICJiYy1hbGlnbi5jIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1
NjY3QTMyMTVCRTc3NjAwMzIyOTZBIC8qIHN5bXJlYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBzeW1yZWMu
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1ODY0OTYyM0JFMDVFODAwQTBBNjFF
IC8qIFdlYktpdEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4NjQ5NzIzQkUw
NUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYktpdEVuY29kZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNUYxRkM1MjEyNzMwOEUwMDA2NENCRiAvKiBhdWRpb19zdGF0ZS5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGF1ZGlvX3N0YXRlLmNjOyBwYXRoID0gY2Fs
bC9hdWRpb19zdGF0ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RjFGRDAy
MTI3MzEzRDAwMDY0Q0JGIC8qIHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2M7IHBhdGggPSBjYWxsL3JlY2VpdmVf
dGltZV9jYWxjdWxhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTVGMUZE
MTIxMjczMTNFMDAwNjRDQkYgLyogcnRwX3BheWxvYWRfcGFyYW1zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHJ0cF9wYXlsb2FkX3BhcmFtcy5oOyBwYXRoID0gY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MjAsNiArOTUyNCw4IEBACiAJCQkJNDFF
Q0VBRjkyMDY0NjY2MzAwOUQ1MTQxIC8qIEVuY29kZXJVdGlsaXRpZXMuaCAqLywKIAkJCQk0MUVD
RUFGQTIwNjQ2NjYzMDA5RDUxNDEgLyogVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwICovLAog
CQkJCTQxRUNFQUZCMjA2NDY2NjQwMDlENTE0MSAvKiBWaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5o
ICovLAorCQkJCTQxNTg2NDk2MjNCRTA1RTgwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggKi8s
CisJCQkJNDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0gKi8sCiAJ
CQkJNDFFQ0VBQkIyMDY0MDNDMTAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5oICovLAogCQkJ
CTQxRUNFQUJEMjA2NDA0OTgwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gKi8sCiAJCQkp
OwpAQCAtMTU2NTgsNiArMTU2NjQsNyBAQAogCQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAv
KiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1MUM4
IC8qIHdhdl9oZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIwMDI4
QTYxNSAvKiB3ZWFrX3B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1ODY0OTgyM0JFMDVFOTAw
QTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUJDMjA2
NDAzQzIwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4Q0FCMUU0M0M2RjcwMDYyMUU5MiAvKiB3ZWJydGNfY25nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTQ1RTQ5MTFFRjg4RUY3MDBGQ0Y2RTYgLyogd2VicnRjX2xpYnl1di5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNjI0MCwxMCArMTYyNDcsMTAgQEAKIAkJCQk0MUJFNzFDQTIxNUM0NjQ4MDBBN0Ix
OTYgLyogaGFtdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxQ0IyMTVDNDY0ODAwQTdCMTk2
IC8qIGluc24uYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdCMjE1QzQ1OTAwMEE3QjE5NiAv
KiBpbnRudW0uYyBpbiBTb3VyY2VzICovLAotCQkJCTQxN0MwMzczMjNCMjEwQzQwMERFNUQ4QiAv
KiBtYWluX25vb3AuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdDMjE1QzQ1OTAwMEE3QjE5
NiAvKiBpbnR0cmVlLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUJFNzFDQzIxNUM0NjQ4MDBBN0Ix
OTYgLyogbGluZW1hcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjMyMTVDNDhDNzAwODJC
RkQyIC8qIG1hY2hvLW9iamZtdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3QzAzNzMyM0IyMTBD
NDAwREU1RDhCIC8qIG1haW5fbm9vcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0QyMTVD
NDU5MDAwQTdCMTk2IC8qIG1kNS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0UyMTVDNDU5
MDAwQTdCMTk2IC8qIG1lcmdlc29ydC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjkyMTVD
NEE5RTAwODJCRkQyIC8qIG1vZHVsZS5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNzk3NCw2ICsxNzk4
MSw3IEBACiAJCQkJNUM0QjRDODAxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUM0QjRDODMxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTMxQzBGOTIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIu
Y2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0
RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0MSAv
KiBXZWJLaXRVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOENBQTFFNDNDNkY3
MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzY3MUU0
MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCAyMmUwZGZmMGRlNmE4ZDM4YjBlZjA4YzRiOGExMGY5MTI0MWYz
MTliLi4yNGY1YzA1OGZhY2I4MDZlOTc4OTQ3YjQwMmE4OTc5MjQ1Nzc4NGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTU1OCw2ICs1NTgsNyBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCitwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbQogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFj
NzE2NTM2ZjUzNzcxZmE2YjJhY2JiNWMzNDhiZjM4NDg2NmJjMGYuLjVkZjdhODUyODJhNTVmMDY0
M2MzMGJlNTdhODdkNDI0YzM5ODNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzksNiArMTA3OSw3IEBACiAJCTQxNTc0
NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDQxRTM4Njk5RTAwRTkxNEQ4
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTU3RUJGOTFFM0FCMDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1vY2tM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbi5oICovOyB9OworCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyogUmVh
bHRpbWVWaWRlb1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMTkzOEYyMTUyQzU2MTAwNkYxNENBIC8qIFJlYWx0aW1lVmlkZW9VdGls
aXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzdF
MTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICov
OyB9OwogCQk0MTYxNEE3OTFEQTY0MjQxMDA0QUQwNkYgLyogSFRUUEhlYWRlclZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MTRBNzcxREE2
NDIzNjAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCAqLzsgfTsKIAkJNDE2MUUyRDUxRkU0
OERDNTAwRUMyRTk2IC8qIEZldGNoTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ3RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzM3MSw2ICs3MzcyLDcgQEAKIAkJNDE1NzQ3NDQxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1By
b3ZpZGVyLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE1N0VCRjkxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4NjQ5
RjIzQkY3QjkzMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlYWx0aW1lVmlkZW9VdGlsaXRpZXMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUEzQjczMjEzOEUyNjQwMDFCNEJBQSAv
KiBMaWJXZWJSVENPYnNlcnZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDT2JzZXJ2ZXJzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDT2JzZXJ2ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUNEQUY2MUU2Q0UwRDMwMDRGMTFF
RSAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RTFCQjMyMTUwMTA4MDAwMjJEQTk2IC8qIFJUQ1J0cENvbnRy
aWJ1dGluZ1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBD
b250cmlidXRpbmdTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjU5
LDYgKzE2MjYxLDcgQEAKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFCODMgLyogUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaCAqLywKIAkJCQk0MTkyNDI0NzIxMjdCN0NDMDA2MzRG
Q0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gKi8sCiAJCQkJNDFEMTkz
OEYyMTUyQzU2MTAwNkYxNENBIC8qIFJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCAqLywKKwkJCQk0
MTU4NjQ5RjIzQkY3QjkzMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSAqLywK
IAkJCQkwNzBBOUY1RTFGRkVDQzcwMDAzREY2NDkgLyogU2NyZWVuRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWMuaCAqLywKIAkJCQkwNzBBOUY2MDFGRkVDQzcxMDAzREY2NDkgLyogU2NyZWVuRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMubW0gKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0zMTg3NCw2ICszMTg3Nyw3
IEBACiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIwMDlENzQw
MyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFCMUY1
OUM1NzMwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE1ODY0QTAyM0JGN0NCRjAwQTBBNjFFIC8qIFJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFu
YWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMgLyog
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FB
RDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmluZGV4IDlmZTgyNGIxODczOGVhMDA3ODg0ZjQyNjVh
MWQ1OWE1ZTRhNTIxODEuLmFhNjQ0NmQyODMxNzJhM2Q4MmVkZjVmM2MwZjRlMzFlNDE2YmE2Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZp
ZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiYgc2FtcGwK
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3Rl
VmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc2FtcGxlLnByZXNlbnRh
dGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQo
KSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYg
cHJlc2VudGF0aW9uVGltZSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVt
b3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBNZWRp
YVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbikKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGlt
YWdlQnVmZmVyKTsKICAgICBpZiAoIXN1cmZhY2UpIHsKQEAgLTY5LDcgKzY5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENW
UGl4ZWxCdWZmZXJSZWYgaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVv
U2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIFdURk1vdmUocHJlc2VudGF0aW9u
VGltZSksIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSkpOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1Nh
bXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRp
bWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAogUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZp
ZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24s
IGJvb2wgbWlycm9yZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCBiZDI1NWY3OTQwMDQyNzFlM2FiNGViMjYwMjdl
NjRhNzRhOTI4NDg4Li43MmViYzY5YjMzZTM3Zjk4OGI1YjQ1YjM0ZDI4N2UxYmZiZTg4Y2NkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmgKQEAgLTQ5LDEzICs0OSwxNCBAQCBwdWJsaWM6CiAKICNpZiBIQVZFKElPU1VSRkFD
RSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPiBjcmVhdGUoTWVkaWFTYW1wbGUmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShDVlBpeGVsQnVm
ZmVyUmVmLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBJT1N1cmZhY2VSZWYgc3VyZmFjZSgpOwogI2VuZGlmCiAKICAgICBjb25zdCBNZWRp
YVRpbWUmIHRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWU7IH0KICAgICB1aW50MzJfdCB2aWRl
b0Zvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Gb3JtYXQ7IH0KICAgICBJbnRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiByb3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb247IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCmluZGV4IDNiNzQzMGZmNGM4ZmY4YmQyNzRmYzZi
MmVhZDdjZTViYzViMGU1ZGYuLjczODBmMDQyZjFhN2Q1MTBmYWZkZDhjYmNkMDlhZGM1ZTVkMzJj
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhl
bEJ1ZmZlcihJT1N1cmZhY2VSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VSZWYsIGNvbnN0IEludFNp
emUmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCA4NjFhYzFkYjFi
ODZkOTVkNWU0NzBkYjQxOTE5MDg5ZWUzOGQ1NzMzLi4xNTM5N2FiN2YyNzhhZThkYzY5ZTMyNTIz
NzY0ZmI4OGJmZWRkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTMwNyw2ICsz
MDcsMjAgQEAgQ0ZEaWN0aW9uYXJ5UmVmIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmlvU3VyZmFj
ZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3UKICAgICByZXR1cm4gbV9pb1N1cmZhY2VC
dWZmZXJBdHRyaWJ1dGVzLmdldCgpOwogfQogCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmIHN1
cmZhY2UpCit7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBDVlBp
eGVsQnVmZmVyQ3JlYXRlV2l0aElPU3VyZmFjZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdXJmYWNl
LCBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhzdXJmYWNlKSwgJnBpeGVsQnVm
ZmVyKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiQ1ZQ
aXhlbEJ1ZmZlckNyZWF0ZVdpdGhJT1N1cmZhY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZTogJWQi
LCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOworfQorCiBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIo
SU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKCFz
dXJmYWNlIHx8ICFzZXRTaXplKHNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IGM2NmYxODVhZjViY2FjYjUyMGNiNTc0ODBmZjVh
NGUyZmM2ZTg0ZmMuLjA2Yjg0ZGFmN2Y3MTQ2MDkzNTBmMzkzNWFiNGVhZDgxZjhmNGYxYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAg
LTQzLDggKzQzLDYgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiAKICNpbmNsdWRlIDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAotI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKQEAgLTk1LDI4ICs5
Myw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVCbGFja1BpeGVsQnVmZmVy
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKIENWUGl4ZWxCdWZmZXJQb29sUmVmIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRo
LCBzaXplX3QgaGVpZ2h0KQogewogICAgIGlmICghbV9waXhlbEJ1ZmZlclBvb2wgfHwgbV9waXhl
bEJ1ZmZlclBvb2xXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVsQnVmZmVyUG9vbEhlaWdodCAhPSBo
ZWlnaHQpIHsKLSAgICAgICAgY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgIGF1dG8g
cGl4ZWxBdHRyaWJ1dGVzID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
VlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAod2lkdGgpLAotICAgICAgICAgICAgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoaGVpZ2h0KSwKLSAgICAgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBA
KHZpZGVvQ2FwdHVyZUZvcm1hdCksCi0gICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlckNHSW1hZ2VDb21wYXRpYmlsaXR5S2V5OiBATk8sCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsRm9y
bWF0T3BlbkdMRVNDb21wYXRpYmlsaXR5IDogQFlFUywKLSNlbHNlCi0gICAgICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlck9wZW5HTENvbXBhdGliaWxpdHlLZXkgOiBA
WUVTLAotI2VuZGlmCi0gICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcG9vbCA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gc3RhdHVz
ID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwg
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilwaXhlbEF0dHJpYnV0ZXMsICZwb29sKTsKLQotICAg
ICAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIEVSUk9S
X0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCBjcmVhdGluZyBhIHBp
eGVsIGJ1ZmZlciBwb29sIHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gYWRvcHRD
Rihwb29sKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBjcmVhdGVQaXhlbEJ1ZmZlclBv
b2wod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggPSB3aWR0
aDsKICAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgPSBoZWlnaHQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
VmlkZW9VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKaW5kZXggMzgwZDM3MzFiMGExNTNhYmI5YzIyNzBi
ZmVlNzY4MGYwM2IzYjhlYS4uYWE3MGRkZjAyOWIxZjgyYzZmMmZiYWRiZDkyODM1ODJiZmE3MTRi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lVmlkZW9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCkBAIC0yNyw2ICsyNyw4IEBACiAK
ICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKK3VzaW5nIENWUGl4ZWxCdWZmZXJQ
b29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOworCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBpbmxpbmUgT1NUeXBlIHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKQpA
QCAtMzgsNCArNDAsNiBAQCBzdGF0aWMgaW5saW5lIE9TVHlwZSBwcmVmZXJlZFBpeGVsQnVmZmVy
Rm9ybWF0KCkKICNlbmRpZgogfQogCitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclBvb2xSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQpOworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFiNjMwZGRkZWYyYjY5M2EzZjVkMjg0MGUxMzEzNTJkMDJmMjg3ZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRl
b1V0aWxpdGllcy5tbQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1
aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgorCisjaW5jbHVkZSAi
Q29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQpCit7CisgICAgY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CisgICAgYXV0
byBwaXhlbEF0dHJpYnV0ZXMgPSBAeworICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQ
aXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHdpZHRoKSwKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoaGVpZ2h0KSwKKyAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9DYXB0
dXJlRm9ybWF0KSwKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJD
R0ltYWdlQ29tcGF0aWJpbGl0eUtleTogQE5PLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsRm9ybWF0T3BlbkdMRVNDb21wYXRp
YmlsaXR5IDogQFlFUywKKyNlbHNlCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSA6IEBZRVMsCisjZW5kaWYKKyAgICAgICAg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5
IDogQHsgfQorICAgIH07CisKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwb29sID0gbnVsbHB0
cjsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcGl4ZWxBdHRyaWJ1
dGVzLCAmcG9vbCk7CisKKyAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0Q0YocG9vbCk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmln
IGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKaW5kZXggMTRh
YWM3NDg1OTdmN2ZjNmZjMjkyOTc5Mzc0MTE0M2E2MzQ2OGVlZS4uMmIxOWU1ZTY0YTg4ZDc1NzIy
ZDNmOWEzOGNlNjNlOTg4ZjFiZDdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1
cmF0aW9ucy9XZWJLaXQueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcKQEAgLTE0MSw3ICsxNDEsNyBAQCBMSUJXRUJSVENfTElCUkFSWV9E
SVJfQ09DT0FfVE9VQ0hfTk8gPSAkKExJQldFQlJUQ19MSUJSQVJZX0RJUl9VU0VfT1ZFUlJJREVf
RlJBTQogTElCV0VCUlRDX0xJQlJBUllfRElSX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJUl9O
TyA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9GcmFtZXdvcmtzOwogTElCV0VCUlRDX0xJQlJBUllfRElSX1VTRV9PVkVSUklERV9GUkFNRVdP
UktTX0RJUl9ZRVMgPSAkKFdLX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKTsKIAotT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtaWZyYW1ld29yayIkKFNES19ESVIpJChTWVNURU1fTElCUkFS
WV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiAkKFVORVhQT1JURURfU1lNQk9MX0xERkxBR1MpICQo
QVNBTl9PVEhFUl9MREZMQUdTKSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKSAkKFdL
X1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVy
aXRlZCkgLWlmcmFtZXdvcmsiJChTREtfRElSKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRl
RnJhbWV3b3JrcyIgJChVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTKSAkKEFTQU5fT1RIRVJfTERG
TEFHUykgJChGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUykgJChXS19SRUxPQ0FUQUJMRV9G
UkFNRVdPUktfTERGTEFHUykgLVhsaW5rZXIgLS1uby1kZW1hbmdsZTsKIAogUkVFWFBPUlRFRF9G
UkFNRVdPUktfTkFNRVMgPSBXZWJLaXRMZWdhY3k7CiBSRUVYUE9SVEVEX0ZSQU1FV09SS19OQU1F
U1tzZGs9bWFjb3N4Kl0gPSAkKGluaGVyaXRlZCkgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCBm
OTg4MDM5N2VmODEwOWJjZmZjNTJiN2RiODc1NzFmNjQ2YmM0NzhmLi4wZjc0YmI2NWEwZjVmYWNk
ZDE2MTNmYTYzYzg0ZDQzMmEzODY1ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC0yOSw2ICsyOSw4IEBA
CiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgQ29ubmVjdGlvbjsKQEAgLTM2LDggKzM4LDEzIEBAIGNsYXNzIERlY29kZXI7CiBjbGFzcyBE
YXRhUmVmZXJlbmNlOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZW1vdGVWaWRl
b1NhbXBsZTsKK30KKwogbmFtZXNwYWNlIHdlYnJ0YyB7CiB1c2luZyBMb2NhbERlY29kZXIgPSB2
b2lkKjsKK3VzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTU5LDggKzY2LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlRGVjb2RlcihS
VENEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBkZWNvZGVGcmFtZShSVENEZWNvZGVySWRl
bnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
IAorICAgIHZvaWQgY3JlYXRlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CisgICAgdm9pZCByZWxlYXNlRW5jb2Rl
cihSVENFbmNvZGVySWRlbnRpZmllcik7CisgICAgdm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENF
bmNvZGVySWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWdu
ZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRl
LCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOworICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2Rl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIGJvb2wgc2hvdWxkRW5j
b2RlQXNLZXlGcmFtZSk7CisgICAgdm9pZCBzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRp
ZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKTsKKworICAgIENGRGlj
dGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VS
ZWYpOworCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9j
YWxEZWNvZGVyPiBtX2RlY29kZXJzOworICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIs
IHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29kZXJzOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjN2ExMzM0ZGNk
MGQzYWExZGI5ZDUwMTU1NGYxYTMwOWNjNjU3MjcwLi4yYjM0ZTU2NDA1ZjM4NTE2ZDgyYzUxZDI2
OTRmMjU0YTlhM2VkNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3
LDYgKzI3LDEyIEBAIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50
ZWQgewogICAgIENyZWF0ZURlY29kZXIoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCkK
ICAgICBSZWxlYXNlRGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlkKQogICAg
IERlY29kZUZyYW1lKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IHRp
bWVTdGFtcCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisKKyAgICBDcmVhdGVFbmNvZGVyKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBwYXJhbWV0ZXJzKTsKKyAgICBSZWxlYXNlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkKQorICAgIEluaXRpYWxpemVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2Rl
cklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVk
IHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwg
dWludDMyX3QgbWF4RnJhbWVyYXRlKQorICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2Rl
cklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgYm9vbCBz
aG91bGRFbmNvZGVBc0tleUZyYW1lKQorICAgIFNldEVuY29kZVJhdGVzKFdlYktpdDo6UlRDRW5j
b2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCA1M2MwMzE3OThjZGUwZTJjNzE4M2M2OGE1
NmNjZDRjYzg3MDAxMzFmLi4xOGNjNWQ3NDc5Yzk3YjhkMjIyN2MxMjU0NGM1MTZmN2I4OTMzODc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCkBAIC00OCw2ICs0
OSw4IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojp+TGliV2ViUlRDQ29kZWNzUHJveHkoKQogewog
ICAgIGZvciAoYXV0byBkZWNvZGVyIDogbV9kZWNvZGVycy52YWx1ZXMoKSkKICAgICAgICAgd2Vi
cnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAgIGZvciAoYXV0byBlbmNvZGVy
IDogbV9lbmNvZGVycy52YWx1ZXMoKSkKKyAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNv
ZGVyKGVuY29kZXIpOwogfQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVEZWNv
ZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC03Nyw2ICs4MCw3OSBAQCB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpkZWNvZGVGcmFtZShSVENEZWNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50MzJfdAogICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6RmFpbGVkRGVj
b2RpbmcgeyBpZGVudGlmaWVyIH0sIDApOwogfQogCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFyYW1ldGVycykKK3sKKyAgICBBU1NF
UlQoIW1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJhbWV0ZXJzOworICAgIGZvciAoYXV0byYgcGFy
YW1ldGVyIDogcGFyYW1ldGVycykKKyAgICAgICAgcnRjUGFyYW1ldGVycy5lbXBsYWNlKHBhcmFt
ZXRlci5maXJzdC51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc2Vjb25kLnV0ZjgoKS5kYXRhKCkp
OworICAgIAorICAgIG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9j
YWxFbmNvZGVyKHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgeyAiSDI2NCIsIHJ0Y1BhcmFtZXRlcnMg
fSwgXihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6Oldl
YktpdEVuY29kZWRGcmFtZUluZm8mIGluZm8sIHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRl
ciogaGVhZGVyKSB7CisgICAgICAgIAorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVk
RW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBidWZmZXIsIHNpemUg
fSwgaW5mbywgd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyIHsgaGVhZGVyIH0g
fSwgMCk7CisgICAgfSkpOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNl
RW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVCht
X2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
bV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2Nh
bEVuY29kZXIoZW5jb2Rlcik7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRp
YWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90IHdp
ZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4
Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQorewor
ICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIHdlYnJ0Yzo6aW5pdGlhbGl6ZUxvY2FsRW5jb2RlcihlbmNv
ZGVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdHJhdGUsIG1heEJpdHJhdGUsIG1pbkJpdHJhdGUs
IG1heEZyYW1lcmF0ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9u
IHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
bikKK3sKKyAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
MDsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAg
ICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CisgICAgY2FzZSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzkwOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6
CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
MDsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1w
bGUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBBU1NFUlQobV9lbmNvZGVy
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5n
ZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+
cGl4ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9Gb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbiA9IFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShz
YW1wbGUudmlkZW9Gb3JtYXQoKSk7CisKKyNpZiBIQVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQorICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uLT5jcmVhdGVQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKTsKKyAgICB3ZWJydGM6OmVu
Y29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIsIHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUu
dGltZSgpLnRvVGltZVNjYWxlKDEwMDAwMDApLnRpbWVWYWx1ZSgpLCB0b1dlYlJUQ1ZpZGVvUm90
YXRpb24oc2FtcGxlLnJvdGF0aW9uKCkpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyNlbmRp
ZgorfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFt
ZVJhdGUpCit7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICgh
ZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJS
YXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNjkwNjMxMDZjYWI1NDAy
MWM0Mjg5NmNkY2I3NjNhNzU2Zjc4YWY4Ni4uYzlkMGU3YzY5MWZmN2M5NTVmOGMzNTExMDAxYzQw
YTU1NGFiOTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yMjIsNiArMjIyLDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpS
VENFbmNvZGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcicsCkBAIC02MTEsNiArNjEy
LDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzog
WyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1
Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGEnOiBbJyJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKKyAgICAgICAgJ3dlYnJ0Yzo6V2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mbyc6IFsnPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4nXSwKKyAg
ICAgICAgJ3dlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcic6IFsnPHdlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4nXSwKICAgICB9CiAKICAgICBoZWFkZXJzID0gW10K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGE1YzZlN2Q2NWFmNzIyN2VmNzNhZmQ4MjY4ZmY3MWRiMGQ4YTIxNTAuLjgxZGQ1MjBmYzcxMTNm
ZjI1ZTlhNWExNjgwMzNkNTUzNzlkZmQ3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzMyMCw2ICszMzIwLDcgQEAKIAkJNDE1MUU1
QzMxRkJCOTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNTc4NTMwMjEyNzZCNkYwMEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQt
cmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVycy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2Vi
Y29udGVudC1yZXNvdXJjZXMtdG8tcHJpdmF0ZS1oZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE1N0U0QUYyMEUyRUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFk
YnJvd3NlcnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJy
b3dzZXJwbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTg2NDlBMjNC
RTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpYldlYlJUQ0NvZGVjcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYgLyog
TGliV2ViUlRDQ29kZWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExpYldlYlJUQ0NvZGVjcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzIx
OThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSVENEZWNvZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzEyNSw2ICs3MTI2LDcgQEAKIAkJCQk0MTcyMTk4OTIzQjYx
MjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2MkM3
QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTcyMTk4
QzIzQjYxMkU4MDBBRTU2ODYgLyogUlRDRGVjb2RlcklkZW50aWZpZXIuaCAqLywKKwkJCQk0MTU4
NjQ5QTIzQkUwOTI0MDBBMEE2MUUgLyogUlRDRW5jb2RlcklkZW50aWZpZXIuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gd2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwCmluZGV4IGIyNzFkOGVmOWNjY2E0MWQ4OWZmODBiNTYyMWNmMDdiMjdmNzcyZmIuLmU0OGJj
NDBhNDc1NzNlYTEzOGQwNGVkNTc4Y2Q1MjEwYWE4ODBhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAt
MzMsOCArMzMsMTAgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9z
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIu
aD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC02NCwxNyArNjYsOTAgQEAgc3RhdGljIGludDMy
X3QgcmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9EZWNv
ZGVyIGRlY29kZXIKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNl
dFZpZGVvRGVjb2RlckNhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCitzdGF0aWMgd2VicnRj
OjpXZWJLaXRWaWRlb0VuY29kZXIgY3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2Rw
VmlkZW9Gb3JtYXQmIGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0Lm5hbWUgIT0gIkgyNjQiKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5saWJXZWJSVENDb2RlY3MoKS5jcmVhdGVFbmNvZGVyKGZvcm1hdC5wYXJhbWV0ZXJzKTsK
K30KKworc3RhdGljIGludDMyX3QgcmVsZWFzZVZpZGVvRW5jb2Rlcih3ZWJydGM6OldlYktpdFZp
ZGVvRW5jb2RlciBlbmNvZGVyKQoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENDb2RlY3MoKS5yZWxlYXNlRW5jb2Rlcigqc3RhdGljX2Nhc3Q8TGliV2ViUlRD
Q29kZWNzOjpFbmNvZGVyKj4oZW5jb2RlcikpOworfQorCitzdGF0aWMgaW50MzJfdCBpbml0aWFs
aXplVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0
IHdlYnJ0Yzo6VmlkZW9Db2RlYyYgY29kZWMpCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmluaXRpYWxpemVFbmNvZGVyKCpzdGF0aWNfY2Fz
dDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgY29kZWMud2lkdGgsIGNvZGVj
LmhlaWdodCwgY29kZWMuc3RhcnRCaXRyYXRlLCBjb2RlYy5tYXhCaXRyYXRlLCBjb2RlYy5taW5C
aXRyYXRlLCBjb2RlYy5tYXhGcmFtZXJhdGUpOworfQorCitzdGF0aWMgaW5saW5lIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKHdlYnJ0Yzo6Vmlk
ZW9Sb3RhdGlvbiByb3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7CisgICAgY2Fz
ZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6CisgICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgw
OgorICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247
CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOgorICAgICAgICByZXR1cm4gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9S
b3RhdGlvbl8yNzA6CisgICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworfQorCitzdGF0aWMgaW50MzJfdCBlbmNvZGVW
aWRlb0ZyYW1lKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYnJ0
Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4ZWxCdWZmZXI7CisgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFsmbmV3UGl4
ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJl
ZiB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubGliV2ViUlRDQ29kZWNzKCkucGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQpOworICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgICAg
ICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIpOworCisgICAgICAg
IGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YocGl4ZWxCdWZmZXIpOworICAg
ICAgICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAgfSk7CisKKyAgICBpZiAoIXBp
eGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworCisg
ICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBN
ZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlk
ZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVuY29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJX
ZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgKnNhbXBsZSwgc2hvdWxkRW5jb2RlQXNL
ZXlGcmFtZSk7Cit9CisKK3N0YXRpYyBpbnQzMl90IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxs
YmFjayh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1h
Z2VDYWxsYmFjaykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2Rl
Y3MoKS5yZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJhY2soKnN0YXRpY19jYXN0PExpYldlYlJUQ0Nv
ZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHNldEVuY29kZVJhdGVzQ2FsbGJhY2sod2VicnRjOjpX
ZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0VuY29kZXI6OlJh
dGVDb250cm9sUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICB1aW50MzJfdCBiaXRSYXRl
ID0gcGFyYW1ldGVycy5iaXRyYXRlLmdldF9zdW1fa2JwcygpOworICAgIHVpbnQzMl90IGZyYW1l
UmF0ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJzLmZyYW1lcmF0ZV9mcHMgKyAw
LjUpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnNldEVu
Y29kZVJhdGVzKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVy
KSwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldENh
bGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIGlmICghdXNlR1BVUHJvY2VzcykgewogICAgICAgICB3ZWJydGM6OnNldFZpZGVv
RGVjb2RlckNhbGxiYWNrcyhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICAgICAgd2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MobnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgLy8gTGV0J3MgY3JlYXRlIFdlYlByb2Nlc3MgbGliV2ViUlRDQ29kZWNzIHNpbmNl
IGl0IG1heSBiZSBjYWxsZWQgZnJvbSB2YXJpb3VzIHRocmVhZHMuCiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCk7CiAgICAgd2VicnRjOjpzZXRWaWRlb0RlY29k
ZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9EZWNvZGVyLCByZWxlYXNlVmlkZW9EZWNvZGVyLCBkZWNv
ZGVWaWRlb0ZyYW1lLCByZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2spOworICAgIHdlYnJ0
Yzo6c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKGNyZWF0ZVZpZGVvRW5jb2RlciwgcmVsZWFzZVZp
ZGVvRW5jb2RlciwgaW5pdGlhbGl6ZVZpZGVvRW5jb2RlciwgZW5jb2RlVmlkZW9GcmFtZSwgcmVn
aXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrLCBzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKTsKIH0K
IAogTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29k
ZXIoKQpAQCAtODksOCArMTY0LDggQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJS
VENDb2RlY3M6OmNyZWF0ZURlY29kZXIoKQogICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVy
ID0gZGVjb2Rlci0+aWRlbnRpZmllcjsKICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZURlY29kZXIgeyBkZWNvZGVy
SWRlbnRpZmllciB9LCAwKTsKIAotICAgICAgICBBU1NFUlQoIW1fZGVjb2RlQ2FsbGJhY2tzLmNv
bnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7Ci0gICAgICAgIG1fZGVjb2RlQ2FsbGJhY2tzLmFk
ZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CisgICAgICAgIEFTU0VSVCgh
bV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOworICAgICAgICBtX2RlY29k
ZXJzLmFkZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMSw5ICsxNzYsOSBAQCBpbnQzMl90IExpYldlYlJU
Q0NvZGVjczo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBkZWNvZGVyLmRl
Y29kZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0cjsKIAogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0
aGlzLCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0gewotICAgICAgICBB
U1NFUlQobV9kZWNvZGVDYWxsYmFja3MuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKKyAg
ICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKIAot
ICAgICAgICBtX2RlY29kZUNhbGxiYWNrcy5yZW1vdmUoZGVjb2RlcklkZW50aWZpZXIpOworICAg
ICAgICBtX2RlY29kZXJzLnJlbW92ZShkZWNvZGVySWRlbnRpZmllcik7CiAgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRGVjb2RlciB7
IGRlY29kZXJJZGVudGlmaWVyIH0sIDApOwogICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTMw
LDcgKzIwNSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNv
ZGVySWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgaWYgKGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZUNhbGxiYWNrcy5nZXQo
ZGVjb2RlcklkZW50aWZpZXIpKQorICAgIGlmIChhdXRvKiBkZWNvZGVyID0gbV9kZWNvZGVycy5n
ZXQoZGVjb2RlcklkZW50aWZpZXIpKQogICAgICAgICBkZWNvZGVyLT5oYXNFcnJvciA9IHRydWU7
CiB9CiAKQEAgLTEzOSw3ICsyMTQsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVk
RGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgot
ICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZUNhbGxiYWNrcy5nZXQoZGVjb2RlcklkZW50aWZp
ZXIpOworICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmll
cik7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2Nyw2ICsyNDIs
MTExIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVy
SWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAgICB3ZWJydGM6OlJlbW90ZVZpZGVvRGVj
b2Rlcjo6ZGVjb2RlQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVT
dGFtcCwgcGl4ZWxCdWZmZXIuZ2V0KCksIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSk7
CiB9CiAKK0xpYldlYlJUQ0NvZGVjczo6RW5jb2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVF
bmNvZGVyKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIGZvcm1hdFBh
cmFtZXRlcnMpCit7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigpOwor
ICAgIGF1dG8qIHJlc3VsdCA9IGVuY29kZXIuZ2V0KCk7CisgICAgZW5jb2Rlci0+aWRlbnRpZmll
ciA9IFJUQ0VuY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKworICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzOworICAgIGZvciAoYXV0
byYga2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0ZXJzKQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0LmRhdGEoKSwg
a2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLnNlY29u
ZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsKKworICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwgcGFyYW1ldGVycyA9IFdU
Rk1vdmUocGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW5jb2RlcklkZW50
aWZpZXIgPSBlbmNvZGVyLT5pZGVudGlmaWVyOworICAgICAgICBBU1NFUlQoIW1fZW5jb2RlcnMu
Y29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXJJZGVu
dGlmaWVyLCBwYXJhbWV0ZXJzIH0sIDApOworICAgICAgICBtX2VuY29kZXJzLmFkZChlbmNvZGVy
SWRlbnRpZmllciwgV1RGTW92ZShlbmNvZGVyKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXIm
IGVuY29kZXIpCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VD
YWxsYmFja0xvY2spOworICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRy
OworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5j
b2Rlci5pZGVudGlmaWVyXSB7CisgICAgICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGVu
Y29kZXJJZGVudGlmaWVyKSk7CisKKyAgICAgICAgbV9lbmNvZGVycy5yZW1vdmUoZW5jb2Rlcklk
ZW50aWZpZXIpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6UmVsZWFzZUVuY29kZXIgeyBlbmNvZGVySWRlbnRpZmllciB9LCAwKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmluaXRpYWxp
emVFbmNvZGVyKEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWln
aHQsIHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZSwgdW5zaWduZWQgbWF4Qml0UmF0ZSwgdW5zaWduZWQg
bWluQml0UmF0ZSwgdWludDMyX3QgbWF4RnJhbWVSYXRlKQoreworICAgIGNhbGxPbk1haW5SdW5M
b29wKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllciwgd2lkdGgs
IGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJh
dGVdIHsKKyAgICAgICAgaWYgKGF1dG8qIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChlbmNvZGVy
SWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
KyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OkluaXRpYWxpemVFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQs
IHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDAp
OworICAgICAgICAgICAgLy8gV2Ugc2V0IGVuY29kZXItPmNvbm5lY3Rpb24gaGVyZSBzbyB0aGF0
IEluaXRpYWxpemVFbmNvZGVyIGlzIHNlbnQgYmVmb3JlIGFueSBFbmNvZGVGcmFtZSBtZXNzYWdl
LgorICAgICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9ICZjb25uZWN0aW9uOworICAgICAg
ICB9CisgICAgfSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludDMyX3QgTGliV2ViUlRDQ29kZWNz
OjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBpZiAo
IWVuY29kZXIuY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19F
UlJPUjsKKworICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCBmcmFtZSwgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVD
X09LOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxi
YWNrKEVuY29kZXImIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrKQoreworICAg
IExvY2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKKyAg
ICBlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrID0gZW5jb2RlZEltYWdlQ2FsbGJhY2s7Cit9
CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNvZGVy
LCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCit7CisgICAgaWYgKCFlbmNv
ZGVyLmNvbm5lY3Rpb24pIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29k
ZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGVdIHsK
KyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Vu
Y29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgICAgICBBU1NFUlQo
bV9lbmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZpZXIpLT5jb25uZWN0aW9uKTsKKyAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRFbmNv
ZGVSYXRlcyB7IGVuY29kZXJJZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVuY29kZXIuY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29kZVJhdGVzIHsg
ZW5jb2Rlci5pZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7Cit9CisKK3ZvaWQg
TGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBjb25zdCB3ZWJydGM6OldlYktp
dEVuY29kZWRGcmFtZUluZm8mIGluZm8sIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhl
YWRlciYmIGZyYWdtZW50YXRpb25IZWFkZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgorICAgIGF1dG8qIGVuY29kZXIg
PSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2soZW5jb2Rlci0+ZW5jb2Rl
ZEltYWdlQ2FsbGJhY2tMb2NrKTsKKyAgICBpZiAoIWxvY2tlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFlbmNvZGVyLT5lbmNvZGVkSW1hZ2VDYWxsYmFjaykKKyAgICAgICAgcmV0dXJu
OworCisgICAgd2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKGVuY29k
ZXItPmVuY29kZWRJbWFnZUNhbGxiYWNrLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpLCBpbmZvLCBmcmFnbWVudGF0aW9uSGVhZGVyLnZhbHVlKCkpOworfQor
CitDVlBpeGVsQnVmZmVyUG9vbFJlZiBMaWJXZWJSVENDb2RlY3M6OnBpeGVsQnVmZmVyUG9vbChz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9v
bCB8fCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29s
SGVpZ2h0ICE9IGhlaWdodCkgeworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IGNyZWF0ZVBp
eGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2xX
aWR0aCA9IHdpZHRoOworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbEhlaWdodCA9IGhlaWdodDsK
KyAgICB9CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOworfQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaAppbmRleCBlM2NkOGE5M2ZkMzEzOWFkMTFkMTU3NDcxM2Q1Y2VhM2FmNTA5
MmFiLi44OTNlMTk4N2I1YTZmNmNlOWVhMGYwY2FhZDY3ZmExNDYxMzdiNGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aApAQCAtMjksMTMgKzI5LDE4IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+Cisj
aW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCit1c2luZyBDVlBpeGVsQnVmZmVyUG9v
bFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKKwogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9
CiAKQEAgLTQzLDYgKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbW90ZVZp
ZGVvU2FtcGxlOwogfQogCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFdlYktpdFJUUEZyYWdt
ZW50YXRpb25IZWFkZXI7CitzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgewpAQCAtNTAsNiArNjAsOCBAQCBjbGFzcyBMaWJXZWJSVENDb2RlY3Mg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBMaWJXZWJSVEND
b2RlY3MoKSA9IGRlZmF1bHQ7CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRDYWxsYmFja3MoYm9vbCB1
c2VHUFVQcm9jZXNzKTsKKwogICAgIHN0cnVjdCBEZWNvZGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtNjAsMjMgKzcyLDQ2IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKICAgICB9OwogCi0g
ICAgc3RhdGljIHZvaWQgc2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2Vz
cyk7Ci0KICAgICBEZWNvZGVyKiBjcmVhdGVEZWNvZGVyKCk7CiAgICAgaW50MzJfdCByZWxlYXNl
RGVjb2RlcihEZWNvZGVyJik7CiAgICAgaW50MzJfdCBkZWNvZGVGcmFtZShEZWNvZGVyJiwgdWlu
dDMyX3QgdGltZVN0YW1wLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICB2b2lkIHJlZ2lz
dGVyRGVjb2RlRnJhbWVDYWxsYmFjayhEZWNvZGVyJiwgdm9pZCogZGVjb2RlZEltYWdlQ2FsbGJh
Y2spOwogCisgICAgc3RydWN0IEVuY29kZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgICAgIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrIHsgbnVsbHB0ciB9OworICAg
ICAgICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKKyAgICAgICAgUmVmUHRyPElQQzo6
Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICB9OworCisgICAgRW5jb2RlciogY3JlYXRlRW5j
b2Rlcihjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Jik7CisgICAgaW50
MzJfdCByZWxlYXNlRW5jb2RlcihFbmNvZGVyJik7CisgICAgaW50MzJfdCBpbml0aWFsaXplRW5j
b2RlcihFbmNvZGVyJiwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQg
c3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1
aW50MzJfdCBtYXhGcmFtZXJhdGUpOworICAgIGludDMyX3QgZW5jb2RlRnJhbWUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lKTsKKyAgICB2b2lkIHJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayhFbmNvZGVyJiwg
dm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2spOworICAgIHZvaWQgc2V0RW5jb2RlUmF0ZXMoRW5j
b2RlciYsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisgICAgCisgICAg
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCk7CisKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgZmFpbGVkRGVjb2Rp
bmcoUlRDRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29tcGxldGVkRGVjb2RpbmcoUlRD
RGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJik7CisgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZy
YW1lSW5mbyYsIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYmKTsKIAotICAg
IEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4g
bV9kZWNvZGVDYWxsYmFja3M7Citwcml2YXRlOgorICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsKICAgICBIYXNoU2V0
PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwogCisgICAgSGFzaE1hcDxS
VENFbmNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+PiBtX2VuY29kZXJz
OworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29s
UmVmPiBtX3BpeGVsQnVmZmVyUG9vbDsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xXaWR0
aCB7IDAgfTsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgppbmRl
eCAyYWFlOTc4NjgwZDNjM2E3ODBiOGMyNTllNDNhNWU0OGQxOTAzMTZiLi5mMmJmNWI4MzZiMDk5
N2MxZGQwZTM2OTk5NjVkYjc1MjY4Y2JmMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2Vz
LmluCkBAIC0yMyw4ICsyMywxMCBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVj
cyBOb3RSZWZDb3VudGVkIHsKLSAgICBGYWlsZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJ
ZGVudGlmaWVyIGlkKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2Rlcklk
ZW50aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUgc2FtcGxlKQorICAgIEZhaWxlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUgc2FtcGxlKQorCisgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3Ry
dWN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvLCB3ZWJydGM6OldlYktpdFJU
UEZyYWdtZW50YXRpb25IZWFkZXIgZnJhZ21lbnRhdGlvbkhlYWRlcik7CiB9CiAKICNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUlRDRW5j
b2RlcklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JU
Q0VuY29kZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhN2YzYzA0ZjZjNDk5YjllZDY1NjJi
ZjJkMGM2YmY0OGUyYTgwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUlRDRW5jb2RlcklkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFJUQ0VuY29kZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxS
VENFbmNvZGVySWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGY5ODM2MjI3ZTliZTVmMzQ3ZWI3YWMzOGZiMDI3Y2Mw
YzhlMjIwZjguLmQzOWUzOTk3ZTI0OTg1ZWYwNjM0MjVjZmUzOWE4OGIxZjUyZDkyNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVE
ZWNvZGVyRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIC8vIFdlIG9ubHkgc3VwcG9y
dCBlZmZpY2llbnQgc2VuZGluZyBvZiB2aWRlbyBmcmFtZXMgd2l0aCBJT1NVUkZBQ0UKICNpZiBI
QVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIExpYldlYlJUQ0Nv
ZGVjczo6c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKG1fdXNlR1BVUHJvY2Vzcyk7CisgICAgTGli
V2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MobV91c2VHUFVQcm9jZXNzKTsKICNlbmRpZgogI2Vu
ZGlmCiAgICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386677</attachid>
            <date>2020-01-03 06:28:20 -0800</date>
            <delta_ts>2020-01-06 01:01:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205713-20200103152818.patch</filename>
            <type>text/plain</type>
            <size>87075</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAxZDgyNWM0ZTE4ZWQxMzlkY2ViZWRlMWYzMTlhZTljNGNmYTJjMzJiLi4wNGU5
OGYwNDUyNTNiYzE0MDIzZjcyMmQ3ZWQwNGQ2ZDYzZmM1MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wMS0wMyAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5j
b2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlbW90ZSB2aWRlbyBlbmNvZGVycyBjcmVhdGVk
IGFuZCB1c2VkIHRocm91Z2ggc2ltcGxlIHJvdXRpbmVzLgorICAgICAgICBBZGQgZmFjdG9yeSB0
byBjcmVhdGUgdmlkZW8gZW5jb2RlcnMgaW1wbGVtZW50ZWQgZWxzZXdoZXJlIHRoYW4gaW4gV2Vi
UlRDIGJhY2tlbmQuCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgSDI2NCBlbmNvZGVycy4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRFbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRSVFBGcmFn
bWVudGF0aW9uSGVhZGVyOjp2YWx1ZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRG
cmFtZUluZm86OmRlY29kZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm86OmVuY29kZSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRp
b25IZWFkZXI6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIpOgorICAgICAgICAod2VicnRj
OjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
d2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjpkZWNvZGUpOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeVdpdGhTaW11bGNhc3Q6OkNyZWF0ZVZpZGVv
RW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAg
ICAgICh3ZWJydGM6OnNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyk6CisgICAgICAgICh3ZWJydGM6
OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVt
b3RlVmlkZW9FbmNvZGVyOjpSZWxlYXNlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjpFbmNvZGUpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlNl
dFJhdGVzKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVy
SW5mbyBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9F
bmNvZGVyOjplbmNvZGVDb21wbGV0ZSk6CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZUxvY2FsRW5j
b2Rlcik6CisgICAgICAgICh3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIpOgorICAgICAgICAo
d2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6ZW5jb2Rl
TG9jYWxFbmNvZGVyRnJhbWUpOgorICAgICAgICAod2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRl
cyk6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06
CisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDEtMDEgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCB0cmFuc2NlaXZlciBzZXRDb2RlY1ByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmNTY3
MTNhNTdiMDI5YjQ0NjAzOTZlMDgyMGI5YzAzM2RmZjYyMi4uYmVkNjVlN2YzNjAwOGFkNGU1ZWM3
YWJkYjRmYmYxNzMwYWMzZTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAx
LTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgUlRDIFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyB0byBleHBvc2UgYSBjcmVhdGVQ
aXhlbEJ1ZmZlciByb3V0aW5lLCB0byBzZXQvZ2V0IFJlbW90ZVZpZGVvU2FtcGxlIGFuZCB0byBj
cmVhdGUgYSBDVlBpeGVsQnVmZmVyIGZyb20gYW4gSU9TdXJmYWNlUmVmLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIGluIHBhcnRpY3VsYXIgd2VicnRjL3ZpZGVvLWdwdVBy
b2Nlc3MuaHRtbC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6cm90YXRpb24g
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2wpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJQb29sKToKKwogMjAy
MC0wMS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFhNTFNl
cmlhbGl6ZXIgZG9lc24ndCBjb3JyZWN0bHkgZW5jb2RlIGVudGl0aWVzIGluIDxzdHlsZT4gZWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiNzk4NTkzM2I0MjhkMWNiNGJjNTI0ZjE1M2I3MzM5MzRiNzgzMDg4
Li4yNmQyYzU1NTlmNzVkMDI0NGVlOTY2ZTgxYzgyM2MyZTZkOWNhMTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU0IEBACisyMDIwLTAxLTAzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgUlRDIFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgcmVtb3RlIHZpZGVvIGVuY29kZXJzIGluIEdQVVByb2Nlc3MgYmFzZWQgb24gbGlid2Vi
cnRjIGV4cG9zZWQgcm91dGluZXMuCisgICAgICAgIFdlYlByb2Nlc3Mgc2V0cyBjYWxsYmFja3Mg
aW4gdGhlIHdlYnJ0YyBiYWNrZW5kIHRvIGltcGxlbWVudCBIMjY0IGVuY29kaW5nIGFzIGEgcmVt
b3RlIHZpZGVvIGVuY29kZXIuCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHZpZGVvIGZyYW1lcywg
d2UgYWxzbyBuZWVkIHRvIHNlbmQgcmF0ZSBzZXR0aW5nIG9yZGVycy4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6fkxpYldlYlJUQ0NvZGVjc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0Ojp0
b1dlYlJUQ1ZpZGVvUm90YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6c2V0RW5jb2RlUmF0ZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpjcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlVmlkZW9F
bmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVZpZGVvRW5jb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OnRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6ZW5jb2RlVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OnNldEVuY29kZVJhdGVzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyk6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2Rlcik6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OmZhaWxlZERlY29kaW5nKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmluaXRpYWxpemVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpl
bmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJF
bmNvZGVGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y29tcGxl
dGVkRW5jb2RpbmcpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnBpeGVsQnVm
ZmVyUG9vbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJZGVu
dGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6
Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorCiAyMDIwLTAxLTAzICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbm9uLWxpYndlYnJ0YyBidWlsZHMgYWZ0ZXIg
cjI1Mzk1NwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGVhNzg5ZTJjNWQzMjk1MWViNmRm
NGNhNWE4ZjQ3M2ZmOTExNmM1ZWIuLjUzZTM1NDdlOTkzNWY1Yzc5NzBiZDFlZDdjMGZkYzAzODMz
MDk5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI2OCwzICsyNjgsMTcgQEAgX19a
TjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KIF9fWk42d2VicnRjMThSZW1vdGVWaWRlb0Rl
Y29kZXIxNGRlY29kZUNvbXBsZXRlRVB2alAxMF9fQ1ZCdWZmZXJqCiBfX1pONndlYnJ0YzI0c2V0
VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQ
RmlTMF9qUEtobUVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFF
dgorX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZp
ZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQorX19aTjZ3ZWJydGMxOFJ0
cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVy
RDFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXJDMUV2CitfX1pONndlYnJ0
YzE4UmVtb3RlVmlkZW9FbmNvZGVyMTRlbmNvZGVDb21wbGV0ZUVQdlBobVJLTlNfMjJXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRQorX19aTjZ3ZWJy
dGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVzaXplRW0KK19fWk42d2VicnRjMjRzZXRWaWRl
b0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMw
X1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05TXzEwVmlkZW9GcmFtZUViRVBGaVMwX1MwX0VQ
RnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRlQ29udHJvbFBhcmFtZXRlcnNFRQorX19aTjZ3
ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2amoKK19fWk42d2VicnRjMjJpbml0aWFsaXpl
TG9jYWxFbmNvZGVyRVB2dHRqampqCitfX1pONndlYnJ0YzE0U2RwVmlkZW9Gb3JtYXRDMUVSS05T
dDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXzlhbGxvY2F0b3JJ
Y0VFRUVSS05TMV8zbWFwSVM3X1M3X05TMV80bGVzc0lTN19FRU5TNV9JTlMxXzRwYWlySVM4X1M3
X0VFRUVFRQorX19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2FsRW5jb2RlckVSS05TXzE0U2RwVmlkZW9G
b3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
RVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFRQorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9y
bWF0RDFFdgorX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYKK19fWk42d2VicnRj
MjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4TlNfMTNWaWRlb1JvdGF0
aW9uRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBlYTc4OWUyYzVkMzI5NTFl
YjZkZjRjYTVhOGY0NzNmZjkxMTZjNWViLi41M2UzNTQ3ZTk5MzVmNWM3OTcwYmQxZWQ3YzBmZGMw
MzgzMzA5OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0yNjgsMyArMjY4
LDE3IEBAIF9fWk42d2VicnRjMTFkZWNvZGVGcmFtZUVQdmpQS2htCiBfX1pONndlYnJ0YzE4UmVt
b3RlVmlkZW9EZWNvZGVyMTRkZWNvZGVDb21wbGV0ZUVQdmpQMTBfX0NWQnVmZmVyagogX19aTjZ3
ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNkcFZpZGVvRm9ybWF0
RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQogX19aTjZ3ZWJydGMxOFJ0cENvZGVjQ2Fw
YWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJL
TlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKK19fWk42
d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRh
dGlvbkhlYWRlckQxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgor
X19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05T
XzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUK
K19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndlYnJ0
YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBG
aVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQ
RmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJz
RUUKK19fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0YzIy
aW5pdGlhbGl6ZUxvY2FsRW5jb2RlckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9y
bWF0QzFFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85
YWxsb2NhdG9ySWNFRUVFUktOUzFfM21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5TMV80
cGFpcklTOF9TN19FRUVFRUUKK19fWk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18x
NFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRjMTRT
ZHBWaWRlb0Zvcm1hdEQxRXYKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2Citf
X1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEz
VmlkZW9Sb3RhdGlvbkViCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZWE3ODllMmM1ZDMy
OTUxZWI2ZGY0Y2E1YThmNDczZmY5MTE2YzVlYi4uMWFhYTYwMDAyMTE5YTk3NjRmNzcwM2U0NTNj
NTc3NWZiN2ZlMTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMjY4LDMgKzI2OCwx
NSBAQCBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQogX19aTjZ3ZWJydGMxOFJlbW90
ZVZpZGVvRGVjb2RlcjE0ZGVjb2RlQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZlcmoKIF9fWk42d2Vi
cnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVF
UEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFi
aWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckQxRXYKK19fWk42
d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgorX19aTjZ3ZWJydGMxOFJlbW90ZVZp
ZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1l
SW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUKK19fWk42d2VicnRjMjJSVFBGcmFn
bWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndlYnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2Fs
bGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9SS05TXzEwVmlk
ZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQRmlTMF9TMF9FUEZ2UzBfUktOU18x
MlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzRUUKK19fWk42d2VicnRjMjBzZXRM
b2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0YzIyaW5pdGlhbGl6ZUxvY2FsRW5jb2Rl
ckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18xMTJiYXNp
Y19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFUktOUzFf
M21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5TMV80cGFpcklTOF9TN19FRUVFRUUKK19f
Wk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18xNFNkcFZpZGVvRm9ybWF0RVUxM2Js
b2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBG
cmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEQxRXYKK19f
Wk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2CitfX1pONndlYnJ0YzIzZW5jb2RlTG9j
YWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEzVmlkZW9Sb3RhdGlvbkViCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdEVuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMGEyNTQwYWE4
ZThhN2ZkZTc1MjY2OGU4ZWNlMDdjZGRlNmJjYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29k
ZXIuaApAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5jbHVkZSAiYXBpL3Zp
ZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJhcGkvdmlkZW8v
ZW5jb2RlZF9pbWFnZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9u
X3R5cGVzLmgiCisKK3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBFbmNvZGVkSW1hZ2VDYWxsYmFjazsKK2Ns
YXNzIFZpZGVvQ29kZWM7CitjbGFzcyBWaWRlb0ZyYW1lOworc3RydWN0IFNkcFZpZGVvRm9ybWF0
OworY2xhc3MgU2V0dGluZ3M7CisKK2NsYXNzIFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxj
YXN0IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0KHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0VuY29kZXJGYWN0b3J5PiYmIGZhY3RvcnkpCisgICAgICAgIDogbV9pbnRlcm5hbEVuY29k
ZXJGYWN0b3J5KHN0ZDo6bW92ZShmYWN0b3J5KSkKKyAgICB7CisgICAgfQorCisgICAgVmlkZW9F
bmNvZGVyRmFjdG9yeTo6Q29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVv
Rm9ybWF0JiBmb3JtYXQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFj
dG9yeS0+UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBm
b3JtYXQpIGZpbmFsOworIAorICAgIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9ybWF0PiBHZXRTdXBw
b3J0ZWRGb3JtYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnRlcm5hbEVuY29kZXJGYWN0
b3J5LT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5
OworfTsKKwordXNpbmcgV2ViS2l0VmlkZW9FbmNvZGVyID0gdm9pZCo7Cit1c2luZyBWaWRlb0Vu
Y29kZXJDcmVhdGVDYWxsYmFjayA9IFdlYktpdFZpZGVvRW5jb2RlcigqKShjb25zdCBTZHBWaWRl
b0Zvcm1hdCYgZm9ybWF0KTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlbGVhc2VDYWxsYmFjayA9IGlu
dDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyKTsKK3VzaW5nIFZpZGVvRW5jb2RlckluaXRpYWxp
emVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0Nv
ZGVjJik7Cit1c2luZyBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayA9IGludDMyX3QoKikoV2Vi
S2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0ZyYW1lJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lKTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFj
ayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxs
YmFjayk7Cit1c2luZyBWaWRlb0VuY29kZXJTZXRSYXRlc0NhbGxiYWNrID0gdm9pZCgqKShXZWJL
aXRWaWRlb0VuY29kZXIsIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UmF0ZUNvbnRyb2xQYXJhbWV0ZXJz
Jik7CisKK3ZvaWQgc2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKFZpZGVvRW5jb2RlckNyZWF0ZUNh
bGxiYWNrLCBWaWRlb0VuY29kZXJSZWxlYXNlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlckluaXRpYWxp
emVDYWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlZ2lz
dGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyU2V0UmF0ZXNDYWxsYmFjayk7
CisKK3VzaW5nIFdlYktpdEVuY29kZWRGcmFtZVRpbWluZyA9IEVuY29kZWRJbWFnZTo6VGltaW5n
Oworc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm8geworICAgIHVpbnQzMl90IHdpZHRoIHsg
MCB9OworICAgIHVpbnQzMl90IGhlaWdodCB7IDAgfTsKKyAgICBpbnQ2NF90IHRpbWVTdGFtcCB7
IDAgfTsKKyAgICBpbnQ2NF90IG50cFRpbWVNUyB7IDAgfTsKKyAgICBpbnQ2NF90IGNhcHR1cmVU
aW1lTVMgeyAwIH07CisgICAgVmlkZW9GcmFtZVR5cGUgZnJhbWVUeXBlIHsgVmlkZW9GcmFtZVR5
cGU6OmtWaWRlb0ZyYW1lRGVsdGEgfTsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsga1Zp
ZGVvUm90YXRpb25fMCB9OworICAgIFZpZGVvQ29udGVudFR5cGUgY29udGVudFR5cGUgeyBWaWRl
b0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRCB9OworICAgIGJvb2wgY29tcGxldGVGcmFtZSA9IGZh
bHNlOworICAgIGludCBxcCB7IC0xIH07CisgICAgV2ViS2l0RW5jb2RlZEZyYW1lVGltaW5nIHRp
bWluZzsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYktpdEVuY29kZWRGcmFtZUluZm8mKTsKK307CisKK2NsYXNzIFdlYktpdFJU
UEZyYWdtZW50YXRpb25IZWFkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYktpdFJUUEZy
YWdtZW50YXRpb25IZWFkZXIod2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiA9IG51bGxw
dHIpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYpOworCisgICAgd2VicnRjOjpS
VFBGcmFnbWVudGF0aW9uSGVhZGVyKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH07CisKK3By
aXZhdGU6CisgICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBtX3ZhbHVlIHsgbnVs
bHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFk
ZXI+IG1fb3duZWRIZWFkZXI7Cit9OworCitjbGFzcyBSZW1vdGVWaWRlb0VuY29kZXIgZmluYWwg
OiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFJl
bW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIpOworICAgIH5SZW1vdGVWaWRlb0Vu
Y29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVDb21wbGV0ZSh2b2lk
KiBjYWxsYmFjaywgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvJiwgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKik7
CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqLCBj
b25zdCBTZXR0aW5ncyYpIGZpbmFsOworICAgIGludDMyX3QgUmVnaXN0ZXJFbmNvZGVDb21wbGV0
ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKikgZmluYWw7CisgICAgaW50MzJfdCBSZWxl
YXNlKCkgZmluYWw7CisgICAgaW50MzJfdCBFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYsIGNvbnN0
IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiopIGZpbmFsOworICAgIHZvaWQgU2V0UmF0ZXMo
Y29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJikgZmluYWw7CisgICAgRW5jb2RlckluZm8gR2V0
RW5jb2RlckluZm8oKSBjb25zdCBmaW5hbDsKKworICAgIFdlYktpdFZpZGVvRW5jb2RlciBtX2lu
dGVybmFsRW5jb2RlcjsKK307CisKK3VzaW5nIExvY2FsRW5jb2RlciA9IHZvaWQqOwordXNpbmcg
TG9jYWxFbmNvZGVyQ2FsbGJhY2sgPSB2b2lkICheKShjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mLCB3ZWJydGM6
OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqKTsKK3ZvaWQqIGNyZWF0ZUxvY2FsRW5jb2Rlcihjb25z
dCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiwgTG9jYWxFbmNvZGVyQ2FsbGJhY2spOwordm9pZCBy
ZWxlYXNlTG9jYWxFbmNvZGVyKExvY2FsRW5jb2Rlcik7Cit2b2lkIGluaXRpYWxpemVMb2NhbEVu
Y29kZXIoTG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4Qml0cmF0ZSwgdW5zaWduZWQg
aW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Cit2b2lkIGVuY29kZUxvY2Fs
RW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiwgaW50NjRfdCB0aW1l
U3RhbXAsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQpOwor
dm9pZCBzZXRMb2NhbEVuY29kZXJSYXRlcyhMb2NhbEVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSk7CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFdl
YktpdEVuY29kZWRGcmFtZUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJiBpbmZvKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby53aWR0
aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
aGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1lU3RhbXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLm50cFRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGluZm8uY2FwdHVyZVRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmZvLmZyYW1lVHlwZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmZvLnJvdGF0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGlu
Zm8uY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLmNvbXBsZXRlRnJhbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnFwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5mbGFncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZW5jb2RlX3N0
YXJ0X21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbmZvLnRpbWluZy5lbmNvZGVfZmluaXNoX21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5wYWNrZXRpemF0aW9uX2Zpbmlz
aF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1pbmcucGFjZXJfZXhpdF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcubmV0d29ya190aW1lc3RhbXBfbXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGlt
aW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucmVjZWl2ZV9zdGFydF9tcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHdpZHRoOworICAgIGVuY29kZXIgPDwg
aGVpZ2h0OworICAgIGVuY29kZXIgPDwgdGltZVN0YW1wOworICAgIGVuY29kZXIgPDwgbnRwVGlt
ZU1TOworICAgIGVuY29kZXIgPDwgY2FwdHVyZVRpbWVNUzsKKyAgICBlbmNvZGVyLmVuY29kZUVu
dW0oZnJhbWVUeXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocm90YXRpb24pOworICAgIGVu
Y29kZXIuZW5jb2RlRW51bShjb250ZW50VHlwZSk7CisgICAgZW5jb2RlciA8PCBjb21wbGV0ZUZy
YW1lOworICAgIGVuY29kZXIgPDwgcXA7CisKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5mbGFnczsK
KyAgICBlbmNvZGVyIDw8IHRpbWluZy5lbmNvZGVfc3RhcnRfbXM7CisgICAgZW5jb2RlciA8PCB0
aW1pbmcuZW5jb2RlX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNrZXRpemF0
aW9uX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNlcl9leGl0X21zOworICAg
IGVuY29kZXIgPDwgdGltaW5nLm5ldHdvcmtfdGltZXN0YW1wX21zOworICAgIGVuY29kZXIgPDwg
dGltaW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5yZWNl
aXZlX3N0YXJ0X21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlY2VpdmVfZmluaXNoX21zOwor
fQorCitpbmxpbmUgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6V2ViS2l0UlRQRnJhZ21l
bnRhdGlvbkhlYWRlcih3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGhlYWRlcikKKyAg
ICA6IG1fdmFsdWUoaGVhZGVyKQoreworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8ICEhbV92YWx1ZTsKKyAgICBpZiAoIW1fdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Zh
bHVlLT5TaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlLT5TaXpl
KCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Zh
bHVlLT5PZmZzZXQoaSkpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3ZhbHVlLT5MZW5ndGgoaSkpOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK2Jvb2wgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXImIGhlYWRlcikKK3sKKyAgICBib29s
IGlzTnVsbDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoaXNOdWxsKSB7CisgICAgICAgIGhlYWRlci5tX3ZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdW5zaWduZWQg
c2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBoZWFkZXIubV9vd25lZEhlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2VicnRj
OjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyPigpOworICAgIGhlYWRlci5tX3ZhbHVlID0gaGVhZGVy
Lm1fb3duZWRIZWFkZXIuZ2V0KCk7CisKKyAgICBoZWFkZXIubV92YWx1ZS0+VmVyaWZ5QW5kQWxs
b2NhdGVGcmFnbWVudGF0aW9uSGVhZGVyKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaGVhZGVyLm1fdmFsdWUtPlNpemUoKTsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCwgbGVuZ3RoOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBoZWFkZXIubV92YWx1ZS0+ZnJh
Z21lbnRhdGlvbk9mZnNldFtpXSA9IG9mZnNldDsKKyAgICAgICAgaGVhZGVyLm1fdmFsdWUtPmZy
YWdtZW50YXRpb25MZW5ndGhbaV0gPSBsZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjA1ODFkZTMxM2IyOTE3MGJjZjdhZDA1MGUwNDY3MmM5NzZjZDFlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXRFbmNvZGVyLm1tCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgIldlYktpdEVuY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgor
I2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUgImNvbXBvbmVudHMv
dmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91dGlsaXR5LmgiCisjaW5j
bHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJbWFnZStQcml2YXRl
LmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1J0cEZyYWdtZW50
YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgorI2luY2x1ZGUgInNkay9vYmpjL2FwaS9wZWVyY29ubmVj
dGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBp
L3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZhdGUuaCIKKyNpbmNs
dWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVvRW5jb2RlckgyNjQu
aCIKKyNpbmNsdWRlICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBWaWRl
b0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdDo6Q3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNk
cFZpZGVvRm9ybWF0JiBmb3JtYXQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2RlclNpbXVsY2FzdFByb3h5PihtX2ludGVybmFsRW5jb2RlckZhY3RvcnkuZ2V0KCksIGZvcm1h
dCk7Cit9CisKK3N0cnVjdCBWaWRlb0VuY29kZXJDYWxsYmFja3MgeworICAgIFZpZGVvRW5jb2Rl
ckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2RlclJlbGVhc2VD
YWxsYmFjayByZWxlYXNlQ2FsbGJhY2s7CisgICAgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxi
YWNrIGluaXRpYWxpemVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayBl
bmNvZGVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2Fs
bGJhY2sgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5jb2RlclNl
dFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFjazsKK307CisKK3N0YXRpYyBWaWRlb0VuY29k
ZXJDYWxsYmFja3MmIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpIHsKKyAgICBzdGF0aWMgVmlkZW9F
bmNvZGVyQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICByZXR1cm4gY2FsbGJhY2tzOworfQorCit2
b2lkIHNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyhWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayBj
cmVhdGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyUmVsZWFzZUNhbGxiYWNrIHJlbGVhc2VDYWxsYmFj
aywgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemVDYWxsYmFjaywgVmlk
ZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2sgZW5jb2RlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclJlZ2lz
dGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ss
IFZpZGVvRW5jb2RlclNldFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFjaykKK3sKKyAgICBh
dXRvJiBjYWxsYmFja3MgPSB2aWRlb0VuY29kZXJDYWxsYmFja3MoKTsKKyAgICBjYWxsYmFja3Mu
Y3JlYXRlQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFjazsKKyAgICBjYWxsYmFja3MucmVsZWFzZUNh
bGxiYWNrID0gcmVsZWFzZUNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5pbml0aWFsaXplQ2FsbGJh
Y2sgPSBpbml0aWFsaXplQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLmVuY29kZUNhbGxiYWNrID0g
ZW5jb2RlQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxs
YmFjayA9IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjazsKKyAgICBjYWxsYmFja3Muc2V0
UmF0ZXNDYWxsYmFjayA9IHNldFJhdGVzQ2FsbGJhY2s7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rl
cjo6UmVtb3RlVmlkZW9FbmNvZGVyKFdlYktpdFZpZGVvRW5jb2RlciBpbnRlcm5hbEVuY29kZXIp
CisgICAgOiBtX2ludGVybmFsRW5jb2RlcihpbnRlcm5hbEVuY29kZXIpCit7Cit9CisKK2ludDMy
X3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMqIGNvZGVj
LCBjb25zdCBTZXR0aW5ncyYpCit7CisgICAgaWYgKFNpbXVsY2FzdFV0aWxpdHk6Ok51bWJlck9m
U2ltdWxjYXN0U3RyZWFtcygqY29kZWMpID4gMSkKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJfU0lNVUxDQVNUX1BBUkFNRVRFUlNfTk9UX1NVUFBPUlRFRDsKKworICAgIHJl
dHVybiB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5pbml0aWFsaXplQ2FsbGJhY2sobV9pbnRlcm5h
bEVuY29kZXIsICpjb2RlYyk7Cit9CisKK2ludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpSZWxl
YXNlKCkKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxi
YWNrKG1faW50ZXJuYWxFbmNvZGVyKTsKK30KKworaW50MzJfdCBSZW1vdGVWaWRlb0VuY29kZXI6
OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9G
cmFtZVR5cGU+KiBmcmFtZVR5cGVzKQoreworICAgIGJvb2wgc2hvdWxkRW5jb2RlS2V5RnJhbWUg
PSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lVHlwZXMtPnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChmcmFtZVR5cGVzLT5hdChpKSA9PSBWaWRlb0ZyYW1lVHlwZTo6
a1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAgICAgICAgIHNob3VsZEVuY29kZUtleUZyYW1lID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZp
ZGVvRW5jb2RlckNhbGxiYWNrcygpLmVuY29kZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBm
cmFtZSwgc2hvdWxkRW5jb2RlS2V5RnJhbWUpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRW5jb2Rl
cjo6U2V0UmF0ZXMoY29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJiByYXRlcykKK3sKKyAgICB2
aWRlb0VuY29kZXJDYWxsYmFja3MoKS5zZXRSYXRlc0NhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVy
LCByYXRlcyk7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rlcjo6RW5jb2RlckluZm8gUmVtb3RlVmlk
ZW9FbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0Cit7CisgICAgRW5jb2RlckluZm8gaW5m
bzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOworICAgIGluZm8uaW1w
bGVtZW50YXRpb25fbmFtZSA9ICJSZW1vdGVWaWRlb1Rvb2xCb3giOworICAgIGluZm8uaXNfaGFy
ZHdhcmVfYWNjZWxlcmF0ZWQgPSB0cnVlOworICAgIGluZm8uaGFzX2ludGVybmFsX3NvdXJjZSA9
IGZhbHNlOworCisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gUlRDVmlkZW9FbmNvZGVySDI2NC5t
bQorICAgIGNvbnN0IGludCBrTG93SDI2NFFwVGhyZXNob2xkID0gMjg7CisgICAgY29uc3QgaW50
IGtIaWdoSDI2NFFwVGhyZXNob2xkID0gMzk7CisgICAgaW5mby5zY2FsaW5nX3NldHRpbmdzID0g
U2NhbGluZ1NldHRpbmdzKGtMb3dIMjY0UXBUaHJlc2hvbGQsIGtIaWdoSDI2NFFwVGhyZXNob2xk
KTsKKworICAgIHJldHVybiBpbmZvOworfQorCitpbnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6
UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKiBjYWxs
YmFjaykKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVnaXN0ZXJFbmNv
ZGVDb21wbGV0ZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBjYWxsYmFjayk7Cit9CisKK3Zv
aWQgUmVtb3RlVmlkZW9FbmNvZGVyOjplbmNvZGVDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
JiBpbmZvLCBjb25zdCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqIGhlYWRlcikKK3sK
KyAgICB3ZWJydGM6OkVuY29kZWRJbWFnZSBlbmNvZGVkSW1hZ2UoYnVmZmVyLCBsZW5ndGgsIGxl
bmd0aCk7CisgICAgZW5jb2RlZEltYWdlLl9lbmNvZGVkV2lkdGggPSBpbmZvLndpZHRoOworICAg
IGVuY29kZWRJbWFnZS5fZW5jb2RlZEhlaWdodCA9IGluZm8uaGVpZ2h0OworICAgIGVuY29kZWRJ
bWFnZS5TZXRUaW1lc3RhbXAoaW5mby50aW1lU3RhbXApOworICAgIGVuY29kZWRJbWFnZS5jYXB0
dXJlX3RpbWVfbXNfID0gaW5mby5jYXB0dXJlVGltZU1TOworICAgIGVuY29kZWRJbWFnZS5udHBf
dGltZV9tc18gPSBpbmZvLm50cFRpbWVNUzsKKyAgICBlbmNvZGVkSW1hZ2UudGltaW5nXyA9IGlu
Zm8udGltaW5nOworICAgIGVuY29kZWRJbWFnZS5fZnJhbWVUeXBlID0gaW5mby5mcmFtZVR5cGU7
CisgICAgZW5jb2RlZEltYWdlLnJvdGF0aW9uXyA9IGluZm8ucm90YXRpb247CisgICAgZW5jb2Rl
ZEltYWdlLl9jb21wbGV0ZUZyYW1lID0gaW5mby5jb21wbGV0ZUZyYW1lOworICAgIGVuY29kZWRJ
bWFnZS5xcF8gPSBpbmZvLnFwOworICAgIGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfID0gaW5m
by5jb250ZW50VHlwZTsKKworICAgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVjU3BlY2lmaWNJbmZv
OworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNI
MjY0OworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjU3BlY2lmaWMuSDI2NC5wYWNrZXRpemF0
aW9uX21vZGUgPSBIMjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbkludGVybGVhdmVkOworCisgICAg
c3RhdGljX2Nhc3Q8RW5jb2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPk9uRW5jb2RlZElt
YWdlKGVuY29kZWRJbWFnZSwgJmNvZGVjU3BlY2lmaWNJbmZvLCBoZWFkZXIpOworfQorCit2b2lk
KiBjcmVhdGVMb2NhbEVuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0
LCBMb2NhbEVuY29kZXJDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRvICpjb2RlY0luZm8g
PSBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVNkcFZpZGVvRm9ybWF0
OiBmb3JtYXRdOworICAgIGF1dG8gKmVuY29kZXIgPSBbW1JUQ1ZpZGVvRW5jb2RlckgyNjQgYWxs
b2NdIGluaXRXaXRoQ29kZWNJbmZvOmNvZGVjSW5mb107CisgICAgCisgICAgW2VuY29kZXIgc2V0
Q2FsbGJhY2s6XkJPT0woUlRDRW5jb2RlZEltYWdlICpfTm9ubnVsbCBmcmFtZSwgaWQ8UlRDQ29k
ZWNTcGVjaWZpY0luZm8+IF9Ob25udWxsIGNvZGVjU3BlY2lmaWNJbmZvLCAgUlRDUnRwRnJhZ21l
bnRhdGlvbkhlYWRlciAqX05vbm51bGwgaGVhZGVyKSB7CisgICAgICAgIEVuY29kZWRJbWFnZSBl
bmNvZGVkSW1hZ2UgPSBbZnJhbWUgbmF0aXZlRW5jb2RlZEltYWdlXTsKKworICAgICAgICBXZWJL
aXRFbmNvZGVkRnJhbWVJbmZvIGluZm87CisgICAgICAgIGluZm8ud2lkdGggPSBlbmNvZGVkSW1h
Z2UuX2VuY29kZWRXaWR0aDsKKyAgICAgICAgaW5mby5oZWlnaHQgPSBlbmNvZGVkSW1hZ2UuX2Vu
Y29kZWRIZWlnaHQ7CisgICAgICAgIGluZm8udGltZVN0YW1wID0gZW5jb2RlZEltYWdlLlRpbWVz
dGFtcCgpOworICAgICAgICBpbmZvLm50cFRpbWVNUyA9IGVuY29kZWRJbWFnZS5udHBfdGltZV9t
c187CisgICAgICAgIGluZm8uY2FwdHVyZVRpbWVNUyA9IGVuY29kZWRJbWFnZS5jYXB0dXJlX3Rp
bWVfbXNfOworICAgICAgICBpbmZvLmZyYW1lVHlwZSA9IGVuY29kZWRJbWFnZS5fZnJhbWVUeXBl
OworICAgICAgICBpbmZvLnJvdGF0aW9uID0gZW5jb2RlZEltYWdlLnJvdGF0aW9uXzsKKyAgICAg
ICAgaW5mby5jb250ZW50VHlwZSA9IGVuY29kZWRJbWFnZS5jb250ZW50X3R5cGVfOworICAgICAg
ICBpbmZvLmNvbXBsZXRlRnJhbWUgPSBlbmNvZGVkSW1hZ2UuX2NvbXBsZXRlRnJhbWU7CisgICAg
ICAgIGluZm8ucXAgPSBlbmNvZGVkSW1hZ2UucXBfOworICAgICAgICBpbmZvLnRpbWluZyA9IGVu
Y29kZWRJbWFnZS50aW1pbmdfOworCisgICAgICAgIGNhbGxiYWNrKGVuY29kZWRJbWFnZS5kYXRh
KCksIGVuY29kZWRJbWFnZS5zaXplKCksIGluZm8sIFtoZWFkZXIgY3JlYXRlTmF0aXZlRnJhZ21l
bnRhdGlvbkhlYWRlcl0uZ2V0KCkpOworICAgICAgICByZXR1cm4gWUVTOworICAgIH1dOworCisg
ICAgcmV0dXJuIChfX2JyaWRnZV9yZXRhaW5lZCB2b2lkKillbmNvZGVyOworCit9CisKK3ZvaWQg
cmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNvZGVyKQoreworICAgIGF1
dG8gKmVuY29kZXIgPSAoX19icmlkZ2VfdHJhbnNmZXIgUlRDVmlkZW9FbmNvZGVySDI2NCAqKShs
b2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIHJlbGVhc2VFbmNvZGVyXTsKK30KKwordm9pZCBp
bml0aWFsaXplTG9jYWxFbmNvZGVyKExvY2FsRW5jb2RlciBsb2NhbEVuY29kZXIsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIGludCBzdGFydEJpdHJhdGUsIHVuc2ln
bmVkIGludCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4
RnJhbWVyYXRlKQoreworICAgIC8vIE1heWJlIHdlIHNob3VsZCBJUEM6OmVuY29kZS9kZWNvZGUg
VmlkZW9Db2RlYyBzdHJ1Y3R1cmVzLgorICAgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBjb2RlY1NldHRp
bmdzOworICAgIGNvZGVjU2V0dGluZ3Mud2lkdGggPSB3aWR0aDsKKyAgICBjb2RlY1NldHRpbmdz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBjb2RlY1NldHRpbmdzLnN0YXJ0Qml0cmF0ZSA9IHN0YXJ0
Qml0cmF0ZTsKKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBtYXhCaXRyYXRlOworICAg
IGNvZGVjU2V0dGluZ3MubWluQml0cmF0ZSA9IG1pbkJpdHJhdGU7CisgICAgY29kZWNTZXR0aW5n
cy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CisKKyAgICBhdXRvICplbmNvZGVyID0gKF9f
YnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsKKyAgICBbZW5jb2Rl
ciBzdGFydEVuY29kZVdpdGhTZXR0aW5nczpbW1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIGFsbG9j
XSBpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6JmNvZGVjU2V0dGluZ3NdIG51bWJlck9mQ29yZXM6
MV07Cit9CisKK3ZvaWQgZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyIGxvY2Fs
RW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgaW50NjRfdCB0aW1lU3RhbXAs
IHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQp
Cit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNOdW1iZXIgKj4gKnJ0Y0ZyYW1lVHlwZXMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOworICAgIGlmIChpc0tleWZyYW1lUmVxdWlyZWQpCisgICAgICAg
IFtydGNGcmFtZVR5cGVzIGFkZE9iamVjdDpAKFJUQ0ZyYW1lVHlwZShSVENGcmFtZVR5cGVWaWRl
b0ZyYW1lS2V5KSldOworCisgICAgYXV0byAqdmlkZW9GcmFtZSA9IFtbUlRDVmlkZW9GcmFtZSBh
bGxvY10gaW5pdFdpdGhCdWZmZXI6VG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcihwaXhlbEJ1ZmZlclRv
RnJhbWUocGl4ZWxCdWZmZXIpKSByb3RhdGlvbjpSVENWaWRlb1JvdGF0aW9uKHJvdGF0aW9uKSB0
aW1lU3RhbXBOczp0aW1lU3RhbXBdOworICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2UgUlRD
VmlkZW9FbmNvZGVySDI2NCAqKShsb2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIGVuY29kZTp2
aWRlb0ZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOm5pbCBmcmFtZVR5cGVzOnJ0Y0ZyYW1lVHlwZXNd
OworfQorCit2b2lkIHNldExvY2FsRW5jb2RlclJhdGVzKExvY2FsRW5jb2RlciBsb2NhbEVuY29k
ZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKK3sKKyAgICBhdXRvICpl
bmNvZGVyID0gKF9fYnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsK
KyAgICBbZW5jb2RlciBzZXRCaXRyYXRlOmJpdFJhdGUgZnJhbWVyYXRlOmZyYW1lUmF0ZV07Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IDZh
NThiYTE3M2E2MTMyMzkxYWExNzgyMmQ0NmJjMDc5MzQ1NDFkNDIuLmFiNzc5NDJlNjk0NmJkZTMw
MDI5OTBhM2EyNmExMDAxZWY2MzA1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMuaApAQCAtNTIsMjMgKzUyLDYgQEAgYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29k
ZXJBbGxvd2VkKCk7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90
LCBzaXplX3QpPiYpOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCi1jbGFzcyBWaWRlb0Vu
Y29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdCBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0
b3J5IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVs
Y2FzdChzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4mJiBmYWN0b3J5KQotICAg
ICAgICA6IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeSkpCi0gICAg
ewotICAgIH0KLQotICAgIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBRdWVyeVZpZGVv
RW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2ludGVybmFsRW5jb2RlckZhY3RvcnktPlF1ZXJ5VmlkZW9FbmNvZGVyKGZvcm1hdCk7IH0K
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rlcihj
b25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEVuY29kZXJTaW11bGNhc3RQcm94eT4obV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5LmdldCgp
LCBmb3JtYXQpOyB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3VwcG9y
dGVkRm9ybWF0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFjdG9y
eS0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeTsK
LX07Ci0KIHVzaW5nIFdlYktpdFZpZGVvRGVjb2RlciA9IHZvaWQqOwogdXNpbmcgVmlkZW9EZWNv
ZGVyQ3JlYXRlQ2FsbGJhY2sgPSBXZWJLaXRWaWRlb0RlY29kZXIoKikoY29uc3QgU2RwVmlkZW9G
b3JtYXQmIGZvcm1hdCk7CiB1c2luZyBWaWRlb0RlY29kZXJSZWxlYXNlQ2FsbGJhY2sgPSBpbnQz
Ml90KCopKFdlYktpdFZpZGVvRGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLm1tCmluZGV4IDEyMWVkYTk4ZDhmZmViMDZhOWYzMGRlMzg4MTBkNzA1ZDQw
NjhiMGQuLjE0MDJjMmJmM2E0MTcwM2FjYjhmM2QwZjFmMGE0M2E3OWFhM2NiNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaCIKKyNpbmNsdWRlICJXZWJLaXRF
bmNvZGVyLmgiCiAKICNpbmNsdWRlIDxtdXRleD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE4NDAxZGE1Mzc0NWQyOTQxODRjOGY5YTYwOWRmZWY5OTNiMWZlMzAuLjBlOGEw
NDU5NTA2ZDVlZTRiNTY2YmE0MWU0ODMyOTlmMGVkMTE1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExMjcsNiArMTEyNyw4IEBACiAJCTQxNTQ0OUI2MjFDQUM0Q0UwMDFD
MEE1NSAvKiB1dGlsLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTU0NDlCNTIxQ0FDNENFMDAxQzBBNTUgLyogdXRpbC5jICovOyB9OwogCQk0MTU0NDlC
ODIxQ0FDNEVDMDAxQzBBNTUgLyogcDI1Ni5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE1NDQ5QjcyMUNBQzRFQzAwMUMwQTU1IC8qIHAyNTYuYyAqLzsg
fTsKIAkJNDE1NDQ5QkIyMUNBQzVCNDAwMUMwQTU1IC8qIGVjZGhfZXh0cmEuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTQ0OUJBMjFDQUM1QjMwMDFD
MEE1NSAvKiBlY2RoX2V4dHJhLmMgKi87IH07CisJCTQxNTg2NDk4MjNCRTA1RTkwMEEwQTYxRSAv
KiBXZWJLaXRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICovOyB9
OworCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTg2NDk3MjNCRTA1RTkw
MEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tICovOyB9OwogCQk0MTVGMUZBNjIxMjcyRkJBMDAw
NjRDQkYgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFNDIxMjcyRjg1MDAxRDVEN0Ig
LyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgKi87IH07CiAJCTQxNUYxRkE3MjEy
NzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREIyMTI3MkY4NDAw
MUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmggKi87IH07CiAJCTQxNUYx
RkE4MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9hZ2Mu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJF
OTIxMjcyRjg2MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdjLmNj
ICovOyB9OwpAQCAtNTA0Nyw2ICs1MDQ5LDggQEAKIAkJNDE1NjY3QTEyMTVCRTc3NTAwMzIyOTZB
IC8qIGRiZ2ZtdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkYmdmbXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE1NjY3QTIyMTVCRTc3NTAwMzIyOTZBIC8qIGJjLWFsaWduLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgcGF0aCA9ICJiYy1hbGlnbi5jIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1
NjY3QTMyMTVCRTc3NjAwMzIyOTZBIC8qIHN5bXJlYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBzeW1yZWMu
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1ODY0OTYyM0JFMDVFODAwQTBBNjFF
IC8qIFdlYktpdEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4NjQ5NzIzQkUw
NUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYktpdEVuY29kZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNUYxRkM1MjEyNzMwOEUwMDA2NENCRiAvKiBhdWRpb19zdGF0ZS5jYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGF1ZGlvX3N0YXRlLmNjOyBwYXRoID0gY2Fs
bC9hdWRpb19zdGF0ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RjFGRDAy
MTI3MzEzRDAwMDY0Q0JGIC8qIHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2M7IHBhdGggPSBjYWxsL3JlY2VpdmVf
dGltZV9jYWxjdWxhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTVGMUZE
MTIxMjczMTNFMDAwNjRDQkYgLyogcnRwX3BheWxvYWRfcGFyYW1zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHJ0cF9wYXlsb2FkX3BhcmFtcy5oOyBwYXRoID0gY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MjAsNiArOTUyNCw4IEBACiAJCQkJNDFF
Q0VBRjkyMDY0NjY2MzAwOUQ1MTQxIC8qIEVuY29kZXJVdGlsaXRpZXMuaCAqLywKIAkJCQk0MUVD
RUFGQTIwNjQ2NjYzMDA5RDUxNDEgLyogVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwICovLAog
CQkJCTQxRUNFQUZCMjA2NDY2NjQwMDlENTE0MSAvKiBWaWRlb1Byb2Nlc3NpbmdTb2Z0TGluay5o
ICovLAorCQkJCTQxNTg2NDk2MjNCRTA1RTgwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmggKi8s
CisJCQkJNDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0gKi8sCiAJ
CQkJNDFFQ0VBQkIyMDY0MDNDMTAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5oICovLAogCQkJ
CTQxRUNFQUJEMjA2NDA0OTgwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gKi8sCiAJCQkp
OwpAQCAtMTU2NTgsNiArMTU2NjQsNyBAQAogCQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAv
KiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1MUM4
IC8qIHdhdl9oZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIwMDI4
QTYxNSAvKiB3ZWFrX3B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1ODY0OTgyM0JFMDVFOTAw
QTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUJDMjA2
NDAzQzIwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4Q0FCMUU0M0M2RjcwMDYyMUU5MiAvKiB3ZWJydGNfY25nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTQ1RTQ5MTFFRjg4RUY3MDBGQ0Y2RTYgLyogd2VicnRjX2xpYnl1di5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNjI0MCwxMCArMTYyNDcsMTAgQEAKIAkJCQk0MUJFNzFDQTIxNUM0NjQ4MDBBN0Ix
OTYgLyogaGFtdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxQ0IyMTVDNDY0ODAwQTdCMTk2
IC8qIGluc24uYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdCMjE1QzQ1OTAwMEE3QjE5NiAv
KiBpbnRudW0uYyBpbiBTb3VyY2VzICovLAotCQkJCTQxN0MwMzczMjNCMjEwQzQwMERFNUQ4QiAv
KiBtYWluX25vb3AuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdDMjE1QzQ1OTAwMEE3QjE5
NiAvKiBpbnR0cmVlLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUJFNzFDQzIxNUM0NjQ4MDBBN0Ix
OTYgLyogbGluZW1hcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjMyMTVDNDhDNzAwODJC
RkQyIC8qIG1hY2hvLW9iamZtdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3QzAzNzMyM0IyMTBD
NDAwREU1RDhCIC8qIG1haW5fbm9vcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0QyMTVD
NDU5MDAwQTdCMTk2IC8qIG1kNS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0UyMTVDNDU5
MDAwQTdCMTk2IC8qIG1lcmdlc29ydC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjkyMTVD
NEE5RTAwODJCRkQyIC8qIG1vZHVsZS5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNzk3NCw2ICsxNzk4
MSw3IEBACiAJCQkJNUM0QjRDODAxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUM0QjRDODMxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuY2Mg
aW4gU291cmNlcyAqLywKIAkJCQk0MTMxQzBGOTIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIu
Y2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0
RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0MSAv
KiBXZWJLaXRVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOENBQTFFNDNDNkY3
MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzY3MUU0
MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCAyMmUwZGZmMGRlNmE4ZDM4YjBlZjA4YzRiOGExMGY5MTI0MWYz
MTliLi4yNGY1YzA1OGZhY2I4MDZlOTc4OTQ3YjQwMmE4OTc5MjQ1Nzc4NGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTU1OCw2ICs1NTgsNyBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCitwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbQogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFj
NzE2NTM2ZjUzNzcxZmE2YjJhY2JiNWMzNDhiZjM4NDg2NmJjMGYuLmM2ZDZmOTllNDUwNWY4ZWYz
ZWEwOTE3MWI1MDllZDMxY2UxNTJkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzksNiArMTA3OSw3IEBACiAJCTQxNTc0
NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDQxRTM4Njk5RTAwRTkxNEQ4
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTU3RUJGOTFFM0FCMDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1vY2tM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbi5oICovOyB9OworCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyogUmVh
bHRpbWVWaWRlb1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMTkzOEYyMTUyQzU2MTAwNkYxNENBIC8qIFJlYWx0aW1lVmlkZW9VdGls
aXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzdF
MTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICov
OyB9OwogCQk0MTYxNEE3OTFEQTY0MjQxMDA0QUQwNkYgLyogSFRUUEhlYWRlclZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MTRBNzcxREE2
NDIzNjAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCAqLzsgfTsKIAkJNDE2MUUyRDUxRkU0
OERDNTAwRUMyRTk2IC8qIEZldGNoTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ3RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDA4Nyw3ICs0MDg4LDcgQEAKIAkJQ0Q2NDFFQjQxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggKi87
IH07CiAJCUNENzIwQjRGMjI2OEI1MTMwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bz
c2hCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NzIwQjQ5MjI2ODJDN0YwMDA0N0ZERSAvKiBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDdEMzM0
NDFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RDMzNDIxQzdBMTIzRjAwMDQx
MjkzIC8qIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCAqLzsgfTsKLQkJQ0Q3RDMzNDgxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdEMzM0NjFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZp
ZGVvU29mdExpbmsuaCAqLzsgfTsKKwkJQ0Q3RDMzNDgxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVW
aWRlb1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDdEMzM0NjFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDdEQkIyOTE4
Q0ExOUM2MDBDMTEwNjYgLyogQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdEQkIyNzE4Q0ExMUZGMDBDMTEwNjYg
LyogQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggKi87IH07CiAJCUNEN0UwNTIyMTY1MUMyODIwMEMx
MjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tICovOyB9OwogCQlDRDgzRDM2MjIxMTIyQTIxMDA3NkUx
MUMgLyogRGVmZXJyYWJsZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEODNEMzVBMjExMTEwODIwMDc2RTExQyAvKiBEZWZlcnJhYmxlVGFzay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mzcx
LDYgKzczNzIsNyBAQAogCQk0MTU3NDc0NDFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUHJvdmlk
ZXIuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTU3RUJGODFFM0FCMDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTU3RUJGOTFFM0FCMDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTg2NDlGMjNC
RjdCOTMwMEEwQTYxRSAvKiBSZWFsdGltZVZpZGVvVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1QTNCNzMyMTM4RTI2NDAwMUI0QkFBIC8qIExp
YldlYlJUQ09ic2VydmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENPYnNlcnZlcnMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENPYnNlcnZlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8q
IEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTVFMUJCMzIxNTAxMDgwMDAyMkRBOTYgLyogUlRDUnRwQ29udHJpYnV0
aW5nU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cENvbnRy
aWJ1dGluZ1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNTksNiAr
MTYyNjEsNyBAQAogCQkJCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUI4MyAvKiBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYS5oICovLAogCQkJCTQxOTI0MjQ3MjEyN0I3Q0MwMDYzNEZDRiAv
KiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSAqLywKIAkJCQk0MUQxOTM4RjIx
NTJDNTYxMDA2RjE0Q0EgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oICovLAorCQkJCTQxNTg2
NDlGMjNCRjdCOTMwMEEwQTYxRSAvKiBSZWFsdGltZVZpZGVvVXRpbGl0aWVzLm1tICovLAogCQkJ
CTA3MEE5RjVFMUZGRUNDNzAwMDNERjY0OSAvKiBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yy5oICovLAogCQkJCTA3MEE5RjYwMUZGRUNDNzEwMDNERjY0OSAvKiBTY3JlZW5EaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYy5tbSAqLywKIAkJCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCAqLywKQEAgLTMxODg3LDYgKzMxODkwLDcgQEAK
IAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjg4MEQxMjAxMEYxRjYwMDcxQjI1NSAv
KiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCRjIw
NDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQxNTg2NEEwMjNCRjdDQkYwMEEwQTYxRSAvKiBSZWFsdGltZVZpZGVvVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUI5NTIyNDFGNThBNThGMDA5MzFEQzIgLyogUmVjb3Jk
aW5nU3dpenpsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1
RUZCNUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIx
RUM4IC8qIFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAppbmRleCA5
ZmU4MjRiMTg3MzhlYTAwNzg4NGY0MjY1YTFkNTlhNWU0YTUyMTgxLi5hYTY0NDZkMjgzMTcyYTNk
ODJlZGY1ZjNjMGY0ZTMxZTQxNmJhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShNZWRpYVNhbXBsZSYmIHNhbXBsCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNw
YWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9u
KCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYg
aW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUpCitzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoQ1ZQaXhlbEJ1
ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiB7CiAgICAgYXV0byBzdXJmYWNlID0gQ1ZQ
aXhlbEJ1ZmZlckdldElPU3VyZmFjZShpbWFnZUJ1ZmZlcik7CiAgICAgaWYgKCFzdXJmYWNlKSB7
CkBAIC02OSw3ICs2OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVt
b3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmIGltCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlk
ZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgZmFsc2UpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CiB9CiAKIFJl
bW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIE1lZGlhVGltZSYmIHRpbWUsIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKaW5kZXggYmQy
NTVmNzk0MDA0MjcxZTNhYjRlYjI2MDI3ZTY0YTc0YTkyODQ4OC4uNzJlYmM2OWIzM2UzN2Y5ODhi
NWI0NWIzNGQyODdlMWJmYmU4OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCkBAIC00OSwxMyArNDksMTQgQEAgcHVi
bGljOgogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKE1lZGlhU2FtcGxlJiYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1w
bGU+IGNyZWF0ZShDVlBpeGVsQnVmZmVyUmVmLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1l
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPiBjcmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9u
VGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKTsK
ICNlbmRpZgogCiAgICAgY29uc3QgTWVkaWFUaW1lJiB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lOyB9CiAgICAgdWludDMyX3QgdmlkZW9Gb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
Rm9ybWF0OyB9CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3JvdGF0aW9uOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAppbmRl
eCAzYjc0MzBmZjRjOGZmOGJkMjc0ZmM2YjJlYWQ3Y2U1YmM1YjBlNWRmLi43MzgwZjA0MmYxYTdk
NTEwZmFmZGQ4Y2JjZDA5YWRjNWU1ZDMyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgSEFWRShJT1NVUkZBQ0UpICYm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIo
SU9TdXJmYWNlUmVmLCBjb25zdCBJbnRTaXplJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggODYxYWMxZGIxYjg2ZDk1ZDVlNDcwZGI0MTkxOTA4OWVlMzhkNTczMy4u
MTUzOTdhYjdmMjc4YWU4ZGM2OWUzMjUyMzc2NGZiODhiZmVkZDAwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0zMDcsNiArMzA3LDIwIEBAIENGRGljdGlvbmFyeVJlZiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjppb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1
CiAgICAgcmV0dXJuIG1faW9TdXJmYWNlQnVmZmVyQXR0cmlidXRlcy5nZXQoKTsKIH0KIAorUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVBp
eGVsQnVmZmVyKElPU3VyZmFjZVJlZiBzdXJmYWNlKQoreworICAgIGlmICghc3VyZmFjZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
OworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckNyZWF0ZVdpdGhJT1N1cmZhY2Uoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc3VyZmFjZSwgaW9TdXJmYWNlUGl4ZWxCdWZmZXJDcmVhdGlvbk9w
dGlvbnMoc3VyZmFjZSksICZwaXhlbEJ1ZmZlcik7CisgICAgaWYgKHN0YXR1cykgeworICAgICAg
ICBSRUxFQVNFX0xPRyhNZWRpYSwgIkNWUGl4ZWxCdWZmZXJDcmVhdGVXaXRoSU9TdXJmYWNlIGZh
aWxlZCB3aXRoIGVycm9yIGNvZGU6ICVkIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0dXMpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBhZG9wdENGKHBpeGVsQnVm
ZmVyKTsKK30KKwogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIGlmICghc3VyZmFjZSB8fCAhc2V0U2l6ZShzaXplKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBjNjZm
MTg1YWY1YmNhY2I1MjBjYjU3NDgwZmY1YTRlMmZjNmU4NGZjLi4wNmI4NGRhZjdmNzE0NjA5MzUw
ZjM5MzVhYjRlYWQ4MWY4ZjRmMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Myw4ICs0Myw2IEBAIEFMTE9XX1VOVVNFRF9QQVJB
TUVURVJTX0VORAogCiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKLSNpbmNsdWRl
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgUEFMOwogCkBAIC05NSwyOCArOTMsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCiBD
VlBpeGVsQnVmZmVyUG9vbFJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4
ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKIHsKICAgICBpZiAoIW1f
cGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggIT0gd2lkdGggfHwgbV9w
aXhlbEJ1ZmZlclBvb2xIZWlnaHQgIT0gaGVpZ2h0KSB7Ci0gICAgICAgIGNvbnN0IE9TVHlwZSB2
aWRlb0NhcHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
RnVsbFJhbmdlOwotICAgICAgICBhdXRvIHBpeGVsQXR0cmlidXRlcyA9IEB7Ci0gICAgICAgICAg
ICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHdpZHRoKSwK
LSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5
OiBAKGhlaWdodCksCi0gICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3JtYXQpLAotICAgICAgICAg
ICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0
eUtleTogQE5PLAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEZvcm1hdE9wZW5HTEVTQ29tcGF0aWJpbGl0eSA6IEBZRVMs
Ci0jZWxzZQotICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJP
cGVuR0xDb21wYXRpYmlsaXR5S2V5IDogQFlFUywKLSNlbmRpZgotICAgICAgICAgICAgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5IDogQHsg
fQotICAgICAgICB9OwotCi0gICAgICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBvb2wgPSBudWxs
cHRyOwotICAgICAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcGl4ZWxB
dHRyaWJ1dGVzLCAmcG9vbCk7Ci0KLSAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNj
ZXNzKSB7Ci0gICAgICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJ
RVIsICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhlbCBidWZmZXIgcG9vbCB3aXRoIGVycm9yICIsIHN0
YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBt
X3BpeGVsQnVmZmVyUG9vbCA9IGFkb3B0Q0YocG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQ
b29sID0gY3JlYXRlUGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3Bp
eGVsQnVmZmVyUG9vbFdpZHRoID0gd2lkdGg7CiAgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sSGVp
Z2h0ID0gaGVpZ2h0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCmluZGV4
IDM4MGQzNzMxYjBhMTUzYWJiOWMyMjcwYmZlZTc2ODBmMDNiM2I4ZWEuLmFkZDRkNzE2ZGQ1NDIw
NWUxYjE3MWY5NDc3M2M5ZTljMjM0OGQzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRp
ZXMuaApAQCAtMjcsNiArMjcsOSBAQAogCiAjaW5jbHVkZSA8Q29yZVZpZGVvL0NvcmVWaWRlby5o
PgogCit1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQ
b29sKjsKK3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBPU1R5cGUgcHJlZmVyZWRQaXhlbEJ1
ZmZlckZvcm1hdCgpCkBAIC0zOCw0ICs0MSw3IEBAIHN0YXRpYyBpbmxpbmUgT1NUeXBlIHByZWZl
cmVkUGl4ZWxCdWZmZXJGb3JtYXQoKQogI2VuZGlmCiB9CiAKK1dFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gY3JlYXRlUGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCk7CitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChDVlBpeGVsQnVmZmVyUG9vbFJlZik7
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFmNDhm
YjlhNzI0N2FlYzFiMmNiNjllNGM2ZTYzYjAwOWNhOGZjNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0
aWVzLm1tCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRv
IGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJDb3JlVmlk
ZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxDVlBpeGVs
QnVmZmVyUG9vbFJlZj4gY3JlYXRlUGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCkKK3sKKyAgICBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKKyAgICBhdXRvIHBpeGVs
QXR0cmlidXRlcyA9IEB7CisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVm
ZmVyV2lkdGhLZXk6IEAod2lkdGgpLAorICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQ
aXhlbEJ1ZmZlckhlaWdodEtleTogQChoZWlnaHQpLAorICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3Jt
YXQpLAorICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckNHSW1hZ2VD
b21wYXRpYmlsaXR5S2V5OiBATk8sCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxGb3JtYXRPcGVuR0xFU0NvbXBhdGliaWxpdHkg
OiBAWUVTLAorI2Vsc2UKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJPcGVuR0xDb21wYXRpYmlsaXR5S2V5IDogQFlFUywKKyNlbmRpZgorICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyB9
CisgICAgfTsKKworICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBvb2wgPSBudWxscHRyOworICAg
IGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbnVsbHB0ciwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilwaXhlbEF0dHJpYnV0ZXMsICZw
b29sKTsKKworICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRDRihwb29sKTsKK30KKworUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2woQ1ZQaXhlbEJ1ZmZl
clBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKQoreworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVh
dGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwaXhlbEJ1ZmZlclBvb2wsICZwaXhl
bEJ1ZmZlcik7CisKKyAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKHBpeGVsQnVmZmVyKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCAx
NGFhYzc0ODU5N2Y3ZmM2ZmMyOTI5NzkzNzQxMTQzYTYzNDY4ZWVlLi4yYjE5ZTVlNjRhODhkNzU3
MjJkM2Y5YTM4Y2U2M2U5ODhmMWJkN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRp
b25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTQxLDcgKzE0MSw3IEBAIExJQldFQlJUQ19MSUJSQVJZ
X0RJUl9DT0NPQV9UT1VDSF9OTyA9ICQoTElCV0VCUlRDX0xJQlJBUllfRElSX1VTRV9PVkVSUklE
RV9GUkFNCiBMSUJXRUJSVENfTElCUkFSWV9ESVJfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElS
X05PID0gJChXRUJDT1JFX0ZSQU1FV09SS1NfRElSKS9XZWJDb3JlLmZyYW1ld29yay9WZXJzaW9u
cy9BL0ZyYW1ld29ya3M7CiBMSUJXRUJSVENfTElCUkFSWV9ESVJfVVNFX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSX1lFUyA9ICQoV0tfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIpOwogCi1PVEhFUl9M
REZMQUdTID0gJChpbmhlcml0ZWQpIC1pZnJhbWV3b3JrIiQoU0RLX0RJUikkKFNZU1RFTV9MSUJS
QVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MiICQoVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUykg
JChBU0FOX09USEVSX0xERkxBR1MpICQoRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MpICQo
V0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoaW5o
ZXJpdGVkKSAtaWZyYW1ld29yayIkKFNES19ESVIpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZh
dGVGcmFtZXdvcmtzIiAkKFVORVhQT1JURURfU1lNQk9MX0xERkxBR1MpICQoQVNBTl9PVEhFUl9M
REZMQUdTKSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKSAkKFdLX1JFTE9DQVRBQkxF
X0ZSQU1FV09SS19MREZMQUdTKSAtWGxpbmtlciAtLW5vLWRlbWFuZ2xlOwogCiBSRUVYUE9SVEVE
X0ZSQU1FV09SS19OQU1FUyA9IFdlYktpdExlZ2FjeTsKIFJFRVhQT1JURURfRlJBTUVXT1JLX05B
TUVTW3Nkaz1tYWNvc3gqXSA9ICQoaW5oZXJpdGVkKSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4
IGY5ODgwMzk3ZWY4MTA5YmNmZmM1MmI3ZGI4NzU3MWY2NDZiYzQ3OGYuLjBmNzRiYjY1YTBmNWZh
Y2RkMTYxM2ZhNjNjODRkNDMyYTM4NjVmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTI5LDYgKzI5LDgg
QEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBj
bGFzcyBDb25uZWN0aW9uOwpAQCAtMzYsOCArMzgsMTMgQEAgY2xhc3MgRGVjb2RlcjsKIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlbW90ZVZp
ZGVvU2FtcGxlOworfQorCiBuYW1lc3BhY2Ugd2VicnRjIHsKIHVzaW5nIExvY2FsRGVjb2RlciA9
IHZvaWQqOwordXNpbmcgTG9jYWxFbmNvZGVyID0gdm9pZCo7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTksOCArNjYsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VEZWNvZGVy
KFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlY29kZUZyYW1lKFJUQ0RlY29kZXJJ
ZGVudGlmaWVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogCisgICAgdm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKTsKKyAgICB2b2lkIHJlbGVhc2VFbmNv
ZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRpYWxpemVFbmNvZGVyKFJU
Q0VuY29kZXJJZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJh
dGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNv
ZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgYm9vbCBzaG91bGRF
bmNvZGVBc0tleUZyYW1lKTsKKyAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOworCisgICAgQ0ZE
aWN0aW9uYXJ5UmVmIGlvU3VyZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3VyZmFj
ZVJlZik7CisKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpM
b2NhbERlY29kZXI+IG1fZGVjb2RlcnM7CisgICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmll
ciwgd2VicnRjOjpMb2NhbEVuY29kZXI+IG1fZW5jb2RlcnM7CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM3YTEzMzRk
Y2QwZDNhYTFkYjlkNTAxNTU0ZjFhMzA5Y2M2NTcyNzAuLjJiMzRlNTY0MDVmMzg1MTZkODJjNTFk
MjY5NGYyNTRhOWEzZWQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjcsNiArMjcsMTIgQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgQ3JlYXRlRGVjb2RlcihXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyIGlk
KQogICAgIFJlbGVhc2VEZWNvZGVyKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCiAg
ICAgRGVjb2RlRnJhbWUoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3Qg
dGltZVN0YW1wLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKworICAgIENyZWF0ZUVuY29kZXIo
V2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IHBhcmFtZXRlcnMpOworICAgIFJlbGVhc2VFbmNvZGVyKFdlYktpdDo6UlRDRW5j
b2RlcklkZW50aWZpZXIgaWQpCisgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNv
ZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWdu
ZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRl
LCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCisgICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNv
ZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBib29s
IHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCisgICAgU2V0RW5jb2RlUmF0ZXMoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRl
KQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IDUzYzAzMTc5OGNkZTBlMmM3MTgzYzY4
YTU2Y2NkNGNjODcwMDEzMWYuLjE4Y2M1ZDc0NzljOTdiOGQyMjI3YzEyNTQ0YzUxNmY3Yjg5MzM4
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKQEAgLTQ4LDYg
KzQ5LDggQEAgTGliV2ViUlRDQ29kZWNzUHJveHk6On5MaWJXZWJSVENDb2RlY3NQcm94eSgpCiB7
CiAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKQogICAgICAgICB3
ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CisgICAgZm9yIChhdXRvIGVuY29k
ZXIgOiBtX2VuY29kZXJzLnZhbHVlcygpKQorICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVu
Y29kZXIoZW5jb2Rlcik7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZURl
Y29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTc3LDYgKzgwLDc5IEBA
IHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVpbnQzMl90CiAgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpGYWlsZWRE
ZWNvZGluZyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJv
eHk6OmNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYXJhbWV0ZXJzKQoreworICAgIEFT
U0VSVCghbV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IHJ0Y1BhcmFtZXRlcnM7CisgICAgZm9yIChhdXRvJiBw
YXJhbWV0ZXIgOiBwYXJhbWV0ZXJzKQorICAgICAgICBydGNQYXJhbWV0ZXJzLmVtcGxhY2UocGFy
YW1ldGVyLmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zZWNvbmQudXRmOCgpLmRhdGEo
KSk7CisgICAgCisgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVM
b2NhbEVuY29kZXIod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB7ICJIMjY0IiwgcnRjUGFyYW1ldGVy
cyB9LCBeKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNvbnN0IHdlYnJ0Yzo6
V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyKiBoZWFkZXIpIHsKKyAgICAgICAgCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0
ZWRFbmNvZGluZyB7IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGJ1ZmZlciwgc2l6
ZSB9LCBpbmZvLCB3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIgeyBoZWFkZXIg
fSB9LCAwKTsKKyAgICB9KSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVh
c2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJU
KG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGlmIChhdXRvIGVuY29kZXIg
PSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxv
Y2FsRW5jb2RlcihlbmNvZGVyKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5p
dGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qg
d2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBt
YXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCit7
CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGF1dG8g
ZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKGVu
Y29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0
ZSwgbWF4RnJhbWVyYXRlKTsKK30KKworc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRp
b24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uKQoreworICAgIHN3aXRjaCAocm90YXRpb24pIHsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8wOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246Cisg
ICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDsKKyAgICBjYXNlIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1Zp
ZGVvUm90YXRpb25fOTA7CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVm
dDoKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8wOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNh
bXBsZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQoreworICAgIEFTU0VSVChtX2VuY29k
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJz
LmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5waXhlbEZvcm1hdCgpICE9IHNhbXBsZS52aWRlb0Zvcm1hdCgpKQorICAgICAgICBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uID0gV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRl
KHNhbXBsZS52aWRlb0Zvcm1hdCgpKTsKKworI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24tPmNyZWF0ZVBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpOworICAgIHdlYnJ0Yzo6
ZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoZW5jb2RlciwgcGl4ZWxCdWZmZXIuZ2V0KCksIHNhbXBs
ZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRvV2ViUlRDVmlkZW9S
b3RhdGlvbihzYW1wbGUucm90YXRpb24oKSksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworI2Vu
ZGlmCit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKFJUQ0Vu
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZy
YW1lUmF0ZSkKK3sKKyAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
CisgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7CisgICAgaWYg
KCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rl
clJhdGVzKGVuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSk7Cit9CisKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA2OTA2MzEwNmNhYjU0
MDIxYzQyODk2Y2RjYjc2M2E3NTZmNzhhZjg2Li5jOWQwZTdjNjkxZmY3Yzk1NWY4YzM1MTEwMDFj
NDBhNTU0YWI5MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTIyMiw2ICsyMjIsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6
OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyJywKQEAgLTYxMSw2ICs2
MTIsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ3N0cnVjdCBXZWJL
aXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEn
OiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YSc6IFsnIldlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAorICAgICAgICAnd2VicnRjOjpXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJzogWyc8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oPiddLAor
ICAgICAgICAnd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyJzogWyc8d2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oPiddLAogICAgIH0KIAogICAgIGhlYWRlcnMgPSBb
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTVjNmU3ZDY1YWY3MjI3ZWY3M2FmZDgyNjhmZjcxZGIwZDhhMjE1MC4uODFkZDUyMGZjNzEx
M2ZmMjVlOWE1YTE2ODAzM2Q1NTM3OWRmZDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzIwLDYgKzMzMjAsNyBAQAogCQk0MTUx
RTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE1Nzg1MzAyMTI3NkI2RjAwREQzODAwIC8qIGNvcHktd2ViY29udGVu
dC1yZXNvdXJjZXMtdG8tcHJpdmF0ZS1oZWFkZXJzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY29weS13
ZWJjb250ZW50LXJlc291cmNlcy10by1wcml2YXRlLWhlYWRlcnMuc2giOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTU3RTRBRjIwRTJFQzk4MDBBNkMwRDcgLyogY29tLmdvb2dsZS5v
MWRicm93c2VycGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5nb29nbGUubzFk
YnJvd3NlcnBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1ODY0OUEy
M0JFMDkyNDAwQTBBNjFFIC8qIFJUQ0VuY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2Rl
Y3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGliV2ViUlRDQ29kZWNzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAv
KiBMaWJXZWJSVENDb2RlY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGliV2ViUlRDQ29kZWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3
MjE5OEMyM0I2MTJFODAwQUU1Njg2IC8qIFJUQ0RlY29kZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0RlY29kZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTI1LDYgKzcxMjYsNyBAQAogCQkJCTQxNzIxOTg5MjNC
NjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3MuaCAqLywKIAkJCQk0MTcyMTk4RDIzQjYy
QzdDMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluICovLAogCQkJCTQxNzIx
OThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNvZGVySWRlbnRpZmllci5oICovLAorCQkJCTQx
NTg2NDlBMjNCRTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVySWRlbnRpZmllci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSB3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKaW5kZXggYjI3MWQ4ZWY5Y2NjYTQxZDg5ZmY4MGI1NjIxY2YwN2IyN2Y3NzJmYi4uNDZk
MTE5ODc3MmM1MWI4YWQ5MGVmOGExNzEzMjFmZmNlMjkwZmNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBA
IC0zMyw4ICszMywxMCBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNy
b3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rl
ci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTY0LDE3ICs2Niw4NSBAQCBzdGF0aWMgaW50
MzJfdCByZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2sod2VicnRjOjpXZWJLaXRWaWRlb0Rl
Y29kZXIgZGVjb2RlcgogICAgIHJldHVybiAwOwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVjczo6
c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykKK3N0YXRpYyB3ZWJy
dGM6OldlYktpdFZpZGVvRW5jb2RlciBjcmVhdGVWaWRlb0VuY29kZXIoY29uc3Qgd2VicnRjOjpT
ZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KQoreworICAgIGlmIChmb3JtYXQubmFtZSAhPSAiSDI2NCIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmNyZWF0ZUVuY29kZXIoZm9ybWF0LnBhcmFtZXRlcnMp
OworfQorCitzdGF0aWMgaW50MzJfdCByZWxlYXNlVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2ViS2l0
VmlkZW9FbmNvZGVyIGVuY29kZXIpCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmxpYldlYlJUQ0NvZGVjcygpLnJlbGVhc2VFbmNvZGVyKCpzdGF0aWNfY2FzdDxMaWJXZWJS
VENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSk7Cit9CisKK3N0YXRpYyBpbnQzMl90IGluaXRp
YWxpemVWaWRlb0VuY29kZXIod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29u
c3Qgd2VicnRjOjpWaWRlb0NvZGVjJiBjb2RlYykKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuaW5pdGlhbGl6ZUVuY29kZXIoKnN0YXRpY19j
YXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBjb2RlYy53aWR0aCwgY29k
ZWMuaGVpZ2h0LCBjb2RlYy5zdGFydEJpdHJhdGUsIGNvZGVjLm1heEJpdHJhdGUsIGNvZGVjLm1p
bkJpdHJhdGUsIGNvZGVjLm1heEZyYW1lcmF0ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24od2VicnRjOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uKQoreworICAgIHN3aXRjaCAocm90YXRpb24pIHsKKyAgICBj
YXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKKyAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8x
ODA6CisgICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93
bjsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6CisgICAgICAgIHJldHVybiBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzI3MDoKKyAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpMZWZ0OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7Cit9CisKK3N0YXRpYyBpbnQzMl90IGVuY29k
ZVZpZGVvRnJhbWUod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3Qgd2Vi
cnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQorewor
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQaXhlbEJ1ZmZlcjsKKyAgICBhdXRv
IHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgWyZuZXdQ
aXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSAtPiBDVlBpeGVsQnVmZmVy
UmVmIHsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5saWJXZWJSVENDb2RlY3MoKS5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVQaXhlbEJ1ZmZlckZy
b21Qb29sKHBpeGVsQnVmZmVyUG9vbCk7CisgICAgICAgIHJldHVybiBuZXdQaXhlbEJ1ZmZlci5n
ZXQoKTsKKyAgICB9KTsKKworICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBX
RUJSVENfVklERU9fQ09ERUNfRVJST1I7CisKKyAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMo
KSwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkp
KTsKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCku
ZW5jb2RlRnJhbWUoKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29k
ZXIpLCAqc2FtcGxlLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKK30KKworc3RhdGljIGludDMy
X3QgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNv
ZGVyIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxs
YmFjaygqc3RhdGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2RlciksIGVu
Y29kZWRJbWFnZUNhbGxiYWNrKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2V0
RW5jb2RlUmF0ZXNDYWxsYmFjayh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCBj
b25zdCB3ZWJydGM6OlZpZGVvRW5jb2Rlcjo6UmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQoreworICAgIHVpbnQzMl90IGJpdFJhdGUgPSBwYXJhbWV0ZXJzLmJpdHJhdGUuZ2V0X3N1
bV9rYnBzKCk7CisgICAgdWludDMyX3QgZnJhbWVSYXRlID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHBhcmFtZXRlcnMuZnJhbWVyYXRlX2ZwcyArIDAuNSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubGliV2ViUlRDQ29kZWNzKCkuc2V0RW5jb2RlUmF0ZXMoKnN0YXRpY19jYXN0PExpYldl
YlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBiaXRSYXRlLCBmcmFtZVJhdGUpOworfQor
Cit2b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCF1c2VHUFVQcm9jZXNz
KSB7CiAgICAgICAgIHdlYnJ0Yzo6c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICB3ZWJydGM6OnNldFZpZGVvRW5jb2Rl
ckNhbGxiYWNrcyhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBMZXQncyBjcmVhdGUgV2Vi
UHJvY2VzcyBsaWJXZWJSVENDb2RlY3Mgc2luY2UgaXQgbWF5IGJlIGNhbGxlZCBmcm9tIHZhcmlv
dXMgdGhyZWFkcy4KICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3Mo
KTsKICAgICB3ZWJydGM6OnNldFZpZGVvRGVjb2RlckNhbGxiYWNrcyhjcmVhdGVWaWRlb0RlY29k
ZXIsIHJlbGVhc2VWaWRlb0RlY29kZXIsIGRlY29kZVZpZGVvRnJhbWUsIHJlZ2lzdGVyRGVjb2Rl
Q29tcGxldGVDYWxsYmFjayk7CisgICAgd2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3Mo
Y3JlYXRlVmlkZW9FbmNvZGVyLCByZWxlYXNlVmlkZW9FbmNvZGVyLCBpbml0aWFsaXplVmlkZW9F
bmNvZGVyLCBlbmNvZGVWaWRlb0ZyYW1lLCByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ss
IHNldEVuY29kZVJhdGVzQ2FsbGJhY2spOwogfQogCiBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIq
IExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcigpCkBAIC04OSw4ICsxNTksOCBAQCBMaWJX
ZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcigpCiAg
ICAgICAgIGF1dG8gZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLT5pZGVudGlmaWVyOwogICAg
ICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Q3JlYXRlRGVjb2RlciB7IGRlY29kZXJJZGVudGlmaWVyIH0sIDApOwogCi0gICAgICAg
IEFTU0VSVCghbV9kZWNvZGVDYWxsYmFja3MuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsK
LSAgICAgICAgbV9kZWNvZGVDYWxsYmFja3MuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KGRlY29kZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJ
ZGVudGlmaWVyKSk7CisgICAgICAgIG1fZGVjb2RlcnMuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBX
VEZNb3ZlKGRlY29kZXIpKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAx
LDkgKzE3MSw5IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIGRlY29kZXIuZGVjb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRy
OwogCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGRlY29kZXJJZGVudGlmaWVyID0gZGVj
b2Rlci5pZGVudGlmaWVyXSB7Ci0gICAgICAgIEFTU0VSVChtX2RlY29kZUNhbGxiYWNrcy5jb250
YWlucyhkZWNvZGVySWRlbnRpZmllcikpOworICAgICAgICBBU1NFUlQobV9kZWNvZGVycy5jb250
YWlucyhkZWNvZGVySWRlbnRpZmllcikpOwogCi0gICAgICAgIG1fZGVjb2RlQ2FsbGJhY2tzLnJl
bW92ZShkZWNvZGVySWRlbnRpZmllcik7CisgICAgICAgIG1fZGVjb2RlcnMucmVtb3ZlKGRlY29k
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xMzAsNyArMjAwLDcgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3M6OmZhaWxlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlm
aWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoYXV0byogZGVj
b2RlciA9IG1fZGVjb2RlQ2FsbGJhY2tzLmdldChkZWNvZGVySWRlbnRpZmllcikpCisgICAgaWYg
KGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcikpCiAgICAg
ICAgIGRlY29kZXItPmhhc0Vycm9yID0gdHJ1ZTsKIH0KIApAQCAtMTM5LDcgKzIwOSw3IEBAIHZv
aWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmll
ciBkZWNvZGVySWRlbnRpZmllciwKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
Ly8gRklYTUU6IERvIGVycm9yIGxvZ2dpbmcuCi0gICAgYXV0byogZGVjb2RlciA9IG1fZGVjb2Rl
Q2FsbGJhY2tzLmdldChkZWNvZGVySWRlbnRpZmllcik7CisgICAgYXV0byogZGVjb2RlciA9IG1f
ZGVjb2RlcnMuZ2V0KGRlY29kZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTY3LDYgKzIzNywxMTEgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6
OmNvbXBsZXRlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyIGRlY29kZXJJZGVudGlmaWVy
LAogICAgIHdlYnJ0Yzo6UmVtb3RlVmlkZW9EZWNvZGVyOjpkZWNvZGVDb21wbGV0ZShkZWNvZGVy
LT5kZWNvZGVkSW1hZ2VDYWxsYmFjaywgdGltZVN0YW1wLCBwaXhlbEJ1ZmZlci5nZXQoKSwgcmVt
b3RlU2FtcGxlLnRpbWUoKS50b0RvdWJsZSgpKTsKIH0KIAorTGliV2ViUlRDQ29kZWNzOjpFbmNv
ZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZUVuY29kZXIoY29uc3Qgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPiYgZm9ybWF0UGFyYW1ldGVycykKK3sKKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCk7CisgICAgYXV0byogcmVzdWx0ID0gZW5jb2Rlci5n
ZXQoKTsKKyAgICBlbmNvZGVyLT5pZGVudGlmaWVyID0gUlRDRW5jb2RlcklkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+IHBhcmFtZXRlcnM7CisgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IGZvcm1hdFBhcmFtZXRl
cnMpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFN0cmluZzo6ZnJv
bVVURjgoa2V5VmFsdWUuZmlyc3QuZGF0YSgpLCBrZXlWYWx1ZS5maXJzdC5sZW5ndGgoKSksIFN0
cmluZzo6ZnJvbVVURjgoa2V5VmFsdWUuc2Vjb25kLmRhdGEoKSwga2V5VmFsdWUuc2Vjb25kLmxl
bmd0aCgpKSkpOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXIgPSBXVEZN
b3ZlKGVuY29kZXIpLCBwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byBlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXItPmlkZW50aWZpZXI7
CisgICAgICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlucyhlbmNvZGVySWRlbnRpZmllcikp
OworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIsIHBhcmFtZXRlcnMgfSwgMCk7Cisg
ICAgICAgIG1fZW5jb2RlcnMuYWRkKGVuY29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGVuY29kZXIp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQzMl90IExpYldlYlJUQ0Nv
ZGVjczo6cmVsZWFzZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlcikKK3sKKyAgICBMb2NrSG9sZGVy
IGhvbGRlcihlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrTG9jayk7CisgICAgZW5jb2Rlci5l
bmNvZGVkSW1hZ2VDYWxsYmFjayA9IG51bGxwdHI7CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChb
dGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAg
QVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKworICAgICAg
ICBtX2VuY29kZXJzLnJlbW92ZShlbmNvZGVySWRlbnRpZmllcik7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2RlciB7IGVu
Y29kZXJJZGVudGlmaWVyIH0sIDApOworICAgIH0pOworICAgIHJldHVybiAwOworfQorCitpbnQz
Ml90IExpYldlYlJUQ0NvZGVjczo6aW5pdGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2Rlciwg
dWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRSYXRlLCB1
bnNpZ25lZCBtYXhCaXRSYXRlLCB1bnNpZ25lZCBtaW5CaXRSYXRlLCB1aW50MzJfdCBtYXhGcmFt
ZVJhdGUpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVy
ID0gZW5jb2Rlci5pZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJp
dFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZV0geworICAgICAgICBpZiAoYXV0byogZW5j
b2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJZGVudGlmaWVyKSkgeworICAgICAgICAgICAg
YXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNv
ZGVySWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBt
aW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUgfSwgMCk7CisgICAgICAgICAgICAvLyBXZSBzZXQgZW5j
b2Rlci0+Y29ubmVjdGlvbiBoZXJlIHNvIHRoYXQgSW5pdGlhbGl6ZUVuY29kZXIgaXMgc2VudCBi
ZWZvcmUgYW55IEVuY29kZUZyYW1lIG1lc3NhZ2UuCisgICAgICAgICAgICBlbmNvZGVyLT5jb25u
ZWN0aW9uID0gJmNvbm5lY3Rpb247CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gMDsK
K30KKworaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiBmcmFtZSwgYm9vbCBzaG91bGRF
bmNvZGVBc0tleUZyYW1lKQoreworICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworCisgICAgZW5jb2Rlci5jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBl
bmNvZGVyLmlkZW50aWZpZXIsIGZyYW1lLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0sIDApOwor
ICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29k
ZWNzOjpyZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJhY2soRW5jb2RlciYgZW5jb2Rlciwgdm9pZCog
ZW5jb2RlZEltYWdlQ2FsbGJhY2spCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5l
bmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spOworICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJh
Y2sgPSBlbmNvZGVkSW1hZ2VDYWxsYmFjazsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3M6OnNl
dEVuY29kZVJhdGVzKEVuY29kZXImIGVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90
IGZyYW1lUmF0ZSkKK3sKKyAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikgeworICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50
aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZV0geworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRo
aXMpOworICAgICAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50
aWZpZXIpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2VuY29kZXJzLmdldChlbmNvZGVySWRlbnRp
ZmllciktPmNvbm5lY3Rpb24pOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29kZVJhdGVzIHsgZW5jb2RlcklkZW50aWZpZXIs
IGJpdFJhdGUsIGZyYW1lUmF0ZSB9LCAwKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6U2V0RW5jb2RlUmF0ZXMgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGJpdFJhdGUs
IGZyYW1lUmF0ZSB9LCAwKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZEVu
Y29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSYmIGRhdGEsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgd2Vi
cnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyJiYgZnJhZ21lbnRhdGlvbkhlYWRlcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gRklYTUU6IERvIGVycm9y
IGxvZ2dpbmcuCisgICAgYXV0byogZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIp
OworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIg
PSB0cnlIb2xkTG9jayhlbmNvZGVyLT5lbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spOworICAgIGlm
ICghbG9ja2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVuY29kZXItPmVuY29kZWRJ
bWFnZUNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJydGM6OlJlbW90ZVZpZGVv
RW5jb2Rlcjo6ZW5jb2RlQ29tcGxldGUoZW5jb2Rlci0+ZW5jb2RlZEltYWdlQ2FsbGJhY2ssIGNv
bnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGluZm8sIGZyYWdt
ZW50YXRpb25IZWFkZXIudmFsdWUoKSk7Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVmIExpYldl
YlJUQ0NvZGVjczo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkK
K3sKKyAgICBpZiAoIW1fcGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGgg
IT0gd2lkdGggfHwgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgIT0gaGVpZ2h0KSB7CisgICAgICAg
IG1fcGl4ZWxCdWZmZXJQb29sID0gY3JlYXRlUGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoID0gd2lkdGg7CisgICAgICAgIG1fcGl4
ZWxCdWZmZXJQb29sSGVpZ2h0ID0gaGVpZ2h0OworICAgIH0KKyAgICByZXR1cm4gbV9waXhlbEJ1
ZmZlclBvb2wuZ2V0KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGUzY2Q4YTkz
ZmQzMTM5YWQxMWQxNTc0NzEzZDVjZWEzYWY1MDkyYWIuLjg5M2UxOTg3YjVhNmY2Y2U5ZWEwZjBj
YWFkNjdmYTE0NjEzN2I0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOSwxMyArMjksMTggQEAKIAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAKK3VzaW5nIENWUGl4ZWxCdWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZl
clBvb2wqOworCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRh
UmVmZXJlbmNlOwogY2xhc3MgRGVjb2RlcjsKIH0KIApAQCAtNDMsNiArNDgsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiB9CiAKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjsKK3N0cnVjdCBXZWJL
aXRFbmNvZGVkRnJhbWVJbmZvOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTGli
V2ViUlRDQ29kZWNzIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC01MCw2ICs2
MCw4IEBAIGNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgogICAgIExpYldlYlJUQ0NvZGVjcygpID0gZGVmYXVsdDsKIAorICAgIHN0
YXRpYyB2b2lkIHNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpOworCiAgICAgc3RydWN0
IERlY29kZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CkBAIC02MCwyMyArNzIsNDYgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0
aW9uPiBjb25uZWN0aW9uOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRWaWRlb0RlY29k
ZXJDYWxsYmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzKTsKLQogICAgIERlY29kZXIqIGNyZWF0ZURl
Y29kZXIoKTsKICAgICBpbnQzMl90IHJlbGVhc2VEZWNvZGVyKERlY29kZXImKTsKICAgICBpbnQz
Ml90IGRlY29kZUZyYW1lKERlY29kZXImLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwogICAgIHZvaWQgcmVnaXN0ZXJEZWNvZGVGcmFtZUNhbGxiYWNrKERlY29k
ZXImLCB2b2lkKiBkZWNvZGVkSW1hZ2VDYWxsYmFjayk7CiAKKyAgICBzdHJ1Y3QgRW5jb2RlciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAg
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdm9pZCogZW5jb2RlZElt
YWdlQ2FsbGJhY2sgeyBudWxscHRyIH07CisgICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJh
Y2tMb2NrOworICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAg
IH07CisKKyAgICBFbmNvZGVyKiBjcmVhdGVFbmNvZGVyKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCBzdGQ6OnN0cmluZz4mKTsKKyAgICBpbnQzMl90IHJlbGVhc2VFbmNvZGVyKEVuY29kZXIm
KTsKKyAgICBpbnQzMl90IGluaXRpYWxpemVFbmNvZGVyKEVuY29kZXImLCB1aW50MTZfdCB3aWR0
aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJp
dHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7CisgICAg
aW50MzJfdCBlbmNvZGVGcmFtZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworICAgIHZvaWQgcmVnaXN0ZXJF
bmNvZGVGcmFtZUNhbGxiYWNrKEVuY29kZXImLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7
CisgICAgdm9pZCBzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiwgdWludDMyX3QgYml0UmF0ZSwgdWlu
dDMyX3QgZnJhbWVSYXRlKTsKKyAgICAKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KTsKKwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciwgdWludDMyX3Qg
dGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIGNvbXBs
ZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwg
Y29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiwgd2VicnRjOjpXZWJLaXRSVFBG
cmFnbWVudGF0aW9uSGVhZGVyJiYpOwogCi0gICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2RlY29kZUNhbGxiYWNrczsKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+PiBtX2RlY29kZXJzOwogICAgIEhhc2hTZXQ8UlRDRGVjb2RlcklkZW50aWZpZXI+IG1fZGVj
b2RpbmdFcnJvcnM7CiAKKyAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2Rlcj4+IG1fZW5jb2RlcnM7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKKyAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sOworICAg
IHNpemVfdCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoIHsgMCB9OworICAgIHNpemVfdCBtX3BpeGVs
QnVmZmVyUG9vbEhlaWdodCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmluZGV4IDJhYWU5Nzg2ODBkM2MzYTc4MGI4YzI1OWU0
M2E1ZTQ4ZDE5MDMxNmIuLmYyYmY1YjgzNmIwOTk3YzFkZDBlMzY5OTk2NWRiNzUyNjhjYmYyYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KQEAgLTIzLDggKzIzLDEwIEBACiAjaWYg
VVNFKExJQldFQlJUQykgJiYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNzIE5vdFJlZkNvdW50ZWQgewotICAgIEZhaWxl
ZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWQpCi0gICAgQ29tcGxldGVk
RGVjb2RpbmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgdGltZVN0
YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisgICAgRmFpbGVkRGVjb2Rp
bmcoV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIENvbXBsZXRl
ZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMy
X3QgdGltZVN0YW1wLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCisKKyAgICBD
b21wbGV0ZWRFbmNvZGluZyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdHJ1Y3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJh
bWVJbmZvIGluZm8sIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciBmcmFnbWVu
dGF0aW9uSGVhZGVyKTsKIH0KIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9SVENFbmNvZGVySWRlbnRpZmllci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUlRDRW5jb2RlcklkZW50aWZpZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMGE3ZjNjMDRmNmM0OTliOWVkNjU2MmJmMmQwYzZiZjQ4ZTJhODA0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworZW51bSBSVENFbmNvZGVySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUlRDRW5jb2Rlcklk
ZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJUQ0VuY29kZXJJZGVudGlmaWVyVHlwZT47CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggZjk4
MzYyMjdlOWJlNWYzNDdlYjdhYzM4ZmIwMjdjYzBjOGUyMjBmOC4uZDM5ZTM5OTdlMjQ5ODVlZjA2
MzQyNWNmZTM5YTg4YjFmNTJkOTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0x
NDEsNyArMTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9y
eT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJGYWMKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGVmZmljaWVudCBzZW5kaW5nIG9mIHZpZGVv
IGZyYW1lcyB3aXRoIElPU1VSRkFDRQogI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgTGliV2ViUlRDQ29kZWNzOjpzZXRWaWRlb0RlY29kZXJDYWxsYmFj
a3MobV91c2VHUFVQcm9jZXNzKTsKKyAgICBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyht
X3VzZUdQVVByb2Nlc3MpOwogI2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gTGliV2ViUlRDUHJv
dmlkZXJDb2NvYTo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386818</attachid>
            <date>2020-01-06 01:01:54 -0800</date>
            <delta_ts>2020-01-06 01:47:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205713-20200106100152.patch</filename>
            <type>text/plain</type>
            <size>84421</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAxZDgyNWM0ZTE4ZWQxMzlkY2ViZWRlMWYzMTlhZTljNGNmYTJjMzJiLi5kMjAy
YjQyYWViYWY4ZDhlOWEwMDk3ZWI2OGY5ZmNjNTE5NWYwYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wMS0wNiAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJUQyBWVEIgZW5j
b2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZW1vdGUgdmlkZW8gZW5jb2RlcnMgY3JlYXRlZCBh
bmQgdXNlZCB0aHJvdWdoIHNpbXBsZSByb3V0aW5lcy4KKyAgICAgICAgQWRkIGZhY3RvcnkgdG8g
Y3JlYXRlIHZpZGVvIGVuY29kZXJzIGltcGxlbWVudGVkIGVsc2V3aGVyZSB0aGFuIGluIFdlYlJU
QyBiYWNrZW5kLgorICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIEgyNjQgZW5jb2RlcnMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0RW5jb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21l
bnRhdGlvbkhlYWRlcjo6dmFsdWUpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRFbmNvZGVkRnJh
bWVJbmZvOjpkZWNvZGUpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAod2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9u
SGVhZGVyOjpXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6
V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKHdl
YnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbTogQWRkZWQuCisgICAgICAg
ICh3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0OjpDcmVhdGVWaWRlb0Vu
Y29kZXIpOgorICAgICAgICAod2VicnRjOjp2aWRlb0VuY29kZXJDYWxsYmFja3MpOgorICAgICAg
ICAod2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MpOgorICAgICAgICAod2VicnRjOjpS
ZW1vdGVWaWRlb0VuY29kZXI6OlJlbW90ZVZpZGVvRW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6
OlJlbW90ZVZpZGVvRW5jb2Rlcjo6SW5pdEVuY29kZSk6CisgICAgICAgICh3ZWJydGM6OlJlbW90
ZVZpZGVvRW5jb2Rlcjo6UmVsZWFzZSk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5j
b2Rlcjo6RW5jb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpTZXRS
YXRlcyk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6R2V0RW5jb2Rlcklu
Zm8gY29uc3QpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OlJlZ2lzdGVy
RW5jb2RlQ29tcGxldGVDYWxsYmFjayk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5j
b2Rlcjo6ZW5jb2RlQ29tcGxldGUpOgorICAgICAgICAod2VicnRjOjpjcmVhdGVMb2NhbEVuY29k
ZXIpOgorICAgICAgICAod2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKToKKyAgICAgICAgKHdl
YnJ0Yzo6aW5pdGlhbGl6ZUxvY2FsRW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OmVuY29kZUxv
Y2FsRW5jb2RlckZyYW1lKToKKyAgICAgICAgKHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyUmF0ZXMp
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tOgor
ICAgICAgICAqIGxpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTAx
LTAxICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgdHJhbnNjZWl2ZXIgc2V0Q29kZWNQcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE2NTRkYzQ4
MzRkNzhkNWM4M2M2OGQ3NjBmNjk1ZGVjNzk3NTFjMDcuLjg2ZjI3ZWM4YTlmMDBkODA2NjMwNjMx
YjdhNjg3MGFiNzhlMzIwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wMS0w
NiAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IFJUQyBWVEIgZW5jb2RlcnMgaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIGV4cG9zZSBhIGNyZWF0ZVBpeGVs
QnVmZmVyIHJvdXRpbmUsIHRvIHNldC9nZXQgUmVtb3RlVmlkZW9TYW1wbGUgYW5kIHRvIGNyZWF0
ZSBhIENWUGl4ZWxCdWZmZXIgZnJvbSBhbiBJT1N1cmZhY2VSZWYuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cywgaW4gcGFydGljdWxhciB3ZWJydGMvdmlkZW8tZ3B1UHJvY2Vz
cy5odG1sLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpyb3RhdGlvbiBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9u
VlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQ
aXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQaXhlbEJ1ZmZlclBvb2wpOgorCiAyMDIwLTAx
LTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1NMTF0gR2Vu
ZXJhdGUgcnVucyBmb3IgcHJlc2VydmVkIG5ldyBsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwNDI5YjFhYzZh
ZTAzYWMzZGEzMjE5YzE2ODY2NzM4NzNkMThmZGQ0Li5mMjlhOTA2Y2ZhMDI5Nzg1MmU3MWQ3YjJj
MzAxYWY1OTQyYTFiZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTAxLTA2ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgUlRD
IFZUQiBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MTMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlbW90ZSB2aWRlbyBlbmNvZGVycyBp
biBHUFVQcm9jZXNzIGJhc2VkIG9uIGxpYndlYnJ0YyBleHBvc2VkIHJvdXRpbmVzLgorICAgICAg
ICBXZWJQcm9jZXNzIHNldHMgY2FsbGJhY2tzIGluIHRoZSB3ZWJydGMgYmFja2VuZCB0byBpbXBs
ZW1lbnQgSDI2NCBlbmNvZGluZyBhcyBhIHJlbW90ZSB2aWRlbyBlbmNvZGVyLgorICAgICAgICBJ
biBhZGRpdGlvbiB0byB2aWRlbyBmcmFtZXMsIHdlIGFsc28gbmVlZCB0byBzZW5kIHJhdGUgc2V0
dGluZyBvcmRlcnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6On5MaWJXZWJSVENDb2RlY3NQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVFbmNv
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNv
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVF
bmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJSVENWaWRlb1JvdGF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVmlkZW9FbmNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6cmVsZWFzZVZpZGVvRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVWaWRlb0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0Ojp0b01lZGlhU2FtcGxlVmlk
ZW9Sb3RhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZVZpZGVvRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpyZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzOjpzZXRDYWxsYmFja3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVh
c2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNv
ZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVjb2Rp
bmcpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZUVuY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OnJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0RW5jb2RlUmF0ZXMpOgorICAgICAgICAoV2Vi
S2l0OjpMaWJXZWJSVENDb2RlY3M6OmNvbXBsZXRlZEVuY29kaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TGliV2ViUlRDQ29kZWNzOjpwaXhlbEJ1ZmZlclBvb2wpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9SVENFbmNvZGVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKwogMjAy
MC0wMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEdW1wUmVuZGVyVHJlZSBkb2Vzbid0IGFsd2F5cyBjYWxsIHVwZGF0ZVJlbmRlcmluZygpIHdo
ZW4gYSB0ZXN0IGNvbXBsZXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGVhNzg5ZTJj
NWQzMjk1MWViNmRmNGNhNWE4ZjQ3M2ZmOTExNmM1ZWIuLjUzZTM1NDdlOTkzNWY1Yzc5NzBiZDFl
ZDdjMGZkYzAzODMzMDk5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI2OCwzICsy
NjgsMTcgQEAgX19aTjZ3ZWJydGMxMWRlY29kZUZyYW1lRVB2alBLaG0KIF9fWk42d2VicnRjMThS
ZW1vdGVWaWRlb0RlY29kZXIxNGRlY29kZUNvbXBsZXRlRVB2alAxMF9fQ1ZCdWZmZXJqCiBfX1pO
NndlYnJ0YzI0c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3Jt
YXRFRVBGaVMwX0VQRmlTMF9qUEtobUVQRmlTMF9TMF9FCiBfX1pONndlYnJ0YzE4UnRwQ29kZWND
YXBhYmlsaXR5QzFFdgorX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2
UktOU18xNFNkcFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQorX19a
TjZ3ZWJydGMxOFJ0cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyRDFFdgorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXJDMUV2
CitfX1pONndlYnJ0YzE4UmVtb3RlVmlkZW9FbmNvZGVyMTRlbmNvZGVDb21wbGV0ZUVQdlBobVJL
TlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVy
RQorX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVzaXplRW0KK19fWk42d2Vi
cnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVF
UEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05TXzEwVmlkZW9GcmFtZUVi
RVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRlQ29udHJvbFBhcmFtZXRl
cnNFRQorX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2amoKK19fWk42d2VicnRj
MjJpbml0aWFsaXplTG9jYWxFbmNvZGVyRVB2dHRqampqCitfX1pONndlYnJ0YzE0U2RwVmlkZW9G
b3JtYXRDMUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMx
XzlhbGxvY2F0b3JJY0VFRUVSS05TMV8zbWFwSVM3X1M3X05TMV80bGVzc0lTN19FRU5TNV9JTlMx
XzRwYWlySVM4X1M3X0VFRUVFRQorX19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2FsRW5jb2RlckVSS05T
XzE0U2RwVmlkZW9Gb3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJLTlNfMjJXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvRVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFRQorX19aTjZ3ZWJydGMx
NFNkcFZpZGVvRm9ybWF0RDFFdgorX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYK
K19fWk42d2VicnRjMjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4TlNf
MTNWaWRlb1JvdGF0aW9uRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBlYTc4
OWUyYzVkMzI5NTFlYjZkZjRjYTVhOGY0NzNmZjkxMTZjNWViLi41M2UzNTQ3ZTk5MzVmNWM3OTcw
YmQxZWQ3YzBmZGMwMzgzMzA5OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBA
IC0yNjgsMyArMjY4LDE3IEBAIF9fWk42d2VicnRjMTFkZWNvZGVGcmFtZUVQdmpQS2htCiBfX1pO
NndlYnJ0YzE4UmVtb3RlVmlkZW9EZWNvZGVyMTRkZWNvZGVDb21wbGV0ZUVQdmpQMTBfX0NWQnVm
ZmVyagogX19aTjZ3ZWJydGMyNHNldFZpZGVvRGVjb2RlckNhbGxiYWNrc0VQRlB2UktOU18xNFNk
cFZpZGVvRm9ybWF0RUVQRmlTMF9FUEZpUzBfalBLaG1FUEZpUzBfUzBfRQogX19aTjZ3ZWJydGMx
OFJ0cENvZGVjQ2FwYWJpbGl0eUMxRXYKK19fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxs
YmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMw
X1MwX0UKK19fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzIy
UlRQRnJhZ21lbnRhdGlvbkhlYWRlckQxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9u
SGVhZGVyQzFFdgorX19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxl
dGVFUHZQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRh
dGlvbkhlYWRlckUKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVt
CitfX1pONndlYnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlk
ZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZp
ZGVvRnJhbWVFYkVQRmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRy
b2xQYXJhbWV0ZXJzRUUKK19fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCitf
X1pONndlYnJ0YzIyaW5pdGlhbGl6ZUxvY2FsRW5jb2RlckVQdnR0ampqagorX19aTjZ3ZWJydGMx
NFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJh
aXRzSWNFRU5TMV85YWxsb2NhdG9ySWNFRUVFUktOUzFfM21hcElTN19TN19OUzFfNGxlc3NJUzdf
RUVOUzVfSU5TMV80cGFpcklTOF9TN19FRUVFRUUKK19fWk42d2VicnRjMThjcmVhdGVMb2NhbEVu
Y29kZXJFUktOU18xNFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIy
V2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKK19f
Wk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEQxRXYKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxF
bmNvZGVyRVB2CitfX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NW
QnVmZmVyeE5TXzEzVmlkZW9Sb3RhdGlvbkViCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXgg
ZWE3ODllMmM1ZDMyOTUxZWI2ZGY0Y2E1YThmNDczZmY5MTE2YzVlYi4uMWFhYTYwMDAyMTE5YTk3
NjRmNzcwM2U0NTNjNTc3NWZiN2ZlMTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAt
MjY4LDMgKzI2OCwxNSBAQCBfX1pONndlYnJ0YzExZGVjb2RlRnJhbWVFUHZqUEtobQogX19aTjZ3
ZWJydGMxOFJlbW90ZVZpZGVvRGVjb2RlcjE0ZGVjb2RlQ29tcGxldGVFUHZqUDEwX19DVkJ1ZmZl
cmoKIF9fWk42d2VicnRjMjRzZXRWaWRlb0RlY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBW
aWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX2pQS2htRVBGaVMwX1MwX0UKIF9fWk42d2VicnRjMThS
dHBDb2RlY0NhcGFiaWxpdHlDMUV2CitfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRl
ckQxRXYKK19fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgorX19aTjZ3ZWJy
dGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05TXzIyV2ViS2l0
RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUKK19fWk42d2Vi
cnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCitfX1pONndlYnJ0YzI0c2V0Vmlk
ZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlT
MF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQRmlTMF9TMF9F
UEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzRUUKK19fWk42
d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCitfX1pONndlYnJ0YzIyaW5pdGlhbGl6
ZUxvY2FsRW5jb2RlckVQdnR0ampqagorX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktO
U3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV85YWxsb2NhdG9y
SWNFRUVFUktOUzFfM21hcElTN19TN19OUzFfNGxlc3NJUzdfRUVOUzVfSU5TMV80cGFpcklTOF9T
N19FRUVFRUUKK19fWk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18xNFNkcFZpZGVv
Rm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5m
b0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKK19fWk42d2VicnRjMTRTZHBWaWRlb0Zv
cm1hdEQxRXYKK19fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2CitfX1pONndlYnJ0
YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEzVmlkZW9Sb3Rh
dGlvbkViCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyMGEyNTQwYWE4ZThhN2ZkZTc1MjY2OGU4ZWNlMDdjZGRlNmJjYTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdEVuY29kZXIuaApAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyLmgiCisjaW5j
bHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19lbmNvZGVyX2ZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJhcGkvdmlkZW8vZW5jb2RlZF9pbWFnZS5oIgorI2luY2x1ZGUgIm1vZHVsZXMvaW5jbHVkZS9t
b2R1bGVfY29tbW9uX3R5cGVzLmgiCisKK3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3Qg
X19DVkJ1ZmZlcio7CisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBFbmNvZGVkSW1hZ2VD
YWxsYmFjazsKK2NsYXNzIFZpZGVvQ29kZWM7CitjbGFzcyBWaWRlb0ZyYW1lOworc3RydWN0IFNk
cFZpZGVvRm9ybWF0OworY2xhc3MgU2V0dGluZ3M7CisKK2NsYXNzIFZpZGVvRW5jb2RlckZhY3Rv
cnlXaXRoU2ltdWxjYXN0IGZpbmFsIDogcHVibGljIFZpZGVvRW5jb2RlckZhY3RvcnkgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0KHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiYmIGZhY3RvcnkpCisgICAgICAgIDogbV9p
bnRlcm5hbEVuY29kZXJGYWN0b3J5KHN0ZDo6bW92ZShmYWN0b3J5KSkKKyAgICB7CisgICAgfQor
CisgICAgVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q29kZWNJbmZvIFF1ZXJ5VmlkZW9FbmNvZGVyKGNv
bnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJu
YWxFbmNvZGVyRmFjdG9yeS0+UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQorCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gQ3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZp
ZGVvRm9ybWF0JiBmb3JtYXQpIGZpbmFsOworIAorICAgIHN0ZDo6dmVjdG9yPFNkcFZpZGVvRm9y
bWF0PiBHZXRTdXBwb3J0ZWRGb3JtYXRzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnRlcm5h
bEVuY29kZXJGYWN0b3J5LT5HZXRTdXBwb3J0ZWRGb3JtYXRzKCk7IH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRlcm5hbEVu
Y29kZXJGYWN0b3J5OworfTsKKwordXNpbmcgV2ViS2l0VmlkZW9FbmNvZGVyID0gdm9pZCo7Cit1
c2luZyBWaWRlb0VuY29kZXJDcmVhdGVDYWxsYmFjayA9IFdlYktpdFZpZGVvRW5jb2RlcigqKShj
b25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlbGVhc2VD
YWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyKTsKK3VzaW5nIFZpZGVvRW5j
b2RlckluaXRpYWxpemVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBj
b25zdCBWaWRlb0NvZGVjJik7Cit1c2luZyBWaWRlb0VuY29kZXJFbmNvZGVDYWxsYmFjayA9IGlu
dDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCBjb25zdCBWaWRlb0ZyYW1lJiwgYm9vbCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lKTsKK3VzaW5nIFZpZGVvRW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29t
cGxldGVDYWxsYmFjayA9IGludDMyX3QoKikoV2ViS2l0VmlkZW9FbmNvZGVyLCB2b2lkKiBlbmNv
ZGVkSW1hZ2VDYWxsYmFjayk7Cit1c2luZyBWaWRlb0VuY29kZXJTZXRSYXRlc0NhbGxiYWNrID0g
dm9pZCgqKShXZWJLaXRWaWRlb0VuY29kZXIsIGNvbnN0IFZpZGVvRW5jb2Rlcjo6UmF0ZUNvbnRy
b2xQYXJhbWV0ZXJzJik7CisKK3ZvaWQgc2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKFZpZGVvRW5j
b2RlckNyZWF0ZUNhbGxiYWNrLCBWaWRlb0VuY29kZXJSZWxlYXNlQ2FsbGJhY2ssIFZpZGVvRW5j
b2RlckluaXRpYWxpemVDYWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2ssIFZpZGVv
RW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyU2V0UmF0
ZXNDYWxsYmFjayk7CisKK3VzaW5nIFdlYktpdEVuY29kZWRGcmFtZVRpbWluZyA9IEVuY29kZWRJ
bWFnZTo6VGltaW5nOworc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm8geworICAgIHVpbnQz
Ml90IHdpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IGhlaWdodCB7IDAgfTsKKyAgICBpbnQ2NF90
IHRpbWVTdGFtcCB7IDAgfTsKKyAgICBpbnQ2NF90IG50cFRpbWVNUyB7IDAgfTsKKyAgICBpbnQ2
NF90IGNhcHR1cmVUaW1lTVMgeyAwIH07CisgICAgVmlkZW9GcmFtZVR5cGUgZnJhbWVUeXBlIHsg
VmlkZW9GcmFtZVR5cGU6OmtWaWRlb0ZyYW1lRGVsdGEgfTsKKyAgICBWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uIHsga1ZpZGVvUm90YXRpb25fMCB9OworICAgIFZpZGVvQ29udGVudFR5cGUgY29udGVu
dFR5cGUgeyBWaWRlb0NvbnRlbnRUeXBlOjpVTlNQRUNJRklFRCB9OworICAgIGJvb2wgY29tcGxl
dGVGcmFtZSA9IGZhbHNlOworICAgIGludCBxcCB7IC0xIH07CisgICAgV2ViS2l0RW5jb2RlZEZy
YW1lVGltaW5nIHRpbWluZzsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYktpdEVuY29kZWRGcmFtZUluZm8mKTsKK307CisKK2Ns
YXNzIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXIod2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyKiA9IG51bGxwdHIpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYpOworCisg
ICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFs
dWU7IH07CisKK3ByaXZhdGU6CisgICAgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBt
X3ZhbHVlIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlJUUEZyYWdt
ZW50YXRpb25IZWFkZXI+IG1fb3duZWRIZWFkZXI7Cit9OworCitjbGFzcyBSZW1vdGVWaWRlb0Vu
Y29kZXIgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IFJlbW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIpOworICAgIH5S
ZW1vdGVWaWRlb0VuY29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGVD
b21wbGV0ZSh2b2lkKiBjYWxsYmFjaywgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiwgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0
aW9uSGVhZGVyKik7CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBJbml0RW5jb2RlKGNvbnN0IFZp
ZGVvQ29kZWMqLCBjb25zdCBTZXR0aW5ncyYpIGZpbmFsOworICAgIGludDMyX3QgUmVnaXN0ZXJF
bmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKikgZmluYWw7CisgICAg
aW50MzJfdCBSZWxlYXNlKCkgZmluYWw7CisgICAgaW50MzJfdCBFbmNvZGUoY29uc3QgVmlkZW9G
cmFtZSYsIGNvbnN0IHN0ZDo6dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiopIGZpbmFsOworICAgIHZv
aWQgU2V0UmF0ZXMoY29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJikgZmluYWw7CisgICAgRW5j
b2RlckluZm8gR2V0RW5jb2RlckluZm8oKSBjb25zdCBmaW5hbDsKKworICAgIFdlYktpdFZpZGVv
RW5jb2RlciBtX2ludGVybmFsRW5jb2RlcjsKK307CisKK3VzaW5nIExvY2FsRW5jb2RlciA9IHZv
aWQqOwordXNpbmcgTG9jYWxFbmNvZGVyQ2FsbGJhY2sgPSB2b2lkICheKShjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm8mLCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqKTsKK3ZvaWQqIGNyZWF0ZUxvY2Fs
RW5jb2Rlcihjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiwgTG9jYWxFbmNvZGVyQ2FsbGJh
Y2spOwordm9pZCByZWxlYXNlTG9jYWxFbmNvZGVyKExvY2FsRW5jb2Rlcik7Cit2b2lkIGluaXRp
YWxpemVMb2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3Qg
aGVpZ2h0LCB1bnNpZ25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4Qml0cmF0
ZSwgdW5zaWduZWQgaW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Cit2b2lk
IGVuY29kZUxvY2FsRW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiwg
aW50NjRfdCB0aW1lU3RhbXAsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1l
UmVxdWlyZWQpOwordm9pZCBzZXRMb2NhbEVuY29kZXJSYXRlcyhMb2NhbEVuY29kZXIsIHVpbnQz
Ml90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+Citib29sIFdlYktpdEVuY29kZWRGcmFtZUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiBpbmZvKQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaW5mby53aWR0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGluZm8uaGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby50aW1lU3RhbXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm50cFRpbWVNUykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uY2FwdHVyZVRpbWVNUykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmZvLmZyYW1lVHlw
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShp
bmZvLnJvdGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGluZm8uY29udGVudFR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmNvbXBsZXRlRnJhbWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnFwKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5mbGFncykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1p
bmcuZW5jb2RlX3N0YXJ0X21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5lbmNvZGVfZmluaXNoX21zKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5wYWNrZXRp
emF0aW9uX2ZpbmlzaF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby50aW1pbmcucGFjZXJfZXhpdF9tcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcubmV0d29ya190aW1l
c3RhbXBfbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGluZm8udGltaW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucmVjZWl2ZV9zdGFy
dF9tcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHdpZHRoOworICAg
IGVuY29kZXIgPDwgaGVpZ2h0OworICAgIGVuY29kZXIgPDwgdGltZVN0YW1wOworICAgIGVuY29k
ZXIgPDwgbnRwVGltZU1TOworICAgIGVuY29kZXIgPDwgY2FwdHVyZVRpbWVNUzsKKyAgICBlbmNv
ZGVyLmVuY29kZUVudW0oZnJhbWVUeXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocm90YXRp
b24pOworICAgIGVuY29kZXIuZW5jb2RlRW51bShjb250ZW50VHlwZSk7CisgICAgZW5jb2RlciA8
PCBjb21wbGV0ZUZyYW1lOworICAgIGVuY29kZXIgPDwgcXA7CisKKyAgICBlbmNvZGVyIDw8IHRp
bWluZy5mbGFnczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5lbmNvZGVfc3RhcnRfbXM7CisgICAg
ZW5jb2RlciA8PCB0aW1pbmcuZW5jb2RlX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWlu
Zy5wYWNrZXRpemF0aW9uX2ZpbmlzaF9tczsKKyAgICBlbmNvZGVyIDw8IHRpbWluZy5wYWNlcl9l
eGl0X21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLm5ldHdvcmtfdGltZXN0YW1wX21zOworICAg
IGVuY29kZXIgPDwgdGltaW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tczsKKyAgICBlbmNvZGVyIDw8
IHRpbWluZy5yZWNlaXZlX3N0YXJ0X21zOworICAgIGVuY29kZXIgPDwgdGltaW5nLnJlY2VpdmVf
ZmluaXNoX21zOworfQorCitpbmxpbmUgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6V2Vi
S2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcih3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIq
IGhlYWRlcikKKyAgICA6IG1fdmFsdWUoaGVhZGVyKQoreworfQorCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8ICEhbV92YWx1ZTsKKyAgICBpZiAo
IW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3ZhbHVlLT5TaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3ZhbHVlLT5TaXplKCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3ZhbHVlLT5PZmZzZXQoaSkpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3ZhbHVlLT5MZW5ndGgoaSkpOworICAgIH0KK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXImIGhlYWRlcikK
K3sKKyAgICBib29sIGlzTnVsbDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoaXNOdWxsKSB7CisgICAgICAgIGhl
YWRlci5tX3ZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgdW5zaWduZWQgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBoZWFkZXIubV9vd25lZEhlYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8d2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyPigpOworICAgIGhlYWRlci5tX3Zh
bHVlID0gaGVhZGVyLm1fb3duZWRIZWFkZXIuZ2V0KCk7CisKKyAgICBoZWFkZXIubV92YWx1ZS0+
VmVyaWZ5QW5kQWxsb2NhdGVGcmFnbWVudGF0aW9uSGVhZGVyKHNpemUpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaGVhZGVyLm1fdmFsdWUtPlNpemUoKTsgKytpKSB7CisgICAgICAgIHVu
c2lnbmVkIG9mZnNldCwgbGVuZ3RoOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9mZnNl
dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBoZWFkZXIu
bV92YWx1ZS0+ZnJhZ21lbnRhdGlvbk9mZnNldFtpXSA9IG9mZnNldDsKKyAgICAgICAgaGVhZGVy
Lm1fdmFsdWUtPmZyYWdtZW50YXRpb25MZW5ndGhbaV0gPSBsZW5ndGg7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNzYxNmEwMTc2OWZiNTY0ZjBiODNlM2RhZDQyNmIyMDZiNzY2MDUy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tCkBAIC0wLDAgKzEsMjE2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgIldlYktpdEVuY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdFV0
aWxpdGllcy5oIgorI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgorI2luY2x1ZGUg
ImNvbXBvbmVudHMvdmlkZW9fY29kZWMvUlRDQ29kZWNTcGVjaWZpY0luZm9IMjY0K1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy91dGlsaXR5L3NpbXVsY2FzdF91dGls
aXR5LmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ0VuY29kZWRJ
bWFnZStQcml2YXRlLmgiCisjaW5jbHVkZSAic2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JU
Q1J0cEZyYWdtZW50YXRpb25IZWFkZXIrUHJpdmF0ZS5oIgorI2luY2x1ZGUgInNkay9vYmpjL2Fw
aS9wZWVyY29ubmVjdGlvbi9SVENWaWRlb0NvZGVjSW5mbytQcml2YXRlLmgiCisjaW5jbHVkZSAi
c2RrL29iamMvYXBpL3BlZXJjb25uZWN0aW9uL1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzK1ByaXZh
dGUuaCIKKyNpbmNsdWRlICJzZGsvb2JqYy9jb21wb25lbnRzL3ZpZGVvX2NvZGVjL1JUQ1ZpZGVv
RW5jb2RlckgyNjQuaCIKKyNpbmNsdWRlICJzZGsvb2JqYy9uYXRpdmUvc3JjL29iamNfZnJhbWVf
YnVmZmVyLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9F
bmNvZGVyPiBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdDo6Q3JlYXRlVmlkZW9FbmNv
ZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RW5jb2RlclNpbXVsY2FzdFByb3h5PihtX2ludGVybmFsRW5jb2RlckZhY3Rvcnku
Z2V0KCksIGZvcm1hdCk7Cit9CisKK3N0cnVjdCBWaWRlb0VuY29kZXJDYWxsYmFja3MgeworICAg
IFZpZGVvRW5jb2RlckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNrOworICAgIFZpZGVvRW5j
b2RlclJlbGVhc2VDYWxsYmFjayByZWxlYXNlQ2FsbGJhY2s7CisgICAgVmlkZW9FbmNvZGVySW5p
dGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJFbmNv
ZGVDYWxsYmFjayBlbmNvZGVDYWxsYmFjazsKKyAgICBWaWRlb0VuY29kZXJSZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2sgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrOworICAgIFZp
ZGVvRW5jb2RlclNldFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFjazsKK307CisKK3N0YXRp
YyBWaWRlb0VuY29kZXJDYWxsYmFja3MmIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpIHsKKyAgICBz
dGF0aWMgVmlkZW9FbmNvZGVyQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICByZXR1cm4gY2FsbGJh
Y2tzOworfQorCit2b2lkIHNldFZpZGVvRW5jb2RlckNhbGxiYWNrcyhWaWRlb0VuY29kZXJDcmVh
dGVDYWxsYmFjayBjcmVhdGVDYWxsYmFjaywgVmlkZW9FbmNvZGVyUmVsZWFzZUNhbGxiYWNrIHJl
bGVhc2VDYWxsYmFjaywgVmlkZW9FbmNvZGVySW5pdGlhbGl6ZUNhbGxiYWNrIGluaXRpYWxpemVD
YWxsYmFjaywgVmlkZW9FbmNvZGVyRW5jb2RlQ2FsbGJhY2sgZW5jb2RlQ2FsbGJhY2ssIFZpZGVv
RW5jb2RlclJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayByZWdpc3RlckVuY29kZUNvbXBs
ZXRlQ2FsbGJhY2ssIFZpZGVvRW5jb2RlclNldFJhdGVzQ2FsbGJhY2sgc2V0UmF0ZXNDYWxsYmFj
aykKK3sKKyAgICBhdXRvJiBjYWxsYmFja3MgPSB2aWRlb0VuY29kZXJDYWxsYmFja3MoKTsKKyAg
ICBjYWxsYmFja3MuY3JlYXRlQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFjazsKKyAgICBjYWxsYmFj
a3MucmVsZWFzZUNhbGxiYWNrID0gcmVsZWFzZUNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5pbml0
aWFsaXplQ2FsbGJhY2sgPSBpbml0aWFsaXplQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLmVuY29k
ZUNhbGxiYWNrID0gZW5jb2RlQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLnJlZ2lzdGVyRW5jb2Rl
Q29tcGxldGVDYWxsYmFjayA9IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjazsKKyAgICBj
YWxsYmFja3Muc2V0UmF0ZXNDYWxsYmFjayA9IHNldFJhdGVzQ2FsbGJhY2s7Cit9CisKK1JlbW90
ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKFdlYktpdFZpZGVvRW5jb2RlciBpbnRl
cm5hbEVuY29kZXIpCisgICAgOiBtX2ludGVybmFsRW5jb2RlcihpbnRlcm5hbEVuY29kZXIpCit7
Cit9CisKK2ludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVv
Q29kZWMqIGNvZGVjLCBjb25zdCBTZXR0aW5ncyYpCit7CisgICAgaWYgKFNpbXVsY2FzdFV0aWxp
dHk6Ok51bWJlck9mU2ltdWxjYXN0U3RyZWFtcygqY29kZWMpID4gMSkKKyAgICAgICAgcmV0dXJu
IFdFQlJUQ19WSURFT19DT0RFQ19FUlJfU0lNVUxDQVNUX1BBUkFNRVRFUlNfTk9UX1NVUFBPUlRF
RDsKKworICAgIHJldHVybiB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5pbml0aWFsaXplQ2FsbGJh
Y2sobV9pbnRlcm5hbEVuY29kZXIsICpjb2RlYyk7Cit9CisKK2ludDMyX3QgUmVtb3RlVmlkZW9F
bmNvZGVyOjpSZWxlYXNlKCkKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCku
cmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyKTsKK30KKworaW50MzJfdCBSZW1vdGVW
aWRlb0VuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjp2
ZWN0b3I8VmlkZW9GcmFtZVR5cGU+KiBmcmFtZVR5cGVzKQoreworICAgIGJvb2wgc2hvdWxkRW5j
b2RlS2V5RnJhbWUgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lVHlw
ZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChmcmFtZVR5cGVzLT5hdChpKSA9PSBWaWRl
b0ZyYW1lVHlwZTo6a1ZpZGVvRnJhbWVLZXkpIHsKKyAgICAgICAgICAgIHNob3VsZEVuY29kZUtl
eUZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpLmVuY29kZUNhbGxiYWNrKG1faW50ZXJu
YWxFbmNvZGVyLCBmcmFtZSwgc2hvdWxkRW5jb2RlS2V5RnJhbWUpOworfQorCit2b2lkIFJlbW90
ZVZpZGVvRW5jb2Rlcjo6U2V0UmF0ZXMoY29uc3QgUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzJiByYXRl
cykKK3sKKyAgICB2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5zZXRSYXRlc0NhbGxiYWNrKG1faW50
ZXJuYWxFbmNvZGVyLCByYXRlcyk7Cit9CisKK1JlbW90ZVZpZGVvRW5jb2Rlcjo6RW5jb2Rlcklu
Zm8gUmVtb3RlVmlkZW9FbmNvZGVyOjpHZXRFbmNvZGVySW5mbygpIGNvbnN0Cit7CisgICAgRW5j
b2RlckluZm8gaW5mbzsKKyAgICBpbmZvLnN1cHBvcnRzX25hdGl2ZV9oYW5kbGUgPSB0cnVlOwor
ICAgIGluZm8uaW1wbGVtZW50YXRpb25fbmFtZSA9ICJSZW1vdGVWaWRlb1Rvb2xCb3giOworICAg
IGluZm8uaXNfaGFyZHdhcmVfYWNjZWxlcmF0ZWQgPSB0cnVlOworICAgIGluZm8uaGFzX2ludGVy
bmFsX3NvdXJjZSA9IGZhbHNlOworCisgICAgLy8gVmFsdWVzIHRha2VuIGZyb20gUlRDVmlkZW9F
bmNvZGVySDI2NC5tbQorICAgIGNvbnN0IGludCBrTG93SDI2NFFwVGhyZXNob2xkID0gMjg7Cisg
ICAgY29uc3QgaW50IGtIaWdoSDI2NFFwVGhyZXNob2xkID0gMzk7CisgICAgaW5mby5zY2FsaW5n
X3NldHRpbmdzID0gU2NhbGluZ1NldHRpbmdzKGtMb3dIMjY0UXBUaHJlc2hvbGQsIGtIaWdoSDI2
NFFwVGhyZXNob2xkKTsKKworICAgIHJldHVybiBpbmZvOworfQorCitpbnQzMl90IFJlbW90ZVZp
ZGVvRW5jb2Rlcjo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKEVuY29kZWRJbWFnZUNh
bGxiYWNrKiBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCku
cmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyLCBjYWxsYmFj
ayk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9FbmNvZGVyOjplbmNvZGVDb21wbGV0ZSh2b2lkKiBj
YWxsYmFjaywgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJiBpbmZvLCBjb25zdCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIq
IGhlYWRlcikKK3sKKyAgICB3ZWJydGM6OkVuY29kZWRJbWFnZSBlbmNvZGVkSW1hZ2UoYnVmZmVy
LCBsZW5ndGgsIGxlbmd0aCk7CisgICAgZW5jb2RlZEltYWdlLl9lbmNvZGVkV2lkdGggPSBpbmZv
LndpZHRoOworICAgIGVuY29kZWRJbWFnZS5fZW5jb2RlZEhlaWdodCA9IGluZm8uaGVpZ2h0Owor
ICAgIGVuY29kZWRJbWFnZS5TZXRUaW1lc3RhbXAoaW5mby50aW1lU3RhbXApOworICAgIGVuY29k
ZWRJbWFnZS5jYXB0dXJlX3RpbWVfbXNfID0gaW5mby5jYXB0dXJlVGltZU1TOworICAgIGVuY29k
ZWRJbWFnZS5udHBfdGltZV9tc18gPSBpbmZvLm50cFRpbWVNUzsKKyAgICBlbmNvZGVkSW1hZ2Uu
dGltaW5nXyA9IGluZm8udGltaW5nOworICAgIGVuY29kZWRJbWFnZS5fZnJhbWVUeXBlID0gaW5m
by5mcmFtZVR5cGU7CisgICAgZW5jb2RlZEltYWdlLnJvdGF0aW9uXyA9IGluZm8ucm90YXRpb247
CisgICAgZW5jb2RlZEltYWdlLl9jb21wbGV0ZUZyYW1lID0gaW5mby5jb21wbGV0ZUZyYW1lOwor
ICAgIGVuY29kZWRJbWFnZS5xcF8gPSBpbmZvLnFwOworICAgIGVuY29kZWRJbWFnZS5jb250ZW50
X3R5cGVfID0gaW5mby5jb250ZW50VHlwZTsKKworICAgIENvZGVjU3BlY2lmaWNJbmZvIGNvZGVj
U3BlY2lmaWNJbmZvOworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjVHlwZSA9IHdlYnJ0Yzo6
a1ZpZGVvQ29kZWNIMjY0OworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjU3BlY2lmaWMuSDI2
NC5wYWNrZXRpemF0aW9uX21vZGUgPSBIMjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbkludGVybGVh
dmVkOworCisgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjaykt
Pk9uRW5jb2RlZEltYWdlKGVuY29kZWRJbWFnZSwgJmNvZGVjU3BlY2lmaWNJbmZvLCBoZWFkZXIp
OworfQorCit2b2lkKiBjcmVhdGVMb2NhbEVuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zv
cm1hdCYgZm9ybWF0LCBMb2NhbEVuY29kZXJDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBhdXRv
ICpjb2RlY0luZm8gPSBbW1JUQ1ZpZGVvQ29kZWNJbmZvIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVNk
cFZpZGVvRm9ybWF0OiBmb3JtYXRdOworICAgIGF1dG8gKmVuY29kZXIgPSBbW1JUQ1ZpZGVvRW5j
b2RlckgyNjQgYWxsb2NdIGluaXRXaXRoQ29kZWNJbmZvOmNvZGVjSW5mb107CisgICAgCisgICAg
W2VuY29kZXIgc2V0Q2FsbGJhY2s6XkJPT0woUlRDRW5jb2RlZEltYWdlICpfTm9ubnVsbCBmcmFt
ZSwgaWQ8UlRDQ29kZWNTcGVjaWZpY0luZm8+IF9Ob25udWxsIGNvZGVjU3BlY2lmaWNJbmZvLCAg
UlRDUnRwRnJhZ21lbnRhdGlvbkhlYWRlciAqX05vbm51bGwgaGVhZGVyKSB7CisgICAgICAgIEVu
Y29kZWRJbWFnZSBlbmNvZGVkSW1hZ2UgPSBbZnJhbWUgbmF0aXZlRW5jb2RlZEltYWdlXTsKKwor
ICAgICAgICBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvIGluZm87CisgICAgICAgIGluZm8ud2lkdGgg
PSBlbmNvZGVkSW1hZ2UuX2VuY29kZWRXaWR0aDsKKyAgICAgICAgaW5mby5oZWlnaHQgPSBlbmNv
ZGVkSW1hZ2UuX2VuY29kZWRIZWlnaHQ7CisgICAgICAgIGluZm8udGltZVN0YW1wID0gZW5jb2Rl
ZEltYWdlLlRpbWVzdGFtcCgpOworICAgICAgICBpbmZvLm50cFRpbWVNUyA9IGVuY29kZWRJbWFn
ZS5udHBfdGltZV9tc187CisgICAgICAgIGluZm8uY2FwdHVyZVRpbWVNUyA9IGVuY29kZWRJbWFn
ZS5jYXB0dXJlX3RpbWVfbXNfOworICAgICAgICBpbmZvLmZyYW1lVHlwZSA9IGVuY29kZWRJbWFn
ZS5fZnJhbWVUeXBlOworICAgICAgICBpbmZvLnJvdGF0aW9uID0gZW5jb2RlZEltYWdlLnJvdGF0
aW9uXzsKKyAgICAgICAgaW5mby5jb250ZW50VHlwZSA9IGVuY29kZWRJbWFnZS5jb250ZW50X3R5
cGVfOworICAgICAgICBpbmZvLmNvbXBsZXRlRnJhbWUgPSBlbmNvZGVkSW1hZ2UuX2NvbXBsZXRl
RnJhbWU7CisgICAgICAgIGluZm8ucXAgPSBlbmNvZGVkSW1hZ2UucXBfOworICAgICAgICBpbmZv
LnRpbWluZyA9IGVuY29kZWRJbWFnZS50aW1pbmdfOworCisgICAgICAgIGNhbGxiYWNrKGVuY29k
ZWRJbWFnZS5kYXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCksIGluZm8sIFtoZWFkZXIgY3JlYXRl
TmF0aXZlRnJhZ21lbnRhdGlvbkhlYWRlcl0uZ2V0KCkpOworICAgICAgICByZXR1cm4gWUVTOwor
ICAgIH1dOworCisgICAgcmV0dXJuIChfX2JyaWRnZV9yZXRhaW5lZCB2b2lkKillbmNvZGVyOwor
Cit9CisKK3ZvaWQgcmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNvZGVy
KQoreworICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2VfdHJhbnNmZXIgUlRDVmlkZW9FbmNv
ZGVySDI2NCAqKShsb2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIHJlbGVhc2VFbmNvZGVyXTsK
K30KKwordm9pZCBpbml0aWFsaXplTG9jYWxFbmNvZGVyKExvY2FsRW5jb2RlciBsb2NhbEVuY29k
ZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIGludCBzdGFydEJp
dHJhdGUsIHVuc2lnbmVkIGludCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWluQml0cmF0ZSwg
dWludDMyX3QgbWF4RnJhbWVyYXRlKQoreworICAgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBjb2RlY1Nl
dHRpbmdzOworICAgIGNvZGVjU2V0dGluZ3Mud2lkdGggPSB3aWR0aDsKKyAgICBjb2RlY1NldHRp
bmdzLmhlaWdodCA9IGhlaWdodDsKKyAgICBjb2RlY1NldHRpbmdzLnN0YXJ0Qml0cmF0ZSA9IHN0
YXJ0Qml0cmF0ZTsKKyAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBtYXhCaXRyYXRlOwor
ICAgIGNvZGVjU2V0dGluZ3MubWluQml0cmF0ZSA9IG1pbkJpdHJhdGU7CisgICAgY29kZWNTZXR0
aW5ncy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CisKKyAgICBhdXRvICplbmNvZGVyID0g
KF9fYnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVyKTsKKyAgICBbZW5j
b2RlciBzdGFydEVuY29kZVdpdGhTZXR0aW5nczpbW1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIGFs
bG9jXSBpbml0V2l0aE5hdGl2ZVZpZGVvQ29kZWM6JmNvZGVjU2V0dGluZ3NdIG51bWJlck9mQ29y
ZXM6MV07Cit9CisKK3ZvaWQgZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyIGxv
Y2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgaW50NjRfdCB0aW1lU3Rh
bXAsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWly
ZWQpCit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNOdW1iZXIgKj4gKnJ0Y0ZyYW1lVHlwZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGlmIChpc0tleWZyYW1lUmVxdWlyZWQpCisgICAg
ICAgIFtydGNGcmFtZVR5cGVzIGFkZE9iamVjdDpAKFJUQ0ZyYW1lVHlwZShSVENGcmFtZVR5cGVW
aWRlb0ZyYW1lS2V5KSldOworCisgICAgYXV0byAqdmlkZW9GcmFtZSA9IFtbUlRDVmlkZW9GcmFt
ZSBhbGxvY10gaW5pdFdpdGhCdWZmZXI6VG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcihwaXhlbEJ1ZmZl
clRvRnJhbWUocGl4ZWxCdWZmZXIpKSByb3RhdGlvbjpSVENWaWRlb1JvdGF0aW9uKHJvdGF0aW9u
KSB0aW1lU3RhbXBOczp0aW1lU3RhbXBdOworICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2Ug
UlRDVmlkZW9FbmNvZGVySDI2NCAqKShsb2NhbEVuY29kZXIpOworICAgIFtlbmNvZGVyIGVuY29k
ZTp2aWRlb0ZyYW1lIGNvZGVjU3BlY2lmaWNJbmZvOm5pbCBmcmFtZVR5cGVzOnJ0Y0ZyYW1lVHlw
ZXNdOworfQorCit2b2lkIHNldExvY2FsRW5jb2RlclJhdGVzKExvY2FsRW5jb2RlciBsb2NhbEVu
Y29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKK3sKKyAgICBhdXRv
ICplbmNvZGVyID0gKF9fYnJpZGdlIFJUQ1ZpZGVvRW5jb2RlckgyNjQgKikobG9jYWxFbmNvZGVy
KTsKKyAgICBbZW5jb2RlciBzZXRCaXRyYXRlOmJpdFJhdGUgZnJhbWVyYXRlOmZyYW1lUmF0ZV07
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4
IDZhNThiYTE3M2E2MTMyMzkxYWExNzgyMmQ0NmJjMDc5MzQ1NDFkNDIuLmFiNzc5NDJlNjk0NmJk
ZTMwMDI5OTBhM2EyNmExMDAxZWY2MzA1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRVdGlsaXRpZXMuaApAQCAtNTIsMjMgKzUyLDYgQEAgYm9vbCBpc0gyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkKCk7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNv
bnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6
ZV90LCBzaXplX3QpPiYpOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCi1jbGFzcyBWaWRl
b0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdCBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJG
YWN0b3J5IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNp
bXVsY2FzdChzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4mJiBmYWN0b3J5KQot
ICAgICAgICA6IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeSkpCi0g
ICAgewotICAgIH0KLQotICAgIFZpZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBRdWVyeVZp
ZGVvRW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2ludGVybmFsRW5jb2RlckZhY3RvcnktPlF1ZXJ5VmlkZW9FbmNvZGVyKGZvcm1hdCk7
IH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rl
cihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KSBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEVuY29kZXJTaW11bGNhc3RQcm94eT4obV9pbnRlcm5hbEVuY29kZXJGYWN0b3J5Lmdl
dCgpLCBmb3JtYXQpOyB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3Vw
cG9ydGVkRm9ybWF0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxFbmNvZGVyRmFj
dG9yeS0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IG1faW50ZXJuYWxFbmNvZGVyRmFjdG9y
eTsKLX07Ci0KIHVzaW5nIFdlYktpdFZpZGVvRGVjb2RlciA9IHZvaWQqOwogdXNpbmcgVmlkZW9E
ZWNvZGVyQ3JlYXRlQ2FsbGJhY2sgPSBXZWJLaXRWaWRlb0RlY29kZXIoKikoY29uc3QgU2RwVmlk
ZW9Gb3JtYXQmIGZvcm1hdCk7CiB1c2luZyBWaWRlb0RlY29kZXJSZWxlYXNlQ2FsbGJhY2sgPSBp
bnQzMl90KCopKFdlYktpdFZpZGVvRGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4IDEyMWVkYTk4ZDhmZmViMDZhOWYzMGRlMzg4MTBkNzA1
ZDQwNjhiMGQuLjE0MDJjMmJmM2E0MTcwM2FjYjhmM2QwZjFmMGE0M2E3OWFhM2NiNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZW5jb2Rlcl9mYWN0b3J5
LmgiCiAjaW5jbHVkZSAiVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuaCIKKyNpbmNsdWRlICJXZWJL
aXRFbmNvZGVyLmgiCiAKICNpbmNsdWRlIDxtdXRleD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDE4NDAxZGE1Mzc0NWQyOTQxODRjOGY5YTYwOWRmZWY5OTNiMWZlMzAuLjBl
OGEwNDU5NTA2ZDVlZTRiNTY2YmE0MWU0ODMyOTlmMGVkMTE1NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExMjcsNiArMTEyNyw4IEBACiAJCTQxNTQ0OUI2MjFDQUM0Q0Uw
MDFDMEE1NSAvKiB1dGlsLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTU0NDlCNTIxQ0FDNENFMDAxQzBBNTUgLyogdXRpbC5jICovOyB9OwogCQk0MTU0
NDlCODIxQ0FDNEVDMDAxQzBBNTUgLyogcDI1Ni5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NDQ5QjcyMUNBQzRFQzAwMUMwQTU1IC8qIHAyNTYuYyAq
LzsgfTsKIAkJNDE1NDQ5QkIyMUNBQzVCNDAwMUMwQTU1IC8qIGVjZGhfZXh0cmEuYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTQ0OUJBMjFDQUM1QjMw
MDFDMEE1NSAvKiBlY2RoX2V4dHJhLmMgKi87IH07CisJCTQxNTg2NDk4MjNCRTA1RTkwMEEwQTYx
RSAvKiBXZWJLaXRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICov
OyB9OworCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTg2NDk3MjNCRTA1
RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tICovOyB9OwogCQk0MTVGMUZBNjIxMjcyRkJB
MDAwNjRDQkYgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEwOEJFNDIxMjcyRjg1MDAxRDVE
N0IgLyogYWRhcHRpdmVfZGlnaXRhbF9nYWluX2FwcGxpZXIuY2MgKi87IH07CiAJCTQxNUYxRkE3
MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9kaWdpdGFsX2dhaW5fYXBwbGllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMDhCREIyMTI3MkY4
NDAwMUQ1RDdCIC8qIGFkYXB0aXZlX2RpZ2l0YWxfZ2Fpbl9hcHBsaWVyLmggKi87IH07CiAJCTQx
NUYxRkE4MjEyNzJGQkEwMDA2NENCRiAvKiBhZGFwdGl2ZV9tb2RlX2xldmVsX2VzdGltYXRvcl9h
Z2MuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEw
OEJFOTIxMjcyRjg2MDAxRDVEN0IgLyogYWRhcHRpdmVfbW9kZV9sZXZlbF9lc3RpbWF0b3JfYWdj
LmNjICovOyB9OwpAQCAtNTA0Nyw2ICs1MDQ5LDggQEAKIAkJNDE1NjY3QTEyMTVCRTc3NTAwMzIy
OTZBIC8qIGRiZ2ZtdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkYmdmbXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE1NjY3QTIyMTVCRTc3NTAwMzIyOTZBIC8qIGJjLWFsaWduLmMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuYzsgcGF0aCA9ICJiYy1hbGlnbi5jIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE1NjY3QTMyMTVCRTc3NjAwMzIyOTZBIC8qIHN5bXJlYy5jICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBzeW1y
ZWMuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1ODY0OTYyM0JFMDVFODAwQTBB
NjFFIC8qIFdlYktpdEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViS2l0RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4NjQ5NzIz
QkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdEVuY29kZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNUYxRkM1MjEyNzMwOEUwMDA2NENCRiAvKiBhdWRpb19zdGF0ZS5jYyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGF1ZGlvX3N0YXRlLmNjOyBwYXRoID0g
Y2FsbC9hdWRpb19zdGF0ZS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RjFG
RDAyMTI3MzEzRDAwMDY0Q0JGIC8qIHJlY2VpdmVfdGltZV9jYWxjdWxhdG9yLmNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gcmVjZWl2ZV90aW1lX2NhbGN1bGF0b3IuY2M7IHBhdGggPSBjYWxsL3JlY2Vp
dmVfdGltZV9jYWxjdWxhdG9yLmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTVG
MUZEMTIxMjczMTNFMDAwNjRDQkYgLyogcnRwX3BheWxvYWRfcGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IHJ0cF9wYXlsb2FkX3BhcmFtcy5oOyBwYXRoID0gY2FsbC9ydHBfcGF5bG9hZF9wYXJhbXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MjAsNiArOTUyNCw4IEBACiAJCQkJ
NDFFQ0VBRjkyMDY0NjY2MzAwOUQ1MTQxIC8qIEVuY29kZXJVdGlsaXRpZXMuaCAqLywKIAkJCQk0
MUVDRUFGQTIwNjQ2NjYzMDA5RDUxNDEgLyogVmlkZW9Qcm9jZXNzaW5nU29mdExpbmsuY3BwICov
LAogCQkJCTQxRUNFQUZCMjA2NDY2NjQwMDlENTE0MSAvKiBWaWRlb1Byb2Nlc3NpbmdTb2Z0TGlu
ay5oICovLAorCQkJCTQxNTg2NDk2MjNCRTA1RTgwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLmgg
Ki8sCisJCQkJNDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIubW0gKi8s
CiAJCQkJNDFFQ0VBQkIyMDY0MDNDMTAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5oICovLAog
CQkJCTQxRUNFQUJEMjA2NDA0OTgwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gKi8sCiAJ
CQkpOwpAQCAtMTU2NTgsNiArMTU2NjQsNyBAQAogCQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFD
OCAvKiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1
MUM4IC8qIHdhdl9oZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIw
MDI4QTYxNSAvKiB3ZWFrX3B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1ODY0OTgyM0JFMDVF
OTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUJD
MjA2NDAzQzIwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDREQ4Q0FCMUU0M0M2RjcwMDYyMUU5MiAvKiB3ZWJydGNfY25nLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTQ1RTQ5MTFFRjg4RUY3MDBGQ0Y2RTYgLyogd2VicnRjX2xpYnl1di5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xNjI0MCwxMCArMTYyNDcsMTAgQEAKIAkJCQk0MUJFNzFDQTIxNUM0NjQ4MDBB
N0IxOTYgLyogaGFtdC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxQ0IyMTVDNDY0ODAwQTdC
MTk2IC8qIGluc24uYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdCMjE1QzQ1OTAwMEE3QjE5
NiAvKiBpbnRudW0uYyBpbiBTb3VyY2VzICovLAotCQkJCTQxN0MwMzczMjNCMjEwQzQwMERFNUQ4
QiAvKiBtYWluX25vb3AuYyBpbiBTb3VyY2VzICovLAogCQkJCTQxQkU3MTdDMjE1QzQ1OTAwMEE3
QjE5NiAvKiBpbnR0cmVlLmMgaW4gU291cmNlcyAqLywKIAkJCQk0MUJFNzFDQzIxNUM0NjQ4MDBB
N0IxOTYgLyogbGluZW1hcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjMyMTVDNDhDNzAw
ODJCRkQyIC8qIG1hY2hvLW9iamZtdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDE3QzAzNzMyM0Iy
MTBDNDAwREU1RDhCIC8qIG1haW5fbm9vcC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0Qy
MTVDNDU5MDAwQTdCMTk2IC8qIG1kNS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFCRTcxN0UyMTVD
NDU5MDAwQTdCMTk2IC8qIG1lcmdlc29ydC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5RUExRjky
MTVDNEE5RTAwODJCRkQyIC8qIG1vZHVsZS5jIGluIFNvdXJjZXMgKi8sCkBAIC0xNzk3NCw2ICsx
Nzk4MSw3IEBACiAJCQkJNUM0QjRDODAxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUM0QjRDODMxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIu
Y2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMxQzBGOTIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19w
dHIuY2MgaW4gU291cmNlcyAqLywKKwkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2Vi
S2l0RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0
MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOENBQTFFNDND
NkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzY3
MUU0MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCAyMmUwZGZmMGRlNmE4ZDM4YjBlZjA4YzRiOGExMGY5MTI0
MWYzMTliLi4yNGY1YzA1OGZhY2I4MDZlOTc4OTQ3YjQwMmE4OTc5MjQ1Nzc4NGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU1OCw2ICs1NTgsNyBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tCiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCitwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDA3OWU5NDY5YjExZmJiZjE2N2ExNzAyMmY1OTk5NzQwY2Y2NjFiNTguLjJmOTNiOGI0NzQwM2Q4
YjZjMTZjNGMwZDg0YWYwYmNkMTE4ZGNhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzksNiArMTA3OSw3IEBACiAJCTQx
NTc0NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDQxRTM4Njk5RTAwRTkx
NEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTU3RUJGOTFFM0FCMDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbi5oICovOyB9OworCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyog
UmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFEMTkzOEYyMTUyQzU2MTAwNkYxNENBIC8qIFJlYWx0aW1lVmlkZW9V
dGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QzdFMTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
ICovOyB9OwogCQk0MTYxNEE3OTFEQTY0MjQxMDA0QUQwNkYgLyogSFRUUEhlYWRlclZhbHVlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MTRBNzcx
REE2NDIzNjAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCAqLzsgfTsKIAkJNDE2MUUyRDUx
RkU0OERDNTAwRUMyRTk2IC8qIEZldGNoTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ3RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hM
b2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNzM3Miw2ICs3MzczLDcgQEAKIAkJNDE1NzQ3NDQxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldl
YlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q1Byb3ZpZGVyLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE1N0VCRjkxRTNBQjA2ODAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU4
NjQ5RjIzQkY3QjkzMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlYWx0aW1lVmlkZW9VdGlsaXRpZXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUEzQjczMjEzOEUyNjQwMDFCNEJB
QSAvKiBMaWJXZWJSVENPYnNlcnZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGliV2ViUlRDT2JzZXJ2ZXJzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDT2JzZXJ2
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUNEQUY2MUU2Q0UwRDMwMDRG
MTFFRSAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1RTFCQjMyMTUwMTA4MDAwMjJEQTk2IC8qIFJUQ1J0cENv
bnRyaWJ1dGluZ1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENS
dHBDb250cmlidXRpbmdTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2
MjYzLDYgKzE2MjY1LDcgQEAKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFCODMgLyogUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaCAqLywKIAkJCQk0MTkyNDI0NzIxMjdCN0NDMDA2
MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gKi8sCiAJCQkJNDFE
MTkzOEYyMTUyQzU2MTAwNkYxNENBIC8qIFJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCAqLywKKwkJ
CQk0MTU4NjQ5RjIzQkY3QjkzMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSAq
LywKIAkJCQkwNzBBOUY1RTFGRkVDQzcwMDAzREY2NDkgLyogU2NyZWVuRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWMuaCAqLywKIAkJCQkwNzBBOUY2MDFGRkVDQzcxMDAzREY2NDkgLyogU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMubW0gKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5
IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0zMTg5NSw2ICszMTg5
OCw3IEBACiAJCQkJNDExMDNBQUMxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI4ODBEMTIwMTBGMUY2MDA3
MUIyNTUgLyogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8q
IFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIy
NkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTU4MTc1RDQx
NEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
aW5kZXggOWZlODI0YjE4NzM4ZWEwMDc4ODRmNDI2NWExZDU5YTVlNGE1MjE4MS4uYWE2NDQ2ZDI4
MzE3MmEzZDgyZWRmNWYzYzBmNGUzMWU0MTZiYTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmJiBzYW1wbAogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9S
b3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShDVlBpeGVsQnVm
ZmVyUmVmIGltYWdlQnVmZmVyLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lKQorc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENW
UGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUs
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIGF1dG8gc3VyZmFj
ZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2VCdWZmZXIpOwogICAgIGlmICghc3Vy
ZmFjZSkgewpAQCAtNjksNyArNjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1w
bGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmUsIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNw
YWNlUmVmKCksIFdURk1vdmUocHJlc2VudGF0aW9uVGltZSksIHJvdGF0aW9uLCBmYWxzZSkpOwog
fQogCiBSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1
cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCmlu
ZGV4IGJkMjU1Zjc5NDAwNDI3MWUzYWI0ZWIyNjAyN2U2NGE3NGE5Mjg0ODguLjcyZWJjNjliMzNl
MzdmOTg4YjViNDViMzRkMjg3ZTFiZmJlODhjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAtNDksMTMgKzQ5LDE0
IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShNZWRpYVNhbXBs
ZSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZp
ZGVvU2FtcGxlPiBjcmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0
aW9uVGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVWaWRlb1NhbXBsZT4gY3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhVGltZSYmIHByZXNl
bnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZVJlZiBzdXJm
YWNlKCk7CiAjZW5kaWYKIAogICAgIGNvbnN0IE1lZGlhVGltZSYgdGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZTsgfQogICAgIHVpbnQzMl90IHZpZGVvRm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0Zvcm1hdDsgfQogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb3RhdGlvbjsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKaW5kZXggM2I3NDMwZmY0YzhmZjhiZDI3NGZjNmIyZWFkN2NlNWJjNWIwZTVkZi4uNzM4MGYw
NDJmMWE3ZDUxMGZhZmRkOGNiY2QwOWFkYzVlNWQzMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9u
VlQuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoSU9TVVJG
QUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyKElPU3VyZmFjZVJlZik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVs
QnVmZmVyKElPU3VyZmFjZVJlZiwgY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tCmluZGV4IDg2MWFjMWRiMWI4NmQ5NWQ1ZTQ3MGRiNDE5MTkwODllZTM4
ZDU3MzMuLjE1Mzk3YWI3ZjI3OGFlOGRjNjllMzI1MjM3NjRmYjg4YmZlZGQwMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VU
cmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMzA3LDYgKzMwNywyMCBAQCBDRkRpY3Rpb25hcnlSZWYg
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6aW9TdXJmYWNlUGl4ZWxCdWZmZXJDcmVhdGlvbk9wdGlv
bnMoSU9TdQogICAgIHJldHVybiBtX2lvU3VyZmFjZUJ1ZmZlckF0dHJpYnV0ZXMuZ2V0KCk7CiB9
CiAKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpj
cmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VSZWYgc3VyZmFjZSkKK3sKKyAgICBpZiAoIXN1cmZh
Y2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlcjsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGVXaXRoSU9TdXJm
YWNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN1cmZhY2UsIGlvU3VyZmFjZVBpeGVsQnVmZmVyQ3Jl
YXRpb25PcHRpb25zKHN1cmZhY2UpLCAmcGl4ZWxCdWZmZXIpOworICAgIGlmIChzdGF0dXMpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJDVlBpeGVsQnVmZmVyQ3JlYXRlV2l0aElPU3Vy
ZmFjZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlOiAlZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVz
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gYWRvcHRDRihw
aXhlbEJ1ZmZlcik7Cit9CisKIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVRyYW5z
ZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcihJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoIXN1cmZhY2UgfHwgIXNldFNpemUoc2l6ZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5k
ZXggYzY2ZjE4NWFmNWJjYWNiNTIwY2I1NzQ4MGZmNWE0ZTJmYzZlODRmYy4uMDZiODRkYWY3Zjcx
NDYwOTM1MGYzOTM1YWI0ZWFkODFmOGY0ZjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDMsOCArNDMsNiBAQCBBTExPV19VTlVT
RURfUEFSQU1FVEVSU19FTkQKIAogI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0j
aW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIFBBTDsKIApAQCAtOTUsMjggKzkzLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0KQogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCiB7CiAgICAg
aWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRo
IHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9IGhlaWdodCkgewotICAgICAgICBjb25zdCBP
U1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hckZ1bGxSYW5nZTsKLSAgICAgICAgYXV0byBwaXhlbEF0dHJpYnV0ZXMgPSBAewotICAg
ICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJXaWR0aEtleTogQCh3
aWR0aCksCi0gICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckhl
aWdodEtleTogQChoZWlnaHQpLAotICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NW
UGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9DYXB0dXJlRm9ybWF0KSwKLSAg
ICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyQ0dJbWFnZUNvbXBh
dGliaWxpdHlLZXk6IEBOTywKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAgICAg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxGb3JtYXRPcGVuR0xFU0NvbXBhdGliaWxpdHkg
OiBAWUVTLAotI2Vsc2UKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSA6IEBZRVMsCi0jZW5kaWYKLSAgICAgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySU9TdXJmYWNlUHJvcGVydGllc0tl
eSA6IEB7IH0KLSAgICAgICAgfTsKLQotICAgICAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwb29s
ID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KXBpeGVsQXR0cmlidXRlcywgJnBvb2wpOwotCi0gICAgICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0
dXJuU3VjY2VzcykgewotICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJ
REVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHBvb2wgd2l0aCBlcnJv
ciAiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBhZG9wdENGKHBvb2wpOworICAgICAgICBtX3BpeGVs
QnVmZmVyUG9vbCA9IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKICAgICAg
ICAgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCA9IHdpZHRoOwogICAgICAgICBtX3BpeGVsQnVmZmVy
UG9vbEhlaWdodCA9IGhlaWdodDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMu
aAppbmRleCAzODBkMzczMWIwYTE1M2FiYjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhLi5hZGQ0ZDcx
NmRkNTQyMDVlMWIxNzFmOTQ3NzNjOWU5YzIzNDhkMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVv
VXRpbGl0aWVzLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2luY2x1ZGUgPENvcmVWaWRlby9Db3Jl
VmlkZW8uaD4KIAordXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVs
QnVmZmVyUG9vbCo7Cit1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIq
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgT1NUeXBlIHByZWZlcmVk
UGl4ZWxCdWZmZXJGb3JtYXQoKQpAQCAtMzgsNCArNDEsNyBAQCBzdGF0aWMgaW5saW5lIE9TVHlw
ZSBwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkKICNlbmRpZgogfQogCitXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbChz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpOworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2woQ1ZQaXhlbEJ1ZmZlclBv
b2xSZWYpOworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlhZjQ4ZmI5YTcyNDdhZWMxYjJjYjY5ZTRjNmU2M2IwMDljYThmYzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRl
b1V0aWxpdGllcy5tbQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1
aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgorCisjaW5jbHVkZSAi
Q29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQpCit7CisgICAgY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CisgICAgYXV0
byBwaXhlbEF0dHJpYnV0ZXMgPSBAeworICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQ
aXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHdpZHRoKSwKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoaGVpZ2h0KSwKKyAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9DYXB0
dXJlRm9ybWF0KSwKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJD
R0ltYWdlQ29tcGF0aWJpbGl0eUtleTogQE5PLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsRm9ybWF0T3BlbkdMRVNDb21wYXRp
YmlsaXR5IDogQFlFUywKKyNlbHNlCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyT3BlbkdMQ29tcGF0aWJpbGl0eUtleSA6IEBZRVMsCisjZW5kaWYKKyAgICAgICAg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5
IDogQHsgfQorICAgIH07CisKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwb29sID0gbnVsbHB0
cjsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcGl4ZWxBdHRyaWJ1
dGVzLCAmcG9vbCk7CisKKyAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0Q0YocG9vbCk7Cit9CisKK1Jl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21Qb29sKENWUGl4
ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbCkKK3sKKyAgICBDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQ
b29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGl4ZWxCdWZmZXJQb29s
LCAmcGl4ZWxCdWZmZXIpOworCisgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihwaXhlbEJ1ZmZlcik7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCBmOTg4MDM5N2VmODEwOWJjZmZjNTJiN2RiODc1NzFm
NjQ2YmM0NzhmLi4wZjc0YmI2NWEwZjVmYWNkZDE2MTNmYTYzYzg0ZDQzMmEzODY1ZmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ0VuY29k
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTM2LDggKzM4LDEz
IEBAIGNsYXNzIERlY29kZXI7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKK30KKwogbmFtZXNwYWNlIHdlYnJ0
YyB7CiB1c2luZyBMb2NhbERlY29kZXIgPSB2b2lkKjsKK3VzaW5nIExvY2FsRW5jb2RlciA9IHZv
aWQqOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDggKzY2LDE5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9p
ZCBkZWNvZGVGcmFtZShSVENEZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1wLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAorICAgIHZvaWQgY3JlYXRlRW5jb2RlcihSVENF
bmNvZGVySWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
Jik7CisgICAgdm9pZCByZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllcik7CisgICAg
dm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgdWludDE2X3Qgd2lk
dGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhC
aXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOworICAg
IHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisgICAgdm9pZCBzZXRF
bmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMy
X3QgZnJhbWVSYXRlKTsKKworICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZl
ckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VSZWYpOworCiAgICAgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UlRDRGVj
b2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzOworICAgIEhh
c2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29k
ZXJzOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBjN2ExMzM0ZGNkMGQzYWExZGI5ZDUwMTU1NGYxYTMwOWNjNjU3Mjcw
Li4yYjM0ZTU2NDA1ZjM4NTE2ZDgyYzUxZDI2OTRmMjU0YTlhM2VkNDI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDEyIEBAIG1lc3NhZ2VzIC0+IExpYldl
YlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZURlY29kZXIoV2ViS2l0
OjpSVENEZWNvZGVySWRlbnRpZmllciBpZCkKICAgICBSZWxlYXNlRGVjb2RlcihXZWJLaXQ6OlJU
Q0RlY29kZXJJZGVudGlmaWVyIGlkKQogICAgIERlY29kZUZyYW1lKFdlYktpdDo6UlRDRGVjb2Rl
cklkZW50aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVTdGFtcCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpCisKKyAgICBDcmVhdGVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQs
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzKTsKKyAgICBSZWxl
YXNlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkKQorICAgIEluaXRpYWxp
emVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRo
LCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0
cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQorICAgIEVu
Y29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlIHNhbXBsZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQorICAgIFNl
dEVuY29kZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJp
dFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRl
eCA1M2MwMzE3OThjZGUwZTJjNzE4M2M2OGE1NmNjZDRjYzg3MDAxMzFmLi4xOGNjNWQ3NDc5Yzk3
YjhkMjIyN2MxMjU0NGM1MTZmN2I4OTMzODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0xpYldlYlJUQ01hY3Jvcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1w
bGUuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiAjaW5j
bHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogCkBAIC00OCw2ICs0OSw4IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojp+
TGliV2ViUlRDQ29kZWNzUHJveHkoKQogewogICAgIGZvciAoYXV0byBkZWNvZGVyIDogbV9kZWNv
ZGVycy52YWx1ZXMoKSkKICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29k
ZXIpOworICAgIGZvciAoYXV0byBlbmNvZGVyIDogbV9lbmNvZGVycy52YWx1ZXMoKSkKKyAgICAg
ICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIpOwogfQogCiB2b2lkIExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCkBAIC03Nyw2ICs4MCw3OSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpkZWNv
ZGVGcmFtZShSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdAogICAgICAg
ICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjczo6RmFpbGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyIH0sIDApOwogfQog
Cit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgcGFyYW1ldGVycykKK3sKKyAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworCisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJh
bWV0ZXJzOworICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogcGFyYW1ldGVycykKKyAgICAgICAg
cnRjUGFyYW1ldGVycy5lbXBsYWNlKHBhcmFtZXRlci5maXJzdC51dGY4KCkuZGF0YSgpLCBwYXJh
bWV0ZXIuc2Vjb25kLnV0ZjgoKS5kYXRhKCkpOworICAgIAorICAgIG1fZW5jb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxFbmNvZGVyKHdlYnJ0Yzo6U2RwVmlkZW9Gb3Jt
YXQgeyAiSDI2NCIsIHJ0Y1BhcmFtZXRlcnMgfSwgXihjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mIGluZm8sIHdl
YnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogaGVhZGVyKSB7CisgICAgICAgIAorICAgICAg
ICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgeyBidWZmZXIsIHNpemUgfSwgaW5mbywgd2VicnRjOjpXZWJLaXRSVFBGcmFn
bWVudGF0aW9uSGVhZGVyIHsgaGVhZGVyIH0gfSwgMCk7CisgICAgfSkpOworfQorCit2b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpKQor
ICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7Cit9CisKK3ZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVk
IHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwg
dWludDMyX3QgbWF4RnJhbWVyYXRlKQoreworICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlm
aWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYnJ0Yzo6
aW5pdGlhbGl6ZUxvY2FsRW5jb2RlcihlbmNvZGVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdHJh
dGUsIG1heEJpdHJhdGUsIG1pbkJpdHJhdGUsIG1heEZyYW1lcmF0ZSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7
CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICAgICAgcmV0
dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8xODA7CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6Cisg
ICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOworICAgIGNhc2UgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzI3MDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSkKK3sKKyAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAg
YXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNv
ZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24g
fHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSBzYW1wbGUudmlkZW9G
b3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IFdlYkNvcmU6OkltYWdl
VHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShzYW1wbGUudmlkZW9Gb3JtYXQoKSk7CisKKyNpZiBI
QVZFKElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVQaXhlbEJ1ZmZlcihzYW1wbGUu
c3VyZmFjZSgpKTsKKyAgICB3ZWJydGM6OmVuY29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIs
IHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUudGltZSgpLnRvVGltZVNjYWxlKDEwMDAwMDApLnRp
bWVWYWx1ZSgpLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oc2FtcGxlLnJvdGF0aW9uKCkpLCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lKTsKKyNlbmRpZgorfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50
MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCit7CisgICAgQVNTRVJUKG1fZW5jb2Rl
cnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMu
Z2V0KGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJh
dGUpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggNjkwNjMxMDZjYWI1NDAyMWM0Mjg5NmNkY2I3NjNhNzU2Zjc4YWY4Ni4uYzlk
MGU3YzY5MWZmN2M5NTVmOGMzNTExMDAxYzQwYTU1NGFiOTA0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMjIsNiArMjIyLDcgQEAgZGVmIHR5cGVzX3Ro
YXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50
aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllcicsCkBAIC02MTEsNiArNjEyLDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlw
ZSk6CiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktp
dDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlckRhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKKyAg
ICAgICAgJ3dlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyc6IFsnPHdlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdEVuY29kZXIuaD4nXSwKKyAgICAgICAgJ3dlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21l
bnRhdGlvbkhlYWRlcic6IFsnPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4nXSwK
ICAgICB9CiAKICAgICBoZWFkZXJzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1YzZlN2Q2NWFmNzIyN2VmNzNhZmQ4MjY4ZmY3
MWRiMGQ4YTIxNTAuLjgxZGQ1MjBmYzcxMTNmZjI1ZTlhNWExNjgwMzNkNTUzNzlkZmQ3N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzMyMCw2ICszMzIwLDcgQEAKIAkJNDE1MUU1QzMxRkJCOTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRh
UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhUmVm
ZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTc4NTMwMjEyNzZCNkYw
MEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVycy5z
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2ViY29udGVudC1yZXNvdXJjZXMtdG8tcHJpdmF0ZS1o
ZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0U0QUYyMEUyRUM5
ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJvd3NlcnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNTg2NDlBMjNCRTA5MjQwMEEwQTYxRSAvKiBSVENFbmNvZGVySWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVySWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyMTk4OTIzQjYxMjgy
MDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpYldlYlJUQ0NvZGVjcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpYldlYlJUQ0NvZGVjcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzIxOThDMjNCNjEyRTgwMEFFNTY4NiAvKiBSVENEZWNv
ZGVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENEZWNv
ZGVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEyNSw2ICs3
MTI2LDcgQEAKIAkJCQk0MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNz
LmggKi8sCiAJCQkJNDE3MjE5OEQyM0I2MkM3QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVjcy5t
ZXNzYWdlcy5pbiAqLywKIAkJCQk0MTcyMTk4QzIzQjYxMkU4MDBBRTU2ODYgLyogUlRDRGVjb2Rl
cklkZW50aWZpZXIuaCAqLywKKwkJCQk0MTU4NjQ5QTIzQkUwOTI0MDBBMEE2MUUgLyogUlRDRW5j
b2RlcklkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2VicnRjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IGIyNzFkOGVmOWNjY2E0MWQ4OWZm
ODBiNTYyMWNmMDdiMjdmNzcyZmIuLjQ2ZDExOTg3NzJjNTFiOGFkOTBlZjhhMTcxMzIxZmZjZTI5
MGZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMzMsOCArMzMsMTAgQEAKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGlt
ZVZpZGVvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5o
PgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHdlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC02
NCwxNyArNjYsODUgQEAgc3RhdGljIGludDMyX3QgcmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxi
YWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9EZWNvZGVyIGRlY29kZXIKICAgICByZXR1cm4gMDsKIH0K
IAotdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldFZpZGVvRGVjb2RlckNhbGxiYWNrcyhib29sIHVz
ZUdQVVByb2Nlc3MpCitzdGF0aWMgd2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgY3JlYXRlVmlk
ZW9FbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkKK3sKKyAgICBp
ZiAoZm9ybWF0Lm5hbWUgIT0gIkgyNjQiKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5jcmVhdGVF
bmNvZGVyKGZvcm1hdC5wYXJhbWV0ZXJzKTsKK30KKworc3RhdGljIGludDMyX3QgcmVsZWFzZVZp
ZGVvRW5jb2Rlcih3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyKQoreworICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5yZWxlYXNlRW5j
b2Rlcigqc3RhdGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2RlcikpOwor
fQorCitzdGF0aWMgaW50MzJfdCBpbml0aWFsaXplVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2ViS2l0
VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9Db2RlYyYgY29kZWMpCit7
CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmlu
aXRpYWxpemVFbmNvZGVyKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihl
bmNvZGVyKSwgY29kZWMud2lkdGgsIGNvZGVjLmhlaWdodCwgY29kZWMuc3RhcnRCaXRyYXRlLCBj
b2RlYy5tYXhCaXRyYXRlLCBjb2RlYy5taW5CaXRyYXRlLCBjb2RlYy5tYXhGcmFtZXJhdGUpOwor
fQorCitzdGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHRvTWVkaWFTYW1w
bGVWaWRlb1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3sKKyAgICBz
d2l0Y2ggKHJvdGF0aW9uKSB7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6Cisg
ICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICBjYXNl
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOgorICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0
aW9uXzkwOgorICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0
OworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA6CisgICAgICAgIHJldHVybiBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOwor
fQorCitzdGF0aWMgaW50MzJfdCBlbmNvZGVWaWRlb0ZyYW1lKHdlYnJ0Yzo6V2ViS2l0VmlkZW9F
bmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bmV3UGl4ZWxCdWZmZXI7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHdlYnJ0Yzo6cGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoZnJhbWUsIFsmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQ
b29sID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkucGl4ZWxCdWZm
ZXJQb29sKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIG5ld1BpeGVsQnVmZmVyID0gV2Vi
Q29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBvb2wpOworICAgICAg
ICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAgfSk7CisKKyAgICBpZiAoIXBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworCisgICAg
YXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRp
YVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9S
b3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVuY29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJXZWJS
VENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgKnNhbXBsZSwgc2hvdWxkRW5jb2RlQXNLZXlG
cmFtZSk7Cit9CisKK3N0YXRpYyBpbnQzMl90IHJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFj
ayh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1hZ2VD
YWxsYmFjaykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3Mo
KS5yZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJhY2soKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVj
czo6RW5jb2Rlcio+KGVuY29kZXIpLCBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyB2b2lkIHNldEVuY29kZVJhdGVzQ2FsbGJhY2sod2VicnRjOjpXZWJL
aXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0VuY29kZXI6OlJhdGVD
b250cm9sUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICB1aW50MzJfdCBiaXRSYXRlID0g
cGFyYW1ldGVycy5iaXRyYXRlLmdldF9zdW1fa2JwcygpOworICAgIHVpbnQzMl90IGZyYW1lUmF0
ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJzLmZyYW1lcmF0ZV9mcHMgKyAwLjUp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnNldEVuY29k
ZVJhdGVzKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwg
Yml0UmF0ZSwgZnJhbWVSYXRlKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxi
YWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgIGlmICghdXNlR1BVUHJvY2VzcykgewogICAgICAgICB3ZWJydGM6OnNldFZpZGVvRGVj
b2RlckNhbGxiYWNrcyhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAg
ICAgd2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MobnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgLy8gTGV0J3MgY3JlYXRlIFdlYlByb2Nlc3MgbGliV2ViUlRDQ29kZWNzIHNpbmNlIGl0
IG1heSBiZSBjYWxsZWQgZnJvbSB2YXJpb3VzIHRocmVhZHMuCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCk7CiAgICAgd2VicnRjOjpzZXRWaWRlb0RlY29kZXJD
YWxsYmFja3MoY3JlYXRlVmlkZW9EZWNvZGVyLCByZWxlYXNlVmlkZW9EZWNvZGVyLCBkZWNvZGVW
aWRlb0ZyYW1lLCByZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2spOworICAgIHdlYnJ0Yzo6
c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKGNyZWF0ZVZpZGVvRW5jb2RlciwgcmVsZWFzZVZpZGVv
RW5jb2RlciwgaW5pdGlhbGl6ZVZpZGVvRW5jb2RlciwgZW5jb2RlVmlkZW9GcmFtZSwgcmVnaXN0
ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrLCBzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKTsKIH0KIAog
TGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIo
KQpAQCAtODksOCArMTU5LDggQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVEND
b2RlY3M6OmNyZWF0ZURlY29kZXIoKQogICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0g
ZGVjb2Rlci0+aWRlbnRpZmllcjsKICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZURlY29kZXIgeyBkZWNvZGVySWRl
bnRpZmllciB9LCAwKTsKIAotICAgICAgICBBU1NFUlQoIW1fZGVjb2RlQ2FsbGJhY2tzLmNvbnRh
aW5zKGRlY29kZXJJZGVudGlmaWVyKSk7Ci0gICAgICAgIG1fZGVjb2RlQ2FsbGJhY2tzLmFkZChk
ZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CisgICAgICAgIEFTU0VSVCghbV9k
ZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOworICAgICAgICBtX2RlY29kZXJz
LmFkZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMSw5ICsxNzEsOSBAQCBpbnQzMl90IExpYldlYlJUQ0Nv
ZGVjczo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBkZWNvZGVyLmRlY29k
ZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0cjsKIAogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0gewotICAgICAgICBBU1NF
UlQobV9kZWNvZGVDYWxsYmFja3MuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKKyAgICAg
ICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKIAotICAg
ICAgICBtX2RlY29kZUNhbGxiYWNrcy5yZW1vdmUoZGVjb2RlcklkZW50aWZpZXIpOworICAgICAg
ICBtX2RlY29kZXJzLnJlbW92ZShkZWNvZGVySWRlbnRpZmllcik7CiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRGVjb2RlciB7IGRl
Y29kZXJJZGVudGlmaWVyIH0sIDApOwogICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTMwLDcg
KzIwMCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpmYWlsZWREZWNvZGluZyhSVENEZWNvZGVy
SWRlbnRpZmllciBkZWNvZGVySWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgaWYgKGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZUNhbGxiYWNrcy5nZXQoZGVj
b2RlcklkZW50aWZpZXIpKQorICAgIGlmIChhdXRvKiBkZWNvZGVyID0gbV9kZWNvZGVycy5nZXQo
ZGVjb2RlcklkZW50aWZpZXIpKQogICAgICAgICBkZWNvZGVyLT5oYXNFcnJvciA9IHRydWU7CiB9
CiAKQEAgLTEzOSw3ICsyMDksNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6Y29tcGxldGVkRGVj
b2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIgZGVjb2RlcklkZW50aWZpZXIsCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgotICAg
IGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZUNhbGxiYWNrcy5nZXQoZGVjb2RlcklkZW50aWZpZXIp
OworICAgIGF1dG8qIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChkZWNvZGVySWRlbnRpZmllcik7
CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2Nyw2ICsyMzcsMTEx
IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRl
bnRpZmllciBkZWNvZGVySWRlbnRpZmllciwKICAgICB3ZWJydGM6OlJlbW90ZVZpZGVvRGVjb2Rl
cjo6ZGVjb2RlQ29tcGxldGUoZGVjb2Rlci0+ZGVjb2RlZEltYWdlQ2FsbGJhY2ssIHRpbWVTdGFt
cCwgcGl4ZWxCdWZmZXIuZ2V0KCksIHJlbW90ZVNhbXBsZS50aW1lKCkudG9Eb3VibGUoKSk7CiB9
CiAKK0xpYldlYlJUQ0NvZGVjczo6RW5jb2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVFbmNv
ZGVyKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIGZvcm1hdFBhcmFt
ZXRlcnMpCit7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigpOworICAg
IGF1dG8qIHJlc3VsdCA9IGVuY29kZXIuZ2V0KCk7CisgICAgZW5jb2Rlci0+aWRlbnRpZmllciA9
IFJUQ0VuY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzOworICAgIGZvciAoYXV0byYg
a2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0ZXJzKQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0LmRhdGEoKSwga2V5
VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLnNlY29uZC5k
YXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsKKworICAgIGNhbGxPbk1haW5SdW5M
b29wKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwgcGFyYW1ldGVycyA9IFdURk1v
dmUocGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW5jb2RlcklkZW50aWZp
ZXIgPSBlbmNvZGVyLT5pZGVudGlmaWVyOworICAgICAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29u
dGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXJJZGVudGlm
aWVyLCBwYXJhbWV0ZXJzIH0sIDApOworICAgICAgICBtX2VuY29kZXJzLmFkZChlbmNvZGVySWRl
bnRpZmllciwgV1RGTW92ZShlbmNvZGVyKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXImIGVu
Y29kZXIpCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxs
YmFja0xvY2spOworICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRyOwor
CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rl
ci5pZGVudGlmaWVyXSB7CisgICAgICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29k
ZXJJZGVudGlmaWVyKSk7CisKKyAgICAgICAgbV9lbmNvZGVycy5yZW1vdmUoZW5jb2RlcklkZW50
aWZpZXIpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6UmVsZWFzZUVuY29kZXIgeyBlbmNvZGVySWRlbnRpZmllciB9LCAwKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmluaXRpYWxpemVF
bmNvZGVyKEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQs
IHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZSwgdW5zaWduZWQgbWF4Qml0UmF0ZSwgdW5zaWduZWQgbWlu
Qml0UmF0ZSwgdWludDMyX3QgbWF4RnJhbWVSYXRlKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29w
KFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllciwgd2lkdGgsIGhl
aWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGVd
IHsKKyAgICAgICAgaWYgKGF1dG8qIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChlbmNvZGVySWRl
bnRpZmllcikpIHsKKyAgICAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OkluaXRpYWxpemVFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0
YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDApOwor
ICAgICAgICAgICAgLy8gV2Ugc2V0IGVuY29kZXItPmNvbm5lY3Rpb24gaGVyZSBzbyB0aGF0IElu
aXRpYWxpemVFbmNvZGVyIGlzIHNlbnQgYmVmb3JlIGFueSBFbmNvZGVGcmFtZSBtZXNzYWdlLgor
ICAgICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9ICZjb25uZWN0aW9uOworICAgICAgICB9
CisgICAgfSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludDMyX3QgTGliV2ViUlRDQ29kZWNzOjpl
bmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKK3sKKyAgICBpZiAoIWVu
Y29kZXIuY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJP
UjsKKworICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCBmcmFtZSwgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKKyAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09L
OworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxiYWNr
KEVuY29kZXImIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrKQoreworICAgIExv
Y2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKKyAgICBl
bmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrID0gZW5jb2RlZEltYWdlQ2FsbGJhY2s7Cit9CisK
K3ZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNvZGVyLCB1
aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCit7CisgICAgaWYgKCFlbmNvZGVy
LmNvbm5lY3Rpb24pIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJ
ZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGVdIHsKKyAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2VuY29k
ZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgICAgICBBU1NFUlQobV9l
bmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZpZXIpLT5jb25uZWN0aW9uKTsKKyAgICAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRFbmNvZGVS
YXRlcyB7IGVuY29kZXJJZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVuY29kZXIuY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29kZVJhdGVzIHsgZW5j
b2Rlci5pZGVudGlmaWVyLCBiaXRSYXRlLCBmcmFtZVJhdGUgfSwgMCk7Cit9CisKK3ZvaWQgTGli
V2ViUlRDQ29kZWNzOjpjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBjb25zdCB3ZWJydGM6OldlYktpdEVu
Y29kZWRGcmFtZUluZm8mIGluZm8sIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRl
ciYmIGZyYWdtZW50YXRpb25IZWFkZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIC8vIEZJWE1FOiBEbyBlcnJvciBsb2dnaW5nLgorICAgIGF1dG8qIGVuY29kZXIgPSBt
X2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2soZW5jb2Rlci0+ZW5jb2RlZElt
YWdlQ2FsbGJhY2tMb2NrKTsKKyAgICBpZiAoIWxvY2tlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFlbmNvZGVyLT5lbmNvZGVkSW1hZ2VDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgd2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKGVuY29kZXIt
PmVuY29kZWRJbWFnZUNhbGxiYWNrLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpLCBpbmZvLCBmcmFnbWVudGF0aW9uSGVhZGVyLnZhbHVlKCkpOworfQorCitD
VlBpeGVsQnVmZmVyUG9vbFJlZiBMaWJXZWJSVENDb2RlY3M6OnBpeGVsQnVmZmVyUG9vbChzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCit7CisgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8
fCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVp
Z2h0ICE9IGhlaWdodCkgeworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IGNyZWF0ZVBpeGVs
QnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2xXaWR0
aCA9IHdpZHRoOworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbEhlaWdodCA9IGhlaWdodDsKKyAg
ICB9CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOworfQorCiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuaAppbmRleCBlM2NkOGE5M2ZkMzEzOWFkMTFkMTU3NDcxM2Q1Y2VhM2FmNTA5MmFi
Li44OTNlMTk4N2I1YTZmNmNlOWVhMGYwY2FhZDY3ZmExNDYxMzdiNGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApA
QCAtMjksMTMgKzI5LDE4IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CisjaW5j
bHVkZSA8bWFwPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCit1c2luZyBDVlBpeGVsQnVmZmVyUG9vbFJl
ZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKKwogbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOworY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIERlY29kZXI7CiB9CiAK
QEAgLTQzLDYgKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbW90ZVZpZGVv
U2FtcGxlOwogfQogCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFdlYktpdFJUUEZyYWdtZW50
YXRpb25IZWFkZXI7CitzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewpAQCAtNTAsNiArNjAsOCBAQCBjbGFzcyBMaWJXZWJSVENDb2RlY3MgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENDb2Rl
Y3MoKSA9IGRlZmF1bHQ7CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRDYWxsYmFja3MoYm9vbCB1c2VH
UFVQcm9jZXNzKTsKKwogICAgIHN0cnVjdCBEZWNvZGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtNjAsMjMgKzcyLDQ2IEBAIHB1YmxpYzoKICAg
ICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKICAgICB9OwogCi0gICAg
c3RhdGljIHZvaWQgc2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2Vzcyk7
Ci0KICAgICBEZWNvZGVyKiBjcmVhdGVEZWNvZGVyKCk7CiAgICAgaW50MzJfdCByZWxlYXNlRGVj
b2RlcihEZWNvZGVyJik7CiAgICAgaW50MzJfdCBkZWNvZGVGcmFtZShEZWNvZGVyJiwgdWludDMy
X3QgdGltZVN0YW1wLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICB2b2lkIHJlZ2lzdGVy
RGVjb2RlRnJhbWVDYWxsYmFjayhEZWNvZGVyJiwgdm9pZCogZGVjb2RlZEltYWdlQ2FsbGJhY2sp
OwogCisgICAgc3RydWN0IEVuY29kZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBwdWJsaWM6CisgICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7
CisgICAgICAgIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrIHsgbnVsbHB0ciB9OworICAgICAg
ICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKKyAgICAgICAgUmVmUHRyPElQQzo6Q29u
bmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICB9OworCisgICAgRW5jb2RlciogY3JlYXRlRW5jb2Rl
cihjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Jik7CisgICAgaW50MzJf
dCByZWxlYXNlRW5jb2RlcihFbmNvZGVyJik7CisgICAgaW50MzJfdCBpbml0aWFsaXplRW5jb2Rl
cihFbmNvZGVyJiwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3Rh
cnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50
MzJfdCBtYXhGcmFtZXJhdGUpOworICAgIGludDMyX3QgZW5jb2RlRnJhbWUoRW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZy
YW1lKTsKKyAgICB2b2lkIHJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayhFbmNvZGVyJiwgdm9p
ZCogZW5jb2RlZEltYWdlQ2FsbGJhY2spOworICAgIHZvaWQgc2V0RW5jb2RlUmF0ZXMoRW5jb2Rl
ciYsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisgICAgCisgICAgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhl
aWdodCk7CisKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgZmFpbGVkRGVjb2Rpbmco
UlRDRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29tcGxldGVkRGVjb2RpbmcoUlRDRGVj
b2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJik7CisgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1l
SW5mbyYsIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYmKTsKIAotICAgIEhh
c2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9k
ZWNvZGVDYWxsYmFja3M7Citwcml2YXRlOgorICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsKICAgICBIYXNoU2V0PFJU
Q0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwogCisgICAgSGFzaE1hcDxSVENF
bmNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+PiBtX2VuY29kZXJzOwor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb247CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVm
PiBtX3BpeGVsQnVmZmVyUG9vbDsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCB7
IDAgfTsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgppbmRleCAy
YWFlOTc4NjgwZDNjM2E3ODBiOGMyNTllNDNhNWU0OGQxOTAzMTZiLi5mMmJmNWI4MzZiMDk5N2Mx
ZGQwZTM2OTk5NjVkYjc1MjY4Y2JmMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmlu
CkBAIC0yMyw4ICsyMywxMCBAQAogI2lmIFVTRShMSUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjcyBO
b3RSZWZDb3VudGVkIHsKLSAgICBGYWlsZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkKQotICAgIENvbXBsZXRlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50
aWZpZXIgaWQsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUg
c2FtcGxlKQorICAgIEZhaWxlZERlY29kaW5nKFdlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICBDb21wbGV0ZWREZWNvZGluZyhXZWJLaXQ6OlJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUgc2FtcGxlKQorCisgICAgQ29tcGxldGVkRW5jb2RpbmcoV2ViS2l0OjpSVENFbmNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3RydWN0
IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyBpbmZvLCB3ZWJydGM6OldlYktpdFJUUEZy
YWdtZW50YXRpb25IZWFkZXIgZnJhZ21lbnRhdGlvbkhlYWRlcik7CiB9CiAKICNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKSAmJiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvUlRDRW5jb2Rl
cklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1JUQ0Vu
Y29kZXJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhN2YzYzA0ZjZjNDk5YjllZDY1NjJiZjJk
MGM2YmY0OGUyYTgwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1JUQ0VuY29kZXJJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUlRDRW5jb2RlcklkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFJUQ0VuY29kZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSVENF
bmNvZGVySWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGY5ODM2MjI3ZTliZTVmMzQ3ZWI3YWMzOGZiMDI3Y2MwYzhl
MjIwZjguLmQzOWUzOTk3ZTI0OTg1ZWYwNjM0MjVjZmUzOWE4OGIxZjUyZDkyNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVEZWNv
ZGVyRmFjCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBl
ZmZpY2llbnQgc2VuZGluZyBvZiB2aWRlbyBmcmFtZXMgd2l0aCBJT1NVUkZBQ0UKICNpZiBIQVZF
KElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIExpYldlYlJUQ0NvZGVj
czo6c2V0VmlkZW9EZWNvZGVyQ2FsbGJhY2tzKG1fdXNlR1BVUHJvY2Vzcyk7CisgICAgTGliV2Vi
UlRDQ29kZWNzOjpzZXRDYWxsYmFja3MobV91c2VHUFVQcm9jZXNzKTsKICNlbmRpZgogI2VuZGlm
CiAgICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZURlY29kZXJGYWN0b3J5
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>