<?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>189180</bug_id>
          
          <creation_ts>2018-08-30 21:17:35 -0700</creation_ts>
          <short_desc>Move stats gathering out of LibWebRTCMediaEndpoint</short_desc>
          <delta_ts>2018-08-31 16:28:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455536</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 21:17:35 -0700</bug_when>
    <thetext>refactoring to ease future developments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455555</commentid>
    <comment_count>1</comment_count>
      <attachid>348598</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 21:40:33 -0700</bug_when>
    <thetext>Created attachment 348598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455557</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 21:42:31 -0700</bug_when>
    <thetext>Attachment 348598 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455560</commentid>
    <comment_count>3</comment_count>
      <attachid>348602</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 21:47:22 -0700</bug_when>
    <thetext>Created attachment 348602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455561</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 21:49:40 -0700</bug_when>
    <thetext>Attachment 348602 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455667</commentid>
    <comment_count>5</comment_count>
      <attachid>348602</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-08-31 06:18:46 -0700</bug_when>
    <thetext>Comment on attachment 348602
Patch

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

LGTM

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2018

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455832</commentid>
    <comment_count>6</comment_count>
      <attachid>348602</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-08-31 13:22:30 -0700</bug_when>
    <thetext>Comment on attachment 348602
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

Please update the copyright years on these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455843</commentid>
    <comment_count>7</comment_count>
      <attachid>348670</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-31 13:46:53 -0700</bug_when>
    <thetext>Created attachment 348670
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455844</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-31 13:48:15 -0700</bug_when>
    <thetext>Attachment 348670 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455845</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-31 13:48:29 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; Created attachment 348670 [details]
&gt; Patch for landing

Thanks for the review, I updated copyrights accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455891</commentid>
    <comment_count>10</comment_count>
      <attachid>348670</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 16:27:29 -0700</bug_when>
    <thetext>Comment on attachment 348670
Patch for landing

Clearing flags on attachment: 348670

Committed r235576: &lt;https://trac.webkit.org/changeset/235576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455892</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 16:27:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455893</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 16:28:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/43960905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348598</attachid>
            <date>2018-08-30 21:40:33 -0700</date>
            <delta_ts>2018-08-30 21:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189180-20180830214032.patch</filename>
            <type>text/plain</type>
            <size>47818</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uNDJhNDllNTUwZDBmMjQ2Nzk0NDAxMzEwNDlkMjJi
