<?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>180591</bug_id>
          
          <creation_ts>2017-12-08 11:34:10 -0800</creation_ts>
          <short_desc>Remove pthread_once in favor of dispatch_once</short_desc>
          <delta_ts>2017-12-08 12:18:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1379670</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 11:34:10 -0800</bug_when>
    <thetext>Use std::call_once instead of pthread_once_xxx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379672</commentid>
    <comment_count>1</comment_count>
      <attachid>328840</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 11:36:27 -0800</bug_when>
    <thetext>Created attachment 328840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379676</commentid>
    <comment_count>2</comment_count>
      <attachid>328842</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 11:37:41 -0800</bug_when>
    <thetext>Created attachment 328842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379680</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2017-12-08 11:38:12 -0800</bug_when>
    <thetext>For macOS/iOS specific files you should use dispatch_once instead, it&apos;s slightly faster IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379682</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 11:39:11 -0800</bug_when>
    <thetext>(In reply to Anders Carlsson from comment #3)
&gt; For macOS/iOS specific files you should use dispatch_once instead, it&apos;s
&gt; slightly faster IIRC.

Oh, nice. I&apos;ll follow this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379686</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-08 11:40:49 -0800</bug_when>
    <thetext>Attachment 328842 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:31:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:96:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:112:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:128:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:129:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:132:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:146:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:149:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitErrors.mm:152:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 10 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379693</commentid>
    <comment_count>6</comment_count>
      <attachid>328846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 11:48:20 -0800</bug_when>
    <thetext>Created attachment 328846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379697</commentid>
    <comment_count>7</comment_count>
      <attachid>328846</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-08 12:04:31 -0800</bug_when>
    <thetext>Comment on attachment 328846
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=328846&amp;action=review

r=me. Looks like a reasonable cleanup.

&gt; Source/WTF/ChangeLog:3
&gt; +        Remove pthread_once in favor of std::call_once and dispatch_once

You don&apos;t actually use std::call_once in this patch anymore :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379699</commentid>
    <comment_count>8</comment_count>
      <attachid>328846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 12:05:51 -0800</bug_when>
    <thetext>Comment on attachment 328846
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=328846&amp;action=review

Thanks. Now, very limited pthread_xxx is used in WebKit! (basically it is for platform specific pthread extensions like QOS).

&gt;&gt; Source/WTF/ChangeLog:3
&gt;&gt; +        Remove pthread_once in favor of std::call_once and dispatch_once
&gt; 
&gt; You don&apos;t actually use std::call_once in this patch anymore :)

Oh, right. Fixed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379709</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 12:17:04 -0800</bug_when>
    <thetext>Committed r225692: &lt;https://trac.webkit.org/changeset/225692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379711</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-08 12:18:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/35940539&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328840</attachid>
            <date>2017-12-08 11:36:27 -0800</date>
            <delta_ts>2017-12-08 11:37:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180591-20171209043626.patch</filename>
            <type>text/plain</type>
            <size>35663</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZhNzc4NjZjZWRkOTVkOGUyZTBiYzc1
