<?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>168250</bug_id>
          
          <creation_ts>2017-02-13 13:36:53 -0800</creation_ts>
          <short_desc>[WebRTC] Creating RTCPeerConnection with libwebrtc backend is crashing on rwt</short_desc>
          <delta_ts>2017-02-13 18:10:46 -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>Tools / Tests</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1276340</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 13:36:53 -0800</bug_when>
    <thetext>Creating RTCPeerConnection with libwebrtc backend is crashing on rwt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276414</commentid>
    <comment_count>1</comment_count>
      <attachid>301406</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 15:53:26 -0800</bug_when>
    <thetext>Created attachment 301406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276446</commentid>
    <comment_count>2</comment_count>
      <attachid>301418</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 16:39:57 -0800</bug_when>
    <thetext>Created attachment 301418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276465</commentid>
    <comment_count>3</comment_count>
      <attachid>301422</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-13 17:15:33 -0800</bug_when>
    <thetext>Created attachment 301422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276505</commentid>
    <comment_count>4</comment_count>
      <attachid>301422</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 18:10:42 -0800</bug_when>
    <thetext>Comment on attachment 301422
Patch

Clearing flags on attachment: 301422

Committed r212269: &lt;http://trac.webkit.org/changeset/212269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276506</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-13 18:10:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301406</attachid>
            <date>2017-02-13 15:53:26 -0800</date>
            <delta_ts>2017-02-13 16:39:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168250-20170213155054.patch</filename>
            <type>text/plain</type>
            <size>52523</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMzNWUwNDk0ZmJhYzI1
