<?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>236767</bug_id>
          
          <creation_ts>2022-02-17 02:45:44 -0800</creation_ts>
          <short_desc>Multiple concurrency violations in LibWebRTCCodecsProxy</short_desc>
          <delta_ts>2022-03-03 01:53:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236832</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842796</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-17 02:45:44 -0800</bug_when>
    <thetext>Multiple concurrency violations in LibWebRTCCodecsProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842797</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-17 02:59:06 -0800</bug_when>
    <thetext>&lt;rdar://88904160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842798</commentid>
    <comment_count>2</comment_count>
      <attachid>452342</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-17 03:02:23 -0800</bug_when>
    <thetext>Created attachment 452342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843367</commentid>
    <comment_count>3</comment_count>
      <attachid>452512</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-18 05:21:53 -0800</bug_when>
    <thetext>Created attachment 452512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843853</commentid>
    <comment_count>4</comment_count>
      <attachid>452512</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-19 08:24:39 -0800</bug_when>
    <thetext>Comment on attachment 452512
Patch

Removing r? flag - it&apos;s already been reviewed by Antti. It looks like this is an EWS/landing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845566</commentid>
    <comment_count>5</comment_count>
      <attachid>453090</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-24 03:24:30 -0800</bug_when>
    <thetext>Created attachment 453090
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845970</commentid>
    <comment_count>6</comment_count>
      <attachid>453197</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-25 04:40:45 -0800</bug_when>
    <thetext>Created attachment 453197
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846285</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-26 00:14:06 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 453197 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846288</commentid>
    <comment_count>8</comment_count>
      <attachid>453289</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-26 01:36:42 -0800</bug_when>
    <thetext>Created attachment 453289
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846295</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-26 04:09:21 -0800</bug_when>
    <thetext>Committed r290547 (?): &lt;https://commits.webkit.org/r290547&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453289.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847020</commentid>
    <comment_count>10</comment_count>
      <attachid>453289</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-01 07:25:24 -0800</bug_when>
    <thetext>Comment on attachment 453289
Patch for landing

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

&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:281
&gt; +        ASSERT_IS_TESTING_IPC();

This is a new ASSERT that is currently hit in bots, I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847790</commentid>
    <comment_count>11</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-03 01:53:14 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #10)
&gt; Comment on attachment 453289 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453289&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:281
&gt; &gt; +        ASSERT_IS_TESTING_IPC();
&gt; 
&gt; This is a new ASSERT that is currently hit in bots, I&apos;ll fix it.

Thanks, sorry for the trouble..</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452342</attachid>
            <date>2022-02-17 03:02:23 -0800</date>
            <delta_ts>2022-02-18 06:23:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236767-20220217130221.patch</filename>
            <type>text/plain</type>
            <size>24361</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQxMGU4OWM1Y2Q1ZDVhMjRm
YjcwM2ExOTA0YWY3MTE2MDA4MzkzOGYuLmQ1N2NmNDEwMmU2MGM1MGJlN2FiOGU2M2MxZjk0YzIx
YjUyMzFkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDItMTcgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBjb25jdXJy
ZW5jeSB2aW9sYXRpb25zIGluIExpYldlYlJUQ0NvZGVjc1Byb3h5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NjcKKyAgICAgICAgPHJkYXI6Ly84
ODkwNDE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIFRocmVhZE1lc3NhZ2VSZWNlaXZlcnMgc2hvdWxkIG5vdCBhZGQgSVBDIGxpc3RlbmVycyBp
biBjb25zdHJ1Y3RvcnMsCisgICAgICAgIGFzIHRoZSBkZWxpdmVyeSBzdGFydHMgcmlnaHQgYXdh
eSBhbmQgdXNlcyB0aGUgdW5jb25zdHJ1Y3RlZCB2aXJ0dWFsIHBvaW50ZXIuCisgICAgICAgIC0g
VGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zIHNob3VsZCBub3QgdXNlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGFzIHRoYXQgaXMKKyAgICAgICAgbWFpbiB0aHJlYWQgb2JqZWN0LgorICAgICAg
ICAtIExvY2tlZCBtX2VuY29kZXJzLCBtX2RlY29kZXJzIGFyZSBzb21ldGltZXMgYWNjZXNzZWQg
d2l0aG91dCBsb2NrLgorCisgICAgICAgIEluc3RlYWQ6CisgICAgICAgIC0gQWRkIHRoZSBJUEMg
bGlzdGVuZXJzIGluIGluaXRpYWxpemUgZnVuY3Rpb24uCisgICAgICAgIC0gUmVtb3ZlIHRoZSBJ
UEMgbGlzdGVuZXJzIHdoZW4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNjb25uZWN0cy4K
KyAgICAgICAgLSBTdG9yZSB0aGUgdGhyZWFkLXNhZmUgY29uZWN0aW9uLCB2aWRlbyBmcmFtZSBv
YmplY3QgaGVhcCwgcHJvY2VzcyBpZGVudGl0eQorICAgICAgICBvYmplY3RzIGFzIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgIC0gRG8gbm90IGxvY2sgbV9lbmNvZGVycywgbV9kZWNvZGVycy4g
SWYgdGhleSBhcmUgd29yayBxdWV1ZSBpbnN0YW5jZXMsCisgICAgICAgIGp1c3QgYWNjZXNzIHRo
ZW0gaW4gdGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zLiBBZGQgdGhyZWFkIHJlcXVpcmVtZW50cwor
ICAgICAgICB0byB0aGUgdmFyaWFibGVzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGUg
YWNjZXNzLgorICAgICAgICAtIFVzZSBJUEMgdGVzdGluZyBhc3NlcnRpb25zIHdoZW4gc2tpcHBp
bmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgorICAgICAgICAtIFVzZSBzZXBhcmF0ZSBhdG9taWMgY291
bnRlciAoYm9vbCkgdG8gY2hlY2sgaWYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgd2l0aCBleGlzdGluZyB0ZXN0cyBhbmQgQVNB
Ti4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0Zv
cklQQyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZUgyNjREZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZVZQOURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpmaW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorCiAyMDIyLTAyLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ3Jhc2ggd2hpbGUgZGVzdHJveWluZyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IGRlMjNjNDQ0Y2MwNmU4M2RjOGJkNTJlMGI4YTRhNzRmN2Zl
MTgyNGYuLjJkZjA5ZTBmOWQ5ZTZiMDU4M2YwOGFlMThjNWM4ZDQ0NTgxM2YwNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTI4NCw5ICsyODQsNiBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLT5jbG9z
ZSgpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCi0gICAg
bV9saWJXZWJSVENDb2RlY3NQcm94eS0+Y2xvc2UoKTsKLSNlbmRpZgogCiAgICAgLS1nT2JqZWN0
Q291bnRGb3JUZXN0aW5nOwogfQpAQCAtMzIxLDcgKzMxOCw5IEBAIHZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAg
ICAgICBXQ0NvbnRlbnRCdWZmZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxDb250ZW50
QnVmZmVyc0ZvclByb2Nlc3Mod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIH0pOwogI2VuZGlm
Ci0KKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICBtX2xpYldlYlJU
Q0NvZGVjc1Byb3h5ID0gbnVsbHB0cjsKKyNlbmRpZgogICAgIGdwdVByb2Nlc3MoKS5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKGNvbm5lY3Rpb24pOwogICAgIGdwdVByb2Nlc3MoKS5yZW1v
dmVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsgLy8gTWF5IGRlc3Ryb3kgfHRoaXN8
LgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggOGI0ZDliNTQyOThiNDg5ZDYwZGMwNTM4NDgzOTEwODc0NmUxYTBj
Mi4uMGExY2ViZGZiODliOWZhMjlmYmZkMWQ3YzY2OWFiMzYxMmFjNWQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0zMTAsNyArMzEwLDcgQEAgcHJpdmF0ZToKICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVj
dEhlYXA7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKLSAg
ICBSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CisgICAg
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPExpYldlYlJUQ0NvZGVjc1Byb3h5
PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwogI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikK
ICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9u
QXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCBiNzU4NTBiOTMyOWI5NzE4Y2Y1NTVkZDY5YmUy
ZTcxODQwMDRlMzJmLi4wM2RjNDk2ODI1MzhhYWE5NmFmMzUwMDg4YTc3MjBlZWI0Yjg5YTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJTaGFy
ZWRWaWRlb0ZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGl0eS5oPgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBA
IC01NywxOCArNTksMTggQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNz
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRl
cjsKIAotY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9u
OjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKK2NsYXNzIExpYldlYlJUQ0NvZGVj
c1Byb3h5IGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyUmVmQ291bnRlZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIHByb2Nlc3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDQ29k
ZWNzUHJveHkocHJvY2VzcykpOyB9CisgICAgc3RhdGljIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94
eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAgICB+TGliV2ViUlRDQ29k
ZWNzUHJveHkoKTsKLQotICAgIHZvaWQgY2xvc2UoKTsKLQorICAgIHZvaWQgc3RvcExpc3Rlbmlu
Z0ZvcklQQyhSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwog
ICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJik7CisgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgYXV0byBjcmVhdGVEZWNvZGVy
Q2FsbGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKTsKIAog
ICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBk
aXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CkBAIC05MSwxOSArOTMs
MjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5j
b2RlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAgdm9p
ZCBzZXRSVENMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwpOwogCi0gICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAg
IFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsK
KyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogCiAgICAgc3Ry
dWN0IEVuY29kZXIgewogICAgICAgICB3ZWJydGM6OkxvY2FsRW5jb2RlciB3ZWJydGNFbmNvZGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkVmlkZW9GcmFtZVJl
YWRlcj4gZnJhbWVSZWFkZXI7CiAgICAgfTsKLSAgICBFbmNvZGVyKiBmaW5kRW5jb2RlcldpdGhv
dXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKyAgICBFbmNvZGVyKiBmaW5kRW5jb2RlcihS
VENFbmNvZGVySWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0xPQ0sobV9xdWV1ZVRocmVhZCk7CiAK
LSAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwotICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZp
ZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0
IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgSGFzaE1hcDxSVENF
bmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1
dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIFJlZjxXb3JrUXVl
dWU+IG1fcXVldWU7Ci0gICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwOworICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHdlYnJ0
Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9xdWV1ZVRo
cmVhZCk7CisgICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNv
ZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcXVldWVUaHJlYWQpOworICAgIHN0ZDo6YXRvbWlj
PGJvb2w+IG1faGFzRW5jb2RlcnNPckRlY29kZXJzIHsgZmFsc2UgfTsKKyAgICBOT19VTklRVUVf
QUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9xdWV1ZVRocmVhZDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCmluZGV4IGVkYzZkNjY2NjdiZGIzZmFhYTA3OWNjMzhhZTViZTQ2OTYwZDE3ZWIuLjQ0Y2E3
YjY0ZTBmOGNhNjFhNGJhNjYwZjYxNzUwZWM1NmNkNWIxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW1wb3J0ICJHUFVQcm9jZXNzLmgiCisjaW1wb3J0ICJJUENUZXN0ZXIuaCIKICNpbXBvcnQgIkxp
YldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgpAQCAtNDks
MjkgKzUwLDI5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1MaWJXZWJSVENDb2RlY3NQcm94
eTo6TGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbikKLSAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQotICAg
ICwgbV9xdWV1ZShjb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVENDb2RlY3NRdWV1ZSgp
KQotICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChjb25uZWN0aW9uLnZpZGVvRnJhbWVPYmpl
Y3RIZWFwKCkpCitSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24p
CiB7Ci0gICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHRoaXMpOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3
IExpYldlYlJUQ0NvZGVjc1Byb3h5KHdlYlByb2Nlc3NDb25uZWN0aW9uKSk7CisgICAgaW5zdGFu
Y2UtPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUxpYldlYlJUQ0Nv
ZGVjc1Byb3h5Ojp+TGliV2ViUlRDQ29kZWNzUHJveHkoKQorTGliV2ViUlRDQ29kZWNzUHJveHk6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nl
c3NDb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0aW9uKHdlYlByb2Nlc3NDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSkKKyAgICAsIG1fcXVldWUod2ViUHJvY2Vzc0Nvbm5lY3Rpb24uZ3B1UHJvY2Vz
cygpLmxpYldlYlJUQ0NvZGVjc1F1ZXVlKCkpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
KHdlYlByb2Nlc3NDb25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisgICAgLCBtX3Jl
c291cmNlT3duZXIod2ViUHJvY2Vzc0Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aXR5KCkpCiB7
CiB9CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQotewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUo
ZnVuY3Rpb24pKTsKLX0KK0xpYldlYlJUQ0NvZGVjc1Byb3h5Ojp+TGliV2ViUlRDQ29kZWNzUHJv
eHkoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKK3Zv
aWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPExpYldlYlJU
Q0NvZGVjc1Byb3h5PiYmIHJlZkZyb21Db25uZWN0aW9uKQogewotICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKLSAgICBkaXNwYXRj
aFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSB7CisgICAgICAgIGFz
c2VydElzQ3VycmVudChtX3F1ZXVlVGhyZWFkKTsKICAgICAgICAgYXV0byBkZWNvZGVycyA9IFdU
Rk1vdmUobV9kZWNvZGVycyk7CiAgICAgICAgIGZvciAoYXV0byBkZWNvZGVyIDogZGVjb2RlcnMu
dmFsdWVzKCkpCiAgICAgICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rl
cik7CkBAIC04MSw5ICs4MiwyNSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSgp
CiAgICAgfSk7CiB9CiAKLXN0YXRpYyBGdW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApPiBjcmVh
dGVEZWNvZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgYm9vbCB1c2VS
ZW1vdGVGcmFtZXMpCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXplKCkKK3sK
KyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1fcXVldWVUaHJlYWQucmVz
ZXQoKTsKKyAgICB9KTsKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
dGhpcyk7Cit9CisKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQo
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIG1fcXVldWUtPmRpc3BhdGNoKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKK30KKworYXV0byBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRl
RGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNl
UmVtb3RlRnJhbWVzKQogewotICAgIHJldHVybiBbY29ubmVjdGlvbiA9IFJlZiB7IGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIHJlc291cmNlT3duZXIgPSBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGl0eSgpLCB2aWRlb0ZyYW1lT2JqZWN0
SGVhcCA9IFJlZiB7IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhl
YXAoKSB9LCBpZGVudGlmaWVyLCB1c2VSZW1vdGVGcmFtZXNdIChDVlBpeGVsQnVmZmVyUmVmIHBp
eGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSAgbXV0
YWJsZSB7CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiB2aWRlb0ZyYW1l
T2JqZWN0SGVhcDsKKyAgICBpZiAodXNlUmVtb3RlRnJhbWVzKQorICAgICAgICB2aWRlb0ZyYW1l
T2JqZWN0SGVhcCA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAucHRyKCk7CisgICAgcmV0dXJuIFtp
ZGVudGlmaWVyLCBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uLCByZXNvdXJjZU93bmVyID0gbV9y
ZXNvdXJjZU93bmVyLCB2aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFdURk1vdmUodmlkZW9GcmFtZU9i
amVjdEhlYXApXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0
YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gc2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShwaXhlbEJ1
ZmZlciwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGZhbHNlLCBN
ZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpLCB7IH0pOwogICAgICAgICBpZiAoIXNhbXBsZSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTk2LDcgKzExMyw3IEBAIHN0YXRpYyBGdW5jdGlvbjx2b2lk
KENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50
MzJfCiAgICAgICAgICAgICByZW1vdGVTYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KHJlc291
cmNlT3duZXIpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXI+IHJlbW90ZUlkZW50aWZpZXI7Ci0gICAgICAgIGlmICh1c2VSZW1vdGVGcmFtZXMpIHsK
KyAgICAgICAgaWYgKHZpZGVvRnJhbWVPYmplY3RIZWFwKSB7CiAgICAgICAgICAgICByZW1vdGVJ
ZGVudGlmaWVyID0gdmlkZW9GcmFtZU9iamVjdEhlYXAtPmNyZWF0ZVJlbW90ZVZpZGVvRnJhbWUo
c2FtcGxlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5jbGVh
cklPU3VyZmFjZSgpOwogICAgICAgICB9CkBAIC0xMDcsMTA1ICsxMjQsMTA0IEBAIHN0YXRpYyBG
dW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVT
dGFtcE5zLCB1aW50MzJfCiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjRE
ZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJh
bWVzKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2
NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7Cisg
ICAgYXNzZXJ0SXNDdXJyZW50KG1fcXVldWVUaHJlYWQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9k
ZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjREZWNvZGVyKG1h
a2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgdXNlUmVtb3RlRnJh
bWVzKSkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkgfHwgaXNUZXN0aW5nSVBDKCkpOworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gdHJ1
ZTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRD
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7Ci0g
ICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKLSAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1f
ZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY1RGVjb2Rlciht
YWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBhc3NlcnRJ
c0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7CisgICAgYXV0byByZXN1bHQgPSBtX2RlY29kZXJzLmFk
ZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NURlY29kZXIobWFrZUJsb2NrUHRy
KGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCB1c2VSZW1vdGVGcmFtZXMpKS5nZXQo
KSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSB8fCBpc1Rl
c3RpbmdJUEMoKSk7CisgICAgbV9oYXNFbmNvZGVyc09yRGVjb2RlcnMgPSB0cnVlOwogfQogCiB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQogewotICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNT
RVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFk
ZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVjb2RlcihtYWtlQmxvY2tQdHIo
Y3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9x
dWV1ZVRocmVhZCk7CisgICAgYXV0byByZXN1bHQgPSBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVy
LCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsK
KyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRD
Q29kZWNzUHJveHk6OnJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKLSAgICBBU1NFUlQobV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
Ci0gICAgaWYgKGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMudGFrZShpZGVudGlmaWVyKSkKLSAg
ICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAgIGFzc2VydElz
Q3VycmVudChtX3F1ZXVlVGhyZWFkKTsKKyAgICBhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRh
a2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9JU19U
RVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdlYnJ0Yzo6cmVsZWFz
ZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9ICFt
X2VuY29kZXJzLmlzRW1wdHkoKSB8fCAhbV9kZWNvZGVycy5pc0VtcHR5KCk7CiB9CiAKLS8vIEZv
ciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZGVjb2RlcnMg
d2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMg
b24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9kZWNvZGVycyBvbmx5IGdldCBt
b2RpZmllZCBvbiB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZGVjb2Rl
RnJhbWUoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1w
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJU
KG1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGFzc2VydElzQ3VycmVudCht
X3F1ZXVlVGhyZWFkKTsKICAgICBhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChpZGVudGlm
aWVyKTsKLSAgICBpZiAoIWRlY29kZXIpCisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIEFT
U0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47Ci0KKyAgICB9CiAgICAgaWYg
KHdlYnJ0Yzo6ZGVjb2RlRnJhbWUoZGVjb2RlciwgdGltZVN0YW1wLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpKQotICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6RmFpbGVkRGVjb2RpbmcgeyBpZGVu
dGlmaWVyIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjczo6RmFpbGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyIH0sIDApOwogfQogCi0vLyBG
b3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2RlY29kZXJz
IHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5z
IG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZGVjb2RlcnMgb25seSBnZXQg
bW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEZy
YW1lU2l6ZShSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwg
dWludDE2X3QgaGVpZ2h0KSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiB7Ci0g
ICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7CiAg
ICAgYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFk
ZWNvZGVyKQorICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19J
UEMoKTsKICAgICAgICAgcmV0dXJuOwotCisgICAgfQogICAgIHdlYnJ0Yzo6c2V0RGVjb2RlckZy
YW1lU2l6ZShkZWNvZGVyLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6Y3JlYXRlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZvcm1hdE5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgcGFyYW1ldGVycywgYm9vbCB1c2VMb3dMYXRlbmN5KQogewotICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNT
RVJUKCFtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLQorICAgIGFzc2VydElzQ3Vy
cmVudChtX3F1ZXVlVGhyZWFkKTsKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+IHJ0Y1BhcmFtZXRlcnM7CiAgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBwYXJhbWV0ZXJz
KQogICAgICAgICBydGNQYXJhbWV0ZXJzLmVtcGxhY2UocGFyYW1ldGVyLmZpcnN0LnV0ZjgoKS5k
YXRhKCksIHBhcmFtZXRlci5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvKiBlbmNv
ZGVyID0gd2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB7
IGZvcm1hdE5hbWUudXRmOCgpLmRhdGEoKSwgcnRjUGFyYW1ldGVycyB9LCBtYWtlQmxvY2tQdHIo
W2Nvbm5lY3Rpb24gPSBSZWYgeyBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpIH0sIGlkZW50aWZpZXJdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNv
bnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbykgeworICAgIGF1dG8qIGVu
Y29kZXIgPSB3ZWJydGM6OmNyZWF0ZUxvY2FsRW5jb2Rlcih3ZWJydGM6OlNkcFZpZGVvRm9ybWF0
IHsgZm9ybWF0TmFtZS51dGY4KCkuZGF0YSgpLCBydGNQYXJhbWV0ZXJzIH0sIG1ha2VCbG9ja1B0
cihbY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwgaWRlbnRpZmllcl0oY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
JiBpbmZvKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjczo6Q29tcGxldGVkRW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBidWZmZXIsIHNpemUgfSwgaW5mbyB9LCAwKTsKICAgICB9KS5nZXQoKSk7CiAgICAgd2VicnRj
OjpzZXRMb2NhbEVuY29kZXJMb3dMYXRlbmN5KGVuY29kZXIsIHVzZUxvd0xhdGVuY3kpOwotICAg
IG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIEVuY29kZXIgeyBlbmNvZGVyLCBudWxscHRyIH0p
OworICAgIGF1dG8gcmVzdWx0ID0gbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgRW5jb2RlciB7
IGVuY29kZXIsIG51bGxwdHIgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVy
cyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVy
KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5S
dW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBBU1NFUlQobV9l
bmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fcXVl
dWVUaHJlYWQpOwogICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVudGlmaWVy
KTsKLSAgICBpZiAoZW5jb2Rlci53ZWJydGNFbmNvZGVyKQotICAgICAgICB3ZWJydGM6OnJlbGVh
c2VMb2NhbEVuY29kZXIoZW5jb2Rlci53ZWJydGNFbmNvZGVyKTsKKyAgICBpZiAoIWVuY29kZXIu
d2VicnRjRW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rl
ci53ZWJydGNFbmNvZGVyKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9ICFtX2VuY29k
ZXJzLmlzRW1wdHkoKSB8fCAhbV9kZWNvZGVycy5pc0VtcHR5KCk7CiB9CiAKLS8vIEZvciBwZXJm
b3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91
dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhl
IGxpYldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmll
ZCBvbiB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVu
Y29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVp
bnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRl
LCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCiB7Ci0gICAgYXV0
byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7Ci0gICAgaWYg
KCFlbmNvZGVyKQorICAgIGFzc2VydElzQ3VycmVudChtX3F1ZXVlVGhyZWFkKTsKKyAgICBhdXRv
KiBlbmNvZGVyID0gZmluZEVuY29kZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKSB7
CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47Ci0KKyAg
ICB9CiAgICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKGVuY29kZXItPndlYnJ0Y0Vu
Y29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0
ZSwgbWF4RnJhbWVyYXRlKTsKIH0KIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpmaW5kRW5jb2RlcldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK0xp
YldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZmluZEVu
Y29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fZW5jb2RlcnMuZmluZChpZGVu
dGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9lbmNvZGVycy5lbmQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMjgsMTAgKzI0NCw5IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRj
OjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBs
ZTo6CiAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKIH0KIAotLy8gRm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRo
b3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0
aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlm
aWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFt
ZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1Nh
bXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBs
ZVJlZmVyZW5jZSkKIHsKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7CiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyOwogICAgIGlmIChzYW1wbGVS
ZWZlcmVuY2UpIHsKICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
LT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxlUmVmZXJlbmNlKSwgMF9zKTsKQEAgLTI0MywxMCArMjU4
LDExIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6CiAgICAgICAgIHBpeGVsQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVm
ZmVyKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwogICAgIH0KIAotICAg
IEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvKiBl
bmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKLSAgICBpZiAoIWVu
Y29kZXIpCisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIpOworICAg
IGlmICghZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAo
c2FtcGxlLnN1cmZhY2UoKSkgewpAQCAtMjYyLDM5ICsyNzgsMzggQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZToKICNlbmRpZgogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBm
dW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZl
IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQot
Ly8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKLSAg
ICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7CisgICAgYXV0byogZW5jb2RlciA9IGZp
bmRFbmNvZGVyKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLT53ZWJydGNFbmNv
ZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29u
cywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhp
cyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2Rl
Y3NRdWV1ZQotLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1
ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhv
cmUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiBzZW1h
cGhvcmUpCiB7Ci0gICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikp
OwotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIp
OwotICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7
CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIpOworICAgIGlmICgh
ZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCiAgICAgICAgIGVu
Y29kZXItPmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPigp
OwogICAgIGVuY29kZXItPmZyYW1lUmVhZGVyLT5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhv
cmUpKTsKIH0KIAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNj
ZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRo
aXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2Vu
Y29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUpCiB7
Ci0gICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwotICAgIGF1
dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwotICAgIGlm
ICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZVRocmVhZCk7CisgICAgYXV0
byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2Rlcikg
eworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCiAgICAgICAgIGVuY29kZXItPmZy
YW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPigpOwpAQCAtMzAz
LDkgKzMxOCw4IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJh
bWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpCiAKIGJvb2wgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0g
ICAgcmV0dXJuIG1fZW5jb2RlcnMuaXNFbXB0eSgpICYmIG1fZGVjb2RlcnMuaXNFbXB0eSgpOwor
ICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICByZXR1cm4gIW1faGFzRW5jb2RlcnNPckRl
Y29kZXJzOwogfQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRSVENMb2dnaW5nTGV2
ZWwoV1RGTG9nTGV2ZWwgbGV2ZWwpCg==
</data>
<flag name="commit-queue"
          id="479575"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452512</attachid>
            <date>2022-02-18 05:21:53 -0800</date>
            <delta_ts>2022-02-24 03:24:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236767-20220218152151.patch</filename>
            <type>text/plain</type>
            <size>24209</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxZmVkYjUyZmFhMDI0MjY3