NTJiZDgwOTdhYzAxMjY1NGIuLmViMTljZWQzY2EyYzkwNWM5MWVjZWE4ZTU2ZTQxNTg4ODVkNjkx
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIHN0ZDo6Y2FsbF9vbmNlIGluc3RlYWQg
b2YgcHRocmVhZF9vbmNlX3h4eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRml4IHRoZSBjb21tZW50LgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5o
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1cnJlbnQpOgorCisyMDE3LTEyLTA4ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtXVEZdW0xpbnV4XVtH
VEtdIEZpeCBhIG1pbm9yIGJ1ZyBpbiBnZW5lcmljL1dvcmtRdWV1ZSB3aGVuIFdvcmtRdWV1ZSBp
cyBpbW1lZGlhdGVseSBkZXN0cm95ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDU4NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI1MTQyY2Y2MGYyYmVlZGM2
NjAxZmE2Njc3MmYyYjMzM2FjYzAzNC4uZTBmN2Q4ZGFmZTk4MTc0OWI5ZjQxNGUxNGRhMDBkZjEy
ZTAzYWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEyLTA4ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBzdGQ6OmNhbGxf
b25jZSBpbnN0ZWFkIG9mIHB0aHJlYWRfb25jZV94eHgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjph
bGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisKIDIwMTctMTItMDggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGVycm9yIGhhbmRsaW5nIGlu
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyMzExYWU2YmJhNTZmMTY4NTUxZjJh
ZWE2ZTdlOGZmNTRhMWU5MjAuLjM5ZjZhMDc4NjE0OWQ2YmZhZmM5MGM2OWFkNjQ3ZDE5MWY1YWIx
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIHN0ZDo6Y2FsbF9vbmNlIGlu
c3RlYWQgb2YgcHRocmVhZF9vbmNlX3h4eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpzaG91bGRDYWxsUmVhbERlYnVnZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6aW5pdFNob3VsZENhbGxSZWFsRGVidWdnZXIpOiBEZWxldGVkLgorCiAyMDE3LTEyLTA4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UGFzcyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gaW5zdGVhZCBvZiBXZWJzaXRlUG9s
aWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYmJkZmE5MGY0M2M2MWZjOWNmYTk5NDFjN2Y0
MGFiZjUxZjUyYWUyMi4uM2I5NGI4YjMxMmZjN2IwYzhkODcyYzViNGY3OWI4NzMxMDNjMmNjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0wOCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjYWxs
X29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2VfeHh4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB3b3VsZCBsaWtlIHRvIHVzZSBDKysgc3RkOjpj
YWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2Ugc2luY2UKKyAgICAgICAgcHRocmVhZF9v
bmNlIGRlcGVuZHMgb24gcGxhdGZvcm0gZmVhdHVyZS4gVGhlIG90aGVyIGNvZGUgYWxyZWFkeQor
ICAgICAgICB1c2VzIHN0ZDo6Y2FsbF9vbmNlLiBUaGlzIHBhdGNoIGp1c3QgcmVtb3ZlcyBhIGZl
dyByZW1haW5pbmcgdXNlIG9mCisgICAgICAgIHB0aHJlYWRfb25jZV94eHguCisKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0xMi0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3ph
Ym9Ac29ueS5jb20+CiAKICAgICAgICAgU3dpdGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0
dWRpbyAyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjZkZGJjMTQ4YzFhOGNk
YWQ0ZmFmZDVjYzQ5NTI0ZDkxOTI5MzJmMy4uMWE4ODVmMTRlMDcyNWVmNTg0ODg0YWI5ZDkzYWI5
MTliYWJiMTVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDE3LTEyLTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFVzZSBzdGQ6OmNhbGxfb25jZSBpbnN0ZWFkIG9mIHB0aHJlYWRfb25jZV94eHgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBXZWJL
aXRFcnJvcy5tIHRvIFdlYktpdEVycm9ycy5tbSB0byB1c2UgQysrIGZlYXR1cmVzIGluY2x1ZGlu
ZyA8bXV0ZXg+LgorCisgICAgICAgICogTWlzYy9XZWJLaXRFcnJvcnMubW06IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tLgorICAgICAgICAo
K1tOU0Vycm9yIF9yZWdpc3RlcldlYktpdEVycm9yc10pOgorICAgICAgICAoLVtOU0Vycm9yIF93
ZWJraXRfaW5pdFdpdGhEb21haW46Y29kZTpVUkw6XSk6CisgICAgICAgICgrW05TRXJyb3IgX3dl
YmtpdF9lcnJvcldpdGhEb21haW46Y29kZTpVUkw6XSk6CisgICAgICAgICgrW05TRXJyb3IgX3dl
YktpdEVycm9yV2l0aERvbWFpbjpjb2RlOlVSTDpdKToKKyAgICAgICAgKCtbTlNFcnJvciBfd2Vi
S2l0RXJyb3JXaXRoQ29kZTpmYWlsaW5nVVJMOl0pOgorICAgICAgICAoLVtOU0Vycm9yIF9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTpjb250ZW50VVJMOnBsdWdpblBhZ2VVUkw6cGx1Z2luTmFtZTpN
SU1FVHlwZTpdKToKKyAgICAgICAgKCtbTlNFcnJvciBfd2Via2l0X2FkZEVycm9yc1dpdGhDb2Rl
c0FuZERlc2NyaXB0aW9uczppbkRvbWFpbjpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3Jh
Z2VNYW5hZ2VyLm1tOgorICAgICAgICAoK1tXZWJTdG9yYWdlTWFuYWdlciBfc3RvcmFnZURpcmVj
dG9yeVBhdGhdKToKKyAgICAgICAgKGluaXRpYWxpemVMb2NhbFN0b3JhZ2VQYXRoKTogRGVsZXRl
ZC4KKwogMjAxNy0xMi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHNvbWUgdW51c2VkIGNvZGUgZnJvbSBXZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgK
aW5kZXggNTZjYjZjZmRlNzc5OWMyMTBkMGY2ZDE4ZWRjOWJiMTkzZmRiODAxMC4uMzE0NDMzMDUz
Y2I5NzdiZmZlNDJkOTVjMGYwODJkODg1YzNmN2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTMxNSw3
ICszMTUsNyBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogICAgIC8vICAgIG9u
IHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24g
aGVyZS4KICAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6CiAgICAgLy8gICAgVGhyZWFkOjppbml0
aWFsaXplVExTS2V5KCkgaXMgaW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRp
bmcoKSwgZW5zdXJpbmcKLSAgICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBw
dGhyZWFkX29uY2UgbG9ja2VkIGNvbnRleHQuCisgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkg
Y2FsbGVkIGluIGEgc3RkOjpjYWxsX29uY2UgbG9ja2VkIGNvbnRleHQuCiAjaWYgIUhBVkUoRkFT
VF9UTFMpCiAgICAgaWYgKFVOTElLRUxZKFRocmVhZDo6c19rZXkgPT0gSW52YWxpZFRocmVhZFNw
ZWNpZmljS2V5KSkKICAgICAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCBl
NmMwOGY0MzIzNDE4MTBjMzBjZWFjZGI3NzdkODU4NTQ0YjZkNTZiLi5kYzgxNDAyNDJjNWE5MWFi
NGM4ZTRjN2QxMzA1NGQwNzg1NTlhY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTQ1LDcgKzQ1LDYgQEAKIAogdHlwZWRl
ZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlLCB2b2lkICpjb250ZXh0KTsKIAotc3RhdGljIHB0aHJlYWRfb25jZV90IElE
TlNjcmlwdFdoaXRlTGlzdEZpbGVSZWFkID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0aWMgdWlu
dDMyX3QgSUROU2NyaXB0V2hpdGVMaXN0WyhVU0NSSVBUX0NPREVfTElNSVQgKyAzMSkgLyAzMl07
CiAKIApAQCAtMjc3LDI2ICsyNzYsMjQgQEAgc3RhdGljIEJPT0wgcmVhZElETlNjcmlwdFdoaXRl
TGlzdEZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lKQogICAgIHJldHVybiBZRVM7CiB9CiAKLXN0YXRp
YyB2b2lkIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3Qodm9pZCkKLXsKLSAgICAvLyBSZWFkIHdoaXRl
IGxpc3QgZnJvbSBsaWJyYXJ5LgotICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JE
aXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ss
IFlFUyk7Ci0gICAgaW50IG51bURpcnMgPSBbZGlycyBjb3VudF07Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKLSAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxp
c3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIEZhbGwgYmFjayBvbiB3aGl0ZSBsaXN0IGluc2lkZSBidW5kbGUu
Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpA
ImNvbS5hcHBsZS5XZWJDb3JlIl07Ci0gICAgCi0gICAgaWYgKCFyZWFkSUROU2NyaXB0V2hpdGVM
aXN0RmlsZShbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIklETlNjcmlwdFdoaXRlTGlzdCIgb2ZU
eXBlOkAidHh0Il0pKQotICAgICAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgQk9PTCBhbGxDaGFy
YWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBs
ZW5ndGgpCiB7Ci0gICAgcHRocmVhZF9vbmNlKCZJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlUmVhZCwg
cmVhZElETlNjcmlwdFdoaXRlTGlzdCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICAvLyBSZWFkIHdoaXRlIGxp
c3QgZnJvbSBsaWJyYXJ5LgorICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9y
RGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNr
LCBZRVMpOworICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChyZWFkSURO
U2NyaXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGwgYmFjayBvbiB3aGl0
ZSBsaXN0IGluc2lkZSBidW5kbGUuCisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5k
bGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOworCisgICAgICAg
IGlmICghcmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6
QCJJRE5TY3JpcHRXaGl0ZUxpc3QiIG9mVHlwZTpAInR4dCJdKSkKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgfSk7CiAgICAgCiAgICAgaW50MzJfdCBpID0gMDsKICAgICBzdGQ6Om9wdGlvbmFs
PFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDlkMzE1NzdlODU1NmM4MjFj
ZjBkZmE1MTFiZmFkZGM5NTU1MTVhMzIuLjY4NGJjYTY1MDE3ODg2ZTQ2NTUwYjEyMzIzNWQzMmUz
YzA5NDE1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTE2MiwyMCArMTYyLDE2IEBAIHN0YXRpYyBGdWxsc2NyZWVu
V2luZG93VHJhY2tlciYgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKQogCiAjaWYgZGVmaW5lZChf
X2kzODZfXykKIAotc3RhdGljIHB0aHJlYWRfb25jZV90IHNob3VsZENhbGxSZWFsRGVidWdnZXJP
bmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci1zdGF0aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZh
bHNlOwotCi1zdGF0aWMgdm9pZCBpbml0U2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlcigpCi17Ci0gICAg
Y2hhciogdmFyID0gZ2V0ZW52KCJVU0VSQlJFQUsiKTsKLSAgICAKLSAgICBpZiAodmFyKQotICAg
ICAgICBpc1VzZXJicmVha1NldCA9IGF0b2kodmFyKTsKLX0KLQogc3RhdGljIGJvb2wgc2hvdWxk
Q2FsbFJlYWxEZWJ1Z2dlcigpCiB7Ci0gICAgcHRocmVhZF9vbmNlKCZzaG91bGRDYWxsUmVhbERl
YnVnZ2VyT25jZSwgaW5pdFNob3VsZENhbGxSZWFsRGVidWdnZXIpOworICAgIHN0YXRpYyBib29s
IGlzVXNlcmJyZWFrU2V0ID0gZmFsc2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBjaGFyKiB2YXIgPSBnZXRl
bnYoIlVTRVJCUkVBSyIpOworCisgICAgICAgIGlmICh2YXIpCisgICAgICAgICAgICBpc1VzZXJi
cmVha1NldCA9IGF0b2kodmFyKTsKKyAgICB9KTsKICAgICAKICAgICByZXR1cm4gaXNVc2VyYnJl
YWtTZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1OWFiMzQ2
NDNmNWUzOTU3MTc2ZjI4YWJkNjk1M2RmZTQ5NjU5ZTM0Li5lN2VjNDEyYTA3YjgyN2RhMDIzNWIx
NWM1YzQwOWRjZDkwODI2OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRm
b3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1NYWMuY21ha2UK
QEAgLTE4Myw3ICsxODMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfU09VUkNFUwogICAg
IG1hYy9NaXNjL1dlYkRvd25sb2FkLm1tCiAgICAgbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25h
cnkubW0KICAgICBtYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0KLSAgICBtYWMvTWlzYy9XZWJL
aXRFcnJvcnMubQorICAgIG1hYy9NaXNjL1dlYktpdEVycm9ycy5tbQogICAgIG1hYy9NaXNjL1dl
YktpdExvZ2dpbmcubQogICAgIG1hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCiAgICAg
bWFjL01pc2MvV2ViS2l0U3RhdGlzdGljcy5tCkBAIC0zNjYsNyArMzY2LDcgQEAgc2V0KEM5OV9G
SUxFUwogICAgIG1hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5t
CiAgICAgbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQogCi0gICAg
bWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KKyAgICBtYWMvTWlzYy9XZWJLaXRFcnJvcnMubW0KICAg
ICBtYWMvTWlzYy9XZWJLaXRMb2dnaW5nLm0KICAgICBtYWMvTWlzYy9XZWJLaXRTdGF0aXN0aWNz
Lm0KICAgICBtYWMvTWlzYy9XZWJLaXRTeXN0ZW1CaXRzLm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQyMjVjZDI0NGMwOTRlYjk2ZDRkYzQ0YjY0YjRhOTdjYWQ3YzQ2YTEuLmI2YWVhMTc5ZGM4
MzljMTJhMzFkNTVjMDgxNzlhODU2OGQ3NmU0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzE4LDcgKzMxOCw3IEBACiAJCTkzOTgxMEZGMDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25XaW5k
b3dGcmFtZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjdFQkVFOTUwM0Y5REJBMTAzQ0EwREU2IC8qIENhcmJvbldpbmRvd0ZyYW1lLm0gKi87IH07CiAJ
CTkzOTgxMTAwMDgyNEJGMDEwMDhERjAzOCAvKiBISVZpZXdBZGFwdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGN0VCRUU5QjAzRjlEQkExMDNDQTBE
RTYgLyogSElWaWV3QWRhcHRlci5tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
V25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKIAkJOTM5ODExMDEwODI0QkYwMTAw
OERGMDM4IC8qIENhcmJvblV0aWxzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNzlCOTc0OTA0MDE5OTM0MDM2OTA5RDIgLyogQ2FyYm9uVXRpbHMubSAq
LzsgfTsKLQkJOTM5ODExMDMwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdEVycm9ycy5tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MzBGOTgwM0ZCMUU2
NjAwMDQ3MzZFIC8qIFdlYktpdEVycm9ycy5tICovOyB9OworCQk5Mzk4MTEwMzA4MjRCRjAxMDA4
REYwMzggLyogV2ViS2l0RXJyb3JzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3MzBGOTgwM0ZCMUU2NjAwMDQ3MzZFIC8qIFdlYktpdEVycm9ycy5t
bSAqLzsgfTsKIAkJOTM5ODExMDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQThCNTJGMDQy
ODJCNTkwMENBMkQzQSAvKiBXZWJGcmFtZVZpZXcubW0gKi87IH07CiAJCTkzOTgxMTA3MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi87
IH07CiAJCTkzOTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDQzRjlCMDQy
OTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTEwMTcsNyAr
MTAxNyw3IEBACiAJCTdFNkZFRjA1MDg5ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0Rl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJN0U2RkVGMDYwODk4NUE3MjAwQzQ0QzNGIC8q
IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4
MzM5ODc4MTA1NDMwMTJEMDBFRTE0NkUgLyogV2ViRG9jdW1lbnRQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRG9jdW1lbnRQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwotCQk4MzczMEY5ODAzRkIxRTY2MDAwNDczNkUgLyogV2ViS2l0RXJyb3JzLm0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViS2l0RXJy
b3JzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk4MzczMEY5ODAzRkIxRTY2MDAwNDczNkUgLyogV2ViS2l0RXJyb3JzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJL
aXRFcnJvcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk4MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFyY2hp
dmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTgzNzM0MzVCMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBcmNo
aXZlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJODM5ODg0N0EwMzQyNkZCMDAwQkM1RjVFIC8qIFdlYk5TSW1hZ2VFeHRyYXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOU0lt
YWdlRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwpAQCAtMTc3Niw3ICsxNzc2LDcgQEAKIAkJCQlGNTI4RTNFQTAzMUU5MUFEMDFD
QTJBQ0EgLyogV2ViSWNvbkRhdGFiYXNlLm1tICovLAogCQkJCTI1NjhDNzJDMDE3NDkxMkQwRUNB
MTQ5RSAvKiBXZWJLaXQuaCAqLywKIAkJCQlGNTkyN0Q0RTAyRDI2QzVFMDFDQTJEQkIgLyogV2Vi
S2l0RXJyb3JzLmggKi8sCi0JCQkJODM3MzBGOTgwM0ZCMUU2NjAwMDQ3MzZFIC8qIFdlYktpdEVy
cm9ycy5tICovLAorCQkJCTgzNzMwRjk4MDNGQjFFNjYwMDA0NzM2RSAvKiBXZWJLaXRFcnJvcnMu
bW0gKi8sCiAJCQkJODRDQTVGN0UwNDI2ODVFODAwQ0EyQUNBIC8qIFdlYktpdEVycm9yc1ByaXZh
dGUuaCAqLywKIAkJCQk5M0FFQjE3RDAzMkMxNzM1MDA4NjM1Q0UgLyogV2ViS2l0TG9nZ2luZy5o
ICovLAogCQkJCTkzQUVCMTdFMDMyQzE3MzUwMDg2MzVDRSAvKiBXZWJLaXRMb2dnaW5nLm0gKi8s
CkBAIC0zNTkyLDcgKzM1OTIsNyBAQAogCQkJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEU0MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubSBpbiBTb3VyY2VzICov
LAogCQkJCTM3RDFEQ0E5MTA2NTkyOEMwMDY4RjdFRiAvKiBXZWJKU1BERkRvYy5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTkzOTgxMTAzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXRFcnJvcnMubSBp
biBTb3VyY2VzICovLAorCQkJCTkzOTgxMTAzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXRFcnJv
cnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhCRkNFNzE1NTMxMjI0MDA1QUZCMjUgLyogV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzMwODI0
QkYwMTAwOERGMDM4IC8qIFdlYktpdExvZ2dpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgx
MEM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJv
cnMubSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMzhlYmZmYjYyNmM1ODA1MmU4YmMwODQxZWQ4MWY2
ZDA2MDhhZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJvcnMubQorKysgL2Rldi9udWxs
CkBAIC0xLDE3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYktpdEVycm9ycy5oPgot
Ci0jaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2Vi
S2l0TGVnYWN5L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdExlZ2FjeS9X
ZWJOU1VSTEV4dHJhcy5oPgotCi0jaW1wb3J0IDxwdGhyZWFkLmg+Ci0KLU5TU3RyaW5nICpXZWJL
aXRFcnJvckRvbWFpbiA9IEAiV2ViS2l0RXJyb3JEb21haW4iOwotCi1OU1N0cmluZyAqIGNvbnN0
IFdlYktpdEVycm9yTUlNRVR5cGVLZXkgPSAgICAgICAgICAgICAgIEAiV2ViS2l0RXJyb3JNSU1F
VHlwZUtleSI7Ci1OU1N0cmluZyAqIGNvbnN0IFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSA9ICAg
ICAgICAgICAgIEAiV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5IjsKLU5TU3RyaW5nICogY29uc3Qg
V2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5ID0gICAgQCJXZWJLaXRFcnJvclBsdWdJ
blBhZ2VVUkxTdHJpbmdLZXkiOwotCi0vLyBQb2xpY3kgZXJyb3JzCi0jZGVmaW5lIFdlYktpdEVy
cm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUgVUlfU1RSSU5HX0lOVEVSTkFMKCJDb250
ZW50IHdpdGggc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW7igJl0IGJlIHNob3duIiwgIldlYktpdEVy
cm9yQ2Fubm90U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikKLSNkZWZpbmUgV2ViS2l0RXJyb3JE
ZXNjcmlwdGlvbkNhbm5vdFNob3dVUkwgVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgVVJMIGNhbuKA
mXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikKLSNk
ZWZpbmUgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lD
aGFuZ2UgVUlfU1RSSU5HX0lOVEVSTkFMKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktp
dEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpCi0j
ZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBVSV9T
VFJJTkdfSU5URVJOQUwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dCIsICJXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikKLSNk
ZWZpbmUgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRGaWx0
ZXIgVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBm
aWx0ZXIiLCAiV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyIGRlc2Ny
aXB0aW9uIikKLQotLy8gUGx1Zy1pbiBhbmQgamF2YSBlcnJvcnMKLSNkZWZpbmUgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4gVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgcGx1
Zy1pbiBjYW7igJl0IGJlIGZvdW5kIiwgIldlYktpdEVycm9yQ2Fubm90RmluZFBsdWdpbiBkZXNj
cmlwdGlvbiIpCi0jZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2lu
IFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIHBsdWctaW4gY2Fu4oCZdCBiZSBsb2FkZWQiLCAiV2Vi
S2l0RXJyb3JDYW5ub3RMb2FkUGx1Z2luIGRlc2NyaXB0aW9uIikKLSNkZWZpbmUgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSBVSV9TVFJJTkdfSU5URVJOQUwoIkphdmEgaXMg
dW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVzY3JpcHRpb24iKQot
I2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiBV
SV9TVFJJTkdfSU5URVJOQUwoIlBsdWctaW4gY2FuY2VsbGVkIiwgIldlYktpdEVycm9yUGx1Z0lu
Q2FuY2VsbGVkQ29ubmVjdGlvbiBkZXNjcmlwdGlvbiIpCi0jZGVmaW5lIFdlYktpdEVycm9yRGVz
Y3JpcHRpb25QbHVnSW5XaWxsSGFuZGxlTG9hZCBVSV9TVFJJTkdfSU5URVJOQUwoIlBsdWctaW4g
aGFuZGxlZCBsb2FkIiwgIldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRp
b24iKQotCi0vLyBHZW9sb2NhdGlvbnMgZXJyb3JzCi0KLSNkZWZpbmUgV2ViS2l0RXJyb3JEZXNj
cmlwdGlvbkdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duIFVJX1NUUklOR19JTlRFUk5BTCgiVGhl
IGN1cnJlbnQgbG9jYXRpb24gY2Fubm90IGJlIGZvdW5kLiIsICJXZWJLaXRFcnJvckdlb2xvY2F0
aW9uTG9jYXRpb25Vbmtub3duIGRlc2NyaXB0aW9uIikKLQotc3RhdGljIHB0aHJlYWRfb25jZV90
IHJlZ2lzdGVyRXJyb3JzQ29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwotc3RhdGljIHZvaWQg
cmVnaXN0ZXJFcnJvcnModm9pZCk7Ci0KLUBpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChXZWJLaXRF
eHRyYXMpCi0KLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnMgPSBuaWw7
Ci0KLSsgKHZvaWQpX3JlZ2lzdGVyV2ViS2l0RXJyb3JzCi17Ci0gICAgcHRocmVhZF9vbmNlKCZy
ZWdpc3RlckVycm9yc0NvbnRyb2wsIHJlZ2lzdGVyRXJyb3JzKTsKLX0KLQotLShpZClfd2Via2l0
X2luaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb2RlOihpbnQpY29kZSBVUkw6KE5T
VVJMICopVVJMCi17Ci0gICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnNEaWN0OwotICAgIE5T
U3RyaW5nICpsb2NhbGl6ZWREZXNjOwotICAgIE5TRGljdGlvbmFyeSAqZGljdDsKLSAgICAvLyBp
bnNlcnQgYSBsb2NhbGl6ZWQgc3RyaW5nIGhlcmUgZm9yIHRob3NlIGZvbGtzIG5vdCBzYXZ2eSB0
byBvdXIgY2F0ZWdvcnkgbWV0aG9kcwotICAgIGRlc2NyaXB0aW9uc0RpY3QgPSBbZGVzY3JpcHRp
b25zIG9iamVjdEZvcktleTpkb21haW5dOwotICAgIGxvY2FsaXplZERlc2MgPSBkZXNjcmlwdGlv
bnNEaWN0ID8gW2Rlc2NyaXB0aW9uc0RpY3Qgb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJX
aXRoSW50OmNvZGVdXSA6IG5pbDsKLSAgICBkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBVUkwsIEAiTlNFcnJvckZhaWxpbmdVUkxLZXki
LAotICAgICAgICBbVVJMIGFic29sdXRlU3RyaW5nXSwgQCJOU0Vycm9yRmFpbGluZ1VSTFN0cmlu
Z0tleSIsCi0gICAgICAgIGxvY2FsaXplZERlc2MsIE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXks
Ci0gICAgICAgIG5pbF07Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRG9tYWluOmRvbWFpbiBj
b2RlOmNvZGUgdXNlckluZm86ZGljdF07Ci19Ci0KLSsoaWQpX3dlYmtpdF9lcnJvcldpdGhEb21h
aW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwgKilVUkwKLXsK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX3dlYmtpdF9pbml0V2l0aERvbWFpbjpkb21haW4g
Y29kZTpjb2RlIFVSTDpVUkxdIGF1dG9yZWxlYXNlXTsKLX0KLQotKyAoTlNFcnJvciAqKV93ZWJL
aXRFcnJvcldpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDoo
TlNVUkwgKilVUkwKLXsKLSAgICBbc2VsZiBfcmVnaXN0ZXJXZWJLaXRFcnJvcnNdOwotICAgIHJl
dHVybiBbc2VsZiBfd2Via2l0X2Vycm9yV2l0aERvbWFpbjpkb21haW4gY29kZTpjb2RlIFVSTDpV
UkxdOwotfQotCi0rIChOU0Vycm9yICopX3dlYktpdEVycm9yV2l0aENvZGU6KGludCljb2RlIGZh
aWxpbmdVUkw6KE5TU3RyaW5nICopVVJMU3RyaW5nCi17Ci0gICAgcmV0dXJuIFtzZWxmIF93ZWJL
aXRFcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpjb2RlIFVSTDpbTlNVUkwg
X3dlYmtpdF9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOlVSTFN0cmluZ11dOwotfQotCi0tIChpZClf
aW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6KGludCljb2RlCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRlbnRVUkw6KE5TVVJMICopY29udGVudFVSTAotICAgICAgICAgICAgICAgICBwbHVnaW5QYWdl
VVJMOihOU1VSTCAqKXBsdWdpblBhZ2VVUkwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2luTmFt
ZTooTlNTdHJpbmcgKilwbHVnaW5OYW1lCi0gICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6
KE5TU3RyaW5nICopTUlNRVR5cGUKLXsKLSAgICBbW3NlbGYgY2xhc3NdIF9yZWdpc3RlcldlYktp
dEVycm9yc107Ci0gICAgCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIE5TRGljdGlvbmFyeSAqZGVzY3Jp
cHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gPSBbZGVzY3JpcHRpb25zIG9iamVjdEZvcktleTpX
ZWJLaXRFcnJvckRvbWFpbl07Ci0gICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0g
W2Rlc2NyaXB0aW9uc0ZvcldlYktpdEVycm9yRG9tYWluIG9iamVjdEZvcktleTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpjb2RlXV07Ci0gICAgaWYgKGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uIGZvcktleTpOU0xv
Y2FsaXplZERlc2NyaXB0aW9uS2V5XTsKLSAgICBpZiAoY29udGVudFVSTCkgewotICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OmNvbnRlbnRVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxL
ZXkiXTsKLSAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpbY29udGVudFVSTCBfd2ViX3VzZXJW
aXNpYmxlU3RyaW5nXSBmb3JLZXk6TlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV07
Ci0gICAgfQotICAgIGlmIChwbHVnaW5QYWdlVVJMKSB7Ci0gICAgICAgIFt1c2VySW5mbyBzZXRP
YmplY3Q6W3BsdWdpblBhZ2VVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ10gZm9yS2V5OldlYktp
dEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleV07Ci0gICAgfQotICAgIGlmIChwbHVnaW5OYW1l
KSB7Ci0gICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGx1Z2luTmFtZSBmb3JLZXk6V2ViS2l0
RXJyb3JQbHVnSW5OYW1lS2V5XTsKLSAgICB9Ci0gICAgaWYgKE1JTUVUeXBlKSB7Ci0gICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6TUlNRVR5cGUgZm9yS2V5OldlYktpdEVycm9yTUlNRVR5cGVL
ZXldOwotICAgIH0KLQotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm9Db3B5ID0gW3VzZXJJbmZv
IGNvdW50XSA+IDAgPyBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OnVz
ZXJJbmZvXSA6IG5pbDsKLSAgICBbdXNlckluZm8gcmVsZWFzZV07Ci0gICAgTlNFcnJvciAqZXJy
b3IgPSBbc2VsZiBpbml0V2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgdXNl
ckluZm86dXNlckluZm9Db3B5XTsKLSAgICBbdXNlckluZm9Db3B5IHJlbGVhc2VdOwotICAgIAot
ICAgIHJldHVybiBlcnJvcjsKLX0KLQotKyAodm9pZClfd2Via2l0X2FkZEVycm9yc1dpdGhDb2Rl
c0FuZERlc2NyaXB0aW9uczooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeSBpbkRvbWFpbjooTlNT
dHJpbmcgKilkb21haW4KLXsKLSAgICBpZiAoIWRlc2NyaXB0aW9ucykKLSAgICAgICAgZGVzY3Jp
cHRpb25zID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIFtkZXNj
cmlwdGlvbnMgc2V0T2JqZWN0OmRpY3Rpb25hcnkgZm9yS2V5OmRvbWFpbl07Ci19Ci0KLXN0YXRp
YyB2b2lkIHJlZ2lzdGVyRXJyb3JzKCkKLXsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9
IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpk
aWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAg
ICAvLyBQb2xpY3kgZXJyb3JzCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RT
aG93TUlNRVR5cGUsICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBX
ZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZV0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3Jp
cHRpb25DYW5ub3RTaG93VVJMLCAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkxdLAotICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5
Q2hhbmdlXSwKLSAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9y
Q2Fubm90VXNlUmVzdHJpY3RlZFBvcnRdLAotICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9u
RnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyXSwKLQotICAg
ICAgICAvLyBQbHVnLWluIGFuZCBqYXZhIGVycm9ycwotICAgICAgICBXZWJLaXRFcnJvckRlc2Ny
aXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luXSwKLSAgICAgICAgV2ViS2l0
RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbl0sCi0gICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25KYXZhVW5hdmFpbGFibGUsICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZV0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5jZWxsZWRDb25uZWN0
aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvclBsdWdJ
bkNhbmNlbGxlZENvbm5lY3Rpb25dLAotICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1
Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDogV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZF0sCi0KLSAgICAgICAgLy8gR2VvbG9j
YXRpb24gZXJyb3JzCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxv
Y2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRF
cnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtO
U0Vycm9yIF93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5kRGVzY3JpcHRpb25zOmRpY3QgaW5E
b21haW46V2ViS2l0RXJyb3JEb21haW5dOwotCi0gICAgW3Bvb2wgZHJhaW5dOwotfQotCi1AZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRhMmE5MDVjN2FkZTRhZjkzNzkyZDkwZDBiN2QzZTllYTZmOGQ5MmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tbQpAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJLaXRFcnJvcnMuaD4KKworI2lt
cG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPG11dGV4Pgor
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdExlZ2FjeS9XZWJOU1VSTEV4dHJhcy5oPgorCitOU1N0cmluZyAqV2ViS2l0RXJyb3JEb21h
aW4gPSBAIldlYktpdEVycm9yRG9tYWluIjsKKworTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRFcnJv
ck1JTUVUeXBlS2V5ID0gICAgICAgICAgICAgICBAIldlYktpdEVycm9yTUlNRVR5cGVLZXkiOwor
TlNTdHJpbmcgKiBjb25zdCBXZWJLaXRFcnJvclBsdWdJbk5hbWVLZXkgPSAgICAgICAgICAgICBA
IldlYktpdEVycm9yUGx1Z0luTmFtZUtleSI7CitOU1N0cmluZyAqIGNvbnN0IFdlYktpdEVycm9y
UGx1Z0luUGFnZVVSTFN0cmluZ0tleSA9ICAgIEAiV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3Ry
aW5nS2V5IjsKKworLy8gUG9saWN5IGVycm9ycworI2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0
aW9uQ2Fubm90U2hvd01JTUVUeXBlIFVJX1NUUklOR19JTlRFUk5BTCgiQ29udGVudCB3aXRoIHNw
ZWNpZmllZCBNSU1FIHR5cGUgY2Fu4oCZdCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNo
b3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25D
YW5ub3RTaG93VVJMIFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIFVSTCBjYW7igJl0IGJlIHNob3du
IiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlIFVJX1NU
UklOR19JTlRFUk5BTCgiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKQorI2RlZmluZSBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgVUlfU1RSSU5HX0lOVEVS
TkFMKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0
RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyIFVJX1NUUklO
R19JTlRFUk5BTCgiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgZmlsdGVyIiwgIldl
YktpdEVycm9yRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciBkZXNjcmlwdGlvbiIpCisK
Ky8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRp
b25DYW5ub3RGaW5kUGx1Z2luIFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIHBsdWctaW4gY2Fu4oCZ
dCBiZSBmb3VuZCIsICJXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnaW4gZGVzY3JpcHRpb24iKQor
I2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90TG9hZFBsdWdpbiBVSV9TVFJJTkdf
SU5URVJOQUwoIlRoZSBwbHVnLWluIGNhbuKAmXQgYmUgbG9hZGVkIiwgIldlYktpdEVycm9yQ2Fu
bm90TG9hZFBsdWdpbiBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRp
b25KYXZhVW5hdmFpbGFibGUgVUlfU1RSSU5HX0lOVEVSTkFMKCJKYXZhIGlzIHVuYXZhaWxhYmxl
IiwgIldlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlIGRlc2NyaXB0aW9uIikKKyNkZWZpbmUgV2Vi
S2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24gVUlfU1RSSU5HX0lO
VEVSTkFMKCJQbHVnLWluIGNhbmNlbGxlZCIsICJXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENv
bm5lY3Rpb24gZGVzY3JpcHRpb24iKQorI2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1
Z0luV2lsbEhhbmRsZUxvYWQgVUlfU1RSSU5HX0lOVEVSTkFMKCJQbHVnLWluIGhhbmRsZWQgbG9h
ZCIsICJXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikKKworLy8g
R2VvbG9jYXRpb25zIGVycm9ycworCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9s
b2NhdGlvbkxvY2F0aW9uVW5rbm93biBVSV9TVFJJTkdfSU5URVJOQUwoIlRoZSBjdXJyZW50IGxv
Y2F0aW9uIGNhbm5vdCBiZSBmb3VuZC4iLCAiV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9u
VW5rbm93biBkZXNjcmlwdGlvbiIpCisKK0BpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChXZWJLaXRF
eHRyYXMpCisKK3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnMgPSBuaWw7
CisKKysgKHZvaWQpX3JlZ2lzdGVyV2ViS2l0RXJyb3JzCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBOU0F1
dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwor
CisgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgIC8vIFBvbGljeSBlcnJvcnMKKyAgICAgICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUsICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1F
VHlwZV0sCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJy
b3JDYW5ub3RTaG93VVJMXSwKKyAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25GcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OiBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2VdLAorICAgICAg
ICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90VXNlUmVz
dHJpY3RlZFBvcnRdLAorICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9h
ZEJsb2NrZWRCeUNvbnRlbnRGaWx0ZXIsICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdl
YktpdEVycm9yRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlcl0sCisKKyAgICAgICAgICAg
IC8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2Ny
aXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luXSwKKyAgICAgICAgICAgIFdl
YktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW5dLAor
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSwgICAgICAg
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9ySmF2YVVu
YXZhaWxhYmxlXSwKKyAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5j
ZWxsZWRDb25uZWN0aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJL
aXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb25dLAorICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvblBsdWdJbldpbGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWRdLAorCisg
ICAgICAgICAgICAvLyBHZW9sb2NhdGlvbiBlcnJvcnMKKyAgICAgICAgICAgIFdlYktpdEVycm9y
RGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwK
KyAgICAgICAgICAgIG5pbF07CisKKyAgICAgICAgW05TRXJyb3IgX3dlYmtpdF9hZGRFcnJvcnNX
aXRoQ29kZXNBbmREZXNjcmlwdGlvbnM6ZGljdCBpbkRvbWFpbjpXZWJLaXRFcnJvckRvbWFpbl07
CisKKyAgICAgICAgW3Bvb2wgZHJhaW5dOworICAgIH0pOworfQorCistKGlkKV93ZWJraXRfaW5p
dFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwg
KilVUkwKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmRlc2NyaXB0aW9uc0RpY3Q7CisgICAgTlNTdHJp
bmcgKmxvY2FsaXplZERlc2M7CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0OworICAgIC8vIGluc2Vy
dCBhIGxvY2FsaXplZCBzdHJpbmcgaGVyZSBmb3IgdGhvc2UgZm9sa3Mgbm90IHNhdnZ5IHRvIG91
ciBjYXRlZ29yeSBtZXRob2RzCisgICAgZGVzY3JpcHRpb25zRGljdCA9IFtkZXNjcmlwdGlvbnMg
b2JqZWN0Rm9yS2V5OmRvbWFpbl07CisgICAgbG9jYWxpemVkRGVzYyA9IGRlc2NyaXB0aW9uc0Rp
Y3QgPyBbZGVzY3JpcHRpb25zRGljdCBvYmplY3RGb3JLZXk6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6Y29kZV1dIDogbmlsOworICAgIGRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6CisgICAgICAgIFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCisg
ICAgICAgIFtVUkwgYWJzb2x1dGVTdHJpbmddLCBAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5
IiwKKyAgICAgICAgbG9jYWxpemVkRGVzYywgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwKKyAg
ICAgICAgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9tYWluIGNvZGU6
Y29kZSB1c2VySW5mbzpkaWN0XTsKK30KKworKyhpZClfd2Via2l0X2Vycm9yV2l0aERvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNvZGUgVVJMOihOU1VSTCAqKVVSTAoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBfd2Via2l0X2luaXRXaXRoRG9tYWluOmRvbWFpbiBjb2Rl
OmNvZGUgVVJMOlVSTF0gYXV0b3JlbGVhc2VdOworfQorCisrIChOU0Vycm9yICopX3dlYktpdEVy
cm9yV2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNvZGUgVVJMOihOU1VS
TCAqKVVSTAoreworICAgIFtzZWxmIF9yZWdpc3RlcldlYktpdEVycm9yc107CisgICAgcmV0dXJu
IFtzZWxmIF93ZWJraXRfZXJyb3JXaXRoRG9tYWluOmRvbWFpbiBjb2RlOmNvZGUgVVJMOlVSTF07
Cit9CisKKysgKE5TRXJyb3IgKilfd2ViS2l0RXJyb3JXaXRoQ29kZTooaW50KWNvZGUgZmFpbGlu
Z1VSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dlYktpdEVy
cm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgVVJMOltOU1VSTCBfd2Vi
a2l0X1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6VVJMU3RyaW5nXV07Cit9CisKKy0gKGlkKV9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTooaW50KWNvZGUKKyAgICAgICAgICAgICAgICAgICAgY29udGVu
dFVSTDooTlNVUkwgKiljb250ZW50VVJMCisgICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6
KE5TVVJMICopcGx1Z2luUGFnZVVSTAorICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOihO
U1N0cmluZyAqKXBsdWdpbk5hbWUKKyAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTooTlNT
dHJpbmcgKilNSU1FVHlwZQoreworICAgIFtbc2VsZiBjbGFzc10gX3JlZ2lzdGVyV2ViS2l0RXJy
b3JzXTsKKyAgICAKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlv
bnNGb3JXZWJLaXRFcnJvckRvbWFpbiA9IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OldlYktp
dEVycm9yRG9tYWluXTsKKyAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVz
Y3JpcHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1i
ZXJXaXRoSW50OmNvZGVdXTsKKyAgICBpZiAobG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6bG9jYWxpemVkRGVzY3JpcHRpb24gZm9yS2V5Ok5TTG9jYWxp
emVkRGVzY3JpcHRpb25LZXldOworICAgIGlmIChjb250ZW50VVJMKSB7CisgICAgICAgIFt1c2Vy
SW5mbyBzZXRPYmplY3Q6Y29udGVudFVSTCBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJd
OworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0Oltjb250ZW50VVJMIF93ZWJfdXNlclZpc2li
bGVTdHJpbmddIGZvcktleTpOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XTsKKyAg
ICB9CisgICAgaWYgKHBsdWdpblBhZ2VVUkwpIHsKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVj
dDpbcGx1Z2luUGFnZVVSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSBmb3JLZXk6V2ViS2l0RXJy
b3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5XTsKKyAgICB9CisgICAgaWYgKHBsdWdpbk5hbWUpIHsK
KyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwbHVnaW5OYW1lIGZvcktleTpXZWJLaXRFcnJv
clBsdWdJbk5hbWVLZXldOworICAgIH0KKyAgICBpZiAoTUlNRVR5cGUpIHsKKyAgICAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpNSU1FVHlwZSBmb3JLZXk6V2ViS2l0RXJyb3JNSU1FVHlwZUtleV07
CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mb0NvcHkgPSBbdXNlckluZm8gY291
bnRdID4gMCA/IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6dXNlcklu
Zm9dIDogbmlsOworICAgIFt1c2VySW5mbyByZWxlYXNlXTsKKyAgICBOU0Vycm9yICplcnJvciA9
IFtzZWxmIGluaXRXaXRoRG9tYWluOldlYktpdEVycm9yRG9tYWluIGNvZGU6Y29kZSB1c2VySW5m
bzp1c2VySW5mb0NvcHldOworICAgIFt1c2VySW5mb0NvcHkgcmVsZWFzZV07CisgICAgCisgICAg
cmV0dXJuIGVycm9yOworfQorCisrICh2b2lkKV93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5k
RGVzY3JpcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5IGluRG9tYWluOihOU1N0cmlu
ZyAqKWRvbWFpbgoreworICAgIGlmICghZGVzY3JpcHRpb25zKQorICAgICAgICBkZXNjcmlwdGlv
bnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworCisgICAgW2Rlc2NyaXB0
aW9ucyBzZXRPYmplY3Q6ZGljdGlvbmFyeSBmb3JLZXk6ZG9tYWluXTsKK30KKworQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIu
bW0KaW5kZXggOGZlYmQ0MmQ2MDBhNTZjOWM2NTU0ZTYwODNjYjhlNWMzYmU1N2Y3Ny4uM2NiYzA1
NjIyMzE1NDgxNzk1MTRhMzE4MDNmZGUyMzAzNGEwZTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBAIC0zMywxNyAr
MzMsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2ltcG9ydCA8cHRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNT
dHJpbmcgKiBjb25zdCBXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOwogTlNTdHJpbmcgKiBjb25zdCBX
ZWJTdG9yYWdlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uID0gQCJXZWJTdG9yYWdlRGlkTW9k
aWZ5T3JpZ2luTm90aWZpY2F0aW9uIjsKIAotc3RhdGljIE5TU3RyaW5nICpzTG9jYWxTdG9yYWdl
UGF0aDsKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2NhbFN0b3JhZ2VQYXRoKCk7Ci1zdGF0aWMg
cHRocmVhZF9vbmNlX3QgcmVnaXN0ZXJMb2NhbFN0b3JhZ2VQYXRoID0gUFRIUkVBRF9PTkNFX0lO
SVQ7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXZWJTdG9yYWdlTWFuYWdlcgogCiArIChXZWJTdG9yYWdl
TWFuYWdlciAqKXNoYXJlZFdlYlN0b3JhZ2VNYW5hZ2VyCkBAIC0xMDksNyArMTA0LDE4IEBAIC0g
KHZvaWQpc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UKIAogKyAoTlNTdHJpbmcgKilf
c3RvcmFnZURpcmVjdG9yeVBhdGgKIHsKLSAgICBwdGhyZWFkX29uY2UoJnJlZ2lzdGVyTG9jYWxT
dG9yYWdlUGF0aCwgaW5pdGlhbGl6ZUxvY2FsU3RvcmFnZVBhdGgpOworICAgIHN0YXRpYyBOU1N0
cmluZyAqc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBOU1VzZXJEZWZhdWx0cyAq
ZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOworICAgICAg
ICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURp
cmVjdG9yeURlZmF1bHRzS2V5XTsKKyAgICAgICAgaWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAh
W3NMb2NhbFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAg
ICAgICAgICAgIE5TQXJyYXkgKnBhdGhzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRv
bWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOworICAgICAg
ICAgICAgTlNTdHJpbmcgKmxpYnJhcnlEaXJlY3RvcnkgPSBbcGF0aHMgb2JqZWN0QXRJbmRleDow
XTsKKyAgICAgICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOworICAg
ICAgICB9CisgICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW1tzTG9jYWxTdG9yYWdlUGF0aCBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSByZXRhaW5dOworICAgIH0pOwogICAgIHJldHVybiBz
TG9jYWxTdG9yYWdlUGF0aDsKIH0KIApAQCAtMTIzLDE4ICsxMjksNiBAQCArICh2b2lkKWNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcwogICAgIFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKIH0KIAotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUxvY2FsU3RvcmFnZVBhdGgoKQotewotICAgIE5TVXNlckRlZmF1bHRz
ICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107Ci0gICAg
c0xvY2FsU3RvcmFnZVBhdGggPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJl
Y3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAhW3NMb2Nh
bFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAg
TlNBcnJheSAqcGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xp
YnJhcnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7Ci0gICAgICAgIE5TU3RyaW5n
ICpsaWJyYXJ5RGlyZWN0b3J5ID0gW3BhdGhzIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgICAgIHNM
b2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOwotICAgIH0KLSAgICBzTG9jYWxTdG9y
YWdlUGF0aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0g
cmV0YWluXTsKLX0KLQogdm9pZCBXZWJLaXRJbml0aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KCkK
IHsKICAgICBzdGF0aWMgQk9PTCBpbml0aWFsaXplZCA9IE5POwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328842</attachid>
            <date>2017-12-08 11:37:41 -0800</date>
            <delta_ts>2017-12-08 11:48:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180591-20171209043739.patch</filename>
            <type>text/plain</type>
            <size>35663</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZhNzc4NjZjZWRkOTVkOGUyZTBiYzc1