OTk4MDE1ZDFlMTg4OWE1MWYyZDJkOGQ1NC4uMDY5MjJjZDhhYzRkYjRlODFjZDVlYWUwZDkwMWU5
Yjc5YjlkY2RlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE3LTAyLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CiAKKyAgICAgICAgW1dlYlJUQ10gQ3JlYXRp
bmcgUlRDUGVlckNvbm5lY3Rpb24gd2l0aCBsaWJ3ZWJydGMgYmFja2VuZCBpcyBjcmFzaGluZyBv
biByd3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
dmVyZWQgYnkgd2VicnRjIHRlc3RzIGluIExheW91dFRlc3RzIGFuZCBpbiB3ZWItcGxhdGZvcm0t
dGVzdHMuCisgICAgICAgIE1ha2luZyBtb2NrIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5IGtlZXAg
YSByZWYgb2YgdGhlIHJlYWwgbGlid2VicnRjIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5LgorICAg
ICAgICBUaGF0IHdheSwgaXQgY2FuIGNyZWF0ZSByZWFsIGxpYndlYnJ0YyBiYWNrZW5kcyB3aGVu
ZXZlciByZXF1ZXN0ZWQgYnkgdGVzdHMuCisKKyAgICAgICAgTW92aW5nIExpYldlYlJUQ1V0aWxz
Lmggcm91dGluZXMgYXMgc3RhdGljIExpYldlYlJUQ1Byb3ZpZGVyIG1ldGhvZHMuCisgICAgICAg
IEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBtYWtlIHRoZW0gbm8gbG9uZ2VyIHN0YXRpYy4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpk
b0NyZWF0ZUFuc3dlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OnNldFBlZXJDb25uZWN0aW9uRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY3R1YWxQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENVdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VNb2NrUlRDUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkZvckljZUNhbmRpZGF0ZXM6OmdvdExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6cmVsZWFzZUluTmV0d29ya1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGli
V2ViUlRDUGVlckNvbm5lY3Rpb246OlNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRSZW1vdGVEZXNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkNyZWF0ZU9m
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3Jl
YXRlQW5zd2VyKToKKworMjAxNy0wMi0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubmZAZ21haWwu
Y29tPgorCiAgICAgICAgIFtXZWJSVENdIEltcGxlbWVudCBkZXNjcmlwdGlvbiBnZXR0ZXJzIGZv
ciBsaWJ3ZWJydGMgUlRDUGVlckNvbm5lY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODIzNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTc1YTkwMDIwMjY4
MTJmNjcwY2JlNmUzYTE2MWNlMTUxYzliOThhNS4uNjNjMDk4NTFjZDdlMjY1Njc5ODk4MmIyYzgz
MDAzMGYwODI5ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE3LTAyLTEzICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CiAKKyAgICAgICAgW1dlYlJUQ10gQ3Jl
YXRpbmcgUlRDUGVlckNvbm5lY3Rpb24gd2l0aCBsaWJ3ZWJydGMgYmFja2VuZCBpcyBjcmFzaGlu
ZyBvbiByd3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1Jlc29sdmVyOjpzZXRSZXNvbHZlZEFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
VENSZXNvbHZlcjo6cmVzb2x2ZWRBZGRyZXNzRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUlRD
U29ja2V0OjpzaWduYWxPbk5ldHdvcmtUaHJlYWQpOgorCisyMDE3LTAyLTEzICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKICAgICAgICAgW1dlYlJUQ10gbGlid2VicnRjIHNv
Y2tldCBmYWN0b3J5IGlzIG5vdCBhc3NpZ25pbmcgdGhlIHJpZ2h0IHNvY2tldCB0eXBlCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMzMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBhZTI0MzQyNTU1
N2JlY2RmMTc5Y2MyOWUzNDU3MTE5MzNkYTQwMDczLi42ZmE5ZmY5ZTA4MzczMWE2ZjY3ODY5NjUy
N2YyNWI2YjhmNjM5MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTE1OCw3ICsxNTcsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlT2ZmZXIoKQogICAgIGF1dG8m
IHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZ2V0U2VuZGVy
cygpOwogICAgIGlmIChzZW5kZXJzLnNpemUoKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugb25s
eSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCi0gICAgICAgIGF1dG8gc3RyZWFt
ID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0cmVhbShzdHJlYW1J
ZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsKKyAgICAgICAgYXV0byBz
dHJlYW0gPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpLkNyZWF0ZUxvY2FsTWVkaWFTdHJl
YW0oc3RyZWFtSWQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpKSk7CiAgICAg
ICAgIGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIgOiBzZW5kZXJzKSB7CiAgICAgICAgICAgICBh
dXRvKiB0cmFjayA9IHNlbmRlci50cmFjaygpOwogICAgICAgICAgICAgaWYgKHRyYWNrKSB7CkBA
IC0xNjYsMTMgKzE2NSwxMyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRl
T2ZmZXIoKQogICAgICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsK
ICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNl
OjpBdWRpbykgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYWNrU291cmNlID0gUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoc291cmNlKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBydGNUcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZUF1ZGlvVHJh
Y2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTb3VyY2UucHRyKCkpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHJ0Y1RyYWNrID0gTGliV2ViUlRDUHJvdmlkZXI6OmZhY3Rvcnko
KS5DcmVhdGVBdWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHRyYWNrU291cmNl
LnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNldFRyYWNrKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0Y1RyYWNrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFkZEF1ZGlvU291cmNl
KFdURk1vdmUodHJhY2tTb3VyY2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5BZGRU
cmFjayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6Y3JlYXRlKHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVvVHJhY2sodHJhY2stPmlkKCku
dXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2UucHRyKCkpOworICAgICAgICAgICAgICAgICAgICBh
dXRvIHZpZGVvVHJhY2sgPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpLkNyZWF0ZVZpZGVv
VHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2UucHRyKCkpOwogICAg
ICAgICAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5hZGRWaWRlb1NvdXJjZShX
VEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+QWRkVHJh
Y2soV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTkwLDcgKzE4
OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVBbnN3ZXIoKQogICAg
IGF1dG8mIHNlbmRlcnMgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuZ2V0
U2VuZGVycygpOwogICAgIGlmIChzZW5kZXJzLnNpemUoKSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugb25seSBzdXBwb3J0IG9uZSBzdHJlYW0gZm9yIHRoZSBtb21lbnQuCi0gICAgICAgIGF1dG8g
c3RyZWFtID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRpYVN0cmVhbShz
dHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsKKyAgICAgICAg
YXV0byBzdHJlYW0gPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpLkNyZWF0ZUxvY2FsTWVk
aWFTdHJlYW0oc3RyZWFtSWQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpKSk7
CiAgICAgICAgIGZvciAoUlRDUnRwU2VuZGVyJiBzZW5kZXIgOiBzZW5kZXJzKSB7CiAgICAgICAg
ICAgICBhdXRvKiB0cmFjayA9IHNlbmRlci50cmFjaygpOwogICAgICAgICAgICAgaWYgKHRyYWNr
KSB7CkBAIC0xOTgsMTMgKzE5NywxMyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRv
Q3JlYXRlQW5zd2VyKCkKICAgICAgICAgICAgICAgICBhdXRvJiBzb3VyY2UgPSB0cmFjay0+c291
cmNlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW8pIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0cmFja1NvdXJjZSA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVB
dWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHRyYWNrU291cmNlLnB0cigpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBydGNUcmFjayA9IExpYldlYlJUQ1Byb3ZpZGVyOjpm
YWN0b3J5KCkuQ3JlYXRlQXVkaW9UcmFjayh0cmFjay0+aWQoKS51dGY4KCkuZGF0YSgpLCB0cmFj
a1NvdXJjZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIHRyYWNrU291cmNlLT5zZXRUcmFj
ayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPihydGNUcmFj
aykpOwogICAgICAgICAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5hZGRBdWRp
b1NvdXJjZShXVEZNb3ZlKHRyYWNrU291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bS0+QWRkVHJhY2soV1RGTW92ZShydGNUcmFjaykpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OmNyZWF0ZShzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIHZp
ZGVvVHJhY2sgPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVWaWRlb1RyYWNrKHRyYWNr
LT5pZCgpLnV0ZjgoKS5kYXRhKCksIHZpZGVvU291cmNlLnB0cigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byB2aWRlb1RyYWNrID0gTGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkoKS5DcmVh
dGVWaWRlb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCksIHZpZGVvU291cmNlLnB0cigp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuYWRkVmlkZW9T
b3VyY2UoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJlYW0t
PkFkZFRyYWNrKFdURk1vdmUodmlkZW9UcmFjaykpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAppbmRleCBkY2JmMzk5NDc1M2Q4ZGRh
ZDI2YmIwNWVmNmY1ZWQ5ZGM5ODYxMjQxLi43YjMwOGUwYjE2NGY4NTAxNDg3ZmRhNjc2NzVjMjA2
NTdmNzNlZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCkBA
IC0yNiw3ICsyNiw3IEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCi0jaW5jbHVkZSAiTGliV2Vi
UlRDVXRpbHMuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIlBl
ZXJDb25uZWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3
YzhlMGE2MjJjZjFmMTIxZmM1ZmVhYTc1YWMxOWQ2Njc5NDFkMzMuLjM0NDgyMDU1MzEwNzkxYWU2
NGZiNDFmZDIzYzZkNmI2NmMxYmE1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NTMsOCArMTU1Myw2IEBACiAJCTQxNTY3
MDQ3MURCRTE1MzMwMDlBQzNCQiAvKiBQZWVyQ29ubmVjdGlvblN0YXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NjcwNDYxREJFMTUyNDAwOUFD
M0JCIC8qIFBlZXJDb25uZWN0aW9uU3RhdGVzLmggKi87IH07CiAJCTQxNTc0NzQ3MUUzODY5QTQw
MEU5MTREOCAvKiBMaWJXZWJSVENNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTc0NzQzMUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENN
YWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTU3NDc0ODFFMzg2OUE3MDBFOTE0RDggLyogTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTc0NzQ0MUUzODY5OUUw
MEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNTc0NzQ5MUUzODY5QUEwMEU5MTREOCAvKiBMaWJX
ZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTU3NDc0NTFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDVXRpbHMuY3BwICovOyB9
OwotCQk0MTU3NDc0QTFFMzg2OUFEMDBFOTE0RDggLyogTGliV2ViUlRDVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTc0NzQ2MUUzODY5OUUw
MEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNv
bnRyb2xzQXBwbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCAqLzsg
fTsKIAkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3QUY3RjEy
RjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLzsgfTsKIAkJNDE1N0VC
RkExRTNBQjY3OTAwQUM5RkU5IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3RUJGOTFFM0FC
MDY4MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKQEAg
LTE1OTksNiArMTU5Nyw3IEBACiAJCTQxOUJDMkRFMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVk
TGlua1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLzsg
fTsKIAkJNDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJDMkREMTY4NTMy
OTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggKi87IH07CiAJCTQxOUJFNzU5MUJDN0Y0
MkIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1MjFCQzdGM0RCMDBFMUM4NUIgLyogV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oICovOyB9OworCQk0MUExQjAwRTFFNTI2NTc5MDA3RjM3NjkgLyog
TGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBMUIwMEQxRTUyNjU2RTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVy
LmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAq
LzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1
OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0
MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUFCRTY3QTFE
MDU4MEQ1MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggKi87IH07CkBA
IC04ODE0LDggKzg4MTMsNiBAQAogCQk0MTU2NzA0NjFEQkUxNTI0MDA5QUMzQkIgLyogUGVlckNv
bm5lY3Rpb25TdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVlckNv
bm5lY3Rpb25TdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1NzQ3NDMx
RTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ01hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENNYWNyb3MuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJS
VENNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1NzQ3NDQxRTM4Njk5
RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE1NzQ3NDUxRTM4Njk5
RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJS
VENVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNTc0NzQ2MUUzODY5
OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMaWJXZWJSVENVdGlscy5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1V0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZG
NSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFDb250cm9sc0FwcGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NTdBRjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sc0FwcGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0VCRjgxRTNBQjA2ODAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg4NjgsNiArODg2NSw3IEBACiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyREYgLyogV3JpdGFibGVTdHJlYW0u
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFBMUIwMEQxRTUyNjU2RTAwN0YzNzY5IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldl
YlJUQ1Byb3ZpZGVyLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAv
KiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBQkU2NzkxRDA1ODBENTAwNkQ4
NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NjAsOCArMTY4NTgsNyBAQAogCQkJCTQxNTA4
MDM1MUUzRjAwQUEwMDUxRDc1RCAvKiBMaWJXZWJSVENBdWRpb01vZHVsZS5oICovLAogCQkJCTQx
NTc0NzQzMUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENNYWNyb3MuaCAqLywKIAkJCQk0MTU3
NDc0NDFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLywKLQkJCQk0MTU3
NDc0NTFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDVXRpbHMuY3BwICovLAotCQkJCTQxNTc0
NzQ2MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5oICovLAorCQkJCTQxQTFCMDBE
MUU1MjY1NkUwMDdGMzc2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IGxpYndlYnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzE5Myw3
ICsyNzE5MCw2IEBACiAJCQkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNzYxMkIyMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNTc0NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDE1NzQ3NEExRTM4NjlBRDAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBMaW5l
YXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFC
OEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTA2OSw3
ICszMTA2NSw2IEBACiAJCQkJNUNERDgzNjQxRTQzMjVBMDAwNjIxRTkyIC8qIExpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJBRjFFM0E5OTQw
MDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxNTc0NzQ5MUUzODY5QUEwMEU5MTREOCAvKiBM
aWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDQzE4MzNFRTBEMDAx
NThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlCNUVBQTExMUU4
MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkZCNjk4
Q0YxODM0MDJCQjAwMTU4QTMxIC8qIExpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIy
MzMsNiArMzIyMjgsNyBAQAogCQkJCTBGN0RGMTQ4MUUyQkYxQjEwMDk1OTUxQiAvKiBXZWJDb3Jl
SlNDbGllbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNDAzNzlDMTI0QkVBN0YwMEFG
NDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzk3
OUY0MUM0OThDMDkwMERCNTBENCAvKiBXZWJDb3JlTlNFcnJvckV4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxQTFCMDBFMUU1MjY1NzkwMDdGMzc2OSAvKiBMaWJXZWJSVENQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzVCNEMyNEUxNTA5MjM2QzAw
QTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMjI1
QzBCMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDk1
YzUxN2YwZjdlMGM0M2ViODY2Mjc5MWEwMTM1MzEyZWU4NTg2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlLmgiCisjaW5jbHVkZSA8d2VicnRj
L2FwaS9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJj
b25uZWN0aW9uZmFjdG9yeXByb3h5Lmg+CisjaW5jbHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxz
b2NrZXRzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxv
Y2F0b3IuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0NsYXNzZXMvdmlk
ZW90b29sYm94dmlkZW9jb2RlY2ZhY3RvcnkuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyA6IHB1YmxpYyBydGM6Ok1l
c3NhZ2VIYW5kbGVyIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+
IGF1ZGlvRGV2aWNlTW9kdWxlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0
d29ya1RocmVhZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGluZ1Ro
cmVhZDsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlJbnRlcmZhY2U+IGZhY3Rvcnk7CisgICAgYm9vbCBuZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNl
cnZlciB7IGZhbHNlIH07Citwcml2YXRlOgorICAgIHZvaWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2Fn
ZSopOworfTsKKworc3RhdGljIGlubGluZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRz
JiBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM+IGZhY3RvcnlBbmRUaHJlYWRzOworICAg
IHJldHVybiBmYWN0b3J5QW5kVGhyZWFkcy5nZXQoKTsKK30KKworc3RydWN0IFRocmVhZE1lc3Nh
Z2VEYXRhIDogcHVibGljIHJ0Yzo6TWVzc2FnZURhdGEgeworICAgIFRocmVhZE1lc3NhZ2VEYXRh
KEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBjYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSkKKyAgICB7IH0KKyAgICBGdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrOworfTsK
Kwordm9pZCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOjpPbk1lc3NhZ2UocnRjOjpN
ZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtZXNzYWdlLT5tZXNzYWdlX2lkID09IDEp
OworICAgIHN0YXRpY19jYXN0PFRocmVhZE1lc3NhZ2VEYXRhKj4obWVzc2FnZS0+cGRhdGEpLT5j
YWxsYmFjaygpOworfQorCit2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBQZWVyQ29ubmVj
dGlvbkZhY3RvcnlBbmRUaHJlYWRzJiB0aHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KTsKKyAgICB0aHJlYWRzLm5ldHdvcmtUaHJlYWQtPlBvc3QoUlRDX0ZST01fSEVSRSwgJnRocmVh
ZHMsIDEsIG5ldyBUaHJlYWRNZXNzYWdlRGF0YShXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQorCit2
b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHMmIHRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOworICAgIHRocmVhZHMu
c2lnbmFsaW5nVGhyZWFkLT5Qb3N0KFJUQ19GUk9NX0hFUkUsICZ0aHJlYWRzLCAxLCBuZXcgVGhy
ZWFkTWVzc2FnZURhdGEoV1RGTW92ZShjYWxsYmFjaykpKTsKK30KKworc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoKQoreworICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKKworICAgIEFTU0VS
VCghZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9yeSk7CisKKyAgICBhdXRvIHRocmVhZCA9IHJ0Yzo6
VGhyZWFkOjpDcmVhdGUoKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkID0g
ZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgPyBydGM6OlRo
cmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpIDogcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOwor
ICAgIGJvb2wgcmVzdWx0ID0gZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC0+U3RhcnQo
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIGZhY3RvcnlBbmRU
aHJlYWRzLnNpZ25hbGluZ1RocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKKyAgICByZXN1
bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CisgICAgQVNT
RVJUKHJlc3VsdCk7CisKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisKKyAgICBmYWN0b3J5
QW5kVGhyZWFkcy5mYWN0b3J5ID0gd2VicnRjOjpDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
ZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMu
bmV0d29ya1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdl
dCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZS5nZXQoKSwgbmV3IHdlYnJ0
Yzo6VmlkZW9Ub29sYm94VmlkZW9FbmNvZGVyRmFjdG9yeSgpLCBuZXcgd2VicnRjOjpWaWRlb1Rv
b2xib3hWaWRlb0RlY29kZXJGYWN0b3J5KCkpOworCisgICAgQVNTRVJUKGZhY3RvcnlBbmRUaHJl
YWRzLmZhY3RvcnkpOworfQorCit3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZSYgTGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkoKQoreworICAgIGlmICghc3RhdGljRmFjdG9y
eUFuZFRocmVhZHMoKS5mYWN0b3J5KQorICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25G
YWN0b3J5QW5kVGhyZWFkcygpOworICAgIHJldHVybiAqc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KS5mYWN0b3J5OworfQorCit2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRQZWVyQ29ubmVjdGlv
bkZhY3RvcnkocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPiYmIGZhY3RvcnkpCit7CisgICAgaWYgKCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFk
cygpLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRU
aHJlYWRzKCk7CisKKyAgICBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkgPSB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeVByb3h5OjpDcmVhdGUoc3RhdGljRmFjdG9yeUFuZFRo
cmVhZHMoKS5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIFdURk1vdmUoZmFjdG9yeSkpOworfQorCitz
dGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+
IGNyZWF0ZUFjdHVhbFBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZl
ciYgb2JzZXJ2ZXIsIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+
JiYgcG9ydEFsbG9jYXRvcikKK3sKKyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KS5mYWN0b3J5KTsKKworICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0Nv
bmZpZ3VyYXRpb24gY29uZmlnOworICAgIC8vIEZJWE1FOiBBZGQgYSBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb24uCisgICAgcmV0dXJuIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeS0+Q3Jl
YXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBXVEZNb3ZlKHBvcnRBbGxvY2F0b3IpLCBudWxscHRy
LCAmb2JzZXJ2ZXIpOworfQorCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgLy8gRGVmYXVs
dCBXSzEgaW1wbGVtZW50YXRpb24uCisgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBzdGF0
aWNGYWN0b3J5QW5kVGhyZWFkcygpOworICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9y
eSkgeworICAgICAgICBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRo
U29ja2V0U2VydmVyID0gdHJ1ZTsKKyAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeUFuZFRocmVhZHMoKTsKKyAgICB9CisgICAgQVNTRVJUKHN0YXRpY0ZhY3RvcnlBbmRUaHJl
YWRzKCkubmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOworCisgICAgcmV0dXJuIGNyZWF0
ZUFjdHVhbFBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBudWxscHRyKTsKK30KKworcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiBuZXR3b3JrTWFuYWdlciwgcnRjOjpQYWNr
ZXRTb2NrZXRGYWN0b3J5JiBwYWNrZXRTb2NrZXRGYWN0b3J5KQoreworICAgIEFTU0VSVCghc3Rh
dGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CisK
KyAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7
CisgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KQorICAgICAgICBpbml0aWFsaXpl
UGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKKyAgICBzdGF0aWNG
YWN0b3J5QW5kVGhyZWFkcygpLnNpZ25hbGluZ1RocmVhZC0+SW52b2tlPHZvaWQ+KFJUQ19GUk9N
X0hFUkUsIFsmXSgpIHsKKyAgICAgICAgcG9ydEFsbG9jYXRvci5yZXNldChuZXcgY3JpY2tldDo6
QmFzaWNQb3J0QWxsb2NhdG9yKCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3Rvcnkp
KTsKKyAgICB9KTsKKworICAgIHJldHVybiBjcmVhdGVBY3R1YWxQZWVyQ29ubmVjdGlvbihvYnNl
cnZlciwgV1RGTW92ZShwb3J0QWxsb2NhdG9yKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oCmluZGV4IDM4N2QyYTI1ZGEwNDdmODczODRlODU4NDBlMjJhOGNmN2Y5ZDU0ODcuLmMy
ZjRmYjVmYTg2YTViMzVlZmExYmUyYmI4MmIzNjRjYmM0ZTRhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oCkBAIC0yNSwyMCArMjUsNDQgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9zY29w
ZWRfcmVmX3B0ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKICNpZiBVU0UoTElCV0VC
UlRDKQotI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisKICNpbmNsdWRlIDx3ZWJydGMvYXBp
L3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmg+CisKK25hbWVzcGFjZSBydGMgeworY2xhc3MgTmV0
d29ya01hbmFnZXI7CitjbGFzcyBQYWNrZXRTb2NrZXRGYWN0b3J5OworfQorCituYW1lc3BhY2Ug
d2VicnRjIHsKK2NsYXNzIFBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZTsKK30KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJU
Q1Byb3ZpZGVyIHsKIHB1YmxpYzoKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBl
ZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIpIHsg
cmV0dXJuIFdlYkNvcmU6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyKTsgfTsKLSNlbmRp
ZgorICAgIExpYldlYlJUQ1Byb3ZpZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkxpYldl
YlJUQ1Byb3ZpZGVyKCkgPSBkZWZhdWx0OwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImKTsKKworICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIG1ldGhvZHMgbm90IHN0YXRp
Yy4KKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsT25XZWJSVENOZXR3b3JrVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgc3Rh
dGljIFdFQkNPUkVfRVhQT1JUIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNl
JiBmYWN0b3J5KCk7CisgICAgLy8gVXNlZCBmb3IgbW9jayB0ZXN0aW5nCisgICAgc3RhdGljIHZv
aWQgc2V0UGVlckNvbm5lY3Rpb25GYWN0b3J5KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4mJik7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJD
T1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVy
JiwgcnRjOjpOZXR3b3JrTWFuYWdlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSYpOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0
aWxzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFhZjJmMjc1MGJhNjZhY2U1
MWM2YjlkY2JlNjIwN2JiNTgzY2RmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMu
aCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVs
ZS5oIgotI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJveHkuaD4K
LSNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgotI2luY2x1ZGUg
PHdlYnJ0Yy9iYXNlL3BoeXNpY2Fsc29ja2V0c2VydmVyLmg+Ci0jaW5jbHVkZSA8d2VicnRjL3Ay
cC9jbGllbnQvYmFzaWNwb3J0YWxsb2NhdG9yLmg+Ci0jaW5jbHVkZSA8d2VicnRjL3Nkay9vYmpj
L0ZyYW1ld29yay9DbGFzc2VzL3ZpZGVvdG9vbGJveHZpZGVvY29kZWNmYWN0b3J5Lmg+Ci0jaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHMgOiBwdWJsaWMgcnRjOjpNZXNzYWdlSGFuZGxlciB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PExpYldlYlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb0RldmljZU1vZHVsZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpUaHJlYWQ+IG5ldHdvcmtUaHJlYWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6VGhyZWFkPiBzaWduYWxpbmdUaHJlYWQ7Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBmYWN0b3J5OwotICAgIGJvb2wgbmV0
d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyBmYWxzZSB9OwotcHJpdmF0ZToKLSAgICB2b2lk
IE9uTWVzc2FnZShydGM6Ok1lc3NhZ2UqKTsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzPiBm
YWN0b3J5QW5kVGhyZWFkczsKLSAgICByZXR1cm4gZmFjdG9yeUFuZFRocmVhZHMuZ2V0KCk7Ci19
Ci0KLXN0cnVjdCBUaHJlYWRNZXNzYWdlRGF0YSA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VEYXRhIHsK
LSAgICBUaHJlYWRNZXNzYWdlRGF0YShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCi0gICAg
ICAgIDogY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgeyB9Ci0gICAgRnVuY3Rpb248
dm9pZCgpPiBjYWxsYmFjazsKLX07Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhy
ZWFkczo6T25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSogbWVzc2FnZSkKLXsKLSAgICBBU1NFUlQobWVz
c2FnZS0+bWVzc2FnZV9pZCA9PSAxKTsKLSAgICBzdGF0aWNfY2FzdDxUaHJlYWRNZXNzYWdlRGF0
YSo+KG1lc3NhZ2UtPnBkYXRhKS0+Y2FsbGJhY2soKTsKLX0KLQotdm9pZCBjYWxsT25XZWJSVENO
ZXR3b3JrVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKLXsKLSAgICBQZWVyQ29u
bmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiB0aHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKTsKLSAgICB0aHJlYWRzLm5ldHdvcmtUaHJlYWQtPlBvc3QoUlRDX0ZST01fSEVSRSwgJnRo
cmVhZHMsIDEsIG5ldyBUaHJlYWRNZXNzYWdlRGF0YShXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQot
Ci12b2lkIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCi17Ci0gICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgdGhyZWFkcyA9
IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0gICAgdGhyZWFkcy5zaWduYWxpbmdUaHJlYWQt
PlBvc3QoUlRDX0ZST01fSEVSRSwgJnRocmVhZHMsIDEsIG5ldyBUaHJlYWRNZXNzYWdlRGF0YShX
VEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpCi17Ci0gICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMg
PSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOwotCi0gICAgQVNTRVJUKCFmYWN0b3J5QW5kVGhy
ZWFkcy5mYWN0b3J5KTsKLQotICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgp
OwotICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQgPSBmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciA/IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRo
U29ja2V0U2VydmVyKCkgOiBydGM6OlRocmVhZDo6Q3JlYXRlKCk7Ci0gICAgYm9vbCByZXN1bHQg
PSBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLT5TdGFydCgpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5n
VGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOwotICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRU
aHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLQot
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKLQotICAgIGZhY3RvcnlBbmRUaHJlYWRzLmZhY3Rv
cnkgPSB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdl
dCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRU
aHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlLmdldCgpLCBuZXcgd2VicnRjOjpWaWRlb1Rvb2xib3hW
aWRlb0VuY29kZXJGYWN0b3J5KCksIG5ldyB3ZWJydGM6OlZpZGVvVG9vbGJveFZpZGVvRGVjb2Rl
ckZhY3RvcnkoKSk7Ci0KLSAgICBBU1NFUlQoZmFjdG9yeUFuZFRocmVhZHMuZmFjdG9yeSk7Ci19
Ci0KLXZvaWQgaW5pdGlhbGl6ZUxpYldlYlJUQ0ludGVybmFsc1dpdGhTb2NrZXRTZXJ2ZXIoKQot
ewotICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkubmV0d29ya1RocmVhZFdpdGhTb2NrZXRT
ZXJ2ZXIgPSB0cnVlOwotfQotCi13ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZSYgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkKLXsKLSAgICBpZiAoIXN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkuZmFjdG9yeSkKLSAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eUFuZFRocmVhZHMoKTsKLSAgICByZXR1cm4gKnN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFj
dG9yeTsKLX0KLQotdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkZhY3RvcnkocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiYmIGZhY3RvcnkpCi17
Ci0gICAgaWYgKCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpCi0gICAgICAgIGlu
aXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBzdGF0aWNG
YWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkgPSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9y
eVByb3h5OjpDcmVhdGUoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5zaWduYWxpbmdUaHJlYWQu
Z2V0KCksIFdURk1vdmUoZmFjdG9yeSkpOwotfQotCi1zdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+JiYgcG9ydEFsbG9jYXRvcikKLXsKLSAgICBBU1NF
UlQoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5KTsKLQotICAgIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwotICAgIC8vIEZJ
WE1FOiBBZGQgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCi0gICAgcmV0dXJuIHN0YXRpY0ZhY3Rv
cnlBbmRUaHJlYWRzKCkuZmFjdG9yeS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlnLCBXVEZN
b3ZlKHBvcnRBbGxvY2F0b3IpLCBudWxscHRyLCAmb2JzZXJ2ZXIpOwotfQotCi1ydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5l
Y3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKLXsKLSAgICBB
U1NFUlQoc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNl
cnZlcik7Ci0KLSAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCk7Ci0gICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KQotICAgICAgICBp
bml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpOwotCi0gICAgcmV0dXJu
IGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBudWxscHRyKTsKLX0KLQotcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25u
ZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6TmV0
d29ya01hbmFnZXImIG5ldHdvcmtNYW5hZ2VyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkmIHBh
Y2tldFNvY2tldEZhY3RvcnkpCi17Ci0gICAgQVNTRVJUKCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFk
cygpLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKLQotICAgIGF1dG8mIGZhY3RvcnlB
bmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKLSAgICBpZiAoIWZhY3RvcnlB
bmRUaHJlYWRzLmZhY3RvcnkpCi0gICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6QmFzaWNQb3J0
QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOwotICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCku
c2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAg
ICAgICBwb3J0QWxsb2NhdG9yLnJlc2V0KG5ldyBjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3Io
Jm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSkpOwotICAgIH0pOwotCi0gICAg
cmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXVEZNb3ZlKHBvcnRBbGxvY2F0
b3IpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUxMTI2ZDg1Y2RiMDhjMzFlN2MwODc4YzA4MWY1ZDU1MmM1ZWE4YWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0Uo
TElCV0VCUlRDKQotCi0jaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCi0jaW5jbHVkZSA8d2Vi
cnRjL2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1u
YW1lc3BhY2UgcnRjIHsKLWNsYXNzIE5ldHdvcmtNYW5hZ2VyOwotY2xhc3MgUGFja2V0U29ja2V0
RmFjdG9yeTsKLX0KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2U7Ci1jbGFzcyBQZWVyQ29ubmVjdGlvbkludGVyZmFjZTsKLWNsYXNzIFBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tldFNlcnZl
cigpOwotCi13ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSYgcGVlckNvbm5l
Y3Rpb25GYWN0b3J5KCk7Ci1XRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpOZXR3b3JrTWFuYWdlciYsIHJ0Yzo6UGFja2V0
U29ja2V0RmFjdG9yeSYpOwotV0VCQ09SRV9FWFBPUlQgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25PYnNlcnZlciYpOwotCi1XRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKLQotLy8gVXNlZCBmb3IgbW9j
ayB0ZXN0aW5nCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBlZXJDb25uZWN0aW9uRmFjdG9yeShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+
JiYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAKaW5kZXggYWNkMDEwMDExMzBlM2FhMWRlOWQ2YWY2MmQzMDM4M2MyYmQ4ZDI1OC4uOTgxODMw
MzU0NTRhNTU3MjdhNTNiN2Q5MTQ4YzQ3ODBlZmQzMjc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9y
bWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmIHRpbWUsIGMKICAgICB9CiAgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hT
YW1wbGVzKHRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwogCi0gICAgY2FsbE9uV2ViUlRD
U2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlv
RGF0YSgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGFjYzViYzNhYmU4NThhMGYzNWQ4NWYwMmQyN2M0ZjRkNjRlODYyOTYuLjZkMjZkNTU2ZTMzZTk1
Y2ExYmI0NGI4ZWRmM2FlMmJmZGE1OGExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotI2lu
Y2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVk
ZSAiTWFsbG9jU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggOGJiN2U5MTY0ZDY2ZmY3N2FmNjcwODE0ZmJjMTQ0YzEwMWMyNDIxMS4uMWZiYWI1
ZDc4YjNlMmUxNWFmYWMwNTUwMzAxYjkzZTRjNjA5OWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMjgs
MTcgKzI4LDMzIEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkxpYldlYlJUQ1By
b3ZpZGVyLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKICNpbmNsdWRlIDxzc3RyZWFt
PgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiYg
Z2V0UmVhbFBlZXJDb25uZWN0aW9uRmFjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4+IHJlYWxQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7CisgICAgcmV0dXJuIHJlYWxQZWVyQ29u
bmVjdGlvbkZhY3Rvcnk7Cit9CisKK3N0YXRpYyBpbmxpbmUgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2UqIHJlYWxQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKQoreworICAgIHJl
dHVybiBnZXRSZWFsUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuZ2V0KCk7Cit9CisKIHZvaWQgdXNl
TW9ja1JUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeShMaWJXZWJSVENQcm92aWRlciogcHJvdmlkZXIs
IGNvbnN0IFN0cmluZyYgdGVzdENhc2UpCiB7Ci0gICAgc2V0UGVlckNvbm5lY3Rpb25GYWN0b3J5
KE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OmNyZWF0ZShwcm92aWRlciwgU3Ry
aW5nKHRlc3RDYXNlKSkpOworICAgIGlmIChwcm92aWRlciAmJiAhcmVhbFBlZXJDb25uZWN0aW9u
RmFjdG9yeSgpKSB7CisgICAgICAgIGF1dG8mIGZhY3RvcnkgPSBnZXRSZWFsUGVlckNvbm5lY3Rp
b25GYWN0b3J5KCk7CisgICAgICAgIGZhY3RvcnkgPSAmcHJvdmlkZXItPmZhY3RvcnkoKTsKKyAg
ICB9CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6c2V0UGVlckNvbm5lY3Rpb25GYWN0b3J5KE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OmNyZWF0ZShTdHJpbmcodGVzdENhc2Up
KSk7CiB9CiAKIGNsYXNzIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZvckljZUNhbmRpZGF0
ZXMgOiBwdWJsaWMgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uIHsKQEAgLTUyLDE5ICs2OCwx
OSBAQCBwcml2YXRlOgogdm9pZCBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25Gb3JJY2VDYW5k
aWRhdGVzOjpnb3RMb2NhbERlc2NyaXB0aW9uKCkKIHsKICAgICAvLyBMZXQncyBnYXRoZXIgY2Fu
ZGlkYXRlcwotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10oKSB7CisgICAg
TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10oKSB7
CiAgICAgICAgIE1vY2tMaWJXZWJSVENJY2VDYW5kaWRhdGUgY2FuZGlkYXRlKCIyMDEzMjY2NDMx
IDEgdWRwIDIwMTMyNjY0MzIgMTkyLjE2OC4wLjEwMCAzODgzOCB0eXAgaG9zdCBnZW5lcmF0aW9u
IDAiLCAiMSIpOwogICAgICAgICBtX29ic2VydmVyLk9uSWNlQ2FuZGlkYXRlKCZjYW5kaWRhdGUp
OwogICAgIH0pOwotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10oKSB7Cisg
ICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10o
KSB7CiAgICAgICAgIE1vY2tMaWJXZWJSVENJY2VDYW5kaWRhdGUgY2FuZGlkYXRlKCIxMDE5MjE2
MzgzIDEgdGNwIDEwMTkyMTYzODQgMTkyLjE2OC4wLjEwMCA5IHR5cCBob3N0IHRjcHR5cGUgcGFz
c2l2ZSBnZW5lcmF0aW9uIDAiLCAiMSIpOwogICAgICAgICBtX29ic2VydmVyLk9uSWNlQ2FuZGlk
YXRlKCZjYW5kaWRhdGUpOwogICAgIH0pOwotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVh
ZChbdGhpc10oKSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGlu
Z1RocmVhZChbdGhpc10oKSB7CiAgICAgICAgIE1vY2tMaWJXZWJSVENJY2VDYW5kaWRhdGUgY2Fu
ZGlkYXRlKCIxNjc3NzIyMTExIDEgdGNwIDE2Nzc3MjIxMTIgMTcyLjE4LjAuMSA0Nzk4OSB0eXAg
c3JmbHggcmFkZHIgMTkyLjE2OC4wLjEwMCBycG9ydCA0Nzk4OSBnZW5lcmF0aW9uIDAiLCAiMSIp
OwogICAgICAgICBtX29ic2VydmVyLk9uSWNlQ2FuZGlkYXRlKCZjYW5kaWRhdGUpOwogICAgIH0p
OwotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10oKSB7CisgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpc10oKSB7CiAgICAg
ICAgIG1fb2JzZXJ2ZXIuT25JY2VHYXRoZXJpbmdDaGFuZ2Uod2VicnRjOjpQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6a0ljZUdhdGhlcmluZ0NvbXBsZXRlKTsKICAgICB9KTsKIH0KQEAgLTkzLDcg
KzEwOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNl
SW5OZXR3b3JrVGhyZWFkKE1vY2tMaWJXZWJSVENQZWVyCiAgICAgbW9jay5BZGRSZWYoKTsKICAg
ICBvYnNlcnZlci5BZGRSZWYoKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFsmbW9jaywgJm9ic2Vy
dmVyXSB7Ci0gICAgICAgIGNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZtb2NrLCAmb2JzZXJ2
ZXJdKCkgeworICAgICAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1Ro
cmVhZChbJm1vY2ssICZvYnNlcnZlcl0oKSB7CiAgICAgICAgICAgICBvYnNlcnZlci5SZWxlYXNl
KCk7CiAgICAgICAgICAgICBtb2NrLlJlbGVhc2UoKTsKICAgICAgICAgfSk7CkBAIC0xMzMsMjYg
KzE0OSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgU2V0TG9jYWxEZXNjcmlwdGlvbih3ZWJydGM6
OlNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgd2VicnRjOjpTZXNzaW9u
RGVzY3JpcHRpb25JbnRlcmZhY2UqKSBmaW5hbCB7IHJlbGVhc2VJbk5ldHdvcmtUaHJlYWQoKnRo
aXMsICpvYnNlcnZlcik7IH0KIH07CiAKLQotTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFj
dG9yeTo6TW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeShMaWJXZWJSVENQcm92aWRl
ciogcHJvdmlkZXIsIFN0cmluZyYmIHRlc3RDYXNlKQotICAgIDogbV9wcm92aWRlcihwcm92aWRl
cikKLSAgICAsIG1fdGVzdENhc2UoV1RGTW92ZSh0ZXN0Q2FzZSkpCitNb2NrTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25GYWN0b3J5OjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KFN0
cmluZyYmIHRlc3RDYXNlKQorICAgIDogbV90ZXN0Q2FzZShXVEZNb3ZlKHRlc3RDYXNlKSkKIHsK
LSAgICBpZiAobV90ZXN0Q2FzZSA9PSAiVHdvUmVhbFBlZXJDb25uZWN0aW9ucyIgJiYgbV9wcm92
aWRlcikgeworICAgIGlmIChtX3Rlc3RDYXNlID09ICJUd29SZWFsUGVlckNvbm5lY3Rpb25zIikg
ewogICAgICAgICBtX251bWJlck9mUmVhbFBlZXJDb25uZWN0aW9ucyA9IDI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fdGVzdENhc2UgPT0gIk9uZVJlYWxQZWVyQ29ubmVjdGlv
biIgJiYgbV9wcm92aWRlcikKKyAgICBpZiAobV90ZXN0Q2FzZSA9PSAiT25lUmVhbFBlZXJDb25u
ZWN0aW9uIikKICAgICAgICAgbV9udW1iZXJPZlJlYWxQZWVyQ29ubmVjdGlvbnMgPSAxOwogfQog
Ci1ydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTW9j
a0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeTo6Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29u
c3Qgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYsIHN0
ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpQb3J0QWxsb2NhdG9yPiwgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZhY2U+LCB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6OkNy
ZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0
OjpQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvckludGVyZmFjZT4gZ2VuZXJhdG9yLCB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIGlmIChtX251bWJlck9mUmVhbFBlZXJD
b25uZWN0aW9ucykgewotICAgICAgICBBU1NFUlQobV9wcm92aWRlcik7Ci0gICAgICAgIGF1dG8g
Y29ubmVjdGlvbiA9IG1fcHJvdmlkZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKCpvYnNlcnZlcik7
Ci0gICAgICAgIGlmICghLS1tX251bWJlck9mUmVhbFBlZXJDb25uZWN0aW9ucykKLSAgICAgICAg
ICAgIG1fcHJvdmlkZXIgPSBudWxscHRyOworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSByZWFs
UGVlckNvbm5lY3Rpb25GYWN0b3J5KCktPkNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRp
b24sIFdURk1vdmUocG9ydEFsbG9jYXRvciksIFdURk1vdmUoZ2VuZXJhdG9yKSwgb2JzZXJ2ZXIp
OworICAgICAgICAtLW1fbnVtYmVyT2ZSZWFsUGVlckNvbm5lY3Rpb25zOwogICAgICAgICByZXR1
cm4gY29ubmVjdGlvbjsKICAgICB9CiAKQEAgLTE4MSw3ICsxOTMsNyBAQCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4gTW9ja0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uRmFjdAogCiB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6U2V0TG9jYWxE
ZXNjcmlwdGlvbih3ZWJydGM6OlNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZl
ciwgd2VicnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqKQogewotICAgIGNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgb2JzZXJ2ZXJdIHsKKyAgICBMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBvYnNlcnZlcl0gewogICAg
ICAgICBvYnNlcnZlci0+T25TdWNjZXNzKCk7CiAgICAgICAgIGdvdExvY2FsRGVzY3JpcHRpb24o
KTsKICAgICB9KTsKQEAgLTE4OSw3ICsyMDEsNyBAQCB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbjo6U2V0TG9jYWxEZXNjcmlwdGlvbih3ZWJydGM6OlNldFNlc3Npb25EZXNjcmlwdAog
CiB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6U2V0UmVtb3RlRGVzY3JpcHRpb24o
d2VicnRjOjpTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciogb2JzZXJ2ZXIsIHdlYnJ0Yzo6
U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlKiBzZXNzaW9uRGVzY3JpcHRpb24pCiB7Ci0gICAg
Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtvYnNlcnZlcl0geworICAgIExpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW29ic2VydmVyXSB7CiAgICAgICAg
IG9ic2VydmVyLT5PblN1Y2Nlc3MoKTsKICAgICB9KTsKICAgICBBU1NFUlQoc2Vzc2lvbkRlc2Ny
aXB0aW9uKTsKQEAgLTIyNCw3ICsyMzYsNyBAQCB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbjo6UmVtb3ZlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UqKQogCiB2b2lk
IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlT2ZmZXIod2VicnRjOjpDcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciogb2JzZXJ2ZXIsIGNvbnN0IHdlYnJ0Yzo6TWVkaWFD
b25zdHJhaW50c0ludGVyZmFjZSopCiB7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFk
KFt0aGlzLCBvYnNlcnZlcl0geworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENT
aWduYWxpbmdUaHJlYWQoW3RoaXMsIG9ic2VydmVyXSB7CiAgICAgICAgIHN0ZDo6b3N0cmluZ3N0
cmVhbSBzZHA7CiAgICAgICAgIHNkcCA8PAogICAgICAgICAgICAgInY9MFxyXG4iCkBAIC0yODMs
NyArMjk1LDcgQEAgdm9pZCBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkNyZWF0ZU9mZmVy
KHdlYnJ0Yzo6Q3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2IKIAogdm9pZCBNb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb246OkNyZWF0ZUFuc3dlcih3ZWJydGM6OkNyZWF0ZVNlc3Npb25EZXNjcmlw
dGlvbk9ic2VydmVyKiBvYnNlcnZlciwgY29uc3Qgd2VicnRjOjpNZWRpYUNvbnN0cmFpbnRzSW50
ZXJmYWNlKikKIHsKLSAgICBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3RoaXMsIG9ic2Vy
dmVyXSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVh
ZChbdGhpcywgb2JzZXJ2ZXJdIHsKICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHNkcDsKICAg
ICAgICAgc2RwIDw8CiAgICAgICAgICAgICAidj0wXHJcbiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGJiNjNiNGZk
NDJmMWMyYWNjNzliOGM5ZDg3Njg3OTkyNTQxN2VlNTcuLmEwNTA4OTdkMGRkNjdiYTliNmQ0Nzg0
YzgzOWU4OWQ2ODgyNTdkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtMTkxLDEwICsxOTEsMTAgQEAgcHJpdmF0
ZToKIAogY2xhc3MgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeSA6IHB1YmxpYyB3
ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4gY3JlYXRlKExpYldlYlJUQ1Byb3ZpZGVyKiBwcm92aWRlciwgU3RyaW5nJiYgdGVzdENh
c2UpIHsgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uRmFjdG9yeT4ocHJvdmlkZXIsIFdURk1vdmUodGVzdENhc2UpKTsgfQorICAgIHN0
YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2U+IGNyZWF0ZShTdHJpbmcmJiB0ZXN0Q2FzZSkgeyByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291
bnRlZE9iamVjdDxNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5PihXVEZNb3ZlKHRl
c3RDYXNlKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkZhY3RvcnkoTGliV2ViUlRDUHJvdmlkZXIqLCBTdHJpbmcmJik7CisgICAgTW9ja0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uRmFjdG9yeShTdHJpbmcmJik7CiAKIHByaXZhdGU6CiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IENyZWF0ZVBlZXJD
b25uZWN0aW9uKGNvbnN0IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZp
Z3VyYXRpb24mLCBjb25zdCB3ZWJydGM6Ok1lZGlhQ29uc3RyYWludHNJbnRlcmZhY2UqLCBzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6UG9ydEFsbG9jYXRvcj4sIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlPiwgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bk9ic2VydmVyKikgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMjIwLDcgKzIyMCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBTdG9wUnRjRXZlbnRMb2coKSBmaW5hbCB7IH0KIAogcHJpdmF0
ZToKLSAgICBMaWJXZWJSVENQcm92aWRlciogbV9wcm92aWRlciB7IG51bGxwdHIgfTsKICAgICBT
dHJpbmcgbV90ZXN0Q2FzZTsKICAgICB1bnNpZ25lZCBtX251bWJlck9mUmVhbFBlZXJDb25uZWN0
aW9ucyB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGMzYWUyNjVj
YTJjNTBiNTQ1NGVlZmEwMGM0OTNhMTA5NGY2N2YzMDMuLmQzYjE1MTUxYjM2MDIxZmFhNjVlNTVk
NzA4NjljZTlmMjc3ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0yOSwx
NCArMjksMTMgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4KICNpbmNsdWRlIDx3ZWJydGMv
YXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVQZWVyQ29ubmVj
dGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygp
Lm1vbml0b3IoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLnNv
Y2tldEZhY3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGli
V2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2Vi
UlRDTmV0d29yaygpLnNvY2tldEZhY3RvcnkoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENTb2NrZXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0LmgKaW5kZXggYTUxZWM2NTMxMDYwNjdkYjZhY2RiMWI1ZjIxYTIy
MDI3ZWY1YmFjMC4uNzE1NzQ4YjRlZDkwNjNmNWU4ODQxNDJlNjRhYmYyYmU0MWJlNjdiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1NvY2tldC5oCkBAIC0yNyw4ICsyNyw3IEBACiAKICNpZiBVU0UoTElCV0VCUlRD
KQogCi0jaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0xpYldlYlJUQ1V0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRl
ci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9iYXNlL2FzeW5jcGFja2V0c29ja2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3Iu
Y3BwCmluZGV4IDg5ZmJmOTU0NzJkMDk2NzhlYzQ3OTYwN2QyZTBjNTkyZmYyNzdlZTkuLjllYWM0
OTRiYjA5NWRjYWFlMzFhMTRjYzE0Y2U3OWU1NjllYzBiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNw
cApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFdlYlJUQ01vbml0b3I6OlN0YXJ0VXBkYXRpbmcoKQog
ICAgIGlmIChtX2NsaWVudENvdW50KSB7CiAgICAgICAgIC8vIE5lZWQgdG8gc2lnbmFsIG5ldyBj
bGllbnQgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgdGhlIG5ldHdvcmsgbGlzdCwgbGV0J3MgZG8gaXQg
YXN5bmNocm9ub3VzbHkKICAgICAgICAgaWYgKG1fcmVjZWl2ZWROZXR3b3JrTGlzdCkgewotICAg
ICAgICAgICAgV2ViQ29yZTo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpc10geworICAg
ICAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtU
aHJlYWQoW3RoaXNdIHsKICAgICAgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViUlRD
TW9uaXRvcjo6U3RvcFVwZGF0aW5nKCkKIHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya3MsIGNvbnN0IFJUQ05ldHdvcms6
OklQQWRkcmVzcyYgaXB2NCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KQogewog
ICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBv
ZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0g
ICAgV2ViQ29yZTo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgbmV0d29ya3MsIGlw
djQsIGlwdjZdIHsKKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
TmV0d29ya1RocmVhZChbdGhpcywgbmV0d29ya3MsIGlwdjQsIGlwdjZdIHsKICAgICAgICAgc3Rk
Ojp2ZWN0b3I8cnRjOjpOZXR3b3JrKj4gbmV0d29ya0xpc3QobmV0d29ya3Muc2l6ZSgpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG5ldHdvcmtzLnNpemUoKTsgKytp
bmRleCkKICAgICAgICAgICAgIG5ldHdvcmtMaXN0W2luZGV4XSA9IG5ldyBydGM6Ok5ldHdvcmso
bmV0d29ya3NbaW5kZXhdLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAppbmRleCA2NWI0ZjExNTJl
YmFlOWFlZjgxMDY2NmRmMDg0ODE0Y2U0NzNiYjQ5Li5kYzE1MjQ5MTE2NmM5NGMzMjYyZDEzNWYz
ZmI2YzU4ZTg1MGNlNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogI2lm
IFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9MaWJXZWJSVENVdGlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyLmNwcAppbmRleCA0MmVkMmRkYmEyNWNlMDAxMzYzYWI0NDU4YTYzNTRmMmRlYmQ4
OTVhLi5iNGJkODcxMWU3YmYyNmIwOThmNGZmOGQ0Y2RiODVlNjM3ZmUwMGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiTGliV2ViUlRDUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9MaWJXZWJSVENVdGlscy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJv
dmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgV2ViUlRDUmVzb2x2ZXI6OnNldFJlc29sdmVkQWRkcmVz
cyhjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkCiAgICAgZm9yIChhdXRv
JiBhZGRyZXNzIDogYWRkcmVzc2VzKQogICAgICAgICBydGNBZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKGFkZHJlc3MudmFsdWUpOwogICAgIAotICAgIFdlYkNvcmU6OmNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoWyZmYWN0b3J5LCBpZGVudGlmaWVyLCBydGNBZGRyZXNzZXMgPSBXVEZNb3ZlKHJ0
Y0FkZHJlc3NlcyldKCkgeworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25X
ZWJSVENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRlbnRpZmllciwgcnRjQWRkcmVzc2VzID0g
V1RGTW92ZShydGNBZGRyZXNzZXMpXSgpIHsKICAgICAgICAgYXV0byogcmVzb2x2ZXIgPSBmYWN0
b3J5LnJlc29sdmVyKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXJlc29sdmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlJUQ1Jlc29sdmVyOjpyZXNv
bHZlZEFkZHJlc3NFcnJvcihpbnQgZXJyb3IpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbV9p
ZGVudGlmaWVyOwogICAgIGF1dG8mIGZhY3RvcnkgPSBtX3NvY2tldEZhY3Rvcnk7Ci0gICAgV2Vi
Q29yZTo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbJmZhY3RvcnksIGlkZW50aWZpZXIsIGVy
cm9yXSgpIHsKKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0
d29ya1RocmVhZChbJmZhY3RvcnksIGlkZW50aWZpZXIsIGVycm9yXSgpIHsKICAgICAgICAgYXV0
byogcmVzb2x2ZXIgPSBmYWN0b3J5LnJlc29sdmVyKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
IXJlc29sdmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwCmluZGV4IGM1
Mjk1YzYzMzRkNDA5NmIwOTY4OGRmMWQ5Njk4ZmE5M2FmOWI3ZGYuLjY0YTU1Y2ZiMTI3M2U5MDFi
ZGYxYTA5MDYwOTJkNjYwYjBjZGExZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlJUQ1NvY2tldDo6c2lnbmFsT25OZXR3
b3JrVGhyZWFkKExpYldlYlJUQ1NvY2tldEZhY3RvcnkmIGZhY3RvcnksIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEZ1bmN0aW9uPHZvaWQoTGliV2ViUlRDU29ja2V0Jik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgLy8gZmFjdG9yeSBpcyBzdGF5aW5nIHZhbGlkIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGlt
ZS4KLSAgICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRl
bnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7CisgICAgV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZmYWN0b3J5LCBp
ZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKICAgICAgICAgYXV0
byogc29ja2V0ID0gZmFjdG9yeS5zb2NrZXQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc29j
a2V0KQogICAgICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301418</attachid>
            <date>2017-02-13 16:39:57 -0800</date>
            <delta_ts>2017-02-13 17:15:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168250-20170213163724.patch</filename>
            <type>text/plain</type>
            <size>52471</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFjYmJhZDVkODlkZTFh
ZTYzYWI0OGQ2YWI2NDA5MjIxMGQ0ZWI3My4uYzRkOTRmNDY1YmYyOGYyZjE0ZjU5MzNmYjE0NDA4
ZWFkNjcwMGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTAyLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gQ3JlYXRp
bmcgUlRDUGVlckNvbm5lY3Rpb24gd2l0aCBsaWJ3ZWJydGMgYmFja2VuZCBpcyBjcmFzaGluZyBv
biByd3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
dmVyZWQgYnkgd2VicnRjIHRlc3RzIGluIExheW91dFRlc3RzIGFuZCBpbiB3ZWItcGxhdGZvcm0t
dGVzdHMuCisgICAgICAgIE1ha2luZyBtb2NrIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5IGtlZXAg
YSByZWYgb2YgdGhlIHJlYWwgbGlid2VicnRjIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5LgorICAg
ICAgICBUaGF0IHdheSwgaXQgY2FuIGNyZWF0ZSByZWFsIGxpYndlYnJ0YyBiYWNrZW5kcyB3aGVu
ZXZlciByZXF1ZXN0ZWQgYnkgdGVzdHMuCisKKyAgICAgICAgTW92aW5nIExpYldlYlJUQ1V0aWxz
Lmggcm91dGluZXMgYXMgc3RhdGljIExpYldlYlJUQ1Byb3ZpZGVyIG1ldGhvZHMuCisgICAgICAg
IEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBtYWtlIHRoZW0gbm8gbG9uZ2VyIHN0YXRpYy4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpk
b0NyZWF0ZUFuc3dlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OnNldFBlZXJDb25uZWN0aW9uRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY3R1YWxQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENVdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VNb2NrUlRDUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkZvckljZUNhbmRpZGF0ZXM6OmdvdExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6cmVsZWFzZUluTmV0d29ya1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGli
V2ViUlRDUGVlckNvbm5lY3Rpb246OlNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRSZW1vdGVEZXNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkNyZWF0ZU9m
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3Jl
YXRlQW5zd2VyKToKKwogMjAxNy0wMi0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBjdXN0b20gbGluZSBicmVha2luZyBpdGVyYXRv
cnMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFVuaWNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTNjYjc3
MDM0NDYyMmRiOThiNTAyZjc4ZGRmNDZmZGZmZWI5NmNlLi43YjQ5ZDcxY2VmN2FmN2QwNTFjMmU0
ZDM4NzQ5MzEyZmY4Y2MwNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTctMDIt
MTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KIAorICAgICAgICBbV2ViUlRD
XSBDcmVhdGluZyBSVENQZWVyQ29ubmVjdGlvbiB3aXRoIGxpYndlYnJ0YyBiYWNrZW5kIGlzIGNy
YXNoaW5nIG9uIHJ3dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFuZ2VkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUlRDUmVzb2x2ZXI6OnNldFJlc29sdmVkQWRkcmVzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJUQ1Jlc29sdmVyOjpyZXNvbHZlZEFkZHJlc3NFcnJvcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSVENTb2NrZXQ6OnNpZ25hbE9uTmV0d29ya1RocmVhZCk6CisKKzIwMTctMDItMTMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKwogICAgICAgICBbV2ViUlRDXSBsaWJ3ZWJy
dGMgc29ja2V0IGZhY3RvcnkgaXMgbm90IGFzc2lnbmluZyB0aGUgcmlnaHQgc29ja2V0IHR5cGUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODIzMwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGI0MTE5
MzhiYmM0OWVhNTViOGRlZTkxY2NlMWMyNWUzYWQ3OTE3YjIuLmQzZTM3ODRhODc4ZmY5YjUyMmVj
NTc4ZDBhNzIwZjJiM2JiNDI3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAtMTIzLDcgKzEy
Miw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVPZmZlcigpCiAgICAg
YXV0byYgc2VuZGVycyA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5nZXRT
ZW5kZXJzKCk7CiAgICAgaWYgKHNlbmRlcnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBvbmx5IHN1cHBvcnQgb25lIHN0cmVhbSBmb3IgdGhlIG1vbWVudC4KLSAgICAgICAgYXV0byBz
dHJlYW0gPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVMb2NhbE1lZGlhU3RyZWFtKHN0
cmVhbUlkKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKSkpOworICAgICAgICBh
dXRvIHN0cmVhbSA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRp
YVN0cmVhbShzdHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsK
ICAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKICAgICAgICAg
ICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CiAgICAgICAgICAgICBpZiAodHJhY2sp
IHsKQEAgLTEzMSwxMyArMTMwLDEzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVPZmZlcigpCiAgICAgICAgICAgICAgICAgYXV0byYgc291cmNlID0gdHJhY2stPnNvdXJj
ZSgpOwogICAgICAgICAgICAgICAgIGlmIChzb3VyY2UudHlwZSgpID09IFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJhY2tTb3VyY2UgPSBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShzb3VyY2UpOwotICAgICAgICAgICAg
ICAgICAgICBhdXRvIHJ0Y1RyYWNrID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlQXVk
aW9UcmFjayh0cmFjay0+aWQoKS51dGY4KCkuZGF0YSgpLCB0cmFja1NvdXJjZS5wdHIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFj
dG9yeSgpLkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tT
b3VyY2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICB0cmFja1NvdXJjZS0+c2V0VHJhY2so
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4ocnRjVHJhY2sp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuYWRkQXVkaW9T
b3VyY2UoV1RGTW92ZSh0cmFja1NvdXJjZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJlYW0t
PkFkZFRyYWNrKFdURk1vdmUocnRjVHJhY2spKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlOjpjcmVhdGUoc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRl
b1RyYWNrID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlVmlkZW9UcmFjayh0cmFjay0+
aWQoKS51dGY4KCkuZGF0YSgpLCB2aWRlb1NvdXJjZS5wdHIoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRl
VmlkZW9UcmFjayh0cmFjay0+aWQoKS51dGY4KCkuZGF0YSgpLCB2aWRlb1NvdXJjZS5wdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFkZFZpZGVvU291
cmNlKFdURk1vdmUodmlkZW9Tb3VyY2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5B
ZGRUcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTUs
NyArMTU0LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigp
CiAgICAgYXV0byYgc2VuZGVycyA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24o
KS5nZXRTZW5kZXJzKCk7CiAgICAgaWYgKHNlbmRlcnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBvbmx5IHN1cHBvcnQgb25lIHN0cmVhbSBmb3IgdGhlIG1vbWVudC4KLSAgICAgICAg
YXV0byBzdHJlYW0gPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVMb2NhbE1lZGlhU3Ry
ZWFtKHN0cmVhbUlkKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKSkpOworICAg
ICAgICBhdXRvIHN0cmVhbSA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRlTG9j
YWxNZWRpYVN0cmVhbShzdHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9u
KCkpKTsKICAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKICAg
ICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CiAgICAgICAgICAgICBpZiAo
dHJhY2spIHsKQEAgLTE2MywxMyArMTYyLDEzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6ZG9DcmVhdGVBbnN3ZXIoKQogICAgICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9IHRyYWNr
LT5zb3VyY2UoKTsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbykgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYWNrU291
cmNlID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoc291cmNlKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBydGNUcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNy
ZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTb3VyY2UucHRy
KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJ0Y1RyYWNrID0gTGliV2ViUlRDUHJvdmlk
ZXI6OmZhY3RvcnkoKS5DcmVhdGVBdWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCks
IHRyYWNrU291cmNlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNl
dFRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0
Y1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFk
ZEF1ZGlvU291cmNlKFdURk1vdmUodHJhY2tTb3VyY2UpKTsKICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtLT5BZGRUcmFjayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gdmlkZW9UcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVvVHJhY2so
dHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2UucHRyKCkpOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgp
LkNyZWF0ZVZpZGVvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2Uu
cHRyKCkpOwogICAgICAgICAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5hZGRW
aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
cmVhbS0+QWRkVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IGEzMDkyODRhZjBl
MWQ3ODRlZjllNWZjZTU5MzM1NDBhZTMzMTlkZWQuLmEzNjBmNmRiOGJhMTc1NmI4ZTM1MDU1NmVj
YjhmYWE1NTA1MDM0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKLSNpbmNsdWRlICJM
aWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2RhZDY0NDRiY2ZjMjA1ZGZjOTIzOTE3ODE4MGNjOTBmMDVmNGUzNy4uMDQyNDhlZTJlM2I2
YzI4NGRhZmZmNzhkZmM3MTI3NTM5NmE4N2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU1MSw4ICsxNTUxLDYgQEAKIAkJ
NDE1NjcwNDcxREJFMTUzMzAwOUFDM0JCIC8qIFBlZXJDb25uZWN0aW9uU3RhdGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU2NzA0NjFEQkUxNTI0
MDA5QUMzQkIgLyogUGVlckNvbm5lY3Rpb25TdGF0ZXMuaCAqLzsgfTsKIAkJNDE1NzQ3NDcxRTM4
NjlBNDAwRTkxNEQ4IC8qIExpYldlYlJUQ01hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDMxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldl
YlJUQ01hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNTc0NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDQxRTM4
Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE1NzQ3NDkxRTM4NjlBQTAwRTkxNEQ4IC8q
IExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNTc0NzQ1MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5jcHAg
Ki87IH07Ci0JCTQxNTc0NzRBMUUzODY5QUQwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDYxRTM4
Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1l
ZGlhQ29udHJvbHNBcHBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5o
ICovOyB9OwogCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdB
RjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovOyB9OwogCQk0
MTU3RUJGQTFFM0FCNjc5MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdFQkY5
MUUzQUIwNjgwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwICovOyB9
OwpAQCAtMTU5Nyw2ICsxNTk1LDcgQEAKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZp
c2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3Bw
ICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQx
Njg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKIAkJNDE5QkU3NTkx
QkM3RjQyQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAv
KiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi87IH07CisJCTQxQTFCMDBFMUU1MjY1NzkwMDdGMzc2
OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUExQjAwRDFFNTI2NTZFMDA3RjM3NjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MUEzRDU4RTEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07
CiAJCTQxQUJFNjdCMUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUJF
NjdBMUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAqLzsg
fTsKQEAgLTg4MDcsOCArODgwNiw2IEBACiAJCTQxNTY3MDQ2MURCRTE1MjQwMDlBQzNCQiAvKiBQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3
NDc0MzFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDTWFjcm9zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ01hY3Jvcy5oOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3NDc0NDFF
Mzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTU3NDc0NTFF
Mzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDVXRpbHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE1NzQ3NDYx
RTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0FGN0UxMkYxRkIwNDAw
QThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNvbnRyb2xzQXBwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE1N0FGN0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3RUJGODFFM0FCMDY4MDBBQzlGRTkg
LyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODg2MCw2ICs4ODU3LDcgQEAKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0
cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUExQjAwRDFFNTI2NTZFMDA3RjM3NjkgLyogTGli
V2ViUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBM0Q1OEMxMDFDMTUyRDAwMzE2
RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZGljYXRlZFdvcmtl
clRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUFCRTY3OTFEMDU4MEQ1
MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjg0Niw4ICsxNjg0NCw3IEBACiAJCQkJ
NDE1MDgwMzUxRTNGMDBBQTAwNTFENzVEIC8qIExpYldlYlJUQ0F1ZGlvTW9kdWxlLmggKi8sCiAJ
CQkJNDE1NzQ3NDMxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ01hY3Jvcy5oICovLAogCQkJ
CTQxNTc0NzQ0MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oICovLAotCQkJ
CTQxNTc0NzQ1MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8sCi0JCQkJ
NDE1NzQ3NDYxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi8sCisJCQkJNDFB
MUIwMEQxRTUyNjU2RTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLywKIAkJCSk7
CiAJCQluYW1lID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3
MTc2LDcgKzI3MTczLDYgQEAKIAkJCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NjEyQjIxRTNBOTk0MDAw
QzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE1NzQ3NDgxRTM4NjlBNzAwRTkxNEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MTU3NDc0QTFFMzg2OUFEMDBFOTE0RDggLyogTGliV2ViUlRDVXRp
bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8q
IExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUx
MEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MDQ5LDcgKzMxMDQ1LDYgQEAKIAkJCQk1Q0REODM2NDFFNDMyNUEwMDA2MjFFOTIgLyogTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNzYxMkFGMUUz
QTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxNzYxMkIxMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE1NzQ3NDkxRTM4NjlBQTAwRTkxNEQ4
IC8qIExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQjY5OENDMTgzM0VF
MEQwMDE1OEEzMSAvKiBMaW5lQnJlYWtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4OUI1RUFB
MTExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDRjE4MzQwMkJCMDAxNThBMzEgLyogTGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjIxMyw2ICszMjIwOCw3IEBACiAJCQkJMEY3REYxNDgxRTJCRjFCMTAwOTU5NTFCIC8qIFdl
YkNvcmVKU0NsaWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0MDM3OUMxMjRCRUE3
RjAwQUY0MEU0IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOTc5RjQxQzQ5OEMwOTAwREI1MEQ0IC8qIFdlYkNvcmVOU0Vycm9yRXh0cmFzLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFBMUIwMEUxRTUyNjU3OTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNEQ5QkE1MEI4QzExNkIwMDdCNDJBOSAvKiBX
ZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUI0QzI0RTE1MDky
MzZDMDBBNkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAwOTVjNTE3ZjBmN2UwYzQzZWI4NjYyNzkxYTAxMzUzMTJlZTg1ODYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisKKyNpZiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKKyNpbmNsdWRlIDx3
ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
cGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJveHkuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9waHlz
aWNhbHNvY2tldHNlcnZlci5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nl
cy92aWRlb3Rvb2xib3h2aWRlb2NvZGVjZmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzIDogcHVibGljIHJ0
Yzo6TWVzc2FnZUhhbmRsZXIgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENBdWRpb01v
ZHVsZT4gYXVkaW9EZXZpY2VNb2R1bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBuZXR3b3JrVGhyZWFkOworICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gc2lnbmFs
aW5nVGhyZWFkOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
RmFjdG9yeUludGVyZmFjZT4gZmFjdG9yeTsKKyAgICBib29sIG5ldHdvcmtUaHJlYWRXaXRoU29j
a2V0U2VydmVyIHsgZmFsc2UgfTsKK3ByaXZhdGU6CisgICAgdm9pZCBPbk1lc3NhZ2UocnRjOjpN
ZXNzYWdlKik7Cit9OworCitzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcz4gZmFjdG9yeUFuZFRocmVhZHM7
CisgICAgcmV0dXJuIGZhY3RvcnlBbmRUaHJlYWRzLmdldCgpOworfQorCitzdHJ1Y3QgVGhyZWFk
TWVzc2FnZURhdGEgOiBwdWJsaWMgcnRjOjpNZXNzYWdlRGF0YSB7CisgICAgVGhyZWFkTWVzc2Fn
ZURhdGEoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgICAgICA6IGNhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKQorICAgIHsgfQorICAgIEZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2s7
Cit9OworCit2b2lkIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM6Ok9uTWVzc2FnZShy
dGM6Ok1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VfaWQg
PT0gMSk7CisgICAgc3RhdGljX2Nhc3Q8VGhyZWFkTWVzc2FnZURhdGEqPihtZXNzYWdlLT5wZGF0
YSktPmNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJU
Q05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpOworICAgIHRocmVhZHMubmV0d29ya1RocmVhZC0+UG9zdChSVENfRlJPTV9IRVJFLCAm
dGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VEYXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Cit9
CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChG
dW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5
QW5kVGhyZWFkcyYgdGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgdGhy
ZWFkcy5zaWduYWxpbmdUaHJlYWQtPlBvc3QoUlRDX0ZST01fSEVSRSwgJnRocmVhZHMsIDEsIG5l
dyBUaHJlYWRNZXNzYWdlRGF0YShXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQorCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpCit7CisgICAgYXV0
byYgZmFjdG9yeUFuZFRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOworCisgICAg
QVNTRVJUKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KTsKKworICAgIGF1dG8gdGhyZWFkID0g
cnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJl
YWQgPSBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciA/IHJ0
Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCkgOiBydGM6OlRocmVhZDo6Q3JlYXRl
KCk7CisgICAgYm9vbCByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLT5T
dGFydCgpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICAg
IHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKKyAg
ICBBU1NFUlQocmVzdWx0KTsKKworICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9k
dWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKKworICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeShmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJl
YWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlLmdldCgpLCBuZXcg
d2VicnRjOjpWaWRlb1Rvb2xib3hWaWRlb0VuY29kZXJGYWN0b3J5KCksIG5ldyB3ZWJydGM6OlZp
ZGVvVG9vbGJveFZpZGVvRGVjb2RlckZhY3RvcnkoKSk7CisKKyAgICBBU1NFUlQoZmFjdG9yeUFu
ZFRocmVhZHMuZmFjdG9yeSk7Cit9CisKK3dlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlJiBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpCit7CisgICAgaWYgKCFzdGF0aWNG
YWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVj
dGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgcmV0dXJuICpzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpLmZhY3Rvcnk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnNldFBlZXJDb25u
ZWN0aW9uRmFjdG9yeShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2U+JiYgZmFjdG9yeSkKK3sKKyAgICBpZiAoIXN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkuZmFjdG9yeSkKKyAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eUFuZFRocmVhZHMoKTsKKworICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSA9
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5UHJveHk6OkNyZWF0ZShzdGF0aWNGYWN0b3J5
QW5kVGhyZWFkcygpLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgV1RGTW92ZShmYWN0b3J5KSk7Cit9
CisKK3N0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gY3JlYXRlQWN0dWFsUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiBvYnNlcnZlciwgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9j
YXRvcj4mJiBwb3J0QWxsb2NhdG9yKQoreworICAgIEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpLmZhY3RvcnkpOworCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgICAgLy8gRklYTUU6IEFkZCBhIGRlZmF1bHQgY29u
ZmlndXJhdGlvbi4KKyAgICByZXR1cm4gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5
LT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIFdURk1vdmUocG9ydEFsbG9jYXRvciksIG51
bGxwdHIsICZvYnNlcnZlcik7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICAvLyBE
ZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KKyAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9
IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5m
YWN0b3J5KSB7CisgICAgICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkubmV0d29ya1RocmVh
ZFdpdGhTb2NrZXRTZXJ2ZXIgPSB0cnVlOworICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rp
b25GYWN0b3J5QW5kVGhyZWFkcygpOworICAgIH0KKyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CisKKyAgICByZXR1cm4g
Y3JlYXRlQWN0dWFsUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIG51bGxwdHIpOworfQorCitydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNl
cnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6TmV0d29ya01hbmFnZXImIG5ldHdvcmtNYW5hZ2VyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkmIHBhY2tldFNvY2tldEZhY3RvcnkpCit7CisgICAgQVNTRVJU
KCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVy
KTsKKworICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKTsKKyAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpCisgICAgICAgIGluaXRp
YWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOworICAgIHN0
YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRD
X0ZST01fSEVSRSwgWyZdKCkgeworICAgICAgICBwb3J0QWxsb2NhdG9yLnJlc2V0KG5ldyBjcmlj
a2V0OjpCYXNpY1BvcnRBbGxvY2F0b3IoJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFj
dG9yeSkpOworICAgIH0pOworCisgICAgcmV0dXJuIGNyZWF0ZUFjdHVhbFBlZXJDb25uZWN0aW9u
KG9ic2VydmVyLCBXVEZNb3ZlKHBvcnRBbGxvY2F0b3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmgKaW5kZXggMzg3ZDJhMjVkYTA0N2Y4NzM4NGU4NTg0MGUyMmE4Y2Y3ZjlkNTQ4
Ny4uYzJmNGZiNWZhODZhNWIzNWVmYTFiZTJiYjgyYjM2NGNiYzRlNGE3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTI1LDIwICsyNSw0NCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9iYXNl
L3Njb3BlZF9yZWZfcHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwogI2lmIFVTRShM
SUJXRUJSVEMpCi0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKwogI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2UuaD4KKworbmFtZXNwYWNlIHJ0YyB7CitjbGFz
cyBOZXR3b3JrTWFuYWdlcjsKK2NsYXNzIFBhY2tldFNvY2tldEZhY3Rvcnk7Cit9CisKK25hbWVz
cGFjZSB3ZWJydGMgeworY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOworfQog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGli
V2ViUlRDUHJvdmlkZXIgewogcHVibGljOgotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVh
bCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3Jl
YXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZl
cikgeyByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIpOyB9Owot
I2VuZGlmCisgICAgTGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+
TGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25PYnNlcnZlciYpOworCisgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgbWV0aG9kcyBub3Qg
c3RhdGljLgorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UmIGZhY3RvcnkoKTsKKyAgICAvLyBVc2VkIGZvciBtb2NrIHRlc3RpbmcKKyAgICBzdGF0
aWMgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkZhY3RvcnkocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAg
IFdFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Jik7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWFmMmYyNzUwYmE2
NmFjZTUxYzZiOWRjYmU2MjA3YmI1ODNjZGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlv
TW9kdWxlLmgiCi0jaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3Rvcnlwcm94
eS5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+Ci0jaW5j
bHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuaD4KLSNpbmNsdWRlIDx3ZWJy
dGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4KLSNpbmNsdWRlIDx3ZWJydGMvc2Rr
L29iamMvRnJhbWV3b3JrL0NsYXNzZXMvdmlkZW90b29sYm94dmlkZW9jb2RlY2ZhY3RvcnkuaD4K
LSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5
QW5kVGhyZWFkcyA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IGF1ZGlvRGV2aWNlTW9kdWxlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0d29ya1RocmVhZDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGluZ1RocmVhZDsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IGZhY3Rvcnk7Ci0gICAgYm9v
bCBuZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciB7IGZhbHNlIH07Ci1wcml2YXRlOgotICAg
IHZvaWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopOwotfTsKLQotc3RhdGljIGlubGluZSBQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHM+IGZhY3RvcnlBbmRUaHJlYWRzOwotICAgIHJldHVybiBmYWN0b3J5QW5kVGhyZWFkcy5nZXQo
KTsKLX0KLQotc3RydWN0IFRocmVhZE1lc3NhZ2VEYXRhIDogcHVibGljIHJ0Yzo6TWVzc2FnZURh
dGEgewotICAgIFRocmVhZE1lc3NhZ2VEYXRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykK
LSAgICAgICAgOiBjYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKLSAgICB7IH0KLSAgICBGdW5j
dGlvbjx2b2lkKCk+IGNhbGxiYWNrOwotfTsKLQotdm9pZCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlB
bmRUaHJlYWRzOjpPbk1lc3NhZ2UocnRjOjpNZXNzYWdlKiBtZXNzYWdlKQotewotICAgIEFTU0VS
VChtZXNzYWdlLT5tZXNzYWdlX2lkID09IDEpOwotICAgIHN0YXRpY19jYXN0PFRocmVhZE1lc3Nh
Z2VEYXRhKj4obWVzc2FnZS0+cGRhdGEpLT5jYWxsYmFjaygpOwotfQotCi12b2lkIGNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQotewotICAgIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5k
VGhyZWFkcygpOwotICAgIHRocmVhZHMubmV0d29ya1RocmVhZC0+UG9zdChSVENfRlJPTV9IRVJF
LCAmdGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VEYXRhKFdURk1vdmUoY2FsbGJhY2spKSk7
Ci19Ci0KLXZvaWQgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKLXsKLSAgICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiB0aHJl
YWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKLSAgICB0aHJlYWRzLnNpZ25hbGluZ1Ro
cmVhZC0+UG9zdChSVENfRlJPTV9IRVJFLCAmdGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VE
YXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCkKLXsKLSAgICBhdXRvJiBmYWN0b3J5QW5kVGhy
ZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBBU1NFUlQoIWZhY3RvcnlB
bmRUaHJlYWRzLmZhY3RvcnkpOwotCi0gICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3Jl
YXRlKCk7Ci0gICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCA9IGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyID8gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKSA6IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKLSAgICBib29sIHJl
c3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQtPlN0YXJ0KCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7Ci0gICAgcmVzdWx0ID0gZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5TdGFydCgpOwotICAgIEFTU0VSVChyZXN1bHQp
OwotCi0gICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwotCi0gICAgZmFjdG9yeUFuZFRocmVhZHMu
ZmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJl
YWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9y
eUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUuZ2V0KCksIG5ldyB3ZWJydGM6OlZpZGVvVG9v
bGJveFZpZGVvRW5jb2RlckZhY3RvcnkoKSwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94VmlkZW9E
ZWNvZGVyRmFjdG9yeSgpKTsKLQotICAgIEFTU0VSVChmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5
KTsKLX0KLQotdm9pZCBpbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tldFNlcnZl
cigpCi17Ci0gICAgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNv
Y2tldFNlcnZlciA9IHRydWU7Ci19Ci0KLXdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlJiBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKQotewotICAgIGlmICghc3RhdGljRmFjdG9y
eUFuZFRocmVhZHMoKS5mYWN0b3J5KQotICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25G
YWN0b3J5QW5kVGhyZWFkcygpOwotICAgIHJldHVybiAqc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KS5mYWN0b3J5OwotfQotCi12b2lkIHNldFBlZXJDb25uZWN0aW9uRmFjdG9yeShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+JiYgZmFjdG9y
eSkKLXsKLSAgICBpZiAoIXN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSkKLSAgICAg
ICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoKTsKLQotICAgIHN0
YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25G
YWN0b3J5UHJveHk6OkNyZWF0ZShzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLnNpZ25hbGluZ1Ro
cmVhZC5nZXQoKSwgV1RGTW92ZShmYWN0b3J5KSk7Ci19Ci0KLXN0YXRpYyBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgc3RkOjp1bmlxdWVf
cHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4mJiBwb3J0QWxsb2NhdG9yKQotewotICAg
IEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpOwotCi0gICAgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWc7Ci0gICAg
Ly8gRklYTUU6IEFkZCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KLSAgICByZXR1cm4gc3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5LT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcs
IFdURk1vdmUocG9ydEFsbG9jYXRvciksIG51bGxwdHIsICZvYnNlcnZlcik7Ci19Ci0KLXJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQotewot
ICAgIEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRoU29j
a2V0U2VydmVyKTsKLQotICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9y
eUFuZFRocmVhZHMoKTsKLSAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpCi0gICAg
ICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIG51bGxwdHIpOwotfQotCi1ydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVl
ckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRj
OjpOZXR3b3JrTWFuYWdlciYgbmV0d29ya01hbmFnZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9y
eSYgcGFja2V0U29ja2V0RmFjdG9yeSkKLXsKLSAgICBBU1NFUlQoIXN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkubmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwotCi0gICAgYXV0byYgZmFj
dG9yeUFuZFRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOwotICAgIGlmICghZmFj
dG9yeUFuZFRocmVhZHMuZmFjdG9yeSkKLSAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeUFuZFRocmVhZHMoKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7Ci0gICAgc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKS5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7
Ci0gICAgICAgIHBvcnRBbGxvY2F0b3IucmVzZXQobmV3IGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9j
YXRvcigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KSk7Ci0gICAgfSk7Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdURk1vdmUocG9ydEFs
bG9jYXRvcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTExMjZkODVjZGIwOGMzMWU3YzA4NzhjMDgxZjVkNTUyYzVlYThhZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKLSNpbmNsdWRl
IDx3ZWJydGMvYmFzZS9zY29wZWRfcmVmX3B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0KLW5hbWVzcGFjZSBydGMgewotY2xhc3MgTmV0d29ya01hbmFnZXI7Ci1jbGFzcyBQYWNrZXRT
b2NrZXRGYWN0b3J5OwotfQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZTsKLWNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOwotY2xh
c3MgUGVlckNvbm5lY3Rpb25PYnNlcnZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1X
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMaWJXZWJSVENJbnRlcm5hbHNXaXRoU29ja2V0
U2VydmVyKCk7Ci0KLXdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBwZWVy
Q29ubmVjdGlvbkZhY3RvcnkoKTsKLVdFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5Jik7Ci1XRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJik7Ci0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2Fs
bE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOwotCi0vLyBVc2VkIGZv
ciBtb2NrIHRlc3RpbmcKLVdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25GYWN0
b3J5KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4mJik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAppbmRleCBhY2QwMTAwMTEzMGUzYWExZGU5ZDZhZjYyZDMwMzgzYzJiZDhkMjU4Li45
ODE4MzAzNTQ1NGE1NTcyN2E1M2I3ZDkxNDhjNDc4MGVmZDMyNzliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5j
bHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQXVk
aW9Gb3JtYXQuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgYwogICAgIH0KICAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXModGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CiAKLSAgICBjYWxsT25X
ZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdWxs
QXVkaW9EYXRhKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggYWNjNWJjM2FiZTg1OGEwZjM1ZDg1ZjAyZDI3YzRmNGQ2NGU4NjI5Ni4uNmQyNmQ1NTZl
MzNlOTVjYTFiYjQ0YjhlZGYzYWUyYmZkYTU4YTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
Ci0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmNwcAppbmRleCA4YmI3ZTkxNjRkNjZmZjc3YWY2NzA4MTRmYmMxNDRjMTAxYzI0MjExLi4x
ZmJhYjVkNzhiM2UyZTE1YWZhYzA1NTAzMDFiOTNlNGM2MDk5ZWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0yOCwxNyArMjgsMzMgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgogI2luY2x1ZGUgPHNz
dHJlYW0+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGlubGlu
ZSBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+JiBnZXRSZWFsUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPj4gcmVhbFBlZXJDb25uZWN0aW9uRmFjdG9yeTsKKyAgICByZXR1cm4gcmVhbFBl
ZXJDb25uZWN0aW9uRmFjdG9yeTsKK30KKworc3RhdGljIGlubGluZSB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZSogcmVhbFBlZXJDb25uZWN0aW9uRmFjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIGdldFJlYWxQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5nZXQoKTsKK30KKwogdm9p
ZCB1c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KExpYldlYlJUQ1Byb3ZpZGVyKiBwcm92
aWRlciwgY29uc3QgU3RyaW5nJiB0ZXN0Q2FzZSkKIHsKLSAgICBzZXRQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeTo6Y3JlYXRlKHByb3ZpZGVy
LCBTdHJpbmcodGVzdENhc2UpKSk7CisgICAgaWYgKHByb3ZpZGVyICYmICFyZWFsUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KCkpIHsKKyAgICAgICAgYXV0byYgZmFjdG9yeSA9IGdldFJlYWxQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoKTsKKyAgICAgICAgZmFjdG9yeSA9ICZwcm92aWRlci0+ZmFjdG9yeSgp
OworICAgIH0KKworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeTo6Y3JlYXRlKFN0cmluZyh0ZXN0
Q2FzZSkpKTsKIH0KIAogY2xhc3MgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRm9ySWNlQ2Fu
ZGlkYXRlcyA6IHB1YmxpYyBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24gewpAQCAtNTIsMTkg
KzY4LDE5IEBAIHByaXZhdGU6CiB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZvcklj
ZUNhbmRpZGF0ZXM6OmdvdExvY2FsRGVzY3JpcHRpb24oKQogewogICAgIC8vIExldCdzIGdhdGhl
ciBjYW5kaWRhdGVzCi0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsK
KyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlz
XSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0ZSBjYW5kaWRhdGUoIjIwMTMy
NjY0MzEgMSB1ZHAgMjAxMzI2NjQzMiAxOTIuMTY4LjAuMTAwIDM4ODM4IHR5cCBob3N0IGdlbmVy
YXRpb24gMCIsICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VDYW5kaWRhdGUoJmNhbmRp
ZGF0ZSk7CiAgICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgp
IHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0
aGlzXSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0ZSBjYW5kaWRhdGUoIjEw
MTkyMTYzODMgMSB0Y3AgMTAxOTIxNjM4NCAxOTIuMTY4LjAuMTAwIDkgdHlwIGhvc3QgdGNwdHlw
ZSBwYXNzaXZlIGdlbmVyYXRpb24gMCIsICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VD
YW5kaWRhdGUoJmNhbmRpZGF0ZSk7CiAgICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzXSgpIHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2ln
bmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0
ZSBjYW5kaWRhdGUoIjE2Nzc3MjIxMTEgMSB0Y3AgMTY3NzcyMjExMiAxNzIuMTguMC4xIDQ3OTg5
IHR5cCBzcmZseCByYWRkciAxOTIuMTY4LjAuMTAwIHJwb3J0IDQ3OTg5IGdlbmVyYXRpb24gMCIs
ICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7CiAg
ICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsK
ICAgICAgICAgbV9vYnNlcnZlci5PbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpOwogICAgIH0pOwogfQpAQCAt
OTMsNyArMTA5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSB2b2lkIHJl
bGVhc2VJbk5ldHdvcmtUaHJlYWQoTW9ja0xpYldlYlJUQ1BlZXIKICAgICBtb2NrLkFkZFJlZigp
OwogICAgIG9ic2VydmVyLkFkZFJlZigpOwogICAgIGNhbGxPbk1haW5UaHJlYWQoWyZtb2NrLCAm
b2JzZXJ2ZXJdIHsKLSAgICAgICAgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbJm1vY2ssICZv
YnNlcnZlcl0oKSB7CisgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKFsmbW9jaywgJm9ic2VydmVyXSgpIHsKICAgICAgICAgICAgIG9ic2VydmVyLlJl
bGVhc2UoKTsKICAgICAgICAgICAgIG1vY2suUmVsZWFzZSgpOwogICAgICAgICB9KTsKQEAgLTEz
MywyNiArMTQ5LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBTZXRMb2NhbERlc2NyaXB0aW9uKHdl
YnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCB3ZWJydGM6OlNl
c3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopIGZpbmFsIHsgcmVsZWFzZUluTmV0d29ya1RocmVh
ZCgqdGhpcywgKm9ic2VydmVyKTsgfQogfTsKIAotCi1Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25GYWN0b3J5OjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KExpYldlYlJUQ1By
b3ZpZGVyKiBwcm92aWRlciwgU3RyaW5nJiYgdGVzdENhc2UpCi0gICAgOiBtX3Byb3ZpZGVyKHBy
b3ZpZGVyKQotICAgICwgbV90ZXN0Q2FzZShXVEZNb3ZlKHRlc3RDYXNlKSkKK01vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoU3RyaW5nJiYgdGVzdENhc2UpCisgICAgOiBtX3Rlc3RDYXNlKFdURk1vdmUodGVzdENhc2Up
KQogewotICAgIGlmIChtX3Rlc3RDYXNlID09ICJUd29SZWFsUGVlckNvbm5lY3Rpb25zIiAmJiBt
X3Byb3ZpZGVyKSB7CisgICAgaWYgKG1fdGVzdENhc2UgPT0gIlR3b1JlYWxQZWVyQ29ubmVjdGlv
bnMiKSB7CiAgICAgICAgIG1fbnVtYmVyT2ZSZWFsUGVlckNvbm5lY3Rpb25zID0gMjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV90ZXN0Q2FzZSA9PSAiT25lUmVhbFBlZXJDb25u
ZWN0aW9uIiAmJiBtX3Byb3ZpZGVyKQorICAgIGlmIChtX3Rlc3RDYXNlID09ICJPbmVSZWFsUGVl
ckNvbm5lY3Rpb24iKQogICAgICAgICBtX251bWJlck9mUmVhbFBlZXJDb25uZWN0aW9ucyA9IDE7
CiB9CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcmVhdGVQZWVyQ29ubmVjdGlv
bihjb25zdCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
Jiwgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlBvcnRBbGxvY2F0b3I+LCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckludGVyZmFjZT4sIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9y
eTo6Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3Qgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OlBvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3IsIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlPiBnZW5lcmF0b3IsIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKG1fbnVtYmVyT2ZSZWFs
UGVlckNvbm5lY3Rpb25zKSB7Ci0gICAgICAgIEFTU0VSVChtX3Byb3ZpZGVyKTsKLSAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gbV9wcm92aWRlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24oKm9ic2Vy
dmVyKTsKLSAgICAgICAgaWYgKCEtLW1fbnVtYmVyT2ZSZWFsUGVlckNvbm5lY3Rpb25zKQotICAg
ICAgICAgICAgbV9wcm92aWRlciA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IHJlYWxQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmln
dXJhdGlvbiwgV1RGTW92ZShwb3J0QWxsb2NhdG9yKSwgV1RGTW92ZShnZW5lcmF0b3IpLCBvYnNl
cnZlcik7CisgICAgICAgIC0tbV9udW1iZXJPZlJlYWxQZWVyQ29ubmVjdGlvbnM7CiAgICAgICAg
IHJldHVybiBjb25uZWN0aW9uOwogICAgIH0KIApAQCAtMTgxLDcgKzE5Myw3IEBAIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBNb2NrTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25GYWN0CiAKIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRM
b2NhbERlc2NyaXB0aW9uKHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIqIG9i
c2VydmVyLCB3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopCiB7Ci0gICAgY2Fs
bE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBvYnNlcnZlcl0geworICAgIExpYldlYlJU
Q1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3RoaXMsIG9ic2VydmVyXSB7
CiAgICAgICAgIG9ic2VydmVyLT5PblN1Y2Nlc3MoKTsKICAgICAgICAgZ290TG9jYWxEZXNjcmlw
dGlvbigpOwogICAgIH0pOwpAQCAtMTg5LDcgKzIwMSw3IEBAIHZvaWQgTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uOjpTZXRMb2NhbERlc2NyaXB0aW9uKHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2Ny
aXB0CiAKIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRSZW1vdGVEZXNjcmlw
dGlvbih3ZWJydGM6OlNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgd2Vi
cnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNlc3Npb25EZXNjcmlwdGlvbikKIHsK
LSAgICBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW29ic2VydmVyXSB7CisgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbb2JzZXJ2ZXJdIHsKICAg
ICAgICAgb2JzZXJ2ZXItPk9uU3VjY2VzcygpOwogICAgIH0pOwogICAgIEFTU0VSVChzZXNzaW9u
RGVzY3JpcHRpb24pOwpAQCAtMjI0LDcgKzIzNiw3IEBAIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uOjpSZW1vdmVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSopCiAK
IHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpDcmVhdGVPZmZlcih3ZWJydGM6OkNy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgY29uc3Qgd2VicnRjOjpN
ZWRpYUNvbnN0cmFpbnRzSW50ZXJmYWNlKikKIHsKLSAgICBjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQoW3RoaXMsIG9ic2VydmVyXSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgb2JzZXJ2ZXJdIHsKICAgICAgICAgc3RkOjpvc3Ry
aW5nc3RyZWFtIHNkcDsKICAgICAgICAgc2RwIDw8CiAgICAgICAgICAgICAidj0wXHJcbiIKQEAg
LTI4Myw3ICsyOTUsNyBAQCB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3JlYXRl
T2ZmZXIod2VicnRjOjpDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYgogCiB2b2lkIE1vY2tMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQW5zd2VyKHdlYnJ0Yzo6Q3JlYXRlU2Vzc2lvbkRl
c2NyaXB0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBjb25zdCB3ZWJydGM6Ok1lZGlhQ29uc3RyYWlu
dHNJbnRlcmZhY2UqKQogewotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywg
b2JzZXJ2ZXJdIHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBvYnNlcnZlcl0gewogICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc2Rw
OwogICAgICAgICBzZHAgPDwKICAgICAgICAgICAgICJ2PTBcclxuIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYmI2
M2I0ZmQ0MmYxYzJhY2M3OWI4YzlkODc2ODc5OTI1NDE3ZWU1Ny4uYTA1MDg5N2QwZGQ2N2JhOWI2
ZDQ3ODRjODM5ZTg5ZDY4ODI1N2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCBw
cml2YXRlOgogCiBjbGFzcyBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5IDogcHVi
bGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPiBjcmVhdGUoTGliV2ViUlRDUHJvdmlkZXIqIHByb3ZpZGVyLCBTdHJpbmcmJiB0
ZXN0Q2FzZSkgeyByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25GYWN0b3J5Pihwcm92aWRlciwgV1RGTW92ZSh0ZXN0Q2FzZSkpOyB9Cisg
ICAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZT4gY3JlYXRlKFN0cmluZyYmIHRlc3RDYXNlKSB7IHJldHVybiBuZXcgcnRjOjpS
ZWZDb3VudGVkT2JqZWN0PE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFdURk1v
dmUodGVzdENhc2UpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTW9ja0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uRmFjdG9yeShMaWJXZWJSVENQcm92aWRlciosIFN0cmluZyYmKTsKKyAgICBNb2NrTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KFN0cmluZyYmKTsKIAogcHJpdmF0ZToKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gQ3JlYXRl
UGVlckNvbm5lY3Rpb24oY29uc3Qgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbiYsIGNvbnN0IHdlYnJ0Yzo6TWVkaWFDb25zdHJhaW50c0ludGVyZmFjZSos
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpQb3J0QWxsb2NhdG9yPiwgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZhY2U+LCB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXIqKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0yMjAsNyArMjIw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIFN0b3BSdGNFdmVudExvZygpIGZpbmFsIHsgfQogCiBw
cml2YXRlOgotICAgIExpYldlYlJUQ1Byb3ZpZGVyKiBtX3Byb3ZpZGVyIHsgbnVsbHB0ciB9Owog
ICAgIFN0cmluZyBtX3Rlc3RDYXNlOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZSZWFsUGVlckNv
bm5lY3Rpb25zIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzNh
ZTI2NWNhMmM1MGI1NDU0ZWVmYTAwYzQ5M2ExMDk0ZjY3ZjMwMy4uZDNiMTUxNTFiMzYwMjFmYWE2
NWU1NWQ3MDg2OWNlOWYyNzdlNGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAg
LTI5LDE0ICsyOSwxMyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENVdGlscy5oPgogI2luY2x1ZGUgPHdl
YnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25PYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3
b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkuc29ja2V0RmFjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBhNTFlYzY1MzEwNjA2N2RiNmFjZGIxYjVm
MjFhMjIwMjdlZjViYWMwLi43MTU3NDhiNGVkOTA2M2Y1ZTg4NDE0MmU2NGFiZjJiZTQxYmU2N2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTI3LDggKzI3LDcgQEAKIAogI2lmIFVTRShMSUJX
RUJSVEMpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1By
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaD4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9u
aXRvci5jcHAKaW5kZXggODlmYmY5NTQ3MmQwOTY3OGVjNDc5NjA3ZDJlMGM1OTJmZjI3N2VlOS4u
OWVhYzQ5NGJiMDk1ZGNhYWUzMWExNGNjMTRjZTc5ZTU2OWVjMGIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0
b3IuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGlu
ZygpCiAgICAgaWYgKG1fY2xpZW50Q291bnQpIHsKICAgICAgICAgLy8gTmVlZCB0byBzaWduYWwg
bmV3IGNsaWVudCB0aGF0IHdlIGFscmVhZHkgaGF2ZSB0aGUgbmV0d29yayBsaXN0LCBsZXQncyBk
byBpdCBhc3luY2hyb25vdXNseQogICAgICAgICBpZiAobV9yZWNlaXZlZE5ldHdvcmtMaXN0KSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7
CisgICAgICAgICAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0
d29ya1RocmVhZChbdGhpc10gewogICAgICAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdl
ZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBX
ZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQogdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYp
CiB7CiAgICAgLy8gTm8gbmVlZCB0byBwcm90ZWN0ICd0aGlzJyBhcyBpdCBoYXMgdGhlIGxpZmV0
aW1lIG9mIExpYldlYlJUQyB3aGljaCBoYXMgdGhlIGxpZmV0aW1lIG9mIHRoZSB3ZWIgcHJvY2Vz
cy4KLSAgICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3b3Jr
cywgaXB2NCwgaXB2Nl0geworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25X
ZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3b3JrcywgaXB2NCwgaXB2Nl0gewogICAgICAg
ICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkp
OwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgp
OyArK2luZGV4KQogICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0
d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCmluZGV4IDY1YjRm
MTE1MmViYWU5YWVmODEwNjY2ZGYwODQ4MTRjZTQ3M2JiNDkuLmRjMTUyNDkxMTY2Yzk0YzMyNjJk
MTM1ZjNmYjZjNThlODUwY2U1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0xpYldlYlJUQ1V0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQ
cm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDQyZWQyZGRiYTI1Y2UwMDEzNjNhYjQ0NThhNjM1NGYy
ZGViZDg5NWEuLmI0YmQ4NzExZTdiZjI2YjA5OGY0ZmY4ZDRjZGI4NWU2MzdmZTAwYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDUmVzb2x2ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJMaWJXZWJS
VENSZXNvbHZlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ1V0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJS
VENQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBXZWJSVENSZXNvbHZlcjo6c2V0UmVzb2x2ZWRB
ZGRyZXNzKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGQKICAgICBmb3Ig
KGF1dG8mIGFkZHJlc3MgOiBhZGRyZXNzZXMpCiAgICAgICAgIHJ0Y0FkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoYWRkcmVzcy52YWx1ZSk7CiAgICAgCi0gICAgV2ViQ29yZTo6Y2FsbE9uV2ViUlRD
TmV0d29ya1RocmVhZChbJmZhY3RvcnksIGlkZW50aWZpZXIsIHJ0Y0FkZHJlc3NlcyA9IFdURk1v
dmUocnRjQWRkcmVzc2VzKV0oKSB7CisgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNh
bGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZmYWN0b3J5LCBpZGVudGlmaWVyLCBydGNBZGRyZXNz
ZXMgPSBXVEZNb3ZlKHJ0Y0FkZHJlc3NlcyldKCkgewogICAgICAgICBhdXRvKiByZXNvbHZlciA9
IGZhY3RvcnkucmVzb2x2ZXIoaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghcmVzb2x2ZXIpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUlRDUmVzb2x2ZXI6
OnJlc29sdmVkQWRkcmVzc0Vycm9yKGludCBlcnJvcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX2lkZW50aWZpZXI7CiAgICAgYXV0byYgZmFjdG9yeSA9IG1fc29ja2V0RmFjdG9yeTsKLSAg
ICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRlbnRpZmll
ciwgZXJyb3JdKCkgeworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRlbnRpZmllciwgZXJyb3JdKCkgewogICAgICAg
ICBhdXRvKiByZXNvbHZlciA9IGZhY3RvcnkucmVzb2x2ZXIoaWRlbnRpZmllcik7CiAgICAgICAg
IGlmICghcmVzb2x2ZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHAKaW5k
ZXggYzUyOTVjNjMzNGQ0MDk2YjA5Njg4ZGYxZDk2OThmYTkzYWY5YjdkZi4uNjRhNTVjZmIxMjcz
ZTkwMWJkZjFhMDkwNjA5MmQ2NjBiMGNkYTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgV2ViUlRDU29ja2V0OjpzaWduYWxP
bk5ldHdvcmtUaHJlYWQoTGliV2ViUlRDU29ja2V0RmFjdG9yeSYgZmFjdG9yeSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChMaWJXZWJSVENTb2NrZXQmKT4mJiBjYWxsYmFjaykK
IHsKICAgICAvLyBmYWN0b3J5IGlzIHN0YXlpbmcgdmFsaWQgZHVyaW5nIHRoZSBwcm9jZXNzIGxp
ZmV0aW1lLgotICAgIFdlYkNvcmU6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZmYWN0b3J5
LCBpZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKKyAgICBXZWJD
b3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbJmZhY3Rv
cnksIGlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgewogICAgICAg
ICBhdXRvKiBzb2NrZXQgPSBmYWN0b3J5LnNvY2tldChpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KCFzb2NrZXQpCiAgICAgICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301422</attachid>
            <date>2017-02-13 17:15:33 -0800</date>
            <delta_ts>2017-02-13 18:10:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168250-20170213171301.patch</filename>
            <type>text/plain</type>
            <size>52471</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFjYmJhZDVkODlkZTFh
ZTYzYWI0OGQ2YWI2NDA5MjIxMGQ0ZWI3My4uYzRkOTRmNDY1YmYyOGYyZjE0ZjU5MzNmYjE0NDA4
ZWFkNjcwMGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTAyLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gQ3JlYXRp
bmcgUlRDUGVlckNvbm5lY3Rpb24gd2l0aCBsaWJ3ZWJydGMgYmFja2VuZCBpcyBjcmFzaGluZyBv
biByd3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
dmVyZWQgYnkgd2VicnRjIHRlc3RzIGluIExheW91dFRlc3RzIGFuZCBpbiB3ZWItcGxhdGZvcm0t
dGVzdHMuCisgICAgICAgIE1ha2luZyBtb2NrIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5IGtlZXAg
YSByZWYgb2YgdGhlIHJlYWwgbGlid2VicnRjIHBlZXIgY29ubmVjdGlvbiBmYWN0b3J5LgorICAg
ICAgICBUaGF0IHdheSwgaXQgY2FuIGNyZWF0ZSByZWFsIGxpYndlYnJ0YyBiYWNrZW5kcyB3aGVu
ZXZlciByZXF1ZXN0ZWQgYnkgdGVzdHMuCisKKyAgICAgICAgTW92aW5nIExpYldlYlJUQ1V0aWxz
Lmggcm91dGluZXMgYXMgc3RhdGljIExpYldlYlJUQ1Byb3ZpZGVyIG1ldGhvZHMuCisgICAgICAg
IEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBtYWtlIHRoZW0gbm8gbG9uZ2VyIHN0YXRpYy4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpk
b0NyZWF0ZUFuc3dlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OnNldFBlZXJDb25uZWN0aW9uRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY3R1YWxQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENVdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VNb2NrUlRDUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkZvckljZUNhbmRpZGF0ZXM6OmdvdExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6cmVsZWFzZUluTmV0d29ya1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGli
V2ViUlRDUGVlckNvbm5lY3Rpb246OlNldExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRSZW1vdGVEZXNjcmlwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb246OkNyZWF0ZU9m
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3Jl
YXRlQW5zd2VyKToKKwogMjAxNy0wMi0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBjdXN0b20gbGluZSBicmVha2luZyBpdGVyYXRv
cnMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFVuaWNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTNjYjc3
MDM0NDYyMmRiOThiNTAyZjc4ZGRmNDZmZGZmZWI5NmNlLi43YjQ5ZDcxY2VmN2FmN2QwNTFjMmU0
ZDM4NzQ5MzEyZmY4Y2MwNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTctMDIt
MTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KIAorICAgICAgICBbV2ViUlRD
XSBDcmVhdGluZyBSVENQZWVyQ29ubmVjdGlvbiB3aXRoIGxpYndlYnJ0YyBiYWNrZW5kIGlzIGNy
YXNoaW5nIG9uIHJ3dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFuZ2VkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUlRDUmVzb2x2ZXI6OnNldFJlc29sdmVkQWRkcmVzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJUQ1Jlc29sdmVyOjpyZXNvbHZlZEFkZHJlc3NFcnJvcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSVENTb2NrZXQ6OnNpZ25hbE9uTmV0d29ya1RocmVhZCk6CisKKzIwMTctMDItMTMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KKwogICAgICAgICBbV2ViUlRDXSBsaWJ3ZWJy
dGMgc29ja2V0IGZhY3RvcnkgaXMgbm90IGFzc2lnbmluZyB0aGUgcmlnaHQgc29ja2V0IHR5cGUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODIzMwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGI0MTE5
MzhiYmM0OWVhNTViOGRlZTkxY2NlMWMyNWUzYWQ3OTE3YjIuLmQzZTM3ODRhODc4ZmY5YjUyMmVj
NTc4ZDBhNzIwZjJiM2JiNDI3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgpAQCAtMTIzLDcgKzEy
Miw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9DcmVhdGVPZmZlcigpCiAgICAg
YXV0byYgc2VuZGVycyA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5nZXRT
ZW5kZXJzKCk7CiAgICAgaWYgKHNlbmRlcnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBvbmx5IHN1cHBvcnQgb25lIHN0cmVhbSBmb3IgdGhlIG1vbWVudC4KLSAgICAgICAgYXV0byBz
dHJlYW0gPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVMb2NhbE1lZGlhU3RyZWFtKHN0
cmVhbUlkKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKSkpOworICAgICAgICBh
dXRvIHN0cmVhbSA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRlTG9jYWxNZWRp
YVN0cmVhbShzdHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkpKTsK
ICAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKICAgICAgICAg
ICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CiAgICAgICAgICAgICBpZiAodHJhY2sp
IHsKQEAgLTEzMSwxMyArMTMwLDEzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6ZG9D
cmVhdGVPZmZlcigpCiAgICAgICAgICAgICAgICAgYXV0byYgc291cmNlID0gdHJhY2stPnNvdXJj
ZSgpOwogICAgICAgICAgICAgICAgIGlmIChzb3VyY2UudHlwZSgpID09IFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJhY2tTb3VyY2UgPSBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShzb3VyY2UpOwotICAgICAgICAgICAg
ICAgICAgICBhdXRvIHJ0Y1RyYWNrID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlQXVk
aW9UcmFjayh0cmFjay0+aWQoKS51dGY4KCkuZGF0YSgpLCB0cmFja1NvdXJjZS5wdHIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcnRjVHJhY2sgPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFj
dG9yeSgpLkNyZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tT
b3VyY2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICB0cmFja1NvdXJjZS0+c2V0VHJhY2so
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4ocnRjVHJhY2sp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuYWRkQXVkaW9T
b3VyY2UoV1RGTW92ZSh0cmFja1NvdXJjZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJlYW0t
PkFkZFRyYWNrKFdURk1vdmUocnRjVHJhY2spKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIHZpZGVvU291cmNlID0gUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlOjpjcmVhdGUoc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRl
b1RyYWNrID0gcGVlckNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlVmlkZW9UcmFjayh0cmFjay0+
aWQoKS51dGY4KCkuZGF0YSgpLCB2aWRlb1NvdXJjZS5wdHIoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRl
VmlkZW9UcmFjayh0cmFjay0+aWQoKS51dGY4KCkuZGF0YSgpLCB2aWRlb1NvdXJjZS5wdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFkZFZpZGVvU291
cmNlKFdURk1vdmUodmlkZW9Tb3VyY2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5B
ZGRUcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTUs
NyArMTU0LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigp
CiAgICAgYXV0byYgc2VuZGVycyA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24o
KS5nZXRTZW5kZXJzKCk7CiAgICAgaWYgKHNlbmRlcnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBvbmx5IHN1cHBvcnQgb25lIHN0cmVhbSBmb3IgdGhlIG1vbWVudC4KLSAgICAgICAg
YXV0byBzdHJlYW0gPSBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5DcmVhdGVMb2NhbE1lZGlhU3Ry
ZWFtKHN0cmVhbUlkKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKSkpOworICAg
ICAgICBhdXRvIHN0cmVhbSA9IExpYldlYlJUQ1Byb3ZpZGVyOjpmYWN0b3J5KCkuQ3JlYXRlTG9j
YWxNZWRpYVN0cmVhbShzdHJlYW1JZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9u
KCkpKTsKICAgICAgICAgZm9yIChSVENSdHBTZW5kZXImIHNlbmRlciA6IHNlbmRlcnMpIHsKICAg
ICAgICAgICAgIGF1dG8qIHRyYWNrID0gc2VuZGVyLnRyYWNrKCk7CiAgICAgICAgICAgICBpZiAo
dHJhY2spIHsKQEAgLTE2MywxMyArMTYyLDEzIEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6ZG9DcmVhdGVBbnN3ZXIoKQogICAgICAgICAgICAgICAgIGF1dG8mIHNvdXJjZSA9IHRyYWNr
LT5zb3VyY2UoKTsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnR5cGUoKSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbykgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYWNrU291
cmNlID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoc291cmNlKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBydGNUcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNy
ZWF0ZUF1ZGlvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdHJhY2tTb3VyY2UucHRy
KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJ0Y1RyYWNrID0gTGliV2ViUlRDUHJvdmlk
ZXI6OmZhY3RvcnkoKS5DcmVhdGVBdWRpb1RyYWNrKHRyYWNrLT5pZCgpLnV0ZjgoKS5kYXRhKCks
IHRyYWNrU291cmNlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgdHJhY2tTb3VyY2UtPnNl
dFRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+KHJ0
Y1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmFk
ZEF1ZGlvU291cmNlKFdURk1vdmUodHJhY2tTb3VyY2UpKTsKICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtLT5BZGRUcmFjayhXVEZNb3ZlKHJ0Y1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gdmlkZW9UcmFjayA9IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpLkNyZWF0ZVZpZGVvVHJhY2so
dHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2UucHRyKCkpOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgp
LkNyZWF0ZVZpZGVvVHJhY2sodHJhY2stPmlkKCkudXRmOCgpLmRhdGEoKSwgdmlkZW9Tb3VyY2Uu
cHRyKCkpOwogICAgICAgICAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5hZGRW
aWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
cmVhbS0+QWRkVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IGEzMDkyODRhZjBl
MWQ3ODRlZjllNWZjZTU5MzM1NDBhZTMzMTlkZWQuLmEzNjBmNmRiOGJhMTc1NmI4ZTM1MDU1NmVj
YjhmYWE1NTA1MDM0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKLSNpbmNsdWRlICJM
aWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2RhZDY0NDRiY2ZjMjA1ZGZjOTIzOTE3ODE4MGNjOTBmMDVmNGUzNy4uMDQyNDhlZTJlM2I2
YzI4NGRhZmZmNzhkZmM3MTI3NTM5NmE4N2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU1MSw4ICsxNTUxLDYgQEAKIAkJ
NDE1NjcwNDcxREJFMTUzMzAwOUFDM0JCIC8qIFBlZXJDb25uZWN0aW9uU3RhdGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU2NzA0NjFEQkUxNTI0
MDA5QUMzQkIgLyogUGVlckNvbm5lY3Rpb25TdGF0ZXMuaCAqLzsgfTsKIAkJNDE1NzQ3NDcxRTM4
NjlBNDAwRTkxNEQ4IC8qIExpYldlYlJUQ01hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDMxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldl
YlJUQ01hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxNTc0NzQ4MUUzODY5QTcwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDQxRTM4
Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE1NzQ3NDkxRTM4NjlBQTAwRTkxNEQ4IC8q
IExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNTc0NzQ1MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5jcHAg
Ki87IH07Ci0JCTQxNTc0NzRBMUUzODY5QUQwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1NzQ3NDYxRTM4
Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1l
ZGlhQ29udHJvbHNBcHBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5o
ICovOyB9OwogCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdB
RjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovOyB9OwogCQk0
MTU3RUJGQTFFM0FCNjc5MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdFQkY5
MUUzQUIwNjgwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwICovOyB9
OwpAQCAtMTU5Nyw2ICsxNTk1LDcgQEAKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZp
c2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3Bw
ICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQx
Njg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKIAkJNDE5QkU3NTkx
QkM3RjQyQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAv
KiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi87IH07CisJCTQxQTFCMDBFMUU1MjY1NzkwMDdGMzc2
OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUExQjAwRDFFNTI2NTZFMDA3RjM3NjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MUEzRDU4RTEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07
CiAJCTQxQUJFNjdCMUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUJF
NjdBMUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAqLzsg
fTsKQEAgLTg4MDcsOCArODgwNiw2IEBACiAJCTQxNTY3MDQ2MURCRTE1MjQwMDlBQzNCQiAvKiBQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
ZWVyQ29ubmVjdGlvblN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3
NDc0MzFFMzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDTWFjcm9zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ01hY3Jvcy5oOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3NDc0NDFF
Mzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTU3NDc0NTFF
Mzg2OTlFMDBFOTE0RDggLyogTGliV2ViUlRDVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDVXRpbHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE1NzQ3NDYx
RTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0FGN0UxMkYxRkIwNDAw
QThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNvbnRyb2xzQXBwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE1N0FGN0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3RUJGODFFM0FCMDY4MDBBQzlGRTkg
LyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODg2MCw2ICs4ODU3LDcgQEAKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0
cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUExQjAwRDFFNTI2NTZFMDA3RjM3NjkgLyogTGli
V2ViUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBM0Q1OEMxMDFDMTUyRDAwMzE2
RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZGljYXRlZFdvcmtl
clRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUFCRTY3OTFEMDU4MEQ1
MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjg0Niw4ICsxNjg0NCw3IEBACiAJCQkJ
NDE1MDgwMzUxRTNGMDBBQTAwNTFENzVEIC8qIExpYldlYlJUQ0F1ZGlvTW9kdWxlLmggKi8sCiAJ
CQkJNDE1NzQ3NDMxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ01hY3Jvcy5oICovLAogCQkJ
CTQxNTc0NzQ0MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENQcm92aWRlci5oICovLAotCQkJ
CTQxNTc0NzQ1MUUzODY5OUUwMEU5MTREOCAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8sCi0JCQkJ
NDE1NzQ3NDYxRTM4Njk5RTAwRTkxNEQ4IC8qIExpYldlYlJUQ1V0aWxzLmggKi8sCisJCQkJNDFB
MUIwMEQxRTUyNjU2RTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLywKIAkJCSk7
CiAJCQluYW1lID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3
MTc2LDcgKzI3MTczLDYgQEAKIAkJCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3NjEyQjIxRTNBOTk0MDAw
QzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE1NzQ3NDgxRTM4NjlBNzAwRTkxNEQ4IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0MTU3NDc0QTFFMzg2OUFEMDBFOTE0RDggLyogTGliV2ViUlRDVXRp
bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8q
IExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUx
MEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MDQ5LDcgKzMxMDQ1LDYgQEAKIAkJCQk1Q0REODM2NDFFNDMyNUEwMDA2MjFFOTIgLyogTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNzYxMkFGMUUz
QTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxNzYxMkIxMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE1NzQ3NDkxRTM4NjlBQTAwRTkxNEQ4
IC8qIExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQjY5OENDMTgzM0VF
MEQwMDE1OEEzMSAvKiBMaW5lQnJlYWtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4OUI1RUFB
MTExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RkI2OThDRjE4MzQwMkJCMDAxNThBMzEgLyogTGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjIxMyw2ICszMjIwOCw3IEBACiAJCQkJMEY3REYxNDgxRTJCRjFCMTAwOTU5NTFCIC8qIFdl
YkNvcmVKU0NsaWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0MDM3OUMxMjRCRUE3
RjAwQUY0MEU0IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RDOTc5RjQxQzQ5OEMwOTAwREI1MEQ0IC8qIFdlYkNvcmVOU0Vycm9yRXh0cmFzLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNDFBMUIwMEUxRTUyNjU3OTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNEQ5QkE1MEI4QzExNkIwMDdCNDJBOSAvKiBX
ZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUI0QzI0RTE1MDky
MzZDMDBBNkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAwOTVjNTE3ZjBmN2UwYzQzZWI4NjYyNzkxYTAxMzUzMTJlZTg1ODYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisKKyNpZiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKKyNpbmNsdWRlIDx3
ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uZmFjdG9yeS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
cGVlcmNvbm5lY3Rpb25mYWN0b3J5cHJveHkuaD4KKyNpbmNsdWRlIDx3ZWJydGMvYmFzZS9waHlz
aWNhbHNvY2tldHNlcnZlci5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9wMnAvY2xpZW50L2Jhc2ljcG9y
dGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nl
cy92aWRlb3Rvb2xib3h2aWRlb2NvZGVjZmFjdG9yeS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzIDogcHVibGljIHJ0
Yzo6TWVzc2FnZUhhbmRsZXIgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENBdWRpb01v
ZHVsZT4gYXVkaW9EZXZpY2VNb2R1bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBuZXR3b3JrVGhyZWFkOworICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gc2lnbmFs
aW5nVGhyZWFkOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
RmFjdG9yeUludGVyZmFjZT4gZmFjdG9yeTsKKyAgICBib29sIG5ldHdvcmtUaHJlYWRXaXRoU29j
a2V0U2VydmVyIHsgZmFsc2UgfTsKK3ByaXZhdGU6CisgICAgdm9pZCBPbk1lc3NhZ2UocnRjOjpN
ZXNzYWdlKik7Cit9OworCitzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcz4gZmFjdG9yeUFuZFRocmVhZHM7
CisgICAgcmV0dXJuIGZhY3RvcnlBbmRUaHJlYWRzLmdldCgpOworfQorCitzdHJ1Y3QgVGhyZWFk
TWVzc2FnZURhdGEgOiBwdWJsaWMgcnRjOjpNZXNzYWdlRGF0YSB7CisgICAgVGhyZWFkTWVzc2Fn
ZURhdGEoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgICAgICA6IGNhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKQorICAgIHsgfQorICAgIEZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2s7
Cit9OworCit2b2lkIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM6Ok9uTWVzc2FnZShy
dGM6Ok1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VfaWQg
PT0gMSk7CisgICAgc3RhdGljX2Nhc3Q8VGhyZWFkTWVzc2FnZURhdGEqPihtZXNzYWdlLT5wZGF0
YSktPmNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJU
Q05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIFBlZXJD
b25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpOworICAgIHRocmVhZHMubmV0d29ya1RocmVhZC0+UG9zdChSVENfRlJPTV9IRVJFLCAm
dGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VEYXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Cit9
CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChG
dW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgUGVlckNvbm5lY3Rpb25GYWN0b3J5
QW5kVGhyZWFkcyYgdGhyZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgdGhy
ZWFkcy5zaWduYWxpbmdUaHJlYWQtPlBvc3QoUlRDX0ZST01fSEVSRSwgJnRocmVhZHMsIDEsIG5l
dyBUaHJlYWRNZXNzYWdlRGF0YShXVEZNb3ZlKGNhbGxiYWNrKSkpOworfQorCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcygpCit7CisgICAgYXV0
byYgZmFjdG9yeUFuZFRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOworCisgICAg
QVNTRVJUKCFmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5KTsKKworICAgIGF1dG8gdGhyZWFkID0g
cnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJl
YWQgPSBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciA/IHJ0
Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCkgOiBydGM6OlRocmVhZDo6Q3JlYXRl
KCk7CisgICAgYm9vbCByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLT5T
dGFydCgpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZSgpOworICAg
IHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKKyAg
ICBBU1NFUlQocmVzdWx0KTsKKworICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9k
dWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKKworICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkgPSB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeShmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJl
YWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlLmdldCgpLCBuZXcg
d2VicnRjOjpWaWRlb1Rvb2xib3hWaWRlb0VuY29kZXJGYWN0b3J5KCksIG5ldyB3ZWJydGM6OlZp
ZGVvVG9vbGJveFZpZGVvRGVjb2RlckZhY3RvcnkoKSk7CisKKyAgICBBU1NFUlQoZmFjdG9yeUFu
ZFRocmVhZHMuZmFjdG9yeSk7Cit9CisKK3dlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlJiBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpCit7CisgICAgaWYgKCFzdGF0aWNG
YWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpCisgICAgICAgIGluaXRpYWxpemVQZWVyQ29ubmVj
dGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgcmV0dXJuICpzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpLmZhY3Rvcnk7Cit9CisKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnNldFBlZXJDb25u
ZWN0aW9uRmFjdG9yeShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlJbnRlcmZhY2U+JiYgZmFjdG9yeSkKK3sKKyAgICBpZiAoIXN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkuZmFjdG9yeSkKKyAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9y
eUFuZFRocmVhZHMoKTsKKworICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSA9
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5UHJveHk6OkNyZWF0ZShzdGF0aWNGYWN0b3J5
QW5kVGhyZWFkcygpLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgV1RGTW92ZShmYWN0b3J5KSk7Cit9
CisKK3N0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gY3JlYXRlQWN0dWFsUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiBvYnNlcnZlciwgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9j
YXRvcj4mJiBwb3J0QWxsb2NhdG9yKQoreworICAgIEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhy
ZWFkcygpLmZhY3RvcnkpOworCisgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UlRDQ29uZmlndXJhdGlvbiBjb25maWc7CisgICAgLy8gRklYTUU6IEFkZCBhIGRlZmF1bHQgY29u
ZmlndXJhdGlvbi4KKyAgICByZXR1cm4gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5
LT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcsIFdURk1vdmUocG9ydEFsbG9jYXRvciksIG51
bGxwdHIsICZvYnNlcnZlcik7Cit9CisKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICAvLyBE
ZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KKyAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9
IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7CisgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5m
YWN0b3J5KSB7CisgICAgICAgIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkubmV0d29ya1RocmVh
ZFdpdGhTb2NrZXRTZXJ2ZXIgPSB0cnVlOworICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rp
b25GYWN0b3J5QW5kVGhyZWFkcygpOworICAgIH0KKyAgICBBU1NFUlQoc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CisKKyAgICByZXR1cm4g
Y3JlYXRlQWN0dWFsUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIG51bGxwdHIpOworfQorCitydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNl
cnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6TmV0d29ya01hbmFnZXImIG5ldHdvcmtNYW5hZ2VyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkmIHBhY2tldFNvY2tldEZhY3RvcnkpCit7CisgICAgQVNTRVJU
KCFzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVy
KTsKKworICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKTsKKyAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpCisgICAgICAgIGluaXRp
YWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOworICAgIHN0
YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRD
X0ZST01fSEVSRSwgWyZdKCkgeworICAgICAgICBwb3J0QWxsb2NhdG9yLnJlc2V0KG5ldyBjcmlj
a2V0OjpCYXNpY1BvcnRBbGxvY2F0b3IoJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFj
dG9yeSkpOworICAgIH0pOworCisgICAgcmV0dXJuIGNyZWF0ZUFjdHVhbFBlZXJDb25uZWN0aW9u
KG9ic2VydmVyLCBXVEZNb3ZlKHBvcnRBbGxvY2F0b3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmgKaW5kZXggMzg3ZDJhMjVkYTA0N2Y4NzM4NGU4NTg0MGUyMmE4Y2Y3ZjlkNTQ4
Ny4uZGNhMWMyMjc1Y2Y5ZDU2MDA3ZThjZjFkMTI1MTg4Njg0MTdmNjFmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTI1LDIwICsyNSw0NCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKICNpZiBVU0UoTElCV0VCUlRDKQotI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisK
ICNpbmNsdWRlIDx3ZWJydGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaD4KKworbmFtZXNwYWNlIHJ0YyB7CitjbGFz
cyBOZXR3b3JrTWFuYWdlcjsKK2NsYXNzIFBhY2tldFNvY2tldEZhY3Rvcnk7Cit9CisKK25hbWVz
cGFjZSB3ZWJydGMgeworY2xhc3MgUGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlOworfQog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGli
V2ViUlRDUHJvdmlkZXIgewogcHVibGljOgotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVh
bCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3Jl
YXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZl
cikgeyByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIpOyB9Owot
I2VuZGlmCisgICAgTGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+
TGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25PYnNlcnZlciYpOworCisgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgbWV0aG9kcyBub3Qg
c3RhdGljLgorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UmIGZhY3RvcnkoKTsKKyAgICAvLyBVc2VkIGZvciBtb2NrIHRlc3RpbmcKKyAgICBzdGF0
aWMgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkZhY3RvcnkocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAg
IFdFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Jik7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWFmMmYyNzUwYmE2
NmFjZTUxYzZiOWRjYmU2MjA3YmI1ODNjZGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlv
TW9kdWxlLmgiCi0jaW5jbHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmZhY3Rvcnlwcm94
eS5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+Ci0jaW5j
bHVkZSA8d2VicnRjL2Jhc2UvcGh5c2ljYWxzb2NrZXRzZXJ2ZXIuaD4KLSNpbmNsdWRlIDx3ZWJy
dGMvcDJwL2NsaWVudC9iYXNpY3BvcnRhbGxvY2F0b3IuaD4KLSNpbmNsdWRlIDx3ZWJydGMvc2Rr
L29iamMvRnJhbWV3b3JrL0NsYXNzZXMvdmlkZW90b29sYm94dmlkZW9jb2RlY2ZhY3RvcnkuaD4K
LSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5
QW5kVGhyZWFkcyA6IHB1YmxpYyBydGM6Ok1lc3NhZ2VIYW5kbGVyIHsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IGF1ZGlvRGV2aWNlTW9kdWxlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gbmV0d29ya1RocmVhZDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpUaHJlYWQ+IHNpZ25hbGluZ1RocmVhZDsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IGZhY3Rvcnk7Ci0gICAgYm9v
bCBuZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciB7IGZhbHNlIH07Ci1wcml2YXRlOgotICAg
IHZvaWQgT25NZXNzYWdlKHJ0Yzo6TWVzc2FnZSopOwotfTsKLQotc3RhdGljIGlubGluZSBQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHM+IGZhY3RvcnlBbmRUaHJlYWRzOwotICAgIHJldHVybiBmYWN0b3J5QW5kVGhyZWFkcy5nZXQo
KTsKLX0KLQotc3RydWN0IFRocmVhZE1lc3NhZ2VEYXRhIDogcHVibGljIHJ0Yzo6TWVzc2FnZURh
dGEgewotICAgIFRocmVhZE1lc3NhZ2VEYXRhKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykK
LSAgICAgICAgOiBjYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKLSAgICB7IH0KLSAgICBGdW5j
dGlvbjx2b2lkKCk+IGNhbGxiYWNrOwotfTsKLQotdm9pZCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlB
bmRUaHJlYWRzOjpPbk1lc3NhZ2UocnRjOjpNZXNzYWdlKiBtZXNzYWdlKQotewotICAgIEFTU0VS
VChtZXNzYWdlLT5tZXNzYWdlX2lkID09IDEpOwotICAgIHN0YXRpY19jYXN0PFRocmVhZE1lc3Nh
Z2VEYXRhKj4obWVzc2FnZS0+cGRhdGEpLT5jYWxsYmFjaygpOwotfQotCi12b2lkIGNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQotewotICAgIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5k
VGhyZWFkcygpOwotICAgIHRocmVhZHMubmV0d29ya1RocmVhZC0+UG9zdChSVENfRlJPTV9IRVJF
LCAmdGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VEYXRhKFdURk1vdmUoY2FsbGJhY2spKSk7
Ci19Ci0KLXZvaWQgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKLXsKLSAgICBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiB0aHJl
YWRzID0gc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKTsKLSAgICB0aHJlYWRzLnNpZ25hbGluZ1Ro
cmVhZC0+UG9zdChSVENfRlJPTV9IRVJFLCAmdGhyZWFkcywgMSwgbmV3IFRocmVhZE1lc3NhZ2VE
YXRhKFdURk1vdmUoY2FsbGJhY2spKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCkKLXsKLSAgICBhdXRvJiBmYWN0b3J5QW5kVGhy
ZWFkcyA9IHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBBU1NFUlQoIWZhY3RvcnlB
bmRUaHJlYWRzLmZhY3RvcnkpOwotCi0gICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3Jl
YXRlKCk7Ci0gICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCA9IGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyID8gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKSA6IHJ0Yzo6VGhyZWFkOjpDcmVhdGUoKTsKLSAgICBib29sIHJl
c3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQtPlN0YXJ0KCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlKCk7Ci0gICAgcmVzdWx0ID0gZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5TdGFydCgpOwotICAgIEFTU0VSVChyZXN1bHQp
OwotCi0gICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwotCi0gICAgZmFjdG9yeUFuZFRocmVhZHMu
ZmFjdG9yeSA9IHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5lY3Rpb25GYWN0b3J5KGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJl
YWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9y
eUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUuZ2V0KCksIG5ldyB3ZWJydGM6OlZpZGVvVG9v
bGJveFZpZGVvRW5jb2RlckZhY3RvcnkoKSwgbmV3IHdlYnJ0Yzo6VmlkZW9Ub29sYm94VmlkZW9E
ZWNvZGVyRmFjdG9yeSgpKTsKLQotICAgIEFTU0VSVChmYWN0b3J5QW5kVGhyZWFkcy5mYWN0b3J5
KTsKLX0KLQotdm9pZCBpbml0aWFsaXplTGliV2ViUlRDSW50ZXJuYWxzV2l0aFNvY2tldFNlcnZl
cigpCi17Ci0gICAgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKS5uZXR3b3JrVGhyZWFkV2l0aFNv
Y2tldFNlcnZlciA9IHRydWU7Ci19Ci0KLXdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50
ZXJmYWNlJiBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKQotewotICAgIGlmICghc3RhdGljRmFjdG9y
eUFuZFRocmVhZHMoKS5mYWN0b3J5KQotICAgICAgICBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25G
YWN0b3J5QW5kVGhyZWFkcygpOwotICAgIHJldHVybiAqc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KS5mYWN0b3J5OwotfQotCi12b2lkIHNldFBlZXJDb25uZWN0aW9uRmFjdG9yeShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+JiYgZmFjdG9y
eSkKLXsKLSAgICBpZiAoIXN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSkKLSAgICAg
ICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoKTsKLQotICAgIHN0
YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkuZmFjdG9yeSA9IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25G
YWN0b3J5UHJveHk6OkNyZWF0ZShzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLnNpZ25hbGluZ1Ro
cmVhZC5nZXQoKSwgV1RGTW92ZShmYWN0b3J5KSk7Ci19Ci0KLXN0YXRpYyBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgc3RkOjp1bmlxdWVf
cHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4mJiBwb3J0QWxsb2NhdG9yKQotewotICAg
IEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLmZhY3RvcnkpOwotCi0gICAgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiBjb25maWc7Ci0gICAg
Ly8gRklYTUU6IEFkZCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KLSAgICByZXR1cm4gc3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMoKS5mYWN0b3J5LT5DcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWcs
IFdURk1vdmUocG9ydEFsbG9jYXRvciksIG51bGxwdHIsICZvYnNlcnZlcik7Ci19Ci0KLXJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQotewot
ICAgIEFTU0VSVChzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpLm5ldHdvcmtUaHJlYWRXaXRoU29j
a2V0U2VydmVyKTsKLQotICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gc3RhdGljRmFjdG9y
eUFuZFRocmVhZHMoKTsKLSAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmZhY3RvcnkpCi0gICAg
ICAgIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKCk7Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIG51bGxwdHIpOwotfQotCi1ydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVl
ckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRj
OjpOZXR3b3JrTWFuYWdlciYgbmV0d29ya01hbmFnZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9y
eSYgcGFja2V0U29ja2V0RmFjdG9yeSkKLXsKLSAgICBBU1NFUlQoIXN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkubmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwotCi0gICAgYXV0byYgZmFj
dG9yeUFuZFRocmVhZHMgPSBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpOwotICAgIGlmICghZmFj
dG9yeUFuZFRocmVhZHMuZmFjdG9yeSkKLSAgICAgICAgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9u
RmFjdG9yeUFuZFRocmVhZHMoKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7Ci0gICAgc3RhdGljRmFjdG9yeUFuZFRocmVh
ZHMoKS5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7
Ci0gICAgICAgIHBvcnRBbGxvY2F0b3IucmVzZXQobmV3IGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9j
YXRvcigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KSk7Ci0gICAgfSk7Ci0K
LSAgICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdURk1vdmUocG9ydEFs
bG9jYXRvcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTExMjZkODVjZGIwOGMzMWU3YzA4NzhjMDgxZjVkNTUyYzVlYThhZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKLSNpbmNsdWRl
IDx3ZWJydGMvYmFzZS9zY29wZWRfcmVmX3B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0KLW5hbWVzcGFjZSBydGMgewotY2xhc3MgTmV0d29ya01hbmFnZXI7Ci1jbGFzcyBQYWNrZXRT
b2NrZXRGYWN0b3J5OwotfQotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIFBlZXJDb25uZWN0
aW9uRmFjdG9yeUludGVyZmFjZTsKLWNsYXNzIFBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOwotY2xh
c3MgUGVlckNvbm5lY3Rpb25PYnNlcnZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1X
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMaWJXZWJSVENJbnRlcm5hbHNXaXRoU29ja2V0
U2VydmVyKCk7Ci0KLXdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBwZWVy
Q29ubmVjdGlvbkZhY3RvcnkoKTsKLVdFQkNPUkVfRVhQT1JUIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5Jik7Ci1XRUJDT1JFX0VYUE9SVCBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJik7Ci0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2Fs
bE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOwotCi0vLyBVc2VkIGZv
ciBtb2NrIHRlc3RpbmcKLVdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25GYWN0
b3J5KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZT4mJik7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAppbmRleCBhY2QwMTAwMTEzMGUzYWExZGU5ZDZhZjYyZDMwMzgzYzJiZDhkMjU4Li45
ODE4MzAzNTQ1NGE1NTcyN2E1M2I3ZDkxNDhjNDc4MGVmZDMyNzliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5j
bHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQXVk
aW9Gb3JtYXQuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgYwogICAgIH0KICAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXModGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CiAKLSAgICBjYWxsT25X
ZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdWxs
QXVkaW9EYXRhKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggYWNjNWJjM2FiZTg1OGEwZjM1ZDg1ZjAyZDI3YzRmNGQ2NGU4NjI5Ni4uNmQyNmQ1NTZl
MzNlOTVjYTFiYjQ0YjhlZGYzYWUyYmZkYTU4YTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
Ci0jaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmNwcAppbmRleCA4YmI3ZTkxNjRkNjZmZjc3YWY2NzA4MTRmYmMxNDRjMTAxYzI0MjExLi4x
ZmJhYjVkNzhiM2UyZTE1YWZhYzA1NTAzMDFiOTNlNGM2MDk5ZWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0yOCwxNyArMjgsMzMgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgogI2luY2x1ZGUgPHNz
dHJlYW0+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGlubGlu
ZSBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+JiBnZXRSZWFsUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPj4gcmVhbFBlZXJDb25uZWN0aW9uRmFjdG9yeTsKKyAgICByZXR1cm4gcmVhbFBl
ZXJDb25uZWN0aW9uRmFjdG9yeTsKK30KKworc3RhdGljIGlubGluZSB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uRmFjdG9yeUludGVyZmFjZSogcmVhbFBlZXJDb25uZWN0aW9uRmFjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIGdldFJlYWxQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS5nZXQoKTsKK30KKwogdm9p
ZCB1c2VNb2NrUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KExpYldlYlJUQ1Byb3ZpZGVyKiBwcm92
aWRlciwgY29uc3QgU3RyaW5nJiB0ZXN0Q2FzZSkKIHsKLSAgICBzZXRQZWVyQ29ubmVjdGlvbkZh
Y3RvcnkoTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeTo6Y3JlYXRlKHByb3ZpZGVy
LCBTdHJpbmcodGVzdENhc2UpKSk7CisgICAgaWYgKHByb3ZpZGVyICYmICFyZWFsUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KCkpIHsKKyAgICAgICAgYXV0byYgZmFjdG9yeSA9IGdldFJlYWxQZWVyQ29u
bmVjdGlvbkZhY3RvcnkoKTsKKyAgICAgICAgZmFjdG9yeSA9ICZwcm92aWRlci0+ZmFjdG9yeSgp
OworICAgIH0KKworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9yeTo6Y3JlYXRlKFN0cmluZyh0ZXN0
Q2FzZSkpKTsKIH0KIAogY2xhc3MgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRm9ySWNlQ2Fu
ZGlkYXRlcyA6IHB1YmxpYyBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24gewpAQCAtNTIsMTkg
KzY4LDE5IEBAIHByaXZhdGU6CiB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZvcklj
ZUNhbmRpZGF0ZXM6OmdvdExvY2FsRGVzY3JpcHRpb24oKQogewogICAgIC8vIExldCdzIGdhdGhl
ciBjYW5kaWRhdGVzCi0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsK
KyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlz
XSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0ZSBjYW5kaWRhdGUoIjIwMTMy
NjY0MzEgMSB1ZHAgMjAxMzI2NjQzMiAxOTIuMTY4LjAuMTAwIDM4ODM4IHR5cCBob3N0IGdlbmVy
YXRpb24gMCIsICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VDYW5kaWRhdGUoJmNhbmRp
ZGF0ZSk7CiAgICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgp
IHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0
aGlzXSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0ZSBjYW5kaWRhdGUoIjEw
MTkyMTYzODMgMSB0Y3AgMTAxOTIxNjM4NCAxOTIuMTY4LjAuMTAwIDkgdHlwIGhvc3QgdGNwdHlw
ZSBwYXNzaXZlIGdlbmVyYXRpb24gMCIsICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VD
YW5kaWRhdGUoJmNhbmRpZGF0ZSk7CiAgICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzXSgpIHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2ln
bmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsKICAgICAgICAgTW9ja0xpYldlYlJUQ0ljZUNhbmRpZGF0
ZSBjYW5kaWRhdGUoIjE2Nzc3MjIxMTEgMSB0Y3AgMTY3NzcyMjExMiAxNzIuMTguMC4xIDQ3OTg5
IHR5cCBzcmZseCByYWRkciAxOTIuMTY4LjAuMTAwIHJwb3J0IDQ3OTg5IGdlbmVyYXRpb24gMCIs
ICIxIik7CiAgICAgICAgIG1fb2JzZXJ2ZXIuT25JY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7CiAg
ICAgfSk7Ci0gICAgY2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzXSgpIHsK
ICAgICAgICAgbV9vYnNlcnZlci5PbkljZUdhdGhlcmluZ0NoYW5nZSh3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjprSWNlR2F0aGVyaW5nQ29tcGxldGUpOwogICAgIH0pOwogfQpAQCAt
OTMsNyArMTA5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSB2b2lkIHJl
bGVhc2VJbk5ldHdvcmtUaHJlYWQoTW9ja0xpYldlYlJUQ1BlZXIKICAgICBtb2NrLkFkZFJlZigp
OwogICAgIG9ic2VydmVyLkFkZFJlZigpOwogICAgIGNhbGxPbk1haW5UaHJlYWQoWyZtb2NrLCAm
b2JzZXJ2ZXJdIHsKLSAgICAgICAgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbJm1vY2ssICZv
YnNlcnZlcl0oKSB7CisgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKFsmbW9jaywgJm9ic2VydmVyXSgpIHsKICAgICAgICAgICAgIG9ic2VydmVyLlJl
bGVhc2UoKTsKICAgICAgICAgICAgIG1vY2suUmVsZWFzZSgpOwogICAgICAgICB9KTsKQEAgLTEz
MywyNiArMTQ5LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBTZXRMb2NhbERlc2NyaXB0aW9uKHdl
YnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCB3ZWJydGM6OlNl
c3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopIGZpbmFsIHsgcmVsZWFzZUluTmV0d29ya1RocmVh
ZCgqdGhpcywgKm9ic2VydmVyKTsgfQogfTsKIAotCi1Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25GYWN0b3J5OjpNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KExpYldlYlJUQ1By
b3ZpZGVyKiBwcm92aWRlciwgU3RyaW5nJiYgdGVzdENhc2UpCi0gICAgOiBtX3Byb3ZpZGVyKHBy
b3ZpZGVyKQotICAgICwgbV90ZXN0Q2FzZShXVEZNb3ZlKHRlc3RDYXNlKSkKK01vY2tMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6Ok1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rv
cnkoU3RyaW5nJiYgdGVzdENhc2UpCisgICAgOiBtX3Rlc3RDYXNlKFdURk1vdmUodGVzdENhc2Up
KQogewotICAgIGlmIChtX3Rlc3RDYXNlID09ICJUd29SZWFsUGVlckNvbm5lY3Rpb25zIiAmJiBt
X3Byb3ZpZGVyKSB7CisgICAgaWYgKG1fdGVzdENhc2UgPT0gIlR3b1JlYWxQZWVyQ29ubmVjdGlv
bnMiKSB7CiAgICAgICAgIG1fbnVtYmVyT2ZSZWFsUGVlckNvbm5lY3Rpb25zID0gMjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV90ZXN0Q2FzZSA9PSAiT25lUmVhbFBlZXJDb25u
ZWN0aW9uIiAmJiBtX3Byb3ZpZGVyKQorICAgIGlmIChtX3Rlc3RDYXNlID09ICJPbmVSZWFsUGVl
ckNvbm5lY3Rpb24iKQogICAgICAgICBtX251bWJlck9mUmVhbFBlZXJDb25uZWN0aW9ucyA9IDE7
CiB9CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5OjpDcmVhdGVQZWVyQ29ubmVjdGlv
bihjb25zdCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
Jiwgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OlBvcnRBbGxvY2F0b3I+LCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvckludGVyZmFjZT4sIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uRmFjdG9y
eTo6Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3Qgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OlBvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3IsIHN0ZDo6dW5pcXVlX3B0cjxydGM6
OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9ySW50ZXJmYWNlPiBnZW5lcmF0b3IsIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKG1fbnVtYmVyT2ZSZWFs
UGVlckNvbm5lY3Rpb25zKSB7Ci0gICAgICAgIEFTU0VSVChtX3Byb3ZpZGVyKTsKLSAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gbV9wcm92aWRlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24oKm9ic2Vy
dmVyKTsKLSAgICAgICAgaWYgKCEtLW1fbnVtYmVyT2ZSZWFsUGVlckNvbm5lY3Rpb25zKQotICAg
ICAgICAgICAgbV9wcm92aWRlciA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IHJlYWxQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKS0+Q3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmln
dXJhdGlvbiwgV1RGTW92ZShwb3J0QWxsb2NhdG9yKSwgV1RGTW92ZShnZW5lcmF0b3IpLCBvYnNl
cnZlcik7CisgICAgICAgIC0tbV9udW1iZXJPZlJlYWxQZWVyQ29ubmVjdGlvbnM7CiAgICAgICAg
IHJldHVybiBjb25uZWN0aW9uOwogICAgIH0KIApAQCAtMTgxLDcgKzE5Myw3IEBAIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPiBNb2NrTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25GYWN0CiAKIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRM
b2NhbERlc2NyaXB0aW9uKHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIqIG9i
c2VydmVyLCB3ZWJydGM6OlNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSopCiB7Ci0gICAgY2Fs
bE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBvYnNlcnZlcl0geworICAgIExpYldlYlJU
Q1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3RoaXMsIG9ic2VydmVyXSB7
CiAgICAgICAgIG9ic2VydmVyLT5PblN1Y2Nlc3MoKTsKICAgICAgICAgZ290TG9jYWxEZXNjcmlw
dGlvbigpOwogICAgIH0pOwpAQCAtMTg5LDcgKzIwMSw3IEBAIHZvaWQgTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uOjpTZXRMb2NhbERlc2NyaXB0aW9uKHdlYnJ0Yzo6U2V0U2Vzc2lvbkRlc2Ny
aXB0CiAKIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpTZXRSZW1vdGVEZXNjcmlw
dGlvbih3ZWJydGM6OlNldFNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgd2Vi
cnRjOjpTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNlc3Npb25EZXNjcmlwdGlvbikKIHsK
LSAgICBjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW29ic2VydmVyXSB7CisgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbb2JzZXJ2ZXJdIHsKICAg
ICAgICAgb2JzZXJ2ZXItPk9uU3VjY2VzcygpOwogICAgIH0pOwogICAgIEFTU0VSVChzZXNzaW9u
RGVzY3JpcHRpb24pOwpAQCAtMjI0LDcgKzIzNiw3IEBAIHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uOjpSZW1vdmVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZSopCiAK
IHZvaWQgTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uOjpDcmVhdGVPZmZlcih3ZWJydGM6OkNy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgY29uc3Qgd2VicnRjOjpN
ZWRpYUNvbnN0cmFpbnRzSW50ZXJmYWNlKikKIHsKLSAgICBjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQoW3RoaXMsIG9ic2VydmVyXSB7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgb2JzZXJ2ZXJdIHsKICAgICAgICAgc3RkOjpvc3Ry
aW5nc3RyZWFtIHNkcDsKICAgICAgICAgc2RwIDw8CiAgICAgICAgICAgICAidj0wXHJcbiIKQEAg
LTI4Myw3ICsyOTUsNyBAQCB2b2lkIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3JlYXRl
T2ZmZXIod2VicnRjOjpDcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYgogCiB2b2lkIE1vY2tMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbjo6Q3JlYXRlQW5zd2VyKHdlYnJ0Yzo6Q3JlYXRlU2Vzc2lvbkRl
c2NyaXB0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBjb25zdCB3ZWJydGM6Ok1lZGlhQ29uc3RyYWlu
dHNJbnRlcmZhY2UqKQogewotICAgIGNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywg
b2JzZXJ2ZXJdIHsKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBvYnNlcnZlcl0gewogICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc2Rw
OwogICAgICAgICBzZHAgPDwKICAgICAgICAgICAgICJ2PTBcclxuIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYmI2
M2I0ZmQ0MmYxYzJhY2M3OWI4YzlkODc2ODc5OTI1NDE3ZWU1Ny4uYTA1MDg5N2QwZGQ2N2JhOWI2
ZDQ3ODRjODM5ZTg5ZDY4ODI1N2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCBw
cml2YXRlOgogCiBjbGFzcyBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5IDogcHVi
bGljIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlPiBjcmVhdGUoTGliV2ViUlRDUHJvdmlkZXIqIHByb3ZpZGVyLCBTdHJpbmcmJiB0
ZXN0Q2FzZSkgeyByZXR1cm4gbmV3IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxNb2NrTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25GYWN0b3J5Pihwcm92aWRlciwgV1RGTW92ZSh0ZXN0Q2FzZSkpOyB9Cisg
ICAgc3RhdGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZT4gY3JlYXRlKFN0cmluZyYmIHRlc3RDYXNlKSB7IHJldHVybiBuZXcgcnRjOjpS
ZWZDb3VudGVkT2JqZWN0PE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFdURk1v
dmUodGVzdENhc2UpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTW9ja0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uRmFjdG9yeShMaWJXZWJSVENQcm92aWRlciosIFN0cmluZyYmKTsKKyAgICBNb2NrTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25GYWN0b3J5KFN0cmluZyYmKTsKIAogcHJpdmF0ZToKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gQ3JlYXRl
UGVlckNvbm5lY3Rpb24oY29uc3Qgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbiYsIGNvbnN0IHdlYnJ0Yzo6TWVkaWFDb25zdHJhaW50c0ludGVyZmFjZSos
IHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpQb3J0QWxsb2NhdG9yPiwgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3JJbnRlcmZhY2U+LCB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXIqKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0yMjAsNyArMjIw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIFN0b3BSdGNFdmVudExvZygpIGZpbmFsIHsgfQogCiBw
cml2YXRlOgotICAgIExpYldlYlJUQ1Byb3ZpZGVyKiBtX3Byb3ZpZGVyIHsgbnVsbHB0ciB9Owog
ICAgIFN0cmluZyBtX3Rlc3RDYXNlOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZSZWFsUGVlckNv
bm5lY3Rpb25zIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzNh
ZTI2NWNhMmM1MGI1NDU0ZWVmYTAwYzQ5M2ExMDk0ZjY3ZjMwMy4uZDNiMTUxNTFiMzYwMjFmYWE2
NWU1NWQ3MDg2OWNlOWYyNzdlNGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAg
LTI5LDE0ICsyOSwxMyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENVdGlscy5oPgogI2luY2x1ZGUgPHdl
YnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25PYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3
b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkuc29ja2V0RmFjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXQuaAppbmRleCBhNTFlYzY1MzEwNjA2N2RiNmFjZGIxYjVm
MjFhMjIwMjdlZjViYWMwLi43MTU3NDhiNGVkOTA2M2Y1ZTg4NDE0MmU2NGFiZjJiZTQxYmU2N2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0LmgKQEAgLTI3LDggKzI3LDcgQEAKIAogI2lmIFVTRShMSUJX
RUJSVEMpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1By
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL2Jhc2UvYXN5bmNwYWNrZXRzb2NrZXQuaD4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9u
aXRvci5jcHAKaW5kZXggODlmYmY5NTQ3MmQwOTY3OGVjNDc5NjA3ZDJlMGM1OTJmZjI3N2VlOS4u
OWVhYzQ5NGJiMDk1ZGNhYWUzMWExNGNjMTRjZTc5ZTU2OWVjMGIyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0
b3IuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGlu
ZygpCiAgICAgaWYgKG1fY2xpZW50Q291bnQpIHsKICAgICAgICAgLy8gTmVlZCB0byBzaWduYWwg
bmV3IGNsaWVudCB0aGF0IHdlIGFscmVhZHkgaGF2ZSB0aGUgbmV0d29yayBsaXN0LCBsZXQncyBk
byBpdCBhc3luY2hyb25vdXNseQogICAgICAgICBpZiAobV9yZWNlaXZlZE5ldHdvcmtMaXN0KSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7
CisgICAgICAgICAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0
d29ya1RocmVhZChbdGhpc10gewogICAgICAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdl
ZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBX
ZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQogdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYp
CiB7CiAgICAgLy8gTm8gbmVlZCB0byBwcm90ZWN0ICd0aGlzJyBhcyBpdCBoYXMgdGhlIGxpZmV0
aW1lIG9mIExpYldlYlJUQyB3aGljaCBoYXMgdGhlIGxpZmV0aW1lIG9mIHRoZSB3ZWIgcHJvY2Vz
cy4KLSAgICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3b3Jr
cywgaXB2NCwgaXB2Nl0geworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25X
ZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3b3JrcywgaXB2NCwgaXB2Nl0gewogICAgICAg
ICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkp
OwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgp
OyArK2luZGV4KQogICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0
d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCmluZGV4IDY1YjRm
MTE1MmViYWU5YWVmODEwNjY2ZGYwODQ4MTRjZTQ3M2JiNDkuLmRjMTUyNDkxMTY2Yzk0YzMyNjJk
MTM1ZjNmYjZjNThlODUwY2U1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0xpYldlYlJUQ1V0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQ
cm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDQyZWQyZGRiYTI1Y2UwMDEzNjNhYjQ0NThhNjM1NGYy
ZGViZDg5NWEuLmI0YmQ4NzExZTdiZjI2YjA5OGY0ZmY4ZDRjZGI4NWU2MzdmZTAwYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDUmVzb2x2ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJMaWJXZWJS
VENSZXNvbHZlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ1V0aWxzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJS
VENQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBXZWJSVENSZXNvbHZlcjo6c2V0UmVzb2x2ZWRB
ZGRyZXNzKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGQKICAgICBmb3Ig
KGF1dG8mIGFkZHJlc3MgOiBhZGRyZXNzZXMpCiAgICAgICAgIHJ0Y0FkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoYWRkcmVzcy52YWx1ZSk7CiAgICAgCi0gICAgV2ViQ29yZTo6Y2FsbE9uV2ViUlRD
TmV0d29ya1RocmVhZChbJmZhY3RvcnksIGlkZW50aWZpZXIsIHJ0Y0FkZHJlc3NlcyA9IFdURk1v
dmUocnRjQWRkcmVzc2VzKV0oKSB7CisgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNh
bGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZmYWN0b3J5LCBpZGVudGlmaWVyLCBydGNBZGRyZXNz
ZXMgPSBXVEZNb3ZlKHJ0Y0FkZHJlc3NlcyldKCkgewogICAgICAgICBhdXRvKiByZXNvbHZlciA9
IGZhY3RvcnkucmVzb2x2ZXIoaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghcmVzb2x2ZXIpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUlRDUmVzb2x2ZXI6
OnJlc29sdmVkQWRkcmVzc0Vycm9yKGludCBlcnJvcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX2lkZW50aWZpZXI7CiAgICAgYXV0byYgZmFjdG9yeSA9IG1fc29ja2V0RmFjdG9yeTsKLSAg
ICBXZWJDb3JlOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRlbnRpZmll
ciwgZXJyb3JdKCkgeworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFsmZmFjdG9yeSwgaWRlbnRpZmllciwgZXJyb3JdKCkgewogICAgICAg
ICBhdXRvKiByZXNvbHZlciA9IGZhY3RvcnkucmVzb2x2ZXIoaWRlbnRpZmllcik7CiAgICAgICAg
IGlmICghcmVzb2x2ZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHAKaW5k
ZXggYzUyOTVjNjMzNGQ0MDk2YjA5Njg4ZGYxZDk2OThmYTkzYWY5YjdkZi4uNjRhNTVjZmIxMjcz
ZTkwMWJkZjFhMDkwNjA5MmQ2NjBiMGNkYTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgV2ViUlRDU29ja2V0OjpzaWduYWxP
bk5ldHdvcmtUaHJlYWQoTGliV2ViUlRDU29ja2V0RmFjdG9yeSYgZmFjdG9yeSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChMaWJXZWJSVENTb2NrZXQmKT4mJiBjYWxsYmFjaykK
IHsKICAgICAvLyBmYWN0b3J5IGlzIHN0YXlpbmcgdmFsaWQgZHVyaW5nIHRoZSBwcm9jZXNzIGxp
ZmV0aW1lLgotICAgIFdlYkNvcmU6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoWyZmYWN0b3J5
LCBpZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKKyAgICBXZWJD
b3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbJmZhY3Rv
cnksIGlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgewogICAgICAg
ICBhdXRvKiBzb2NrZXQgPSBmYWN0b3J5LnNvY2tldChpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KCFzb2NrZXQpCiAgICAgICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>