NjYyMjNkOTRiZTFjMDZjYmExYWNjZjEuLjdjMjJiN2ExZjUyMGYyNjEwMDJjY2ViMjJhYzEwZmMy
MTY0OTMyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDItMTggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBjb25jdXJy
ZW5jeSB2aW9sYXRpb25zIGluIExpYldlYlJUQ0NvZGVjc1Byb3h5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NjcKKyAgICAgICAgPHJkYXI6Ly84
ODkwNDE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICAtIFRocmVhZE1lc3NhZ2VSZWNlaXZlcnMgc2hvdWxkIG5vdCBhZGQgSVBDIGxpc3RlbmVycyBp
biBjb25zdHJ1Y3RvcnMsCisgICAgICAgIGFzIHRoZSBkZWxpdmVyeSBzdGFydHMgcmlnaHQgYXdh
eSBhbmQgdXNlcyB0aGUgdW5jb25zdHJ1Y3RlZCB2aXJ0dWFsIHBvaW50ZXIuCisgICAgICAgIC0g
VGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zIHNob3VsZCBub3QgdXNlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGFzIHRoYXQgaXMKKyAgICAgICAgbWFpbiB0aHJlYWQgb2JqZWN0LgorICAgICAg
ICAtIExvY2tlZCBtX2VuY29kZXJzLCBtX2RlY29kZXJzIGFyZSBzb21ldGltZXMgYWNjZXNzZWQg
d2l0aG91dCBsb2NrLgorCisgICAgICAgIEluc3RlYWQ6CisgICAgICAgIC0gQWRkIHRoZSBJUEMg
bGlzdGVuZXJzIGluIGluaXRpYWxpemUgZnVuY3Rpb24uCisgICAgICAgIC0gUmVtb3ZlIHRoZSBJ
UEMgbGlzdGVuZXJzIHdoZW4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNjb25uZWN0cy4K
KyAgICAgICAgLSBTdG9yZSB0aGUgdGhyZWFkLXNhZmUgY29uZWN0aW9uLCB2aWRlbyBmcmFtZSBv
YmplY3QgaGVhcCwgcHJvY2VzcyBpZGVudGl0eQorICAgICAgICBvYmplY3RzIGFzIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgIC0gRG8gbm90IGxvY2sgbV9lbmNvZGVycywgbV9kZWNvZGVycy4g
SWYgdGhleSBhcmUgd29yayBxdWV1ZSBpbnN0YW5jZXMsCisgICAgICAgIGp1c3QgYWNjZXNzIHRo
ZW0gaW4gdGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zLiBBZGQgdGhyZWFkIHJlcXVpcmVtZW50cwor
ICAgICAgICB0byB0aGUgdmFyaWFibGVzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGUg
YWNjZXNzLgorICAgICAgICAtIFVzZSBJUEMgdGVzdGluZyBhc3NlcnRpb25zIHdoZW4gc2tpcHBp
bmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgorICAgICAgICAtIFVzZSBzZXBhcmF0ZSBhdG9taWMgY291
bnRlciAoYm9vbCkgdG8gY2hlY2sgaWYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgd2l0aCBleGlzdGluZyB0ZXN0cyBhbmQgQVNB
Ti4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0Zv
cklQQyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZUgyNjREZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZVZQOURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpmaW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorCiAyMDIyLTAyLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVGhyZWFkIHNhZmV0eSBhbmFseXNpcyB0byBhc3NlcnQgImNvZGUgaXMgcnVu
IHNlcXVlbnRpYWxseSIgaXMgbm90IHVzZWZ1bCB3aGVuIGNvZGUgaXMgbWFpbmx5IHJ1biB3aXRo
IFdvcmtRdWV1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkZTIzYzQ0NGNjMDZlODNkYzhiZDUyZTBiOGE0
YTc0ZjdmZTE4MjRmLi4yZGYwOWUwZjlkOWU2YjA1ODNmMDhhZTE4YzVjOGQ0NDU4MTNmMDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0yODQsOSArMjg0LDYgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci0+Y2xvc2UoKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRD
KQotICAgIG1fbGliV2ViUlRDQ29kZWNzUHJveHktPmNsb3NlKCk7Ci0jZW5kaWYKIAogICAgIC0t
Z09iamVjdENvdW50Rm9yVGVzdGluZzsKIH0KQEAgLTMyMSw3ICszMTgsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgV0NDb250ZW50QnVmZmVyTWFuYWdlcjo6c2luZ2xldG9uKCkucmVtb3ZlQWxs
Q29udGVudEJ1ZmZlcnNGb3JQcm9jZXNzKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB9KTsK
ICNlbmRpZgotCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgbV9s
aWJXZWJSVENDb2RlY3NQcm94eSA9IG51bGxwdHI7CisjZW5kaWYKICAgICBncHVQcm9jZXNzKCku
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChjb25uZWN0aW9uKTsKICAgICBncHVQcm9jZXNz
KCkucmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7IC8vIE1heSBkZXN0cm95
IHx0aGlzfC4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDhiNGQ5YjU0Mjk4YjQ4OWQ2MGRjMDUzODQ4MzkxMDg3
NDZlMWEwYzIuLjBhMWNlYmRmYjg5YjlmYTI5ZmJmZDFkN2M2NjlhYjM2MTJhYzVkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMzEwLDcgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJS
VEMpCi0gICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5
OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxMaWJXZWJSVENDb2Rl
Y3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBs
aWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggYjc1ODUwYjkzMjliOTcxOGNmNTU1
ZGQ2OWJlMmU3MTg0MDA0ZTMyZi4uZDEwMWY2NTMyNDk2NGZkZWMzZGIxZWMwOGU1ZGI2ZGVjNjM5
NTI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpdHkuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8
d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwpAQCAtNTcsMTggKzU5LDE4IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CiBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJh
bWVSZWFkZXI7CiAKLWNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CitjbGFzcyBMaWJXZWJS
VENDb2RlY3NQcm94eSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3Nh
Z2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IGNyZWF0ZShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBwcm9jZXNzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldl
YlJUQ0NvZGVjc1Byb3h5KHByb2Nlc3MpKTsgfQorICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29k
ZWNzUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgfkxpYldl
YlJUQ0NvZGVjc1Byb3h5KCk7Ci0KLSAgICB2b2lkIGNsb3NlKCk7Ci0KKyAgICB2b2lkIHN0b3BM
aXN0ZW5pbmdGb3JJUEMoUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiYmIHJlZkZyb21Db25uZWN0
aW9uKTsKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIGF1dG8gY3JlYXRl
RGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1l
cyk7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtOTEs
MTkgKzkzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwog
ICAgIHZvaWQgc2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogICAgIHN0
cnVjdCBFbmNvZGVyIHsKICAgICAgICAgd2VicnRjOjpMb2NhbEVuY29kZXIgd2VicnRjRW5jb2Rl
ciB7IG51bGxwdHIgfTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFZpZGVvRnJhbWVS
ZWFkZXI+IGZyYW1lUmVhZGVyOwogICAgIH07Ci0gICAgRW5jb2RlciogZmluZEVuY29kZXJXaXRo
b3V0TG9jayhSVENFbmNvZGVySWRlbnRpZmllcik7CisgICAgRW5jb2RlciogZmluZEVuY29kZXIo
UlRDRW5jb2RlcklkZW50aWZpZXIpIFdURl9SRVFVSVJFU19MT0NLKG1fcXVldWUuZ2V0KCkpOwog
Ci0gICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKLSAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlm
aWVyLCB3ZWJydGM6OkxvY2FsRGVjb2Rlcj4gbV9kZWNvZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1
dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEhhc2hNYXA8UlRD
RW5jb2RlcklkZW50aWZpZXIsIEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9D
SyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBi
dXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAg
ICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7
CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5IG1fcmVzb3VyY2VPd25lcjsKKyAgICBIYXNo
TWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRGVjb2Rlcj4gbV9kZWNvZGVy
cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcXVldWUuZ2V0KCkpOworICAgIEhhc2hNYXA8UlRDRW5j
b2RlcklkZW50aWZpZXIsIEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyht
X3F1ZXVlLmdldCgpKTsKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2hhc0VuY29kZXJzT3JEZWNv
ZGVycyB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBlZGM2ZDY2NjY3YmRi
M2ZhYWEwNzljYzM4YWU1YmU0Njk2MGQxN2ViLi5iZTMyMGM5ZWY1MmZjMTM2M2NlMDhlNmFhYjJj
MDNlOTllYzg2OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9y
dCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiR1BVUHJvY2Vzcy5oIgor
I2ltcG9ydCAiSVBDVGVzdGVyLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5o
IgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKQEAgLTQ5LDI5ICs1MCwyOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKLSAgICAsIG1fcXVldWUoY29ubmVjdGlvbi5n
cHVQcm9jZXNzKCkubGliV2ViUlRDQ29kZWNzUXVldWUoKSkKLSAgICAsIG1fdmlkZW9GcmFtZU9i
amVjdEhlYXAoY29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorUmVmPExpYldlYlJU
Q0NvZGVjc1Byb3h5PiBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKQogewotICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsK
KyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENDb2RlY3NQcm94eSh3
ZWJQcm9jZXNzQ29ubmVjdGlvbikpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKCk7CisgICAg
cmV0dXJuIGluc3RhbmNlOwogfQogCi1MaWJXZWJSVENDb2RlY3NQcm94eTo6fkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5KCkKK0xpYldlYlJUQ0NvZGVjc1Byb3h5OjpMaWJXZWJSVENDb2RlY3NQcm94eShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbikKKyAgICA6IG1f
Y29ubmVjdGlvbih3ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisgICAgLCBtX3F1
ZXVlKHdlYlByb2Nlc3NDb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVENDb2RlY3NRdWV1
ZSgpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCh3ZWJQcm9jZXNzQ29ubmVjdGlvbi52
aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKHdlYlByb2Nlc3ND
b25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGl0eSgpKQogewogfQogCi12b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
LXsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7Ci19CitMaWJXZWJS
VENDb2RlY3NQcm94eTo6fkxpYldlYlJUQ0NvZGVjc1Byb3h5KCkgPSBkZWZhdWx0OwogCi12b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSgpCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4mJiByZWZGcm9t
Q29ubmVjdGlvbikKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpOwogCi0gICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZS5n
ZXQoKSk7CiAgICAgICAgIGF1dG8gZGVjb2RlcnMgPSBXVEZNb3ZlKG1fZGVjb2RlcnMpOwogICAg
ICAgICBmb3IgKGF1dG8gZGVjb2RlciA6IGRlY29kZXJzLnZhbHVlcygpKQogICAgICAgICAgICAg
d2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOwpAQCAtODEsOSArODIsMjIgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogICAgIH0pOwogfQogCi1zdGF0aWMg
RnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1l
U3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKT4gY3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQordm9pZCBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBy
ZXR1cm4gW2Nvbm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5l
Y3Rpb24oKSB9LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQ
cm9jZXNzSWRlbnRpdHkoKSwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBSZWYgeyBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgfSwgaWRlbnRpZmllciwgdXNl
UmVtb3RlRnJhbWVzXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgIG11dGFibGUgeworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKK30KKworYXV0byBMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGJvb2wgdXNlUmVtb3RlRnJhbWVzKQoreworICAgIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcD4gdmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykK
KyAgICAgICAgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnB0
cigpOworICAgIHJldHVybiBbaWRlbnRpZmllciwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwg
cmVzb3VyY2VPd25lciA9IG1fcmVzb3VyY2VPd25lciwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBX
VEZNb3ZlKHZpZGVvRnJhbWVPYmplY3RIZWFwKV0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIG11dGFibGUgewog
ICAgICAgICBhdXRvIHNhbXBsZSA9IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRl
SW1hZ2VTYW1wbGUocGl4ZWxCdWZmZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpOb25lLCBmYWxzZSwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwgeyB9KTsKICAgICAg
ICAgaWYgKCFzYW1wbGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05Niw3ICsxMTAsNyBAQCBz
dGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJf
dCB0aW1lU3RhbXBOcywgdWludDMyXwogICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRPd25l
cnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVyKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPiByZW1vdGVJZGVudGlmaWVyOwotICAgICAgICBpZiAo
dXNlUmVtb3RlRnJhbWVzKSB7CisgICAgICAgIGlmICh2aWRlb0ZyYW1lT2JqZWN0SGVhcCkgewog
ICAgICAgICAgICAgcmVtb3RlSWRlbnRpZmllciA9IHZpZGVvRnJhbWVPYmplY3RIZWFwLT5jcmVh
dGVSZW1vdGVWaWRlb0ZyYW1lKHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAg
IHJlbW90ZVNhbXBsZS0+Y2xlYXJJT1N1cmZhY2UoKTsKICAgICAgICAgfQpAQCAtMTA3LDEwNSAr
MTIxLDEwNCBAQCBzdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyXwogCiB2b2lkIExpYldlYlJUQ0NvZGVj
c1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBib29sIHVzZVJlbW90ZUZyYW1lcykKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgIEFTU0VSVCghbV9kZWNvZGVycy5j
b250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2Vi
cnRjOjpjcmVhdGVMb2NhbEgyNjREZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2Fs
bGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCB1c2VSZW1vdGVG
cmFtZXMpKS5nZXQoKSkpOworICAgIGFzc2VydElzQ3VycmVudChtX3F1ZXVlLmdldCgpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRl
TG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50
aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29k
ZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNl
UmVtb3RlRnJhbWVzKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0
ZUxvY2FsSDI2NURlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVu
dGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdl
dCgpKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fcXVldWUuZ2V0KCkpOworICAgIGF1dG8gcmVz
dWx0ID0gbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgyNjVE
ZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgdXNl
UmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkgfHwgaXNUZXN0aW5nSVBDKCkpOworICAgIG1faGFzRW5jb2RlcnNPckRlY29k
ZXJzID0gdHJ1ZTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlVlA5RGVj
b2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1l
cykKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwotICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
Ci0gICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQOURl
Y29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAg
YXNzZXJ0SXNDdXJyZW50KG1fcXVldWUuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWNv
ZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQOURlY29kZXIobWFrZUJs
b2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCB1c2VSZW1vdGVGcmFtZXMp
KS5nZXQoKSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSB8
fCBpc1Rlc3RpbmdJUEMoKSk7CisgICAgbV9oYXNFbmNvZGVyc09yRGVjb2RlcnMgPSB0cnVlOwog
fQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKG1fZGVjb2RlcnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOwotICAgIGlmIChhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRh
a2UoaWRlbnRpZmllcikpCi0gICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNv
ZGVyKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZS5nZXQoKSk7CisgICAgYXV0byBkZWNv
ZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50aWZpZXIpOworICAgIGlmICghZGVjb2Rlcikgewor
ICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CisgICAgbV9oYXNFbmNv
ZGVyc09yRGVjb2RlcnMgPSAhbV9lbmNvZGVycy5pc0VtcHR5KCkgfHwgIW1fZGVjb2RlcnMuaXNF
bXB0eSgpOwogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBh
Y2Nlc3NlcyBtX2RlY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2Ug
dGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1f
ZGVjb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRD
Q29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5M
b29wKCkpOwotICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZS5nZXQoKSk7CiAgICAgYXV0byBkZWNvZGVyID0gbV9k
ZWNvZGVycy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZWNvZGVyKQorICAgIGlmICghZGVj
b2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0dXJu
OwotCisgICAgfQogICAgIGlmICh3ZWJydGM6OmRlY29kZUZyYW1lKGRlY29kZXIsIHRpbWVTdGFt
cCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkZh
aWxlZERlY29kaW5nIHsgaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkZhaWxlZERlY29kaW5nIHsgaWRlbnRpZmll
ciB9LCAwKTsKIH0KIAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24g
YWNjZXNzZXMgbV9kZWNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNl
IHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBt
X2RlY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpzZXRGcmFtZVNpemUoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUwogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NF
UlQobV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50
KG1fcXVldWUuZ2V0KCkpOwogICAgIGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMuZ2V0KGlkZW50
aWZpZXIpOwotICAgIGlmICghZGVjb2RlcikKKyAgICBpZiAoIWRlY29kZXIpIHsKKyAgICAgICAg
QVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKLQorICAgIH0KICAgICB3
ZWJydGM6OnNldERlY29kZXJGcmFtZVNpemUoZGVjb2Rlciwgd2lkdGgsIGhlaWdodCk7CiB9CiAK
IHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmb3JtYXROYW1lLCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHBhcmFtZXRlcnMsIGJvb2wgdXNlTG93TGF0ZW5j
eSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwotICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
Ci0KKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1ZS5nZXQoKSk7CiAgICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJhbWV0ZXJzOwogICAgIGZvciAoYXV0byYgcGFy
YW1ldGVyIDogcGFyYW1ldGVycykKICAgICAgICAgcnRjUGFyYW1ldGVycy5lbXBsYWNlKHBhcmFt
ZXRlci5maXJzdC51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc2Vjb25kLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgYXV0byogZW5jb2RlciA9IHdlYnJ0Yzo6Y3JlYXRlTG9jYWxFbmNvZGVyKHdlYnJ0
Yzo6U2RwVmlkZW9Gb3JtYXQgeyBmb3JtYXROYW1lLnV0ZjgoKS5kYXRhKCksIHJ0Y1BhcmFtZXRl
cnMgfSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gUmVmIHsgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCBpZGVudGlmaWVyXShjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mIGlu
Zm8pIHsKKyAgICBhdXRvKiBlbmNvZGVyID0gd2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2Vi
cnRjOjpTZHBWaWRlb0Zvcm1hdCB7IGZvcm1hdE5hbWUudXRmOCgpLmRhdGEoKSwgcnRjUGFyYW1l
dGVycyB9LCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24sIGlkZW50aWZp
ZXJdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2Vi
S2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbykgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZEVuY29kaW5nIHsgaWRlbnRpZmllciwg
SVBDOjpEYXRhUmVmZXJlbmNlIHsgYnVmZmVyLCBzaXplIH0sIGluZm8gfSwgMCk7CiAgICAgfSku
Z2V0KCkpOwogICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyTG93TGF0ZW5jeShlbmNvZGVyLCB1
c2VMb3dMYXRlbmN5KTsKLSAgICBtX2VuY29kZXJzLmFkZChpZGVudGlmaWVyLCBFbmNvZGVyIHsg
ZW5jb2RlciwgbnVsbHB0ciB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZW5jb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIEVuY29kZXIgeyBlbmNvZGVyLCBudWxscHRyIH0pOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSB8fCBpc1Rlc3RpbmdJUEMoKSk7CisgICAgbV9o
YXNFbmNvZGVyc09yRGVjb2RlcnMgPSB0cnVlOwogfQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07Ci0gICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGFz
c2VydElzQ3VycmVudChtX3F1ZXVlLmdldCgpKTsKICAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29k
ZXJzLnRha2UoaWRlbnRpZmllcik7Ci0gICAgaWYgKGVuY29kZXIud2VicnRjRW5jb2RlcikKLSAg
ICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7
CisgICAgaWYgKCFlbmNvZGVyLndlYnJ0Y0VuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RF
U1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2VicnRjOjpyZWxlYXNl
TG9jYWxFbmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7CisgICAgbV9oYXNFbmNvZGVyc09y
RGVjb2RlcnMgPSAhbV9lbmNvZGVycy5pc0VtcHR5KCkgfHwgIW1fZGVjb2RlcnMuaXNFbXB0eSgp
OwogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3Nl
cyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBm
dW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZW5jb2Rl
cnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNz
UHJveHk6OmluaXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwg
dW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJh
bWVyYXRlKQogewotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlk
ZW50aWZpZXIpOwotICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9xdWV1
ZS5nZXQoKSk7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIpOwor
ICAgIGlmICghZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAg
ICAgICAgcmV0dXJuOwotCisgICAgfQogICAgIHdlYnJ0Yzo6aW5pdGlhbGl6ZUxvY2FsRW5jb2Rl
cihlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdHJhdGUsIG1h
eEJpdHJhdGUsIG1pbkJpdHJhdGUsIG1heEZyYW1lcmF0ZSk7CiB9CiAKLUxpYldlYlJUQ0NvZGVj
c1Byb3h5OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZmluZEVuY29kZXJXaXRob3V0
TG9jayhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKSBXVEZfSUdOT1JFU19USFJFQURf
U0FGRVRZX0FOQUxZU0lTCitMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlciogTGliV2ViUlRD
Q29kZWNzUHJveHk6OmZpbmRFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2VuY29kZXJzLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fZW5jb2Rl
cnMuZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI4LDEwICsyNDEsOSBAQCBz
dGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24o
V2ViQ29yZTo6TWVkaWFTYW1wbGU6OgogICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9u
XzA7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vz
c2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9lbmNv
ZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9v
bCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlPiBzYW1wbGVSZWZlcmVuY2UpCiB7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1f
cXVldWUuZ2V0KCkpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZl
cjsKICAgICBpZiAoc2FtcGxlUmVmZXJlbmNlKSB7CiAgICAgICAgIGF1dG8gc2FtcGxlID0gbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5jZSksIDBf
cyk7CkBAIC0yNDMsMTAgKzI1NSwxMSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNv
ZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOgogICAgICAg
ICBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZm
ZXIpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlm
aWVyKSk7Ci0gICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFlbmNvZGVyKQorICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2Rl
cihpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RF
U1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgaWYgKHNhbXBsZS5zdXJmYWNlKCkpIHsKQEAgLTI2MiwzOSArMjc1LDM4
IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6CiAjZW5kaWYKIH0KIAotLy8gRm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxv
Y2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGli
V2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9u
IHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhS
VENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpCiB7Ci0gICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExv
Y2soaWRlbnRpZmllcik7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fcXVldWUuZ2V0KCkpOworICAg
IGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsKICAgICBpZiAoIWVuY29k
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyUmF0ZXMo
ZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKIH0KIAotLy8gRm9y
IHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3
aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBv
biB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1v
ZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFy
ZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogewotICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhv
dXRMb2NrKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRo
b3V0TG9jayhpZGVudGlmaWVyKTsKLSAgICBpZiAoIWVuY29kZXIpCisgICAgYXNzZXJ0SXNDdXJy
ZW50KG1fcXVldWUuZ2V0KCkpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVu
dGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdf
SVBDKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIWVuY29kZXItPmZyYW1l
UmVhZGVyKQogICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVk
VmlkZW9GcmFtZVJlYWRlcj4oKTsKICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlci0+c2V0U2VtYXBo
b3JlKFdURk1vdmUoc2VtYXBob3JlKSk7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25z
LCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlz
IGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVj
c1F1ZXVlCi0vLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVl
Lgogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShS
VENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYgaXBjSGFuZGxlKQogewotICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlk
ZW50aWZpZXIpKTsKLSAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhp
ZGVudGlmaWVyKTsKLSAgICBpZiAoIWVuY29kZXIpCisgICAgYXNzZXJ0SXNDdXJyZW50KG1fcXVl
dWUuZ2V0KCkpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsK
KyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQog
ICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFt
ZVJlYWRlcj4oKTsKQEAgLTMwMyw5ICszMTUsOCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aQog
CiBib29sIExpYldlYlJUQ0NvZGVjc1Byb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwotICAgIHJldHVybiBtX2VuY29kZXJzLmlzRW1wdHkoKSAmJiBtX2Rl
Y29kZXJzLmlzRW1wdHkoKTsKKyAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgcmV0dXJu
ICFtX2hhc0VuY29kZXJzT3JEZWNvZGVyczsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6c2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453090</attachid>
            <date>2022-02-24 03:24:30 -0800</date>
            <delta_ts>2022-02-25 04:40:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236767-20220224132429.patch</filename>
            <type>text/plain</type>
            <size>24365</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRkNTVmZjNiODI1NzZhZTIz