NjY2ZmM3NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0YXRzIGdhdGhl
cmluZyBvdXQgb2YgTGliV2ViUlRDTWVkaWFFbmRwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBzdGF0cyBnYXRoZXJpbmcgaW4gTGliV2Vi
UlRDU3RhdHNDb2xsZWN0b3IuCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSBsYW1iZGEgZ2l2
ZW4gdG8gdGhlIGNvbGxlY3RvciBpcyBhbHdheXMgY2FsbGVkIGFuZCBkZXN0cm95ZWQgZnJvbSB0
aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIFRoaXMgYWxsb3dzIGNhcHR1cmluZyB0aGUgcHJvbWlz
ZSBoZXJlIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbnRvIHRoZSBwZWVyIGNvbm5lY3Rpb24gYmFj
a2VuZC4KKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnZXRTdGF0cyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6Okxp
YldlYlJUQ1N0YXRzQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yOjp+TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
ZnJvbVN0ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsUlRDU3RhdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxJbmJvdW5kUlRQU3RyZWFtU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE91dGJvdW5k
UlRQU3RyZWFtU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJUQ01lZGlhU3RyZWFtVHJh
Y2tTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsUlRDRGF0YUNoYW5uZWxTdGF0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjppY2VDYW5kaWRhdGVQYWlyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmlsbFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxs
UlRDQ2VydGlmaWNhdGVTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENTdGF0c0Nv
bGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMDgtMzAgIE9saXZpYSBCYXJu
ZXR0ICA8b2Jhcm5ldHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzNTQ4OSk6
IGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIGNyYXNoZXMgdW5kZXIg
TmF2aWdhdG9yOjpzaGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmZWY5OTc2MzJhNjhjNDEw
YWYwOThmMDFlYjJjNThjZGZjZGFiNThjLi4yOWJjMDA0MTQ5Mzg3YzE3Njg4MWFhOTcxYWVjYzNl
YzRhODZiZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU2MCw2ICsxNTYwLDcgQEAgaWYg
KFVTRV9MSUJXRUJSVEMpCiAgICAgICAiJHtUSElSRFBBUlRZX0RJUn0vbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwIikKICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJ
RVMgd2VicnRjKQogICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcAogICAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAogICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKICAgICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggYmYxMjBkMDI5Yjk4MGMzNTI4ZmViMDQwOTVhYmEwZTkyNGE3
NmFkNS4uNmExNDM0MjU4NzVmZWMxN2NhNjYyYTBjMTlmYTAyNjA4YmMxYjVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFu
Y2UuaCIKQEAgLTMwNSwyOTkgKzMwNiwxOSBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmRvQ3JlYXRlQW5zd2VyKCkKICAgICBtX2JhY2tlbmQtPkNyZWF0ZUFuc3dlcigmbV9jcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgbnVsbHB0cik7CiB9CiAKLXZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIGNvbnN0IERl
ZmVycmVkUHJvbWlzZSYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0
U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
IHsKLSAgICBhdXRvIGNvbGxlY3RvciA9IFN0YXRzQ29sbGVjdG9yOjpjcmVhdGUoKnRoaXMsIHBy
b21pc2UsIHRyYWNrKTsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFs
aW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbGxlY3RvciA9IFdU
Rk1vdmUoY29sbGVjdG9yKV0gewotICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5k
KQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5HZXRTdGF0cyhjb2xsZWN0
b3IuZ2V0KCkpOwotICAgIH0pOwotfQotCi1MaWJXZWJSVENNZWRpYUVuZHBvaW50OjpTdGF0c0Nv
bGxlY3Rvcjo6U3RhdHNDb2xsZWN0b3IoUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+JiYgZW5k
cG9pbnQsIGNvbnN0IERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgTWVkaWFTdHJlYW1UcmFjayog
dHJhY2spCi0gICAgOiBtX2VuZHBvaW50KFdURk1vdmUoZW5kcG9pbnQpKQotICAgICwgbV9wcm9t
aXNlKHByb21pc2UpCi17Ci0gICAgaWYgKHRyYWNrKQotICAgICAgICBtX2lkID0gdHJhY2stPmlk
KCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDU3RhdHMoUlRDU3RhdHNSZXBvcnQ6
OlN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENTdGF0cyYgcnRjU3RhdHMpCi17Ci0gICAg
c3RhdHMudGltZXN0YW1wID0gUGVyZm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFNlY29u
ZHM6OmZyb21NaWNyb3NlY29uZHMocnRjU3RhdHMudGltZXN0YW1wX3VzKCkpKS5taWxsaXNlY29u
ZHMoKTsKLSAgICBzdGF0cy5pZCA9IGZyb21TdGRTdHJpbmcocnRjU3RhdHMuaWQoKSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6
OlJUQ1JUUFN0cmVhbVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENSVFBTdHJlYW1TdGF0
cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAg
ICBpZiAocnRjU3RhdHMuc3NyYy5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnNzcmMgPSAq
cnRjU3RhdHMuc3NyYzsKLSAgICBpZiAocnRjU3RhdHMuYXNzb2NpYXRlX3N0YXRzX2lkLmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYXNzb2NpYXRlU3RhdHNJZCA9IGZyb21TdGRTdHJpbmco
KnJ0Y1N0YXRzLmFzc29jaWF0ZV9zdGF0c19pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmlzX3JlbW90
ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmlzUmVtb3RlID0gKnJ0Y1N0YXRzLmlzX3Jl
bW90ZTsKLSAgICBpZiAocnRjU3RhdHMubWVkaWFfdHlwZS5pc19kZWZpbmVkKCkpCi0gICAgICAg
IHN0YXRzLm1lZGlhVHlwZSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLm1lZGlhX3R5cGUpOwot
ICAgIGlmIChydGNTdGF0cy50cmFja19pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLm1l
ZGlhVHJhY2tJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkKTsKLSAgICBpZiAo
cnRjU3RhdHMudHJhbnNwb3J0X2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMudHJhbnNw
b3J0SWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFuc3BvcnRfaWQpOwotICAgIGlmIChy
dGNTdGF0cy5jb2RlY19pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmNvZGVjSWQgPSBm
cm9tU3RkU3RyaW5nKCpydGNTdGF0cy5jb2RlY19pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZpcl9j
b3VudC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZpckNvdW50ID0gKnJ0Y1N0YXRzLmZp
cl9jb3VudDsKLSAgICBpZiAocnRjU3RhdHMucGxpX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMucGxpQ291bnQgPSAqcnRjU3RhdHMucGxpX2NvdW50OwotICAgIGlmIChydGNTdGF0
cy5uYWNrX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubmFja0NvdW50ID0gKnJ0
Y1N0YXRzLm5hY2tfY291bnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnNsaV9jb3VudC5pc19kZWZpbmVk
KCkpCi0gICAgICAgIHN0YXRzLnNsaUNvdW50ID0gKnJ0Y1N0YXRzLnNsaV9jb3VudDsKLSAgICBp
ZiAocnRjU3RhdHMucXBfc3VtLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucXBTdW0gPSAq
cnRjU3RhdHMucXBfc3VtOwotICAgIHN0YXRzLnFwU3VtID0gMDsKLX0KLQotc3RhdGljIGlubGlu
ZSB2b2lkIGZpbGxJbmJvdW5kUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkluYm91bmRS
VFBTdHJlYW1TdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0
YXRzJiBydGNTdGF0cykKLXsKLSAgICBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoc3RhdHMsIHJ0Y1N0
YXRzKTsKLQotICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkK
LSAgICAgICAgc3RhdHMucGFja2V0c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnBhY2tldHNfcmVjZWl2
ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMuYnl0ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKLSAgICBp
ZiAocnRjU3RhdHMucGFja2V0c19sb3N0LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucGFj
a2V0c0xvc3QgPSAqcnRjU3RhdHMucGFja2V0c19sb3N0OwotICAgIGlmIChydGNTdGF0cy5qaXR0
ZXIuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5qaXR0ZXIgPSAqcnRjU3RhdHMuaml0dGVy
OwotICAgIGlmIChydGNTdGF0cy5mcmFjdGlvbl9sb3N0LmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuZnJhY3Rpb25Mb3N0ID0gKnJ0Y1N0YXRzLmZyYWN0aW9uX2xvc3Q7Ci0gICAgaWYgKHJ0
Y1N0YXRzLnBhY2tldHNfZGlzY2FyZGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucGFj
a2V0c0Rpc2NhcmRlZCA9ICpydGNTdGF0cy5wYWNrZXRzX2Rpc2NhcmRlZDsKLSAgICBpZiAocnRj
U3RhdHMucGFja2V0c19yZXBhaXJlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhY2tl
dHNSZXBhaXJlZCA9ICpydGNTdGF0cy5wYWNrZXRzX3JlcGFpcmVkOwotICAgIGlmIChydGNTdGF0
cy5idXJzdF9wYWNrZXRzX2xvc3QuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5idXJzdFBh
Y2tldHNMb3N0ID0gKnJ0Y1N0YXRzLmJ1cnN0X3BhY2tldHNfbG9zdDsKLSAgICBpZiAocnRjU3Rh
dHMuYnVyc3RfcGFja2V0c19kaXNjYXJkZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5i
dXJzdFBhY2tldHNEaXNjYXJkZWQgPSAqcnRjU3RhdHMuYnVyc3RfcGFja2V0c19kaXNjYXJkZWQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2xvc3NfY291bnQuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5idXJzdExvc3NDb3VudCA9ICpydGNTdGF0cy5idXJzdF9sb3NzX2NvdW50OwotICAg
IGlmIChydGNTdGF0cy5idXJzdF9kaXNjYXJkX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuYnVyc3REaXNjYXJkQ291bnQgPSAqcnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9jb3VudDsK
LSAgICBpZiAocnRjU3RhdHMuYnVyc3RfbG9zc19yYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuYnVyc3RMb3NzUmF0ZSA9ICpydGNTdGF0cy5idXJzdF9sb3NzX3JhdGU7Ci0gICAgaWYg
KHJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfcmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LmJ1cnN0RGlzY2FyZFJhdGUgPSAqcnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9yYXRlOwotICAgIGlm
IChydGNTdGF0cy5nYXBfbG9zc19yYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZ2Fw
TG9zc1JhdGUgPSAqcnRjU3RhdHMuZ2FwX2xvc3NfcmF0ZTsKLSAgICBpZiAocnRjU3RhdHMuZ2Fw
X2Rpc2NhcmRfcmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmdhcERpc2NhcmRSYXRl
ID0gKnJ0Y1N0YXRzLmdhcF9kaXNjYXJkX3JhdGU7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19k
ZWNvZGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpydGNT
dGF0cy5mcmFtZXNfZGVjb2RlZDsKLX0KKyAgICBhdXRvIGNvbGxlY3RvciA9IExpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZXBvcnQpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkgfHwgIXJlcG9ydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpP
dXRib3VuZFJUUFN0cmVhbVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENPdXRib3VuZFJU
UFN0cmVhbVN0YXRzJiBydGNTdGF0cykKLXsKLSAgICBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoc3Rh
dHMsIHJ0Y1N0YXRzKTsKLQotICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX3NlbnQuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5wYWNrZXRzU2VudCA9ICpydGNTdGF0cy5wYWNrZXRzX3NlbnQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0
cy5ieXRlc1NlbnQgPSAqcnRjU3RhdHMuYnl0ZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMudGFy
Z2V0X2JpdHJhdGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy50YXJnZXRCaXRyYXRlID0g
KnJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlOwotICAgIGlmIChydGNTdGF0cy5mcmFtZXNfZW5jb2Rl
ZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZyYW1lc0VuY29kZWQgPSAqcnRjU3RhdHMu
ZnJhbWVzX2VuY29kZWQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDTWVkaWFTdHJl
YW1UcmFja1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpNZWRpYVN0cmVhbVRyYWNrU3RhdHMmIHN0YXRz
LCBjb25zdCB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyYgcnRjU3RhdHMpCi17Ci0g
ICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAgICBpZiAocnRjU3RhdHMudHJh
Y2tfaWRlbnRpZmllci5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnRyYWNrSWRlbnRpZmll
ciA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIpOwotICAgIGlmIChy
dGNTdGF0cy5yZW1vdGVfc291cmNlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmVtb3Rl
U291cmNlID0gKnJ0Y1N0YXRzLnJlbW90ZV9zb3VyY2U7Ci0gICAgaWYgKHJ0Y1N0YXRzLmVuZGVk
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZW5kZWQgPSAqcnRjU3RhdHMuZW5kZWQ7Ci0g
ICAgaWYgKHJ0Y1N0YXRzLmRldGFjaGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZGV0
YWNoZWQgPSAqcnRjU3RhdHMuZGV0YWNoZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lX3dpZHRo
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVXaWR0aCA9ICpydGNTdGF0cy5mcmFt
ZV93aWR0aDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVfaGVpZ2h0LmlzX2RlZmluZWQoKSkKLSAg
ICAgICAgc3RhdHMuZnJhbWVIZWlnaHQgPSAqcnRjU3RhdHMuZnJhbWVfaGVpZ2h0OwotICAgIGlm
IChydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29uZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LmZyYW1lc1BlclNlY29uZCA9ICpydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29uZDsKLSAgICBpZiAo
cnRjU3RhdHMuZnJhbWVzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mcmFtZXNT
ZW50ID0gKnJ0Y1N0YXRzLmZyYW1lc19zZW50OwotICAgIGlmIChydGNTdGF0cy5mcmFtZXNfcmVj
ZWl2ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mcmFtZXNSZWNlaXZlZCA9ICpydGNT
dGF0cy5mcmFtZXNfcmVjZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19kZWNvZGVkLmlz
X2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpydGNTdGF0cy5mcmFt
ZXNfZGVjb2RlZDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2Ryb3BwZWQuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5mcmFtZXNEcm9wcGVkID0gKnJ0Y1N0YXRzLmZyYW1lc19kcm9wcGVk
OwotICAgIGlmIChydGNTdGF0cy5wYXJ0aWFsX2ZyYW1lc19sb3N0LmlzX2RlZmluZWQoKSkKLSAg
ICAgICAgc3RhdHMucGFydGlhbEZyYW1lc0xvc3QgPSAqcnRjU3RhdHMucGFydGlhbF9mcmFtZXNf
bG9zdDsKLSAgICBpZiAocnRjU3RhdHMuZnVsbF9mcmFtZXNfbG9zdC5pc19kZWZpbmVkKCkpCi0g
ICAgICAgIHN0YXRzLmZ1bGxGcmFtZXNMb3N0ID0gKnJ0Y1N0YXRzLmZ1bGxfZnJhbWVzX2xvc3Q7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmF1ZGlvX2xldmVsLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMuYXVkaW9MZXZlbCA9ICpydGNTdGF0cy5hdWRpb19sZXZlbDsKLSAgICBpZiAocnRjU3RhdHMu
ZWNob19yZXR1cm5fbG9zcy5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmVjaG9SZXR1cm5M
b3NzID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3M7Ci0gICAgaWYgKHJ0Y1N0YXRzLmVjaG9f
cmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5lY2hv
UmV0dXJuTG9zc0VuaGFuY2VtZW50ID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5j
ZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDRGF0YUNoYW5uZWxTdGF0cyhS
VENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRD
RGF0YUNoYW5uZWxTdGF0cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBy
dGNTdGF0cyk7Ci0KLSAgICBpZiAocnRjU3RhdHMubGFiZWwuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5sYWJlbCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxhYmVsKTsKLSAgICBpZiAo
cnRjU3RhdHMucHJvdG9jb2wuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5wcm90b2NvbCA9
IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnByb3RvY29sKTsKLSAgICBpZiAocnRjU3RhdHMuZGF0
YWNoYW5uZWxpZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmRhdGFjaGFubmVsaWQgPSAq
cnRjU3RhdHMuZGF0YWNoYW5uZWxpZDsKLSAgICBpZiAocnRjU3RhdHMuc3RhdGUuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5zdGF0ZSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnN0YXRl
KTsKLSAgICBpZiAocnRjU3RhdHMubWVzc2FnZXNfc2VudC5pc19kZWZpbmVkKCkpCi0gICAgICAg
IHN0YXRzLm1lc3NhZ2VzU2VudCA9ICpydGNTdGF0cy5tZXNzYWdlc19zZW50OwotICAgIGlmIChy
dGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnl0ZXNTZW50
ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLm1lc3NhZ2VzX3JlY2Vp
dmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubWVzc2FnZXNSZWNlaXZlZCA9ICpydGNT
dGF0cy5tZXNzYWdlc19yZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQu
aXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLmJ5
dGVzX3JlY2VpdmVkOwotfQotCi1zdGF0aWMgaW5saW5lIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5k
aWRhdGVQYWlyU3RhdGUgaWNlQ2FuZGlkYXRlUGFpclN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dGF0ZSkKLXsKLSAgICBpZiAoc3RhdGUgPT0gImZyb3plbiIpCi0gICAgICAgIHJldHVybiBSVENT
dGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Ci0gICAgaWYgKHN0YXRl
ID09ICJ3YWl0aW5nIikKLSAgICAgICAgcmV0dXJuIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRh
dGVQYWlyU3RhdGU6OldhaXRpbmc7Ci0gICAgaWYgKHN0YXRlID09ICJpbi1wcm9ncmVzcyIpCi0g
ICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpJbnBy
b2dyZXNzOwotICAgIGlmIChzdGF0ZSA9PSAiZmFpbGVkIikKLSAgICAgICAgcmV0dXJuIFJUQ1N0
YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkZhaWxlZDsKLSAgICBpZiAoc3RhdGUg
PT0gInN1Y2NlZWRlZCIpCi0gICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlk
YXRlUGFpclN0YXRlOjpTdWNjZWVkZWQ7Ci0gICAgaWYgKHN0YXRlID09ICJjYW5jZWxsZWQiKQot
ICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6Q2Fu
Y2VsbGVkOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSVENTdGF0c1Jl
cG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
dm9pZCBmaWxsUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5k
aWRhdGVQYWlyU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0ljZUNhbmRpZGF0ZVBhaXJT
dGF0cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0K
LSAgICBpZiAocnRjU3RhdHMudHJhbnNwb3J0X2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMudHJhbnNwb3J0SWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFuc3BvcnRfaWQpOwot
ICAgIGlmIChydGNTdGF0cy5sb2NhbF9jYW5kaWRhdGVfaWQuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5sb2NhbENhbmRpZGF0ZUlkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMubG9jYWxf
Y2FuZGlkYXRlX2lkKTsKLSAgICBpZiAocnRjU3RhdHMucmVtb3RlX2NhbmRpZGF0ZV9pZC5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnJlbW90ZUNhbmRpZGF0ZUlkID0gZnJvbVN0ZFN0cmlu
ZygqcnRjU3RhdHMucmVtb3RlX2NhbmRpZGF0ZV9pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLnN0YXRl
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuc3RhdGUgPSBpY2VDYW5kaWRhdGVQYWlyU3Rh
dGUoKnJ0Y1N0YXRzLnN0YXRlKTsKLQotICAgIGlmIChydGNTdGF0cy5wcmlvcml0eS5pc19kZWZp
bmVkKCkpCi0gICAgICAgIHN0YXRzLnByaW9yaXR5ID0gKnJ0Y1N0YXRzLnByaW9yaXR5OwotICAg
IGlmIChydGNTdGF0cy5ub21pbmF0ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ub21p
bmF0ZWQgPSAqcnRjU3RhdHMubm9taW5hdGVkOwotICAgIGlmIChydGNTdGF0cy53cml0YWJsZS5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLndyaXRhYmxlID0gKnJ0Y1N0YXRzLndyaXRhYmxl
OwotICAgIGlmIChydGNTdGF0cy5yZWFkYWJsZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LnJlYWRhYmxlID0gKnJ0Y1N0YXRzLnJlYWRhYmxlOwotCi0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVz
X3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ieXRlc1NlbnQgPSAqcnRjU3RhdHMu
Ynl0ZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVk
OwotICAgIGlmIChydGNTdGF0cy50b3RhbF9yb3VuZF90cmlwX3RpbWUuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy50b3RhbFJvdW5kVHJpcFRpbWUgPSAqcnRjU3RhdHMudG90YWxfcm91bmRf
dHJpcF90aW1lOwotICAgIGlmIChydGNTdGF0cy5jdXJyZW50X3JvdW5kX3RyaXBfdGltZS5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmN1cnJlbnRSb3VuZFRyaXBUaW1lID0gKnJ0Y1N0YXRz
LmN1cnJlbnRfcm91bmRfdHJpcF90aW1lOwotICAgIGlmIChydGNTdGF0cy5hdmFpbGFibGVfb3V0
Z29pbmdfYml0cmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmF2YWlsYWJsZU91dGdv
aW5nQml0cmF0ZSA9ICpydGNTdGF0cy5hdmFpbGFibGVfb3V0Z29pbmdfYml0cmF0ZTsKLSAgICBp
ZiAocnRjU3RhdHMuYXZhaWxhYmxlX2luY29taW5nX2JpdHJhdGUuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5hdmFpbGFibGVJbmNvbWluZ0JpdHJhdGUgPSAqcnRjU3RhdHMuYXZhaWxhYmxl
X2luY29taW5nX2JpdHJhdGU7Ci0KLSAgICBpZiAocnRjU3RhdHMucmVxdWVzdHNfcmVjZWl2ZWQu
aXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5yZXF1ZXN0c1JlY2VpdmVkID0gKnJ0Y1N0YXRz
LnJlcXVlc3RzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5yZXF1ZXN0c19zZW50LmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmVxdWVzdHNTZW50ID0gKnJ0Y1N0YXRzLnJlcXVlc3Rz
X3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkp
Ci0gICAgICAgIHN0YXRzLnJlc3BvbnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19y
ZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5yZXNwb25zZXNTZW50ID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19zZW50Owot
Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMucmV0cmFuc21pc3Npb25zUmVjZWl2ZWQgPSAqcnRjU3RhdHMucmVxdWVzdHNfcmVj
ZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5yZXRyYW5zbWlzc2lvbnNTZW50ID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3NlbnQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAg
ICAgIHN0YXRzLmNvbnNlbnRSZXF1ZXN0c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19y
ZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVzdHNTZW50ID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19z
ZW50OwotICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5jb25zZW50UmVzcG9uc2VzUmVjZWl2ZWQgPSAqcnRjU3RhdHMucmVzcG9u
c2VzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfc2VudC5pc19kZWZpbmVk
KCkpCi0gICAgICAgIHN0YXRzLmNvbnNlbnRSZXNwb25zZXNTZW50ID0gKnJ0Y1N0YXRzLnJlc3Bv
bnNlc19zZW50OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0NlcnRpZmljYXRlU3Rh
dHMoUlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6
OlJUQ0NlcnRpZmljYXRlU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIGZpbGxSVENTdGF0cyhzdGF0
cywgcnRjU3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50LmlzX2RlZmluZWQo
KSkKLSAgICAgICAgc3RhdHMuZmluZ2VycHJpbnQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5m
aW5nZXJwcmludCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50X2FsZ29yaXRobS5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZpbmdlcnByaW50QWxnb3JpdGhtID0gZnJvbVN0ZFN0
cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnRfYWxnb3JpdGhtKTsKLSAgICBpZiAocnRjU3RhdHMu
YmFzZTY0X2NlcnRpZmljYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYmFzZTY0Q2Vy
dGlmaWNhdGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5iYXNlNjRfY2VydGlmaWNhdGUpOwot
ICAgIGlmIChydGNTdGF0cy5pc3N1ZXJfY2VydGlmaWNhdGVfaWQuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5pc3N1ZXJDZXJ0aWZpY2F0ZUlkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMu
aXNzdWVyX2NlcnRpZmljYXRlX2lkKTsKLX0KLQotdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpTdGF0c0NvbGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0c1JlcG9ydD4mIHJ0Y1JlcG9ydCkKLXsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gcnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yPih0aGlzKSwgcnRjUmVwb3J0XSB7Ci0gICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2VuZHBvaW50LT5pc1N0b3BwZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHJlcG9ydCA9IFJUQ1N0YXRzUmVwb3J0OjpjcmVh
dGUoKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9lbmRwb2ludC0+bV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuZ2V0U3RhdHNTdWNjZWVkZWQocHJvdGVjdGVkVGhpcy0+bV9wcm9taXNlLCByZXBv
cnQuY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUKHJlcG9ydC0+YmFja2luZ01hcCgpKTsKLQot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJ0Y1N0YXRzIDogKnJ0Y1JlcG9ydCkgewotICAgICAg
ICAgICAgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1T
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6SW5ib3VuZFJU
UFN0cmVhbVN0YXRzIHN0YXRzOwotICAgICAgICAgICAgICAgIGZpbGxJbmJvdW5kUlRQU3RyZWFt
U3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVh
bVN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElE
TERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6OkluYm91bmRSVFBTdHJlYW1TdGF0cz4+KFdURk1v
dmUoc3RhdHMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdl
YnJ0Yzo6UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAg
ICBSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSVFBTdHJlYW1TdGF0cyBzdGF0czsKLSAgICAgICAg
ICAgICAgICBmaWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29u
c3Qgd2VicnRjOjpSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAg
ICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6
Ok91dGJvdW5kUlRQU3RyZWFtU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tT
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6TWVkaWFTdHJl
YW1UcmFja1N0YXRzIHN0YXRzOwotICAgICAgICAgICAgICAgIGZpbGxSVENNZWRpYVN0cmVhbVRy
YWNrU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDTWVkaWFTdHJlYW1U
cmFja1N0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRz
PElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6Ok1lZGlhU3RyZWFtVHJhY2tTdGF0cz4+KFdU
Rk1vdmUoc3RhdHMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09
IHdlYnJ0Yzo6UlRDRGF0YUNoYW5uZWxTdGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBS
VENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cyBzdGF0czsKLSAgICAgICAgICAgICAgICBm
aWxsUlRDRGF0YUNoYW5uZWxTdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpS
VENEYXRhQ2hhbm5lbFN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQt
PmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFubmVsU3RhdHM+
PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUo
KSA9PSB3ZWJydGM6OlJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0czo6a1R5cGUpIHsKLSAgICAgICAg
ICAgICAgICBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzIHN0YXRzOwotICAg
ICAgICAgICAgICAgIGZpbGxSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMoc3RhdHMsIHN0YXRpY19j
YXN0PGNvbnN0IHdlYnJ0Yzo6UlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzJj4ocnRjU3RhdHMpKTsK
LSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNS
ZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDQ2VydGlmaWNhdGVT
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6Q2VydGlmaWNh
dGVTdGF0cyBzdGF0czsKLSAgICAgICAgICAgICAgICBmaWxsUlRDQ2VydGlmaWNhdGVTdGF0cyhz
dGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0YXRzJj4ocnRj
U3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8
UlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZh
Y2U8UlRDU3RhdHNSZXBvcnQ+PihyZXBvcnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0pOworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENT
aWduYWxpbmdUaHJlYWQoW3RoaXMsIGNvbGxlY3RvciA9IFdURk1vdmUoY29sbGVjdG9yKV0gewor
ICAgICAgICBpZiAobV9iYWNrZW5kKQorICAgICAgICAgICAgbV9iYWNrZW5kLT5HZXRTdGF0cyhj
b2xsZWN0b3IuZ2V0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmgKaW5kZXggNTIzMzE2ODFiZjc4ZmEyNjdiNWQxZGIwZGU0ZTIxYTI2M2Nm
MzY1OS4uOTAzZTQ1YmI4MzAzMTZiODdjODc0MGYxMjY4Y2JmZDMzNzRhMzA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
biYpOwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihjb25zdCBSVENPZmZlck9wdGlvbnMmKTsKICAg
ICB2b2lkIGRvQ3JlYXRlQW5zd2VyKCk7Ci0gICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRy
YWNrKiwgY29uc3QgRGVmZXJyZWRQcm9taXNlJik7CisgICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0
cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAgICAgYm9vbCBhZGRJY2VDYW5kaWRhdGUod2Vi
cnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UmIGNhbmRpZGF0ZSkgeyByZXR1cm4gbV9iYWNrZW5k
LT5BZGRJY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7IH0KIApAQCAtMTk2LDIwICsxOTYsNiBAQCBw
cml2YXRlOgogICAgICAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OwogICAg
IH07CiAKLSAgICBjbGFzcyBTdGF0c0NvbGxlY3RvciA6IHB1YmxpYyB3ZWJydGM6OlJUQ1N0YXRz
Q29sbGVjdG9yQ2FsbGJhY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKFJlZjxMaWJXZWJSVENNZWRpYUVuZHBv
aW50PiYmIGVuZHBvaW50LCBjb25zdCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIE1lZGlhU3Ry
ZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFN0YXRz
Q29sbGVjdG9yPihXVEZNb3ZlKGVuZHBvaW50KSwgcHJvbWlzZSwgdHJhY2spOyB9Ci0KLSAgICAg
ICAgU3RhdHNDb2xsZWN0b3IoUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+JiYsIGNvbnN0IERl
ZmVycmVkUHJvbWlzZSYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgT25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qg
d2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKSBmaW5hbDsKLQotICAgICAgICBSZWY8TGliV2ViUlRD
TWVkaWFFbmRwb2ludD4gbV9lbmRwb2ludDsKLSAgICAgICAgY29uc3QgRGVmZXJyZWRQcm9taXNl
JiBtX3Byb21pc2U7Ci0gICAgICAgIFN0cmluZyBtX2lkOwotICAgIH07Ci0KICAgICBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kOwogICAgIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBtX3BlZXJDb25uZWN0aW9uRmFj
dG9yeTsKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gbV9iYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjJiYTE1MGM0YjQ2NGRjMjlhYmY2MjJlNzliMTlm
NmQ4ZmMzMjE3Yy4uYWM3Mzk1ZDFhNzQwMTM1MmQyMjRlZTc2MmRkMTcwNzkyNzg5YjAyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkljZUNhbmRpZGF0ZS5oIgotI2luY2x1ZGUgIkpTUlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIKQEAg
LTEyOCwyNiArMTI3LDcgQEAgYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24KIAogdm9pZCBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNr
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fZW5kcG9pbnQt
PmlzU3RvcHBlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBzdGF0c1Byb21pc2Ug
PSBwcm9taXNlLmdldCgpOwotICAgIG1fc3RhdHNQcm9taXNlcy5hZGQoJnN0YXRzUHJvbWlzZSwg
V1RGTW92ZShwcm9taXNlKSk7Ci0gICAgbV9lbmRwb2ludC0+Z2V0U3RhdHModHJhY2ssIHN0YXRz
UHJvbWlzZSk7Ci19Ci0KLXZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRT
dGF0c1N1Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIFJlZjxSVENTdGF0
c1JlcG9ydD4mJiByZXBvcnQpCi17Ci0gICAgYXV0byBzdGF0c1Byb21pc2UgPSBtX3N0YXRzUHJv
bWlzZXMudGFrZSgmcHJvbWlzZSk7Ci0gICAgQVNTRVJUKHN0YXRzUHJvbWlzZSk7Ci0gICAgc3Rh
dHNQcm9taXNlLnZhbHVlKCktPnJlc29sdmU8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj4o
V1RGTW92ZShyZXBvcnQpKTsKLX0KLQotdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmdldFN0YXRzRmFpbGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0
aW9uJiYgZXhjZXB0aW9uKQotewotICAgIGF1dG8gc3RhdHNQcm9taXNlID0gbV9zdGF0c1Byb21p
c2VzLnRha2UoJnByb21pc2UpOwotICAgIEFTU0VSVChzdGF0c1Byb21pc2UpOwotICAgIHN0YXRz
UHJvbWlzZS52YWx1ZSgpLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICBtX2VuZHBv
aW50LT5nZXRTdGF0cyh0cmFjaywgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTIwMCw3ICsxODAsNiBAQCB2b2lkIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKCkKIAogICAgIG1fYXVkaW9Tb3VyY2Vz
LmNsZWFyKCk7CiAgICAgbV92aWRlb1NvdXJjZXMuY2xlYXIoKTsKLSAgICBtX3N0YXRzUHJvbWlz
ZXMuY2xlYXIoKTsKICAgICBtX3BlbmRpbmdSZWNlaXZlcnMuY2xlYXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBm
YTBmMDEzNzA5NTI1MjYxMmY0YjBlYjYxMTY0ODRkMTRmYTMzMTAxLi45MWUzMjkwN2I3NTM3YjNk
NDgzYjRjNTgxZTA0ZGYzNzgyNzM3M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtODYsNyArODYsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYWRkVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4m
Jik7CiAKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYs
IFJlZjxSVENTdGF0c1JlcG9ydD4mJik7Ci0gICAgdm9pZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBE
ZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAKICAgICBib29sIG5vdGlmeUFkZGVkVHJh
Y2soUlRDUnRwU2VuZGVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRD
UnRwU2VuZGVyJikgZmluYWw7CkBAIC0xMTIsNyArMTExLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPj4gbV9wZW5k
aW5nQ2FuZGlkYXRlczsKICAgICBWZWN0b3I8UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZT4+IG1fYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlPj4gbV92aWRlb1NvdXJjZXM7Ci0gICAgSGFzaE1hcDxjb25zdCBEZWZlcnJlZFByb21p
c2UqLCBSZWY8RGVmZXJyZWRQcm9taXNlPj4gbV9zdGF0c1Byb21pc2VzOwogICAgIFZlY3RvcjxS
ZWY8UlRDUnRwUmVjZWl2ZXI+PiBtX3BlbmRpbmdSZWNlaXZlcnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENT
dGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZjE1Mjhl
M2YwNWM3NTM1MzQ0NmU1MTFjZmJhMzNlMjMyMjk5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmNwcApAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaCIKKworI2lmIFVTRShM
SUJXRUJSVEMpCisKKyNpbmNsdWRlICJKU1JUQ1N0YXRzUmVwb3J0LmgiCisjaW5jbHVkZSAiUGVy
Zm9ybWFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cihDb2xsZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIDogbV9jYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSkKK3sKK30KKworTGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6On5MaWJXZWJSVENT
dGF0c0NvbGxlY3RvcigpCit7CisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayld
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgfSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQor
eworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3Ro
KCkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ1N0YXRzKFJUQ1N0YXRzUmVwb3J0
OjpTdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHMmIHJ0Y1N0YXRzKQoreworICAg
IHN0YXRzLnRpbWVzdGFtcCA9IFBlcmZvcm1hbmNlOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihTZWNv
bmRzOjpmcm9tTWljcm9zZWNvbmRzKHJ0Y1N0YXRzLnRpbWVzdGFtcF91cygpKSkubWlsbGlzZWNv
bmRzKCk7CisgICAgc3RhdHMuaWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1N0YXRzLmlkKCkpOworfQor
CitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0
OjpSVENSVFBTdHJlYW1TdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDUlRQU3RyZWFtU3Rh
dHMmIHJ0Y1N0YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisg
ICAgaWYgKHJ0Y1N0YXRzLnNzcmMuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5zc3JjID0g
KnJ0Y1N0YXRzLnNzcmM7CisgICAgaWYgKHJ0Y1N0YXRzLmFzc29jaWF0ZV9zdGF0c19pZC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmFzc29jaWF0ZVN0YXRzSWQgPSBmcm9tU3RkU3RyaW5n
KCpydGNTdGF0cy5hc3NvY2lhdGVfc3RhdHNfaWQpOworICAgIGlmIChydGNTdGF0cy5pc19yZW1v
dGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5pc1JlbW90ZSA9ICpydGNTdGF0cy5pc19y
ZW1vdGU7CisgICAgaWYgKHJ0Y1N0YXRzLm1lZGlhX3R5cGUuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5tZWRpYVR5cGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5tZWRpYV90eXBlKTsK
KyAgICBpZiAocnRjU3RhdHMudHJhY2tfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5t
ZWRpYVRyYWNrSWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFja19pZCk7CisgICAgaWYg
KHJ0Y1N0YXRzLnRyYW5zcG9ydF9pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnRyYW5z
cG9ydElkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMudHJhbnNwb3J0X2lkKTsKKyAgICBpZiAo
cnRjU3RhdHMuY29kZWNfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb2RlY0lkID0g
ZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuY29kZWNfaWQpOworICAgIGlmIChydGNTdGF0cy5maXJf
Y291bnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5maXJDb3VudCA9ICpydGNTdGF0cy5m
aXJfY291bnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnBsaV9jb3VudC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLnBsaUNvdW50ID0gKnJ0Y1N0YXRzLnBsaV9jb3VudDsKKyAgICBpZiAocnRjU3Rh
dHMubmFja19jb3VudC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLm5hY2tDb3VudCA9ICpy
dGNTdGF0cy5uYWNrX2NvdW50OworICAgIGlmIChydGNTdGF0cy5zbGlfY291bnQuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5zbGlDb3VudCA9ICpydGNTdGF0cy5zbGlfY291bnQ7CisgICAg
aWYgKHJ0Y1N0YXRzLnFwX3N1bS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnFwU3VtID0g
KnJ0Y1N0YXRzLnFwX3N1bTsKKyAgICBzdGF0cy5xcFN1bSA9IDA7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBmaWxsSW5ib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpJbmJvdW5k
UlRQU3RyZWFtU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1T
dGF0cyYgcnRjU3RhdHMpCit7CisgICAgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNT
dGF0cyk7CisKKyAgICBpZiAocnRjU3RhdHMucGFja2V0c19yZWNlaXZlZC5pc19kZWZpbmVkKCkp
CisgICAgICAgIHN0YXRzLnBhY2tldHNSZWNlaXZlZCA9ICpydGNTdGF0cy5wYWNrZXRzX3JlY2Vp
dmVkOworICAgIGlmIChydGNTdGF0cy5ieXRlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLmJ5dGVzUmVjZWl2ZWQgPSAqcnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQ7CisgICAg
aWYgKHJ0Y1N0YXRzLnBhY2tldHNfbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBh
Y2tldHNMb3N0ID0gKnJ0Y1N0YXRzLnBhY2tldHNfbG9zdDsKKyAgICBpZiAocnRjU3RhdHMuaml0
dGVyLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuaml0dGVyID0gKnJ0Y1N0YXRzLmppdHRl
cjsKKyAgICBpZiAocnRjU3RhdHMuZnJhY3Rpb25fbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmZyYWN0aW9uTG9zdCA9ICpydGNTdGF0cy5mcmFjdGlvbl9sb3N0OworICAgIGlmIChy
dGNTdGF0cy5wYWNrZXRzX2Rpc2NhcmRlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBh
Y2tldHNEaXNjYXJkZWQgPSAqcnRjU3RhdHMucGFja2V0c19kaXNjYXJkZWQ7CisgICAgaWYgKHJ0
Y1N0YXRzLnBhY2tldHNfcmVwYWlyZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5wYWNr
ZXRzUmVwYWlyZWQgPSAqcnRjU3RhdHMucGFja2V0c19yZXBhaXJlZDsKKyAgICBpZiAocnRjU3Rh
dHMuYnVyc3RfcGFja2V0c19sb3N0LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnVyc3RQ
YWNrZXRzTG9zdCA9ICpydGNTdGF0cy5idXJzdF9wYWNrZXRzX2xvc3Q7CisgICAgaWYgKHJ0Y1N0
YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMu
YnVyc3RQYWNrZXRzRGlzY2FyZGVkID0gKnJ0Y1N0YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVk
OworICAgIGlmIChydGNTdGF0cy5idXJzdF9sb3NzX2NvdW50LmlzX2RlZmluZWQoKSkKKyAgICAg
ICAgc3RhdHMuYnVyc3RMb3NzQ291bnQgPSAqcnRjU3RhdHMuYnVyc3RfbG9zc19jb3VudDsKKyAg
ICBpZiAocnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9jb3VudC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmJ1cnN0RGlzY2FyZENvdW50ID0gKnJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfY291bnQ7
CisgICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2xvc3NfcmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmJ1cnN0TG9zc1JhdGUgPSAqcnRjU3RhdHMuYnVyc3RfbG9zc19yYXRlOworICAgIGlm
IChydGNTdGF0cy5idXJzdF9kaXNjYXJkX3JhdGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5idXJzdERpc2NhcmRSYXRlID0gKnJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfcmF0ZTsKKyAgICBp
ZiAocnRjU3RhdHMuZ2FwX2xvc3NfcmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmdh
cExvc3NSYXRlID0gKnJ0Y1N0YXRzLmdhcF9sb3NzX3JhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmdh
cF9kaXNjYXJkX3JhdGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5nYXBEaXNjYXJkUmF0
ZSA9ICpydGNTdGF0cy5nYXBfZGlzY2FyZF9yYXRlOworICAgIGlmIChydGNTdGF0cy5mcmFtZXNf
ZGVjb2RlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZyYW1lc0RlY29kZWQgPSAqcnRj
U3RhdHMuZnJhbWVzX2RlY29kZWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsT3V0Ym91
bmRSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYg
c3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYgcnRjU3RhdHMp
Cit7CisgICAgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNTdGF0cyk7CisKKyAgICBp
ZiAocnRjU3RhdHMucGFja2V0c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFj
a2V0c1NlbnQgPSAqcnRjU3RhdHMucGFja2V0c19zZW50OworICAgIGlmIChydGNTdGF0cy5ieXRl
c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRz
LmJ5dGVzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlLmlzX2RlZmluZWQo
KSkKKyAgICAgICAgc3RhdHMudGFyZ2V0Qml0cmF0ZSA9ICpydGNTdGF0cy50YXJnZXRfYml0cmF0
ZTsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2VuY29kZWQuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5mcmFtZXNFbmNvZGVkID0gKnJ0Y1N0YXRzLmZyYW1lc19lbmNvZGVkOworfQorCitz
dGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyhSVENTdGF0c1Jl
cG9ydDo6TWVkaWFTdHJlYW1UcmFja1N0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENNZWRp
YVN0cmVhbVRyYWNrU3RhdHMmIHJ0Y1N0YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywg
cnRjU3RhdHMpOworCisgICAgaWYgKHJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy50cmFja0lkZW50aWZpZXIgPSBmcm9tU3RkU3RyaW5nKCpydGNT
dGF0cy50cmFja19pZGVudGlmaWVyKTsKKyAgICBpZiAocnRjU3RhdHMucmVtb3RlX3NvdXJjZS5p
c19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJlbW90ZVNvdXJjZSA9ICpydGNTdGF0cy5yZW1v
dGVfc291cmNlOworICAgIGlmIChydGNTdGF0cy5lbmRlZC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmVuZGVkID0gKnJ0Y1N0YXRzLmVuZGVkOworICAgIGlmIChydGNTdGF0cy5kZXRhY2hl
ZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmRldGFjaGVkID0gKnJ0Y1N0YXRzLmRldGFj
aGVkOworICAgIGlmIChydGNTdGF0cy5mcmFtZV93aWR0aC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmZyYW1lV2lkdGggPSAqcnRjU3RhdHMuZnJhbWVfd2lkdGg7CisgICAgaWYgKHJ0Y1N0
YXRzLmZyYW1lX2hlaWdodC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZyYW1lSGVpZ2h0
ID0gKnJ0Y1N0YXRzLmZyYW1lX2hlaWdodDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3Blcl9z
ZWNvbmQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mcmFtZXNQZXJTZWNvbmQgPSAqcnRj
U3RhdHMuZnJhbWVzX3Blcl9zZWNvbmQ7CisgICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19zZW50Lmlz
X2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVzU2VudCA9ICpydGNTdGF0cy5mcmFtZXNf
c2VudDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAg
ICAgICAgc3RhdHMuZnJhbWVzUmVjZWl2ZWQgPSAqcnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkOwor
ICAgIGlmIChydGNTdGF0cy5mcmFtZXNfZGVjb2RlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0
YXRzLmZyYW1lc0RlY29kZWQgPSAqcnRjU3RhdHMuZnJhbWVzX2RlY29kZWQ7CisgICAgaWYgKHJ0
Y1N0YXRzLmZyYW1lc19kcm9wcGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVz
RHJvcHBlZCA9ICpydGNTdGF0cy5mcmFtZXNfZHJvcHBlZDsKKyAgICBpZiAocnRjU3RhdHMucGFy
dGlhbF9mcmFtZXNfbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBhcnRpYWxGcmFt
ZXNMb3N0ID0gKnJ0Y1N0YXRzLnBhcnRpYWxfZnJhbWVzX2xvc3Q7CisgICAgaWYgKHJ0Y1N0YXRz
LmZ1bGxfZnJhbWVzX2xvc3QuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mdWxsRnJhbWVz
TG9zdCA9ICpydGNTdGF0cy5mdWxsX2ZyYW1lc19sb3N0OworICAgIGlmIChydGNTdGF0cy5hdWRp
b19sZXZlbC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmF1ZGlvTGV2ZWwgPSAqcnRjU3Rh
dHMuYXVkaW9fbGV2ZWw7CisgICAgaWYgKHJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3MuaXNfZGVm
aW5lZCgpKQorICAgICAgICBzdGF0cy5lY2hvUmV0dXJuTG9zcyA9ICpydGNTdGF0cy5lY2hvX3Jl
dHVybl9sb3NzOworICAgIGlmIChydGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZWNob1JldHVybkxvc3NFbmhhbmNlbWVudCA9
ICpydGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgZmlsbFJUQ0RhdGFDaGFubmVsU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFu
bmVsU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0RhdGFDaGFubmVsU3RhdHMmIHJ0Y1N0
YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisgICAgaWYgKHJ0
Y1N0YXRzLmxhYmVsLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubGFiZWwgPSBmcm9tU3Rk
U3RyaW5nKCpydGNTdGF0cy5sYWJlbCk7CisgICAgaWYgKHJ0Y1N0YXRzLnByb3RvY29sLmlzX2Rl
ZmluZWQoKSkKKyAgICAgICAgc3RhdHMucHJvdG9jb2wgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0
cy5wcm90b2NvbCk7CisgICAgaWYgKHJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQuaXNfZGVmaW5lZCgp
KQorICAgICAgICBzdGF0cy5kYXRhY2hhbm5lbGlkID0gKnJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQ7
CisgICAgaWYgKHJ0Y1N0YXRzLnN0YXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuc3Rh
dGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5zdGF0ZSk7CisgICAgaWYgKHJ0Y1N0YXRzLm1l
c3NhZ2VzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5tZXNzYWdlc1NlbnQgPSAq
cnRjU3RhdHMubWVzc2FnZXNfc2VudDsKKyAgICBpZiAocnRjU3RhdHMuYnl0ZXNfc2VudC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmJ5dGVzU2VudCA9ICpydGNTdGF0cy5ieXRlc19zZW50
OworICAgIGlmIChydGNTdGF0cy5tZXNzYWdlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLm1lc3NhZ2VzUmVjZWl2ZWQgPSAqcnRjU3RhdHMubWVzc2FnZXNfcmVjZWl2ZWQ7
CisgICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAg
c3RhdHMuYnl0ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKK30KKworc3Rh
dGljIGlubGluZSBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlIGljZUNhbmRp
ZGF0ZVBhaXJTdGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgc3RhdGUpCit7CisgICAgaWYgKHN0YXRl
ID09ICJmcm96ZW4iKQorICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0
ZVBhaXJTdGF0ZTo6RnJvemVuOworICAgIGlmIChzdGF0ZSA9PSAid2FpdGluZyIpCisgICAgICAg
IHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpXYWl0aW5nOwor
ICAgIGlmIChzdGF0ZSA9PSAiaW4tcHJvZ3Jlc3MiKQorICAgICAgICByZXR1cm4gUlRDU3RhdHNS
ZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6SW5wcm9ncmVzczsKKyAgICBpZiAoc3RhdGUg
PT0gImZhaWxlZCIpCisgICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRl
UGFpclN0YXRlOjpGYWlsZWQ7CisgICAgaWYgKHN0YXRlID09ICJzdWNjZWVkZWQiKQorICAgICAg
ICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6U3VjY2VlZGVk
OworICAgIGlmIChzdGF0ZSA9PSAiY2FuY2VsbGVkIikKKyAgICAgICAgcmV0dXJuIFJUQ1N0YXRz
UmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkNhbmNlbGxlZDsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJT
dGF0ZTo6RnJvemVuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0ljZUNhbmRpZGF0
ZVBhaXJTdGF0cyhSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzJiBzdGF0cywg
Y29uc3Qgd2VicnRjOjpSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMmIHJ0Y1N0YXRzKQoreworICAg
IGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisgICAgaWYgKHJ0Y1N0YXRzLnRyYW5z
cG9ydF9pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZnJvbVN0
ZFN0cmluZygqcnRjU3RhdHMudHJhbnNwb3J0X2lkKTsKKyAgICBpZiAocnRjU3RhdHMubG9jYWxf
Y2FuZGlkYXRlX2lkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubG9jYWxDYW5kaWRhdGVJ
ZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxvY2FsX2NhbmRpZGF0ZV9pZCk7CisgICAgaWYg
KHJ0Y1N0YXRzLnJlbW90ZV9jYW5kaWRhdGVfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5yZW1vdGVDYW5kaWRhdGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnJlbW90ZV9jYW5k
aWRhdGVfaWQpOworICAgIGlmIChydGNTdGF0cy5zdGF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLnN0YXRlID0gaWNlQ2FuZGlkYXRlUGFpclN0YXRlKCpydGNTdGF0cy5zdGF0ZSk7CisK
KyAgICBpZiAocnRjU3RhdHMucHJpb3JpdHkuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5w
cmlvcml0eSA9ICpydGNTdGF0cy5wcmlvcml0eTsKKyAgICBpZiAocnRjU3RhdHMubm9taW5hdGVk
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubm9taW5hdGVkID0gKnJ0Y1N0YXRzLm5vbWlu
YXRlZDsKKyAgICBpZiAocnRjU3RhdHMud3JpdGFibGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBz
dGF0cy53cml0YWJsZSA9ICpydGNTdGF0cy53cml0YWJsZTsKKyAgICBpZiAocnRjU3RhdHMucmVh
ZGFibGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZWFkYWJsZSA9ICpydGNTdGF0cy5y
ZWFkYWJsZTsKKworICAgIGlmIChydGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKKyAg
ICAgICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7CisgICAgaWYgKHJ0
Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnl0ZXNS
ZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMudG90
YWxfcm91bmRfdHJpcF90aW1lLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMudG90YWxSb3Vu
ZFRyaXBUaW1lID0gKnJ0Y1N0YXRzLnRvdGFsX3JvdW5kX3RyaXBfdGltZTsKKyAgICBpZiAocnRj
U3RhdHMuY3VycmVudF9yb3VuZF90cmlwX3RpbWUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5jdXJyZW50Um91bmRUcmlwVGltZSA9ICpydGNTdGF0cy5jdXJyZW50X3JvdW5kX3RyaXBfdGlt
ZTsKKyAgICBpZiAocnRjU3RhdHMuYXZhaWxhYmxlX291dGdvaW5nX2JpdHJhdGUuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5hdmFpbGFibGVPdXRnb2luZ0JpdHJhdGUgPSAqcnRjU3RhdHMu
YXZhaWxhYmxlX291dGdvaW5nX2JpdHJhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmF2YWlsYWJsZV9p
bmNvbWluZ19iaXRyYXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYXZhaWxhYmxlSW5j
b21pbmdCaXRyYXRlID0gKnJ0Y1N0YXRzLmF2YWlsYWJsZV9pbmNvbWluZ19iaXRyYXRlOworCisg
ICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAg
c3RhdHMucmVxdWVzdHNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXF1ZXN0c19yZWNlaXZlZDsKKyAg
ICBpZiAocnRjU3RhdHMucmVxdWVzdHNfc2VudC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRz
LnJlcXVlc3RzU2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OworICAgIGlmIChydGNTdGF0
cy5yZXNwb25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZXNwb25z
ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0
YXRzLnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucmVzcG9uc2Vz
U2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKKworICAgIGlmIChydGNTdGF0cy5yZXF1
ZXN0c19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJldHJhbnNtaXNzaW9u
c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkOworICAgIGlmIChydGNTdGF0
cy5yZXF1ZXN0c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucmV0cmFuc21pc3Np
b25zU2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OworICAgIGlmIChydGNTdGF0cy5yZXNw
b25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVz
dHNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0
YXRzLnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuY29uc2VudFJl
cXVlc3RzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKKyAgICBpZiAocnRjU3RhdHMu
cmVzcG9uc2VzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuY29uc2VudFJl
c3BvbnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZDsKKyAgICBpZiAo
cnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25z
ZW50UmVzcG9uc2VzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKK30KKworc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpDZXJ0
aWZpY2F0ZVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0YXRzJiBy
dGNTdGF0cykKK3sKKyAgICBmaWxsUlRDU3RhdHMoc3RhdHMsIHJ0Y1N0YXRzKTsKKworICAgIGlm
IChydGNTdGF0cy5maW5nZXJwcmludC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZpbmdl
cnByaW50ID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnQpOworICAgIGlmIChy
dGNTdGF0cy5maW5nZXJwcmludF9hbGdvcml0aG0uaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5maW5nZXJwcmludEFsZ29yaXRobSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmZpbmdlcnBy
aW50X2FsZ29yaXRobSk7CisgICAgaWYgKHJ0Y1N0YXRzLmJhc2U2NF9jZXJ0aWZpY2F0ZS5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmJhc2U2NENlcnRpZmljYXRlID0gZnJvbVN0ZFN0cmlu
ZygqcnRjU3RhdHMuYmFzZTY0X2NlcnRpZmljYXRlKTsKKyAgICBpZiAocnRjU3RhdHMuaXNzdWVy
X2NlcnRpZmljYXRlX2lkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuaXNzdWVyQ2VydGlm
aWNhdGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmlzc3Vlcl9jZXJ0aWZpY2F0ZV9pZCk7
Cit9Cit2b2lkIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRjUmVw
b3J0KQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBydGM6OnNjb3Bl
ZF9yZWZwdHI8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KHRoaXMpLCBydGNSZXBvcnRdIHsKKyAg
ICAgICAgYXV0byByZXBvcnQgPSBSVENTdGF0c1JlcG9ydDo6Y3JlYXRlKCk7CisgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcy0+bV9jYWxsYmFjayhyZXBvcnQuY29weVJlZigpKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQocmVwb3J0LT5iYWNraW5nTWFwKCkpOworCisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcnRjU3RhdHMgOiAqcnRjUmVwb3J0KSB7CisgICAgICAg
ICAgICBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpJbmJvdW5kUlRQ
U3RyZWFtU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbEluYm91bmRSVFBTdHJlYW1T
dGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENJbmJvdW5kUlRQU3RyZWFt
U3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURM
RGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6SW5ib3VuZFJUUFN0cmVhbVN0YXRzPj4oV1RGTW92
ZShzdGF0cykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2Vi
cnRjOjpSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAg
IFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJUUFN0cmVhbVN0YXRzIHN0YXRzOworICAgICAgICAg
ICAgICAgIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25z
dCB3ZWJydGM6OlJUQ091dGJvdW5kUlRQU3RyZWFtU3RhdHMmPihydGNTdGF0cykpOworICAgICAg
ICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6
T3V0Ym91bmRSVFBTdHJlYW1TdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDTWVkaWFTdHJlYW1UcmFja1N0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpNZWRpYVN0cmVh
bVRyYWNrU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbFJUQ01lZGlhU3RyZWFtVHJh
Y2tTdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENNZWRpYVN0cmVhbVRy
YWNrU3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8
SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6TWVkaWFTdHJlYW1UcmFja1N0YXRzPj4oV1RG
TW92ZShzdGF0cykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0g
d2VicnRjOjpSVENEYXRhQ2hhbm5lbFN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJU
Q1N0YXRzUmVwb3J0OjpEYXRhQ2hhbm5lbFN0YXRzIHN0YXRzOworICAgICAgICAgICAgICAgIGZp
bGxSVENEYXRhQ2hhbm5lbFN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJU
Q0RhdGFDaGFubmVsU3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+
YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cz4+
KFdURk1vdmUoc3RhdHMpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgp
ID09IHdlYnJ0Yzo6UlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzOjprVHlwZSkgeworICAgICAgICAg
ICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdHMgc3RhdHM7CisgICAg
ICAgICAgICAgICAgZmlsbFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyhzdGF0cywgc3RhdGljX2Nh
c3Q8Y29uc3Qgd2VicnRjOjpSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMmPihydGNTdGF0cykpOwor
ICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1Jl
cG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzPj4oV1RGTW92ZShzdGF0cykpOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpDZXJ0aWZpY2F0
ZVN0YXRzIHN0YXRzOworICAgICAgICAgICAgICAgIGZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKHN0
YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0NlcnRpZmljYXRlU3RhdHMmPihydGNT
dGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxS
VENTdGF0c1JlcG9ydDo6Q2VydGlmaWNhdGVTdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworfQorCit9OyAvLyBuYW1lc3BhY2UgV1RGCisK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDRiNzhjMWM2OWI2NDgyNzA3NGNiZWZhYzY2NTNj
NzhhNjc1YWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKwor
I2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRjL3Bj
L3J0Y3N0YXRzY29sbGVjdG9yLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDU3RhdHNSZXBvcnQ7CisKK2NsYXNzIExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yIDogcHVibGljIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JDYWxs
YmFjayB7CitwdWJsaWM6CisgICAgdXNpbmcgQ29sbGVjdG9yQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPGJvb2woUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiYmKT47CisgICAgc3RhdGlj
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKENvbGxl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmpl
Y3Q8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KFdURk1vdmUoY2FsbGJhY2spKTsgfQorCisgICAg
ZXhwbGljaXQgTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IoQ29sbGVjdG9yQ2FsbGJhY2smJik7Cisg
ICAgfkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBPblN0
YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0
YXRzUmVwb3J0PiYpIGZpbmFsOworCisgICAgQ29sbGVjdG9yQ2FsbGJhY2sgbV9jYWxsYmFjazsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZGM0NjBmMWE2NTRhNzRmNWQ5NTZjOTJkNTgyZjA3Yjk4ZWVlZjJmMy4uM2I5ZWZjMDI1
MmFkNGIzMDQ4OWRmMTlmNDQ2OTg1NGZmMTk0OWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4OCw2ICsxMDg4LDcgQEAK
IAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJC
MzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2
MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1l
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcy
NTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJ
NDE3MjlDMTcyMTM4Qzk0QzAwQTM2MzkwIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI5QzE0MjEz
OEM4ODYwMEEzNjM5MCAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgKi87IH07CiAJCTQx
NzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5
M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEy
QjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMz
RDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi87IH07CiAJCTQxNzYxMkIxMUUzQTk5
NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUQxRTNBOTkzQjAw
QzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgKi87IH07CkBAIC03
MjQ2LDYgKzcyNDcsOCBAQAogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFw
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTcyOUMxNDIxMzhDODg2MDBB
MzYzOTAgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwOyBwYXRoID0gbGli
d2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE3MjlDMTYyMTM4Qzg4NzAwQTM2MzkwIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzYx
MkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDsgcGF0aCA9
IGxpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY4MzIsNiArMTY4MzUsOCBAQAogCQkJCTQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBM
aWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8sCiAJCQkJNDE3NjEyQUQxRTNBOTkzQjAwQzNEODFE
IC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgKi8sCiAJCQkJNDE3NjEyQUUx
RTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oICovLAor
CQkJCTQxNzI5QzE0MjEzOEM4ODYwMEEzNjM5MCAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5j
cHAgKi8sCisJCQkJNDE3MjlDMTYyMTM4Qzg4NzAwQTM2MzkwIC8qIExpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGxpYndlYnJ0YzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0zMTQxNSw2ICszMTQyMCw3IEBACiAJCQkJNUNERDgzNjQxRTQzMjVB
MDAwNjIxRTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNzI5
QzE3MjEzOEM5NEMwMEEzNjM5MCAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ1Nzc1RUEyMDQ3MzAzQzAwOERDRTVEIC8qIExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJG
RTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348602</attachid>
            <date>2018-08-30 21:47:22 -0700</date>
            <delta_ts>2018-08-31 13:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189180-20180830214721.patch</filename>
            <type>text/plain</type>
            <size>47843</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uNDJhNDllNTUwZDBmMjQ2Nzk0NDAxMzEwNDlkMjJi