NTJiZDgwOTdhYzAxMjY1NGIuLmViMTljZWQzY2EyYzkwNWM5MWVjZWE4ZTU2ZTQxNTg4ODVkNjkx
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIHN0ZDo6Y2FsbF9vbmNlIGluc3RlYWQg
b2YgcHRocmVhZF9vbmNlX3h4eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRml4IHRoZSBjb21tZW50LgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5o
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1cnJlbnQpOgorCisyMDE3LTEyLTA4ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtXVEZdW0xpbnV4XVtH
VEtdIEZpeCBhIG1pbm9yIGJ1ZyBpbiBnZW5lcmljL1dvcmtRdWV1ZSB3aGVuIFdvcmtRdWV1ZSBp
cyBpbW1lZGlhdGVseSBkZXN0cm95ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDU4NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI1MTQyY2Y2MGYyYmVlZGM2
NjAxZmE2Njc3MmYyYjMzM2FjYzAzNC4uZTBmN2Q4ZGFmZTk4MTc0OWI5ZjQxNGUxNGRhMDBkZjEy
ZTAzYWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEyLTA4ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBzdGQ6OmNhbGxf
b25jZSBpbnN0ZWFkIG9mIHB0aHJlYWRfb25jZV94eHgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjph
bGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisKIDIwMTctMTItMDggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGVycm9yIGhhbmRsaW5nIGlu
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyMzExYWU2YmJhNTZmMTY4NTUxZjJh
ZWE2ZTdlOGZmNTRhMWU5MjAuLjM5ZjZhMDc4NjE0OWQ2YmZhZmM5MGM2OWFkNjQ3ZDE5MWY1YWIx
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIHN0ZDo6Y2FsbF9vbmNlIGlu
c3RlYWQgb2YgcHRocmVhZF9vbmNlX3h4eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpzaG91bGRDYWxsUmVhbERlYnVnZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6aW5pdFNob3VsZENhbGxSZWFsRGVidWdnZXIpOiBEZWxldGVkLgorCiAyMDE3LTEyLTA4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UGFzcyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gaW5zdGVhZCBvZiBXZWJzaXRlUG9s
aWNpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYmJkZmE5MGY0M2M2MWZjOWNmYTk5NDFjN2Y0
MGFiZjUxZjUyYWUyMi4uM2I5NGI4YjMxMmZjN2IwYzhkODcyYzViNGY3OWI4NzMxMDNjMmNjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMi0wOCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjYWxs
X29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2VfeHh4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB3b3VsZCBsaWtlIHRvIHVzZSBDKysgc3RkOjpj
YWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2Ugc2luY2UKKyAgICAgICAgcHRocmVhZF9v
bmNlIGRlcGVuZHMgb24gcGxhdGZvcm0gZmVhdHVyZS4gVGhlIG90aGVyIGNvZGUgYWxyZWFkeQor
ICAgICAgICB1c2VzIHN0ZDo6Y2FsbF9vbmNlLiBUaGlzIHBhdGNoIGp1c3QgcmVtb3ZlcyBhIGZl
dyByZW1haW5pbmcgdXNlIG9mCisgICAgICAgIHB0aHJlYWRfb25jZV94eHguCisKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0xMi0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3ph
Ym9Ac29ueS5jb20+CiAKICAgICAgICAgU3dpdGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0
dWRpbyAyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjZkZGJjMTQ4YzFhOGNk
YWQ0ZmFmZDVjYzQ5NTI0ZDkxOTI5MzJmMy4uMWE4ODVmMTRlMDcyNWVmNTg0ODg0YWI5ZDkzYWI5
MTliYWJiMTVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDE3LTEyLTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFVzZSBzdGQ6OmNhbGxfb25jZSBpbnN0ZWFkIG9mIHB0aHJlYWRfb25jZV94eHgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBXZWJL
aXRFcnJvcy5tIHRvIFdlYktpdEVycm9ycy5tbSB0byB1c2UgQysrIGZlYXR1cmVzIGluY2x1ZGlu
ZyA8bXV0ZXg+LgorCisgICAgICAgICogTWlzYy9XZWJLaXRFcnJvcnMubW06IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tLgorICAgICAgICAo
K1tOU0Vycm9yIF9yZWdpc3RlcldlYktpdEVycm9yc10pOgorICAgICAgICAoLVtOU0Vycm9yIF93
ZWJraXRfaW5pdFdpdGhEb21haW46Y29kZTpVUkw6XSk6CisgICAgICAgICgrW05TRXJyb3IgX3dl
YmtpdF9lcnJvcldpdGhEb21haW46Y29kZTpVUkw6XSk6CisgICAgICAgICgrW05TRXJyb3IgX3dl
YktpdEVycm9yV2l0aERvbWFpbjpjb2RlOlVSTDpdKToKKyAgICAgICAgKCtbTlNFcnJvciBfd2Vi
S2l0RXJyb3JXaXRoQ29kZTpmYWlsaW5nVVJMOl0pOgorICAgICAgICAoLVtOU0Vycm9yIF9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTpjb250ZW50VVJMOnBsdWdpblBhZ2VVUkw6cGx1Z2luTmFtZTpN
SU1FVHlwZTpdKToKKyAgICAgICAgKCtbTlNFcnJvciBfd2Via2l0X2FkZEVycm9yc1dpdGhDb2Rl
c0FuZERlc2NyaXB0aW9uczppbkRvbWFpbjpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3Jh
Z2VNYW5hZ2VyLm1tOgorICAgICAgICAoK1tXZWJTdG9yYWdlTWFuYWdlciBfc3RvcmFnZURpcmVj
dG9yeVBhdGhdKToKKyAgICAgICAgKGluaXRpYWxpemVMb2NhbFN0b3JhZ2VQYXRoKTogRGVsZXRl
ZC4KKwogMjAxNy0xMi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHNvbWUgdW51c2VkIGNvZGUgZnJvbSBXZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgK
aW5kZXggNTZjYjZjZmRlNzc5OWMyMTBkMGY2ZDE4ZWRjOWJiMTkzZmRiODAxMC4uMzE0NDMzMDUz
Y2I5NzdiZmZlNDJkOTVjMGYwODJkODg1YzNmN2ViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTMxNSw3
ICszMTUsNyBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogICAgIC8vICAgIG9u
IHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24g
aGVyZS4KICAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6CiAgICAgLy8gICAgVGhyZWFkOjppbml0
aWFsaXplVExTS2V5KCkgaXMgaW5pdGlhbGx5IGNhbGxlZCBmcm9tIGluaXRpYWxpemVUaHJlYWRp
bmcoKSwgZW5zdXJpbmcKLSAgICAvLyAgICB0aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBw
dGhyZWFkX29uY2UgbG9ja2VkIGNvbnRleHQuCisgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkg
Y2FsbGVkIGluIGEgc3RkOjpjYWxsX29uY2UgbG9ja2VkIGNvbnRleHQuCiAjaWYgIUhBVkUoRkFT
VF9UTFMpCiAgICAgaWYgKFVOTElLRUxZKFRocmVhZDo6c19rZXkgPT0gSW52YWxpZFRocmVhZFNw
ZWNpZmljS2V5KSkKICAgICAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCBl
NmMwOGY0MzIzNDE4MTBjMzBjZWFjZGI3NzdkODU4NTQ0YjZkNTZiLi5kYzgxNDAyNDJjNWE5MWFi
NGM4ZTRjN2QxMzA1NGQwNzg1NTlhY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTQ1LDcgKzQ1LDYgQEAKIAogdHlwZWRl
ZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlLCB2b2lkICpjb250ZXh0KTsKIAotc3RhdGljIHB0aHJlYWRfb25jZV90IElE
TlNjcmlwdFdoaXRlTGlzdEZpbGVSZWFkID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0aWMgdWlu
dDMyX3QgSUROU2NyaXB0V2hpdGVMaXN0WyhVU0NSSVBUX0NPREVfTElNSVQgKyAzMSkgLyAzMl07
CiAKIApAQCAtMjc3LDI2ICsyNzYsMjQgQEAgc3RhdGljIEJPT0wgcmVhZElETlNjcmlwdFdoaXRl
TGlzdEZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lKQogICAgIHJldHVybiBZRVM7CiB9CiAKLXN0YXRp
YyB2b2lkIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3Qodm9pZCkKLXsKLSAgICAvLyBSZWFkIHdoaXRl
IGxpc3QgZnJvbSBsaWJyYXJ5LgotICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JE
aXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ss
IFlFUyk7Ci0gICAgaW50IG51bURpcnMgPSBbZGlycyBjb3VudF07Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKLSAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxp
c3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIC8vIEZhbGwgYmFjayBvbiB3aGl0ZSBsaXN0IGluc2lkZSBidW5kbGUu
Ci0gICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpA
ImNvbS5hcHBsZS5XZWJDb3JlIl07Ci0gICAgCi0gICAgaWYgKCFyZWFkSUROU2NyaXB0V2hpdGVM
aXN0RmlsZShbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIklETlNjcmlwdFdoaXRlTGlzdCIgb2ZU
eXBlOkAidHh0Il0pKQotICAgICAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgQk9PTCBhbGxDaGFy
YWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBs
ZW5ndGgpCiB7Ci0gICAgcHRocmVhZF9vbmNlKCZJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlUmVhZCwg
cmVhZElETlNjcmlwdFdoaXRlTGlzdCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICAvLyBSZWFkIHdoaXRlIGxp
c3QgZnJvbSBsaWJyYXJ5LgorICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9y
RGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNr
LCBZRVMpOworICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChyZWFkSURO
U2NyaXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGwgYmFjayBvbiB3aGl0
ZSBsaXN0IGluc2lkZSBidW5kbGUuCisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5k
bGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOworCisgICAgICAg
IGlmICghcmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6
QCJJRE5TY3JpcHRXaGl0ZUxpc3QiIG9mVHlwZTpAInR4dCJdKSkKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgfSk7CiAgICAgCiAgICAgaW50MzJfdCBpID0gMDsKICAgICBzdGQ6Om9wdGlvbmFs
PFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDlkMzE1NzdlODU1NmM4MjFj
ZjBkZmE1MTFiZmFkZGM5NTU1MTVhMzIuLjY4NGJjYTY1MDE3ODg2ZTQ2NTUwYjEyMzIzNWQzMmUz
YzA5NDE1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTE2MiwyMCArMTYyLDE2IEBAIHN0YXRpYyBGdWxsc2NyZWVu
V2luZG93VHJhY2tlciYgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKQogCiAjaWYgZGVmaW5lZChf
X2kzODZfXykKIAotc3RhdGljIHB0aHJlYWRfb25jZV90IHNob3VsZENhbGxSZWFsRGVidWdnZXJP
bmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci1zdGF0aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZh
bHNlOwotCi1zdGF0aWMgdm9pZCBpbml0U2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlcigpCi17Ci0gICAg
Y2hhciogdmFyID0gZ2V0ZW52KCJVU0VSQlJFQUsiKTsKLSAgICAKLSAgICBpZiAodmFyKQotICAg
ICAgICBpc1VzZXJicmVha1NldCA9IGF0b2kodmFyKTsKLX0KLQogc3RhdGljIGJvb2wgc2hvdWxk
Q2FsbFJlYWxEZWJ1Z2dlcigpCiB7Ci0gICAgcHRocmVhZF9vbmNlKCZzaG91bGRDYWxsUmVhbERl
YnVnZ2VyT25jZSwgaW5pdFNob3VsZENhbGxSZWFsRGVidWdnZXIpOworICAgIHN0YXRpYyBib29s
IGlzVXNlcmJyZWFrU2V0ID0gZmFsc2U7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBjaGFyKiB2YXIgPSBnZXRl
bnYoIlVTRVJCUkVBSyIpOworCisgICAgICAgIGlmICh2YXIpCisgICAgICAgICAgICBpc1VzZXJi
cmVha1NldCA9IGF0b2kodmFyKTsKKyAgICB9KTsKICAgICAKICAgICByZXR1cm4gaXNVc2VyYnJl
YWtTZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1OWFiMzQ2
NDNmNWUzOTU3MTc2ZjI4YWJkNjk1M2RmZTQ5NjU5ZTM0Li5lN2VjNDEyYTA3YjgyN2RhMDIzNWIx
NWM1YzQwOWRjZDkwODI2OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRm
b3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1NYWMuY21ha2UK
QEAgLTE4Myw3ICsxODMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRMZWdhY3lfU09VUkNFUwogICAg
IG1hYy9NaXNjL1dlYkRvd25sb2FkLm1tCiAgICAgbWFjL01pc2MvV2ViRWxlbWVudERpY3Rpb25h
cnkubW0KICAgICBtYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0KLSAgICBtYWMvTWlzYy9XZWJL
aXRFcnJvcnMubQorICAgIG1hYy9NaXNjL1dlYktpdEVycm9ycy5tbQogICAgIG1hYy9NaXNjL1dl
YktpdExvZ2dpbmcubQogICAgIG1hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCiAgICAg
bWFjL01pc2MvV2ViS2l0U3RhdGlzdGljcy5tCkBAIC0zNjYsNyArMzY2LDcgQEAgc2V0KEM5OV9G
SUxFUwogICAgIG1hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5t
CiAgICAgbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQogCi0gICAg
bWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KKyAgICBtYWMvTWlzYy9XZWJLaXRFcnJvcnMubW0KICAg
ICBtYWMvTWlzYy9XZWJLaXRMb2dnaW5nLm0KICAgICBtYWMvTWlzYy9XZWJLaXRTdGF0aXN0aWNz
Lm0KICAgICBtYWMvTWlzYy9XZWJLaXRTeXN0ZW1CaXRzLm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQyMjVjZDI0NGMwOTRlYjk2ZDRkYzQ0YjY0YjRhOTdjYWQ3YzQ2YTEuLmI2YWVhMTc5ZGM4
MzljMTJhMzFkNTVjMDgxNzlhODU2OGQ3NmU0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzE4LDcgKzMxOCw3IEBACiAJCTkzOTgxMEZGMDgyNEJGMDEwMDhERjAzOCAvKiBDYXJib25XaW5k
b3dGcmFtZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjdFQkVFOTUwM0Y5REJBMTAzQ0EwREU2IC8qIENhcmJvbldpbmRvd0ZyYW1lLm0gKi87IH07CiAJ
CTkzOTgxMTAwMDgyNEJGMDEwMDhERjAzOCAvKiBISVZpZXdBZGFwdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGN0VCRUU5QjAzRjlEQkExMDNDQTBE
RTYgLyogSElWaWV3QWRhcHRlci5tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
V25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKIAkJOTM5ODExMDEwODI0QkYwMTAw
OERGMDM4IC8qIENhcmJvblV0aWxzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNzlCOTc0OTA0MDE5OTM0MDM2OTA5RDIgLyogQ2FyYm9uVXRpbHMubSAq
LzsgfTsKLQkJOTM5ODExMDMwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdEVycm9ycy5tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MzBGOTgwM0ZCMUU2
NjAwMDQ3MzZFIC8qIFdlYktpdEVycm9ycy5tICovOyB9OworCQk5Mzk4MTEwMzA4MjRCRjAxMDA4
REYwMzggLyogV2ViS2l0RXJyb3JzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3MzBGOTgwM0ZCMUU2NjAwMDQ3MzZFIC8qIFdlYktpdEVycm9ycy5t
bSAqLzsgfTsKIAkJOTM5ODExMDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQThCNTJGMDQy
ODJCNTkwMENBMkQzQSAvKiBXZWJGcmFtZVZpZXcubW0gKi87IH07CiAJCTkzOTgxMTA3MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi87
IH07CiAJCTkzOTgxMTA4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDQzRjlCMDQy
OTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTEwMTcsNyAr
MTAxNyw3IEBACiAJCTdFNkZFRjA1MDg5ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0Rl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJN0U2RkVGMDYwODk4NUE3MjAwQzQ0QzNGIC8q
IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4
MzM5ODc4MTA1NDMwMTJEMDBFRTE0NkUgLyogV2ViRG9jdW1lbnRQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRG9jdW1lbnRQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwotCQk4MzczMEY5ODAzRkIxRTY2MDAwNDczNkUgLyogV2ViS2l0RXJyb3JzLm0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViS2l0RXJy
b3JzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk4MzczMEY5ODAzRkIxRTY2MDAwNDczNkUgLyogV2ViS2l0RXJyb3JzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJL
aXRFcnJvcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk4MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFyY2hp
dmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTgzNzM0MzVCMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBcmNo
aXZlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJODM5ODg0N0EwMzQyNkZCMDAwQkM1RjVFIC8qIFdlYk5TSW1hZ2VFeHRyYXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOU0lt
YWdlRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwpAQCAtMTc3Niw3ICsxNzc2LDcgQEAKIAkJCQlGNTI4RTNFQTAzMUU5MUFEMDFD
QTJBQ0EgLyogV2ViSWNvbkRhdGFiYXNlLm1tICovLAogCQkJCTI1NjhDNzJDMDE3NDkxMkQwRUNB
MTQ5RSAvKiBXZWJLaXQuaCAqLywKIAkJCQlGNTkyN0Q0RTAyRDI2QzVFMDFDQTJEQkIgLyogV2Vi
S2l0RXJyb3JzLmggKi8sCi0JCQkJODM3MzBGOTgwM0ZCMUU2NjAwMDQ3MzZFIC8qIFdlYktpdEVy
cm9ycy5tICovLAorCQkJCTgzNzMwRjk4MDNGQjFFNjYwMDA0NzM2RSAvKiBXZWJLaXRFcnJvcnMu
bW0gKi8sCiAJCQkJODRDQTVGN0UwNDI2ODVFODAwQ0EyQUNBIC8qIFdlYktpdEVycm9yc1ByaXZh
dGUuaCAqLywKIAkJCQk5M0FFQjE3RDAzMkMxNzM1MDA4NjM1Q0UgLyogV2ViS2l0TG9nZ2luZy5o
ICovLAogCQkJCTkzQUVCMTdFMDMyQzE3MzUwMDg2MzVDRSAvKiBXZWJLaXRMb2dnaW5nLm0gKi8s
CkBAIC0zNTkyLDcgKzM1OTIsNyBAQAogCQkJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEU0MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubSBpbiBTb3VyY2VzICov
LAogCQkJCTM3RDFEQ0E5MTA2NTkyOEMwMDY4RjdFRiAvKiBXZWJKU1BERkRvYy5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTkzOTgxMTAzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXRFcnJvcnMubSBp
biBTb3VyY2VzICovLAorCQkJCTkzOTgxMTAzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXRFcnJv
cnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhCRkNFNzE1NTMxMjI0MDA1QUZCMjUgLyogV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzMwODI0
QkYwMTAwOERGMDM4IC8qIFdlYktpdExvZ2dpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgx
MEM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJv
cnMubSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMzhlYmZmYjYyNmM1ODA1MmU4YmMwODQxZWQ4MWY2
ZDA2MDhhZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXRFcnJvcnMubQorKysgL2Rldi9udWxs
CkBAIC0xLDE3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYktpdEVycm9ycy5oPgot
Ci0jaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2Vi
S2l0TGVnYWN5L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdExlZ2FjeS9X
ZWJOU1VSTEV4dHJhcy5oPgotCi0jaW1wb3J0IDxwdGhyZWFkLmg+Ci0KLU5TU3RyaW5nICpXZWJL
aXRFcnJvckRvbWFpbiA9IEAiV2ViS2l0RXJyb3JEb21haW4iOwotCi1OU1N0cmluZyAqIGNvbnN0
IFdlYktpdEVycm9yTUlNRVR5cGVLZXkgPSAgICAgICAgICAgICAgIEAiV2ViS2l0RXJyb3JNSU1F
VHlwZUtleSI7Ci1OU1N0cmluZyAqIGNvbnN0IFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSA9ICAg
ICAgICAgICAgIEAiV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5IjsKLU5TU3RyaW5nICogY29uc3Qg
V2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5ID0gICAgQCJXZWJLaXRFcnJvclBsdWdJ
blBhZ2VVUkxTdHJpbmdLZXkiOwotCi0vLyBQb2xpY3kgZXJyb3JzCi0jZGVmaW5lIFdlYktpdEVy
cm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUgVUlfU1RSSU5HX0lOVEVSTkFMKCJDb250
ZW50IHdpdGggc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW7igJl0IGJlIHNob3duIiwgIldlYktpdEVy
cm9yQ2Fubm90U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikKLSNkZWZpbmUgV2ViS2l0RXJyb3JE
ZXNjcmlwdGlvbkNhbm5vdFNob3dVUkwgVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgVVJMIGNhbuKA
mXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikKLSNk
ZWZpbmUgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lD
aGFuZ2UgVUlfU1RSSU5HX0lOVEVSTkFMKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktp
dEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpCi0j
ZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBVSV9T
VFJJTkdfSU5URVJOQUwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dCIsICJXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikKLSNk
ZWZpbmUgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRGaWx0
ZXIgVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBm
aWx0ZXIiLCAiV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyIGRlc2Ny
aXB0aW9uIikKLQotLy8gUGx1Zy1pbiBhbmQgamF2YSBlcnJvcnMKLSNkZWZpbmUgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkNhbm5vdEZpbmRQbHVnaW4gVUlfU1RSSU5HX0lOVEVSTkFMKCJUaGUgcGx1
Zy1pbiBjYW7igJl0IGJlIGZvdW5kIiwgIldlYktpdEVycm9yQ2Fubm90RmluZFBsdWdpbiBkZXNj
cmlwdGlvbiIpCi0jZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2lu
IFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIHBsdWctaW4gY2Fu4oCZdCBiZSBsb2FkZWQiLCAiV2Vi
S2l0RXJyb3JDYW5ub3RMb2FkUGx1Z2luIGRlc2NyaXB0aW9uIikKLSNkZWZpbmUgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSBVSV9TVFJJTkdfSU5URVJOQUwoIkphdmEgaXMg
dW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVzY3JpcHRpb24iKQot
I2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbiBV
SV9TVFJJTkdfSU5URVJOQUwoIlBsdWctaW4gY2FuY2VsbGVkIiwgIldlYktpdEVycm9yUGx1Z0lu
Q2FuY2VsbGVkQ29ubmVjdGlvbiBkZXNjcmlwdGlvbiIpCi0jZGVmaW5lIFdlYktpdEVycm9yRGVz
Y3JpcHRpb25QbHVnSW5XaWxsSGFuZGxlTG9hZCBVSV9TVFJJTkdfSU5URVJOQUwoIlBsdWctaW4g
aGFuZGxlZCBsb2FkIiwgIldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRp
b24iKQotCi0vLyBHZW9sb2NhdGlvbnMgZXJyb3JzCi0KLSNkZWZpbmUgV2ViS2l0RXJyb3JEZXNj
cmlwdGlvbkdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duIFVJX1NUUklOR19JTlRFUk5BTCgiVGhl
IGN1cnJlbnQgbG9jYXRpb24gY2Fubm90IGJlIGZvdW5kLiIsICJXZWJLaXRFcnJvckdlb2xvY2F0
aW9uTG9jYXRpb25Vbmtub3duIGRlc2NyaXB0aW9uIikKLQotc3RhdGljIHB0aHJlYWRfb25jZV90
IHJlZ2lzdGVyRXJyb3JzQ29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwotc3RhdGljIHZvaWQg
cmVnaXN0ZXJFcnJvcnModm9pZCk7Ci0KLUBpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChXZWJLaXRF
eHRyYXMpCi0KLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnMgPSBuaWw7
Ci0KLSsgKHZvaWQpX3JlZ2lzdGVyV2ViS2l0RXJyb3JzCi17Ci0gICAgcHRocmVhZF9vbmNlKCZy
ZWdpc3RlckVycm9yc0NvbnRyb2wsIHJlZ2lzdGVyRXJyb3JzKTsKLX0KLQotLShpZClfd2Via2l0
X2luaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb2RlOihpbnQpY29kZSBVUkw6KE5T
VVJMICopVVJMCi17Ci0gICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnNEaWN0OwotICAgIE5T
U3RyaW5nICpsb2NhbGl6ZWREZXNjOwotICAgIE5TRGljdGlvbmFyeSAqZGljdDsKLSAgICAvLyBp
bnNlcnQgYSBsb2NhbGl6ZWQgc3RyaW5nIGhlcmUgZm9yIHRob3NlIGZvbGtzIG5vdCBzYXZ2eSB0
byBvdXIgY2F0ZWdvcnkgbWV0aG9kcwotICAgIGRlc2NyaXB0aW9uc0RpY3QgPSBbZGVzY3JpcHRp
b25zIG9iamVjdEZvcktleTpkb21haW5dOwotICAgIGxvY2FsaXplZERlc2MgPSBkZXNjcmlwdGlv
bnNEaWN0ID8gW2Rlc2NyaXB0aW9uc0RpY3Qgb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1iZXJX
aXRoSW50OmNvZGVdXSA6IG5pbDsKLSAgICBkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBVUkwsIEAiTlNFcnJvckZhaWxpbmdVUkxLZXki
LAotICAgICAgICBbVVJMIGFic29sdXRlU3RyaW5nXSwgQCJOU0Vycm9yRmFpbGluZ1VSTFN0cmlu
Z0tleSIsCi0gICAgICAgIGxvY2FsaXplZERlc2MsIE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXks
Ci0gICAgICAgIG5pbF07Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRG9tYWluOmRvbWFpbiBj
b2RlOmNvZGUgdXNlckluZm86ZGljdF07Ci19Ci0KLSsoaWQpX3dlYmtpdF9lcnJvcldpdGhEb21h
aW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwgKilVUkwKLXsK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX3dlYmtpdF9pbml0V2l0aERvbWFpbjpkb21haW4g
Y29kZTpjb2RlIFVSTDpVUkxdIGF1dG9yZWxlYXNlXTsKLX0KLQotKyAoTlNFcnJvciAqKV93ZWJL
aXRFcnJvcldpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDoo
TlNVUkwgKilVUkwKLXsKLSAgICBbc2VsZiBfcmVnaXN0ZXJXZWJLaXRFcnJvcnNdOwotICAgIHJl
dHVybiBbc2VsZiBfd2Via2l0X2Vycm9yV2l0aERvbWFpbjpkb21haW4gY29kZTpjb2RlIFVSTDpV
UkxdOwotfQotCi0rIChOU0Vycm9yICopX3dlYktpdEVycm9yV2l0aENvZGU6KGludCljb2RlIGZh
aWxpbmdVUkw6KE5TU3RyaW5nICopVVJMU3RyaW5nCi17Ci0gICAgcmV0dXJuIFtzZWxmIF93ZWJL
aXRFcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpjb2RlIFVSTDpbTlNVUkwg
X3dlYmtpdF9VUkxXaXRoVXNlclR5cGVkU3RyaW5nOlVSTFN0cmluZ11dOwotfQotCi0tIChpZClf
aW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6KGludCljb2RlCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRlbnRVUkw6KE5TVVJMICopY29udGVudFVSTAotICAgICAgICAgICAgICAgICBwbHVnaW5QYWdl
VVJMOihOU1VSTCAqKXBsdWdpblBhZ2VVUkwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2luTmFt
ZTooTlNTdHJpbmcgKilwbHVnaW5OYW1lCi0gICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6
KE5TU3RyaW5nICopTUlNRVR5cGUKLXsKLSAgICBbW3NlbGYgY2xhc3NdIF9yZWdpc3RlcldlYktp
dEVycm9yc107Ci0gICAgCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdXNlckluZm8gPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIE5TRGljdGlvbmFyeSAqZGVzY3Jp
cHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gPSBbZGVzY3JpcHRpb25zIG9iamVjdEZvcktleTpX
ZWJLaXRFcnJvckRvbWFpbl07Ci0gICAgTlNTdHJpbmcgKmxvY2FsaXplZERlc2NyaXB0aW9uID0g
W2Rlc2NyaXB0aW9uc0ZvcldlYktpdEVycm9yRG9tYWluIG9iamVjdEZvcktleTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDpjb2RlXV07Ci0gICAgaWYgKGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmxvY2FsaXplZERlc2NyaXB0aW9uIGZvcktleTpOU0xv
Y2FsaXplZERlc2NyaXB0aW9uS2V5XTsKLSAgICBpZiAoY29udGVudFVSTCkgewotICAgICAgICBb
dXNlckluZm8gc2V0T2JqZWN0OmNvbnRlbnRVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxL
ZXkiXTsKLSAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpbY29udGVudFVSTCBfd2ViX3VzZXJW
aXNpYmxlU3RyaW5nXSBmb3JLZXk6TlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV07
Ci0gICAgfQotICAgIGlmIChwbHVnaW5QYWdlVVJMKSB7Ci0gICAgICAgIFt1c2VySW5mbyBzZXRP
YmplY3Q6W3BsdWdpblBhZ2VVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ10gZm9yS2V5OldlYktp
dEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleV07Ci0gICAgfQotICAgIGlmIChwbHVnaW5OYW1l
KSB7Ci0gICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGx1Z2luTmFtZSBmb3JLZXk6V2ViS2l0
RXJyb3JQbHVnSW5OYW1lS2V5XTsKLSAgICB9Ci0gICAgaWYgKE1JTUVUeXBlKSB7Ci0gICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6TUlNRVR5cGUgZm9yS2V5OldlYktpdEVycm9yTUlNRVR5cGVL
ZXldOwotICAgIH0KLQotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm9Db3B5ID0gW3VzZXJJbmZv
IGNvdW50XSA+IDAgPyBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OnVz
ZXJJbmZvXSA6IG5pbDsKLSAgICBbdXNlckluZm8gcmVsZWFzZV07Ci0gICAgTlNFcnJvciAqZXJy
b3IgPSBbc2VsZiBpbml0V2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgdXNl
ckluZm86dXNlckluZm9Db3B5XTsKLSAgICBbdXNlckluZm9Db3B5IHJlbGVhc2VdOwotICAgIAot
ICAgIHJldHVybiBlcnJvcjsKLX0KLQotKyAodm9pZClfd2Via2l0X2FkZEVycm9yc1dpdGhDb2Rl
c0FuZERlc2NyaXB0aW9uczooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeSBpbkRvbWFpbjooTlNT
dHJpbmcgKilkb21haW4KLXsKLSAgICBpZiAoIWRlc2NyaXB0aW9ucykKLSAgICAgICAgZGVzY3Jp
cHRpb25zID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIFtkZXNj
cmlwdGlvbnMgc2V0T2JqZWN0OmRpY3Rpb25hcnkgZm9yS2V5OmRvbWFpbl07Ci19Ci0KLXN0YXRp
YyB2b2lkIHJlZ2lzdGVyRXJyb3JzKCkKLXsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9
IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpk
aWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAg
ICAvLyBQb2xpY3kgZXJyb3JzCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RT
aG93TUlNRVR5cGUsICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBX
ZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZV0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3Jp
cHRpb25DYW5ub3RTaG93VVJMLCAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkxdLAotICAgICAgICBXZWJLaXRFcnJv
ckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5
Q2hhbmdlXSwKLSAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9y
Q2Fubm90VXNlUmVzdHJpY3RlZFBvcnRdLAotICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9u
RnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyXSwKLQotICAg
ICAgICAvLyBQbHVnLWluIGFuZCBqYXZhIGVycm9ycwotICAgICAgICBXZWJLaXRFcnJvckRlc2Ny
aXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luXSwKLSAgICAgICAgV2ViS2l0
RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbl0sCi0gICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25KYXZhVW5hdmFpbGFibGUsICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZV0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5jZWxsZWRDb25uZWN0
aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvclBsdWdJ
bkNhbmNlbGxlZENvbm5lY3Rpb25dLAotICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1
Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDogV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZF0sCi0KLSAgICAgICAgLy8gR2VvbG9j
YXRpb24gZXJyb3JzCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxv
Y2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRF
cnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtO
U0Vycm9yIF93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5kRGVzY3JpcHRpb25zOmRpY3QgaW5E
b21haW46V2ViS2l0RXJyb3JEb21haW5dOwotCi0gICAgW3Bvb2wgZHJhaW5dOwotfQotCi1AZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjMGQzNzE4YzYxYTg0MmYxZjMwMmIxYWI0NTUzYzgwYjY4ZjkyNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tbQpAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJLaXRFcnJvcnMuaD4KKworI2lt
cG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYktpdExl
Z2FjeS9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2ViTlNV
UkxFeHRyYXMuaD4KKyNpbXBvcnQgPG11dGV4PgorCitOU1N0cmluZyAqV2ViS2l0RXJyb3JEb21h
aW4gPSBAIldlYktpdEVycm9yRG9tYWluIjsKKworTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRFcnJv
ck1JTUVUeXBlS2V5ID0gICAgICAgICAgICAgICBAIldlYktpdEVycm9yTUlNRVR5cGVLZXkiOwor
TlNTdHJpbmcgKiBjb25zdCBXZWJLaXRFcnJvclBsdWdJbk5hbWVLZXkgPSAgICAgICAgICAgICBA
IldlYktpdEVycm9yUGx1Z0luTmFtZUtleSI7CitOU1N0cmluZyAqIGNvbnN0IFdlYktpdEVycm9y
UGx1Z0luUGFnZVVSTFN0cmluZ0tleSA9ICAgIEAiV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3Ry
aW5nS2V5IjsKKworLy8gUG9saWN5IGVycm9ycworI2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0
aW9uQ2Fubm90U2hvd01JTUVUeXBlIFVJX1NUUklOR19JTlRFUk5BTCgiQ29udGVudCB3aXRoIHNw
ZWNpZmllZCBNSU1FIHR5cGUgY2Fu4oCZdCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNo
b3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25D
YW5ub3RTaG93VVJMIFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIFVSTCBjYW7igJl0IGJlIHNob3du
IiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlIFVJX1NU
UklOR19JTlRFUk5BTCgiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKQorI2RlZmluZSBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgVUlfU1RSSU5HX0lOVEVS
TkFMKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0
RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktp
dEVycm9yRGVzY3JpcHRpb25GcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVyIFVJX1NUUklO
R19JTlRFUk5BTCgiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgZmlsdGVyIiwgIldl
YktpdEVycm9yRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciBkZXNjcmlwdGlvbiIpCisK
Ky8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRp
b25DYW5ub3RGaW5kUGx1Z2luIFVJX1NUUklOR19JTlRFUk5BTCgiVGhlIHBsdWctaW4gY2Fu4oCZ
dCBiZSBmb3VuZCIsICJXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnaW4gZGVzY3JpcHRpb24iKQor
I2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90TG9hZFBsdWdpbiBVSV9TVFJJTkdf
SU5URVJOQUwoIlRoZSBwbHVnLWluIGNhbuKAmXQgYmUgbG9hZGVkIiwgIldlYktpdEVycm9yQ2Fu
bm90TG9hZFBsdWdpbiBkZXNjcmlwdGlvbiIpCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRp
b25KYXZhVW5hdmFpbGFibGUgVUlfU1RSSU5HX0lOVEVSTkFMKCJKYXZhIGlzIHVuYXZhaWxhYmxl
IiwgIldlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlIGRlc2NyaXB0aW9uIikKKyNkZWZpbmUgV2Vi
S2l0RXJyb3JEZXNjcmlwdGlvblBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24gVUlfU1RSSU5HX0lO
VEVSTkFMKCJQbHVnLWluIGNhbmNlbGxlZCIsICJXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENv
bm5lY3Rpb24gZGVzY3JpcHRpb24iKQorI2RlZmluZSBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1
Z0luV2lsbEhhbmRsZUxvYWQgVUlfU1RSSU5HX0lOVEVSTkFMKCJQbHVnLWluIGhhbmRsZWQgbG9h
ZCIsICJXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikKKworLy8g
R2VvbG9jYXRpb25zIGVycm9ycworCisjZGVmaW5lIFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9s
b2NhdGlvbkxvY2F0aW9uVW5rbm93biBVSV9TVFJJTkdfSU5URVJOQUwoIlRoZSBjdXJyZW50IGxv
Y2F0aW9uIGNhbm5vdCBiZSBmb3VuZC4iLCAiV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9u
VW5rbm93biBkZXNjcmlwdGlvbiIpCisKK0BpbXBsZW1lbnRhdGlvbiBOU0Vycm9yIChXZWJLaXRF
eHRyYXMpCisKK3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpkZXNjcmlwdGlvbnMgPSBuaWw7
CisKKysgKHZvaWQpX3JlZ2lzdGVyV2ViS2l0RXJyb3JzCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBOU0F1
dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwor
CisgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgIC8vIFBvbGljeSBlcnJvcnMKKyAgICAgICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUsICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1F
VHlwZV0sCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90U2hvd1VSTCwg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJy
b3JDYW5ub3RTaG93VVJMXSwKKyAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25GcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OiBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2VdLAorICAgICAg
ICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90VXNlUmVz
dHJpY3RlZFBvcnRdLAorICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkZyYW1lTG9h
ZEJsb2NrZWRCeUNvbnRlbnRGaWx0ZXIsICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdl
YktpdEVycm9yRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlcl0sCisKKyAgICAgICAgICAg
IC8vIFBsdWctaW4gYW5kIGphdmEgZXJyb3JzCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2Ny
aXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luXSwKKyAgICAgICAgICAgIFdl
YktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RMb2FkUGx1Z2luLCAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW5dLAor
ICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkphdmFVbmF2YWlsYWJsZSwgICAgICAg
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9ySmF2YVVu
YXZhaWxhYmxlXSwKKyAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25QbHVnSW5DYW5j
ZWxsZWRDb25uZWN0aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJL
aXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb25dLAorICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvblBsdWdJbldpbGxIYW5kbGVMb2FkLCAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWRdLAorCisg
ICAgICAgICAgICAvLyBHZW9sb2NhdGlvbiBlcnJvcnMKKyAgICAgICAgICAgIFdlYktpdEVycm9y
RGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwK
KyAgICAgICAgICAgIG5pbF07CisKKyAgICAgICAgW05TRXJyb3IgX3dlYmtpdF9hZGRFcnJvcnNX
aXRoQ29kZXNBbmREZXNjcmlwdGlvbnM6ZGljdCBpbkRvbWFpbjpXZWJLaXRFcnJvckRvbWFpbl07
CisKKyAgICAgICAgW3Bvb2wgZHJhaW5dOworICAgIH0pOworfQorCistKGlkKV93ZWJraXRfaW5p
dFdpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwg
KilVUkwKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmRlc2NyaXB0aW9uc0RpY3Q7CisgICAgTlNTdHJp
bmcgKmxvY2FsaXplZERlc2M7CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0OworICAgIC8vIGluc2Vy
dCBhIGxvY2FsaXplZCBzdHJpbmcgaGVyZSBmb3IgdGhvc2UgZm9sa3Mgbm90IHNhdnZ5IHRvIG91
ciBjYXRlZ29yeSBtZXRob2RzCisgICAgZGVzY3JpcHRpb25zRGljdCA9IFtkZXNjcmlwdGlvbnMg
b2JqZWN0Rm9yS2V5OmRvbWFpbl07CisgICAgbG9jYWxpemVkRGVzYyA9IGRlc2NyaXB0aW9uc0Rp
Y3QgPyBbZGVzY3JpcHRpb25zRGljdCBvYmplY3RGb3JLZXk6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6Y29kZV1dIDogbmlsOworICAgIGRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6CisgICAgICAgIFVSTCwgQCJOU0Vycm9yRmFpbGluZ1VSTEtleSIsCisg
ICAgICAgIFtVUkwgYWJzb2x1dGVTdHJpbmddLCBAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5
IiwKKyAgICAgICAgbG9jYWxpemVkRGVzYywgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwKKyAg
ICAgICAgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhEb21haW46ZG9tYWluIGNvZGU6
Y29kZSB1c2VySW5mbzpkaWN0XTsKK30KKworKyhpZClfd2Via2l0X2Vycm9yV2l0aERvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNvZGUgVVJMOihOU1VSTCAqKVVSTAoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBfd2Via2l0X2luaXRXaXRoRG9tYWluOmRvbWFpbiBjb2Rl
OmNvZGUgVVJMOlVSTF0gYXV0b3JlbGVhc2VdOworfQorCisrIChOU0Vycm9yICopX3dlYktpdEVy
cm9yV2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNvZGUgVVJMOihOU1VS
TCAqKVVSTAoreworICAgIFtzZWxmIF9yZWdpc3RlcldlYktpdEVycm9yc107CisgICAgcmV0dXJu
IFtzZWxmIF93ZWJraXRfZXJyb3JXaXRoRG9tYWluOmRvbWFpbiBjb2RlOmNvZGUgVVJMOlVSTF07
Cit9CisKKysgKE5TRXJyb3IgKilfd2ViS2l0RXJyb3JXaXRoQ29kZTooaW50KWNvZGUgZmFpbGlu
Z1VSTDooTlNTdHJpbmcgKilVUkxTdHJpbmcKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dlYktpdEVy
cm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgVVJMOltOU1VSTCBfd2Vi
a2l0X1VSTFdpdGhVc2VyVHlwZWRTdHJpbmc6VVJMU3RyaW5nXV07Cit9CisKKy0gKGlkKV9pbml0
V2l0aFBsdWdpbkVycm9yQ29kZTooaW50KWNvZGUKKyAgICAgICAgICAgICAgICAgICAgY29udGVu
dFVSTDooTlNVUkwgKiljb250ZW50VVJMCisgICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkw6
KE5TVVJMICopcGx1Z2luUGFnZVVSTAorICAgICAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOihO
U1N0cmluZyAqKXBsdWdpbk5hbWUKKyAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTooTlNT
dHJpbmcgKilNSU1FVHlwZQoreworICAgIFtbc2VsZiBjbGFzc10gX3JlZ2lzdGVyV2ViS2l0RXJy
b3JzXTsKKyAgICAKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgTlNEaWN0aW9uYXJ5ICpkZXNjcmlwdGlv
bnNGb3JXZWJLaXRFcnJvckRvbWFpbiA9IFtkZXNjcmlwdGlvbnMgb2JqZWN0Rm9yS2V5OldlYktp
dEVycm9yRG9tYWluXTsKKyAgICBOU1N0cmluZyAqbG9jYWxpemVkRGVzY3JpcHRpb24gPSBbZGVz
Y3JpcHRpb25zRm9yV2ViS2l0RXJyb3JEb21haW4gb2JqZWN0Rm9yS2V5OltOU051bWJlciBudW1i
ZXJXaXRoSW50OmNvZGVdXTsKKyAgICBpZiAobG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6bG9jYWxpemVkRGVzY3JpcHRpb24gZm9yS2V5Ok5TTG9jYWxp
emVkRGVzY3JpcHRpb25LZXldOworICAgIGlmIChjb250ZW50VVJMKSB7CisgICAgICAgIFt1c2Vy
SW5mbyBzZXRPYmplY3Q6Y29udGVudFVSTCBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJd
OworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0Oltjb250ZW50VVJMIF93ZWJfdXNlclZpc2li
bGVTdHJpbmddIGZvcktleTpOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XTsKKyAg
ICB9CisgICAgaWYgKHBsdWdpblBhZ2VVUkwpIHsKKyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVj
dDpbcGx1Z2luUGFnZVVSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSBmb3JLZXk6V2ViS2l0RXJy
b3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5XTsKKyAgICB9CisgICAgaWYgKHBsdWdpbk5hbWUpIHsK
KyAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwbHVnaW5OYW1lIGZvcktleTpXZWJLaXRFcnJv
clBsdWdJbk5hbWVLZXldOworICAgIH0KKyAgICBpZiAoTUlNRVR5cGUpIHsKKyAgICAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpNSU1FVHlwZSBmb3JLZXk6V2ViS2l0RXJyb3JNSU1FVHlwZUtleV07
CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mb0NvcHkgPSBbdXNlckluZm8gY291
bnRdID4gMCA/IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6dXNlcklu
Zm9dIDogbmlsOworICAgIFt1c2VySW5mbyByZWxlYXNlXTsKKyAgICBOU0Vycm9yICplcnJvciA9
IFtzZWxmIGluaXRXaXRoRG9tYWluOldlYktpdEVycm9yRG9tYWluIGNvZGU6Y29kZSB1c2VySW5m
bzp1c2VySW5mb0NvcHldOworICAgIFt1c2VySW5mb0NvcHkgcmVsZWFzZV07CisgICAgCisgICAg
cmV0dXJuIGVycm9yOworfQorCisrICh2b2lkKV93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5k
RGVzY3JpcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5IGluRG9tYWluOihOU1N0cmlu
ZyAqKWRvbWFpbgoreworICAgIGlmICghZGVzY3JpcHRpb25zKQorICAgICAgICBkZXNjcmlwdGlv
bnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworCisgICAgW2Rlc2NyaXB0
aW9ucyBzZXRPYmplY3Q6ZGljdGlvbmFyeSBmb3JLZXk6ZG9tYWluXTsKK30KKworQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIu
bW0KaW5kZXggOGZlYmQ0MmQ2MDBhNTZjOWM2NTU0ZTYwODNjYjhlNWMzYmU1N2Y3Ny4uM2NiYzA1
NjIyMzE1NDgxNzk1MTRhMzE4MDNmZGUyMzAzNGEwZTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBAIC0zMywxNyAr
MzMsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2ltcG9ydCA8cHRocmVhZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNT
dHJpbmcgKiBjb25zdCBXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOwogTlNTdHJpbmcgKiBjb25zdCBX
ZWJTdG9yYWdlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uID0gQCJXZWJTdG9yYWdlRGlkTW9k
aWZ5T3JpZ2luTm90aWZpY2F0aW9uIjsKIAotc3RhdGljIE5TU3RyaW5nICpzTG9jYWxTdG9yYWdl
UGF0aDsKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2NhbFN0b3JhZ2VQYXRoKCk7Ci1zdGF0aWMg
cHRocmVhZF9vbmNlX3QgcmVnaXN0ZXJMb2NhbFN0b3JhZ2VQYXRoID0gUFRIUkVBRF9PTkNFX0lO
SVQ7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXZWJTdG9yYWdlTWFuYWdlcgogCiArIChXZWJTdG9yYWdl
TWFuYWdlciAqKXNoYXJlZFdlYlN0b3JhZ2VNYW5hZ2VyCkBAIC0xMDksNyArMTA0LDE4IEBAIC0g
KHZvaWQpc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UKIAogKyAoTlNTdHJpbmcgKilf
c3RvcmFnZURpcmVjdG9yeVBhdGgKIHsKLSAgICBwdGhyZWFkX29uY2UoJnJlZ2lzdGVyTG9jYWxT
dG9yYWdlUGF0aCwgaW5pdGlhbGl6ZUxvY2FsU3RvcmFnZVBhdGgpOworICAgIHN0YXRpYyBOU1N0
cmluZyAqc0xvY2FsU3RvcmFnZVBhdGg7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBOU1VzZXJEZWZhdWx0cyAq
ZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOworICAgICAg
ICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURp
cmVjdG9yeURlZmF1bHRzS2V5XTsKKyAgICAgICAgaWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAh
W3NMb2NhbFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAg
ICAgICAgICAgIE5TQXJyYXkgKnBhdGhzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRv
bWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOworICAgICAg
ICAgICAgTlNTdHJpbmcgKmxpYnJhcnlEaXJlY3RvcnkgPSBbcGF0aHMgb2JqZWN0QXRJbmRleDow
XTsKKyAgICAgICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOworICAg
ICAgICB9CisgICAgICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW1tzTG9jYWxTdG9yYWdlUGF0aCBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSByZXRhaW5dOworICAgIH0pOwogICAgIHJldHVybiBz
TG9jYWxTdG9yYWdlUGF0aDsKIH0KIApAQCAtMTIzLDE4ICsxMjksNiBAQCArICh2b2lkKWNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcwogICAgIFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKIH0KIAotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUxvY2FsU3RvcmFnZVBhdGgoKQotewotICAgIE5TVXNlckRlZmF1bHRz
ICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107Ci0gICAg
c0xvY2FsU3RvcmFnZVBhdGggPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJl
Y3RvcnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFzTG9jYWxTdG9yYWdlUGF0aCB8fCAhW3NMb2Nh
bFN0b3JhZ2VQYXRoIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAg
TlNBcnJheSAqcGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xp
YnJhcnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUyk7Ci0gICAgICAgIE5TU3RyaW5n
ICpsaWJyYXJ5RGlyZWN0b3J5ID0gW3BhdGhzIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgICAgIHNM
b2NhbFN0b3JhZ2VQYXRoID0gW2xpYnJhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0L0xvY2FsU3RvcmFnZSJdOwotICAgIH0KLSAgICBzTG9jYWxTdG9y
YWdlUGF0aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0g
cmV0YWluXTsKLX0KLQogdm9pZCBXZWJLaXRJbml0aWFsaXplU3RvcmFnZUlmTmVjZXNzYXJ5KCkK
IHsKICAgICBzdGF0aWMgQk9PTCBpbml0aWFsaXplZCA9IE5POwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328846</attachid>
            <date>2017-12-08 11:48:20 -0800</date>
            <delta_ts>2017-12-08 12:04:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180591-20171209044818.patch</filename>
            <type>text/plain</type>
            <size>15054</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZhNzc4NjZjZWRkOTVkOGUyZTBiYzc1