MTk2ZGI2ZGYwODMwM2RjZTY3OTIxNGIuLjE4MmJmZWJkYzgzNmVlYWViNTgyMzkyZTliMjc5OWFh
Y2JmMzhiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDItMjQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBjb25jdXJy
ZW5jeSB2aW9sYXRpb25zIGluIExpYldlYlJUQ0NvZGVjc1Byb3h5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NjcKKyAgICAgICAgPHJkYXI6Ly84
ODkwNDE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICAtIFRocmVhZE1lc3NhZ2VSZWNlaXZlcnMgc2hvdWxkIG5vdCBhZGQgSVBDIGxpc3RlbmVycyBp
biBjb25zdHJ1Y3RvcnMsCisgICAgICAgIGFzIHRoZSBkZWxpdmVyeSBzdGFydHMgcmlnaHQgYXdh
eSBhbmQgdXNlcyB0aGUgdW5jb25zdHJ1Y3RlZCB2aXJ0dWFsIHBvaW50ZXIuCisgICAgICAgIC0g
VGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zIHNob3VsZCBub3QgdXNlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGFzIHRoYXQgaXMKKyAgICAgICAgbWFpbiB0aHJlYWQgb2JqZWN0LgorICAgICAg
ICAtIExvY2tlZCBtX2VuY29kZXJzLCBtX2RlY29kZXJzIGFyZSBzb21ldGltZXMgYWNjZXNzZWQg
d2l0aG91dCBsb2NrLgorCisgICAgICAgIEluc3RlYWQ6CisgICAgICAgIC0gQWRkIHRoZSBJUEMg
bGlzdGVuZXJzIGluIGluaXRpYWxpemUgZnVuY3Rpb24uCisgICAgICAgIC0gUmVtb3ZlIHRoZSBJ
UEMgbGlzdGVuZXJzIHdoZW4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNjb25uZWN0cy4K
KyAgICAgICAgLSBTdG9yZSB0aGUgdGhyZWFkLXNhZmUgY29uZWN0aW9uLCB2aWRlbyBmcmFtZSBv
YmplY3QgaGVhcCwgcHJvY2VzcyBpZGVudGl0eQorICAgICAgICBvYmplY3RzIGFzIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgIC0gRG8gbm90IGxvY2sgbV9lbmNvZGVycywgbV9kZWNvZGVycy4g
SWYgdGhleSBhcmUgd29yayBxdWV1ZSBpbnN0YW5jZXMsCisgICAgICAgIGp1c3QgYWNjZXNzIHRo
ZW0gaW4gdGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zLiBBZGQgdGhyZWFkIHJlcXVpcmVtZW50cwor
ICAgICAgICB0byB0aGUgdmFyaWFibGVzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGUg
YWNjZXNzLgorICAgICAgICAtIFVzZSBJUEMgdGVzdGluZyBhc3NlcnRpb25zIHdoZW4gc2tpcHBp
bmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgorICAgICAgICAtIFVzZSBzZXBhcmF0ZSBhdG9taWMgY291
bnRlciAoYm9vbCkgdG8gY2hlY2sgaWYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgd2l0aCBleGlzdGluZyB0ZXN0cyBhbmQgQVNB
Ti4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0Zv
cklQQyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZUgyNjREZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZVZQOURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpmaW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorCiAyMDIyLTAyLTI0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVGhyZWFkIHNhZmV0eSBhbmFseXNpcyB0byBhc3NlcnQgImNvZGUgaXMgcnVu
IHNlcXVlbnRpYWxseSIgaXMgbm90IHVzZWZ1bCB3aGVuIGNvZGUgaXMgbWFpbmx5IHJ1biB3aXRo
IFdvcmtRdWV1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyMjM5MzRiOGMxZmQzODhkMzI0NTE2Y2RhZjg0
M2RmZDZiNGVkNzM3Li45MmQzZTNhNjQxOWJiZDBiZWVhODBiZmM5MjRmM2ZlZjI1OTU1NGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0yODcsOSArMjg3LDYgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci0+Y2xvc2UoKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRD
KQotICAgIG1fbGliV2ViUlRDQ29kZWNzUHJveHktPmNsb3NlKCk7Ci0jZW5kaWYKIAogICAgIC0t
Z09iamVjdENvdW50Rm9yVGVzdGluZzsKIH0KQEAgLTMyNCw3ICszMjEsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgV0NDb250ZW50QnVmZmVyTWFuYWdlcjo6c2luZ2xldG9uKCkucmVtb3ZlQWxs
Q29udGVudEJ1ZmZlcnNGb3JQcm9jZXNzKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB9KTsK
ICNlbmRpZgotCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgbV9s
aWJXZWJSVENDb2RlY3NQcm94eSA9IG51bGxwdHI7CisjZW5kaWYKICAgICBncHVQcm9jZXNzKCku
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChjb25uZWN0aW9uKTsKICAgICBncHVQcm9jZXNz
KCkucmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7IC8vIE1heSBkZXN0cm95
IHx0aGlzfC4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDUyNWRkYTdhZmIwOWU5YTMxZGY0N2QzNGU1Njk1MTE1
NjZkYzEwNDIuLmI3MmMwYjM3MzYyYjczOWRiZmEzZWQ5YTBjNGEwMWUzYjIxYjFlOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaApAQCAtMzEzLDcgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJS
VEMpCi0gICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5
OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxMaWJXZWJSVENDb2Rl
Y3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBs
aWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggYjc1ODUwYjkzMjliOTcxOGNmNTU1
ZGQ2OWJlMmU3MTg0MDA0ZTMyZi4uODc0ZmY2ODNiYTdmZTRiYTBhMGU1Mjc4OTBkNmY4NjY1MmYz
Zjk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpdHkuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8
d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwpAQCAtNTcsMTggKzU5LDE5IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CiBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJh
bWVSZWFkZXI7CiAKLWNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CitjbGFzcyBMaWJXZWJS
VENDb2RlY3NQcm94eSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3Nh
Z2VSZWNlaXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IGNyZWF0ZShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBwcm9jZXNzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldl
YlJUQ0NvZGVjc1Byb3h5KHByb2Nlc3MpKTsgfQorICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29k
ZWNzUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgfkxpYldl
YlJUQ0NvZGVjc1Byb3h5KCk7Ci0KLSAgICB2b2lkIGNsb3NlKCk7Ci0KKyAgICB2b2lkIHN0b3BM
aXN0ZW5pbmdGb3JJUEMoUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiYmIHJlZkZyb21Db25uZWN0
aW9uKTsKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIGF1dG8gY3JlYXRl
RGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1l
cyk7CisgICAgV29ya1F1ZXVlJiB3b3JrUXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9
CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgogICAgIHZv
aWQgZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtOTEsMTkg
Kzk0LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJU
Q0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogICAg
IHZvaWQgc2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsKTsKIAotICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogICAgIHN0cnVj
dCBFbmNvZGVyIHsKICAgICAgICAgd2VicnRjOjpMb2NhbEVuY29kZXIgd2VicnRjRW5jb2RlciB7
IG51bGxwdHIgfTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI+IGZyYW1lUmVhZGVyOwogICAgIH07Ci0gICAgRW5jb2RlciogZmluZEVuY29kZXJXaXRob3V0
TG9jayhSVENFbmNvZGVySWRlbnRpZmllcik7CisgICAgRW5jb2RlciogZmluZEVuY29kZXIoUlRD
RW5jb2RlcklkZW50aWZpZXIpIFdURl9SRVFVSVJFU19DQVBBQklMSVRZKHdvcmtRdWV1ZSgpKTsK
IAotICAgIG11dGFibGUgTG9jayBtX2xvY2s7Ci0gICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRp
Zmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9D
SyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBi
dXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBIYXNoTWFwPFJU
Q0VuY29kZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUg
YnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAg
ICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
OworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CisgICAgSGFz
aE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2Rl
cnMgV1RGX0dVQVJERURfQllfQ0FQQUJJTElUWSh3b3JrUXVldWUoKSk7CisgICAgSGFzaE1hcDxS
VENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRFRF9CWV9D
QVBBQklMSVRZKHdvcmtRdWV1ZSgpKTsKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2hhc0VuY29k
ZXJzT3JEZWNvZGVycyB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBmMDA2
ODFiNzlmNWZjZTAzODZhNGVlNjNiNzJkNmY3ZWU0Mjg4MGJhLi5lODVlYTE4NjA3ZjlhMThjMmNi
ZTk1OWQ4NjJjNWUxMjI2YTg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2ltcG9ydCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiR1BVUHJv
Y2Vzcy5oIgorI2ltcG9ydCAiSVBDVGVzdGVyLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2lt
cG9ydCAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKQEAgLTQ5LDI5ICs1MCwyOSBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCi0gICAgOiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKLSAgICAsIG1fcXVldWUoY29u
bmVjdGlvbi5ncHVQcm9jZXNzKCkubGliV2ViUlRDQ29kZWNzUXVldWUoKSkKLSAgICAsIG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorUmVm
PExpYldlYlJUQ0NvZGVjc1Byb3h5PiBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKQogewotICAgIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCB0aGlzKTsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENDb2Rl
Y3NQcm94eSh3ZWJQcm9jZXNzQ29ubmVjdGlvbikpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1MaWJXZWJSVENDb2RlY3NQcm94eTo6fkxp
YldlYlJUQ0NvZGVjc1Byb3h5KCkKK0xpYldlYlJUQ0NvZGVjc1Byb3h5OjpMaWJXZWJSVENDb2Rl
Y3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbikK
KyAgICA6IG1fY29ubmVjdGlvbih3ZWJQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkpCisg
ICAgLCBtX3F1ZXVlKHdlYlByb2Nlc3NDb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVEND
b2RlY3NRdWV1ZSgpKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCh3ZWJQcm9jZXNzQ29u
bmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorICAgICwgbV9yZXNvdXJjZU93bmVyKHdl
YlByb2Nlc3NDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGl0eSgpKQogewogfQogCi12b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKLXsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7Ci19
CitMaWJXZWJSVENDb2RlY3NQcm94eTo6fkxpYldlYlJUQ0NvZGVjc1Byb3h5KCkgPSBkZWZhdWx0
OwogCi12b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSgpCit2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4m
JiByZWZGcm9tQ29ubmVjdGlvbikKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgbV9jb25uZWN0aW9u
LT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCi0gICAgZGlzcGF0Y2hUb1RocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0geworICAgICAgICBhc3NlcnRJc0N1cnJlbnQo
d29ya1F1ZXVlKCkpOwogICAgICAgICBhdXRvIGRlY29kZXJzID0gV1RGTW92ZShtX2RlY29kZXJz
KTsKICAgICAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBkZWNvZGVycy52YWx1ZXMoKSkKICAgICAg
ICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKQEAgLTgxLDkgKzgy
LDIyIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKICAgICB9KTsKIH0KIAot
c3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMy
X3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCk+IGNyZWF0ZURlY29kZXJDYWxsYmFj
ayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBib29sIHVzZVJlbW90ZUZyYW1lcykKK3Zv
aWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemUoKQoreworICAgIG1fY29ubmVjdGlv
bi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7
Ci0gICAgcmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3Mud2ViUHJvY2Vzc0lkZW50aXR5KCksIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVmIHsgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIH0sIGlkZW50aWZp
ZXIsIHVzZVJlbW90ZUZyYW1lc10gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQz
Ml90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRhYmxlIHsKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK2F1dG8gTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcykKK3sKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA+IHZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIGlmICh1c2VSZW1vdGVG
cmFtZXMpCisgICAgICAgIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gbV92aWRlb0ZyYW1lT2JqZWN0
SGVhcC5wdHIoKTsKKyAgICByZXR1cm4gW2lkZW50aWZpZXIsIGNvbm5lY3Rpb24gPSBtX2Nvbm5l
Y3Rpb24sIHJlc291cmNlT3duZXIgPSBtX3Jlc291cmNlT3duZXIsIHZpZGVvRnJhbWVPYmplY3RI
ZWFwID0gV1RGTW92ZSh2aWRlb0ZyYW1lT2JqZWN0SGVhcCldIChDVlBpeGVsQnVmZmVyUmVmIHBp
eGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OmNyZWF0ZUltYWdlU2FtcGxlKHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7
CiAgICAgICAgIGlmICghc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNyArMTEw
LDcgQEAgc3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwg
dWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl8KICAgICAgICAgICAgIHJlbW90ZVNhbXBsZS0+
c2V0T3duZXJzaGlwSWRlbnRpdHkocmVzb3VyY2VPd25lcik7CiAKICAgICAgICAgc3RkOjpvcHRp
b25hbDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj4gcmVtb3RlSWRlbnRpZmllcjsKLSAgICAg
ICAgaWYgKHVzZVJlbW90ZUZyYW1lcykgeworICAgICAgICBpZiAodmlkZW9GcmFtZU9iamVjdEhl
YXApIHsKICAgICAgICAgICAgIHJlbW90ZUlkZW50aWZpZXIgPSB2aWRlb0ZyYW1lT2JqZWN0SGVh
cC0+Y3JlYXRlUmVtb3RlVmlkZW9GcmFtZShzYW1wbGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgICAgICByZW1vdGVTYW1wbGUtPmNsZWFySU9TdXJmYWNlKCk7CiAgICAgICAgIH0KQEAgLTEw
NywxMDUgKzEyMSwxMDQgQEAgc3RhdGljIEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl8KIAogdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NERlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5M
b29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBBU1NFUlQoIW1fZGVj
b2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZp
ZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVj
b2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgdXNl
UmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpj
cmVhdGVMb2NhbEgyNjREZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2so
aWRlbnRpZmllciwgdXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkgfHwgaXNUZXN0aW5nSVBDKCkpOworICAgIG1faGFz
RW5jb2RlcnNPckRlY29kZXJzID0gdHJ1ZTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9v
bCB1c2VSZW1vdGVGcmFtZXMpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6
Y3JlYXRlTG9jYWxIMjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNr
KGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgdXNlUmVtb3RlRnJhbWVz
KSkuZ2V0KCkpKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIGF1dG8g
cmVzdWx0ID0gbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbEgy
NjVEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwg
dXNlUmVtb3RlRnJhbWVzKSkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkgfHwgaXNUZXN0aW5nSVBDKCkpOworICAgIG1faGFzRW5jb2RlcnNPckRl
Y29kZXJzID0gdHJ1ZTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlVlA5
RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZy
YW1lcykKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwotICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVy
KSk7Ci0gICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQ
OURlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7Cisg
ICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVj
b2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxWUDlEZWNvZGVyKG1ha2VC
bG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgdXNlUmVtb3RlRnJhbWVz
KSkuZ2V0KCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkg
fHwgaXNUZXN0aW5nSVBDKCkpOworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gdHJ1ZTsK
IH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZURlY29kZXIoUlRDRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgIEFTU0VSVChtX2RlY29kZXJzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50
YWtlKGlkZW50aWZpZXIpKQotICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVj
b2Rlcik7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvIGRlY29k
ZXIgPSBtX2RlY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAgaWYgKCFkZWNvZGVyKSB7Cisg
ICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKKyAgICBtX2hhc0VuY29k
ZXJzT3JEZWNvZGVycyA9ICFtX2VuY29kZXJzLmlzRW1wdHkoKSB8fCAhbV9kZWNvZGVycy5pc0Vt
cHR5KCk7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFj
Y2Vzc2VzIG1fZGVjb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0
aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9k
ZWNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6ZGVjb2RlRnJhbWUoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDMyX3QgdGltZVN0YW1wLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpIFdURl9J
R05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
IGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CiAgICAgYXV0byBkZWNvZGVyID0gbV9kZWNv
ZGVycy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZWNvZGVyKQorICAgIGlmICghZGVjb2Rl
cikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0dXJuOwot
CisgICAgfQogICAgIGlmICh3ZWJydGM6OmRlY29kZUZyYW1lKGRlY29kZXIsIHRpbWVTdGFtcCwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkZhaWxl
ZERlY29kaW5nIHsgaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkZhaWxlZERlY29kaW5nIHsgaWRlbnRpZmllciB9
LCAwKTsKIH0KIAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNj
ZXNzZXMgbV9kZWNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRo
aXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2Rl
Y29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpzZXRGcmFtZVNpemUoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVU
WV9BTkFMWVNJUwogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NFUlQo
bV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdv
cmtRdWV1ZSgpKTsKICAgICBhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLmdldChpZGVudGlmaWVy
KTsKLSAgICBpZiAoIWRlY29kZXIpCisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIEFTU0VS
VF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47Ci0KKyAgICB9CiAgICAgd2VicnRj
OjpzZXREZWNvZGVyRnJhbWVTaXplKGRlY29kZXIsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZm9ybWF0TmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYXJhbWV0ZXJzLCBib29sIHVzZUxvd0xhdGVuY3kpCiB7
Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKLSAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotCisg
ICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmc+IHJ0Y1BhcmFtZXRlcnM7CiAgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIg
OiBwYXJhbWV0ZXJzKQogICAgICAgICBydGNQYXJhbWV0ZXJzLmVtcGxhY2UocGFyYW1ldGVyLmZp
cnN0LnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICBhdXRvKiBlbmNvZGVyID0gd2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRjOjpTZHBW
aWRlb0Zvcm1hdCB7IGZvcm1hdE5hbWUudXRmOCgpLmRhdGEoKSwgcnRjUGFyYW1ldGVycyB9LCBt
YWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBSZWYgeyBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpIH0sIGlkZW50aWZpZXJdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbykgewor
ICAgIGF1dG8qIGVuY29kZXIgPSB3ZWJydGM6OmNyZWF0ZUxvY2FsRW5jb2Rlcih3ZWJydGM6OlNk
cFZpZGVvRm9ybWF0IHsgZm9ybWF0TmFtZS51dGY4KCkuZGF0YSgpLCBydGNQYXJhbWV0ZXJzIH0s
IG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwgaWRlbnRpZmllcl0oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvJiBpbmZvKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgeyBidWZmZXIsIHNpemUgfSwgaW5mbyB9LCAwKTsKICAgICB9KS5nZXQoKSk7
CiAgICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJMb3dMYXRlbmN5KGVuY29kZXIsIHVzZUxvd0xh
dGVuY3kpOwotICAgIG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIEVuY29kZXIgeyBlbmNvZGVy
LCBudWxscHRyIH0pOworICAgIGF1dG8gcmVzdWx0ID0gbV9lbmNvZGVycy5hZGQoaWRlbnRpZmll
ciwgRW5jb2RlciB7IGVuY29kZXIsIG51bGxwdHIgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29k
ZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJl
bGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNT
RVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAg
ICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXNzZXJ0SXND
dXJyZW50KHdvcmtRdWV1ZSgpKTsKICAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2Uo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGVuY29kZXIud2VicnRjRW5jb2RlcikKLSAgICAgICAgd2Vi
cnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7CisgICAgaWYg
KCFlbmNvZGVyLndlYnJ0Y0VuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBD
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNv
ZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7CisgICAgbV9oYXNFbmNvZGVyc09yRGVjb2RlcnMg
PSAhbV9lbmNvZGVycy5pc0VtcHR5KCkgfHwgIW1fZGVjb2RlcnMuaXNFbXB0eSgpOwogfQogCi0v
LyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29k
ZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBy
dW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZW5jb2RlcnMgb25seSBn
ZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6Omlu
aXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQg
bWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQog
ewotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIp
OwotICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwor
ICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVu
Y29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVy
bjsKLQorICAgIH0KICAgICB3ZWJydGM6OmluaXRpYWxpemVMb2NhbEVuY29kZXIoZW5jb2Rlci0+
d2VicnRjRW5jb2Rlciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRyYXRlLCBtYXhCaXRyYXRlLCBt
aW5CaXRyYXRlLCBtYXhGcmFtZXJhdGUpOwogfQogCi1MaWJXZWJSVENDb2RlY3NQcm94eTo6RW5j
b2RlciogTGliV2ViUlRDQ29kZWNzUHJveHk6OmZpbmRFbmNvZGVyV2l0aG91dExvY2soUlRDRW5j
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUworTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpmaW5kRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFT
U0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9lbmNvZGVycy5m
aW5kKGlkZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2VuY29kZXJzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOCwxMCArMjQxLDkgQEAgc3RhdGljIGlubGlu
ZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlOjoKICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwogfQogCi0v
LyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29k
ZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBy
dW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZW5jb2RlcnMgb25seSBn
ZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVu
Y29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5j
b2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5j
ZT4gc2FtcGxlUmVmZXJlbmNlKQogeworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7
CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyOwogICAgIGlmIChz
YW1wbGVSZWZlcmVuY2UpIHsKICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwLT5yZXRpcmUoV1RGTW92ZSgqc2FtcGxlUmVmZXJlbmNlKSwgMF9zKTsKQEAgLTI0Mywx
MCArMjU1LDExIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0Vu
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6CiAgICAgICAgIHBpeGVsQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldElt
YWdlQnVmZmVyKHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwogICAgIH0K
IAotICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpKTsKLSAgICBh
dXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKLSAgICBp
ZiAoIWVuY29kZXIpCisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIp
OworICAgIGlmICghZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICBpZiAoIXBpeGVsQnVmZmVyKSB7CkBAIC0yNjQsMzkgKzI3Nyw0MCBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOgogI2VuZGlmCiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlz
IGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNh
ZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVl
Ci0vLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgogdm9p
ZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0RW5jb2RlUmF0ZXMoUlRDRW5jb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKQogewot
ICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwot
ICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAg
IGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29k
ZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2RlclJhdGVzKGVuY29kZXItPndlYnJ0
Y0VuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSk7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSBy
ZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5n
LiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJU
Q0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlz
IHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYm
IHNlbWFwaG9yZSkKIHsKLSAgICBBU1NFUlQoZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlm
aWVyKSk7Ci0gICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFlbmNvZGVyKQorICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUo
KSk7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50aWZpZXIpOworICAgIGlm
ICghZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCiAgICAgICAg
IGVuY29kZXItPmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVy
PihSZWYgeyBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwIH0pOwogICAgIGVuY29kZXItPmZyYW1lUmVh
ZGVyLT5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKIH0KIAotLy8gRm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0
IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUg
bGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVk
IG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRl
b0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUpCiB7Ci0gICAgQVNTRVJUKGZpbmRFbmNvZGVy
V2l0aG91dExvY2soaWRlbnRpZmllcikpOwotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2Rl
cldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwotICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJ
c0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2Rlcihp
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJ
TkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIWVuY29kZXItPmZy
YW1lUmVhZGVyKQogICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hh
cmVkVmlkZW9GcmFtZVJlYWRlcj4oUmVmIHsgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCB9KTsKQEAg
LTMwNSw5ICszMTksOCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRl
b0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aQogCiBib29sIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwotICAgIHJldHVybiBtX2VuY29kZXJzLmlzRW1wdHkoKSAmJiBtX2RlY29kZXJzLmlzRW1wdHko
KTsKKyAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgcmV0dXJuICFtX2hhc0VuY29kZXJz
T3JEZWNvZGVyczsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0UlRDTG9nZ2lu
Z0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453197</attachid>
            <date>2022-02-25 04:40:45 -0800</date>
            <delta_ts>2022-02-26 01:36:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236767-20220225144043.patch</filename>
            <type>text/plain</type>
            <size>24283</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiNzM2MDJjZWNiYWM3N2Ex