NjY2ZmM3NDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0YXRzIGdhdGhl
cmluZyBvdXQgb2YgTGliV2ViUlRDTWVkaWFFbmRwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBzdGF0cyBnYXRoZXJpbmcgaW4gTGliV2Vi
UlRDU3RhdHNDb2xsZWN0b3IuCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSBsYW1iZGEgZ2l2
ZW4gdG8gdGhlIGNvbGxlY3RvciBpcyBhbHdheXMgY2FsbGVkIGFuZCBkZXN0cm95ZWQgZnJvbSB0
aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIFRoaXMgYWxsb3dzIGNhcHR1cmluZyB0aGUgcHJvbWlz
ZSBoZXJlIGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbnRvIHRoZSBwZWVyIGNvbm5lY3Rpb24gYmFj
a2VuZC4KKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpnZXRTdGF0cyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6Okxp
YldlYlJUQ1N0YXRzQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yOjp+TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
ZnJvbVN0ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsUlRDU3RhdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxJbmJvdW5kUlRQU3RyZWFtU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE91dGJvdW5k
UlRQU3RyZWFtU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJUQ01lZGlhU3RyZWFtVHJh
Y2tTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsUlRDRGF0YUNoYW5uZWxTdGF0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjppY2VDYW5kaWRhdGVQYWlyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmlsbFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxs
UlRDQ2VydGlmaWNhdGVTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENTdGF0c0Nv
bGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMDgtMzAgIE9saXZpYSBCYXJu
ZXR0ICA8b2Jhcm5ldHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzNTQ4OSk6
IGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIGNyYXNoZXMgdW5kZXIg
TmF2aWdhdG9yOjpzaGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmZWY5OTc2MzJhNjhjNDEw
YWYwOThmMDFlYjJjNThjZGZjZGFiNThjLi4yOWJjMDA0MTQ5Mzg3YzE3Njg4MWFhOTcxYWVjYzNl
YzRhODZiZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU2MCw2ICsxNTYwLDcgQEAgaWYg
KFVTRV9MSUJXRUJSVEMpCiAgICAgICAiJHtUSElSRFBBUlRZX0RJUn0vbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwIikKICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJ
RVMgd2VicnRjKQogICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcAogICAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAogICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKICAgICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggYmYxMjBkMDI5Yjk4MGMzNTI4ZmViMDQwOTVhYmEwZTkyNGE3
NmFkNS4uNmExNDM0MjU4NzVmZWMxN2NhNjYyYTBjMTlmYTAyNjA4YmMxYjVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFu
Y2UuaCIKQEAgLTMwNSwyOTkgKzMwNiwxOSBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmRvQ3JlYXRlQW5zd2VyKCkKICAgICBtX2JhY2tlbmQtPkNyZWF0ZUFuc3dlcigmbV9jcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgbnVsbHB0cik7CiB9CiAKLXZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIGNvbnN0IERl
ZmVycmVkUHJvbWlzZSYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0
U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
IHsKLSAgICBhdXRvIGNvbGxlY3RvciA9IFN0YXRzQ29sbGVjdG9yOjpjcmVhdGUoKnRoaXMsIHBy
b21pc2UsIHRyYWNrKTsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFs
aW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbGxlY3RvciA9IFdU
Rk1vdmUoY29sbGVjdG9yKV0gewotICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5k
KQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5HZXRTdGF0cyhjb2xsZWN0
b3IuZ2V0KCkpOwotICAgIH0pOwotfQotCi1MaWJXZWJSVENNZWRpYUVuZHBvaW50OjpTdGF0c0Nv
bGxlY3Rvcjo6U3RhdHNDb2xsZWN0b3IoUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+JiYgZW5k
cG9pbnQsIGNvbnN0IERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgTWVkaWFTdHJlYW1UcmFjayog
dHJhY2spCi0gICAgOiBtX2VuZHBvaW50KFdURk1vdmUoZW5kcG9pbnQpKQotICAgICwgbV9wcm9t
aXNlKHByb21pc2UpCi17Ci0gICAgaWYgKHRyYWNrKQotICAgICAgICBtX2lkID0gdHJhY2stPmlk
KCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDU3RhdHMoUlRDU3RhdHNSZXBvcnQ6
OlN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENTdGF0cyYgcnRjU3RhdHMpCi17Ci0gICAg
c3RhdHMudGltZXN0YW1wID0gUGVyZm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFNlY29u
ZHM6OmZyb21NaWNyb3NlY29uZHMocnRjU3RhdHMudGltZXN0YW1wX3VzKCkpKS5taWxsaXNlY29u
ZHMoKTsKLSAgICBzdGF0cy5pZCA9IGZyb21TdGRTdHJpbmcocnRjU3RhdHMuaWQoKSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6
OlJUQ1JUUFN0cmVhbVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENSVFBTdHJlYW1TdGF0
cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAg
ICBpZiAocnRjU3RhdHMuc3NyYy5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnNzcmMgPSAq
cnRjU3RhdHMuc3NyYzsKLSAgICBpZiAocnRjU3RhdHMuYXNzb2NpYXRlX3N0YXRzX2lkLmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYXNzb2NpYXRlU3RhdHNJZCA9IGZyb21TdGRTdHJpbmco
KnJ0Y1N0YXRzLmFzc29jaWF0ZV9zdGF0c19pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmlzX3JlbW90
ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmlzUmVtb3RlID0gKnJ0Y1N0YXRzLmlzX3Jl
bW90ZTsKLSAgICBpZiAocnRjU3RhdHMubWVkaWFfdHlwZS5pc19kZWZpbmVkKCkpCi0gICAgICAg
IHN0YXRzLm1lZGlhVHlwZSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLm1lZGlhX3R5cGUpOwot
ICAgIGlmIChydGNTdGF0cy50cmFja19pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLm1l
ZGlhVHJhY2tJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkKTsKLSAgICBpZiAo
cnRjU3RhdHMudHJhbnNwb3J0X2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMudHJhbnNw
b3J0SWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFuc3BvcnRfaWQpOwotICAgIGlmIChy
dGNTdGF0cy5jb2RlY19pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmNvZGVjSWQgPSBm
cm9tU3RkU3RyaW5nKCpydGNTdGF0cy5jb2RlY19pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZpcl9j
b3VudC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZpckNvdW50ID0gKnJ0Y1N0YXRzLmZp
cl9jb3VudDsKLSAgICBpZiAocnRjU3RhdHMucGxpX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMucGxpQ291bnQgPSAqcnRjU3RhdHMucGxpX2NvdW50OwotICAgIGlmIChydGNTdGF0
cy5uYWNrX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubmFja0NvdW50ID0gKnJ0
Y1N0YXRzLm5hY2tfY291bnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnNsaV9jb3VudC5pc19kZWZpbmVk
KCkpCi0gICAgICAgIHN0YXRzLnNsaUNvdW50ID0gKnJ0Y1N0YXRzLnNsaV9jb3VudDsKLSAgICBp
ZiAocnRjU3RhdHMucXBfc3VtLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucXBTdW0gPSAq
cnRjU3RhdHMucXBfc3VtOwotICAgIHN0YXRzLnFwU3VtID0gMDsKLX0KLQotc3RhdGljIGlubGlu
ZSB2b2lkIGZpbGxJbmJvdW5kUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkluYm91bmRS
VFBTdHJlYW1TdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0
YXRzJiBydGNTdGF0cykKLXsKLSAgICBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoc3RhdHMsIHJ0Y1N0
YXRzKTsKLQotICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkK
LSAgICAgICAgc3RhdHMucGFja2V0c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnBhY2tldHNfcmVjZWl2
ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMuYnl0ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKLSAgICBp
ZiAocnRjU3RhdHMucGFja2V0c19sb3N0LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucGFj
a2V0c0xvc3QgPSAqcnRjU3RhdHMucGFja2V0c19sb3N0OwotICAgIGlmIChydGNTdGF0cy5qaXR0
ZXIuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5qaXR0ZXIgPSAqcnRjU3RhdHMuaml0dGVy
OwotICAgIGlmIChydGNTdGF0cy5mcmFjdGlvbl9sb3N0LmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuZnJhY3Rpb25Mb3N0ID0gKnJ0Y1N0YXRzLmZyYWN0aW9uX2xvc3Q7Ci0gICAgaWYgKHJ0
Y1N0YXRzLnBhY2tldHNfZGlzY2FyZGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucGFj
a2V0c0Rpc2NhcmRlZCA9ICpydGNTdGF0cy5wYWNrZXRzX2Rpc2NhcmRlZDsKLSAgICBpZiAocnRj
U3RhdHMucGFja2V0c19yZXBhaXJlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhY2tl
dHNSZXBhaXJlZCA9ICpydGNTdGF0cy5wYWNrZXRzX3JlcGFpcmVkOwotICAgIGlmIChydGNTdGF0
cy5idXJzdF9wYWNrZXRzX2xvc3QuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5idXJzdFBh
Y2tldHNMb3N0ID0gKnJ0Y1N0YXRzLmJ1cnN0X3BhY2tldHNfbG9zdDsKLSAgICBpZiAocnRjU3Rh
dHMuYnVyc3RfcGFja2V0c19kaXNjYXJkZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5i
dXJzdFBhY2tldHNEaXNjYXJkZWQgPSAqcnRjU3RhdHMuYnVyc3RfcGFja2V0c19kaXNjYXJkZWQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2xvc3NfY291bnQuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5idXJzdExvc3NDb3VudCA9ICpydGNTdGF0cy5idXJzdF9sb3NzX2NvdW50OwotICAg
IGlmIChydGNTdGF0cy5idXJzdF9kaXNjYXJkX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuYnVyc3REaXNjYXJkQ291bnQgPSAqcnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9jb3VudDsK
LSAgICBpZiAocnRjU3RhdHMuYnVyc3RfbG9zc19yYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuYnVyc3RMb3NzUmF0ZSA9ICpydGNTdGF0cy5idXJzdF9sb3NzX3JhdGU7Ci0gICAgaWYg
KHJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfcmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LmJ1cnN0RGlzY2FyZFJhdGUgPSAqcnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9yYXRlOwotICAgIGlm
IChydGNTdGF0cy5nYXBfbG9zc19yYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZ2Fw
TG9zc1JhdGUgPSAqcnRjU3RhdHMuZ2FwX2xvc3NfcmF0ZTsKLSAgICBpZiAocnRjU3RhdHMuZ2Fw
X2Rpc2NhcmRfcmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmdhcERpc2NhcmRSYXRl
ID0gKnJ0Y1N0YXRzLmdhcF9kaXNjYXJkX3JhdGU7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19k
ZWNvZGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpydGNT
dGF0cy5mcmFtZXNfZGVjb2RlZDsKLX0KKyAgICBhdXRvIGNvbGxlY3RvciA9IExpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZXBvcnQpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+aXNT
dG9wcGVkKCkgfHwgIXJlcG9ydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpP
dXRib3VuZFJUUFN0cmVhbVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENPdXRib3VuZFJU
UFN0cmVhbVN0YXRzJiBydGNTdGF0cykKLXsKLSAgICBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoc3Rh
dHMsIHJ0Y1N0YXRzKTsKLQotICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX3NlbnQuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5wYWNrZXRzU2VudCA9ICpydGNTdGF0cy5wYWNrZXRzX3NlbnQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0
cy5ieXRlc1NlbnQgPSAqcnRjU3RhdHMuYnl0ZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMudGFy
Z2V0X2JpdHJhdGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy50YXJnZXRCaXRyYXRlID0g
KnJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlOwotICAgIGlmIChydGNTdGF0cy5mcmFtZXNfZW5jb2Rl
ZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZyYW1lc0VuY29kZWQgPSAqcnRjU3RhdHMu
ZnJhbWVzX2VuY29kZWQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDTWVkaWFTdHJl
YW1UcmFja1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpNZWRpYVN0cmVhbVRyYWNrU3RhdHMmIHN0YXRz
LCBjb25zdCB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyYgcnRjU3RhdHMpCi17Ci0g
ICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAgICBpZiAocnRjU3RhdHMudHJh
Y2tfaWRlbnRpZmllci5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnRyYWNrSWRlbnRpZmll
ciA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIpOwotICAgIGlmIChy
dGNTdGF0cy5yZW1vdGVfc291cmNlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmVtb3Rl
U291cmNlID0gKnJ0Y1N0YXRzLnJlbW90ZV9zb3VyY2U7Ci0gICAgaWYgKHJ0Y1N0YXRzLmVuZGVk
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZW5kZWQgPSAqcnRjU3RhdHMuZW5kZWQ7Ci0g
ICAgaWYgKHJ0Y1N0YXRzLmRldGFjaGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZGV0
YWNoZWQgPSAqcnRjU3RhdHMuZGV0YWNoZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lX3dpZHRo
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVXaWR0aCA9ICpydGNTdGF0cy5mcmFt
ZV93aWR0aDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVfaGVpZ2h0LmlzX2RlZmluZWQoKSkKLSAg
ICAgICAgc3RhdHMuZnJhbWVIZWlnaHQgPSAqcnRjU3RhdHMuZnJhbWVfaGVpZ2h0OwotICAgIGlm
IChydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29uZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LmZyYW1lc1BlclNlY29uZCA9ICpydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29uZDsKLSAgICBpZiAo
cnRjU3RhdHMuZnJhbWVzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mcmFtZXNT
ZW50ID0gKnJ0Y1N0YXRzLmZyYW1lc19zZW50OwotICAgIGlmIChydGNTdGF0cy5mcmFtZXNfcmVj
ZWl2ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mcmFtZXNSZWNlaXZlZCA9ICpydGNT
dGF0cy5mcmFtZXNfcmVjZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19kZWNvZGVkLmlz
X2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpydGNTdGF0cy5mcmFt
ZXNfZGVjb2RlZDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2Ryb3BwZWQuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5mcmFtZXNEcm9wcGVkID0gKnJ0Y1N0YXRzLmZyYW1lc19kcm9wcGVk
OwotICAgIGlmIChydGNTdGF0cy5wYXJ0aWFsX2ZyYW1lc19sb3N0LmlzX2RlZmluZWQoKSkKLSAg
ICAgICAgc3RhdHMucGFydGlhbEZyYW1lc0xvc3QgPSAqcnRjU3RhdHMucGFydGlhbF9mcmFtZXNf
bG9zdDsKLSAgICBpZiAocnRjU3RhdHMuZnVsbF9mcmFtZXNfbG9zdC5pc19kZWZpbmVkKCkpCi0g
ICAgICAgIHN0YXRzLmZ1bGxGcmFtZXNMb3N0ID0gKnJ0Y1N0YXRzLmZ1bGxfZnJhbWVzX2xvc3Q7
Ci0gICAgaWYgKHJ0Y1N0YXRzLmF1ZGlvX2xldmVsLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMuYXVkaW9MZXZlbCA9ICpydGNTdGF0cy5hdWRpb19sZXZlbDsKLSAgICBpZiAocnRjU3RhdHMu
ZWNob19yZXR1cm5fbG9zcy5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmVjaG9SZXR1cm5M
b3NzID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3M7Ci0gICAgaWYgKHJ0Y1N0YXRzLmVjaG9f
cmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5lY2hv
UmV0dXJuTG9zc0VuaGFuY2VtZW50ID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5j
ZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDRGF0YUNoYW5uZWxTdGF0cyhS
VENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRD
RGF0YUNoYW5uZWxTdGF0cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBy
dGNTdGF0cyk7Ci0KLSAgICBpZiAocnRjU3RhdHMubGFiZWwuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5sYWJlbCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxhYmVsKTsKLSAgICBpZiAo
cnRjU3RhdHMucHJvdG9jb2wuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5wcm90b2NvbCA9
IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnByb3RvY29sKTsKLSAgICBpZiAocnRjU3RhdHMuZGF0
YWNoYW5uZWxpZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmRhdGFjaGFubmVsaWQgPSAq
cnRjU3RhdHMuZGF0YWNoYW5uZWxpZDsKLSAgICBpZiAocnRjU3RhdHMuc3RhdGUuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5zdGF0ZSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnN0YXRl
KTsKLSAgICBpZiAocnRjU3RhdHMubWVzc2FnZXNfc2VudC5pc19kZWZpbmVkKCkpCi0gICAgICAg
IHN0YXRzLm1lc3NhZ2VzU2VudCA9ICpydGNTdGF0cy5tZXNzYWdlc19zZW50OwotICAgIGlmIChy
dGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnl0ZXNTZW50
ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLm1lc3NhZ2VzX3JlY2Vp
dmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubWVzc2FnZXNSZWNlaXZlZCA9ICpydGNT
dGF0cy5tZXNzYWdlc19yZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQu
aXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLmJ5
dGVzX3JlY2VpdmVkOwotfQotCi1zdGF0aWMgaW5saW5lIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5k
aWRhdGVQYWlyU3RhdGUgaWNlQ2FuZGlkYXRlUGFpclN0YXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBz
dGF0ZSkKLXsKLSAgICBpZiAoc3RhdGUgPT0gImZyb3plbiIpCi0gICAgICAgIHJldHVybiBSVENT
dGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Ci0gICAgaWYgKHN0YXRl
ID09ICJ3YWl0aW5nIikKLSAgICAgICAgcmV0dXJuIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRh
dGVQYWlyU3RhdGU6OldhaXRpbmc7Ci0gICAgaWYgKHN0YXRlID09ICJpbi1wcm9ncmVzcyIpCi0g
ICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpJbnBy
b2dyZXNzOwotICAgIGlmIChzdGF0ZSA9PSAiZmFpbGVkIikKLSAgICAgICAgcmV0dXJuIFJUQ1N0
YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkZhaWxlZDsKLSAgICBpZiAoc3RhdGUg
PT0gInN1Y2NlZWRlZCIpCi0gICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlk
YXRlUGFpclN0YXRlOjpTdWNjZWVkZWQ7Ci0gICAgaWYgKHN0YXRlID09ICJjYW5jZWxsZWQiKQot
ICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6Q2Fu
Y2VsbGVkOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSVENTdGF0c1Jl
cG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
dm9pZCBmaWxsUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5k
aWRhdGVQYWlyU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0ljZUNhbmRpZGF0ZVBhaXJT
dGF0cyYgcnRjU3RhdHMpCi17Ci0gICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0K
LSAgICBpZiAocnRjU3RhdHMudHJhbnNwb3J0X2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMudHJhbnNwb3J0SWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFuc3BvcnRfaWQpOwot
ICAgIGlmIChydGNTdGF0cy5sb2NhbF9jYW5kaWRhdGVfaWQuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5sb2NhbENhbmRpZGF0ZUlkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMubG9jYWxf
Y2FuZGlkYXRlX2lkKTsKLSAgICBpZiAocnRjU3RhdHMucmVtb3RlX2NhbmRpZGF0ZV9pZC5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnJlbW90ZUNhbmRpZGF0ZUlkID0gZnJvbVN0ZFN0cmlu
ZygqcnRjU3RhdHMucmVtb3RlX2NhbmRpZGF0ZV9pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLnN0YXRl
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuc3RhdGUgPSBpY2VDYW5kaWRhdGVQYWlyU3Rh
dGUoKnJ0Y1N0YXRzLnN0YXRlKTsKLQotICAgIGlmIChydGNTdGF0cy5wcmlvcml0eS5pc19kZWZp
bmVkKCkpCi0gICAgICAgIHN0YXRzLnByaW9yaXR5ID0gKnJ0Y1N0YXRzLnByaW9yaXR5OwotICAg
IGlmIChydGNTdGF0cy5ub21pbmF0ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ub21p
bmF0ZWQgPSAqcnRjU3RhdHMubm9taW5hdGVkOwotICAgIGlmIChydGNTdGF0cy53cml0YWJsZS5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLndyaXRhYmxlID0gKnJ0Y1N0YXRzLndyaXRhYmxl
OwotICAgIGlmIChydGNTdGF0cy5yZWFkYWJsZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LnJlYWRhYmxlID0gKnJ0Y1N0YXRzLnJlYWRhYmxlOwotCi0gICAgaWYgKHJ0Y1N0YXRzLmJ5dGVz
X3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5ieXRlc1NlbnQgPSAqcnRjU3RhdHMu
Ynl0ZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVk
OwotICAgIGlmIChydGNTdGF0cy50b3RhbF9yb3VuZF90cmlwX3RpbWUuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy50b3RhbFJvdW5kVHJpcFRpbWUgPSAqcnRjU3RhdHMudG90YWxfcm91bmRf
dHJpcF90aW1lOwotICAgIGlmIChydGNTdGF0cy5jdXJyZW50X3JvdW5kX3RyaXBfdGltZS5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmN1cnJlbnRSb3VuZFRyaXBUaW1lID0gKnJ0Y1N0YXRz
LmN1cnJlbnRfcm91bmRfdHJpcF90aW1lOwotICAgIGlmIChydGNTdGF0cy5hdmFpbGFibGVfb3V0
Z29pbmdfYml0cmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmF2YWlsYWJsZU91dGdv
aW5nQml0cmF0ZSA9ICpydGNTdGF0cy5hdmFpbGFibGVfb3V0Z29pbmdfYml0cmF0ZTsKLSAgICBp
ZiAocnRjU3RhdHMuYXZhaWxhYmxlX2luY29taW5nX2JpdHJhdGUuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5hdmFpbGFibGVJbmNvbWluZ0JpdHJhdGUgPSAqcnRjU3RhdHMuYXZhaWxhYmxl
X2luY29taW5nX2JpdHJhdGU7Ci0KLSAgICBpZiAocnRjU3RhdHMucmVxdWVzdHNfcmVjZWl2ZWQu
aXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5yZXF1ZXN0c1JlY2VpdmVkID0gKnJ0Y1N0YXRz
LnJlcXVlc3RzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5yZXF1ZXN0c19zZW50LmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmVxdWVzdHNTZW50ID0gKnJ0Y1N0YXRzLnJlcXVlc3Rz
X3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkp
Ci0gICAgICAgIHN0YXRzLnJlc3BvbnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19y
ZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5yZXNwb25zZXNTZW50ID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19zZW50Owot
Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMucmV0cmFuc21pc3Npb25zUmVjZWl2ZWQgPSAqcnRjU3RhdHMucmVxdWVzdHNfcmVj
ZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5yZXRyYW5zbWlzc2lvbnNTZW50ID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3NlbnQ7
Ci0gICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAg
ICAgIHN0YXRzLmNvbnNlbnRSZXF1ZXN0c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19y
ZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVzdHNTZW50ID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19z
ZW50OwotICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5jb25zZW50UmVzcG9uc2VzUmVjZWl2ZWQgPSAqcnRjU3RhdHMucmVzcG9u
c2VzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfc2VudC5pc19kZWZpbmVk
KCkpCi0gICAgICAgIHN0YXRzLmNvbnNlbnRSZXNwb25zZXNTZW50ID0gKnJ0Y1N0YXRzLnJlc3Bv
bnNlc19zZW50OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0NlcnRpZmljYXRlU3Rh
dHMoUlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6
OlJUQ0NlcnRpZmljYXRlU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIGZpbGxSVENTdGF0cyhzdGF0
cywgcnRjU3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50LmlzX2RlZmluZWQo
KSkKLSAgICAgICAgc3RhdHMuZmluZ2VycHJpbnQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5m
aW5nZXJwcmludCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50X2FsZ29yaXRobS5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZpbmdlcnByaW50QWxnb3JpdGhtID0gZnJvbVN0ZFN0
cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnRfYWxnb3JpdGhtKTsKLSAgICBpZiAocnRjU3RhdHMu
YmFzZTY0X2NlcnRpZmljYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYmFzZTY0Q2Vy
dGlmaWNhdGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5iYXNlNjRfY2VydGlmaWNhdGUpOwot
ICAgIGlmIChydGNTdGF0cy5pc3N1ZXJfY2VydGlmaWNhdGVfaWQuaXNfZGVmaW5lZCgpKQotICAg
ICAgICBzdGF0cy5pc3N1ZXJDZXJ0aWZpY2F0ZUlkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMu
aXNzdWVyX2NlcnRpZmljYXRlX2lkKTsKLX0KLQotdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpTdGF0c0NvbGxlY3Rvcjo6T25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZw
dHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0c1JlcG9ydD4mIHJ0Y1JlcG9ydCkKLXsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gcnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OlN0YXRzQ29sbGVjdG9yPih0aGlzKSwgcnRjUmVwb3J0XSB7Ci0gICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2VuZHBvaW50LT5pc1N0b3BwZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHJlcG9ydCA9IFJUQ1N0YXRzUmVwb3J0OjpjcmVh
dGUoKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9lbmRwb2ludC0+bV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuZ2V0U3RhdHNTdWNjZWVkZWQocHJvdGVjdGVkVGhpcy0+bV9wcm9taXNlLCByZXBv
cnQuY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUKHJlcG9ydC0+YmFja2luZ01hcCgpKTsKLQot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJ0Y1N0YXRzIDogKnJ0Y1JlcG9ydCkgewotICAgICAg
ICAgICAgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1T
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6SW5ib3VuZFJU
UFN0cmVhbVN0YXRzIHN0YXRzOwotICAgICAgICAgICAgICAgIGZpbGxJbmJvdW5kUlRQU3RyZWFt
U3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVh
bVN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElE
TERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6OkluYm91bmRSVFBTdHJlYW1TdGF0cz4+KFdURk1v
dmUoc3RhdHMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdl
YnJ0Yzo6UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAg
ICBSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSVFBTdHJlYW1TdGF0cyBzdGF0czsKLSAgICAgICAg
ICAgICAgICBmaWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29u
c3Qgd2VicnRjOjpSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAg
ICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6
Ok91dGJvdW5kUlRQU3RyZWFtU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tT
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6TWVkaWFTdHJl
YW1UcmFja1N0YXRzIHN0YXRzOwotICAgICAgICAgICAgICAgIGZpbGxSVENNZWRpYVN0cmVhbVRy
YWNrU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDTWVkaWFTdHJlYW1U
cmFja1N0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRz
PElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6Ok1lZGlhU3RyZWFtVHJhY2tTdGF0cz4+KFdU
Rk1vdmUoc3RhdHMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09
IHdlYnJ0Yzo6UlRDRGF0YUNoYW5uZWxTdGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBS
VENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cyBzdGF0czsKLSAgICAgICAgICAgICAgICBm
aWxsUlRDRGF0YUNoYW5uZWxTdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpS
VENEYXRhQ2hhbm5lbFN0YXRzJj4ocnRjU3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQt
PmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFubmVsU3RhdHM+
PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUo
KSA9PSB3ZWJydGM6OlJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0czo6a1R5cGUpIHsKLSAgICAgICAg
ICAgICAgICBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzIHN0YXRzOwotICAg
ICAgICAgICAgICAgIGZpbGxSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMoc3RhdHMsIHN0YXRpY19j
YXN0PGNvbnN0IHdlYnJ0Yzo6UlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzJj4ocnRjU3RhdHMpKTsK
LSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8UlRDU3RhdHNS
ZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDQ2VydGlmaWNhdGVT
dGF0czo6a1R5cGUpIHsKLSAgICAgICAgICAgICAgICBSVENTdGF0c1JlcG9ydDo6Q2VydGlmaWNh
dGVTdGF0cyBzdGF0czsKLSAgICAgICAgICAgICAgICBmaWxsUlRDQ2VydGlmaWNhdGVTdGF0cyhz
dGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0YXRzJj4ocnRj
U3RhdHMpKTsKLSAgICAgICAgICAgICAgICByZXBvcnQtPmFkZFN0YXRzPElETERpY3Rpb25hcnk8
UlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZh
Y2U8UlRDU3RhdHNSZXBvcnQ+PihyZXBvcnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0pOworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENT
aWduYWxpbmdUaHJlYWQoW3RoaXMsIGNvbGxlY3RvciA9IFdURk1vdmUoY29sbGVjdG9yKV0gewor
ICAgICAgICBpZiAobV9iYWNrZW5kKQorICAgICAgICAgICAgbV9iYWNrZW5kLT5HZXRTdGF0cyhj
b2xsZWN0b3IuZ2V0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmgKaW5kZXggNTIzMzE2ODFiZjc4ZmEyNjdiNWQxZGIwZGU0ZTIxYTI2M2Nm
MzY1OS4uOTAzZTQ1YmI4MzAzMTZiODdjODc0MGYxMjY4Y2JmZDMzNzRhMzA2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaApAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
biYpOwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihjb25zdCBSVENPZmZlck9wdGlvbnMmKTsKICAg
ICB2b2lkIGRvQ3JlYXRlQW5zd2VyKCk7Ci0gICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRy
YWNrKiwgY29uc3QgRGVmZXJyZWRQcm9taXNlJik7CisgICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0
cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAgICAgYm9vbCBhZGRJY2VDYW5kaWRhdGUod2Vi
cnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UmIGNhbmRpZGF0ZSkgeyByZXR1cm4gbV9iYWNrZW5k
LT5BZGRJY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7IH0KIApAQCAtMTk2LDIwICsxOTYsNiBAQCBw
cml2YXRlOgogICAgICAgICBMaWJXZWJSVENNZWRpYUVuZHBvaW50JiBtX2VuZHBvaW50OwogICAg
IH07CiAKLSAgICBjbGFzcyBTdGF0c0NvbGxlY3RvciA6IHB1YmxpYyB3ZWJydGM6OlJUQ1N0YXRz
Q29sbGVjdG9yQ2FsbGJhY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKFJlZjxMaWJXZWJSVENNZWRpYUVuZHBv
aW50PiYmIGVuZHBvaW50LCBjb25zdCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIE1lZGlhU3Ry
ZWFtVHJhY2sqIHRyYWNrKSB7IHJldHVybiBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PFN0YXRz
Q29sbGVjdG9yPihXVEZNb3ZlKGVuZHBvaW50KSwgcHJvbWlzZSwgdHJhY2spOyB9Ci0KLSAgICAg
ICAgU3RhdHNDb2xsZWN0b3IoUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+JiYsIGNvbnN0IERl
ZmVycmVkUHJvbWlzZSYsIE1lZGlhU3RyZWFtVHJhY2sqKTsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgT25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8Y29uc3Qg
d2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKSBmaW5hbDsKLQotICAgICAgICBSZWY8TGliV2ViUlRD
TWVkaWFFbmRwb2ludD4gbV9lbmRwb2ludDsKLSAgICAgICAgY29uc3QgRGVmZXJyZWRQcm9taXNl
JiBtX3Byb21pc2U7Ci0gICAgICAgIFN0cmluZyBtX2lkOwotICAgIH07Ci0KICAgICBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kOwogICAgIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlJiBtX3BlZXJDb25uZWN0aW9uRmFj
dG9yeTsKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gbV9iYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjJiYTE1MGM0YjQ2NGRjMjlhYmY2MjJlNzliMTlm
NmQ4ZmMzMjE3Yy4uYWM3Mzk1ZDFhNzQwMTM1MmQyMjRlZTc2MmRkMTcwNzkyNzg5YjAyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkljZUNhbmRpZGF0ZS5oIgotI2luY2x1ZGUgIkpTUlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIKQEAg
LTEyOCwyNiArMTI3LDcgQEAgYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24KIAogdm9pZCBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNr
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fZW5kcG9pbnQt
PmlzU3RvcHBlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBzdGF0c1Byb21pc2Ug
PSBwcm9taXNlLmdldCgpOwotICAgIG1fc3RhdHNQcm9taXNlcy5hZGQoJnN0YXRzUHJvbWlzZSwg
V1RGTW92ZShwcm9taXNlKSk7Ci0gICAgbV9lbmRwb2ludC0+Z2V0U3RhdHModHJhY2ssIHN0YXRz
UHJvbWlzZSk7Ci19Ci0KLXZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRT
dGF0c1N1Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIFJlZjxSVENTdGF0
c1JlcG9ydD4mJiByZXBvcnQpCi17Ci0gICAgYXV0byBzdGF0c1Byb21pc2UgPSBtX3N0YXRzUHJv
bWlzZXMudGFrZSgmcHJvbWlzZSk7Ci0gICAgQVNTRVJUKHN0YXRzUHJvbWlzZSk7Ci0gICAgc3Rh
dHNQcm9taXNlLnZhbHVlKCktPnJlc29sdmU8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj4o
V1RGTW92ZShyZXBvcnQpKTsKLX0KLQotdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmdldFN0YXRzRmFpbGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0
aW9uJiYgZXhjZXB0aW9uKQotewotICAgIGF1dG8gc3RhdHNQcm9taXNlID0gbV9zdGF0c1Byb21p
c2VzLnRha2UoJnByb21pc2UpOwotICAgIEFTU0VSVChzdGF0c1Byb21pc2UpOwotICAgIHN0YXRz
UHJvbWlzZS52YWx1ZSgpLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICBtX2VuZHBv
aW50LT5nZXRTdGF0cyh0cmFjaywgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKQEAgLTIwMCw3ICsxODAsNiBAQCB2b2lkIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9TdG9wKCkKIAogICAgIG1fYXVkaW9Tb3VyY2Vz
LmNsZWFyKCk7CiAgICAgbV92aWRlb1NvdXJjZXMuY2xlYXIoKTsKLSAgICBtX3N0YXRzUHJvbWlz
ZXMuY2xlYXIoKTsKICAgICBtX3BlbmRpbmdSZWNlaXZlcnMuY2xlYXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBm
YTBmMDEzNzA5NTI1MjYxMmY0YjBlYjYxMTY0ODRkMTRmYTMzMTAxLi45MWUzMjkwN2I3NTM3YjNk
NDgzYjRjNTgxZTA0ZGYzNzgyNzM3M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtODYsNyArODYsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYWRkVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4m
Jik7CiAKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYs
IFJlZjxSVENTdGF0c1JlcG9ydD4mJik7Ci0gICAgdm9pZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBE
ZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAKICAgICBib29sIG5vdGlmeUFkZGVkVHJh
Y2soUlRDUnRwU2VuZGVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRD
UnRwU2VuZGVyJikgZmluYWw7CkBAIC0xMTIsNyArMTExLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlPj4gbV9wZW5k
aW5nQ2FuZGlkYXRlczsKICAgICBWZWN0b3I8UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZT4+IG1fYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlPj4gbV92aWRlb1NvdXJjZXM7Ci0gICAgSGFzaE1hcDxjb25zdCBEZWZlcnJlZFByb21p
c2UqLCBSZWY8RGVmZXJyZWRQcm9taXNlPj4gbV9zdGF0c1Byb21pc2VzOwogICAgIFZlY3RvcjxS
ZWY8UlRDUnRwUmVjZWl2ZXI+PiBtX3BlbmRpbmdSZWNlaXZlcnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENT
dGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZjE1Mjhl
M2YwNWM3NTM1MzQ0NmU1MTFjZmJhMzNlMjMyMjk5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmNwcApAQCAtMCwwICsxLDMzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaCIKKworI2lmIFVTRShM
SUJXRUJSVEMpCisKKyNpbmNsdWRlICJKU1JUQ1N0YXRzUmVwb3J0LmgiCisjaW5jbHVkZSAiUGVy
Zm9ybWFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cihDb2xsZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIDogbV9jYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSkKK3sKK30KKworTGliV2ViUlRDU3RhdHNDb2xsZWN0b3I6On5MaWJXZWJSVENT
dGF0c0NvbGxlY3RvcigpCit7CisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayld
KCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgfSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQor
eworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3Ro
KCkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ1N0YXRzKFJUQ1N0YXRzUmVwb3J0
OjpTdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHMmIHJ0Y1N0YXRzKQoreworICAg
IHN0YXRzLnRpbWVzdGFtcCA9IFBlcmZvcm1hbmNlOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihTZWNv
bmRzOjpmcm9tTWljcm9zZWNvbmRzKHJ0Y1N0YXRzLnRpbWVzdGFtcF91cygpKSkubWlsbGlzZWNv
bmRzKCk7CisgICAgc3RhdHMuaWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1N0YXRzLmlkKCkpOworfQor
CitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0
OjpSVENSVFBTdHJlYW1TdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDUlRQU3RyZWFtU3Rh
dHMmIHJ0Y1N0YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisg
ICAgaWYgKHJ0Y1N0YXRzLnNzcmMuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5zc3JjID0g
KnJ0Y1N0YXRzLnNzcmM7CisgICAgaWYgKHJ0Y1N0YXRzLmFzc29jaWF0ZV9zdGF0c19pZC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmFzc29jaWF0ZVN0YXRzSWQgPSBmcm9tU3RkU3RyaW5n
KCpydGNTdGF0cy5hc3NvY2lhdGVfc3RhdHNfaWQpOworICAgIGlmIChydGNTdGF0cy5pc19yZW1v
dGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5pc1JlbW90ZSA9ICpydGNTdGF0cy5pc19y
ZW1vdGU7CisgICAgaWYgKHJ0Y1N0YXRzLm1lZGlhX3R5cGUuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5tZWRpYVR5cGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5tZWRpYV90eXBlKTsK
KyAgICBpZiAocnRjU3RhdHMudHJhY2tfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5t
ZWRpYVRyYWNrSWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFja19pZCk7CisgICAgaWYg
KHJ0Y1N0YXRzLnRyYW5zcG9ydF9pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnRyYW5z
cG9ydElkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMudHJhbnNwb3J0X2lkKTsKKyAgICBpZiAo
cnRjU3RhdHMuY29kZWNfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb2RlY0lkID0g
ZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuY29kZWNfaWQpOworICAgIGlmIChydGNTdGF0cy5maXJf
Y291bnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5maXJDb3VudCA9ICpydGNTdGF0cy5m
aXJfY291bnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnBsaV9jb3VudC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLnBsaUNvdW50ID0gKnJ0Y1N0YXRzLnBsaV9jb3VudDsKKyAgICBpZiAocnRjU3Rh
dHMubmFja19jb3VudC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLm5hY2tDb3VudCA9ICpy
dGNTdGF0cy5uYWNrX2NvdW50OworICAgIGlmIChydGNTdGF0cy5zbGlfY291bnQuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5zbGlDb3VudCA9ICpydGNTdGF0cy5zbGlfY291bnQ7CisgICAg
aWYgKHJ0Y1N0YXRzLnFwX3N1bS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnFwU3VtID0g
KnJ0Y1N0YXRzLnFwX3N1bTsKKyAgICBzdGF0cy5xcFN1bSA9IDA7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBmaWxsSW5ib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpJbmJvdW5k
UlRQU3RyZWFtU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1T
dGF0cyYgcnRjU3RhdHMpCit7CisgICAgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNT
dGF0cyk7CisKKyAgICBpZiAocnRjU3RhdHMucGFja2V0c19yZWNlaXZlZC5pc19kZWZpbmVkKCkp
CisgICAgICAgIHN0YXRzLnBhY2tldHNSZWNlaXZlZCA9ICpydGNTdGF0cy5wYWNrZXRzX3JlY2Vp
dmVkOworICAgIGlmIChydGNTdGF0cy5ieXRlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLmJ5dGVzUmVjZWl2ZWQgPSAqcnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQ7CisgICAg
aWYgKHJ0Y1N0YXRzLnBhY2tldHNfbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBh
Y2tldHNMb3N0ID0gKnJ0Y1N0YXRzLnBhY2tldHNfbG9zdDsKKyAgICBpZiAocnRjU3RhdHMuaml0
dGVyLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuaml0dGVyID0gKnJ0Y1N0YXRzLmppdHRl
cjsKKyAgICBpZiAocnRjU3RhdHMuZnJhY3Rpb25fbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmZyYWN0aW9uTG9zdCA9ICpydGNTdGF0cy5mcmFjdGlvbl9sb3N0OworICAgIGlmIChy
dGNTdGF0cy5wYWNrZXRzX2Rpc2NhcmRlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBh
Y2tldHNEaXNjYXJkZWQgPSAqcnRjU3RhdHMucGFja2V0c19kaXNjYXJkZWQ7CisgICAgaWYgKHJ0
Y1N0YXRzLnBhY2tldHNfcmVwYWlyZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5wYWNr
ZXRzUmVwYWlyZWQgPSAqcnRjU3RhdHMucGFja2V0c19yZXBhaXJlZDsKKyAgICBpZiAocnRjU3Rh
dHMuYnVyc3RfcGFja2V0c19sb3N0LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnVyc3RQ
YWNrZXRzTG9zdCA9ICpydGNTdGF0cy5idXJzdF9wYWNrZXRzX2xvc3Q7CisgICAgaWYgKHJ0Y1N0
YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMu
YnVyc3RQYWNrZXRzRGlzY2FyZGVkID0gKnJ0Y1N0YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVk
OworICAgIGlmIChydGNTdGF0cy5idXJzdF9sb3NzX2NvdW50LmlzX2RlZmluZWQoKSkKKyAgICAg
ICAgc3RhdHMuYnVyc3RMb3NzQ291bnQgPSAqcnRjU3RhdHMuYnVyc3RfbG9zc19jb3VudDsKKyAg
ICBpZiAocnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9jb3VudC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmJ1cnN0RGlzY2FyZENvdW50ID0gKnJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfY291bnQ7
CisgICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2xvc3NfcmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmJ1cnN0TG9zc1JhdGUgPSAqcnRjU3RhdHMuYnVyc3RfbG9zc19yYXRlOworICAgIGlm
IChydGNTdGF0cy5idXJzdF9kaXNjYXJkX3JhdGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5idXJzdERpc2NhcmRSYXRlID0gKnJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfcmF0ZTsKKyAgICBp
ZiAocnRjU3RhdHMuZ2FwX2xvc3NfcmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmdh
cExvc3NSYXRlID0gKnJ0Y1N0YXRzLmdhcF9sb3NzX3JhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmdh
cF9kaXNjYXJkX3JhdGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5nYXBEaXNjYXJkUmF0
ZSA9ICpydGNTdGF0cy5nYXBfZGlzY2FyZF9yYXRlOworICAgIGlmIChydGNTdGF0cy5mcmFtZXNf
ZGVjb2RlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZyYW1lc0RlY29kZWQgPSAqcnRj
U3RhdHMuZnJhbWVzX2RlY29kZWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsT3V0Ym91
bmRSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYg
c3RhdHMsIGNvbnN0IHdlYnJ0Yzo6UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYgcnRjU3RhdHMp
Cit7CisgICAgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNTdGF0cyk7CisKKyAgICBp
ZiAocnRjU3RhdHMucGFja2V0c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFj
a2V0c1NlbnQgPSAqcnRjU3RhdHMucGFja2V0c19zZW50OworICAgIGlmIChydGNTdGF0cy5ieXRl
c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRz
LmJ5dGVzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlLmlzX2RlZmluZWQo
KSkKKyAgICAgICAgc3RhdHMudGFyZ2V0Qml0cmF0ZSA9ICpydGNTdGF0cy50YXJnZXRfYml0cmF0
ZTsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2VuY29kZWQuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5mcmFtZXNFbmNvZGVkID0gKnJ0Y1N0YXRzLmZyYW1lc19lbmNvZGVkOworfQorCitz
dGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyhSVENTdGF0c1Jl
cG9ydDo6TWVkaWFTdHJlYW1UcmFja1N0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENNZWRp
YVN0cmVhbVRyYWNrU3RhdHMmIHJ0Y1N0YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywg
cnRjU3RhdHMpOworCisgICAgaWYgKHJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy50cmFja0lkZW50aWZpZXIgPSBmcm9tU3RkU3RyaW5nKCpydGNT
dGF0cy50cmFja19pZGVudGlmaWVyKTsKKyAgICBpZiAocnRjU3RhdHMucmVtb3RlX3NvdXJjZS5p
c19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJlbW90ZVNvdXJjZSA9ICpydGNTdGF0cy5yZW1v
dGVfc291cmNlOworICAgIGlmIChydGNTdGF0cy5lbmRlZC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmVuZGVkID0gKnJ0Y1N0YXRzLmVuZGVkOworICAgIGlmIChydGNTdGF0cy5kZXRhY2hl
ZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmRldGFjaGVkID0gKnJ0Y1N0YXRzLmRldGFj
aGVkOworICAgIGlmIChydGNTdGF0cy5mcmFtZV93aWR0aC5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLmZyYW1lV2lkdGggPSAqcnRjU3RhdHMuZnJhbWVfd2lkdGg7CisgICAgaWYgKHJ0Y1N0
YXRzLmZyYW1lX2hlaWdodC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZyYW1lSGVpZ2h0
ID0gKnJ0Y1N0YXRzLmZyYW1lX2hlaWdodDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3Blcl9z
ZWNvbmQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mcmFtZXNQZXJTZWNvbmQgPSAqcnRj
U3RhdHMuZnJhbWVzX3Blcl9zZWNvbmQ7CisgICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19zZW50Lmlz
X2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVzU2VudCA9ICpydGNTdGF0cy5mcmFtZXNf
c2VudDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAg
ICAgICAgc3RhdHMuZnJhbWVzUmVjZWl2ZWQgPSAqcnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkOwor
ICAgIGlmIChydGNTdGF0cy5mcmFtZXNfZGVjb2RlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0
YXRzLmZyYW1lc0RlY29kZWQgPSAqcnRjU3RhdHMuZnJhbWVzX2RlY29kZWQ7CisgICAgaWYgKHJ0
Y1N0YXRzLmZyYW1lc19kcm9wcGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVz
RHJvcHBlZCA9ICpydGNTdGF0cy5mcmFtZXNfZHJvcHBlZDsKKyAgICBpZiAocnRjU3RhdHMucGFy
dGlhbF9mcmFtZXNfbG9zdC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBhcnRpYWxGcmFt
ZXNMb3N0ID0gKnJ0Y1N0YXRzLnBhcnRpYWxfZnJhbWVzX2xvc3Q7CisgICAgaWYgKHJ0Y1N0YXRz
LmZ1bGxfZnJhbWVzX2xvc3QuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mdWxsRnJhbWVz
TG9zdCA9ICpydGNTdGF0cy5mdWxsX2ZyYW1lc19sb3N0OworICAgIGlmIChydGNTdGF0cy5hdWRp
b19sZXZlbC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmF1ZGlvTGV2ZWwgPSAqcnRjU3Rh
dHMuYXVkaW9fbGV2ZWw7CisgICAgaWYgKHJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3MuaXNfZGVm
aW5lZCgpKQorICAgICAgICBzdGF0cy5lY2hvUmV0dXJuTG9zcyA9ICpydGNTdGF0cy5lY2hvX3Jl
dHVybl9sb3NzOworICAgIGlmIChydGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZWNob1JldHVybkxvc3NFbmhhbmNlbWVudCA9
ICpydGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgZmlsbFJUQ0RhdGFDaGFubmVsU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFu
bmVsU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0RhdGFDaGFubmVsU3RhdHMmIHJ0Y1N0
YXRzKQoreworICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisgICAgaWYgKHJ0
Y1N0YXRzLmxhYmVsLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubGFiZWwgPSBmcm9tU3Rk
U3RyaW5nKCpydGNTdGF0cy5sYWJlbCk7CisgICAgaWYgKHJ0Y1N0YXRzLnByb3RvY29sLmlzX2Rl
ZmluZWQoKSkKKyAgICAgICAgc3RhdHMucHJvdG9jb2wgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0
cy5wcm90b2NvbCk7CisgICAgaWYgKHJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQuaXNfZGVmaW5lZCgp
KQorICAgICAgICBzdGF0cy5kYXRhY2hhbm5lbGlkID0gKnJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQ7
CisgICAgaWYgKHJ0Y1N0YXRzLnN0YXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuc3Rh
dGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5zdGF0ZSk7CisgICAgaWYgKHJ0Y1N0YXRzLm1l
c3NhZ2VzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5tZXNzYWdlc1NlbnQgPSAq
cnRjU3RhdHMubWVzc2FnZXNfc2VudDsKKyAgICBpZiAocnRjU3RhdHMuYnl0ZXNfc2VudC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmJ5dGVzU2VudCA9ICpydGNTdGF0cy5ieXRlc19zZW50
OworICAgIGlmIChydGNTdGF0cy5tZXNzYWdlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLm1lc3NhZ2VzUmVjZWl2ZWQgPSAqcnRjU3RhdHMubWVzc2FnZXNfcmVjZWl2ZWQ7
CisgICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAg
c3RhdHMuYnl0ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKK30KKworc3Rh
dGljIGlubGluZSBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlIGljZUNhbmRp
ZGF0ZVBhaXJTdGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgc3RhdGUpCit7CisgICAgaWYgKHN0YXRl
ID09ICJmcm96ZW4iKQorICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0
ZVBhaXJTdGF0ZTo6RnJvemVuOworICAgIGlmIChzdGF0ZSA9PSAid2FpdGluZyIpCisgICAgICAg
IHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpXYWl0aW5nOwor
ICAgIGlmIChzdGF0ZSA9PSAiaW4tcHJvZ3Jlc3MiKQorICAgICAgICByZXR1cm4gUlRDU3RhdHNS
ZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6SW5wcm9ncmVzczsKKyAgICBpZiAoc3RhdGUg
PT0gImZhaWxlZCIpCisgICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRl
UGFpclN0YXRlOjpGYWlsZWQ7CisgICAgaWYgKHN0YXRlID09ICJzdWNjZWVkZWQiKQorICAgICAg
ICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6U3VjY2VlZGVk
OworICAgIGlmIChzdGF0ZSA9PSAiY2FuY2VsbGVkIikKKyAgICAgICAgcmV0dXJuIFJUQ1N0YXRz
UmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkNhbmNlbGxlZDsKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJT
dGF0ZTo6RnJvemVuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0ljZUNhbmRpZGF0
ZVBhaXJTdGF0cyhSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzJiBzdGF0cywg
Y29uc3Qgd2VicnRjOjpSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMmIHJ0Y1N0YXRzKQoreworICAg
IGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisgICAgaWYgKHJ0Y1N0YXRzLnRyYW5z
cG9ydF9pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZnJvbVN0
ZFN0cmluZygqcnRjU3RhdHMudHJhbnNwb3J0X2lkKTsKKyAgICBpZiAocnRjU3RhdHMubG9jYWxf
Y2FuZGlkYXRlX2lkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubG9jYWxDYW5kaWRhdGVJ
ZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxvY2FsX2NhbmRpZGF0ZV9pZCk7CisgICAgaWYg
KHJ0Y1N0YXRzLnJlbW90ZV9jYW5kaWRhdGVfaWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5yZW1vdGVDYW5kaWRhdGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnJlbW90ZV9jYW5k
aWRhdGVfaWQpOworICAgIGlmIChydGNTdGF0cy5zdGF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAg
IHN0YXRzLnN0YXRlID0gaWNlQ2FuZGlkYXRlUGFpclN0YXRlKCpydGNTdGF0cy5zdGF0ZSk7CisK
KyAgICBpZiAocnRjU3RhdHMucHJpb3JpdHkuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5w
cmlvcml0eSA9ICpydGNTdGF0cy5wcmlvcml0eTsKKyAgICBpZiAocnRjU3RhdHMubm9taW5hdGVk
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubm9taW5hdGVkID0gKnJ0Y1N0YXRzLm5vbWlu
YXRlZDsKKyAgICBpZiAocnRjU3RhdHMud3JpdGFibGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBz
dGF0cy53cml0YWJsZSA9ICpydGNTdGF0cy53cml0YWJsZTsKKyAgICBpZiAocnRjU3RhdHMucmVh
ZGFibGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZWFkYWJsZSA9ICpydGNTdGF0cy5y
ZWFkYWJsZTsKKworICAgIGlmIChydGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKKyAg
ICAgICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7CisgICAgaWYgKHJ0
Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnl0ZXNS
ZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMudG90
YWxfcm91bmRfdHJpcF90aW1lLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMudG90YWxSb3Vu
ZFRyaXBUaW1lID0gKnJ0Y1N0YXRzLnRvdGFsX3JvdW5kX3RyaXBfdGltZTsKKyAgICBpZiAocnRj
U3RhdHMuY3VycmVudF9yb3VuZF90cmlwX3RpbWUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5jdXJyZW50Um91bmRUcmlwVGltZSA9ICpydGNTdGF0cy5jdXJyZW50X3JvdW5kX3RyaXBfdGlt
ZTsKKyAgICBpZiAocnRjU3RhdHMuYXZhaWxhYmxlX291dGdvaW5nX2JpdHJhdGUuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5hdmFpbGFibGVPdXRnb2luZ0JpdHJhdGUgPSAqcnRjU3RhdHMu
YXZhaWxhYmxlX291dGdvaW5nX2JpdHJhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmF2YWlsYWJsZV9p
bmNvbWluZ19iaXRyYXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYXZhaWxhYmxlSW5j
b21pbmdCaXRyYXRlID0gKnJ0Y1N0YXRzLmF2YWlsYWJsZV9pbmNvbWluZ19iaXRyYXRlOworCisg
ICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAg
c3RhdHMucmVxdWVzdHNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXF1ZXN0c19yZWNlaXZlZDsKKyAg
ICBpZiAocnRjU3RhdHMucmVxdWVzdHNfc2VudC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRz
LnJlcXVlc3RzU2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OworICAgIGlmIChydGNTdGF0
cy5yZXNwb25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZXNwb25z
ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0
YXRzLnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucmVzcG9uc2Vz
U2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKKworICAgIGlmIChydGNTdGF0cy5yZXF1
ZXN0c19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJldHJhbnNtaXNzaW9u
c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkOworICAgIGlmIChydGNTdGF0
cy5yZXF1ZXN0c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucmV0cmFuc21pc3Np
b25zU2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OworICAgIGlmIChydGNTdGF0cy5yZXNw
b25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVz
dHNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0
YXRzLnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuY29uc2VudFJl
cXVlc3RzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKKyAgICBpZiAocnRjU3RhdHMu
cmVzcG9uc2VzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuY29uc2VudFJl
c3BvbnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZDsKKyAgICBpZiAo
cnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25z
ZW50UmVzcG9uc2VzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKK30KKworc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpDZXJ0
aWZpY2F0ZVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0YXRzJiBy
dGNTdGF0cykKK3sKKyAgICBmaWxsUlRDU3RhdHMoc3RhdHMsIHJ0Y1N0YXRzKTsKKworICAgIGlm
IChydGNTdGF0cy5maW5nZXJwcmludC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZpbmdl
cnByaW50ID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnQpOworICAgIGlmIChy
dGNTdGF0cy5maW5nZXJwcmludF9hbGdvcml0aG0uaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5maW5nZXJwcmludEFsZ29yaXRobSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmZpbmdlcnBy
aW50X2FsZ29yaXRobSk7CisgICAgaWYgKHJ0Y1N0YXRzLmJhc2U2NF9jZXJ0aWZpY2F0ZS5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmJhc2U2NENlcnRpZmljYXRlID0gZnJvbVN0ZFN0cmlu
ZygqcnRjU3RhdHMuYmFzZTY0X2NlcnRpZmljYXRlKTsKKyAgICBpZiAocnRjU3RhdHMuaXNzdWVy
X2NlcnRpZmljYXRlX2lkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuaXNzdWVyQ2VydGlm
aWNhdGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmlzc3Vlcl9jZXJ0aWZpY2F0ZV9pZCk7
Cit9Cit2b2lkIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKGNvbnN0
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJUQ1N0YXRzUmVwb3J0PiYgcnRjUmVw
b3J0KQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBydGM6OnNjb3Bl
ZF9yZWZwdHI8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KHRoaXMpLCBydGNSZXBvcnRdIHsKKyAg
ICAgICAgYXV0byByZXBvcnQgPSBSVENTdGF0c1JlcG9ydDo6Y3JlYXRlKCk7CisgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcy0+bV9jYWxsYmFjayhyZXBvcnQuY29weVJlZigpKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQocmVwb3J0LT5iYWNraW5nTWFwKCkpOworCisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcnRjU3RhdHMgOiAqcnRjUmVwb3J0KSB7CisgICAgICAg
ICAgICBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpJbmJvdW5kUlRQ
U3RyZWFtU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbEluYm91bmRSVFBTdHJlYW1T
dGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENJbmJvdW5kUlRQU3RyZWFt
U3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURM
RGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6SW5ib3VuZFJUUFN0cmVhbVN0YXRzPj4oV1RGTW92
ZShzdGF0cykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2Vi
cnRjOjpSVENPdXRib3VuZFJUUFN0cmVhbVN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAg
IFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJUUFN0cmVhbVN0YXRzIHN0YXRzOworICAgICAgICAg
ICAgICAgIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25z
dCB3ZWJydGM6OlJUQ091dGJvdW5kUlRQU3RyZWFtU3RhdHMmPihydGNTdGF0cykpOworICAgICAg
ICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6
T3V0Ym91bmRSVFBTdHJlYW1TdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAocnRjU3RhdHMudHlwZSgpID09IHdlYnJ0Yzo6UlRDTWVkaWFTdHJlYW1UcmFja1N0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpNZWRpYVN0cmVh
bVRyYWNrU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbFJUQ01lZGlhU3RyZWFtVHJh
Y2tTdGF0cyhzdGF0cywgc3RhdGljX2Nhc3Q8Y29uc3Qgd2VicnRjOjpSVENNZWRpYVN0cmVhbVRy
YWNrU3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8
SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6TWVkaWFTdHJlYW1UcmFja1N0YXRzPj4oV1RG
TW92ZShzdGF0cykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0g
d2VicnRjOjpSVENEYXRhQ2hhbm5lbFN0YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJU
Q1N0YXRzUmVwb3J0OjpEYXRhQ2hhbm5lbFN0YXRzIHN0YXRzOworICAgICAgICAgICAgICAgIGZp
bGxSVENEYXRhQ2hhbm5lbFN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJU
Q0RhdGFDaGFubmVsU3RhdHMmPihydGNTdGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+
YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cz4+
KFdURk1vdmUoc3RhdHMpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocnRjU3RhdHMudHlwZSgp
ID09IHdlYnJ0Yzo6UlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzOjprVHlwZSkgeworICAgICAgICAg
ICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdHMgc3RhdHM7CisgICAg
ICAgICAgICAgICAgZmlsbFJUQ0ljZUNhbmRpZGF0ZVBhaXJTdGF0cyhzdGF0cywgc3RhdGljX2Nh
c3Q8Y29uc3Qgd2VicnRjOjpSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMmPihydGNTdGF0cykpOwor
ICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxSVENTdGF0c1Jl
cG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzPj4oV1RGTW92ZShzdGF0cykpOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0
YXRzOjprVHlwZSkgeworICAgICAgICAgICAgICAgIFJUQ1N0YXRzUmVwb3J0OjpDZXJ0aWZpY2F0
ZVN0YXRzIHN0YXRzOworICAgICAgICAgICAgICAgIGZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKHN0
YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0NlcnRpZmljYXRlU3RhdHMmPihydGNT
dGF0cykpOworICAgICAgICAgICAgICAgIHJlcG9ydC0+YWRkU3RhdHM8SURMRGljdGlvbmFyeTxS
VENTdGF0c1JlcG9ydDo6Q2VydGlmaWNhdGVTdGF0cz4+KFdURk1vdmUoc3RhdHMpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworfQorCit9OyAvLyBuYW1lc3BhY2UgV1RGCisK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjhlY2ZiNjFiMmU3NzE0MzMxYWY1ZTYxZDkyOGY1
NWNiMTU3NjllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKwor
I2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRl
ciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxlY3Rvci5oPgorCisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ1N0
YXRzUmVwb3J0OworCitjbGFzcyBMaWJXZWJSVENTdGF0c0NvbGxlY3RvciA6IHB1YmxpYyB3ZWJy
dGM6OlJUQ1N0YXRzQ29sbGVjdG9yQ2FsbGJhY2sgeworcHVibGljOgorICAgIHVzaW5nIENvbGxl
Y3RvckNhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjxib29sKFJlZlB0cjxSVENTdGF0
c1JlcG9ydD4mJik+OworICAgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3I+IGNyZWF0ZShDb2xsZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrKSB7IHJldHVy
biBuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yPihXVEZN
b3ZlKGNhbGxiYWNrKSk7IH0KKworICAgIGV4cGxpY2l0IExpYldlYlJUQ1N0YXRzQ29sbGVjdG9y
KENvbGxlY3RvckNhbGxiYWNrJiYpOworICAgIH5MaWJXZWJSVENTdGF0c0NvbGxlY3RvcigpOwor
Citwcml2YXRlOgorICAgIHZvaWQgT25TdGF0c0RlbGl2ZXJlZChjb25zdCBydGM6OnNjb3BlZF9y
ZWZwdHI8Y29uc3Qgd2VicnRjOjpSVENTdGF0c1JlcG9ydD4mKSBmaW5hbDsKKworICAgIENvbGxl
Y3RvckNhbGxiYWNrIG1fY2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDYwZjFhNjU0YTc0ZjVkOTU2YzkyZDU4
MmYwN2I5OGVlZWYyZjMuLjNiOWVmYzAyNTJhZDRiMzA0ODlkZjE5ZjQ0Njk4NTRmZjE5NDlmZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwODgsNiArMTA4OCw3IEBACiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1C
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmggKi87IH07CisJCTQxNzI5QzE3MjEzOEM5NEMwMEEzNjM5MCAvKiBMaWJX
ZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTcyOUMxNDIxMzhDODg2MDBBMzYzOTAgLyogTGliV2ViUlRDU3RhdHND
b2xsZWN0b3IuY3BwICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
ICovOyB9OwogCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwICovOyB9OwpAQCAtNzI0Niw2ICs3MjQ3LDggQEAKIAkJNDE3MEEyRTkxRDhD
MENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAz
NjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE3MjlDMTQyMTM4Qzg4NjAwQTM2MzkwIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNzI5QzE2MjEzOEM4ODcwMEEzNjM5
MCAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oOyBwYXRoID0gbGlid2VicnRjL0xpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzYx
MkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
OyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENNZWRpYUVuZHBvaW50Lmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4
MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA7
IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODMyLDYgKzE2ODM1LDggQEAKIAkJCQk0MTc2
MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovLAogCQkJ
CTQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwICovLAogCQkJCTQxNzYxMkFFMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaCAqLywKKwkJCQk0MTcyOUMxNDIxMzhDODg2MDBBMzYzOTAgLyog
TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwICovLAorCQkJCTQxNzI5QzE2MjEzOEM4ODcwMEEz
NjM5MCAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBs
aWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzE0MTUsNiArMzE0MjAs
NyBAQAogCQkJCTVDREQ4MzY0MUU0MzI1QTAwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3NjEy
QjExRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTcyOUMxNzIxMzhDOTRDMDBBMzYzOTAgLyogTGliV2ViUlRD
U3RhdHNDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0UxNEVGMUNGODAw
MjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NTc3
NUVBMjA0NzMwM0MwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348670</attachid>
            <date>2018-08-31 13:46:53 -0700</date>
            <delta_ts>2018-08-31 16:27:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189180-20180831134652.patch</filename>
            <type>text/plain</type>
            <size>48688</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRmNjIzNGIxMDJlYTVk
MDI1NjU5MDA0NjY0NWM0Y2M0N2UyZjJmMy4uNmViNjhjZDhjM2ZmZWQ2NWYzNDU3ZjdmMzhkMTE5
MzhkYjIyNDAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0YXRzIGdhdGhl
cmluZyBvdXQgb2YgTGliV2ViUlRDTWVkaWFFbmRwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxlamFuZHJvIEcuIENhc3Ryby4KKworICAgICAgICBNb3ZlIHN0YXRzIGdhdGhlcmluZyBpbiBM
aWJXZWJSVENTdGF0c0NvbGxlY3Rvci4KKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgdGhlIGxhbWJk
YSBnaXZlbiB0byB0aGUgY29sbGVjdG9yIGlzIGFsd2F5cyBjYWxsZWQgYW5kIGRlc3Ryb3llZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgY2FwdHVyaW5nIHRoZSBw
cm9taXNlIGhlcmUgaW5zdGVhZCBvZiBzdG9yaW5nIGl0IGludG8gdGhlIHBlZXIgY29ubmVjdGlv
biBiYWNrZW5kLgorICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb1N0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cjo6TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
U3RhdHNDb2xsZWN0b3I6On5MaWJXZWJSVENTdGF0c0NvbGxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpmcm9tU3RkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxSVENTdGF0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsUlRDUlRQU3RyZWFtU3RhdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmlsbEluYm91bmRSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsT3V0
Ym91bmRSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsUlRDTWVkaWFTdHJl
YW1UcmFja1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxSVENEYXRhQ2hhbm5lbFN0YXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmljZUNhbmRpZGF0ZVBhaXJTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpmaWxsUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yOjpPblN0YXRzRGVsaXZlcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wOC0zMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSURCUmVxdWVzdCBhbmQgSURC
Q3Vyc29yIHNob3VsZCBub3QgaG9sZCBzdHJvbmcgcmVmZXJlbmNlcyB0byBKU1ZhbHVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGZlZjk5NzYzMmE2OGM0MTBhZjA5OGYwMWViMmM1OGNkZmNkYWI1
OGMuLjI5YmMwMDQxNDkzODdjMTc2ODgxYWE5NzFhZWNjM2VjNGE4NmJmODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xNTYwLDYgKzE1NjAsNyBAQCBpZiAoVVNFX0xJQldFQlJUQykKICAgICAg
ICIke1RISVJEUEFSVFlfRElSfS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2Fic2VpbC1j
cHAiKQogICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUyB3ZWJydGMpCiAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCiAgICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAogICAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCA3
ZjY3NWYzOWVlMDkwODlkNDIxM2U3MzA0YTRkZjBmYzM4ZDI5ZTljLi42YTU0ZmFhYWQxOTMwNzg2
Y2U3YzI4ZmE4ZDZkYzBlYzE4ZjFkNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENT
dGF0c0NvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlLmgiCkBAIC0zMDUsMjk5ICszMDYsMTkg
QEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigpCiAgICAgbV9i
YWNrZW5kLT5DcmVhdGVBbnN3ZXIoJm1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIs
IG51bGxwdHIpOwogfQogCi12b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrLCBjb25zdCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UpCit2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byBjb2xsZWN0b3IgPSBT
dGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKCp0aGlzLCBwcm9taXNlLCB0cmFjayk7Ci0gICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb2xsZWN0b3IgPSBXVEZNb3ZlKGNvbGxlY3RvcildIHsKLSAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZCkKLSAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fYmFja2VuZC0+R2V0U3RhdHMoY29sbGVjdG9yLmdldCgpKTsKLSAgICB9KTsKLX0KLQot
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6OlN0YXRzQ29sbGVjdG9yKFJl
ZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiYmIGVuZHBvaW50LCBjb25zdCBEZWZlcnJlZFByb21p
c2UmIHByb21pc2UsIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQotICAgIDogbV9lbmRwb2ludChX
VEZNb3ZlKGVuZHBvaW50KSkKLSAgICAsIG1fcHJvbWlzZShwcm9taXNlKQotewotICAgIGlmICh0
cmFjaykKLSAgICAgICAgbV9pZCA9IHRyYWNrLT5pZCgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZv
aWQgZmlsbFJUQ1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IHdlYnJ0
Yzo6UlRDU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIHN0YXRzLnRpbWVzdGFtcCA9IFBlcmZvcm1h
bmNlOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihTZWNvbmRzOjpmcm9tTWljcm9zZWNvbmRzKHJ0Y1N0
YXRzLnRpbWVzdGFtcF91cygpKSkubWlsbGlzZWNvbmRzKCk7Ci0gICAgc3RhdHMuaWQgPSBmcm9t
U3RkU3RyaW5nKHJ0Y1N0YXRzLmlkKCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSVENSVFBTdHJlYW1TdGF0cyYgc3RhdHMs
IGNvbnN0IHdlYnJ0Yzo6UlRDUlRQU3RyZWFtU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIGZpbGxS
VENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0YXRzLnNzcmMuaXNfZGVm
aW5lZCgpKQotICAgICAgICBzdGF0cy5zc3JjID0gKnJ0Y1N0YXRzLnNzcmM7Ci0gICAgaWYgKHJ0
Y1N0YXRzLmFzc29jaWF0ZV9zdGF0c19pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmFz
c29jaWF0ZVN0YXRzSWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5hc3NvY2lhdGVfc3RhdHNf
aWQpOwotICAgIGlmIChydGNTdGF0cy5pc19yZW1vdGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBz
dGF0cy5pc1JlbW90ZSA9ICpydGNTdGF0cy5pc19yZW1vdGU7Ci0gICAgaWYgKHJ0Y1N0YXRzLm1l
ZGlhX3R5cGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5tZWRpYVR5cGUgPSBmcm9tU3Rk
U3RyaW5nKCpydGNTdGF0cy5tZWRpYV90eXBlKTsKLSAgICBpZiAocnRjU3RhdHMudHJhY2tfaWQu
aXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5tZWRpYVRyYWNrSWQgPSBmcm9tU3RkU3RyaW5n
KCpydGNTdGF0cy50cmFja19pZCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLnRyYW5zcG9ydF9pZC5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZnJvbVN0ZFN0cmluZygqcnRj
U3RhdHMudHJhbnNwb3J0X2lkKTsKLSAgICBpZiAocnRjU3RhdHMuY29kZWNfaWQuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5jb2RlY0lkID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuY29k
ZWNfaWQpOwotICAgIGlmIChydGNTdGF0cy5maXJfY291bnQuaXNfZGVmaW5lZCgpKQotICAgICAg
ICBzdGF0cy5maXJDb3VudCA9ICpydGNTdGF0cy5maXJfY291bnQ7Ci0gICAgaWYgKHJ0Y1N0YXRz
LnBsaV9jb3VudC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBsaUNvdW50ID0gKnJ0Y1N0
YXRzLnBsaV9jb3VudDsKLSAgICBpZiAocnRjU3RhdHMubmFja19jb3VudC5pc19kZWZpbmVkKCkp
Ci0gICAgICAgIHN0YXRzLm5hY2tDb3VudCA9ICpydGNTdGF0cy5uYWNrX2NvdW50OwotICAgIGlm
IChydGNTdGF0cy5zbGlfY291bnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5zbGlDb3Vu
dCA9ICpydGNTdGF0cy5zbGlfY291bnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnFwX3N1bS5pc19kZWZp
bmVkKCkpCi0gICAgICAgIHN0YXRzLnFwU3VtID0gKnJ0Y1N0YXRzLnFwX3N1bTsKLSAgICBzdGF0
cy5xcFN1bSA9IDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsSW5ib3VuZFJUUFN0cmVh
bVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpJbmJvdW5kUlRQU3RyZWFtU3RhdHMmIHN0YXRzLCBjb25z
dCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyYgcnRjU3RhdHMpCi17Ci0gICAgZmls
bFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAgICBpZiAocnRjU3RhdHMu
cGFja2V0c19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhY2tldHNSZWNl
aXZlZCA9ICpydGNTdGF0cy5wYWNrZXRzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5ieXRl
c19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmJ5dGVzUmVjZWl2ZWQgPSAq
cnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnBhY2tldHNfbG9zdC5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhY2tldHNMb3N0ID0gKnJ0Y1N0YXRzLnBhY2tl
dHNfbG9zdDsKLSAgICBpZiAocnRjU3RhdHMuaml0dGVyLmlzX2RlZmluZWQoKSkKLSAgICAgICAg
c3RhdHMuaml0dGVyID0gKnJ0Y1N0YXRzLmppdHRlcjsKLSAgICBpZiAocnRjU3RhdHMuZnJhY3Rp
b25fbG9zdC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZyYWN0aW9uTG9zdCA9ICpydGNT
dGF0cy5mcmFjdGlvbl9sb3N0OwotICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX2Rpc2NhcmRlZC5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhY2tldHNEaXNjYXJkZWQgPSAqcnRjU3RhdHMu
cGFja2V0c19kaXNjYXJkZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnBhY2tldHNfcmVwYWlyZWQuaXNf
ZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5wYWNrZXRzUmVwYWlyZWQgPSAqcnRjU3RhdHMucGFj
a2V0c19yZXBhaXJlZDsKLSAgICBpZiAocnRjU3RhdHMuYnVyc3RfcGFja2V0c19sb3N0LmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnVyc3RQYWNrZXRzTG9zdCA9ICpydGNTdGF0cy5idXJz
dF9wYWNrZXRzX2xvc3Q7Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVk
LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnVyc3RQYWNrZXRzRGlzY2FyZGVkID0gKnJ0
Y1N0YXRzLmJ1cnN0X3BhY2tldHNfZGlzY2FyZGVkOwotICAgIGlmIChydGNTdGF0cy5idXJzdF9s
b3NzX2NvdW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnVyc3RMb3NzQ291bnQgPSAq
cnRjU3RhdHMuYnVyc3RfbG9zc19jb3VudDsKLSAgICBpZiAocnRjU3RhdHMuYnVyc3RfZGlzY2Fy
ZF9jb3VudC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmJ1cnN0RGlzY2FyZENvdW50ID0g
KnJ0Y1N0YXRzLmJ1cnN0X2Rpc2NhcmRfY291bnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2xv
c3NfcmF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmJ1cnN0TG9zc1JhdGUgPSAqcnRj
U3RhdHMuYnVyc3RfbG9zc19yYXRlOwotICAgIGlmIChydGNTdGF0cy5idXJzdF9kaXNjYXJkX3Jh
dGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5idXJzdERpc2NhcmRSYXRlID0gKnJ0Y1N0
YXRzLmJ1cnN0X2Rpc2NhcmRfcmF0ZTsKLSAgICBpZiAocnRjU3RhdHMuZ2FwX2xvc3NfcmF0ZS5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmdhcExvc3NSYXRlID0gKnJ0Y1N0YXRzLmdhcF9s
b3NzX3JhdGU7Ci0gICAgaWYgKHJ0Y1N0YXRzLmdhcF9kaXNjYXJkX3JhdGUuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5nYXBEaXNjYXJkUmF0ZSA9ICpydGNTdGF0cy5nYXBfZGlzY2FyZF9y
YXRlOwotICAgIGlmIChydGNTdGF0cy5mcmFtZXNfZGVjb2RlZC5pc19kZWZpbmVkKCkpCi0gICAg
ICAgIHN0YXRzLmZyYW1lc0RlY29kZWQgPSAqcnRjU3RhdHMuZnJhbWVzX2RlY29kZWQ7Ci19Cisg
ICAgYXV0byBjb2xsZWN0b3IgPSBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShh
dXRvJiYgcmVwb3J0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpIHx8ICFyZXBvcnQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsT3V0Ym91bmRS
VFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IHdlYnJ0Yzo6UlRDT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyYgcnRjU3RhdHMpCi17
Ci0gICAgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKHN0YXRzLCBydGNTdGF0cyk7Ci0KLSAgICBpZiAo
cnRjU3RhdHMucGFja2V0c19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucGFja2V0
c1NlbnQgPSAqcnRjU3RhdHMucGFja2V0c19zZW50OwotICAgIGlmIChydGNTdGF0cy5ieXRlc19z
ZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRzLmJ5
dGVzX3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlLmlzX2RlZmluZWQoKSkK
LSAgICAgICAgc3RhdHMudGFyZ2V0Qml0cmF0ZSA9ICpydGNTdGF0cy50YXJnZXRfYml0cmF0ZTsK
LSAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2VuY29kZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBz
dGF0cy5mcmFtZXNFbmNvZGVkID0gKnJ0Y1N0YXRzLmZyYW1lc19lbmNvZGVkOwotfQotCi1zdGF0
aWMgaW5saW5lIHZvaWQgZmlsbFJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyhSVENTdGF0c1JlcG9y
dDo6TWVkaWFTdHJlYW1UcmFja1N0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENNZWRpYVN0
cmVhbVRyYWNrU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRj
U3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy50cmFja0lkZW50aWZpZXIgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0
cy50cmFja19pZGVudGlmaWVyKTsKLSAgICBpZiAocnRjU3RhdHMucmVtb3RlX3NvdXJjZS5pc19k
ZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnJlbW90ZVNvdXJjZSA9ICpydGNTdGF0cy5yZW1vdGVf
c291cmNlOwotICAgIGlmIChydGNTdGF0cy5lbmRlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0
YXRzLmVuZGVkID0gKnJ0Y1N0YXRzLmVuZGVkOwotICAgIGlmIChydGNTdGF0cy5kZXRhY2hlZC5p
c19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmRldGFjaGVkID0gKnJ0Y1N0YXRzLmRldGFjaGVk
OwotICAgIGlmIChydGNTdGF0cy5mcmFtZV93aWR0aC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0
YXRzLmZyYW1lV2lkdGggPSAqcnRjU3RhdHMuZnJhbWVfd2lkdGg7Ci0gICAgaWYgKHJ0Y1N0YXRz
LmZyYW1lX2hlaWdodC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZyYW1lSGVpZ2h0ID0g
KnJ0Y1N0YXRzLmZyYW1lX2hlaWdodDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3Blcl9zZWNv
bmQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mcmFtZXNQZXJTZWNvbmQgPSAqcnRjU3Rh
dHMuZnJhbWVzX3Blcl9zZWNvbmQ7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19zZW50LmlzX2Rl
ZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzU2VudCA9ICpydGNTdGF0cy5mcmFtZXNfc2Vu
dDsKLSAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMuZnJhbWVzUmVjZWl2ZWQgPSAqcnRjU3RhdHMuZnJhbWVzX3JlY2VpdmVkOwotICAg
IGlmIChydGNTdGF0cy5mcmFtZXNfZGVjb2RlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRz
LmZyYW1lc0RlY29kZWQgPSAqcnRjU3RhdHMuZnJhbWVzX2RlY29kZWQ7Ci0gICAgaWYgKHJ0Y1N0
YXRzLmZyYW1lc19kcm9wcGVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZnJhbWVzRHJv
cHBlZCA9ICpydGNTdGF0cy5mcmFtZXNfZHJvcHBlZDsKLSAgICBpZiAocnRjU3RhdHMucGFydGlh
bF9mcmFtZXNfbG9zdC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnBhcnRpYWxGcmFtZXNM
b3N0ID0gKnJ0Y1N0YXRzLnBhcnRpYWxfZnJhbWVzX2xvc3Q7Ci0gICAgaWYgKHJ0Y1N0YXRzLmZ1
bGxfZnJhbWVzX2xvc3QuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5mdWxsRnJhbWVzTG9z
dCA9ICpydGNTdGF0cy5mdWxsX2ZyYW1lc19sb3N0OwotICAgIGlmIChydGNTdGF0cy5hdWRpb19s
ZXZlbC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmF1ZGlvTGV2ZWwgPSAqcnRjU3RhdHMu
YXVkaW9fbGV2ZWw7Ci0gICAgaWYgKHJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3MuaXNfZGVmaW5l
ZCgpKQotICAgICAgICBzdGF0cy5lY2hvUmV0dXJuTG9zcyA9ICpydGNTdGF0cy5lY2hvX3JldHVy
bl9sb3NzOwotICAgIGlmIChydGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50Lmlz
X2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuZWNob1JldHVybkxvc3NFbmhhbmNlbWVudCA9ICpy
dGNTdGF0cy5lY2hvX3JldHVybl9sb3NzX2VuaGFuY2VtZW50OwotfQotCi1zdGF0aWMgaW5saW5l
IHZvaWQgZmlsbFJUQ0RhdGFDaGFubmVsU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFubmVs
U3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0RhdGFDaGFubmVsU3RhdHMmIHJ0Y1N0YXRz
KQotewotICAgIGZpbGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0
YXRzLmxhYmVsLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubGFiZWwgPSBmcm9tU3RkU3Ry
aW5nKCpydGNTdGF0cy5sYWJlbCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLnByb3RvY29sLmlzX2RlZmlu
ZWQoKSkKLSAgICAgICAgc3RhdHMucHJvdG9jb2wgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5w
cm90b2NvbCk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQuaXNfZGVmaW5lZCgpKQot
ICAgICAgICBzdGF0cy5kYXRhY2hhbm5lbGlkID0gKnJ0Y1N0YXRzLmRhdGFjaGFubmVsaWQ7Ci0g
ICAgaWYgKHJ0Y1N0YXRzLnN0YXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuc3RhdGUg
PSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5zdGF0ZSk7Ci0gICAgaWYgKHJ0Y1N0YXRzLm1lc3Nh
Z2VzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5tZXNzYWdlc1NlbnQgPSAqcnRj
U3RhdHMubWVzc2FnZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMuYnl0ZXNfc2VudC5pc19kZWZp
bmVkKCkpCi0gICAgICAgIHN0YXRzLmJ5dGVzU2VudCA9ICpydGNTdGF0cy5ieXRlc19zZW50Owot
ICAgIGlmIChydGNTdGF0cy5tZXNzYWdlc19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAgICAg
IHN0YXRzLm1lc3NhZ2VzUmVjZWl2ZWQgPSAqcnRjU3RhdHMubWVzc2FnZXNfcmVjZWl2ZWQ7Ci0g
ICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMuYnl0ZXNSZWNlaXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKLX0KLQotc3RhdGlj
IGlubGluZSBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlIGljZUNhbmRpZGF0
ZVBhaXJTdGF0ZShjb25zdCBzdGQ6OnN0cmluZyYgc3RhdGUpCi17Ci0gICAgaWYgKHN0YXRlID09
ICJmcm96ZW4iKQotICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBh
aXJTdGF0ZTo6RnJvemVuOwotICAgIGlmIChzdGF0ZSA9PSAid2FpdGluZyIpCi0gICAgICAgIHJl
dHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpXYWl0aW5nOwotICAg
IGlmIChzdGF0ZSA9PSAiaW4tcHJvZ3Jlc3MiKQotICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBv
cnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6SW5wcm9ncmVzczsKLSAgICBpZiAoc3RhdGUgPT0g
ImZhaWxlZCIpCi0gICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFp
clN0YXRlOjpGYWlsZWQ7Ci0gICAgaWYgKHN0YXRlID09ICJzdWNjZWVkZWQiKQotICAgICAgICBy
ZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0ZTo6U3VjY2VlZGVkOwot
ICAgIGlmIChzdGF0ZSA9PSAiY2FuY2VsbGVkIikKLSAgICAgICAgcmV0dXJuIFJUQ1N0YXRzUmVw
b3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkNhbmNlbGxlZDsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBhaXJTdGF0
ZTo6RnJvemVuOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0ljZUNhbmRpZGF0ZVBh
aXJTdGF0cyhSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRzJiBzdGF0cywgY29u
c3Qgd2VicnRjOjpSVENJY2VDYW5kaWRhdGVQYWlyU3RhdHMmIHJ0Y1N0YXRzKQotewotICAgIGZp
bGxSVENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOwotCi0gICAgaWYgKHJ0Y1N0YXRzLnRyYW5zcG9y
dF9pZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZnJvbVN0ZFN0
cmluZygqcnRjU3RhdHMudHJhbnNwb3J0X2lkKTsKLSAgICBpZiAocnRjU3RhdHMubG9jYWxfY2Fu
ZGlkYXRlX2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubG9jYWxDYW5kaWRhdGVJZCA9
IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxvY2FsX2NhbmRpZGF0ZV9pZCk7Ci0gICAgaWYgKHJ0
Y1N0YXRzLnJlbW90ZV9jYW5kaWRhdGVfaWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5y
ZW1vdGVDYW5kaWRhdGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnJlbW90ZV9jYW5kaWRh
dGVfaWQpOwotICAgIGlmIChydGNTdGF0cy5zdGF0ZS5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0
YXRzLnN0YXRlID0gaWNlQ2FuZGlkYXRlUGFpclN0YXRlKCpydGNTdGF0cy5zdGF0ZSk7Ci0KLSAg
ICBpZiAocnRjU3RhdHMucHJpb3JpdHkuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5wcmlv
cml0eSA9ICpydGNTdGF0cy5wcmlvcml0eTsKLSAgICBpZiAocnRjU3RhdHMubm9taW5hdGVkLmlz
X2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMubm9taW5hdGVkID0gKnJ0Y1N0YXRzLm5vbWluYXRl
ZDsKLSAgICBpZiAocnRjU3RhdHMud3JpdGFibGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0
cy53cml0YWJsZSA9ICpydGNTdGF0cy53cml0YWJsZTsKLSAgICBpZiAocnRjU3RhdHMucmVhZGFi
bGUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5yZWFkYWJsZSA9ICpydGNTdGF0cy5yZWFk
YWJsZTsKLQotICAgIGlmIChydGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAg
ICAgc3RhdHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7Ci0gICAgaWYgKHJ0Y1N0
YXRzLmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYnl0ZXNSZWNl
aXZlZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKLSAgICBpZiAocnRjU3RhdHMudG90YWxf
cm91bmRfdHJpcF90aW1lLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMudG90YWxSb3VuZFRy
aXBUaW1lID0gKnJ0Y1N0YXRzLnRvdGFsX3JvdW5kX3RyaXBfdGltZTsKLSAgICBpZiAocnRjU3Rh
dHMuY3VycmVudF9yb3VuZF90cmlwX3RpbWUuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5j
dXJyZW50Um91bmRUcmlwVGltZSA9ICpydGNTdGF0cy5jdXJyZW50X3JvdW5kX3RyaXBfdGltZTsK
LSAgICBpZiAocnRjU3RhdHMuYXZhaWxhYmxlX291dGdvaW5nX2JpdHJhdGUuaXNfZGVmaW5lZCgp
KQotICAgICAgICBzdGF0cy5hdmFpbGFibGVPdXRnb2luZ0JpdHJhdGUgPSAqcnRjU3RhdHMuYXZh
aWxhYmxlX291dGdvaW5nX2JpdHJhdGU7Ci0gICAgaWYgKHJ0Y1N0YXRzLmF2YWlsYWJsZV9pbmNv
bWluZ19iaXRyYXRlLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuYXZhaWxhYmxlSW5jb21p
bmdCaXRyYXRlID0gKnJ0Y1N0YXRzLmF2YWlsYWJsZV9pbmNvbWluZ19iaXRyYXRlOwotCi0gICAg
aWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3Rh
dHMucmVxdWVzdHNSZWNlaXZlZCA9ICpydGNTdGF0cy5yZXF1ZXN0c19yZWNlaXZlZDsKLSAgICBp
ZiAocnRjU3RhdHMucmVxdWVzdHNfc2VudC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnJl
cXVlc3RzU2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OwotICAgIGlmIChydGNTdGF0cy5y
ZXNwb25zZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5yZXNwb25zZXNS
ZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRz
LnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmVzcG9uc2VzU2Vu
dCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKLQotICAgIGlmIChydGNTdGF0cy5yZXF1ZXN0
c19yZWNlaXZlZC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLnJldHJhbnNtaXNzaW9uc1Jl
Y2VpdmVkID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkOwotICAgIGlmIChydGNTdGF0cy5y
ZXF1ZXN0c19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMucmV0cmFuc21pc3Npb25z
U2VudCA9ICpydGNTdGF0cy5yZXF1ZXN0c19zZW50OwotICAgIGlmIChydGNTdGF0cy5yZXNwb25z
ZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVzdHNS
ZWNlaXZlZCA9ICpydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQ7Ci0gICAgaWYgKHJ0Y1N0YXRz
LnJlc3BvbnNlc19zZW50LmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuY29uc2VudFJlcXVl
c3RzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKLSAgICBpZiAocnRjU3RhdHMucmVz
cG9uc2VzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuY29uc2VudFJlc3Bv
bnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZDsKLSAgICBpZiAocnRj
U3RhdHMucmVzcG9uc2VzX3NlbnQuaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5jb25zZW50
UmVzcG9uc2VzU2VudCA9ICpydGNTdGF0cy5yZXNwb25zZXNfc2VudDsKLX0KLQotc3RhdGljIGlu
bGluZSB2b2lkIGZpbGxSVENDZXJ0aWZpY2F0ZVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpDZXJ0aWZp
Y2F0ZVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpSVENDZXJ0aWZpY2F0ZVN0YXRzJiBydGNT
dGF0cykKLXsKLSAgICBmaWxsUlRDU3RhdHMoc3RhdHMsIHJ0Y1N0YXRzKTsKLQotICAgIGlmIChy
dGNTdGF0cy5maW5nZXJwcmludC5pc19kZWZpbmVkKCkpCi0gICAgICAgIHN0YXRzLmZpbmdlcnBy
aW50ID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnQpOwotICAgIGlmIChydGNT
dGF0cy5maW5nZXJwcmludF9hbGdvcml0aG0uaXNfZGVmaW5lZCgpKQotICAgICAgICBzdGF0cy5m
aW5nZXJwcmludEFsZ29yaXRobSA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmZpbmdlcnByaW50
X2FsZ29yaXRobSk7Ci0gICAgaWYgKHJ0Y1N0YXRzLmJhc2U2NF9jZXJ0aWZpY2F0ZS5pc19kZWZp
bmVkKCkpCi0gICAgICAgIHN0YXRzLmJhc2U2NENlcnRpZmljYXRlID0gZnJvbVN0ZFN0cmluZygq
cnRjU3RhdHMuYmFzZTY0X2NlcnRpZmljYXRlKTsKLSAgICBpZiAocnRjU3RhdHMuaXNzdWVyX2Nl
cnRpZmljYXRlX2lkLmlzX2RlZmluZWQoKSkKLSAgICAgICAgc3RhdHMuaXNzdWVyQ2VydGlmaWNh
dGVJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmlzc3Vlcl9jZXJ0aWZpY2F0ZV9pZCk7Ci19
Ci0KLXZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6U3RhdHNDb2xsZWN0b3I6Ok9uU3RhdHNE
ZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHNS
ZXBvcnQ+JiBydGNSZXBvcnQpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpTdGF0c0NvbGxl
Y3Rvcj4odGhpcyksIHJ0Y1JlcG9ydF0gewotICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9l
bmRwb2ludC0+aXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0
byByZXBvcnQgPSBSVENTdGF0c1JlcG9ydDo6Y3JlYXRlKCk7Ci0gICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fZW5kcG9pbnQtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmdldFN0YXRzU3VjY2VlZGVk
KHByb3RlY3RlZFRoaXMtPm1fcHJvbWlzZSwgcmVwb3J0LmNvcHlSZWYoKSk7Ci0gICAgICAgIEFT
U0VSVChyZXBvcnQtPmJhY2tpbmdNYXAoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBy
dGNTdGF0cyA6ICpydGNSZXBvcnQpIHsKLSAgICAgICAgICAgIGlmIChydGNTdGF0cy50eXBlKCkg
PT0gd2VicnRjOjpSVENJbmJvdW5kUlRQU3RyZWFtU3RhdHM6OmtUeXBlKSB7Ci0gICAgICAgICAg
ICAgICAgUlRDU3RhdHNSZXBvcnQ6OkluYm91bmRSVFBTdHJlYW1TdGF0cyBzdGF0czsKLSAgICAg
ICAgICAgICAgICBmaWxsSW5ib3VuZFJUUFN0cmVhbVN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxj
b25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyY+KHJ0Y1N0YXRzKSk7Ci0gICAg
ICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0
OjpJbmJvdW5kUlRQU3RyZWFtU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ091dGJvdW5kUlRQU3RyZWFt
U3RhdHM6OmtUeXBlKSB7Ci0gICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6Ok91dGJvdW5k
UlRQU3RyZWFtU3RhdHMgc3RhdHM7Ci0gICAgICAgICAgICAgICAgZmlsbE91dGJvdW5kUlRQU3Ry
ZWFtU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDT3V0Ym91bmRSVFBT
dHJlYW1TdGF0cyY+KHJ0Y1N0YXRzKSk7Ci0gICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0
czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJUUFN0cmVhbVN0YXRzPj4o
V1RGTW92ZShzdGF0cykpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkg
PT0gd2VicnRjOjpSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6OmtUeXBlKSB7Ci0gICAgICAgICAg
ICAgICAgUlRDU3RhdHNSZXBvcnQ6Ok1lZGlhU3RyZWFtVHJhY2tTdGF0cyBzdGF0czsKLSAgICAg
ICAgICAgICAgICBmaWxsUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzKHN0YXRzLCBzdGF0aWNfY2Fz
dDxjb25zdCB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyY+KHJ0Y1N0YXRzKSk7Ci0g
ICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVw
b3J0OjpNZWRpYVN0cmVhbVRyYWNrU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0RhdGFDaGFubmVsU3Rh
dHM6OmtUeXBlKSB7Ci0gICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFubmVs
U3RhdHMgc3RhdHM7Ci0gICAgICAgICAgICAgICAgZmlsbFJUQ0RhdGFDaGFubmVsU3RhdHMoc3Rh
dHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDRGF0YUNoYW5uZWxTdGF0cyY+KHJ0Y1N0
YXRzKSk7Ci0gICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJU
Q1N0YXRzUmVwb3J0OjpEYXRhQ2hhbm5lbFN0YXRzPj4oV1RGTW92ZShzdGF0cykpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2VicnRjOjpSVENJY2VDYW5kaWRh
dGVQYWlyU3RhdHM6OmtUeXBlKSB7Ci0gICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6Oklj
ZUNhbmRpZGF0ZVBhaXJTdGF0cyBzdGF0czsKLSAgICAgICAgICAgICAgICBmaWxsUlRDSWNlQ2Fu
ZGlkYXRlUGFpclN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0ljZUNh
bmRpZGF0ZVBhaXJTdGF0cyY+KHJ0Y1N0YXRzKSk7Ci0gICAgICAgICAgICAgICAgcmVwb3J0LT5h
ZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3Rh
dHM+PihXVEZNb3ZlKHN0YXRzKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5
cGUoKSA9PSB3ZWJydGM6OlJUQ0NlcnRpZmljYXRlU3RhdHM6OmtUeXBlKSB7Ci0gICAgICAgICAg
ICAgICAgUlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHMgc3RhdHM7Ci0gICAgICAgICAg
ICAgICAgZmlsbFJUQ0NlcnRpZmljYXRlU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdl
YnJ0Yzo6UlRDQ2VydGlmaWNhdGVTdGF0cyY+KHJ0Y1N0YXRzKSk7Ci0gICAgICAgICAgICAgICAg
cmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpDZXJ0aWZpY2F0
ZVN0YXRzPj4oV1RGTW92ZShzdGF0cykpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj4ocmVwb3J0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBjb2xs
ZWN0b3IgPSBXVEZNb3ZlKGNvbGxlY3RvcildIHsKKyAgICAgICAgaWYgKG1fYmFja2VuZCkKKyAg
ICAgICAgICAgIG1fYmFja2VuZC0+R2V0U3RhdHMoY29sbGVjdG9yLmdldCgpKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IDhhZTQ4
ZGU2MzA0YTQ5YjQ0NDdmNDNiZmMyOTA1YzcyYzJmYWZjNzcuLmI3MTc0OTVmMThjNWNiM2M3OGMy
MmJmYWI5ZWFkZWVlNGVhZjczZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2Ny
aXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpOwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihj
b25zdCBSVENPZmZlck9wdGlvbnMmKTsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKCk7Ci0gICAg
dm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgY29uc3QgRGVmZXJyZWRQcm9taXNlJik7
CisgICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRl
RGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAg
ICAgYm9vbCBhZGRJY2VDYW5kaWRhdGUod2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UmIGNh
bmRpZGF0ZSkgeyByZXR1cm4gbV9iYWNrZW5kLT5BZGRJY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7
IH0KIApAQCAtMTU0LDIwICsxNTQsNiBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgc3RhdHNMb2dJ
bnRlcnZhbChpbnQ2NF90KSBjb25zdDsKICNlbmRpZgogCi0gICAgY2xhc3MgU3RhdHNDb2xsZWN0
b3IgOiBwdWJsaWMgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBydGM6OnNjb3BlZF9yZWZwdHI8U3RhdHNDb2xsZWN0b3I+IGNy
ZWF0ZShSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4mJiBlbmRwb2ludCwgY29uc3QgRGVmZXJy
ZWRQcm9taXNlJiBwcm9taXNlLCBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykgeyByZXR1cm4gbmV3
IHJ0Yzo6UmVmQ291bnRlZE9iamVjdDxTdGF0c0NvbGxlY3Rvcj4oV1RGTW92ZShlbmRwb2ludCks
IHByb21pc2UsIHRyYWNrKTsgfQotCi0gICAgICAgIFN0YXRzQ29sbGVjdG9yKFJlZjxMaWJXZWJS
VENNZWRpYUVuZHBvaW50PiYmLCBjb25zdCBEZWZlcnJlZFByb21pc2UmLCBNZWRpYVN0cmVhbVRy
YWNrKik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIE9uU3RhdHNEZWxpdmVyZWQoY29u
c3QgcnRjOjpzY29wZWRfcmVmcHRyPGNvbnN0IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JikgZmlu
YWw7Ci0KLSAgICAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1fZW5kcG9pbnQ7Ci0g
ICAgICAgIGNvbnN0IERlZmVycmVkUHJvbWlzZSYgbV9wcm9taXNlOwotICAgICAgICBTdHJpbmcg
bV9pZDsKLSAgICB9OwotCiAgICAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBtX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZDsKICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUlu
dGVyZmFjZSYgbV9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IG1fYmFja2VuZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIy
YmExNTBjNGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLjQ1ODBhNDQ3NmJiNDU1NjUx
MDk1MzcyNzg2MTRjZGQ1NWViNjVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTgg
QXBwbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw2
IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkljZUNhbmRpZGF0ZS5oIgot
I2luY2x1ZGUgIkpTUlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCiAjaW5j
bHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIKQEAgLTEyOCwyNiArMTI3LDcgQEAg
Ym9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldENvbmZpZ3VyYXRpb24oTWVk
aWFFbmRwb2ludENvbmZpZ3VyYXRpb24KIAogdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fZW5kcG9pbnQtPmlzU3RvcHBlZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBzdGF0c1Byb21pc2UgPSBwcm9taXNlLmdldCgpOwot
ICAgIG1fc3RhdHNQcm9taXNlcy5hZGQoJnN0YXRzUHJvbWlzZSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgbV9lbmRwb2ludC0+Z2V0U3RhdHModHJhY2ssIHN0YXRzUHJvbWlzZSk7Ci19Ci0KLXZv
aWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRTdGF0c1N1Y2NlZWRlZChjb25z
dCBEZWZlcnJlZFByb21pc2UmIHByb21pc2UsIFJlZjxSVENTdGF0c1JlcG9ydD4mJiByZXBvcnQp
Ci17Ci0gICAgYXV0byBzdGF0c1Byb21pc2UgPSBtX3N0YXRzUHJvbWlzZXMudGFrZSgmcHJvbWlz
ZSk7Ci0gICAgQVNTRVJUKHN0YXRzUHJvbWlzZSk7Ci0gICAgc3RhdHNQcm9taXNlLnZhbHVlKCkt
PnJlc29sdmU8SURMSW50ZXJmYWNlPFJUQ1N0YXRzUmVwb3J0Pj4oV1RGTW92ZShyZXBvcnQpKTsK
LX0KLQotdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzRmFpbGVk
KGNvbnN0IERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQot
ewotICAgIGF1dG8gc3RhdHNQcm9taXNlID0gbV9zdGF0c1Byb21pc2VzLnRha2UoJnByb21pc2Up
OwotICAgIEFTU0VSVChzdGF0c1Byb21pc2UpOwotICAgIHN0YXRzUHJvbWlzZS52YWx1ZSgpLT5y
ZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICBtX2VuZHBvaW50LT5nZXRTdGF0cyh0cmFj
aywgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpkb1NldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKQEAgLTIwMCw3ICsxODAsNiBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZG9TdG9wKCkKIAogICAgIG1fYXVkaW9Tb3VyY2VzLmNsZWFyKCk7CiAgICAgbV92
aWRlb1NvdXJjZXMuY2xlYXIoKTsKLSAgICBtX3N0YXRzUHJvbWlzZXMuY2xlYXIoKTsKICAgICBt
X3BlbmRpbmdSZWNlaXZlcnMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEzNzA5NTI1MjYxMmY0
YjBlYjYxMTY0ODRkMTRmYTMzMTAxLi40MzdiN2U2MGMwMDRmZjQ3NjU5OGQyOTM2YmE2N2VlYmQw
NWM2ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRWaWRlb1NvdXJj
ZShSZWY8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYmKTsKIAogICAgIHZvaWQgZ2V0U3Rh
dHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQcm9taXNlJiwgUmVmPFJUQ1N0YXRzUmVwb3J0PiYm
KTsKLSAgICB2b2lkIGdldFN0YXRzRmFpbGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIEV4Y2Vw
dGlvbiYmKTsKIAogICAgIGJvb2wgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBTZW5kZXImKSBmaW5h
bDsKICAgICB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXImKSBmaW5hbDsKQEAg
LTExMiw3ICsxMTEsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2U+PiBtX3BlbmRpbmdDYW5kaWRhdGVzOwogICAgIFZl
Y3RvcjxSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPj4gbV9hdWRpb1NvdXJjZXM7CiAg
ICAgVmVjdG9yPFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+PiBtX3ZpZGVvU291cmNl
czsKLSAgICBIYXNoTWFwPGNvbnN0IERlZmVycmVkUHJvbWlzZSosIFJlZjxEZWZlcnJlZFByb21p
c2U+PiBtX3N0YXRzUHJvbWlzZXM7CiAgICAgVmVjdG9yPFJlZjxSVENSdHBSZWNlaXZlcj4+IG1f
cGVuZGluZ1JlY2VpdmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1N0YXRz
Q29sbGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2RmN2JlZGI1MWE5MmNiMWU3MTkzMzEzNjE2OWI4
MGIxNzYzZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwCkBAIC0wLDAgKzEs
MzM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENTdGF0c0NvbGxlY3Rvci5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUg
IkpTUlRDU3RhdHNSZXBvcnQuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3I6OkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yKENvbGxlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2spCisgICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQoreworfQorCitM
aWJXZWJSVENTdGF0c0NvbGxlY3Rvcjo6fkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yKCkKK3sKKyAg
ICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbGJhY2soeyB9KTsKKyAgICB9KTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgZnJvbVN0
ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5ndGgoKSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBmaWxsUlRDU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OlN0YXRzJiBzdGF0cywgY29uc3Qg
d2VicnRjOjpSVENTdGF0cyYgcnRjU3RhdHMpCit7CisgICAgc3RhdHMudGltZXN0YW1wID0gUGVy
Zm9ybWFuY2U6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHMo
cnRjU3RhdHMudGltZXN0YW1wX3VzKCkpKS5taWxsaXNlY29uZHMoKTsKKyAgICBzdGF0cy5pZCA9
IGZyb21TdGRTdHJpbmcocnRjU3RhdHMuaWQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsUlRDUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OlJUQ1JUUFN0cmVhbVN0YXRzJiBz
dGF0cywgY29uc3Qgd2VicnRjOjpSVENSVFBTdHJlYW1TdGF0cyYgcnRjU3RhdHMpCit7CisgICAg
ZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7CisKKyAgICBpZiAocnRjU3RhdHMuc3NyYy5p
c19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnNzcmMgPSAqcnRjU3RhdHMuc3NyYzsKKyAgICBp
ZiAocnRjU3RhdHMuYXNzb2NpYXRlX3N0YXRzX2lkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3Rh
dHMuYXNzb2NpYXRlU3RhdHNJZCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmFzc29jaWF0ZV9z
dGF0c19pZCk7CisgICAgaWYgKHJ0Y1N0YXRzLmlzX3JlbW90ZS5pc19kZWZpbmVkKCkpCisgICAg
ICAgIHN0YXRzLmlzUmVtb3RlID0gKnJ0Y1N0YXRzLmlzX3JlbW90ZTsKKyAgICBpZiAocnRjU3Rh
dHMubWVkaWFfdHlwZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLm1lZGlhVHlwZSA9IGZy
b21TdGRTdHJpbmcoKnJ0Y1N0YXRzLm1lZGlhX3R5cGUpOworICAgIGlmIChydGNTdGF0cy50cmFj
a19pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLm1lZGlhVHJhY2tJZCA9IGZyb21TdGRT
dHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkKTsKKyAgICBpZiAocnRjU3RhdHMudHJhbnNwb3J0X2lk
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMudHJhbnNwb3J0SWQgPSBmcm9tU3RkU3RyaW5n
KCpydGNTdGF0cy50cmFuc3BvcnRfaWQpOworICAgIGlmIChydGNTdGF0cy5jb2RlY19pZC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmNvZGVjSWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0
cy5jb2RlY19pZCk7CisgICAgaWYgKHJ0Y1N0YXRzLmZpcl9jb3VudC5pc19kZWZpbmVkKCkpCisg
ICAgICAgIHN0YXRzLmZpckNvdW50ID0gKnJ0Y1N0YXRzLmZpcl9jb3VudDsKKyAgICBpZiAocnRj
U3RhdHMucGxpX2NvdW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGxpQ291bnQgPSAq
cnRjU3RhdHMucGxpX2NvdW50OworICAgIGlmIChydGNTdGF0cy5uYWNrX2NvdW50LmlzX2RlZmlu
ZWQoKSkKKyAgICAgICAgc3RhdHMubmFja0NvdW50ID0gKnJ0Y1N0YXRzLm5hY2tfY291bnQ7Cisg
ICAgaWYgKHJ0Y1N0YXRzLnNsaV9jb3VudC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnNs
aUNvdW50ID0gKnJ0Y1N0YXRzLnNsaV9jb3VudDsKKyAgICBpZiAocnRjU3RhdHMucXBfc3VtLmlz
X2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucXBTdW0gPSAqcnRjU3RhdHMucXBfc3VtOworICAg
IHN0YXRzLnFwU3VtID0gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGxJbmJvdW5kUlRQ
U3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkluYm91bmRSVFBTdHJlYW1TdGF0cyYgc3RhdHMs
IGNvbnN0IHdlYnJ0Yzo6UlRDSW5ib3VuZFJUUFN0cmVhbVN0YXRzJiBydGNTdGF0cykKK3sKKyAg
ICBmaWxsUlRDUlRQU3RyZWFtU3RhdHMoc3RhdHMsIHJ0Y1N0YXRzKTsKKworICAgIGlmIChydGNT
dGF0cy5wYWNrZXRzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFja2V0
c1JlY2VpdmVkID0gKnJ0Y1N0YXRzLnBhY2tldHNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0YXRz
LmJ5dGVzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnl0ZXNSZWNlaXZl
ZCA9ICpydGNTdGF0cy5ieXRlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMucGFja2V0c19s
b3N0LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFja2V0c0xvc3QgPSAqcnRjU3RhdHMu
cGFja2V0c19sb3N0OworICAgIGlmIChydGNTdGF0cy5qaXR0ZXIuaXNfZGVmaW5lZCgpKQorICAg
ICAgICBzdGF0cy5qaXR0ZXIgPSAqcnRjU3RhdHMuaml0dGVyOworICAgIGlmIChydGNTdGF0cy5m
cmFjdGlvbl9sb3N0LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhY3Rpb25Mb3N0ID0g
KnJ0Y1N0YXRzLmZyYWN0aW9uX2xvc3Q7CisgICAgaWYgKHJ0Y1N0YXRzLnBhY2tldHNfZGlzY2Fy
ZGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFja2V0c0Rpc2NhcmRlZCA9ICpydGNT
dGF0cy5wYWNrZXRzX2Rpc2NhcmRlZDsKKyAgICBpZiAocnRjU3RhdHMucGFja2V0c19yZXBhaXJl
ZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnBhY2tldHNSZXBhaXJlZCA9ICpydGNTdGF0
cy5wYWNrZXRzX3JlcGFpcmVkOworICAgIGlmIChydGNTdGF0cy5idXJzdF9wYWNrZXRzX2xvc3Qu
aXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5idXJzdFBhY2tldHNMb3N0ID0gKnJ0Y1N0YXRz
LmJ1cnN0X3BhY2tldHNfbG9zdDsKKyAgICBpZiAocnRjU3RhdHMuYnVyc3RfcGFja2V0c19kaXNj
YXJkZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5idXJzdFBhY2tldHNEaXNjYXJkZWQg
PSAqcnRjU3RhdHMuYnVyc3RfcGFja2V0c19kaXNjYXJkZWQ7CisgICAgaWYgKHJ0Y1N0YXRzLmJ1
cnN0X2xvc3NfY291bnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5idXJzdExvc3NDb3Vu
dCA9ICpydGNTdGF0cy5idXJzdF9sb3NzX2NvdW50OworICAgIGlmIChydGNTdGF0cy5idXJzdF9k
aXNjYXJkX2NvdW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnVyc3REaXNjYXJkQ291
bnQgPSAqcnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9jb3VudDsKKyAgICBpZiAocnRjU3RhdHMuYnVy
c3RfbG9zc19yYXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuYnVyc3RMb3NzUmF0ZSA9
ICpydGNTdGF0cy5idXJzdF9sb3NzX3JhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmJ1cnN0X2Rpc2Nh
cmRfcmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmJ1cnN0RGlzY2FyZFJhdGUgPSAq
cnRjU3RhdHMuYnVyc3RfZGlzY2FyZF9yYXRlOworICAgIGlmIChydGNTdGF0cy5nYXBfbG9zc19y
YXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZ2FwTG9zc1JhdGUgPSAqcnRjU3RhdHMu
Z2FwX2xvc3NfcmF0ZTsKKyAgICBpZiAocnRjU3RhdHMuZ2FwX2Rpc2NhcmRfcmF0ZS5pc19kZWZp
bmVkKCkpCisgICAgICAgIHN0YXRzLmdhcERpc2NhcmRSYXRlID0gKnJ0Y1N0YXRzLmdhcF9kaXNj
YXJkX3JhdGU7CisgICAgaWYgKHJ0Y1N0YXRzLmZyYW1lc19kZWNvZGVkLmlzX2RlZmluZWQoKSkK
KyAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpydGNTdGF0cy5mcmFtZXNfZGVjb2RlZDsK
K30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0
YXRzUmVwb3J0OjpPdXRib3VuZFJUUFN0cmVhbVN0YXRzJiBzdGF0cywgY29uc3Qgd2VicnRjOjpS
VENPdXRib3VuZFJUUFN0cmVhbVN0YXRzJiBydGNTdGF0cykKK3sKKyAgICBmaWxsUlRDUlRQU3Ry
ZWFtU3RhdHMoc3RhdHMsIHJ0Y1N0YXRzKTsKKworICAgIGlmIChydGNTdGF0cy5wYWNrZXRzX3Nl
bnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5wYWNrZXRzU2VudCA9ICpydGNTdGF0cy5w
YWNrZXRzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLmJ5dGVzX3NlbnQuaXNfZGVmaW5lZCgpKQor
ICAgICAgICBzdGF0cy5ieXRlc1NlbnQgPSAqcnRjU3RhdHMuYnl0ZXNfc2VudDsKKyAgICBpZiAo
cnRjU3RhdHMudGFyZ2V0X2JpdHJhdGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy50YXJn
ZXRCaXRyYXRlID0gKnJ0Y1N0YXRzLnRhcmdldF9iaXRyYXRlOworICAgIGlmIChydGNTdGF0cy5m
cmFtZXNfZW5jb2RlZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZyYW1lc0VuY29kZWQg
PSAqcnRjU3RhdHMuZnJhbWVzX2VuY29kZWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxs
UlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpNZWRpYVN0cmVhbVRyYWNr
U3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyYgcnRj
U3RhdHMpCit7CisgICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBydGNTdGF0cyk7CisKKyAgICBpZiAo
cnRjU3RhdHMudHJhY2tfaWRlbnRpZmllci5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnRy
YWNrSWRlbnRpZmllciA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnRyYWNrX2lkZW50aWZpZXIp
OworICAgIGlmIChydGNTdGF0cy5yZW1vdGVfc291cmNlLmlzX2RlZmluZWQoKSkKKyAgICAgICAg
c3RhdHMucmVtb3RlU291cmNlID0gKnJ0Y1N0YXRzLnJlbW90ZV9zb3VyY2U7CisgICAgaWYgKHJ0
Y1N0YXRzLmVuZGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZW5kZWQgPSAqcnRjU3Rh
dHMuZW5kZWQ7CisgICAgaWYgKHJ0Y1N0YXRzLmRldGFjaGVkLmlzX2RlZmluZWQoKSkKKyAgICAg
ICAgc3RhdHMuZGV0YWNoZWQgPSAqcnRjU3RhdHMuZGV0YWNoZWQ7CisgICAgaWYgKHJ0Y1N0YXRz
LmZyYW1lX3dpZHRoLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVXaWR0aCA9ICpy
dGNTdGF0cy5mcmFtZV93aWR0aDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVfaGVpZ2h0LmlzX2Rl
ZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVIZWlnaHQgPSAqcnRjU3RhdHMuZnJhbWVfaGVp
Z2h0OworICAgIGlmIChydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29uZC5pc19kZWZpbmVkKCkpCisg
ICAgICAgIHN0YXRzLmZyYW1lc1BlclNlY29uZCA9ICpydGNTdGF0cy5mcmFtZXNfcGVyX3NlY29u
ZDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBz
dGF0cy5mcmFtZXNTZW50ID0gKnJ0Y1N0YXRzLmZyYW1lc19zZW50OworICAgIGlmIChydGNTdGF0
cy5mcmFtZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mcmFtZXNSZWNl
aXZlZCA9ICpydGNTdGF0cy5mcmFtZXNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0YXRzLmZyYW1l
c19kZWNvZGVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZnJhbWVzRGVjb2RlZCA9ICpy
dGNTdGF0cy5mcmFtZXNfZGVjb2RlZDsKKyAgICBpZiAocnRjU3RhdHMuZnJhbWVzX2Ryb3BwZWQu
aXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5mcmFtZXNEcm9wcGVkID0gKnJ0Y1N0YXRzLmZy
YW1lc19kcm9wcGVkOworICAgIGlmIChydGNTdGF0cy5wYXJ0aWFsX2ZyYW1lc19sb3N0LmlzX2Rl
ZmluZWQoKSkKKyAgICAgICAgc3RhdHMucGFydGlhbEZyYW1lc0xvc3QgPSAqcnRjU3RhdHMucGFy
dGlhbF9mcmFtZXNfbG9zdDsKKyAgICBpZiAocnRjU3RhdHMuZnVsbF9mcmFtZXNfbG9zdC5pc19k
ZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZ1bGxGcmFtZXNMb3N0ID0gKnJ0Y1N0YXRzLmZ1bGxf
ZnJhbWVzX2xvc3Q7CisgICAgaWYgKHJ0Y1N0YXRzLmF1ZGlvX2xldmVsLmlzX2RlZmluZWQoKSkK
KyAgICAgICAgc3RhdHMuYXVkaW9MZXZlbCA9ICpydGNTdGF0cy5hdWRpb19sZXZlbDsKKyAgICBp
ZiAocnRjU3RhdHMuZWNob19yZXR1cm5fbG9zcy5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRz
LmVjaG9SZXR1cm5Mb3NzID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3M7CisgICAgaWYgKHJ0
Y1N0YXRzLmVjaG9fcmV0dXJuX2xvc3NfZW5oYW5jZW1lbnQuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5lY2hvUmV0dXJuTG9zc0VuaGFuY2VtZW50ID0gKnJ0Y1N0YXRzLmVjaG9fcmV0dXJu
X2xvc3NfZW5oYW5jZW1lbnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDRGF0YUNo
YW5uZWxTdGF0cyhSVENTdGF0c1JlcG9ydDo6RGF0YUNoYW5uZWxTdGF0cyYgc3RhdHMsIGNvbnN0
IHdlYnJ0Yzo6UlRDRGF0YUNoYW5uZWxTdGF0cyYgcnRjU3RhdHMpCit7CisgICAgZmlsbFJUQ1N0
YXRzKHN0YXRzLCBydGNTdGF0cyk7CisKKyAgICBpZiAocnRjU3RhdHMubGFiZWwuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5sYWJlbCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLmxhYmVs
KTsKKyAgICBpZiAocnRjU3RhdHMucHJvdG9jb2wuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0
cy5wcm90b2NvbCA9IGZyb21TdGRTdHJpbmcoKnJ0Y1N0YXRzLnByb3RvY29sKTsKKyAgICBpZiAo
cnRjU3RhdHMuZGF0YWNoYW5uZWxpZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmRhdGFj
aGFubmVsaWQgPSAqcnRjU3RhdHMuZGF0YWNoYW5uZWxpZDsKKyAgICBpZiAocnRjU3RhdHMuc3Rh
dGUuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5zdGF0ZSA9IGZyb21TdGRTdHJpbmcoKnJ0
Y1N0YXRzLnN0YXRlKTsKKyAgICBpZiAocnRjU3RhdHMubWVzc2FnZXNfc2VudC5pc19kZWZpbmVk
KCkpCisgICAgICAgIHN0YXRzLm1lc3NhZ2VzU2VudCA9ICpydGNTdGF0cy5tZXNzYWdlc19zZW50
OworICAgIGlmIChydGNTdGF0cy5ieXRlc19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3Rh
dHMuYnl0ZXNTZW50ID0gKnJ0Y1N0YXRzLmJ5dGVzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLm1l
c3NhZ2VzX3JlY2VpdmVkLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMubWVzc2FnZXNSZWNl
aXZlZCA9ICpydGNTdGF0cy5tZXNzYWdlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMuYnl0
ZXNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0g
KnJ0Y1N0YXRzLmJ5dGVzX3JlY2VpdmVkOworfQorCitzdGF0aWMgaW5saW5lIFJUQ1N0YXRzUmVw
b3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGUgaWNlQ2FuZGlkYXRlUGFpclN0YXRlKGNvbnN0IHN0
ZDo6c3RyaW5nJiBzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUgPT0gImZyb3plbiIpCisgICAgICAg
IHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Cisg
ICAgaWYgKHN0YXRlID09ICJ3YWl0aW5nIikKKyAgICAgICAgcmV0dXJuIFJUQ1N0YXRzUmVwb3J0
OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OldhaXRpbmc7CisgICAgaWYgKHN0YXRlID09ICJpbi1w
cm9ncmVzcyIpCisgICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFp
clN0YXRlOjpJbnByb2dyZXNzOworICAgIGlmIChzdGF0ZSA9PSAiZmFpbGVkIikKKyAgICAgICAg
cmV0dXJuIFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdGU6OkZhaWxlZDsKKyAg
ICBpZiAoc3RhdGUgPT0gInN1Y2NlZWRlZCIpCisgICAgICAgIHJldHVybiBSVENTdGF0c1JlcG9y
dDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpTdWNjZWVkZWQ7CisgICAgaWYgKHN0YXRlID09ICJj
YW5jZWxsZWQiKQorICAgICAgICByZXR1cm4gUlRDU3RhdHNSZXBvcnQ6OkljZUNhbmRpZGF0ZVBh
aXJTdGF0ZTo6Q2FuY2VsbGVkOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBSVENTdGF0c1JlcG9ydDo6SWNlQ2FuZGlkYXRlUGFpclN0YXRlOjpGcm96ZW47Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDSWNlQ2FuZGlkYXRlUGFpclN0YXRzKFJUQ1N0YXRzUmVw
b3J0OjpJY2VDYW5kaWRhdGVQYWlyU3RhdHMmIHN0YXRzLCBjb25zdCB3ZWJydGM6OlJUQ0ljZUNh
bmRpZGF0ZVBhaXJTdGF0cyYgcnRjU3RhdHMpCit7CisgICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBy
dGNTdGF0cyk7CisKKyAgICBpZiAocnRjU3RhdHMudHJhbnNwb3J0X2lkLmlzX2RlZmluZWQoKSkK
KyAgICAgICAgc3RhdHMudHJhbnNwb3J0SWQgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy50cmFu
c3BvcnRfaWQpOworICAgIGlmIChydGNTdGF0cy5sb2NhbF9jYW5kaWRhdGVfaWQuaXNfZGVmaW5l
ZCgpKQorICAgICAgICBzdGF0cy5sb2NhbENhbmRpZGF0ZUlkID0gZnJvbVN0ZFN0cmluZygqcnRj
U3RhdHMubG9jYWxfY2FuZGlkYXRlX2lkKTsKKyAgICBpZiAocnRjU3RhdHMucmVtb3RlX2NhbmRp
ZGF0ZV9pZC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJlbW90ZUNhbmRpZGF0ZUlkID0g
ZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMucmVtb3RlX2NhbmRpZGF0ZV9pZCk7CisgICAgaWYgKHJ0
Y1N0YXRzLnN0YXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuc3RhdGUgPSBpY2VDYW5k
aWRhdGVQYWlyU3RhdGUoKnJ0Y1N0YXRzLnN0YXRlKTsKKworICAgIGlmIChydGNTdGF0cy5wcmlv
cml0eS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnByaW9yaXR5ID0gKnJ0Y1N0YXRzLnBy
aW9yaXR5OworICAgIGlmIChydGNTdGF0cy5ub21pbmF0ZWQuaXNfZGVmaW5lZCgpKQorICAgICAg
ICBzdGF0cy5ub21pbmF0ZWQgPSAqcnRjU3RhdHMubm9taW5hdGVkOworICAgIGlmIChydGNTdGF0
cy53cml0YWJsZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLndyaXRhYmxlID0gKnJ0Y1N0
YXRzLndyaXRhYmxlOworICAgIGlmIChydGNTdGF0cy5yZWFkYWJsZS5pc19kZWZpbmVkKCkpCisg
ICAgICAgIHN0YXRzLnJlYWRhYmxlID0gKnJ0Y1N0YXRzLnJlYWRhYmxlOworCisgICAgaWYgKHJ0
Y1N0YXRzLmJ5dGVzX3NlbnQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5ieXRlc1NlbnQg
PSAqcnRjU3RhdHMuYnl0ZXNfc2VudDsKKyAgICBpZiAocnRjU3RhdHMuYnl0ZXNfcmVjZWl2ZWQu
aXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5ieXRlc1JlY2VpdmVkID0gKnJ0Y1N0YXRzLmJ5
dGVzX3JlY2VpdmVkOworICAgIGlmIChydGNTdGF0cy50b3RhbF9yb3VuZF90cmlwX3RpbWUuaXNf
ZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy50b3RhbFJvdW5kVHJpcFRpbWUgPSAqcnRjU3RhdHMu
dG90YWxfcm91bmRfdHJpcF90aW1lOworICAgIGlmIChydGNTdGF0cy5jdXJyZW50X3JvdW5kX3Ry
aXBfdGltZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmN1cnJlbnRSb3VuZFRyaXBUaW1l
ID0gKnJ0Y1N0YXRzLmN1cnJlbnRfcm91bmRfdHJpcF90aW1lOworICAgIGlmIChydGNTdGF0cy5h
dmFpbGFibGVfb3V0Z29pbmdfYml0cmF0ZS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmF2
YWlsYWJsZU91dGdvaW5nQml0cmF0ZSA9ICpydGNTdGF0cy5hdmFpbGFibGVfb3V0Z29pbmdfYml0
cmF0ZTsKKyAgICBpZiAocnRjU3RhdHMuYXZhaWxhYmxlX2luY29taW5nX2JpdHJhdGUuaXNfZGVm
aW5lZCgpKQorICAgICAgICBzdGF0cy5hdmFpbGFibGVJbmNvbWluZ0JpdHJhdGUgPSAqcnRjU3Rh
dHMuYXZhaWxhYmxlX2luY29taW5nX2JpdHJhdGU7CisKKyAgICBpZiAocnRjU3RhdHMucmVxdWVz
dHNfcmVjZWl2ZWQuaXNfZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZXF1ZXN0c1JlY2VpdmVk
ID0gKnJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkOworICAgIGlmIChydGNTdGF0cy5yZXF1ZXN0
c19zZW50LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMucmVxdWVzdHNTZW50ID0gKnJ0Y1N0
YXRzLnJlcXVlc3RzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5p
c19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLnJlc3BvbnNlc1JlY2VpdmVkID0gKnJ0Y1N0YXRz
LnJlc3BvbnNlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNf
ZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5yZXNwb25zZXNTZW50ID0gKnJ0Y1N0YXRzLnJlc3Bv
bnNlc19zZW50OworCisgICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3JlY2VpdmVkLmlzX2RlZmlu
ZWQoKSkKKyAgICAgICAgc3RhdHMucmV0cmFuc21pc3Npb25zUmVjZWl2ZWQgPSAqcnRjU3RhdHMu
cmVxdWVzdHNfcmVjZWl2ZWQ7CisgICAgaWYgKHJ0Y1N0YXRzLnJlcXVlc3RzX3NlbnQuaXNfZGVm
aW5lZCgpKQorICAgICAgICBzdGF0cy5yZXRyYW5zbWlzc2lvbnNTZW50ID0gKnJ0Y1N0YXRzLnJl
cXVlc3RzX3NlbnQ7CisgICAgaWYgKHJ0Y1N0YXRzLnJlc3BvbnNlc19yZWNlaXZlZC5pc19kZWZp
bmVkKCkpCisgICAgICAgIHN0YXRzLmNvbnNlbnRSZXF1ZXN0c1JlY2VpdmVkID0gKnJ0Y1N0YXRz
LnJlc3BvbnNlc19yZWNlaXZlZDsKKyAgICBpZiAocnRjU3RhdHMucmVzcG9uc2VzX3NlbnQuaXNf
ZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25zZW50UmVxdWVzdHNTZW50ID0gKnJ0Y1N0YXRz
LnJlc3BvbnNlc19zZW50OworICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfcmVjZWl2ZWQuaXNf
ZGVmaW5lZCgpKQorICAgICAgICBzdGF0cy5jb25zZW50UmVzcG9uc2VzUmVjZWl2ZWQgPSAqcnRj
U3RhdHMucmVzcG9uc2VzX3JlY2VpdmVkOworICAgIGlmIChydGNTdGF0cy5yZXNwb25zZXNfc2Vu
dC5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmNvbnNlbnRSZXNwb25zZXNTZW50ID0gKnJ0
Y1N0YXRzLnJlc3BvbnNlc19zZW50OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJUQ0Nl
cnRpZmljYXRlU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHMmIHN0YXRzLCBj
b25zdCB3ZWJydGM6OlJUQ0NlcnRpZmljYXRlU3RhdHMmIHJ0Y1N0YXRzKQoreworICAgIGZpbGxS
VENTdGF0cyhzdGF0cywgcnRjU3RhdHMpOworCisgICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50
LmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3RhdHMuZmluZ2VycHJpbnQgPSBmcm9tU3RkU3RyaW5n
KCpydGNTdGF0cy5maW5nZXJwcmludCk7CisgICAgaWYgKHJ0Y1N0YXRzLmZpbmdlcnByaW50X2Fs
Z29yaXRobS5pc19kZWZpbmVkKCkpCisgICAgICAgIHN0YXRzLmZpbmdlcnByaW50QWxnb3JpdGht
ID0gZnJvbVN0ZFN0cmluZygqcnRjU3RhdHMuZmluZ2VycHJpbnRfYWxnb3JpdGhtKTsKKyAgICBp
ZiAocnRjU3RhdHMuYmFzZTY0X2NlcnRpZmljYXRlLmlzX2RlZmluZWQoKSkKKyAgICAgICAgc3Rh
dHMuYmFzZTY0Q2VydGlmaWNhdGUgPSBmcm9tU3RkU3RyaW5nKCpydGNTdGF0cy5iYXNlNjRfY2Vy
dGlmaWNhdGUpOworICAgIGlmIChydGNTdGF0cy5pc3N1ZXJfY2VydGlmaWNhdGVfaWQuaXNfZGVm
aW5lZCgpKQorICAgICAgICBzdGF0cy5pc3N1ZXJDZXJ0aWZpY2F0ZUlkID0gZnJvbVN0ZFN0cmlu
ZygqcnRjU3RhdHMuaXNzdWVyX2NlcnRpZmljYXRlX2lkKTsKK30KK3ZvaWQgTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3I6Ok9uU3RhdHNEZWxpdmVyZWQoY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPGNv
bnN0IHdlYnJ0Yzo6UlRDU3RhdHNSZXBvcnQ+JiBydGNSZXBvcnQpCit7CisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0
c0NvbGxlY3Rvcj4odGhpcyksIHJ0Y1JlcG9ydF0geworICAgICAgICBhdXRvIHJlcG9ydCA9IFJU
Q1N0YXRzUmVwb3J0OjpjcmVhdGUoKTsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2Nh
bGxiYWNrKHJlcG9ydC5jb3B5UmVmKCkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IEFTU0VSVChyZXBvcnQtPmJhY2tpbmdNYXAoKSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBydGNTdGF0cyA6ICpydGNSZXBvcnQpIHsKKyAgICAgICAgICAgIGlmIChydGNTdGF0cy50eXBl
KCkgPT0gd2VicnRjOjpSVENJbmJvdW5kUlRQU3RyZWFtU3RhdHM6OmtUeXBlKSB7CisgICAgICAg
ICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6OkluYm91bmRSVFBTdHJlYW1TdGF0cyBzdGF0czsKKyAg
ICAgICAgICAgICAgICBmaWxsSW5ib3VuZFJUUFN0cmVhbVN0YXRzKHN0YXRzLCBzdGF0aWNfY2Fz
dDxjb25zdCB3ZWJydGM6OlJUQ0luYm91bmRSVFBTdHJlYW1TdGF0cyY+KHJ0Y1N0YXRzKSk7Cisg
ICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVw
b3J0OjpJbmJvdW5kUlRQU3RyZWFtU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ091dGJvdW5kUlRQU3Ry
ZWFtU3RhdHM6OmtUeXBlKSB7CisgICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6Ok91dGJv
dW5kUlRQU3RyZWFtU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbE91dGJvdW5kUlRQ
U3RyZWFtU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDT3V0Ym91bmRS
VFBTdHJlYW1TdGF0cyY+KHJ0Y1N0YXRzKSk7CisgICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRT
dGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJUUFN0cmVhbVN0YXRz
Pj4oV1RGTW92ZShzdGF0cykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBl
KCkgPT0gd2VicnRjOjpSVENNZWRpYVN0cmVhbVRyYWNrU3RhdHM6OmtUeXBlKSB7CisgICAgICAg
ICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6Ok1lZGlhU3RyZWFtVHJhY2tTdGF0cyBzdGF0czsKKyAg
ICAgICAgICAgICAgICBmaWxsUlRDTWVkaWFTdHJlYW1UcmFja1N0YXRzKHN0YXRzLCBzdGF0aWNf
Y2FzdDxjb25zdCB3ZWJydGM6OlJUQ01lZGlhU3RyZWFtVHJhY2tTdGF0cyY+KHJ0Y1N0YXRzKSk7
CisgICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRz
UmVwb3J0OjpNZWRpYVN0cmVhbVRyYWNrU3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJ0Y1N0YXRzLnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0RhdGFDaGFubmVs
U3RhdHM6OmtUeXBlKSB7CisgICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6OkRhdGFDaGFu
bmVsU3RhdHMgc3RhdHM7CisgICAgICAgICAgICAgICAgZmlsbFJUQ0RhdGFDaGFubmVsU3RhdHMo
c3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0IHdlYnJ0Yzo6UlRDRGF0YUNoYW5uZWxTdGF0cyY+KHJ0
Y1N0YXRzKSk7CisgICAgICAgICAgICAgICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5
PFJUQ1N0YXRzUmVwb3J0OjpEYXRhQ2hhbm5lbFN0YXRzPj4oV1RGTW92ZShzdGF0cykpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChydGNTdGF0cy50eXBlKCkgPT0gd2VicnRjOjpSVENJY2VDYW5k
aWRhdGVQYWlyU3RhdHM6OmtUeXBlKSB7CisgICAgICAgICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6
OkljZUNhbmRpZGF0ZVBhaXJTdGF0cyBzdGF0czsKKyAgICAgICAgICAgICAgICBmaWxsUlRDSWNl
Q2FuZGlkYXRlUGFpclN0YXRzKHN0YXRzLCBzdGF0aWNfY2FzdDxjb25zdCB3ZWJydGM6OlJUQ0lj
ZUNhbmRpZGF0ZVBhaXJTdGF0cyY+KHJ0Y1N0YXRzKSk7CisgICAgICAgICAgICAgICAgcmVwb3J0
LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpJY2VDYW5kaWRhdGVQYWly
U3RhdHM+PihXVEZNb3ZlKHN0YXRzKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJ0Y1N0YXRz
LnR5cGUoKSA9PSB3ZWJydGM6OlJUQ0NlcnRpZmljYXRlU3RhdHM6OmtUeXBlKSB7CisgICAgICAg
ICAgICAgICAgUlRDU3RhdHNSZXBvcnQ6OkNlcnRpZmljYXRlU3RhdHMgc3RhdHM7CisgICAgICAg
ICAgICAgICAgZmlsbFJUQ0NlcnRpZmljYXRlU3RhdHMoc3RhdHMsIHN0YXRpY19jYXN0PGNvbnN0
IHdlYnJ0Yzo6UlRDQ2VydGlmaWNhdGVTdGF0cyY+KHJ0Y1N0YXRzKSk7CisgICAgICAgICAgICAg
ICAgcmVwb3J0LT5hZGRTdGF0czxJRExEaWN0aW9uYXJ5PFJUQ1N0YXRzUmVwb3J0OjpDZXJ0aWZp
Y2F0ZVN0YXRzPj4oV1RGTW92ZShzdGF0cykpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSk7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXVEYKKworCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM2NDYxN2Y5Njk1MDA4MjZlOTA1YjczZmNjZjhiNzUyOWQ1NmI1ZTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENTdGF0c0NvbGxlY3Rvci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFj
cm9zLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRp
YWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRj
L3BjL3J0Y3N0YXRzY29sbGVjdG9yLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDU3RhdHNSZXBvcnQ7CisKK2NsYXNzIExp
YldlYlJUQ1N0YXRzQ29sbGVjdG9yIDogcHVibGljIHdlYnJ0Yzo6UlRDU3RhdHNDb2xsZWN0b3JD
YWxsYmFjayB7CitwdWJsaWM6CisgICAgdXNpbmcgQ29sbGVjdG9yQ2FsbGJhY2sgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPGJvb2woUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiYmKT47CisgICAgc3Rh
dGljIHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rvcj4gY3JlYXRlKENv
bGxlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRP
YmplY3Q8TGliV2ViUlRDU3RhdHNDb2xsZWN0b3I+KFdURk1vdmUoY2FsbGJhY2spKTsgfQorCisg
ICAgZXhwbGljaXQgTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IoQ29sbGVjdG9yQ2FsbGJhY2smJik7
CisgICAgfkxpYldlYlJUQ1N0YXRzQ29sbGVjdG9yKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBP
blN0YXRzRGVsaXZlcmVkKGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCB3ZWJydGM6OlJU
Q1N0YXRzUmVwb3J0PiYpIGZpbmFsOworCisgICAgQ29sbGVjdG9yQ2FsbGJhY2sgbV9jYWxsYmFj
azsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJS
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWM4MWMzMWM5YzVlYTRiOWI1YTMyYTA3YjUzYzExY2E2ODFkNWI2My4uODVjY2Jk
OGEzN2FkMGM5ODIwNDVlNDA4MGUwMGRiNzdkOGI5ZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyNiw2ICsxMTI2LDcg
QEAKIAkJNDFEMTI5RDMxRjNEMEYxNjAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDEyOUND
MUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMTI5RDUxRjNEMEY2OTAw
RDE1RTQ3IC8qIENhY2hlU3RvcmFnZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxMjlENDFGM0QwRjY2MDBEMTVFNDcgLyogQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MUQxMjlEQjFGM0QxNDM4MDBEMTVFNDcgLyogRmV0Y2hIZWFkZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY4MzFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFEMjhEMEQyMTM5RTA1ODAwRjQyMDZGIC8qIExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDI4RDBCMjEzOUUwMUQwMEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0Nv
bGxlY3Rvci5jcHAgKi87IH07CiAJCTQxREVGQ0I2MUU1NkMxQkQwMDBEOUU1RiAvKiBKU0RPTU1h
cExpa2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
REVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCAqLzsgfTsKIAkJNDFFMUIx
RDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmggKi87IH07CkBAIC03MzM1LDYgKzczMzYsOCBAQAogCQk0MUQxMjlDQTFG
M0QwRUUzMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUQxMjlDQzFGM0QwRUUzMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDEyOUQ0MUYzRDBGNjYw
MEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUQyOEQwQjIxMzlFMDFEMDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3IuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMjhEMEMyMTM5RTAxRTAwRjQy
MDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFE
NTFCQjIxRTRFMkU4MTAwMTMxQTVCIC8qIExpYldlYlJUQ0F1ZGlvRm9ybWF0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ0F1ZGlvRm9ybWF0Lmg7IHBhdGggPSBs
aWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Gb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFERUZDQjIxRTU2QzFCOTAwMEQ5RTVGIC8qIEpTRE9NQmluZGluZ0ludGVybmFscy5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEpTRE9NQmluZGluZ0lu
dGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFERUZDQjMxRTU2QzFC
OTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RPTU1hcExpa2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY4MjgsNiArMTY4MzEsOCBAQAogCQkJCTQxNUEzQjczMjEzOEUyNjQwMDFCNEJBQSAvKiBM
aWJXZWJSVENPYnNlcnZlcnMuaCAqLywKIAkJCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQgLyog
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLywKIAkJCQk0MTc2MTJBRTFFM0E5
OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi8sCisJCQkJ
NDFEMjhEMEIyMTM5RTAxRDAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCAq
LywKKwkJCQk0MUQyOEQwQzIxMzlFMDFFMDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0
b3IuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTMxNzc2LDYgKzMxNzgxLDcgQEAKIAkJCQlERUNBN0U2NTFGOUVCRDgzMDBF
M0I2NjEgLyogVW5pZmllZFNvdXJjZTIzNC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0U2
NjFGOUVCRDgzMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTIzNS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERUNBN0U2NzFGOUVCRDgzMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTIzNi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MUQyOEQwRDIxMzlFMDU4MDBGNDIwNkYgLyogTGliV2ViUlRDU3Rh
dHNDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNjgxRjlFQkQ4MzAwRTNC
NjYxIC8qIFVuaWZpZWRTb3VyY2UyMzcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNjkx
RjlFQkQ4MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyMzguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJREVDQTdFNkExRjlFQkQ4MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyMzkuY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>