NTJiZDgwOTdhYzAxMjY1NGIuLjk1YTdjNGVjNzAxZDY3MzZmMzQyOTc2NDRiNDM3ZmYyMzA4NTMw
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHB0aHJlYWRfb25jZSBpbiBmYXZv
ciBvZiBzdGQ6OmNhbGxfb25jZSBhbmQgZGlzcGF0Y2hfb25jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRoZSBjb21tZW50LgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1cnJlbnQpOgorCisy
MDE3LTEyLTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAg
ICAgIFtXVEZdW0xpbnV4XVtHVEtdIEZpeCBhIG1pbm9yIGJ1ZyBpbiBnZW5lcmljL1dvcmtRdWV1
ZSB3aGVuIFdvcmtRdWV1ZSBpcyBpbW1lZGlhdGVseSBkZXN0cm95ZWQKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU4NgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmI1MTQyY2Y2MGYyYmVlZGM2NjAxZmE2Njc3MmYyYjMzM2FjYzAzNC4uNzZjNjEwN2Y0ODIyYWJl
NmQzMWJiNTM4ZDYxNTM5NDg0NWZiZTQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE3LTEyLTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFJlbW92ZSBwdGhyZWFkX29uY2UgaW4gZmF2b3Igb2Ygc3RkOjpjYWxsX29uY2UgYW5kIGRp
c3BhdGNoX29uY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3Jl
TlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjphbGxDaGFyYWN0ZXJzSW5JRE5TY3Jp
cHRXaGl0ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElETlNjcmlwdFdoaXRlTGlzdCk6
IERlbGV0ZWQuCisKIDIwMTctMTItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXByb3ZlIGVycm9yIGhhbmRsaW5nIGluIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDEyMzExYWU2YmJhNTZmMTY4NTUxZjJhZWE2ZTdlOGZmNTRhMWU5MjAuLjAz
NWQzNjA2MzNhNmE3Y2M3ZTViZWY2YjU2ZWQxMjExMmFlODllOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHB0aHJlYWRfb25jZSBpbiBmYXZvciBvZiBzdGQ6OmNhbGxf
b25jZSBhbmQgZGlzcGF0Y2hfb25jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzaG91bGRDYWxsUmVhbERlYnVnZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6aW5pdFNob3VsZENhbGxSZWFsRGVidWdnZXIpOiBEZWxldGVkLgorCiAyMDE3LTEyLTA4ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFz
cyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llcz4gaW5zdGVhZCBvZiBXZWJzaXRlUG9saWNp
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmNmRkYmMxNDhjMWE4Y2RhZDRmYWZk
NWNjNDk1MjRkOTE5MjkzMmYzLi5jNjg3YjViMDUxMTVmOTc5MzVkMTI5MTM1OTRjM2UwYjU0Mjgy
NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTct
MTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHB0aHJlYWRfb25jZSBpbiBmYXZvciBvZiBzdGQ6OmNhbGxfb25jZSBhbmQgZGlzcGF0
Y2hfb25jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwNTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaXNjL1dlYktpdEVycm9ycy5tOgorICAgICAgICAoK1tOU0Vycm9yIF9yZWdpc3RlcldlYktp
dEVycm9yc10pOgorICAgICAgICAocmVnaXN0ZXJFcnJvcnMpOiBEZWxldGVkLgorICAgICAgICAq
IFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06CisgICAgICAgICgrW1dlYlN0b3JhZ2VNYW5h
Z2VyIF9zdG9yYWdlRGlyZWN0b3J5UGF0aF0pOgorICAgICAgICAoaW5pdGlhbGl6ZUxvY2FsU3Rv
cmFnZVBhdGgpOiBEZWxldGVkLgorCiAyMDE3LTEyLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgY29kZSBmcm9tIFdlYktpdExl
Z2FjeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuaAppbmRleCA1NmNiNmNmZGU3Nzk5YzIxMGQwZjZkMThlZGM5YmIxOTNm
ZGI4MDEwLi4zMTQ0MzMwNTNjYjk3N2JmZmU0MmQ5NWMwZjA4MmQ4ODVjM2Y3ZWJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuaApAQCAtMzE1LDcgKzMxNSw3IEBAIGlubGluZSBUaHJlYWQmIFRocmVhZDo6Y3VycmVu
dCgpCiAgICAgLy8gICAgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9y
IHN5bmNocm9uaXphdGlvbiBoZXJlLgogICAgIC8vIFdSVCBKYXZhU2NyaXB0Q29yZToKICAgICAv
LyAgICBUaHJlYWQ6OmluaXRpYWxpemVUTFNLZXkoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20g
aW5pdGlhbGl6ZVRocmVhZGluZygpLCBlbnN1cmluZwotICAgIC8vICAgIHRoaXMgaXMgaW5pdGlh
bGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyAgICAvLyAgICB0
aGlzIGlzIGluaXRpYWxseSBjYWxsZWQgaW4gYSBzdGQ6OmNhbGxfb25jZSBsb2NrZWQgY29udGV4
dC4KICNpZiAhSEFWRShGQVNUX1RMUykKICAgICBpZiAoVU5MSUtFTFkoVGhyZWFkOjpzX2tleSA9
PSBJbnZhbGlkVGhyZWFkU3BlY2lmaWNLZXkpKQogICAgICAgICBXVEY6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJM
RXh0cmFzLm1tCmluZGV4IGU2YzA4ZjQzMjM0MTgxMGMzMGNlYWNkYjc3N2Q4NTg1NDRiNmQ1NmIu
LmJkNjc3NmQ0ZmVlZWIzMGIyNmEyZGE0NmFkNjI5MzNkN2UzODZjMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAtNDUsNyAr
NDUsNiBAQAogCiB0eXBlZGVmIHZvaWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIHZvaWQgKmNvbnRleHQpOwogCi1zdGF0aWMg
cHRocmVhZF9vbmNlX3QgSUROU2NyaXB0V2hpdGVMaXN0RmlsZVJlYWQgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKIHN0YXRpYyB1aW50MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9M
SU1JVCArIDMxKSAvIDMyXTsKIAogCkBAIC0yNzcsMjYgKzI3NiwyNCBAQCBzdGF0aWMgQk9PTCBy
ZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCiAgICAgcmV0dXJu
IFlFUzsKIH0KIAotc3RhdGljIHZvaWQgcmVhZElETlNjcmlwdFdoaXRlTGlzdCh2b2lkKQotewot
ICAgIC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCi0gICAgTlNBcnJheSAqZGlycyA9
IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwg
TlNBbGxEb21haW5zTWFzaywgWUVTKTsKLSAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICBpZiAocmVh
ZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW1tkaXJzIG9iamVjdEF0SW5kZXg6aV0gc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSUROU2NyaXB0V2hpdGVMaXN0LnR4dCJdKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gRmFsbCBiYWNrIG9uIHdoaXRlIGxp
c3QgaW5zaWRlIGJ1bmRsZS4KLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRs
ZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKLSAgICAKLSAgICBpZiAoIXJl
YWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiSUROU2Ny
aXB0V2hpdGVMaXN0IiBvZlR5cGU6QCJ0eHQiXSkpCi0gICAgICAgIENSQVNIKCk7Ci19Ci0KIHN0
YXRpYyBCT09MIGFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChjb25zdCBVQ2hhciAq
YnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKIHsKLSAgICBwdGhyZWFkX29uY2UoJklETlNjcmlwdFdo
aXRlTGlzdEZpbGVSZWFkLCByZWFkSUROU2NyaXB0V2hpdGVMaXN0KTsKKyAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IGZsYWc7CisgICAgZGlzcGF0Y2hfb25jZSgmZmxhZywgXnsKKyAgICAgICAg
Ly8gUmVhZCB3aGl0ZSBsaXN0IGZyb20gbGlicmFyeS4KKyAgICAgICAgTlNBcnJheSAqZGlycyA9
IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwg
TlNBbGxEb21haW5zTWFzaywgWUVTKTsKKyAgICAgICAgaW50IG51bURpcnMgPSBbZGlycyBjb3Vu
dF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRGlyczsgaSsrKSB7CisgICAgICAg
ICAgICBpZiAocmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW1tkaXJzIG9iamVjdEF0SW5kZXg6
aV0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSUROU2NyaXB0V2hpdGVMaXN0LnR4
dCJdKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBG
YWxsIGJhY2sgb24gd2hpdGUgbGlzdCBpbnNpZGUgYnVuZGxlLgorICAgICAgICBOU0J1bmRsZSAq
YnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNv
cmUiXTsKKworICAgICAgICBpZiAoIXJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtidW5kbGUg
cGF0aEZvclJlc291cmNlOkAiSUROU2NyaXB0V2hpdGVMaXN0IiBvZlR5cGU6QCJ0eHQiXSkpCisg
ICAgICAgICAgICBDUkFTSCgpOworICAgIH0pOwogICAgIAogICAgIGludDMyX3QgaSA9IDA7CiAg
ICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCA5
ZDMxNTc3ZTg1NTZjODIxY2YwZGZhNTExYmZhZGRjOTU1NTE1YTMyLi44MjEzYmNiMDA3ZmEzYTY0
NzdkMDQxMGZjZDdjYTcwMzU3NmYzZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0xNjIsMjAgKzE2MiwxNiBAQCBz
dGF0aWMgRnVsbHNjcmVlbldpbmRvd1RyYWNrZXImIGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkK
IAogI2lmIGRlZmluZWQoX19pMzg2X18pCiAKLXN0YXRpYyBwdGhyZWFkX29uY2VfdCBzaG91bGRD
YWxsUmVhbERlYnVnZ2VyT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotc3RhdGljIGJvb2wgaXNV
c2VyYnJlYWtTZXQgPSBmYWxzZTsKLQotc3RhdGljIHZvaWQgaW5pdFNob3VsZENhbGxSZWFsRGVi
dWdnZXIoKQotewotICAgIGNoYXIqIHZhciA9IGdldGVudigiVVNFUkJSRUFLIik7Ci0gICAgCi0g
ICAgaWYgKHZhcikKLSAgICAgICAgaXNVc2VyYnJlYWtTZXQgPSBhdG9pKHZhcik7Ci19Ci0KIHN0
YXRpYyBib29sIHNob3VsZENhbGxSZWFsRGVidWdnZXIoKQogewotICAgIHB0aHJlYWRfb25jZSgm
c2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlck9uY2UsIGluaXRTaG91bGRDYWxsUmVhbERlYnVnZ2VyKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZhbHNlOworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3QgZmxhZzsKKyAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeeworICAgICAgICBj
aGFyKiB2YXIgPSBnZXRlbnYoIlVTRVJCUkVBSyIpOworCisgICAgICAgIGlmICh2YXIpCisgICAg
ICAgICAgICBpc1VzZXJicmVha1NldCA9IGF0b2kodmFyKTsKKyAgICB9KTsKICAgICAKICAgICBy
ZXR1cm4gaXNVc2VyYnJlYWtTZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYktpdEVycm9ycy5tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJLaXRFcnJvcnMubQppbmRleCBlZjM4ZWJmZmI2MjZjNTgwNTJlOGJjMDg0MWVkODFmNmQwNjA4
YWQ5Li5mYzUxOTE1NGVhNGM2M2FiYTdlYWViYzM5YmRkNjA2ZDdkY2RjMmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdEVycm9ycy5tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0RXJyb3JzLm0KQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXRMZWdhY3kvV2ViTlNVUkxFeHRyYXMuaD4KIAotI2ltcG9ydCA8cHRocmVhZC5oPgorI2lt
cG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KIAogTlNTdHJpbmcgKldlYktpdEVycm9yRG9tYWlu
ID0gQCJXZWJLaXRFcnJvckRvbWFpbiI7CiAKQEAgLTU4LDE2ICs1OCwzOSBAQAogCiAjZGVmaW5l
IFdlYktpdEVycm9yRGVzY3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biBVSV9TVFJJ
TkdfSU5URVJOQUwoIlRoZSBjdXJyZW50IGxvY2F0aW9uIGNhbm5vdCBiZSBmb3VuZC4iLCAiV2Vi
S2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biBkZXNjcmlwdGlvbiIpCiAKLXN0YXRp
YyBwdGhyZWFkX29uY2VfdCByZWdpc3RlckVycm9yc0NvbnRyb2wgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyRXJyb3JzKHZvaWQpOwotCiBAaW1wbGVtZW50YXRpb24g
TlNFcnJvciAoV2ViS2l0RXh0cmFzKQogCiBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGVz
Y3JpcHRpb25zID0gbmlsOwogCiArICh2b2lkKV9yZWdpc3RlcldlYktpdEVycm9ycwogewotICAg
IHB0aHJlYWRfb25jZSgmcmVnaXN0ZXJFcnJvcnNDb250cm9sLCByZWdpc3RlckVycm9ycyk7Cisg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcs
IF57CisgICAgICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9v
bCBhbGxvY10gaW5pdF07CisKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgLy8gUG9saWN5
IGVycm9ycworICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdFNob3dNSU1F
VHlwZSwgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVy
cm9yQ2Fubm90U2hvd01JTUVUeXBlXSwKKyAgICAgICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRp
b25DYW5ub3RTaG93VVJMLCAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkxdLAorICAgICAgICAgICAgV2ViS2l0RXJy
b3JEZXNjcmlwdGlvbkZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsICAgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZV0sCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90VXNlUmVz
dHJpY3RlZFBvcnQsICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0
RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydF0sCisgICAgICAgICAgICBXZWJLaXRFcnJvckRl
c2NyaXB0aW9uRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50RmlsdGVy
XSwKKworICAgICAgICAgICAgLy8gUGx1Zy1pbiBhbmQgamF2YSBlcnJvcnMKKyAgICAgICAgICAg
IFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RGaW5kUGx1Z2luLCAgICAgICAgICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW5d
LAorICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fu
bm90TG9hZFBsdWdJbl0sCisgICAgICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uSmF2YVVu
YXZhaWxhYmxlLCAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDog
V2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGVdLAorICAgICAgICAgICAgV2ViS2l0RXJyb3JEZXNj
cmlwdGlvblBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb24sICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yUGx1Z0luQ2FuY2VsbGVkQ29ubmVjdGlvbl0sCisgICAg
ICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxvYWQsICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVnSW5XaWxs
SGFuZGxlTG9hZF0sCisKKyAgICAgICAgICAgIC8vIEdlb2xvY2F0aW9uIGVycm9ycworICAgICAg
ICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duLCAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yR2VvbG9jYXRpb25M
b2NhdGlvblVua25vd25dLAorICAgICAgICAgICAgbmlsXTsKKworICAgICAgICBbTlNFcnJvciBf
d2Via2l0X2FkZEVycm9yc1dpdGhDb2Rlc0FuZERlc2NyaXB0aW9uczpkaWN0IGluRG9tYWluOldl
YktpdEVycm9yRG9tYWluXTsKKworICAgICAgICBbcG9vbCBkcmFpbl07CisgICAgfSk7CiB9CiAK
IC0oaWQpX3dlYmtpdF9pbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooaW50
KWNvZGUgVVJMOihOU1VSTCAqKVVSTApAQCAtMTQ1LDMyICsxNjgsNCBAQCArICh2b2lkKV93ZWJr
aXRfYWRkRXJyb3JzV2l0aENvZGVzQW5kRGVzY3JpcHRpb25zOihOU0RpY3Rpb25hcnkgKilkaWN0
aW9uYXJ5IGluRAogICAgIFtkZXNjcmlwdGlvbnMgc2V0T2JqZWN0OmRpY3Rpb25hcnkgZm9yS2V5
OmRvbWFpbl07CiB9CiAKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyRXJyb3JzKCkKLXsKLSAgICBOU0F1
dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwot
Ci0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAvLyBQb2xpY3kgZXJyb3JzCi0gICAgICAgIFdlYktpdEVy
cm9yRGVzY3JpcHRpb25DYW5ub3RTaG93TUlNRVR5cGUsICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZV0sCi0gICAg
ICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25DYW5ub3RTaG93VVJMLCAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkxd
LAotICAgICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlXSwKLSAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlw
dGlvbkNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnRdLAotICAgICAgICBX
ZWJLaXRFcnJvckRlc2NyaXB0aW9uRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEZpbHRlciwgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JGcmFtZUxvYWRCbG9ja2VkQnlD
b250ZW50RmlsdGVyXSwKLQotICAgICAgICAvLyBQbHVnLWluIGFuZCBqYXZhIGVycm9ycwotICAg
ICAgICBXZWJLaXRFcnJvckRlc2NyaXB0aW9uQ2Fubm90RmluZFBsdWdpbiwgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1
Z0luXSwKLSAgICAgICAgV2ViS2l0RXJyb3JEZXNjcmlwdGlvbkNhbm5vdExvYWRQbHVnaW4sICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6IFdlYktpdEVycm9yQ2Fu
bm90TG9hZFBsdWdJbl0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25KYXZhVW5hdmFp
bGFibGUsICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OiBXZWJL
aXRFcnJvckphdmFVbmF2YWlsYWJsZV0sCi0gICAgICAgIFdlYktpdEVycm9yRGVzY3JpcHRpb25Q
bHVnSW5DYW5jZWxsZWRDb25uZWN0aW9uLCAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OiBXZWJLaXRFcnJvclBsdWdJbkNhbmNlbGxlZENvbm5lY3Rpb25dLAotICAgICAgICBXZWJL
aXRFcnJvckRlc2NyaXB0aW9uUGx1Z0luV2lsbEhhbmRsZUxvYWQsICAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDogV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZF0s
Ci0KLSAgICAgICAgLy8gR2VvbG9jYXRpb24gZXJyb3JzCi0gICAgICAgIFdlYktpdEVycm9yRGVz
Y3JpcHRpb25HZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biwgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OiBXZWJLaXRFcnJvckdlb2xvY2F0aW9uTG9jYXRpb25Vbmtub3duXSwKLSAg
ICAgICAgbmlsXTsKLQotICAgIFtOU0Vycm9yIF93ZWJraXRfYWRkRXJyb3JzV2l0aENvZGVzQW5k
RGVzY3JpcHRpb25zOmRpY3QgaW5Eb21haW46V2ViS2l0RXJyb3JEb21haW5dOwotCi0gICAgW3Bv
b2wgZHJhaW5dOwotfQotCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQppbmRleCA4ZmViZDQyZDYwMGE1NmM5YzY1NTRl
NjA4M2NiOGU1YzNiZTU3Zjc3Li45YTY4OWNhNTU5NDczZWQzYjAxNTRhYTk1Y2VjNmU1MWZhOWE3
ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3Jh
Z2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3Rv
cmFnZU1hbmFnZXIubW0KQEAgLTMzLDE3ICszMywxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdl
R3JvdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW1wb3J0IDxwdGhyZWFkLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU1N0cmluZyAqIGNvbnN0IFdlYlN0b3JhZ2VEaXJlY3Rv
cnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5j
ZUtleSI7CiBOU1N0cmluZyAqIGNvbnN0IFdlYlN0b3JhZ2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmlj
YXRpb24gPSBAIldlYlN0b3JhZ2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmljYXRpb24iOwogCi1zdGF0
aWMgTlNTdHJpbmcgKnNMb2NhbFN0b3JhZ2VQYXRoOwotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxv
Y2FsU3RvcmFnZVBhdGgoKTsKLXN0YXRpYyBwdGhyZWFkX29uY2VfdCByZWdpc3RlckxvY2FsU3Rv
cmFnZVBhdGggPSBQVEhSRUFEX09OQ0VfSU5JVDsKLQogQGltcGxlbWVudGF0aW9uIFdlYlN0b3Jh
Z2VNYW5hZ2VyCiAKICsgKFdlYlN0b3JhZ2VNYW5hZ2VyICopc2hhcmVkV2ViU3RvcmFnZU1hbmFn
ZXIKQEAgLTEwOSw3ICsxMDQsMTggQEAgLSAodm9pZClzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJE
YXRhYmFzZQogCiArIChOU1N0cmluZyAqKV9zdG9yYWdlRGlyZWN0b3J5UGF0aAogewotICAgIHB0
aHJlYWRfb25jZSgmcmVnaXN0ZXJMb2NhbFN0b3JhZ2VQYXRoLCBpbml0aWFsaXplTG9jYWxTdG9y
YWdlUGF0aCk7CisgICAgc3RhdGljIE5TU3RyaW5nICpzTG9jYWxTdG9yYWdlUGF0aDsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IGZsYWc7CisgICAgZGlzcGF0Y2hfb25jZSgmZmxhZywgXnsK
KyAgICAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXTsKKyAgICAgICAgc0xvY2FsU3RvcmFnZVBhdGggPSBbZGVmYXVsdHMg
b2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAgICAgIGlm
ICghc0xvY2FsU3RvcmFnZVBhdGggfHwgIVtzTG9jYWxTdG9yYWdlUGF0aCBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBOU0FycmF5ICpwYXRocyA9IE5TU2Vh
cmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNVc2Vy
RG9tYWluTWFzaywgWUVTKTsKKyAgICAgICAgICAgIE5TU3RyaW5nICpsaWJyYXJ5RGlyZWN0b3J5
ID0gW3BhdGhzIG9iamVjdEF0SW5kZXg6MF07CisgICAgICAgICAgICBzTG9jYWxTdG9yYWdlUGF0
aCA9IFtsaWJyYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldl
YktpdC9Mb2NhbFN0b3JhZ2UiXTsKKyAgICAgICAgfQorICAgICAgICBzTG9jYWxTdG9yYWdlUGF0
aCA9IFtbc0xvY2FsU3RvcmFnZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0gcmV0YWlu
XTsKKyAgICB9KTsKICAgICByZXR1cm4gc0xvY2FsU3RvcmFnZVBhdGg7CiB9CiAKQEAgLTEyMywx
OCArMTI5LDYgQEAgKyAodm9pZCljbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMKICAgICBX
ZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y2xvc2VJZGxlTG9jYWxTdG9yYWdl
RGF0YWJhc2VzKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2NhbFN0b3JhZ2VQYXRo
KCkKLXsKLSAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdOwotICAgIHNMb2NhbFN0b3JhZ2VQYXRoID0gW2RlZmF1bHRzIG9i
amVjdEZvcktleTpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwotICAgIGlmICghc0xv
Y2FsU3RvcmFnZVBhdGggfHwgIVtzTG9jYWxTdG9yYWdlUGF0aCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIE5TQXJyYXkgKnBhdGhzID0gTlNTZWFyY2hQYXRoRm9y
RGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNr
LCBZRVMpOwotICAgICAgICBOU1N0cmluZyAqbGlicmFyeURpcmVjdG9yeSA9IFtwYXRocyBvYmpl
Y3RBdEluZGV4OjBdOwotICAgICAgICBzTG9jYWxTdG9yYWdlUGF0aCA9IFtsaWJyYXJ5RGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdC9Mb2NhbFN0b3JhZ2Ui
XTsKLSAgICB9Ci0gICAgc0xvY2FsU3RvcmFnZVBhdGggPSBbW3NMb2NhbFN0b3JhZ2VQYXRoIHN0
cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdIHJldGFpbl07Ci19Ci0KIHZvaWQgV2ViS2l0SW5pdGlh
bGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiB7CiAgICAgc3RhdGljIEJPT0wgaW5pdGlhbGl6ZWQg
PSBOTzsK
</data>
<flag name="review"
          id="348002"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>