YmM2MDBkYjkwZDEyOTMxNzg5NzNiOTYuLmIwNDQ1M2FmOTM5ZmU1MDYwZmRkMWFhYTJlYmMxZTI4
Y2VmY2MxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDItMjQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBjb25jdXJy
ZW5jeSB2aW9sYXRpb25zIGluIExpYldlYlJUQ0NvZGVjc1Byb3h5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NjcKKyAgICAgICAgPHJkYXI6Ly84
ODkwNDE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICAtIFRocmVhZE1lc3NhZ2VSZWNlaXZlcnMgc2hvdWxkIG5vdCBhZGQgSVBDIGxpc3RlbmVycyBp
biBjb25zdHJ1Y3RvcnMsCisgICAgICAgIGFzIHRoZSBkZWxpdmVyeSBzdGFydHMgcmlnaHQgYXdh
eSBhbmQgdXNlcyB0aGUgdW5jb25zdHJ1Y3RlZCB2aXJ0dWFsIHBvaW50ZXIuCisgICAgICAgIC0g
VGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zIHNob3VsZCBub3QgdXNlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGFzIHRoYXQgaXMKKyAgICAgICAgbWFpbiB0aHJlYWQgb2JqZWN0LgorICAgICAg
ICAtIExvY2tlZCBtX2VuY29kZXJzLCBtX2RlY29kZXJzIGFyZSBzb21ldGltZXMgYWNjZXNzZWQg
d2l0aG91dCBsb2NrLgorCisgICAgICAgIEluc3RlYWQ6CisgICAgICAgIC0gQWRkIHRoZSBJUEMg
bGlzdGVuZXJzIGluIGluaXRpYWxpemUgZnVuY3Rpb24uCisgICAgICAgIC0gUmVtb3ZlIHRoZSBJ
UEMgbGlzdGVuZXJzIHdoZW4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNjb25uZWN0cy4K
KyAgICAgICAgLSBTdG9yZSB0aGUgdGhyZWFkLXNhZmUgY29uZWN0aW9uLCB2aWRlbyBmcmFtZSBv
YmplY3QgaGVhcCwgcHJvY2VzcyBpZGVudGl0eQorICAgICAgICBvYmplY3RzIGFzIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgIC0gRG8gbm90IGxvY2sgbV9lbmNvZGVycywgbV9kZWNvZGVycy4g
SWYgdGhleSBhcmUgd29yayBxdWV1ZSBpbnN0YW5jZXMsCisgICAgICAgIGp1c3QgYWNjZXNzIHRo
ZW0gaW4gdGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zLiBBZGQgdGhyZWFkIHJlcXVpcmVtZW50cwor
ICAgICAgICB0byB0aGUgdmFyaWFibGVzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGUg
YWNjZXNzLgorICAgICAgICAtIFVzZSBJUEMgdGVzdGluZyBhc3NlcnRpb25zIHdoZW4gc2tpcHBp
bmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgorICAgICAgICAtIFVzZSBzZXBhcmF0ZSBhdG9taWMgY291
bnRlciAoYm9vbCkgdG8gY2hlY2sgaWYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgd2l0aCBleGlzdGluZyB0ZXN0cyBhbmQgQVNB
Ti4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0Zv
cklQQyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZUgyNjREZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZVZQOURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpmaW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorCiAyMDIyLTAyLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBPcHRpbWl6ZSBibGFjayBmcmFtZSBzZW5kaW5nIGluIE1lZGlhUmVjb3JkZXJQcml2
YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggMjIzOTM0YjhjMWZkMzg4ZDMyNDUxNmNkYWY4NDNkZmQ2YjRl
ZDczNy4uOTJkM2UzYTY0MTliYmQwYmVlYTgwYmZjOTI0ZjNmZWYyNTk1NTRjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMjg3LDkgKzI4Nyw2IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXItPmNsb3Nl
KCk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKLSAgICBt
X2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5jbG9zZSgpOwotI2VuZGlmCiAKICAgICAtLWdPYmplY3RD
b3VudEZvclRlc3Rpbmc7CiB9CkBAIC0zMjQsNyArMzIxLDkgQEAgdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAg
ICAgIFdDQ29udGVudEJ1ZmZlck1hbmFnZXI6OnNpbmdsZXRvbigpLnJlbW92ZUFsbENvbnRlbnRC
dWZmZXJzRm9yUHJvY2Vzcyh3ZWJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgfSk7CiAjZW5kaWYK
LQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQorICAgIG1fbGliV2ViUlRD
Q29kZWNzUHJveHkgPSBudWxscHRyOworI2VuZGlmCiAgICAgZ3B1UHJvY2VzcygpLmNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NDbG9zZWQoY29ubmVjdGlvbik7CiAgICAgZ3B1UHJvY2VzcygpLnJlbW92
ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKnRoaXMpOyAvLyBNYXkgZGVzdHJveSB8dGhpc3wu
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCA1MjVkZGE3YWZiMDllOWEzMWRmNDdkMzRlNTY5NTExNTY2ZGMxMDQy
Li5iNzJjMGIzNzM2MmI3MzlkYmZhM2VkOWEwYzRhMDFlM2IyMWIxZTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTMxMyw3ICszMTMsNyBAQCBwcml2YXRlOgogICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0
SGVhcDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQotICAg
IFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94eTsKKyAgICBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8TGliV2ViUlRDQ29kZWNzUHJveHk+
IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CiAjZW5kaWYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQog
ICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVzZW50aW5nQXBwbGljYXRpb25B
dWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDY4Mjk4YTNkMGMwZmRlMTI0MmM2ZjE5Y2IwMzVl
ZGM4ODAzNDA2M2UuLjg3NGZmNjgzYmE3ZmU0YmEwYTBlNTI3ODkwZDZmODY2NTJmM2Y5ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5LmgKQEAgLTM1LDcgKzM1LDggQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
ICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpdHkuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPGF0b21pYz4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IENvbm5lY3Rpb247CkBAIC01OCwxOCArNTksMTkgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogY2xhc3MgU2hhcmVk
VmlkZW9GcmFtZVJlYWRlcjsKIAotY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMg
SVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKK2NsYXNz
IExpYldlYlJUQ0NvZGVjc1Byb3h5IGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gY3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHByb2Nlc3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTGliV2ViUlRDQ29kZWNzUHJveHkocHJvY2VzcykpOyB9CisgICAgc3RhdGljIFJlZjxMaWJX
ZWJSVENDb2RlY3NQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAg
ICB+TGliV2ViUlRDQ29kZWNzUHJveHkoKTsKLQotICAgIHZvaWQgY2xvc2UoKTsKLQorICAgIHZv
aWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+JiYgcmVmRnJv
bUNvbm5lY3Rpb24pOwogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMaWJXZWJSVENDb2RlY3NQcm94eShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgYXV0
byBjcmVhdGVEZWNvZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50aWZpZXIsIGJvb2wgdXNlUmVt
b3RlRnJhbWVzKTsKKyAgICBXb3JrUXVldWUmIHdvcmtRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cXVldWU7IH0KIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
CiAgICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CkBA
IC05MiwyMCArOTQsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVN
ZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
Jik7CiAgICAgdm9pZCBzZXRSVENMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwpOwogCi0gICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotCiAg
ICAgc3RydWN0IEVuY29kZXIgewogICAgICAgICB3ZWJydGM6OkxvY2FsRW5jb2RlciB3ZWJydGNF
bmNvZGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkVmlkZW9G
cmFtZVJlYWRlcj4gZnJhbWVSZWFkZXI7CiAgICAgfTsKLSAgICBFbmNvZGVyKiBmaW5kRW5jb2Rl
cldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKyAgICBFbmNvZGVyKiBmaW5kRW5j
b2RlcihSVENFbmNvZGVySWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0NBUEFCSUxJVFkod29ya1F1
ZXVlKCkpOwogCi0gICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKLSAgICBIYXNoTWFwPFJUQ0RlY29k
ZXJJZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRGVjb2Rlcj4gbV9kZWNvZGVycyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVj
c1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEhh
c2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIsIEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2Rl
Y3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9x
dWV1ZTsKICAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXA7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5IG1fcmVzb3VyY2VPd25lcjsK
KyAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRGVjb2Rlcj4g
bV9kZWNvZGVycyBXVEZfR1VBUkRFRF9CWV9DQVBBQklMSVRZKHdvcmtRdWV1ZSgpKTsKKyAgICBI
YXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFS
REVEX0JZX0NBUEFCSUxJVFkod29ya1F1ZXVlKCkpOworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1f
aGFzRW5jb2RlcnNPckRlY29kZXJzIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmlu
ZGV4IDBhZWE1ZmY3NzgzOWMwMTExNmZjMjU4NmQ2NGNlZTU1M2UxZTYwYmQuLjRmYTUwYmU3ZmFk
ZmQwMDdjZWE1NzEyNjI3NjZiZmQzMmY0MTUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW1wb3J0ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW1wb3J0
ICJHUFVQcm9jZXNzLmgiCisjaW1wb3J0ICJJUENUZXN0ZXIuaCIKICNpbXBvcnQgIkxpYldlYlJU
Q0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgpAQCAtNDksMzAgKzUw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1MaWJXZWJSVENDb2RlY3NQcm94eTo6TGli
V2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikK
LSAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQotICAgICwgbV9x
dWV1ZShjb25uZWN0aW9uLmdwdVByb2Nlc3MoKS5saWJXZWJSVENDb2RlY3NRdWV1ZSgpKQotICAg
ICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChjb25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFw
KCkpCi0gICAgLCBtX3Jlc291cmNlT3duZXIoY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpdHko
KSkKK1JlZjxMaWJXZWJSVENDb2RlY3NQcm94eT4gTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbikKIHsKLSAg
ICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgdGhpcyk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgTGliV2Vi
UlRDQ29kZWNzUHJveHkod2ViUHJvY2Vzc0Nvbm5lY3Rpb24pKTsKKyAgICBpbnN0YW5jZS0+aW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotTGliV2ViUlRDQ29kZWNzUHJv
eHk6On5MaWJXZWJSVENDb2RlY3NQcm94eSgpCitMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2Vi
UlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgOiBtX2Nvbm5lY3Rpb24od2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKQorICAgICwgbV9xdWV1ZSh3ZWJQcm9jZXNzQ29ubmVjdGlvbi5ncHVQcm9jZXNzKCkubGli
V2ViUlRDQ29kZWNzUXVldWUoKSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAod2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKKyAgICAsIG1fcmVzb3VyY2VP
d25lcih3ZWJQcm9jZXNzQ29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpdHkoKSkKIHsKIH0KIAot
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlv
bikpOwotfQorTGliV2ViUlRDQ29kZWNzUHJveHk6On5MaWJXZWJSVENDb2RlY3NQcm94eSgpID0g
ZGVmYXVsdDsKIAotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQordm9pZCBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8TGliV2ViUlRDQ29kZWNz
UHJveHk+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNvbm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIG1fY29u
bmVjdGlvbi0+cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAotICAgIGRpc3BhdGNoVG9UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7Ci0gICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbildIHsKKyAgICAgICAgYXNzZXJ0SXND
dXJyZW50KHdvcmtRdWV1ZSgpKTsKICAgICAgICAgYXV0byBkZWNvZGVycyA9IFdURk1vdmUobV9k
ZWNvZGVycyk7CiAgICAgICAgIGZvciAoYXV0byBkZWNvZGVyIDogZGVjb2RlcnMudmFsdWVzKCkp
CiAgICAgICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CkBAIC04
MiwxNSArODIsMjggQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogICAgIH0p
OwogfQogCi1zdGF0aWMgRnVuY3Rpb248dm9pZChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
LCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKT4gY3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGJvb2wgdXNlUmVtb3RlRnJh
bWVzKQordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9j
b25uZWN0aW9uLT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOworfQorCit2b2lkIExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5j
dGlvbikKIHsKLSAgICByZXR1cm4gW2Nvbm5lY3Rpb24gPSBSZWYgeyBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCByZXNvdXJjZU93bmVyID0gZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKSwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBS
ZWYgeyBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgfSwg
aWRlbnRpZmllciwgdXNlUmVtb3RlRnJhbWVzXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKK30KKworYXV0byBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQoreworICAgIFJlZlB0cjxSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gdmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgaWYgKHVz
ZVJlbW90ZUZyYW1lcykKKyAgICAgICAgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwLnB0cigpOworICAgIHJldHVybiBbaWRlbnRpZmllciwgY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbiwgcmVzb3VyY2VPd25lciA9IG1fcmVzb3VyY2VPd25lciwgdmlkZW9GcmFt
ZU9iamVjdEhlYXAgPSBXVEZNb3ZlKHZpZGVvRnJhbWVPYmplY3RIZWFwKV0gKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3Rh
bXApIG11dGFibGUgewogICAgICAgICBhdXRvIHNhbXBsZSA9IFdlYkNvcmU6Ok1lZGlhU2FtcGxl
QVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUocGl4ZWxCdWZmZXIsIFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAx
KSwgeyB9KTsKICAgICAgICAgaWYgKCFzYW1wbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChyZXNvdXJjZU93bmVyKQogICAgICAgICAgICAgc2FtcGxlLT5zZXRPd25lcnNoaXBJ
ZGVudGl0eShyZXNvdXJjZU93bmVyKTsKLSAgICAgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykgewor
ICAgICAgICBpZiAodmlkZW9GcmFtZU9iamVjdEhlYXApIHsKICAgICAgICAgICAgIGF1dG8gcHJv
cGVydGllcyA9IHZpZGVvRnJhbWVPYmplY3RIZWFwLT5hZGRWaWRlb0ZyYW1lKHNhbXBsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAs
IFdURk1vdmUocHJvcGVydGllcykgfSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQs
MTA1ICsxMTcsMTA0IEBAIHN0YXRpYyBGdW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfCiAKIHZvaWQgTGliV2ViUlRD
Q29kZWNzUHJveHk6OmNyZWF0ZUgyNjREZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9v
cCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2RlY29k
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVy
LCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29k
ZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJl
bW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3Jl
YXRlTG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlk
ZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0Vu
Y29kZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wg
dXNlUmVtb3RlRnJhbWVzKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNy
ZWF0ZUxvY2FsSDI2NURlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhp
ZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykp
LmdldCgpKSk7CisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY1
RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIHVz
ZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNv
ZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURl
Y29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB1c2VSZW1vdGVGcmFt
ZXMpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKLSAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikp
OwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxWUDlE
ZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVhdGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCB1c2VSZW1vdGVGcmFtZXMpKS5nZXQoKSkpOworICAg
IGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CisgICAgYXV0byByZXN1bHQgPSBtX2RlY29k
ZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVjb2RlcihtYWtlQmxv
Y2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykp
LmdldCgpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8
IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9
CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwot
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBBU1NFUlQobV9kZWNvZGVycy5jb250
YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMudGFr
ZShpZGVudGlmaWVyKSkKLSAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29k
ZXIpOworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gbV9kZWNvZGVycy50YWtlKGlkZW50aWZpZXIpOworICAgIGlmICghZGVjb2RlcikgeworICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CisgICAgbV9oYXNFbmNvZGVy
c09yRGVjb2RlcnMgPSAhbV9lbmNvZGVycy5pc0VtcHR5KCkgfHwgIW1fZGVjb2RlcnMuaXNFbXB0
eSgpOwogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nl
c3NlcyBtX2RlY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZGVj
b2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVp
bnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBXVEZfSUdO
T1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29w
KCkpOwotICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBh
c3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwogICAgIGF1dG8gZGVjb2RlciA9IG1fZGVjb2Rl
cnMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGlmICghZGVjb2RlcikKKyAgICBpZiAoIWRlY29kZXIp
IHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKLQor
ICAgIH0KICAgICBpZiAod2VicnRjOjpkZWNvZGVGcmFtZShkZWNvZGVyLCB0aW1lU3RhbXAsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpCi0gICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpGYWlsZWRE
ZWNvZGluZyB7IGlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpGYWlsZWREZWNvZGluZyB7IGlkZW50aWZpZXIgfSwg
MCk7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vz
c2VzIG1fZGVjb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9kZWNv
ZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6c2V0RnJhbWVTaXplKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVp
bnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJUKG1f
ZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGFzc2VydElzQ3VycmVudCh3b3Jr
UXVldWUoKSk7CiAgICAgYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy5nZXQoaWRlbnRpZmllcik7
Ci0gICAgaWYgKCFkZWNvZGVyKQorICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBBU1NFUlRf
SVNfVEVTVElOR19JUEMoKTsKICAgICAgICAgcmV0dXJuOwotCisgICAgfQogICAgIHdlYnJ0Yzo6
c2V0RGVjb2RlckZyYW1lU2l6ZShkZWNvZGVyLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBM
aWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZvcm1hdE5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFyYW1ldGVycywgYm9vbCB1c2VMb3dMYXRlbmN5KQogewot
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07Ci0gICAgQVNTRVJUKCFtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLQorICAg
IGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPiBydGNQYXJhbWV0ZXJzOwogICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDog
cGFyYW1ldGVycykKICAgICAgICAgcnRjUGFyYW1ldGVycy5lbXBsYWNlKHBhcmFtZXRlci5maXJz
dC51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAg
YXV0byogZW5jb2RlciA9IHdlYnJ0Yzo6Y3JlYXRlTG9jYWxFbmNvZGVyKHdlYnJ0Yzo6U2RwVmlk
ZW9Gb3JtYXQgeyBmb3JtYXROYW1lLnV0ZjgoKS5kYXRhKCksIHJ0Y1BhcmFtZXRlcnMgfSwgbWFr
ZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gUmVmIHsgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKSB9LCBpZGVudGlmaWVyXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUluZm8mIGluZm8pIHsKKyAg
ICBhdXRvKiBlbmNvZGVyID0gd2VicnRjOjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRjOjpTZHBW
aWRlb0Zvcm1hdCB7IGZvcm1hdE5hbWUudXRmOCgpLmRhdGEoKSwgcnRjUGFyYW1ldGVycyB9LCBt
YWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mbyYgaW5mbykgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpM
aWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZEVuY29kaW5nIHsgaWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIHsgYnVmZmVyLCBzaXplIH0sIGluZm8gfSwgMCk7CiAgICAgfSkuZ2V0KCkpOwog
ICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyTG93TGF0ZW5jeShlbmNvZGVyLCB1c2VMb3dMYXRl
bmN5KTsKLSAgICBtX2VuY29kZXJzLmFkZChpZGVudGlmaWVyLCBFbmNvZGVyIHsgZW5jb2Rlciwg
bnVsbHB0ciB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIs
IEVuY29kZXIgeyBlbmNvZGVyLCBudWxscHRyIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSB8fCBpc1Rlc3RpbmdJUEMoKSk7CisgICAgbV9oYXNFbmNvZGVy
c09yRGVjb2RlcnMgPSB0cnVlOwogfQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxl
YXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFTU0VS
VCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAg
QVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGFzc2VydElzQ3Vy
cmVudCh3b3JrUXVldWUoKSk7CiAgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtlKGlk
ZW50aWZpZXIpOwotICAgIGlmIChlbmNvZGVyLndlYnJ0Y0VuY29kZXIpCi0gICAgICAgIHdlYnJ0
Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyLndlYnJ0Y0VuY29kZXIpOworICAgIGlmICgh
ZW5jb2Rlci53ZWJydGNFbmNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2Rl
cihlbmNvZGVyLndlYnJ0Y0VuY29kZXIpOworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0g
IW1fZW5jb2RlcnMuaXNFbXB0eSgpIHx8ICFtX2RlY29kZXJzLmlzRW1wdHkoKTsKIH0KIAotLy8g
Rm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVy
cyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVu
cyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0
IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0
aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MTZfdCB3
aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1h
eEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKIHsK
LSAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsK
LSAgICBpZiAoIWVuY29kZXIpCisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAg
ICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNv
ZGVyKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47
Ci0KKyAgICB9CiAgICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKGVuY29kZXItPndl
YnJ0Y0VuY29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWlu
Qml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsKIH0KIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29k
ZXIqIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpmaW5kRW5jb2RlcldpdGhvdXRMb2NrKFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMKK0xpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6
ZmluZEVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBBU1NF
UlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fZW5jb2RlcnMuZmlu
ZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9lbmNvZGVycy5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjUsMTAgKzIzNyw5IEBAIHN0YXRpYyBpbmxpbmUg
d2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRp
YVNhbXBsZTo6CiAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKIH0KIAotLy8g
Rm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVy
cyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVu
cyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0
IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNv
ZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29k
ZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+
IHNhbXBsZVJlZmVyZW5jZSkKIHsKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwog
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoc2Ft
cGxlUmVmZXJlbmNlKSB7CiAgICAgICAgIGF1dG8gc2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0
SGVhcC0+cmV0aXJlKFdURk1vdmUoKnNhbXBsZVJlZmVyZW5jZSksIDBfcyk7CkBAIC0yNDAsMTAg
KzI1MSwxMSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOgogICAgICAgICBwaXhlbEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFn
ZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKICAgICB9CiAK
LSAgICBBU1NFUlQoZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKSk7Ci0gICAgYXV0
byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7Ci0gICAgaWYg
KCFlbmNvZGVyKQorICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsK
KyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAg
aWYgKCFwaXhlbEJ1ZmZlcikgewpAQCAtMjYxLDM5ICsyNzMsNDAgQEAgdm9pZCBMaWJXZWJSVEND
b2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZToKICNlbmRpZgogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBm
dW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZl
IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQot
Ly8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KIHZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKLSAg
ICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKLSAg
ICBpZiAoIWVuY29kZXIpCisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBh
dXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVy
KSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAgICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLT53ZWJydGNF
bmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwogfQogCi0vLyBGb3IgcGVyZm9ybWFuY2UgcmVh
c29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4g
VGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVEND
b2RlY3NRdWV1ZQotLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBx
dWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1h
cGhvcmUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiBz
ZW1hcGhvcmUpCiB7Ci0gICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmll
cikpOwotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZp
ZXIpOwotICAgIGlmICghZW5jb2RlcikKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkp
OworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsKKyAgICBpZiAo
IWVuY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQogICAgICAgICBl
bmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4o
UmVmIHsgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCB9LCBtX3Jlc291cmNlT3duZXIpOwogICAgIGVu
Y29kZXItPmZyYW1lUmVhZGVyLT5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKIH0K
IAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9l
bmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rp
b24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9u
bHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUpCiB7Ci0gICAgQVNT
RVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwotICAgIGF1dG8qIGVuY29k
ZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwotICAgIGlmICghZW5jb2Rl
cikKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOworICAgIGF1dG8qIGVuY29kZXIg
PSBmaW5kRW5jb2RlcihpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAg
QVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBp
ZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQogICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9
IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oUmVmIHsgbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCB9LCBtX3Jlc291cmNlT3duZXIpOwpAQCAtMzAyLDkgKzMxNSw4IEBAIHZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWRlbnRpCiAKIGJvb2wgTGliV2ViUlRDQ29kZWNzUHJveHk6OmFsbG93c0V4aXRV
bmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgcmV0dXJuIG1fZW5jb2RlcnMu
aXNFbXB0eSgpICYmIG1fZGVjb2RlcnMuaXNFbXB0eSgpOworICAgIGFzc2VydElzTWFpblJ1bkxv
b3AoKTsKKyAgICByZXR1cm4gIW1faGFzRW5jb2RlcnNPckRlY29kZXJzOwogfQogCiB2b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRSVENMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwgbGV2ZWwp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453289</attachid>
            <date>2022-02-26 01:36:42 -0800</date>
            <delta_ts>2022-02-26 04:09:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236767-20220226113640.patch</filename>
            <type>text/plain</type>
            <size>24308</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExMTk2MWQ5YzAyZGNmNGRj
ZDgyM2YxNTQyOTU2ZGEzMDM5NjA5NGMuLjNlMGMwYmYzMzA1ZDNkZTNhZDExM2I1Yzg4Nzk4ZjFm
NzFiOWFlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjItMDItMjQgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBjb25jdXJy
ZW5jeSB2aW9sYXRpb25zIGluIExpYldlYlJUQ0NvZGVjc1Byb3h5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY3NjcKKyAgICAgICAgPHJkYXI6Ly84
ODkwNDE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICAtIFRocmVhZE1lc3NhZ2VSZWNlaXZlcnMgc2hvdWxkIG5vdCBhZGQgSVBDIGxpc3RlbmVycyBp
biBjb25zdHJ1Y3RvcnMsCisgICAgICAgIGFzIHRoZSBkZWxpdmVyeSBzdGFydHMgcmlnaHQgYXdh
eSBhbmQgdXNlcyB0aGUgdW5jb25zdHJ1Y3RlZCB2aXJ0dWFsIHBvaW50ZXIuCisgICAgICAgIC0g
VGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zIHNob3VsZCBub3QgdXNlIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGFzIHRoYXQgaXMKKyAgICAgICAgbWFpbiB0aHJlYWQgb2JqZWN0LgorICAgICAg
ICAtIExvY2tlZCBtX2VuY29kZXJzLCBtX2RlY29kZXJzIGFyZSBzb21ldGltZXMgYWNjZXNzZWQg
d2l0aG91dCBsb2NrLgorCisgICAgICAgIEluc3RlYWQ6CisgICAgICAgIC0gQWRkIHRoZSBJUEMg
bGlzdGVuZXJzIGluIGluaXRpYWxpemUgZnVuY3Rpb24uCisgICAgICAgIC0gUmVtb3ZlIHRoZSBJ
UEMgbGlzdGVuZXJzIHdoZW4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBkaXNjb25uZWN0cy4K
KyAgICAgICAgLSBTdG9yZSB0aGUgdGhyZWFkLXNhZmUgY29uZWN0aW9uLCB2aWRlbyBmcmFtZSBv
YmplY3QgaGVhcCwgcHJvY2VzcyBpZGVudGl0eQorICAgICAgICBvYmplY3RzIGFzIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgIC0gRG8gbm90IGxvY2sgbV9lbmNvZGVycywgbV9kZWNvZGVycy4g
SWYgdGhleSBhcmUgd29yayBxdWV1ZSBpbnN0YW5jZXMsCisgICAgICAgIGp1c3QgYWNjZXNzIHRo
ZW0gaW4gdGhlIHdvcmsgcXVldWUgZnVuY3Rpb25zLiBBZGQgdGhyZWFkIHJlcXVpcmVtZW50cwor
ICAgICAgICB0byB0aGUgdmFyaWFibGVzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNoZWNrcyB0aGUg
YWNjZXNzLgorICAgICAgICAtIFVzZSBJUEMgdGVzdGluZyBhc3NlcnRpb25zIHdoZW4gc2tpcHBp
bmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgorICAgICAgICAtIFVzZSBzZXBhcmF0ZSBhdG9taWMgY291
bnRlciAoYm9vbCkgdG8gY2hlY2sgaWYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgd2l0aCBleGlzdGluZyB0ZXN0cyBhbmQgQVNB
Ti4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6TGliV2ViUlRDQ29kZWNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6c3RvcExpc3RlbmluZ0Zv
cklQQyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJl
YWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0
ZUgyNjREZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUgyNjVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZVZQOURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
Ojppbml0aWFsaXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpmaW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjplbmNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpz
ZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorCiAyMDIyLTAyLTI1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gVGVzdFdlYktpdEFQSS5XZWJLaXQuTWlncmF0ZUxvY2FsU3RvcmFnZURh
dGFUb0dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDIyMzkzNGI4YzFmZDM4OGQzMjQ1MTZjZGFmODQzZGZkNmI0ZWQ3MzcuLjkyZDNlM2E2
NDE5YmJkMGJlZWE4MGJmYzkyNGYzZmVmMjU5NTU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4Nyw5
ICsyODcsNiBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLT5jbG9zZSgpOwogI2VuZGlmCi0j
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCi0gICAgbV9saWJXZWJSVENDb2Rl
Y3NQcm94eS0+Y2xvc2UoKTsKLSNlbmRpZgogCiAgICAgLS1nT2JqZWN0Q291bnRGb3JUZXN0aW5n
OwogfQpAQCAtMzI0LDcgKzMyMSw5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgICAgICBXQ0NvbnRlbnRC
dWZmZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxDb250ZW50QnVmZmVyc0ZvclByb2Nl
c3Mod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIH0pOwogI2VuZGlmCi0KKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKyAgICBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5ID0g
bnVsbHB0cjsKKyNlbmRpZgogICAgIGdwdVByb2Nlc3MoKS5jb25uZWN0aW9uVG9XZWJQcm9jZXNz
Q2xvc2VkKGNvbm5lY3Rpb24pOwogICAgIGdwdVByb2Nlc3MoKS5yZW1vdmVHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCp0aGlzKTsgLy8gTWF5IGRlc3Ryb3kgfHRoaXN8LgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggNTI1ZGRhN2FmYjA5ZTlhMzFkZjQ3ZDM0ZTU2OTUxMTU2NmRjMTA0Mi4uYjcyYzBiMzczNjJi
NzM5ZGJmYTNlZDlhMGM0YTAxZTNiMjFiMWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMTMsNyArMzEzLDcg
QEAgcHJpdmF0ZToKICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKLSAgICBSZWY8TGliV2ViUlRD
Q29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CisgICAgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0Nv
ZGVjc1Byb3h5OwogI2VuZGlmCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaAppbmRleCA2ODI5OGEzZDBjMGZkZTEyNDJjNmYxOWNiMDM1ZWRjODgwMzQwNjNlLi44
NzRmZjY4M2JhN2ZlNGJhMGEwZTUyNzg5MGQ2Zjg2NjUyZjNmOTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBA
IC0zNSw3ICszNSw4IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiU2hh
cmVkVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aXR5Lmg+Ci0j
aW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpA
QCAtNTgsMTggKzU5LDE5IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFz
cyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKIGNsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI7CiAKLWNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5IDogcHVibGljIElQQzo6Q29ubmVjdGlv
bjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVmQ291bnRlZCB7CitjbGFzcyBMaWJXZWJSVENDb2Rl
Y3NQcm94eSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNl
aXZlclJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBwcm9jZXNzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IExpYldlYlJUQ0Nv
ZGVjc1Byb3h5KHByb2Nlc3MpKTsgfQorICAgIHN0YXRpYyBSZWY8TGliV2ViUlRDQ29kZWNzUHJv
eHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgfkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5KCk7Ci0KLSAgICB2b2lkIGNsb3NlKCk7Ci0KKyAgICB2b2lkIHN0b3BMaXN0ZW5p
bmdGb3JJUEMoUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiYmIHJlZkZyb21Db25uZWN0aW9uKTsK
ICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDQ29kZWNzUHJveHkoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIGF1dG8gY3JlYXRlRGVjb2Rl
ckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyLCBib29sIHVzZVJlbW90ZUZyYW1lcyk7Cisg
ICAgV29ya1F1ZXVlJiB3b3JrUXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CiAKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtOTIsMjAgKzk0LDE5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29k
ZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogICAgIHZvaWQg
c2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogICAgIHN0cnVjdCBFbmNv
ZGVyIHsKICAgICAgICAgd2VicnRjOjpMb2NhbEVuY29kZXIgd2VicnRjRW5jb2RlciB7IG51bGxw
dHIgfTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+IGZy
YW1lUmVhZGVyOwogICAgIH07Ci0gICAgRW5jb2RlciogZmluZEVuY29kZXJXaXRob3V0TG9jayhS
VENFbmNvZGVySWRlbnRpZmllcik7CisgICAgRW5jb2RlciogZmluZEVuY29kZXIoUlRDRW5jb2Rl
cklkZW50aWZpZXIpIFdURl9SRVFVSVJFU19DQVBBQklMSVRZKHdvcmtRdWV1ZSgpKTsKIAotICAg
IG11dGFibGUgTG9jayBtX2xvY2s7Ci0gICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwg
d2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5
IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBIYXNoTWFwPFJUQ0VuY29k
ZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9s
b2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1h
eSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogICAg
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSBtX3Jlc291cmNlT3duZXI7CisgICAgSGFzaE1hcDxS
VENEZWNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RG
X0dVQVJERURfQllfQ0FQQUJJTElUWSh3b3JrUXVldWUoKSk7CisgICAgSGFzaE1hcDxSVENFbmNv
ZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRFRF9CWV9DQVBBQklM
SVRZKHdvcmtRdWV1ZSgpKTsKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2hhc0VuY29kZXJzT3JE
ZWNvZGVycyB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBkZmI1NTVhOTY3
MGZhZjM3NTY4YTJjMDY1NDcwNGQwMmY0ZWM4YjI0Li5hNzY3MWQ4ZDcyMWY4Nzk1OGFhNzRhYjc5
MmIzYWQ0YWZhODA3YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lt
cG9ydCAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCAiR1BVUHJvY2Vzcy5o
IgorI2ltcG9ydCAiSVBDVGVzdGVyLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdl
cy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAi
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKQEAgLTQ5LDMwICs1MCwyOSBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0NvZGVjc1By
b3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKLSAgICAsIG1fcXVldWUoY29ubmVjdGlv
bi5ncHVQcm9jZXNzKCkubGliV2ViUlRDQ29kZWNzUXVldWUoKSkKLSAgICAsIG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXAoY29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQotICAgICwgbV9y
ZXNvdXJjZU93bmVyKGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aXR5KCkpCitSZWY8TGliV2Vi
UlRDQ29kZWNzUHJveHk+IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24pCiB7Ci0gICAgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMp
OworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3IExpYldlYlJUQ0NvZGVjc1Byb3h5
KHdlYlByb2Nlc3NDb25uZWN0aW9uKSk7CisgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUxpYldlYlJUQ0NvZGVjc1Byb3h5Ojp+TGliV2ViUlRD
Q29kZWNzUHJveHkoKQorTGliV2ViUlRDQ29kZWNzUHJveHk6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIHdlYlByb2Nlc3NDb25uZWN0aW9uKQorICAgIDog
bV9jb25uZWN0aW9uKHdlYlByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSkKKyAgICAsIG1f
cXVldWUod2ViUHJvY2Vzc0Nvbm5lY3Rpb24uZ3B1UHJvY2VzcygpLmxpYldlYlJUQ0NvZGVjc1F1
ZXVlKCkpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKHdlYlByb2Nlc3NDb25uZWN0aW9u
LnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisgICAgLCBtX3Jlc291cmNlT3duZXIod2ViUHJvY2Vz
c0Nvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aXR5KCkpCiB7CiB9CiAKLXZvaWQgTGliV2ViUlRD
Q29kZWNzUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQotewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKLX0KK0xpYldl
YlJUQ0NvZGVjc1Byb3h5Ojp+TGliV2ViUlRDQ29kZWNzUHJveHkoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJv
eHk6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiYmIHJlZkZy
b21Db25uZWN0aW9uKQogewotICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0
aW9uKCkucmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92
ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocmVmRnJvbUNvbm5lY3Rpb24pXSB7CisgICAgICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVl
dWUoKSk7CiAgICAgICAgIGF1dG8gZGVjb2RlcnMgPSBXVEZNb3ZlKG1fZGVjb2RlcnMpOwogICAg
ICAgICBmb3IgKGF1dG8gZGVjb2RlciA6IGRlY29kZXJzLnZhbHVlcygpKQogICAgICAgICAgICAg
d2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOwpAQCAtODIsMTUgKzgyLDI4IEBA
IHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKICAgICB9KTsKIH0KIAotc3RhdGlj
IEZ1bmN0aW9uPHZvaWQoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCk+IGNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBib29sIHVzZVJlbW90ZUZyYW1lcykKK3ZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemUoKQoreworICAgIG1fY29ubmVjdGlvbi0+YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAg
cmV0dXJuIFtjb25uZWN0aW9uID0gUmVmIHsgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25u
ZWN0aW9uKCkgfSwgcmVzb3VyY2VPd25lciA9IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2Vi
UHJvY2Vzc0lkZW50aXR5KCksIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVmIHsgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIH0sIGlkZW50aWZpZXIsIHVz
ZVJlbW90ZUZyYW1lc10gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRp
bWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApICBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK2F1dG8gTGliV2ViUlRDQ29kZWNzUHJv
eHk6OmNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBib29sIHVzZVJlbW90ZUZyYW1lcykKK3sKKyAgICBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA+IHZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIGlmICh1c2VSZW1vdGVGcmFtZXMp
CisgICAgICAgIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5w
dHIoKTsKKyAgICByZXR1cm4gW2lkZW50aWZpZXIsIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24s
IHJlc291cmNlT3duZXIgPSBtX3Jlc291cmNlT3duZXIsIHZpZGVvRnJhbWVPYmplY3RIZWFwID0g
V1RGTW92ZSh2aWRlb0ZyYW1lT2JqZWN0SGVhcCldIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSBtdXRhYmxlIHsK
ICAgICAgICAgYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0
ZUltYWdlU2FtcGxlKHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZSwgZmFsc2UsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIHsgfSk7CiAgICAg
ICAgIGlmICghc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAocmVzb3Vy
Y2VPd25lcikKICAgICAgICAgICAgIHNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVzb3Vy
Y2VPd25lcik7Ci0gICAgICAgIGlmICh1c2VSZW1vdGVGcmFtZXMpIHsKKyAgICAgICAgaWYgKHZp
ZGVvRnJhbWVPYmplY3RIZWFwKSB7CiAgICAgICAgICAgICBhdXRvIHByb3BlcnRpZXMgPSB2aWRl
b0ZyYW1lT2JqZWN0SGVhcC0+YWRkKHNhbXBsZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVk
RGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsIFdURk1vdmUocHJvcGVydGllcykgfSwg
MCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQsMTA1ICsxMTcsMTA0IEBAIHN0YXRpYyBG
dW5jdGlvbjx2b2lkKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVT
dGFtcE5zLCB1aW50MzJfCiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjRE
ZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJh
bWVzKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKLSAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2
NERlY29kZXIobWFrZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7Cisg
ICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVj
b2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtl
QmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1l
cykpLmdldCgpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9IHRydWU7
CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0Rl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgdXNlUmVtb3RlRnJhbWVzKQogewotICAg
IEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
Ci0gICAgQVNTRVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX2Rl
Y29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NURlY29kZXIobWFr
ZUJsb2NrUHRyKGNyZWF0ZURlY29kZXJDYWxsYmFjayhpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgYXNzZXJ0SXND
dXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVjb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoY3Jl
YXRlRGVjb2RlckNhbGxiYWNrKGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGlu
Z0lQQygpKTsKKyAgICBtX2hhc0VuY29kZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgYm9vbCB1c2VSZW1vdGVGcmFtZXMpCiB7Ci0gICAgQVNTRVJUKCFpc01h
aW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBBU1NFUlQo
IW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxWUDlEZWNvZGVyKG1ha2VCbG9ja1B0cihjcmVh
dGVEZWNvZGVyQ2FsbGJhY2soaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCB1c2VSZW1vdGVGcmFtZXMpKS5nZXQoKSkpOworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVl
dWUoKSk7CisgICAgYXV0byByZXN1bHQgPSBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJy
dGM6OmNyZWF0ZUxvY2FsVlA5RGVjb2RlcihtYWtlQmxvY2tQdHIoY3JlYXRlRGVjb2RlckNhbGxi
YWNrKGlkZW50aWZpZXIsIHVzZVJlbW90ZUZyYW1lcykpLmdldCgpKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5IHx8IGlzVGVzdGluZ0lQQygpKTsKKyAgICBt
X2hhc0VuY29kZXJzT3JEZWNvZGVycyA9IHRydWU7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNz
UHJveHk6OnJlbGVhc2VEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKLSAgICBBU1NFUlQobV9kZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAg
aWYgKGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMudGFrZShpZGVudGlmaWVyKSkKLSAgICAgICAg
d2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAgIGFzc2VydElzQ3VycmVu
dCh3b3JrUXVldWUoKSk7CisgICAgYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50
aWZpZXIpOworICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19J
UEMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERl
Y29kZXIoZGVjb2Rlcik7CisgICAgbV9oYXNFbmNvZGVyc09yRGVjb2RlcnMgPSAhbV9lbmNvZGVy
cy5pc0VtcHR5KCkgfHwgIW1fZGVjb2RlcnMuaXNFbXB0eSgpOwogfQogCi0vLyBGb3IgcGVyZm9y
bWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2RlY29kZXJzIHdpdGhvdXQg
bG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBs
aWJXZWJSVENDb2RlY3NRdWV1ZQotLy8gYW5kIG1fZGVjb2RlcnMgb25seSBnZXQgbW9kaWZpZWQg
b24gdGhpcyBxdWV1ZS4KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIEFTU0VSVChtX2RlY29k
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVl
KCkpOwogICAgIGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpOwotICAg
IGlmICghZGVjb2RlcikKKyAgICBpZiAoIWRlY29kZXIpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RF
U1RJTkdfSVBDKCk7CiAgICAgICAgIHJldHVybjsKLQorICAgIH0KICAgICBpZiAod2VicnRjOjpk
ZWNvZGVGcmFtZShkZWNvZGVyLCB0aW1lU3RhbXAsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkp
Ci0gICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpGYWlsZWREZWNvZGluZyB7IGlkZW50aWZpZXIgfSwg
MCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
OjpGYWlsZWREZWNvZGluZyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKLS8vIEZvciBwZXJmb3Jt
YW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZGVjb2RlcnMgd2l0aG91dCBs
b2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxp
YldlYlJUQ0NvZGVjc1F1ZXVlCi0vLyBhbmQgbV9kZWNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBv
biB0aGlzIHF1ZXVlLgogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0RnJhbWVTaXplKFJU
Q0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBo
ZWlnaHQpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CiAgICAgYXV0byBkZWNv
ZGVyID0gbV9kZWNvZGVycy5nZXQoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZWNvZGVyKQorICAg
IGlmICghZGVjb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKICAgICAg
ICAgcmV0dXJuOwotCisgICAgfQogICAgIHdlYnJ0Yzo6c2V0RGVjb2RlckZyYW1lU2l6ZShkZWNv
ZGVyLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3Jl
YXRlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGZvcm1hdE5hbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFy
YW1ldGVycywgYm9vbCB1c2VMb3dMYXRlbmN5KQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9v
cCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKCFtX2VuY29k
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLQorICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVl
dWUoKSk7CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJhbWV0
ZXJzOwogICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogcGFyYW1ldGVycykKICAgICAgICAgcnRj
UGFyYW1ldGVycy5lbXBsYWNlKHBhcmFtZXRlci5maXJzdC51dGY4KCkuZGF0YSgpLCBwYXJhbWV0
ZXIuc2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byogZW5jb2RlciA9IHdlYnJ0Yzo6
Y3JlYXRlTG9jYWxFbmNvZGVyKHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgeyBmb3JtYXROYW1lLnV0
ZjgoKS5kYXRhKCksIHJ0Y1BhcmFtZXRlcnMgfSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0g
UmVmIHsgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCBpZGVudGlm
aWVyXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6Oldl
YktpdEVuY29kZWRGcmFtZUluZm8mIGluZm8pIHsKKyAgICBhdXRvKiBlbmNvZGVyID0gd2VicnRj
OjpjcmVhdGVMb2NhbEVuY29kZXIod2VicnRjOjpTZHBWaWRlb0Zvcm1hdCB7IGZvcm1hdE5hbWUu
dXRmOCgpLmRhdGEoKSwgcnRjUGFyYW1ldGVycyB9LCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbykgewogICAg
ICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRl
ZEVuY29kaW5nIHsgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgYnVmZmVyLCBzaXpl
IH0sIGluZm8gfSwgMCk7CiAgICAgfSkuZ2V0KCkpOwogICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNv
ZGVyTG93TGF0ZW5jeShlbmNvZGVyLCB1c2VMb3dMYXRlbmN5KTsKLSAgICBtX2VuY29kZXJzLmFk
ZChpZGVudGlmaWVyLCBFbmNvZGVyIHsgZW5jb2RlciwgbnVsbHB0ciB9KTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIEVuY29kZXIgeyBlbmNvZGVyLCBudWxs
cHRyIH0pOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSB8fCBp
c1Rlc3RpbmdJUEMoKSk7CisgICAgbV9oYXNFbmNvZGVyc09yRGVjb2RlcnMgPSB0cnVlOwogfQog
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgIGFzc2VydElzQ3VycmVudCh3b3JrUXVldWUoKSk7CiAgICAg
YXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpOwotICAgIGlmIChlbmNv
ZGVyLndlYnJ0Y0VuY29kZXIpCi0gICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2Rlcihl
bmNvZGVyLndlYnJ0Y0VuY29kZXIpOworICAgIGlmICghZW5jb2Rlci53ZWJydGNFbmNvZGVyKSB7
CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyLndlYnJ0Y0VuY29kZXIp
OworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gIW1fZW5jb2RlcnMuaXNFbXB0eSgpIHx8
ICFtX2RlY29kZXJzLmlzRW1wdHkoKTsKIH0KIAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMs
IHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMg
aXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNz
UXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUu
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1
bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJp
dHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKIHsKLSAgICBhdXRvKiBlbmNvZGVyID0gZmlu
ZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKLSAgICBpZiAoIWVuY29kZXIpCisgICAg
YXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVu
Y29kZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9J
U19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47Ci0KKyAgICB9CiAgICAgd2VicnRjOjpp
bml0aWFsaXplTG9jYWxFbmNvZGVyKGVuY29kZXItPndlYnJ0Y0VuY29kZXIsIHdpZHRoLCBoZWln
aHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsK
IH0KIAotTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpmaW5kRW5jb2RlcldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK0xpYldlYlJUQ0NvZGVjc1Byb3h5
OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZmluZEVuY29kZXIoUlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAg
ICAgYXV0byBpdGVyYXRvciA9IG1fZW5jb2RlcnMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9lbmNvZGVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMjUsMTAgKzIzNyw5IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRv
V2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6CiAgICAgcmV0dXJuIHdl
YnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKIH0KIAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMs
IHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMg
aXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNz
UXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUu
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWlu
dDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHNhbXBsZVJlZmVyZW5jZSkKIHsKKyAg
ICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoc2FtcGxlUmVmZXJlbmNlKSB7CiAgICAgICAg
IGF1dG8gc2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+Z2V0KFdURk1vdmUoKnNhbXBs
ZVJlZmVyZW5jZSkpOwpAQCAtMjQwLDEwICsyNTEsMTEgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZToKICAgICAgICAgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQ
QUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNt
U2FtcGxlQnVmZmVyKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExv
Y2soaWRlbnRpZmllcikpOwotICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRM
b2NrKGlkZW50aWZpZXIpOwotICAgIGlmICghZW5jb2RlcikKKyAgICBhdXRvKiBlbmNvZGVyID0g
ZmluZEVuY29kZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKSB7CisgICAgICAgIEFT
U0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKQEAgLTI2MSwzOSAr
MjczLDQwIEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6CiAjZW5kaWYKIH0KIAotLy8gRm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRo
b3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0
aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlm
aWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVS
YXRlcyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1
aW50MzJfdCBmcmFtZVJhdGUpCiB7Ci0gICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0
aG91dExvY2soaWRlbnRpZmllcik7Ci0gICAgaWYgKCFlbmNvZGVyKQorICAgIGFzc2VydElzQ3Vy
cmVudCh3b3JrUXVldWUoKSk7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyKGlkZW50
aWZpZXIpOworICAgIGlmICghZW5jb2RlcikgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19J
UEMoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNv
ZGVyUmF0ZXMoZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKIH0K
IAotLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9l
bmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rp
b24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKLS8vIGFuZCBtX2VuY29kZXJzIG9u
bHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5
OjpzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogewotICAgIEFTU0VSVChmaW5kRW5j
b2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVu
Y29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKLSAgICBpZiAoIWVuY29kZXIpCisgICAgYXNz
ZXJ0SXNDdXJyZW50KHdvcmtRdWV1ZSgpKTsKKyAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29k
ZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9JU19U
RVNUSU5HX0lQQygpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKCFlbmNvZGVy
LT5mcmFtZVJlYWRlcikKICAgICAgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVl
PFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KFJlZiB7IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAgfSwg
bV9yZXNvdXJjZU93bmVyKTsKICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlci0+c2V0U2VtYXBob3Jl
KFdURk1vdmUoc2VtYXBob3JlKSk7CiB9CiAKLS8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0
aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlz
IHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1
ZXVlCi0vLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgog
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYgaXBjSGFuZGxlKQogewotICAgIEFTU0VSVChmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50
aWZpZXIpKTsKLSAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVu
dGlmaWVyKTsKLSAgICBpZiAoIWVuY29kZXIpCisgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1
ZSgpKTsKKyAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXIoaWRlbnRpZmllcik7CisgICAg
aWYgKCFlbmNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOwogICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKCFlbmNvZGVyLT5mcmFtZVJlYWRlcikKICAgICAg
ICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXI+KFJlZiB7IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAgfSwgbV9yZXNvdXJjZU93bmVyKTsKQEAg
LTMwMiw5ICszMTUsOCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRl
b0ZyYW1lTWVtb3J5KFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aQogCiBib29sIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwotICAgIHJldHVybiBtX2VuY29kZXJzLmlzRW1wdHkoKSAmJiBtX2RlY29kZXJzLmlzRW1wdHko
KTsKKyAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgcmV0dXJuICFtX2hhc0VuY29kZXJz
T3JEZWNvZGVyczsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0UlRDTG9nZ2lu
Z0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>