<?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>234438</bug_id>
          
          <creation_ts>2021-12-17 11:16:40 -0800</creation_ts>
          <short_desc>Hash tables, read/write, and heap memory are used unnecessarily, which may hurt performance</short_desc>
          <delta_ts>2021-12-18 17:57:23 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andersca</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825144</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-17 11:16:40 -0800</bug_when>
    <thetext>Hash tables, read/write, and heap memory are used unnecessarily, which may hurt performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825177</commentid>
    <comment_count>1</comment_count>
      <attachid>447473</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-17 13:54:59 -0800</bug_when>
    <thetext>Created attachment 447473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825213</commentid>
    <comment_count>2</comment_count>
      <attachid>447483</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-17 15:15:19 -0800</bug_when>
    <thetext>Created attachment 447483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825301</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-17 21:11:59 -0800</bug_when>
    <thetext>Looks like all the tests are passing so looking for a review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825392</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-18 15:58:29 -0800</bug_when>
    <thetext>Committed r287232 (245392@main): &lt;https://commits.webkit.org/245392@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447483.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825393</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-18 15:59:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86675997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825401</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-18 17:46:27 -0800</bug_when>
    <thetext>Did you just find all these via code inspection, or did you use any tools?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825402</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-18 17:57:23 -0800</bug_when>
    <thetext>This was what I found by just looking around.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447473</attachid>
            <date>2021-12-17 13:54:59 -0800</date>
            <delta_ts>2021-12-17 15:25:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234438-20211217135458.patch</filename>
            <type>text/plain</type>
            <size>88312</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzMjc5NDk2OGJlZmIwZmQzNGYzNWNl
ODY0NjkzOWQzMDA4ZTg2M2YuLmNlMzMzYzdiYjdlNGIzYmY3YzE0ZTEzYzc3YWNkYjI4MmEwMDQ0
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhc2ggdGFibGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBt
ZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Nv
cnRlZEFycmF5TWFwLmg6CisgICAgICAgIChXVEY6OlNvcnRlZEFycmF5TWFwPEFycmF5VHlwZT46
OmNvbnRhaW5zIGNvbnN0KTogQWRkZWQuIE1vcmUgZWxlZ2FudCB0aGFuIGNhbGxpbmcgdHJ5R2V0
IGFuZAorICAgICAgICB0cmVhdGluZyB0aGUgcG9pbnRlciBhcyBhIGJvb2xlYW4uCisgICAgICAg
IChXVEY6Om1ha2VPcHRpb25hbEZyb21Qb2ludGVyKTogTW92ZWQgaGVyZSBzbyBpdCBjYW4gYmUg
cmV1c2VkLiBNaWdodCByZW5hbWUgbGF0ZXIsIHNpbmNlIGl0J3MKKyAgICAgICAgb25seSB1c2Vk
IGluIGEgZmV3IHBsYWNlcy4KKwogMjAyMS0xMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9y
aS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBNU1ZDIHJlcG9ydHMgInd0Zi9SZXRhaW5QdHIu
aCgxOTYpOiBlcnJvciBDMzg2MTogJ0NGQXV0b3JlbGVhc2UnOiBpZGVudGlmaWVyIG5vdCBmb3Vu
ZCAiIHdpdGggL3Blcm1pc3NpdmUtIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2NlNGY4YTVl
OWMzMWQ5YTgyMjAzODY3N2MwNmEwZDE5MzlmNWUwLi40YTkwZDA4Y2E5NDI3YTQwZWZkODBjZGU4
ZjI2MjEzMDk4NTkwOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTEyLTE3
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBIYXNoIHRhYmxlcywg
cmVhZC93cml0ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNo
IG1heSBodXJ0IHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ0MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVja2V0TUlNRVR5cGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzVmFsaWRNZWRpYU1JTUVUeXBlKTogTW92ZWQgdGhlIGNvZGUgZnJv
bSBidWNrZXRNSU1FVHlwZXMgaW4gaGVyZS4KKyAgICAgICAgVXNlIGEgU29ydGVkQXJyYXlTZXQg
Zm9yIGJ1Y2tldE1JTUVUeXBlcywgd2hpY2ggc2hvdWxkIGJlIHNpbWlsYXIgaW4gcGVyZm9ybWFu
Y2UKKyAgICAgICAgYW5kIHVzZXMgbm8gaGVhcCBvciByZWFkL3dyaXRlIG1lbW9yeS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpwb3B1cFZhbHVlIGNvbnN0KTogVXNlIGEgbG9v
cCB0byBjaGVjayB0aGUgNSB2YWxpZAorICAgICAgICB2YWx1ZXMgaGVyZSBpbnN0ZWFkIG9mIG1h
a2luZyBhIEhhc2hTZXQuIFNob3VsZCBiZSBzaW1pbGFyIGluIHBlcmZvcm1hbmNlIGFuZAorICAg
ICAgICB1c2Ugbm8gaGVhcCBvciByZWFkL3dyaXRlIG1lbW9yeS4gQWxzbyByZW1vdmVzIGNhbGwg
dG8gY29udmVydFRvQVNDSUlMb3dlcmNhc2UsCisgICAgICAgIHdoaWNoIHdpbGwgYWxzbyBoZWxw
IHBlcmZvcm1hbmNlIGFuZCBtZW1vcnkgdXNlIGEgdGlueSBiaXQgaW4gc29tZSBjYXNlcy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSBjb25zdCk6IFVzZQorICAgICAgICBkZWNsdHlwZSB0byBtYWtlIHRoaXMg
ZGVjbGFyYXRpb24gc2ltcGxlciBhbmQgc2hvcnRlci4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVGb3JFYWNoRXZlbnRI
YW5kbGVyQ29udGVudEF0dHJpYnV0ZSk6IFVzZSBkZWNsdHlwZSBhbmQgcmVmZXJlbmNlcworICAg
ICAgICBpbnN0ZWFkIG9mIHBvaW50ZXJzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIGEgbGl0dGxlIGNs
ZWFuZXIuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
YW5BdHRhY2hBdXRob3JTaGFkb3dSb290KTogVXNlIGNvbnN0ZXhwciBzbyB0aGUgdGFnIGxpc3Qg
aGVyZSBkb2VzCisgICAgICAgIG5vdCB1c2UgYW55IHJlYWQvd3JpdGUgbWVtb3J5LgorCisgICAg
ICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludEZhY3RvcnlDcHBGaWxlKTog
UmVtb3ZlZCB0aGUgdW5uZWNlc3NhcnkgY29uc3RydWN0b3JzIGZvciB0aGUgTWFwRW50cnkKKyAg
ICAgICAgc3RydWN0cy4gVXNlIGRlY2x0eXBlIHNvIHdlIGNhbiBtYWtlIHRoZSB0YWJsZXMgY29u
c3RleHByIHNvIHRoZXkgZG8gbm90IHVzZQorICAgICAgICBhbnkgcmVhZC93cml0ZSBtZW1vcnku
CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZSk6IERpdHRvLgorCisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZCk6IEFkZGVkIGEgcmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSwgd2hpY2gKKyAgICAgICAgY291bGQgbWFrZSB0aGUgaGFzaCB0YWJsZSBoZXJlIHVzZSBh
IGxpdHRsZSBsZXNzIG1lbW9yeS4KKworICAgICAgICAqIGh0bWwvQXV0b2ZpbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZmllbGROYW1lTWFwKTogRGVsZXRlZC4gUmVwbGFjZWQgd2l0aCBhIFNv
cnRlZEFycmF5TWFwLCB3aGljaCBpcworICAgICAgICBlbnRpcmVseSBtYWRlIG91dCBvZiBjb25z
dGV4cHIgb2JqY3RzIHNvIGRvZXMgbm90IHVzZSBoZWFwIG9yIHJlYWQvd3JpdGUgbWVtb3J5Lgor
ICAgICAgICAoV2ViQ29yZTo6dG9BdXRvZmlsbEZpZWxkTmFtZSk6IFVwZGF0ZWQgdG8gdXNlIFNv
cnRlZEFycmF5TWFwIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6
Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aXND
YXNlU2Vuc2l0aXZlQXR0cmlidXRlKTogQWRkZWQgYSByZXNlcnZlSW5pdGlhbENhcGFjaXR5LAor
ICAgICAgICB3aGljaCBjb3VsZCBtYWtlIHRoZSBoYXNoIHRhYmxlIGhlcmUgdXNlIGEgbGl0dGxl
IGxlc3MgbWVtb3J5LgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUpOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG91Y2hFdmVudFJlZ2lvbkNvbG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KTogVXNlIFNvcnRlZEFycmF5
TWFwIGFuZAorICAgICAgICBzb21lIGxhbWJkYXMgdG8gbWFrZSB0aGlzIGNvZGUgdGlnaHRlciBh
bmQgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVXNlclRpbWlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVkTWFya05hbWVzVG9OYXZpZ2F0aW9u
VGltaW5nRnVuY3Rpb25NYXApOiBEZWxldGVkLiBVc2UKKyAgICAgICAgYSBTb3J0ZWRBcnJheU1h
cCBpbnN0ZWFkLCB3aGljaCBzaG91bGQgYmUgc2ltaWxhciBpbiBwZXJmb3JtYW5jZSBhbmQgdXNl
cyBubyBoZWFwCisgICAgICAgIG9yIHJlYWQvd3JpdGUgbWVtb3J5LgorICAgICAgICAoV2ViQ29y
ZTo6cmVzdHJpY3RlZE1hcmtGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
c1Jlc3RyaWN0ZWRNYXJrTmFtZU5vbk1haW5UaHJlYWQpOiBEZWxldGVkLiBUaGlzIGlzIG5vdyBz
YWZlIHRvIGRvIG9uCisgICAgICAgIGFueSB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZVVzZXJUaW1pbmc6OmlzUmVzdHJpY3RlZE1hcmtOYW1lKTogVXNlIHRoZSBTb3J0ZWRB
cnJheU1hcCwKKyAgICAgICAgd2hpY2ggaGFzIHRoZSBiZW5lZml0IG9mIHJlbGF4aW5nIHRoZSB0
aHJlYWQgcmVzdHJpY3Rpb25zOyB0aGlzIGlzIG5vdyBzYWZlIHRvCisgICAgICAgIGNhbGwgb24g
YW55IHRocmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVXNlclRpbWluZzo6Y29u
dmVydE1hcmtUb1RpbWVzdGFtcCBjb25zdCk6IFVwZGF0ZWQgdG8gdXNlCisgICAgICAgIHRoZSBT
b3J0ZWRBcnJheU1hcC4gVGhlcmUgbWF5IGJlIHNvbWUgYWRkaXRpb25hbCBzaW1wbGlmaWNhdGlv
biBwb3NzaWJsZSBub3cKKyAgICAgICAgdGhhdCB0aGUgbWFyayBmdW5jdGlvbnMgbWFwIGNhbiBi
ZSB1c2VkIGluIGFueSB0aHJlYWQsIGJ1dCBJIHdhc24ndCBzdXJlLgorCisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjptZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQpOiBVc2UgbWFrZU9wdGlv
bmFsRnJvbVBvaW50ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6aGFzVmFsaWRBdmVyYWdlQ2hh
cldpZHRoIGNvbnN0KTogVXNlIGEgU29ydGVkQXJyYXlTZXQsCisgICAgICAgIHdoaWNoIHNob3Vs
ZCBiZSBzaW1pbGFyIGluIHBlcmZvcm1hbmNlIGFuZCB1c2VzIG5vIGhlYXAgb3IgcmVhZC93cml0
ZSBtZW1vcnkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIpOiBEZWxldGVk
LiBNb3ZlZCB0byBTb3J0ZWRBcnJheU1hcC5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZU9wdGlvbmFsRnJvbVBv
aW50ZXIpOiBEZWxldGVkLiBNb3ZlZCB0byBTb3J0ZWRBcnJheU1hcC5oLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNh
Y2hlKTogVXBkYXRlZCBmb3IgZnVuY3Rpb24gbmFtZSBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbToKKyAgICAgICAgVHdlYWtlZCB1c2Ugb2YgVU5VU0VEX1BBUkFNIGEgYml0
IGFjcm9zcyB0aGUgZmlsZSwgcmVseWluZyBvbiBvbWl0dGVkIG5hbWVzIGluc3RlYWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyk6IFVzZSBhIGNvbnN0ZXhwciBhcnJh
eSByYXRoZXIgdGhhbiBIYXNoU2V0LAorICAgICAgICBvbiBzb21ldGhpbmcganVzdCBpdGVyYXRp
bmcgdGhpcywgbm90IHVzaW5nIGl0IGFzIGEgc2V0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMpOiBSZW5hbWVkIGZy
b20gd2VibU1JTUVUeXBlcywKKyAgICAgICAgY2hhbmdlZCB0byByZXR1cm4gYSBTcGFuIHNvIHdl
IGRvbid0IGhhdmUgdG8gYWxsb2NhdGUgYSBIYXNoU2V0LCBzaW5jZSBjYWxsZXJzCisgICAgICAg
IHNpbXBseSBpdGVyYXRlIHRoaXMsIGFuZCBkb24ndCBkbyBzZXQgb3BlcmF0aW9ucy4KKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzU3VwcG9ydGVkVmlkZW9Db2Rl
Yyk6IFJlcGxhY2VkIHRoZQorICAgICAgICBzdXBwb3J0ZWRWaWRlb0NvZGVjcyB3aXRoIHRoaXMu
IFdlIGRvbid0IG5lZWQgYSBIYXNoU2V0IHRvIGNoZWNrIGZvciB0d28gdmFsdWVzLAorICAgICAg
ICBhbmQgdGhpcyBzaG91bGQgYmUgZmFzdGVyIGFuZCB1c2UgbGVzcyBtZW1vcnkuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc1N1cHBvcnRlZEF1ZGlvQ29kZWMp
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmg6IFVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFnU2V0
KTogQWRkZWQgdGhpcyBoZWxwZXIgdG8gbWFrZSB0aGUgY29kZSBpbiB0aGUgZnVuY3Rpb25zIGJl
bG93IGxlc3MKKyAgICAgICAgcmVwZXRpdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNsaXBwZXJG
aWx0ZXJNYXNrZXJUYWdzKTogVXNlIGEgY29uc3RleHByIGFycmF5IGluc3RlYWQgb2YgbWFueSBz
ZXBhcmF0ZQorICAgICAgICBjYWxscyB0byBIYXNoU2V0OjphZGQgdG8gY29uc3RydWN0IHRoZSBz
ZXQuCisgICAgICAgIChXZWJDb3JlOjptYXJrZXJUYWdzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpmaWxsQW5kU3Ryb2tlVGFncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y2hhaW5h
YmxlUmVzb3VyY2VUYWdzKTogRGl0dG8uCisKIDIwMjEtMTItMTcgIEFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVXNlIHRoZSBpbmxpbmUgYm94J3Mg
ZGlyZWN0aW9uIHRvIGRlY2lkZSBpZiBzdGFydC9lbmQgZGVjb3JhdGlvbnMgc2hvdWxkIGJlIGFw
cGxpZWQgb24gZmlyc3QvbGFzdCBib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2Q3NTk1ZjY5MGZlZmFiNDNiYzQw
MzFlZTBjOGMxNTZjN2RkZjkwNy4uZWQ5ZmM0ZjJlZjI5M2Y5NWZhMzMxNDZjNjQ2MDJlNWJlZGIz
MGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMi0xNyAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgSGFzaCB0YWJsZXMsIHJlYWQvd3JpdGUsIGFu
ZCBoZWFwIG1lbW9yeSBhcmUgdXNlZCB1bm5lY2Vzc2FyaWx5LCB3aGljaCBtYXkgaHVydCBwZXJm
b3JtYW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnNvcnRlZFRhYmxlcyk6IFNpbXBsaWZ5IHVubmVjZXNzYXJpbHkgY29tcGxpY2F0
ZWQKKyAgICAgICAgZXhwcmVzc2lvbiB0byBpbml0aWFsaXplIHRoZSBTcGFuLgorCisgICAgICAg
ICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmg6IFJldHVybiBhIFNwYW4g
aW5zdGVhZCBvZiBhbiBvcHRpb25hbCBWZWN0b3IuCisgICAgICAgICogU2hhcmVkL0NvY29hL0Rl
ZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBCb3VuZERvbWFp
bnNGb3JUZXN0aW5nKTogUmVuYW1lZCBmcm9tIGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcgdG8g
Zml0IFdlYktpdAorICAgICAgICBjb2Rpbmcgc3R5bGUgYSBiaXQgYmV0dGVyLCBhbmQgYmUgYSBs
aXR0bGUgbW9yZSBncmFtbWF0aWNhbC4gUmVtb3ZlZCBhbiB1bi1uZWVkZWQgSGFzaE1hcAorICAg
ICAgICB0aGF0IGhhZCBvbmx5IGEgc2luZ2xlIGVudHJ5LCB1c2VkIGEgTmV2ZXJEZXN0cm95ZWQg
c3RkOjphcnJheSByYXRoZXIgdGhhbiBhIFZlY3RvciBzbyB3ZQorICAgICAgICBkb24ndCB1c2Ug
YW55IGhlYXAgb3IgcmVhZC93cml0ZSBtZW1vcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjphZGRUZXN0RG9tYWlucyBjb25zdCk6IFJld3JpdGUgdG8gdXNl
IHRoZSBmdW5jdGlvbiBhYm92ZS4KKyAgICAgICAgRmV3ZXIgc3BlY2lhbCBjYXNlcyBuZWVkZWQg
c2luY2Ugd2UgYXJlIGp1c3QgdXNpbmcgYW4gZW1wdHkgU3Bhbiwgd2hpY2ggZWZmaWNpZW50bHkK
KyAgICAgICAgZG9lcyBub3RoaW5nLCBzbyBubyBuZWVkIHRvIGhhdmUgYSBkaXN0aW5jdCBudWxs
IHZhbHVlLgorCiAyMDIxLTEyLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdl
R3JvdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCmluZGV4IDliNDhiZWVmYTc0ZGU0OTI1ZjkxN2I3
YzYxMjk0ZjcwOGMxNGI2NjMuLmI5YjZmNDhmOWJhYjEwNzA2YjZmMGQzYWNjZWQwYTdmMWE3Yzlh
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKKysrIGIvU291
cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgVmFsdWVUeXBlID0gdHlwZW5hbWUgRWxlbWVudFR5cGU6OnNlY29uZF90eXBlOwog
CiAgICAgY29uc3RleHByIFNvcnRlZEFycmF5TWFwKGNvbnN0IEFycmF5VHlwZSYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleUFyZ3VtZW50PiBib29sIGNvbnRhaW5zKGNvbnN0IEtleUFyZ3Vt
ZW50JikgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogVG8gbWF0Y2ggSGFzaE1hcCBpbnRlcmZhY2Ug
YmV0dGVyLCB3b3VsZCBiZSBuaWNlIHRvIGdldCB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRyYWl0
cy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4gVmFsdWVUeXBlIGdldChjb25z
dCBLZXlBcmd1bWVudCYsIGNvbnN0IFZhbHVlVHlwZSYgZGVmYXVsdFZhbHVlID0geyB9KSBjb25z
dDsKQEAgLTc3LDcgKzc4LDcgQEAgc3RydWN0IENvbXBhcmFibGVTdHJpbmdWaWV3IHsKIAogLy8g
Tm9VcHBlcmNhc2VMZXR0ZXJzT3B0aW1pemVkIG1lYW5zIG5vIGNoYXJhY3RlcnMgd2l0aCB0aGUg
MHgyMCBiaXQgc2V0LgogLy8gVGhhdCBtZWFucyB0aGUgc3RyaW5ncyBjYW4ndCBpbmNsdWRlIGNv
bnRyb2wgY2hhcmFjdGVycywgdXBwZXJjYXNlIGxldHRlcnMsIG9yIGFueSBvZiBAW1xdXy4KLWVu
dW0gY2xhc3MgQVNDSUlTdWJzZXQgeyBBbGwsIE5vVXBwZXJjYXNlTGV0dGVycywgTm9VcHBlcmNh
c2VMZXR0ZXJzT3B0aW1pemVkIH07CitlbnVtIGNsYXNzIEFTQ0lJU3Vic2V0IDogdWludDhfdCB7
IEFsbCwgTm9VcHBlcmNhc2VMZXR0ZXJzLCBOb1VwcGVyY2FzZUxldHRlcnNPcHRpbWl6ZWQgfTsK
IAogdGVtcGxhdGU8QVNDSUlTdWJzZXQ+IHN0cnVjdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRl
cmFsIHsKICAgICBBU0NJSUxpdGVyYWwgbGl0ZXJhbDsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQXJyYXlUeXBlPiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4g
aW5saW5lIGF1dG8gU29ydGVkQXIKICAgICByZXR1cm4gcmVzdWx0ID8gKnJlc3VsdCA6IGRlZmF1
bHRWYWx1ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlUeXBlPiB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlBcmd1bWVudD4gaW5saW5lIGJvb2wgU29ydGVkQXJyYXlNYXA8QXJyYXlUeXBlPjo6
Y29udGFpbnMoY29uc3QgS2V5QXJndW1lbnQmIGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ5
R2V0KGtleSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gY29uc3RleHByIFNv
cnRlZEFycmF5U2V0PEFycmF5VHlwZT46OlNvcnRlZEFycmF5U2V0KGNvbnN0IEFycmF5VHlwZSYg
YXJyYXkpCiAgICAgOiBtX2FycmF5IHsgYXJyYXkgfQogewpAQCAtMzY1LDYgKzM3MSwxMyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdlcj4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KFBhY2tlZEFTQ0lJTG93ZXJDb2RlcwogICAgIHJldHVybiBhLnZhbHVlKCkgPCBiLnZhbHVlKCk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4gY29uc3RleHByIHN0ZDo6b3B0aW9u
YWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBv
aW50ZXIpCit7CisgICAgaWYgKCFwb2ludGVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiAqcG9pbnRlcjsKK30KKwogfQogCiAvLyBGSVhNRTogUmVuYW1lIHRoZSBD
b21wYXJhYmxlIGFuZCBQYWNrZWQgdHlwZXMgZm9yIGNsYXJpdHkgYW5kIHRvIGFsaWduIHRoZW0g
YmV0dGVyIHdpdGggZWFjaCBvdGhlci4KQEAgLTM3NiwzICszODksNCBAQCB1c2luZyBXVEY6OkNv
bXBhcmFibGVMZXR0ZXJzTGl0ZXJhbDsKIHVzaW5nIFdURjo6UGFja2VkQVNDSUlMb3dlckNvZGVz
OwogdXNpbmcgV1RGOjpTb3J0ZWRBcnJheU1hcDsKIHVzaW5nIFdURjo6U29ydGVkQXJyYXlTZXQ7
Cit1c2luZyBXVEY6Om1ha2VPcHRpb25hbEZyb21Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA1YjZmNDBkYWZiMWNlM2QyYjRhYTJjN2MyMDEyMDAxMjBjN2NjNjRhLi5k
ZmI5YmRhYzU2NmI3OTY1YmFhY2ZlMGNmZWU3MDYxNDM4YjE5NWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtNDMsMzYgKzQzLDMzIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgotI2luY2x1ZGUgPHd0
Zi9Sb2Jpbkhvb2RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBidWNrZXRNSU1FVHlwZXMoKQorc3RhdGljIGJv
b2wgaXNWYWxpZE1lZGlhTUlNRVR5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQog
ewogICAgIC8vIEEgImJ1Y2tldCIgTUlNRSB0eXBlcyBpcyBvbmUgd2hvc2UgY29udGFpbmVyIHR5
cGUgZG9lcyBub3QgdW5pcXVlbHkgc3BlY2lmeSBhIGNvZGVjLgogICAgIC8vIFNlZTogaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYzODEKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4+IGJ1Y2tldE1J
TUVUeXBlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJhdWRpby8z
Z3BwIl9zLAotICAgICAgICAidmlkZW8vM2dwcCJfcywKLSAgICAgICAgImF1ZGlvLzNncHAyIl9z
LAotICAgICAgICAidmlkZW8vM2dwcDIiX3MsCi0gICAgICAgICJhdWRpby9tcDQiX3MsCi0gICAg
ICAgICJ2aWRlby9tcDQiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi9tcDQiX3MsCi0gICAgICAg
ICJ2aWRlby9xdWlja3RpbWUiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi9tcDIxIl9zLAotICAg
ICAgICAiYXVkaW8vdm5kLmFwcGxlLm1wZWd1cmwiX3MsCi0gICAgICAgICJ2aWRlby92bmQuYXBw
bGUubXBlZ3VybCJfcywKLSAgICAgICAgImF1ZGlvL29nZyJfcywKLSAgICAgICAgInZpZGVvL29n
ZyJfcywKLSAgICAgICAgInZpZGVvL3dlYm0iX3MsCi0gICAgICAgICJhdWRpby93ZWJtIl9zLAot
ICAgIH0pOwotICAgIHJldHVybiBidWNrZXRNSU1FVHlwZXM7Ci19CisgICAgc3RhdGljIGNvbnN0
ZXhwciBDb21wYXJhYmxlQVNDSUlMaXRlcmFsIGJ1Y2tldE1JTUVUeXBlQXJyYXlbXSA9IHsKKyAg
ICAgICAgImFwcGxpY2F0aW9uL21wMjEiLAorICAgICAgICAiYXBwbGljYXRpb24vbXA0IiwKKyAg
ICAgICAgImF1ZGlvLzNncHAiLAorICAgICAgICAiYXVkaW8vM2dwcDIiLAorICAgICAgICAiYXVk
aW8vbXA0IiwKKyAgICAgICAgImF1ZGlvL29nZyIsCisgICAgICAgICJhdWRpby92bmQuYXBwbGUu
bXBlZ3VybCIsCisgICAgICAgICJhdWRpby93ZWJtIiwKKyAgICAgICAgInZpZGVvLzNncHAiLAor
ICAgICAgICAidmlkZW8vM2dwcDIiLAorICAgICAgICAidmlkZW8vbXA0IiwKKyAgICAgICAgInZp
ZGVvL29nZyIsCisgICAgICAgICJ2aWRlby9xdWlja3RpbWUiLAorICAgICAgICAidmlkZW8vdm5k
LmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAidmlkZW8vd2VibSIsCisgICAgfTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IGJ1Y2tldE1JTUVUeXBlcyB7IGJ1Y2tldE1JTUVU
eXBlQXJyYXkgfTsKIAotc3RhdGljIGJvb2wgaXNWYWxpZE1lZGlhTUlNRVR5cGUoY29uc3QgQ29u
dGVudFR5cGUmIGNvbnRlbnRUeXBlKQotewogICAgIC8vIDIuMS40LiBNSU1FIHR5cGVzCiAgICAg
Ly8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9tZWRpYS1jYXBhYmlsaXRpZXMvI3ZhbGlkLW1lZGlh
LW1pbWUtdHlwZQogICAgIC8vIEEgdmFsaWQgbWVkaWEgTUlNRSB0eXBlIGlzIGEgc3RyaW5nIHRo
YXQgaXMgYSB2YWxpZCBNSU1FIHR5cGUgcGVyIFttaW1lc25pZmZdLiBJZiB0aGUgTUlNRSB0eXBl
IGRvZXMKQEAgLTg0LDcgKzgxLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZE1lZGlhTUlNRVR5cGUo
Y29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlKQogICAgIGF1dG8gY29kZWNzID0gY29udGVu
dFR5cGUuY29kZWNzKCk7CiAKICAgICAvLyBGSVhNRTogVGhlIHNwZWMgcmVxdWlyZXMgdGhhdCB0
aGUgImNvZGVjcyIgcGFyYW1ldGVyIGlzIHRoZSBvbmx5IHBhcmFtZXRlciBwcmVzZW50LgotICAg
IGlmIChidWNrZXRNSU1FVHlwZXMoKS5jb250YWlucyhjb250ZW50VHlwZS5jb250YWluZXJUeXBl
KCkpKQorICAgIGlmIChidWNrZXRNSU1FVHlwZXMuY29udGFpbnMoY29udGVudFR5cGUuY29udGFp
bmVyVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGNvZGVjcy5zaXplKCkgPT0gMTsKICAgICByZXR1
cm4gIWNvZGVjcy5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBhNzk4NzRkMWM4ZTVmOGU3YjE3Y2Vi
MGJkOGQxYjJlOGRmZTZjNmUxLi4xZGNjZDg2YWJhMjM5Y2Q5M2QxMDJlMGZiNDkyNjI2ZTVmYjQ5
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDYgQEAKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMu
aCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTI4NDIsMjkgKzI4NDEsMjggQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3QKIAogU3RyaW5n
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBvcHVwVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRpYyBj
b25zdCBOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hT
ZXQ8U3RyaW5nPj4gYWxsb3dlZFBvcHVwVmFsdWVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJp
bmc+IHsKLSAgICAgICAgIm1lbnUiX3MsICJsaXN0Ym94Il9zLCAidHJlZSJfcywgImdyaWQiX3Ms
ICJkaWFsb2ciX3MsCi0gICAgfSk7Ci0KLSAgICBhdXRvIGhhc1BvcHVwID0gZ2V0QXR0cmlidXRl
KGFyaWFfaGFzcG9wdXBBdHRyKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIGlmICho
YXNQb3B1cC5pc051bGwoKSB8fCBoYXNQb3B1cC5pc0VtcHR5KCkpIHsKKyAgICBhdXRvJiBoYXNQ
b3B1cCA9IGdldEF0dHJpYnV0ZShhcmlhX2hhc3BvcHVwQXR0cik7CisgICAgaWYgKGhhc1BvcHVw
LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJbiBBUklBIDEuMSwgdGhlIGltcGxpY2l0IHZhbHVl
IGZvciBjb21ib2JveCBiZWNhbWUgImxpc3Rib3guIgogICAgICAgICBpZiAoaXNDb21ib0JveCgp
IHx8IGhhc0RhdGFsaXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gImxpc3Rib3giOwotICAgICAg
ICByZXR1cm4gImZhbHNlIjsKKyAgICAgICAgICAgIHJldHVybiAibGlzdGJveCJfczsKKyAgICAg
ICAgcmV0dXJuICJmYWxzZSJfczsKICAgICB9CiAKLSAgICBpZiAoYWxsb3dlZFBvcHVwVmFsdWVz
LT5jb250YWlucyhoYXNQb3B1cCkpCi0gICAgICAgIHJldHVybiBoYXNQb3B1cDsKKyAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogeyAibWVudSJfcywgImxpc3Rib3giX3MsICJ0cmVlIl9zLCAiZ3JpZCJf
cywgImRpYWxvZyJfcyB9KSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgZml4IGFtYmlndWl0
eSBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlICJjaGFyYWN0ZXJzIiwgYnV0IGFsc28gZG9uJ3Qg
Y3JlYXRlL2Rlc3Ryb3kgYSBTdHJpbmcgd2hlbiBwYXNzaW5nIGFuIEFTQ0lJTGl0ZXJhbCB0byBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShoYXNQb3B1cCwgdmFsdWUuY2hhcmFjdGVycygpKSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICB9CiAKICAgICAvLyBhcmlhLWhhc3BvcHVwIHNwZWNpZmljYXRpb24gc3RhdGVzIHRo
YXQgdHJ1ZSBtdXN0IGJlIHRyZWF0ZWQgYXMgbWVudS4KLSAgICBpZiAoaGFzUG9wdXAgPT0gInRy
dWUiKQotICAgICAgICByZXR1cm4gIm1lbnUiOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShoYXNQb3B1cCwgInRydWUiKSkKKyAgICAgICAgcmV0dXJuICJtZW51Il9zOwog
CiAgICAgLy8gVGhlIHNwZWMgc3RhdGVzIHRoYXQgIlVzZXIgYWdlbnRzIG11c3QgdHJlYXQgYW55
IHZhbHVlIG9mIGFyaWEtaGFzcG9wdXAgdGhhdCBpcyBub3QKICAgICAvLyBpbmNsdWRlZCBpbiB0
aGUgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcywgaW5jbHVkaW5nIGFuIGVtcHR5IHN0cmluZywgYXMg
aWYgdGhlIHZhbHVlCiAgICAgLy8gZmFsc2UgaGFkIGJlZW4gcHJvdmlkZWQuIgotICAgIHJldHVy
biAiZmFsc2UiOworICAgIHJldHVybiAiZmFsc2UiX3M7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGFzRGF0YWxpc3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMzA2
Y2EzNzVlMTJiMDUzM2QwY2QyNzk4NDQ4NThmZWM2OWE3NzE0Ny4uNmU1Y2IxNWIyYjI4ODU3OTQx
NWZlNDY1MDk5ZDg5YWNmYmRjODZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMjE0LDcg
KzMyMTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzUHJlc2Vu
dGF0aW9uYWxSb2xlKCkgY29uc3QKICAgICAvLyB0aG9zZSBjaGlsZCBlbGVtZW50cyBhcmUgYWxz
byBwcmVzZW50YXRpb25hbC4gRm9yIGV4YW1wbGUsIDxsaT4gYmVjb21lcyBwcmVzZW50YXRpb25h
bCBmcm9tIDx1bD4uCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvV0FJL1BGL2FyaWEvY29tcGxl
dGUjcHJlc2VudGF0aW9uCiAKLSAgICBTcGFuPExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBIVE1M
UXVhbGlmaWVkTmFtZT4qIGNvbnN0PiBwYXJlbnRUYWdzOworICAgIFNwYW48ZGVjbHR5cGUoYVRh
ZykqIGNvbnN0PiBwYXJlbnRUYWdzOwogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0TWFya2VyOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGYyYzY4NDRlZTcwYWFlNDJjZGQxMDAyYjViYjJk
ZWQ4NGQ3NjI5MDAuLmMwODM3MzhlNGZlMWQ2NTkxMzRiYmUxMmI1ZDQ5ZTJjOTA2MWI0MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC01MjEwLDE4ICs1MjEwLDE4IEBAIHN1YiBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRs
ZXJDb250ZW50QXR0cmlidXRlCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkhUTUxOYW1lcy5oIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidm9pZCAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25O
YW1lfShjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSk+JiBmdW5jdGlvbilcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6cGFpcjxMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVk
TmFtZT4qLCBjb25zdCBBdG9tU3RyaW5nIEV2ZW50TmFtZXM6Oio+IHRhYmxlW10gPSB7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBhaXI8
ZGVjbHR5cGUoSFRNTE5hbWVzOjphbHRBdHRyKSYsIGNvbnN0IEF0b21TdHJpbmcgRXZlbnROYW1l
czo6Kj4gdGFibGVbXSA9IHtcbiIpOwogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50
ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZS0+bmFt
ZSBlcSAiRXZlbnRIYW5kbGVyIiAmJiAoIWRlZmluZWQgJGV2ZW50SGFuZGxlckV4dGVuZGVkQXR0
cmlidXRlTmFtZSB8fCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXZlbnRIYW5k
bGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSkpIHsKICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVO
YW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgICAgIG15ICRldmVudE5hbWUgPSBFdmVu
dEhhbmRsZXJBdHRyaWJ1dGVTaG9ydEV2ZW50TmFtZSgkYXR0cmlidXRlKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgeyAmSFRNTE5hbWVzOjoke2F0dHJpYnV0ZU5h
bWV9QXR0ciwgJkV2ZW50TmFtZXM6OiR7ZXZlbnROYW1lfSB9LFxuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHsgSFRNTE5hbWVzOjoke2F0dHJpYnV0ZU5hbWV9
QXR0ciwgJkV2ZW50TmFtZXM6OiR7ZXZlbnROYW1lfSB9LFxuIik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH07XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKGF1dG8mIG5hbWVzIDogdGFibGUp
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGZ1bmN0aW9uKG5hbWVzLmZp
cnN0LT5nZXQoKS5sb2NhbE5hbWUoKSwgZXZlbnROYW1lcy4qbmFtZXMuc2Vjb25kKTtcbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgZnVuY3Rpb24obmFtZXMuZmlyc3QuZ2V0
KCkubG9jYWxOYW1lKCksIGV2ZW50TmFtZXMuKm5hbWVzLnNlY29uZCk7XG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
NGIzOTQ1ZWJjYTA2OWM5YjA0OWQyMmY3ZjIxODBhNTY3ZDU4YmZiZS4uYWE2NTM2MDQ3OTI4ODcx
MmUyNzJjZjFiOTc3ZTYyYjJmYjUzZTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQ4
NiwzMSArMjQ4NiwzMSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogCiBzdGF0
aWMgYm9vbCBjYW5BdHRhY2hBdXRob3JTaGFkb3dSb290KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPj4gdGFnTmFtZXMgPSBbXSB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSogY29uc3QgdGFnTGlzdFtdID0gewotICAgICAgICAg
ICAgJmFydGljbGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmYXNpZGVUYWcuZ2V0KCksCi0gICAg
ICAgICAgICAmYmxvY2txdW90ZVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZib2R5VGFnLmdldCgp
LAotICAgICAgICAgICAgJmRpdlRhZy5nZXQoKSwKLSAgICAgICAgICAgICZmb290ZXJUYWcuZ2V0
KCksCi0gICAgICAgICAgICAmaDFUYWcuZ2V0KCksCi0gICAgICAgICAgICAmaDJUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmaDNUYWcuZ2V0KCksCi0gICAgICAgICAgICAmaDRUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmaDVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmaDZUYWcuZ2V0KCksCi0gICAg
ICAgICAgICAmaGVhZGVyVGFnLmdldCgpLAotICAgICAgICAgICAgJm1haW5UYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmbmF2VGFnLmdldCgpLAotICAgICAgICAgICAgJnBUYWcuZ2V0KCksCi0gICAg
ICAgICAgICAmc2VjdGlvblRhZy5nZXQoKSwKLSAgICAgICAgICAgICZzcGFuVGFnLmdldCgpCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhZ05hbWVzID0gW10geworICAgICAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgdGFnTGlzdCB7CisgICAgICAgICAgICAmYXJ0aWNsZVRhZywK
KyAgICAgICAgICAgICZhc2lkZVRhZywKKyAgICAgICAgICAgICZibG9ja3F1b3RlVGFnLAorICAg
ICAgICAgICAgJmJvZHlUYWcsCisgICAgICAgICAgICAmZGl2VGFnLAorICAgICAgICAgICAgJmZv
b3RlclRhZywKKyAgICAgICAgICAgICZoMVRhZywKKyAgICAgICAgICAgICZoMlRhZywKKyAgICAg
ICAgICAgICZoM1RhZywKKyAgICAgICAgICAgICZoNFRhZywKKyAgICAgICAgICAgICZoNVRhZywK
KyAgICAgICAgICAgICZoNlRhZywKKyAgICAgICAgICAgICZoZWFkZXJUYWcsCisgICAgICAgICAg
ICAmbWFpblRhZywKKyAgICAgICAgICAgICZuYXZUYWcsCisgICAgICAgICAgICAmcFRhZywKKyAg
ICAgICAgICAgICZzZWN0aW9uVGFnLAorICAgICAgICAgICAgJnNwYW5UYWcKICAgICAgICAgfTsK
ICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJp
bmc+IHNldDsKICAgICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZW9mKHRhZ0xp
c3QpKTsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogdGFnTGlzdCkKLSAgICAgICAgICAgIHNl
dC5hZGQobmFtZS0+bG9jYWxOYW1lKCkpOworICAgICAgICAgICAgc2V0LmFkZChuYW1lLT5nZXQo
KS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7CiAgICAgfSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX25hbWVzLnBsCmluZGV4IDliMjQ3ZmI3NDc5M2RjNWUxMDU4OGQ2Y2RlMGFlYTJhYWE3
OGIyOTguLjZhMTc1MGNiNjdmMzEwM2RhZWNiYjQzNmMwY2UyZmQyNTE3MDk4NzYgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsCkBAIC05OTQsMzEgKzk5NCwyNyBAQCBFTkQKIAogICAgIHByaW50
Q29uc3RydWN0b3JzKCRGLCBcJXRhZ0NvbnN0cnVjdG9yTWFwKTsKIAorICAgIG15ICRmaXJzdFRh
ZzsKKyAgICBmb3IgbXkgJHRhZyAoc29ydCBrZXlzICV0YWdDb25zdHJ1Y3Rvck1hcCkgeworICAg
ICAgICAkZmlyc3RUYWcgPSAkdGFnOworICAgICAgICBsYXN0OworICAgIH0KKwogICAgIHByaW50
IEYgPDxFTkQKIAogc3RydWN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0
aW9uTWFwRW50cnkgewotICAgICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0
aW9uTWFwRW50cnkoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVu
Y3Rpb24sIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCi0gICAgICAgIDogZnVuY3Rpb24oZnVu
Y3Rpb24pCi0gICAgICAgICwgcXVhbGlmaWVkTmFtZSgmbmFtZSkKLSAgICB7IH0KLQotICAgICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkoKQotICAgICAg
ICA6IGZ1bmN0aW9uKG51bGxwdHIpCi0gICAgICAgICwgcXVhbGlmaWVkTmFtZShudWxscHRyKQot
ICAgIHsgfQotCi0gICAgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24g
ZnVuY3Rpb247Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSogcXVhbGlmaWVkTmFtZTsgLy8gVXNl
IHBvaW50ZXIgaW5zdGVhZCBvZiByZWZlcmVuY2Ugc28gdGhhdCBlbXB0eVZhbHVlKCkgaW4gSGFz
aE1hcCBpcyBjaGVhcCB0byBjcmVhdGUuCisgICAgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0
cnVjdG9yRnVuY3Rpb24gZnVuY3Rpb24geyBudWxscHRyIH07CisgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSogcXVhbGlmaWVkTmFtZSB7IG51bGxwdHIgfTsgLy8gVXNlIHBvaW50ZXIgaW5zdGVhZCBv
ZiByZWZlcmVuY2Ugc28gdGhhdCBlbXB0eVZhbHVlKCkgaW4gSGFzaE1hcCBpcyBjaGVhcCB0byBj
cmVhdGUuCiB9OwogCiBzdGF0aWMgTkVWRVJfSU5MSU5FIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3Ry
dWN0b3JGdW5jdGlvbk1hcEVudHJ5PiBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9y
eU1hcCgpCiB7CiAgICAgc3RydWN0IFRhYmxlRW50cnkgewotICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lOworICAgICAgICBkZWNsdHlwZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFt
ZXM6OiR7Zmlyc3RUYWd9VGFnKSYgbmFtZTsKICAgICAgICAgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVuY3Rpb247CiAgICAgfTsKIAotICAgIHN0YXRpYyBjb25z
dCBUYWJsZUVudHJ5IHRhYmxlW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBUYWJsZUVudHJ5
IHRhYmxlW10gPSB7CiBFTkQKICAgICA7CiAKQEAgLTEwMjksNyArMTAyNSw3IEBAIEVORAogCiAg
ICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnk+IG1hcDsKICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogdGFibGUpCi0gICAgICAgIG1hcC5hZGQoZW50cnkubmFtZS5s
b2NhbE5hbWUoKSwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb25NYXBF
bnRyeShlbnRyeS5mdW5jdGlvbiwgZW50cnkubmFtZSkpOworICAgICAgICBtYXAuYWRkKGVudHJ5
Lm5hbWUuZ2V0KCkubG9jYWxOYW1lKCksICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3Rv
ckZ1bmN0aW9uTWFwRW50cnkgeyBlbnRyeS5mdW5jdGlvbiwgJmVudHJ5Lm5hbWUuZ2V0KCkgfSk7
CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMTI2MSwxNiArMTI1NywyMiBAQCBFTkQKIAogICAg
IHByaW50V3JhcHBlckZ1bmN0aW9ucygkRik7CiAKKyAgICBteSAkZmlyc3RUYWc7CisgICAgZm9y
IG15ICR0YWcgKHNvcnQga2V5cyAlYWxsVGFncykgeworICAgICAgICAkZmlyc3RUYWcgPSAkdGFn
OworICAgICAgICBsYXN0OworICAgIH0KKwogcHJpbnQgRiA8PEVORAogCiBzdGF0aWMgTkVWRVJf
SU5MSU5FIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5n
LCBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gY3Jl
YXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXJNYXAoKQogewogICAgIHN0cnVjdCBUYWJs
ZUVudHJ5IHsKLSAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsKKyAgICAgICAgZGVj
bHR5cGUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke2ZpcnN0VGFnfVRhZykmIG5hbWU7
CiAgICAgICAgIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0
aW9uIGZ1bmN0aW9uOwogICAgIH07CiAKLSAgICBzdGF0aWMgY29uc3QgVGFibGVFbnRyeSB0YWJs
ZVtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgVGFibGVFbnRyeSB0YWJsZVtdID0gewogRU5E
CiA7CiAKQEAgLTEzMDMsNyArMTMwNSw3IEBAIEVORAogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1
cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uPiBtYXA7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IHRhYmxlKQotICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUubG9jYWxOYW1lKCksIGVudHJ5LmZ1
bmN0aW9uKTsKKyAgICAgICAgbWFwLmFkZChlbnRyeS5uYW1lLmdldCgpLmxvY2FsTmFtZSgpLCBl
bnRyeS5mdW5jdGlvbik7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBjMjRiZWZmNWNi
NGVhNzRmMGQ1ZDJjM2I1NjZiZGI2ZmRmYjVjNmVlLi5iYmMzMjBmMzZiZmI2ODEwMjkyYmIzYjE0
NDI2NmQ4MGJjMzJiMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNzc4LDYgKzc3OCw3IEBAIHN0YXRpYyBib29sIGlz
UHJvaGliaXRlZFBhcmFncmFwaENoaWxkKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgICAg
ICAgICAmeG1wVGFnLAogICAgICAgICB9OwogICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gc2V0OworICAgICAgICBzZXQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzdGQ6OnNpemUodGFncykpOwogICAgICAgICBmb3IgKGF1dG8mIHRhZyA6
IHRhZ3MpCiAgICAgICAgICAgICBzZXQuYWRkKHRhZy0+Z2V0KCkubG9jYWxOYW1lKCkpOwogICAg
ICAgICByZXR1cm4gc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmls
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCBjMDNlMDNmNjIw
NGU2MmRlNTU3NTI2ZTUxMGE2MzZkNzE5YTk5M2UzLi5kODJmYzRlOGUyNmY4N2I0ZWRiNTJjZmZl
Nzg3NjViMTNhNzU0MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMzAsMTA2ICsz
MCw3OSBAQAogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRl
ZEFycmF5TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBBdXRvZmls
bENhdGVnb3J5IHsKLSAgICBPZmYsCi0gICAgQXV0b21hdGljLAotICAgIE5vcm1hbCwKLSAgICBD
b250YWN0LAotfTsKK2VudW0gY2xhc3MgQXV0b2ZpbGxDYXRlZ29yeSA6IHVpbnQ4X3QgeyBPZmYs
IEF1dG9tYXRpYywgTm9ybWFsLCBDb250YWN0IH07CiAKLXN0cnVjdCBBdXRvZmlsbEluZm8gewot
ICAgIEF1dG9maWxsRmllbGROYW1lIGZpZWxkTmFtZTsKK3N0cnVjdCBBdXRvZmlsbEZpZWxkTmFt
ZU1hcHBpbmcgeworICAgIEF1dG9maWxsRmllbGROYW1lIG5hbWU7CiAgICAgQXV0b2ZpbGxDYXRl
Z29yeSBjYXRlZ29yeTsKIH07CiAKLXN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQXV0b2ZpbGxJbmZvPiYgZmllbGROYW1lTWFw
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gW10gewotICAgICAgICBzdHJ1
Y3QgTWFwRW50cnkgewotICAgICAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7Ci0gICAgICAgICAg
ICBBdXRvZmlsbEluZm8gdmFsdWU7Ci0gICAgICAgIH07Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgTWFwRW50cnkgZW50cmllc1tdID0gewotICAgICAgICAgICAgeyAib2ZmIl9zLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpOb25lLCBBdXRvZmlsbENhdGVnb3J5OjpPZmYgfSB9LAotICAgICAgICAg
ICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6
OkF1dG9tYXRpYyB9IH0sCi0gICAgICAgICAgICB7ICJuYW1lIl9zLCB7IEF1dG9maWxsRmllbGRO
YW1lOjpOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAi
aG9ub3JpZmljLXByZWZpeCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmljUHJlZml4
LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiZ2l2ZW4tbmFt
ZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6R2l2ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpO
b3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiYWRkaXRpb25hbC1uYW1lIl9zLCB7IEF1dG9maWxs
RmllbGROYW1lOjpBZGRpdGlvbmFsTmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
LSAgICAgICAgICAgIHsgImZhbWlseS1uYW1lIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpGYW1p
bHlOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiaG9u
b3JpZmljLXN1ZmZpeCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmljU3VmZml4LCBB
dXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAibmlja25hbWUiX3Ms
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5pY2tuYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwg
fSB9LAotICAgICAgICAgICAgeyAidXNlcm5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlVz
ZXJuYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAibmV3
LXBhc3N3b3JkIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOZXdQYXNzd29yZCwgQXV0b2ZpbGxD
YXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImN1cnJlbnQtcGFzc3dvcmQiX3Ms
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkN1cnJlbnRQYXNzd29yZCwgQXV0b2ZpbGxDYXRlZ29yeTo6
Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgIm9yZ2FuaXphdGlvbi10aXRsZSJfcywgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6T3JnYW5pemF0aW9uVGl0bGUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1h
bCB9IH0sCi0gICAgICAgICAgICB7ICJvcmdhbml6YXRpb24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6Ok9yZ2FuaXphdGlvbiwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAg
ICAgIHsgInN0cmVldC1hZGRyZXNzIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpTdHJlZXRBZGRy
ZXNzLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiYWRkcmVz
cy1saW5lMSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xpbmUxLCBBdXRvZmlsbENh
dGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiYWRkcmVzcy1saW5lMiJfcywgeyBB
dXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xpbmUyLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwg
fSB9LAotICAgICAgICAgICAgeyAiYWRkcmVzcy1saW5lMyJfcywgeyBBdXRvZmlsbEZpZWxkTmFt
ZTo6QWRkcmVzc0xpbmUzLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAg
ICAgeyAiYWRkcmVzcy1sZXZlbDQiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJlc3NMZXZl
bDQsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJhZGRyZXNz
LWxldmVsMyJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xldmVsMywgQXV0b2ZpbGxD
YXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFkZHJlc3MtbGV2ZWwyIl9zLCB7
IEF1dG9maWxsRmllbGROYW1lOjpBZGRyZXNzTGV2ZWwyLCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAotICAgICAgICAgICAgeyAiYWRkcmVzcy1sZXZlbDEiX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OkFkZHJlc3NMZXZlbDEsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAg
ICAgICAgICB7ICJjb3VudHJ5Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpDb3VudHJ5LCBBdXRv
ZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiY291bnRyeS1uYW1lIl9z
LCB7IEF1dG9maWxsRmllbGROYW1lOjpDb3VudHJ5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKLSAgICAgICAgICAgIHsgInBvc3RhbC1jb2RlIl9zLCB7IEF1dG9maWxsRmllbGRO
YW1lOjpQb3N0YWxDb2RlLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAg
ICAgeyAiY2MtbmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NOYW1lLCBBdXRvZmlsbENh
dGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiY2MtZ2l2ZW4tbmFtZSJfcywgeyBB
dXRvZmlsbEZpZWxkTmFtZTo6Q2NHaXZlbk5hbWUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9
IH0sCi0gICAgICAgICAgICB7ICJjYy1hZGRpdGlvbmFsLW5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OkNjQWRkaXRpb25hbE5hbWUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0g
ICAgICAgICAgICB7ICJjYy1mYW1pbHktbmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NG
YW1pbHlOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAi
Y2MtbnVtYmVyIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpDY051bWJlciwgQXV0b2ZpbGxDYXRl
Z29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImNjLWV4cCJfcywgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6Q2NFeHAsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAg
ICB7ICJjYy1leHAtbW9udGgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgsIEF1
dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJjYy1leHAteWVhciJf
cywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHBZZWFyLCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAotICAgICAgICAgICAgeyAiY2MtY3NjIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpD
Y0NzYywgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImNjLXR5
cGUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjVHlwZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKLSAgICAgICAgICAgIHsgInRyYW5zYWN0aW9uLWN1cnJlbmN5Il9zLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpUcmFuc2FjdGlvbkN1cnJlbmN5LCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAotICAgICAgICAgICAgeyAidHJhbnNhY3Rpb24tYW1vdW50Il9zLCB7IEF1dG9maWxs
RmllbGROYW1lOjpUcmFuc2FjdGlvbkFtb3VudCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKLSAgICAgICAgICAgIHsgImxhbmd1YWdlIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpMYW5n
dWFnZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImJkYXki
X3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkJkYXksIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9
IH0sCi0gICAgICAgICAgICB7ICJiZGF5LWRheSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QmRh
eURheSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImJkYXkt
bW9udGgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkJkYXlNb250aCwgQXV0b2ZpbGxDYXRlZ29y
eTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImJkYXkteWVhciJfcywgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6QmRheVllYXIsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAg
ICAgICB7ICJzZXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlNleCwgQXV0b2ZpbGxDYXRlZ29y
eTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgInVybCJfcywgeyBBdXRvZmlsbEZpZWxkTmFt
ZTo6VVJMLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAicGhv
dG8iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlBob3RvLCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAotCi0gICAgICAgICAgICB7ICJ0ZWwiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRl
bCwgQXV0b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJ0ZWwtY291
bnRyeS1jb2RlIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxDb3VudHJ5Q29kZSwgQXV0b2Zp
bGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJ0ZWwtbmF0aW9uYWwiX3Ms
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbE5hdGlvbmFsLCBBdXRvZmlsbENhdGVnb3J5OjpDb250
YWN0IH0gfSwKLSAgICAgICAgICAgIHsgInRlbC1hcmVhLWNvZGUiX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OlRlbEFyZWFDb2RlLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAgICAg
ICAgICAgIHsgInRlbC1sb2NhbCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTG9jYWwsIEF1
dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAotICAgICAgICAgICAgeyAidGVsLWxvY2FsLXBy
ZWZpeCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTG9jYWxQcmVmaXgsIEF1dG9maWxsQ2F0
ZWdvcnk6OkNvbnRhY3QgfSB9LAotICAgICAgICAgICAgeyAidGVsLWxvY2FsLXN1ZmZpeCJfcywg
eyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTG9jYWxTdWZmaXgsIEF1dG9maWxsQ2F0ZWdvcnk6OkNv
bnRhY3QgfSB9LAotICAgICAgICAgICAgeyAidGVsLWV4dGVuc2lvbiJfcywgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6VGVsRXh0ZW5zaW9uLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAg
ICAgICAgICAgIHsgImVtYWlsIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpFbWFpbCwgQXV0b2Zp
bGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJpbXBwIl9zLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpJbXBwLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAgICAg
ICAgfTsKLSAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0
b21TdHJpbmcsIEF1dG9maWxsSW5mbz4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZW50cmllcykKLSAgICAgICAgICAgIG1hcC5hZGQoZW50cnkubmFtZSwgZW50cnkudmFsdWUpOwot
ICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKTsKLSAgICByZXR1cm4gbWFwOwotfQorc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OnBhaXI8Q29tcGFyYWJsZUxldHRlcnNMaXRlcmFsLCBBdXRvZmlsbEZp
ZWxkTmFtZU1hcHBpbmc+IGZpZWxkTmFtZU1hcHBpbmdzW10gPSB7CisgICAgeyAiYWRkaXRpb25h
bC1uYW1lIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkaXRpb25hbE5hbWUsIEF1dG9maWxsQ2F0
ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiYWRkcmVzcy1sZXZlbDEiLCB7IEF1dG9maWxsRmll
bGROYW1lOjpBZGRyZXNzTGV2ZWwxLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAg
IHsgImFkZHJlc3MtbGV2ZWwyIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xldmVsMiwg
QXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJhZGRyZXNzLWxldmVsMyIsIHsg
QXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJlc3NMZXZlbDMsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1h
bCB9IH0sCisgICAgeyAiYWRkcmVzcy1sZXZlbDQiLCB7IEF1dG9maWxsRmllbGROYW1lOjpBZGRy
ZXNzTGV2ZWw0LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImFkZHJlc3Mt
bGluZTEiLCB7IEF1dG9maWxsRmllbGROYW1lOjpBZGRyZXNzTGluZTEsIEF1dG9maWxsQ2F0ZWdv
cnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiYWRkcmVzcy1saW5lMiIsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6OkFkZHJlc3NMaW5lMiwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJh
ZGRyZXNzLWxpbmUzIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xpbmUzLCBBdXRvZmls
bENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImJkYXkiLCB7IEF1dG9maWxsRmllbGROYW1l
OjpCZGF5LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImJkYXktZGF5Iiwg
eyBBdXRvZmlsbEZpZWxkTmFtZTo6QmRheURheSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKKyAgICB7ICJiZGF5LW1vbnRoIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QmRheU1vbnRoLCBB
dXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImJkYXkteWVhciIsIHsgQXV0b2Zp
bGxGaWVsZE5hbWU6OkJkYXlZZWFyLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAg
IHsgImNjLWFkZGl0aW9uYWwtbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjQWRkaXRpb25h
bE5hbWUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiY2MtY3NjIiwgeyBB
dXRvZmlsbEZpZWxkTmFtZTo6Q2NDc2MsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisg
ICAgeyAiY2MtZXhwIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NFeHAsIEF1dG9maWxsQ2F0ZWdv
cnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiY2MtZXhwLW1vbnRoIiwgeyBBdXRvZmlsbEZpZWxkTmFt
ZTo6Q2NFeHBNb250aCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJjYy1l
eHAteWVhciIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhciwgQXV0b2ZpbGxDYXRlZ29y
eTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJjYy1mYW1pbHktbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6OkNjRmFtaWx5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJj
Yy1naXZlbi1uYW1lIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NHaXZlbk5hbWUsIEF1dG9maWxs
Q2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiY2MtbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6OkNjTmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJjYy1udW1i
ZXIiLCB7IEF1dG9maWxsRmllbGROYW1lOjpDY051bWJlciwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKKyAgICB7ICJjYy10eXBlIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NUeXBlLCBB
dXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImNvdW50cnkiLCB7IEF1dG9maWxs
RmllbGROYW1lOjpDb3VudHJ5LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsg
ImNvdW50cnktbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNvdW50cnlOYW1lLCBBdXRvZmls
bENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImN1cnJlbnQtcGFzc3dvcmQiLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpDdXJyZW50UGFzc3dvcmQsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9
IH0sCisgICAgeyAiZW1haWwiLCB7IEF1dG9maWxsRmllbGROYW1lOjpFbWFpbCwgQXV0b2ZpbGxD
YXRlZ29yeTo6Q29udGFjdCB9IH0sCisgICAgeyAiZmFtaWx5LW5hbWUiLCB7IEF1dG9maWxsRmll
bGROYW1lOjpGYW1pbHlOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsg
ImdpdmVuLW5hbWUiLCB7IEF1dG9maWxsRmllbGROYW1lOjpHaXZlbk5hbWUsIEF1dG9maWxsQ2F0
ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiaG9ub3JpZmljLXByZWZpeCIsIHsgQXV0b2ZpbGxG
aWVsZE5hbWU6Okhvbm9yaWZpY1ByZWZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
KyAgICB7ICJob25vcmlmaWMtc3VmZml4IiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmlj
U3VmZml4LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImltcHAiLCB7IEF1
dG9maWxsRmllbGROYW1lOjpJbXBwLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKKyAg
ICB7ICJsYW5ndWFnZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Okxhbmd1YWdlLCBBdXRvZmlsbENh
dGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgIm5hbWUiLCB7IEF1dG9maWxsRmllbGROYW1lOjpO
YW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgIm5ldy1wYXNzd29yZCIs
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5ld1Bhc3N3b3JkLCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAorICAgIHsgIm5pY2tuYW1lIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Tmlja25hbWUs
IEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAib2ZmIiwgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6Tm9uZSwgQXV0b2ZpbGxDYXRlZ29yeTo6T2ZmIH0gfSwKKyAgICB7ICJvbiIsIHsg
QXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6OkF1dG9tYXRpYyB9IH0s
CisgICAgeyAib3JnYW5pemF0aW9uIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6T3JnYW5pemF0aW9u
LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgIm9yZ2FuaXphdGlvbi10aXRs
ZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok9yZ2FuaXphdGlvblRpdGxlLCBBdXRvZmlsbENhdGVn
b3J5OjpOb3JtYWwgfSB9LAorICAgIHsgInBob3RvIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6UGhv
dG8sIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAicG9zdGFsLWNvZGUiLCB7
IEF1dG9maWxsRmllbGROYW1lOjpQb3N0YWxDb2RlLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwg
fSB9LAorICAgIHsgInNleCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlNleCwgQXV0b2ZpbGxDYXRl
Z29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJzdHJlZXQtYWRkcmVzcyIsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OlN0cmVldEFkZHJlc3MsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAg
eyAidGVsIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsLCBBdXRvZmlsbENhdGVnb3J5OjpDb250
YWN0IH0gfSwKKyAgICB7ICJ0ZWwtYXJlYS1jb2RlIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVs
QXJlYUNvZGUsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRlbC1jb3Vu
dHJ5LWNvZGUiLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxDb3VudHJ5Q29kZSwgQXV0b2ZpbGxD
YXRlZ29yeTo6Q29udGFjdCB9IH0sCisgICAgeyAidGVsLWV4dGVuc2lvbiIsIHsgQXV0b2ZpbGxG
aWVsZE5hbWU6OlRlbEV4dGVuc2lvbiwgQXV0b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCisg
ICAgeyAidGVsLWxvY2FsIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTG9jYWwsIEF1dG9maWxs
Q2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRlbC1sb2NhbC1wcmVmaXgiLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpUZWxMb2NhbFByZWZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9
IH0sCisgICAgeyAidGVsLWxvY2FsLXN1ZmZpeCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbExv
Y2FsU3VmZml4LCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKKyAgICB7ICJ0ZWwtbmF0
aW9uYWwiLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxOYXRpb25hbCwgQXV0b2ZpbGxDYXRlZ29y
eTo6Q29udGFjdCB9IH0sCisgICAgeyAidHJhbnNhY3Rpb24tYW1vdW50IiwgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6VHJhbnNhY3Rpb25BbW91bnQsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0s
CisgICAgeyAidHJhbnNhY3Rpb24tY3VycmVuY3kiLCB7IEF1dG9maWxsRmllbGROYW1lOjpUcmFu
c2FjdGlvbkN1cnJlbmN5LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgInVy
bCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlVSTCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKKyAgICB7ICJ1c2VybmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlVzZXJuYW1lLCBBdXRv
ZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorfTsKK3N0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJy
YXlNYXAgZmllbGROYW1lTWFwIHsgZmllbGROYW1lTWFwcGluZ3MgfTsKIAogQXV0b2ZpbGxGaWVs
ZE5hbWUgdG9BdXRvZmlsbEZpZWxkTmFtZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBhdXRvIG1hcCA9IGZpZWxkTmFtZU1hcCgpOwotICAgIGF1dG8gaXQgPSBtYXAuZmluZCh2YWx1
ZSk7Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIEF1dG9maWxsRmll
bGROYW1lOjpOb25lOwotICAgIHJldHVybiBpdC0+dmFsdWUuZmllbGROYW1lOworICAgIHJldHVy
biBmaWVsZE5hbWVNYXAuZ2V0KHZhbHVlKS5uYW1lOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNDb250YWN0VG9rZW4oY29uc3QgQXRvbVN0cmluZyYgdG9rZW4pCkBAIC0yMDQsMTMgKzE3Nywx
MiBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIHRva2VuJ3Mgcm93LCB0aGVuIGp1
bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkZWZhdWx0LiBPdGhlcndpc2UsIGxldCBmaWVsZCBiZSB0
aGUgc3RyaW5nIGdpdmVuCiAgICAgLy8gaW4gdGhlIGNlbGwgb2YgdGhlIGZpcnN0IGNvbHVtbiBv
ZiB0aGUgbWF0Y2hpbmcgcm93LCBhbmQgbGV0IGNhdGVnb3J5IGJlIHRoZSB2YWx1ZSBvZiB0aGUK
ICAgICAvLyBjZWxsIGluIHRoZSB0aGlyZCBjb2x1bW4gb2YgdGhhdCBzYW1lIHJvdy4KLSAgICBh
dXRvJiBtYXAgPSBmaWVsZE5hbWVNYXAoKTsKIAotICAgIGF1dG8gaXQgPSBtYXAuZmluZCh0b2tl
bnNbaW5kZXhdKTsKLSAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQorICAgIGF1dG8gbWFwRW50cnkg
PSBmaWVsZE5hbWVNYXAudHJ5R2V0KHRva2Vuc1tpbmRleF0pOworICAgIGlmICghbWFwRW50cnkp
CiAgICAgICAgIHJldHVybiBkZWZhdWx0TGFiZWwoKTsKICAgICAKLSAgICBhdXRvIGNhdGVnb3J5
ID0gaXQtPnZhbHVlLmNhdGVnb3J5OworICAgIGF1dG8gY2F0ZWdvcnkgPSBtYXBFbnRyeS0+Y2F0
ZWdvcnk7CiAKICAgICBpZiAodG9rZW5zLnNpemUoKSA+IG1heFRva2Vuc0ZvckF1dG9maWxsRmll
bGRDYXRlZ29yeShjYXRlZ29yeSkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0TGFiZWwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCA3MTY2ZDFkMzc3ZmFiNjdhMDlkYTAw
OWM2MWViMTFiYTUxODExYmVmLi5lZWRjNzc4ODU4NTEzMDYxYzkyYzA3MzZlM2IwNTVjNWVkYTgx
MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0yMjcsNiArMjI3LDcg
QEAgYm9vbCBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICAgICAgJnZsaW5rQXR0ciwKICAgICAg
ICAgfTsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0
b21TdHJpbmc+IHNldDsKKyAgICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RkOjpz
aXplKG5hbWVzKSk7CiAgICAgICAgIGZvciAoYXV0byogbmFtZSA6IG5hbWVzKQogICAgICAgICAg
ICAgc2V0LmFkZChuYW1lLT5nZXQoKS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGFiYjA0MjA1
NmMxYjhkMTBiODFiMGQwODQ1ZjM1ODk0ZDQwZGRjODEuLjYzYmZhN2VkMTNkMGFiMWYyNDEyZTc4
YTBjZTEyNjljNjU0YWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC0zNTksNiArMzU5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHByZXZlbnRzUGFy
ZW50T2JqZWN0RnJvbUV4cG9zdXJlKGNvbnN0IEVsZW1lbnQmIGNoaWxkKQogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBtb3N0S25vd25UYWdzID0gW10gewogICAgICAgICBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gc2V0OwogICAgICAgICBh
dXRvKiB0YWdzID0gSFRNTE5hbWVzOjpnZXRIVE1MVGFncygpOworICAgICAgICBzZXQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShIVE1MTmFtZXM6OkhUTUxUYWdzQ291bnQpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7CiAgICAg
ICAgICAgICBhdXRvJiB0YWcgPSAqdGFnc1tpXTsKICAgICAgICAgICAgIC8vIE9ubHkgdGhlIHBh
cmFtIGVsZW1lbnQgd2FzIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBIVE1MIHNwZWNpZmlj
YXRpb24gcnVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCBjNjQwODk4MzU0NDg2ZjNkOWQ2ZTY3ZGM2ODE4OWJlMGIzMTQxZGRlLi5lOGMxMGEyNGFkN2Mz
ZDA1Yzg2MTFkZDhiN2JjYzIwNjUxYTg2YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJSZWdpb24uaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
Ci0jaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVk
QXJyYXlNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTAsMjEgKzE1MCw2IEBA
IGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQogICAg
IHJldHVybiByZWdpb25DaGFuZ2VkOwogfQogCi1zdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+JiB0b3VjaEV2
ZW50UmVnaW9uQ29sb3JzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmVnaW9uQ29s
b3JzIHsgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgU1JH
QkE8dWludDhfdD4+IHsgewotICAgICAgICB7ICJ0b3VjaHN0YXJ0Il9zLCB7IDE5MSwgMTkxLCA2
MywgNTAgfSB9LAotICAgICAgICB7ICJ0b3VjaG1vdmUiX3MsIHsgODAsIDIwNCwgMjQ1LCA1MCB9
IH0sCi0gICAgICAgIHsgInRvdWNoZW5kIl9zLCB7IDE5MSwgNjMsIDEyNywgNTAgfSB9LAotICAg
ICAgICB7ICJ0b3VjaGZvcmNlY2hhbmdlIl9zLCB7IDYzLCA2MywgMTkxLCA1MCB9IH0sCi0gICAg
ICAgIHsgIndoZWVsIl9zLCB7IDI1NSwgMTI4LCAwLCA1MCB9IH0sCi0gICAgICAgIHsgIm1vdXNl
ZG93biJfcywgeyA4MCwgMjQ1LCA4MCwgNTAgfSB9LAotICAgICAgICB7ICJtb3VzZW1vdmUiX3Ms
IHsgMjQ1LCAyNDUsIDgwLCA1MCB9IH0sCi0gICAgICAgIHsgIm1vdXNldXAiX3MsIHsgODAsIDI0
NSwgMTc2LCA1MCB9IH0sCi0gICAgfSB9IH07Ci0gICAgcmV0dXJuIHJlZ2lvbkNvbG9yczsKLX0K
LQogc3RhdGljIHZvaWQgZHJhd1JpZ2h0QWxpZ25lZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBG
bG9hdFBvaW50JiBib3hMb2NhdGlvbikKIHsKICAgICBmbG9hdCB0ZXh0R2FwID0gMTA7CkBAIC0x
NzgsNiArMTYzLDE5IEBAIHN0YXRpYyB2b2lkIGRyYXdSaWdodEFsaWduZWRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjCiAKIHZvaWQgTm9uRmFzdFNj
cm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXks
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYpCiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OnBhaXI8Q29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgU1JHQkE8dWludDhf
dD4+IGNvbG9yTWFwcGluZ3NbXSA9IHsKKyAgICAgICAgeyAibW91c2Vkb3duIiwgeyA4MCwgMjQ1
LCA4MCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZW1vdmUiLCB7IDI0NSwgMjQ1LCA4MCwgNTAg
fSB9LAorICAgICAgICB7ICJtb3VzZXVwIiwgeyA4MCwgMjQ1LCAxNzYsIDUwIH0gfSwKKyAgICAg
ICAgeyAidG91Y2hlbmQiLCB7IDE5MSwgNjMsIDEyNywgNTAgfSB9LAorICAgICAgICB7ICJ0b3Vj
aGZvcmNlY2hhbmdlIiwgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICB7ICJ0b3VjaG1v
dmUiLCB7IDgwLCAyMDQsIDI0NSwgNTAgfSB9LAorICAgICAgICB7ICJ0b3VjaHN0YXJ0IiwgeyAx
OTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAgICAgICAgeyAid2hlZWwiLCB7IDI1NSwgMTI4LCAwLCA1
MCB9IH0sCisgICAgfTsKKyAgICBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgY29sb3JzIHsgY29s
b3JNYXBwaW5ncyB9OworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRDb2xvciA9IENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoNjQpOworCiAgICAgSW50UmVjdCBib3VuZHMgPSBwYWdl
T3ZlcmxheS5ib3VuZHMoKTsKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChib3VuZHMpOwpA
QCAtMTkyLDYwICsxOTAsMzIgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBGb250Q2Fz
Y2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgZm9udC51cGRh
dGUobnVsbHB0cik7CiAKKyAgICBhdXRvIGRyYXdMZWdlbmQgPSBbJl0gKFNSR0JBPHVpbnQ4X3Q+
IGNvbG9yLCBBU0NJSUxpdGVyYWwgdGV4dCkgeworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihjb2xvcik7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7CisgICAgICAg
IGRyYXdSaWdodEFsaWduZWRUZXh0KHRleHQsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9j
YXRpb24oKSk7CisgICAgICAgIGxlZ2VuZFJlY3QubW92ZSgwLCAzMCk7CisgICAgfTsKKwogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVu
dFJlZ2lvbkNvbG9ycygpLmdldCgidG91Y2hzdGFydCJfcykpOwotICAgIGNvbnRleHQuZmlsbFJl
Y3QobGVnZW5kUmVjdCk7Ci0gICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoInRvdWNoc3RhcnQiX3Ms
IGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7Ci0KLSAgICBsZWdlbmRSZWN0
Lm1vdmUoMCwgMzApOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRvdWNoRXZlbnRSZWdpb25D
b2xvcnMoKS5nZXQoInRvdWNobW92ZSJfcykpOwotICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5k
UmVjdCk7Ci0gICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoInRvdWNobW92ZSJfcywgY29udGV4dCwg
Zm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKLQotICAgIGxlZ2VuZFJlY3QubW92ZSgwLCAz
MCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmdl
dCgidG91Y2hlbmQiX3MpKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGxlZ2VuZFJlY3QpOwotICAg
IGRyYXdSaWdodEFsaWduZWRUZXh0KCJ0b3VjaGVuZCJfcywgY29udGV4dCwgZm9udCwgbGVnZW5k
UmVjdC5sb2NhdGlvbigpKTsKLQotICAgIGxlZ2VuZFJlY3QubW92ZSgwLCAzMCk7Ci0gICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmdldCgidG91Y2hmb3Jj
ZWNoYW5nZSJfcykpOwotICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7Ci0gICAgZHJh
d1JpZ2h0QWxpZ25lZFRleHQoInRvdWNoZm9yY2VjaGFuZ2UiX3MsIGNvbnRleHQsIGZvbnQsIGxl
Z2VuZFJlY3QubG9jYXRpb24oKSk7Ci0KLSAgICBsZWdlbmRSZWN0Lm1vdmUoMCwgMzApOwotICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwotICAgIGNvbnRleHQuZmlsbFJlY3QobGVn
ZW5kUmVjdCk7Ci0gICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoInBhc3NpdmUgbGlzdGVuZXJzIl9z
LCBjb250ZXh0LCBmb250LCBsZWdlbmRSZWN0LmxvY2F0aW9uKCkpOwotCi0gICAgbGVnZW5kUmVj
dC5tb3ZlKDAsIDMwKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b3VjaEV2ZW50UmVnaW9u
Q29sb3JzKCkuZ2V0KCJtb3VzZWRvd24iX3MpKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGxlZ2Vu
ZFJlY3QpOwotICAgIGRyYXdSaWdodEFsaWduZWRUZXh0KCJtb3VzZWRvd24iX3MsIGNvbnRleHQs
IGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7Ci0KLSAgICBsZWdlbmRSZWN0Lm1vdmUoMCwg
MzApOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRvdWNoRXZlbnRSZWdpb25Db2xvcnMoKS5n
ZXQoIm1vdXNlbW92ZSJfcykpOwotICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7Ci0g
ICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoIm1vdXNlbW92ZSJfcywgY29udGV4dCwgZm9udCwgbGVn
ZW5kUmVjdC5sb2NhdGlvbigpKTsKLQotICAgIGxlZ2VuZFJlY3QubW92ZSgwLCAzMCk7Ci0gICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmdldCgibW91c2V1
cCJfcykpOwotICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7Ci0gICAgZHJhd1JpZ2h0
QWxpZ25lZFRleHQoIm1vdXNldXAiX3MsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRp
b24oKSk7CisgICAgYXV0byBkcmF3RXZlbnRMZWdlbmQgPSBbJl0gKEFTQ0lJTGl0ZXJhbCBjb2xv
cikgeworICAgICAgICBkcmF3TGVnZW5kKGNvbG9ycy5nZXQoU3RyaW5nVmlldyB7IGNvbG9yIH0p
LCBjb2xvcik7CisgICAgfTsKKyAgICBkcmF3RXZlbnRMZWdlbmQoInRvdWNoc3RhcnQiX3MpOwor
ICAgIGRyYXdFdmVudExlZ2VuZCgidG91Y2htb3ZlIl9zKTsKKyAgICBkcmF3RXZlbnRMZWdlbmQo
InRvdWNoZW5kIl9zKTsKKyAgICBkcmF3RXZlbnRMZWdlbmQoInRvdWNoZm9yY2VjaGFuZ2UiX3Mp
OworICAgIGRyYXdMZWdlbmQobV9jb2xvciwgInBhc3NpdmUgbGlzdGVuZXJzIl9zKTsKKyAgICBk
cmF3RXZlbnRMZWdlbmQoIm1vdXNlZG93biJfcyk7CisgICAgZHJhd0V2ZW50TGVnZW5kKCJtb3Vz
ZW1vdmUiX3MpOworICAgIGRyYXdFdmVudExlZ2VuZCgibW91c2V1cCJfcyk7CiAjZWxzZQogICAg
IC8vIE9uIGRlc2t0b3AgcGxhdGZvcm1zLCB0aGUgIndoZWVsIiByZWdpb24gaW5jbHVkZXMgdGhl
IG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uLgotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRv
dWNoRXZlbnRSZWdpb25Db2xvcnMoKS5nZXQoIndoZWVsIl9zKSk7Ci0gICAgY29udGV4dC5maWxs
UmVjdChsZWdlbmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgibm9uLWZhc3QgcmVn
aW9uIl9zLCBjb250ZXh0LCBmb250LCBsZWdlbmRSZWN0LmxvY2F0aW9uKCkpOworICAgIGRyYXdM
ZWdlbmQoY29sb3JzLmdldCgid2hlZWwiKSwgIm5vbi1mYXN0IHJlZ2lvbiJfcyk7CiAjZW5kaWYK
IAotICAgIGZvciAoY29uc3QgYXV0byYgc3luY2hyb25vdXNFdmVudFJlZ2lvbiA6IG1fZXZlbnRU
cmFja2luZ1JlZ2lvbnMuZXZlbnRTcGVjaWZpY1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb25zKSB7
Ci0gICAgICAgIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFC
eXRlKDY0KTsKLSAgICAgICAgYXV0byBpdCA9IHRvdWNoRXZlbnRSZWdpb25Db2xvcnMoKS5maW5k
KHN5bmNocm9ub3VzRXZlbnRSZWdpb24ua2V5KTsKLSAgICAgICAgaWYgKGl0ICE9IHRvdWNoRXZl
bnRSZWdpb25Db2xvcnMoKS5lbmQoKSkKLSAgICAgICAgICAgIHJlZ2lvbkNvbG9yID0gaXQtPnZh
bHVlOwotICAgICAgICBkcmF3UmVnaW9uKGNvbnRleHQsIHN5bmNocm9ub3VzRXZlbnRSZWdpb24u
dmFsdWUsIHJlZ2lvbkNvbG9yLCBib3VuZHMpOwotICAgIH0KLQorICAgIGZvciAoYXV0byYgcmVn
aW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmljU3luY2hyb25vdXNEaXNw
YXRjaFJlZ2lvbnMpCisgICAgICAgIGRyYXdSZWdpb24oY29udGV4dCwgcmVnaW9uLnZhbHVlLCBj
b2xvcnMuZ2V0KHJlZ2lvbi5rZXksIGRlZmF1bHRDb2xvciksIGJvdW5kcyk7CiAgICAgZHJhd1Jl
Z2lvbihjb250ZXh0LCBtX2V2ZW50VHJhY2tpbmdSZWdpb25zLmFzeW5jaHJvbm91c0Rpc3BhdGNo
UmVnaW9uLCBtX2NvbG9yLCBib3VuZHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlVXNlclRpbWluZy5jcHAKaW5kZXggZGUzN2ZjMjA1OTE0ZjEzYjIzNmQwZjNhOTk4
N2JhY2EyZWVjMzNhYS4uNjQyMjAzYzRhMjdjNTIzMjA2MWNmM2UxNjJiZTc4YTk3MWZjNjk5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcApAQCAt
MzQsNjIgKzM0LDQwIEBACiAjaW5jbHVkZSAiUGVyZm9ybWFuY2VUaW1pbmcuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NK
U1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgTmF2aWdhdGlvblRpbWluZ0Z1bmN0
aW9uID0gdW5zaWduZWQgbG9uZyBsb25nIChQZXJmb3JtYW5jZVRpbWluZzo6KikoKSBjb25zdDsK
LXN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3Ry
aW5nLCBOYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb24+JiByZXN0cmljdGVkTWFya05hbWVzVG9OYXZp
Z2F0aW9uVGltaW5nRnVuY3Rpb25NYXAoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlvbj4gewotICAg
ICAgICB7ICJjb25uZWN0RW5kIl9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgfSwK
LSAgICAgICAgeyAiY29ubmVjdFN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RT
dGFydCB9LAotICAgICAgICB7ICJkb21Db21wbGV0ZSJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpk
b21Db21wbGV0ZSB9LAotICAgICAgICB7ICJkb21Db250ZW50TG9hZGVkRXZlbnRFbmQiX3MsICZQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kIH0sCi0gICAgICAgIHsg
ImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNv
bnRlbnRMb2FkZWRFdmVudFN0YXJ0IH0sCi0gICAgICAgIHsgImRvbUludGVyYWN0aXZlIl9zLCAm
UGVyZm9ybWFuY2VUaW1pbmc6OmRvbUludGVyYWN0aXZlIH0sCi0gICAgICAgIHsgImRvbUxvYWRp
bmciX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZyB9LAotICAgICAgICB7ICJkb21h
aW5Mb29rdXBFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIH0sCi0g
ICAgICAgIHsgImRvbWFpbkxvb2t1cFN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFp
bkxvb2t1cFN0YXJ0IH0sCi0gICAgICAgIHsgImZldGNoU3RhcnQiX3MsICZQZXJmb3JtYW5jZVRp
bWluZzo6ZmV0Y2hTdGFydCB9LAotICAgICAgICB7ICJsb2FkRXZlbnRFbmQiX3MsICZQZXJmb3Jt
YW5jZVRpbWluZzo6bG9hZEV2ZW50RW5kIH0sCi0gICAgICAgIHsgImxvYWRFdmVudFN0YXJ0Il9z
LCAmUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudFN0YXJ0IH0sCi0gICAgICAgIHsgIm5hdmln
YXRpb25TdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQgfSwKLSAg
ICAgICAgeyAicmVkaXJlY3RFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RFbmQg
fSwKLSAgICAgICAgeyAicmVkaXJlY3RTdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpyZWRp
cmVjdFN0YXJ0IH0sCi0gICAgICAgIHsgInJlcXVlc3RTdGFydCJfcywgJlBlcmZvcm1hbmNlVGlt
aW5nOjpyZXF1ZXN0U3RhcnQgfSwKLSAgICAgICAgeyAicmVzcG9uc2VFbmQiX3MsICZQZXJmb3Jt
YW5jZVRpbWluZzo6cmVzcG9uc2VFbmQgfSwKLSAgICAgICAgeyAicmVzcG9uc2VTdGFydCJfcywg
JlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0IH0sCi0gICAgICAgIHsgInNlY3VyZUNv
bm5lY3Rpb25TdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3Rh
cnQgfSwKLSAgICAgICAgeyAidW5sb2FkRXZlbnRFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6
dW5sb2FkRXZlbnRFbmQgfSwKLSAgICAgICAgeyAidW5sb2FkRXZlbnRTdGFydCJfcywgJlBlcmZv
cm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0IH0sCi0gICAgfTsKLSAgICByZXR1cm4gbWFw
OwotfQotCi1zdGF0aWMgTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uIHJlc3RyaWN0ZWRNYXJrRnVu
Y3Rpb24oY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIHJldHVybiByZXN0cmljdGVkTWFya05hbWVzVG9OYXZpZ2F0aW9uVGltaW5nRnVu
Y3Rpb25NYXAoKS5nZXQobWFya05hbWUpOwotfQogCi1zdGF0aWMgYm9vbCBpc1Jlc3RyaWN0ZWRN
YXJrTmFtZU5vbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKLXsKLSAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIGJvb2wgaXNSZXN0cmljdGVkOwotICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmaXNSZXN0cmljdGVkLCBtYXJrTmFtZSA9IG1hcmtOYW1lLmlz
b2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGlzUmVzdHJpY3RlZCA9IHJlc3RyaWN0ZWRNYXJrTmFt
ZXNUb05hdmlnYXRpb25UaW1pbmdGdW5jdGlvbk1hcCgpLmNvbnRhaW5zKG1hcmtOYW1lKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gaXNSZXN0cmljdGVkOwotfQorc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OnBhaXI8Q29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiBy
ZXN0cmljdGVkTWFya01hcHBpbmdzW10gPSB7CisgICAgeyAiY29ubmVjdEVuZCIsICZQZXJmb3Jt
YW5jZVRpbWluZzo6Y29ubmVjdEVuZCB9LAorICAgIHsgImNvbm5lY3RTdGFydCIsICZQZXJmb3Jt
YW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0IH0sCisgICAgeyAiZG9tQ29tcGxldGUiLCAmUGVyZm9y
bWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRlIH0sCisgICAgeyAiZG9tQ29udGVudExvYWRlZEV2ZW50
RW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRFbmQgfSwKKyAg
ICB7ICJkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCIsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9t
Q29udGVudExvYWRlZEV2ZW50U3RhcnQgfSwKKyAgICB7ICJkb21JbnRlcmFjdGl2ZSIsICZQZXJm
b3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJhY3RpdmUgfSwKKyAgICB7ICJkb21Mb2FkaW5nIiwgJlBl
cmZvcm1hbmNlVGltaW5nOjpkb21Mb2FkaW5nIH0sCisgICAgeyAiZG9tYWluTG9va3VwRW5kIiwg
JlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQgfSwKKyAgICB7ICJkb21haW5Mb29r
dXBTdGFydCIsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwU3RhcnQgfSwKKyAgICB7
ICJmZXRjaFN0YXJ0IiwgJlBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0IH0sCisgICAgeyAi
bG9hZEV2ZW50RW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQgfSwKKyAgICB7
ICJsb2FkRXZlbnRTdGFydCIsICZQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQgfSwK
KyAgICB7ICJuYXZpZ2F0aW9uU3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6Om5hdmlnYXRpb25T
dGFydCB9LAorICAgIHsgInJlZGlyZWN0RW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpyZWRpcmVj
dEVuZCB9LAorICAgIHsgInJlZGlyZWN0U3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGly
ZWN0U3RhcnQgfSwKKyAgICB7ICJyZXF1ZXN0U3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnJl
cXVlc3RTdGFydCB9LAorICAgIHsgInJlc3BvbnNlRW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpy
ZXNwb25zZUVuZCB9LAorICAgIHsgInJlc3BvbnNlU3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6
OnJlc3BvbnNlU3RhcnQgfSwKKyAgICB7ICJzZWN1cmVDb25uZWN0aW9uU3RhcnQiLCAmUGVyZm9y
bWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFydCB9LAorICAgIHsgInVubG9hZEV2ZW50
RW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCB9LAorICAgIHsgInVubG9h
ZEV2ZW50U3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQgfSwKK307
CitzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5TWFwIHJlc3RyaWN0ZWRNYXJrRnVuY3Rpb25z
IHsgcmVzdHJpY3RlZE1hcmtNYXBwaW5ncyB9OwogCiBib29sIFBlcmZvcm1hbmNlVXNlclRpbWlu
Zzo6aXNSZXN0cmljdGVkTWFya05hbWUoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiByZXN0cmljdGVkTWFya05hbWVzVG9O
YXZpZ2F0aW9uVGltaW5nRnVuY3Rpb25NYXAoKS5jb250YWlucyhtYXJrTmFtZSk7CisgICAgcmV0
dXJuIHJlc3RyaWN0ZWRNYXJrRnVuY3Rpb25zLmNvbnRhaW5zKG1hcmtOYW1lKTsKIH0KIAogUGVy
Zm9ybWFuY2VVc2VyVGltaW5nOjpQZXJmb3JtYW5jZVVzZXJUaW1pbmcoUGVyZm9ybWFuY2UmIHBl
cmZvcm1hbmNlKQpAQCAtMTM2LDE4ICsxMTQsMTggQEAgRXhjZXB0aW9uT3I8ZG91YmxlPiBQZXJm
b3JtYW5jZVVzZXJUaW1pbmc6OmNvbnZlcnRNYXJrVG9UaW1lc3RhbXAoY29uc3Qgc3RkOjp2YXIK
IEV4Y2VwdGlvbk9yPGRvdWJsZT4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjpjb252ZXJ0TWFya1Rv
VGltZXN0YW1wKGNvbnN0IFN0cmluZyYgbWFyaykgY29uc3QKIHsKICAgICBpZiAoIWlzTWFpblRo
cmVhZCgpKSB7Ci0gICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRNYXJrTmFtZU5vbk1haW5UaHJlYWQo
bWFyaykpCisgICAgICAgIGlmIChyZXN0cmljdGVkTWFya0Z1bmN0aW9ucy5jb250YWlucyhtYXJr
KSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9IHJlc3RyaWN0ZWRNYXJrRnVuY3Rpb24o
bWFyaykpIHsKLSAgICAgICAgICAgIGlmIChmdW5jdGlvbiA9PSAmUGVyZm9ybWFuY2VUaW1pbmc6
Om5hdmlnYXRpb25TdGFydCkKKyAgICAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSByZXN0cmljdGVk
TWFya0Z1bmN0aW9ucy50cnlHZXQobWFyaykpIHsKKyAgICAgICAgICAgIGlmICgqZnVuY3Rpb24g
PT0gJlBlcmZvcm1hbmNlVGltaW5nOjpuYXZpZ2F0aW9uU3RhcnQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDAuMDsKIAogICAgICAgICAgICAgLy8gUGVyZm9ybWFuY2VUaW1pbmcgc2hvdWxkIGFs
d2F5cyBiZSBub24tbnVsbCBmb3IgdGhlIERvY3VtZW50IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
CiAgICAgICAgICAgICBBU1NFUlQobV9wZXJmb3JtYW5jZS50aW1pbmcoKSk7CiAgICAgICAgICAg
ICBhdXRvIHRpbWluZyA9IG1fcGVyZm9ybWFuY2UudGltaW5nKCk7CiAgICAgICAgICAgICBhdXRv
IHN0YXJ0VGltZSA9IHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KCk7Ci0gICAgICAgICAgICBhdXRv
IGVuZFRpbWUgPSAoKCp0aW1pbmcpLiooZnVuY3Rpb24pKSgpOworICAgICAgICAgICAgYXV0byBl
bmRUaW1lID0gKCgqdGltaW5nKS4qKCpmdW5jdGlvbikpKCk7CiAgICAgICAgICAgICBpZiAoIWVu
ZFRpbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwogICAgICAgICAgICAgcmV0dXJuIGVuZFRpbWUgLSBzdGFydFRpbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lckNvY29hLm1tCmluZGV4IDQ1NGE0YjZmYmUxNzAyYzZkZTk2MWUzMGFhZDc3ZTNmMDgzNzg4
YTMuLjZiZWExYTQwOWJlNzc1ZTUxNzI3ZmQwNDQ0ODg2N2YzOTk0NmEyM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lckNvY29hLm1tCkBAIC01NSw5ICs1NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1STWVk
aWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoCiAg
ICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kLCBNUk1l
ZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJhY2sgfSwKICAgICB9OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgU29ydGVkQXJyYXlNYXAgbWFwIHsgbWFwcGluZ3MgfTsKLSAgICBpZiAoYXV0byogdmFs
dWUgPSBtYXAudHJ5R2V0KGNvbW1hbmQpKQotICAgICAgICByZXR1cm4gKnZhbHVlOwotICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1ha2VPcHRpb25hbEZyb21Qb2ludGVyKG1h
cC50cnlHZXQoY29tbWFuZCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExp
c3RlbmVyQ29jb2E+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjpjcmVhdGUoUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNGMxZGZkY2RiOTk3ZmJmYTUwMGNhYWQx
OWI4ZmIwN2RkNmEzZDRhMi4uMmE3NjEzNjJjODNmYTY4NWI1MWM2ZWUwNTJjNmIxMzVjMDI1Zjlh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMzczLDQzICszNzQsNDQgQEAgYm9vbCBGb250Q2FzY2FkZTo6aGFzVmFsaWRBdmVyYWdl
Q2hhcldpZHRoKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoU2V0PEF0b21TdHJpbmc+IHsKLSAgICAgICAgIkFtZXJpY2FuIFR5cGV3cml0ZXIiX3Ms
Ci0gICAgICAgICJBcmlhbCBIZWJyZXciX3MsCi0gICAgICAgICJDaGFsa2JvYXJkIl9zLAotICAg
ICAgICAiQ29jaGluIl9zLAotICAgICAgICAiQ29yc2l2YSBIZWJyZXciX3MsCi0gICAgICAgICJD
b3VyaWVyIl9zLAotICAgICAgICAiRXVwaGVtaWEgVUNBUyJfcywKLSAgICAgICAgIkdlbmV2YSJf
cywKLSAgICAgICAgIkdpbGwgU2FucyJfcywKLSAgICAgICAgIkhlaSJfcywKLSAgICAgICAgIkhl
bHZldGljYSJfcywKLSAgICAgICAgIkhvZWZsZXIgVGV4dCJfcywKLSAgICAgICAgIkluYWlNYXRo
aSJfcywKLSAgICAgICAgIkthaSJfcywKLSAgICAgICAgIkx1Y2lkYSBHcmFuZGUiX3MsCi0gICAg
ICAgICJNYXJrZXIgRmVsdCJfcywKLSAgICAgICAgIk1vbmFjbyJfcywKLSAgICAgICAgIk1zaHRh
a2FuIl9zLAotICAgICAgICAiTmV3IFBlbmluaW0gTVQiX3MsCi0gICAgICAgICJPc2FrYSJfcywK
LSAgICAgICAgIlJhYW5hbmEiX3MsCi0gICAgICAgICJTVEhlaXRpIl9zLAotICAgICAgICAiU3lt
Ym9sIl9zLAotICAgICAgICAiVGltZXMiX3MsCi0gICAgICAgICJBcHBsZSBCcmFpbGxlIl9zLAot
ICAgICAgICAiQXBwbGUgTGlHb3RoaWMiX3MsCi0gICAgICAgICJBcHBsZSBMaVN1bmciX3MsCi0g
ICAgICAgICJBcHBsZSBTeW1ib2xzIl9zLAotICAgICAgICAiQXBwbGVHb3RoaWMiX3MsCi0gICAg
ICAgICJBcHBsZU15dW5nam8iX3MsCi0gICAgICAgICIjR3VuZ1NlbyJfcywKLSAgICAgICAgIiNI
ZWFkTGluZUEiX3MsCi0gICAgICAgICIjUENNeXVuZ2pvIl9zLAotICAgICAgICAiI1BpbEdpIl9z
LAorICAgIHN0YXRpYyBjb25zdGV4cHIgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBuYW1lc1tdID0g
eworICAgICAgICAiI0d1bmdTZW8iLAorICAgICAgICAiI0hlYWRMaW5lQSIsCisgICAgICAgICIj
UENNeXVuZ2pvIiwKKyAgICAgICAgIiNQaWxHaSIsCisgICAgICAgICJBbWVyaWNhbiBUeXBld3Jp
dGVyIiwKKyAgICAgICAgIkFwcGxlIEJyYWlsbGUiLAorICAgICAgICAiQXBwbGUgTGlHb3RoaWMi
LAorICAgICAgICAiQXBwbGUgTGlTdW5nIiwKKyAgICAgICAgIkFwcGxlIFN5bWJvbHMiLAorICAg
ICAgICAiQXBwbGVHb3RoaWMiLAorICAgICAgICAiQXBwbGVNeXVuZ2pvIiwKKyAgICAgICAgIkFy
aWFsIEhlYnJldyIsCisgICAgICAgICJDaGFsa2JvYXJkIiwKKyAgICAgICAgIkNvY2hpbiIsCisg
ICAgICAgICJDb3JzaXZhIEhlYnJldyIsCisgICAgICAgICJDb3VyaWVyIiwKKyAgICAgICAgIkV1
cGhlbWlhIFVDQVMiLAorICAgICAgICAiR2VuZXZhIiwKKyAgICAgICAgIkdpbGwgU2FucyIsCisg
ICAgICAgICJIZWkiLAorICAgICAgICAiSGVsdmV0aWNhIiwKKyAgICAgICAgIkhvZWZsZXIgVGV4
dCIsCisgICAgICAgICJJbmFpTWF0aGkiLAorICAgICAgICAiS2FpIiwKKyAgICAgICAgIkx1Y2lk
YSBHcmFuZGUiLAorICAgICAgICAiTWFya2VyIEZlbHQiLAorICAgICAgICAiTW9uYWNvIiwKKyAg
ICAgICAgIk1zaHRha2FuIiwKKyAgICAgICAgIk5ldyBQZW5pbmltIE1UIiwKKyAgICAgICAgIk9z
YWthIiwKKyAgICAgICAgIlJhYW5hbmEiLAorICAgICAgICAiU1RIZWl0aSIsCisgICAgICAgICJT
eW1ib2wiLAorICAgICAgICAiVGltZXMiLAogICAgIH07Ci0gICAgcmV0dXJuICFtYXAuZ2V0KCku
Y29udGFpbnMoZmFtaWx5KTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHNl
dCB7IG5hbWVzIH07CisgICAgcmV0dXJuICFzZXQuY29udGFpbnMoZmFtaWx5KTsKIH0KIAogYm9v
bCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCYgd2lk
dGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuY3BwCmluZGV4IDQ5NGIwNDdhNDVhODRlNDM5NGY1YWYzMmQwZTU5YzZl
ODMwMjZlM2MuLjdkOGVlNzE0NjNkYjJlNjQ2Y2VhZGU4YTYzY2U2NjZiYjcwNmFlMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuY3BwCkBAIC0yMSw2ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Rm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCkBAIC0zMiwxMyArMzQsNiBAQCBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKCkKIHsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUeXBlPiBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtl
T3B0aW9uYWxGcm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCi17Ci0gICAgaWYg
KCFwb2ludGVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiAqcG9p
bnRlcjsKLX0KLQogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXpl
LCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRl
cmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUsIGNvbnN0IENyZWF0aW9uRGF0YSogY3JlYXRpb25E
YXRhKQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmNwcAppbmRleCAyY2Y0NDhiZWEyZmE2YWU0ZDQ3Zjk2NDAwMmIzYTkwNmMwMTI5MDY3Li5hOTBk
NDFmZjQyMzI3OTYzYTQ3ZTVjNDNlNzVmMzNjYWQ5NGM0OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMzEyLDEzICsz
MTIsNiBAQCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29u
ZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RhdGljIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIoY29uc3QgVmFsdWVUeXBlKiBw
b2ludGVyKQotewotICAgIGlmICghcG9pbnRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICByZXR1cm4gKnBvaW50ZXI7Ci19Ci0KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERvVmlQ
YXJhbWV0ZXJzOjpDb2RlYz4gcGFyc2VEb1ZpQ29kZWNUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPFBhY2tlZEFTQ0lJTG93ZXJDb2Rlczx1
aW50MzJfdD4sIERvVmlQYXJhbWV0ZXJzOjpDb2RlYz4gdHlwZXNBcnJheVtdID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QVZBc3NldE1JTUVUeXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQppbmRleCA3ZWJlNTEy
NWFmNjUwMjJlYTI4YmZjMjU1YzY2NDM5ZjQxNzE1MjMzLi5kODQ4MDVmMjM1MWViMWQzNjM4Mzc4
OTlhODZjNjA4OGVjNDM3MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0
TUlNRVR5cGVDYWNoZS5tbQpAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OmluaXRpYWxpemVDYWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVICiAKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQogICAgIGlmIChTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjppc1dlYk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUoKSkgewotICAgICAgICBh
dXRvIHdlYm1UeXBlcyA9IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OndlYm1NSU1FVHlwZXMoKTsK
LSAgICAgICAgY2FjaGUuYWRkKHdlYm1UeXBlcy5iZWdpbigpLCB3ZWJtVHlwZXMuZW5kKCkpOwor
ICAgICAgICBhdXRvIHR5cGVzID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkTUlN
RVR5cGVzKCk7CisgICAgICAgIGNhY2hlLmFkZCh0eXBlcy5iZWdpbigpLCB0eXBlcy5lbmQoKSk7
CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggYmE1MDYxZWJi
NWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNi4uZWYxNTgzZGFiMzIyOTMzYWExYzYzYWI5
ODBlNjY1YWRmYWRiY2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTE0NSw2ICsx
NDUsNyBAQCAtICh2b2lkKWNvbnRlbnRLZXlTZXNzaW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9u
SWRlbnRpZmllckRpZENoYW5nZTooQVZDb250ZW50SwogICAgIGlmIChfcGFyZW50KQogICAgICAg
ICBfcGFyZW50LT5zZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoc2Vzc2lvbi5jb250ZW50UHJvdGVj
dGlvblNlc3Npb25JZGVudGlmaWVyKTsKIH0KKwogLSAodm9pZCljb250ZW50S2V5U2Vzc2lvbjoo
QVZDb250ZW50S2V5U2Vzc2lvbiAqKXNlc3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRl
bnRpZmllckRpZENoYW5nZUZvcktleUdyb3VwOihudWxsYWJsZSBBVkNvbnRlbnRLZXlSZXBvcnRH
cm91cCAqKXJlcG9ydEdyb3VwCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSBhZnRlciByZGFyOi8v
NTc0MzA3NDcgaXMgZml4ZWQKQEAgLTI5OCw5ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghLS1tX251bWJlck9mRXhwZWN0ZWRSZXNwb25zZXMpCiAgICAgICAgICAgICBtX2NhbGxiYWNr
KFdURk1vdmUobV9yZXNwb25zZXMpKTsKICAgICB9Ci0gICAgdm9pZCBhZGRFcnJvclJlc3BvbnNl
KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QsIE5TRXJyb3IqIGVycm9yKQorICAgIHZvaWQg
YWRkRXJyb3JSZXNwb25zZShBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0LCBOU0Vycm9yKikK
ICAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgIG1fcmVzcG9uc2Vz
LnNldChyZXF1ZXN0LCBudWxscHRyKTsKICAgICAgICAgaWYgKCEtLW1fbnVtYmVyT2ZFeHBlY3Rl
ZFJlc3BvbnNlcykKICAgICAgICAgICAgIG1fY2FsbGJhY2soV1RGTW92ZShtX3Jlc3BvbnNlcykp
OwpAQCAtNTM2LDkgKzUzNiw4IEBAIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpz
ZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICpzZXNzaW9uSWRlbnRpZmllcikKK3ZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hh
bmdlZChOU0RhdGEgKikKIHsKLSAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklkZW50aWZpZXIpOwog
ICAgIC8vIE5vLW9wLiBJZiB3ZSBhcmUgZ2V0dGluZyB0aGlzIGNhbGxiYWNrLCB0aGVyZSBhcmUg
b3V0c3RhbmRpbmcgQVZDb250ZW50S2V5UmVxdWVzdEdyb3VwcyB3aGljaCBhcmUgbWFuYWdpbmcg
dGhlaXIgb3duCiAgICAgLy8gc2Vzc2lvbiBpZGVudGlmaWVycy4KIH0KQEAgLTkxNyw5ICs5MTYs
OCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9yaWdpbik7CiAgICAgaWYgKGxpY2Vuc2VU
eXBlID09IExpY2Vuc2VUeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHsKICAgICAgICAgYXV0
byogc3RvcmFnZVVSTCA9IG1faW5zdGFuY2UtPnN0b3JhZ2VVUkwoKTsKICAgICAgICAgaWYgKCFt
X2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgIXN0b3JhZ2VVUkwpIHsKQEAg
LTEyMTMsOCArMTIxMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5m
aXJzdCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgICAgICBbcmVxdWVzdCBtYWtl
U3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkg
Y29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29t
cGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0Rh
dGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisgICAgICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dy
ZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0
YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgICAgICBhZ2dyZWdhdG9yLT5yZXF1ZXN0c0RhdGEuYXBwZW5kKHsgV1RGTW92ZShrZXlJRCks
IFdURk1vdmUoY29udGVudEtleVJlcXVlc3REYXRhKSB9KTsKICAgICAgICAgICAgICAgICB9KTsK
QEAgLTEyNzYsMTUgKzEyNzMsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KICAgICB9CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCit2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVBlcnNpc3RhYmxlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICopCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHJlcXVlc3QpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVz
dCAqcmVxdWVzdCwgTlNFcnJvciAqZXJyb3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3Qp
OwotCiAgICAgLy8gUmF0aGVyIHRoYW4gcmVqZWN0IHRoZSB1cGRhdGUoKSBwcm9taXNlIHdoZW4g
dGhlIENETSBpbmRpY2F0ZXMgdGhhdAogICAgIC8vIHRoZSBrZXkgcmVxdWlyZXMgYSBoaWdoZXIg
bGV2ZWwgb2Ygc2VjdXJpdHkgdGhhbiBpdCBpcyBjdXJyZW50bHkgYWJsZQogICAgIC8vIHRvIHBy
b3ZpZGUsIHNpZ25hbCB0aGlzIHN0YXRlIGJ5ICJzdWNjZWVkaW5nIiwgYnV0IHNldCB0aGUga2V5
IHN0YXR1cwpAQCAtMTMxMiw3ICsxMzA2LDYgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGUKIAog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RE
aWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHJlcXVlc3QpOwogICAgIGlmIChtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yKSB7CiAgICAg
ICAgIG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3ItPmFkZFN1Y2Nlc3NmdWxSZXNwb25zZShyZXF1
ZXN0LCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM3MSwxMCArMTM2NCw4IEBAIGJv
b2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpoYXNSZXF1ZXN0
KEFWQ29udGVudEtleVJlcXVlc3QqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0
Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24p
Citib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxk
UmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKiwgTlNTdHJpbmcgKikK
IHsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMzkzLDkg
KzEzODQsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YQogICAgICAgICBtX2NsaWVudC0+c2Vz
c2lvbklkQ2hhbmdlZChtX3Nlc3Npb25JZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChB
VkNvbnRlbnRLZXlSZXBvcnRHcm91cCogZ3JvdXAsIE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Z3JvdXBT
ZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqLCBOU0RhdGEg
KnNlc3Npb25JZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cCk7CiAgICAgc2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkKHNlc3Npb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTQ1Miwx
NiArMTQ0MiwxNSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudAogICAgICAgICBtX2NsaWVudC0+
dXBkYXRlS2V5U3RhdHVzZXMoa2V5U3RhdHVzZXMoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNE
aWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVy
bmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqKQogewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKICAgICBpZiAoIW1f
Y2xpZW50KQogICAgICAgICByZXR1cm47CiAKICAgICB1cGRhdGVQcm90ZWN0aW9uU3RhdHVzRm9y
RGlzcGxheUlEKG1fY2xpZW50LT5kaXNwbGF5SUQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8Q0RN
S2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnBy
b3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCwg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gZGlzcGxheUlEKSBjb25zdAorc3RkOjpv
cHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0
ICpyZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPikgY29uc3QKIHsKICNp
ZiBIQVZFKEFWQ09OVEVOVEtFWVJFUVVFU1RfUEVORElOR19QUk9URUNUSU9OX1NUQVRVUykKICAg
ICBpZiAoW3JlcXVlc3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihleHRlcm5hbENvbnRl
bnRQcm90ZWN0aW9uU3RhdHVzKV0pIHsKQEAgLTE0NzgsNyArMTQ2Nyw2IEBAIHN0ZDo6b3B0aW9u
YWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnByb3RlY3RpCiAgICAgLy8gYWNyb3NzIGFsbCBkaXNwbGF5cy4gUmVwbGFjZSB0aGUgYmVs
b3cgd2l0aCBleHBsaWNpdCBBUElzIHRvIHF1ZXJ5IHRoZSBwZXItZGlzcGxheSBIRENQIHN0YXR1
cyBpbiB0aGUgVUlQcm9jZXNzCiAgICAgLy8gYW5kIHRvIHF1ZXJ5IHRoZSBIRENQIGxldmVsIHJl
cXVpcmVkIGJ5IGVhY2ggQVZDb250ZW50S2V5UmVxdWVzdCwgYW5kIGRvIHRoZSBjb21wYXJpc29u
IGJldHdlZW4gdGhlIHR3byBpbiB0aGUKICAgICAvLyBXZWJQcm9jZXNzLgotICAgIFVOVVNFRF9Q
QVJBTShkaXNwbGF5SUQpOwogICAgIGlmIChbcmVxdWVzdCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdpbGxPdXRwdXRCZU9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3Rl
Y3Rpb25Gb3JEaXNwbGF5czopXSkgewogCiAgICAgICAgIC8vIHdpbGxPdXRwdXRCZU9ic2N1cmVk
RHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25Gb3JEaXNwbGF5cyB3aWxsIGFsd2F5
cyByZXR1cm4gIllFUyIgcHJpb3IgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAppbmRleCA0NmY2OTQxN2ZkMjZmMzE1NGMwNDlh
ZGQ3Yjk1ZmQwN2Q0NDRmZDQxLi5hY2FiYTMxNGRkY2EwNTUzZDIwNzY2OGRjOGYxNWQ0NTZiNmRl
NWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0
U3VwcG9ydGVkSW1hZ2VUeXBlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGRlZmF1
bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0gW10gewotICAgICAgICBIYXNoU2V0PFN0cmluZz4gZGVm
YXVsdFN1cHBvcnRlZEltYWdlVHlwZXMgPSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IHsKICAgICAgICAgICAgICJjb20u
Y29tcHVzZXJ2ZS5naWYiX3MsCiAgICAgICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiX3MsCiAg
ICAgICAgICAgICAiY29tLm1pY3Jvc29mdC5jdXIiX3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDhmNWU4NzkwZjJmZTEwYmExMjNmMTNmMjAzY2M3ZTMxZWNhOTFkZjMu
LjYwYzUxOGU2ODFiMGVlZjNkOTJhYjdiNjM3MjhkNDAwZjZjNjc4ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01NTMsMTkgKzU1MywyMSBAQCBwcml2YXRlOgogICAg
IHdlYm06OlRyYWNrRW50cnkgbV90cmFjazsKIH07CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp3ZWJtTUlN
RVR5cGVzKCkKK1NwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpzdXBwb3J0ZWRNSU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBl
cyA9IFtdIHsKLSAgICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gdHlwZXM7CisjaWYgIShFTkFCTEUoVlA5KSB8fCBFTkFCTEUoVk9SQklTKSB8fCBFTkFCTEUo
T1BVUykpCisgICAgcmV0dXJuIHsgfTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5IHR5cGVzIHsKICNpZiBFTkFCTEUoVlA5KQotICAgICAgICB0eXBlcy5hZGQoInZpZGVv
L3dlYm0iKTsKKyAgICAgICAgInZpZGVvL3dlYm0iX3MsCiAjZW5kaWYKICNpZiBFTkFCTEUoVk9S
QklTKSB8fCBFTkFCTEUoT1BVUykKLSAgICAgICAgdHlwZXMuYWRkKCJhdWRpby93ZWJtIik7Cisg
ICAgICAgICJhdWRpby93ZWJtIl9zLAogI2VuZGlmCi0gICAgICAgIHJldHVybiB0eXBlczsKLSAg
ICB9KCk7CisgICAgfTsKICAgICByZXR1cm4gdHlwZXM7CisjZW5kaWYKIH0KIAogc3RhdGljIGJv
b2wgY2FuTG9hZEZvcm1hdFJlYWRlcigpCkBAIC04MDYsNyArODA4LDYgQEAgYXV0byBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjp0cmFja0RhdGFGb3JUcmFja051bWJlcih1aW50NjRfdCB0cmFja051
bWJlcikgLT4gVHIKIAogU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJl
Z2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIEFjdGlvbiogYWN0aW9uKQogewot
ICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CiAgICAgQVNTRVJUKGFjdGlvbik7CiAgICAgaWYg
KCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5
KTsKQEAgLTg3OSw3ICs4ODAsNiBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25F
bGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQQogCiBTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBJTkZPX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKIAogICAgIGF1dG8gb2xkU3RhdGUgPSBtX3N0
YXRlOwpAQCAtOTE5LDkgKzkxOSw4IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkVsZW1lbnRFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICByZXR1cm4g
U3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotU3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uRWJtbChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBF
Ym1sJiBlYm1sKQorU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbChjb25zdCBF
bGVtZW50TWV0YWRhdGEmLCBjb25zdCBFYm1sJiBlYm1sKQogewotICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKICAg
ICBpZiAoZWJtbC5kb2NfdHlwZS5pc19wcmVzZW50KCkgJiYgZWJtbC5kb2NfdHlwZS52YWx1ZSgp
LmNvbXBhcmUoIndlYm0iKSkKQEAgLTkzOSw5ICs5MzgsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IEVibQogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi1TdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgQWN0aW9uKiBhY3Rpb24pCitTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25TZWdtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgQWN0aW9uKiBh
Y3Rpb24pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBJTkZPX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSKTsKIAogICAgIGlmICghbV9pbml0aWFsaXphdGlvblNlZ21l
bnRFbmNvdW50ZXJlZCkgewpAQCAtOTU3LDkgKzk1NSw4IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBBCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKLVN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkluZm8oY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgSW5mbyYgaW5mbykKIHsKLSAg
ICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwogICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIpOwogCiAgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
IHx8ICFtX2luaXRpYWxpemF0aW9uU2VnbWVudCkgewpAQCAtOTc0LDkgKzk3MSw4IEBAIFN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgSW5mCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRl
ZCk7CiB9CiAKLVN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBDbHVzdGVyJiBjbHVzdGVyLCBB
Y3Rpb24qIGFjdGlvbikKK1N0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJC
ZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmLCBjb25zdCBDbHVzdGVyJiBjbHVzdGVyLCBBY3Rp
b24qIGFjdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwogICAgIElORk9fTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgQVNTRVJUKGFjdGlvbik7CkBAIC05
OTEsOSArOTg3LDggQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJl
Z2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBU
cmFja0VudHJ5JiB0cmFja0VudHJ5KQorU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
VHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmLCBjb25zdCBUcmFja0VudHJ5JiB0cmFj
a0VudHJ5KQogewotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CiAgICAgaWYgKCF0cmFja0Vu
dHJ5LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpIHx8ICF0cmFja0VudHJ5LmNvZGVjX2lkLmlzX3By
ZXNlbnQoKSkKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiAK
QEAgLTEwMDIsMTIgKzk5NywxMiBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25U
cmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbgogCiAgICAgQUxX
QVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCB0cmFja1R5cGUsICIsIGNvZGVjICIs
IGNvZGVjSWQpOwogCi0gICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbyAmJiAh
c3VwcG9ydGVkVmlkZW9Db2RlY3MoKS5jb250YWlucyhjb2RlY0lkKSkgeworICAgIGlmICh0cmFj
a1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8gJiYgIWlzU3VwcG9ydGVkVmlkZW9Db2RlYyhjb2Rl
Y0lkKSkgewogICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVu
Y291bnRlcmVkIHVuc3VwcG9ydGVkIHZpZGVvIGNvZGVjIElEICIsIGNvZGVjSWQpOwogICAgICAg
ICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlkZW9D
b2RlYykpOwogICAgIH0KIAotICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8g
JiYgIXN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICBpZiAo
dHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvICYmICFpc1N1cHBvcnRlZEF1ZGlvQ29kZWMo
Y29kZWNJZCkpIHsKICAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCBhdWRpbyBjb2RlYyBJRCAiLCBjb2RlY0lkKTsKICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZEF1
ZGlvQ29kZWMpKTsKICAgICB9CkBAIC0xMDczLDkgKzEwNjgsOCBAQCBTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIGNvbgogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi13
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0JlZ2luKGNvbnN0IEVs
ZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rp
b24pCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0JlZ2luKGNv
bnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IEJsb2NrJiBibG9jaywgQWN0aW9uKiBhY3Rpb24p
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSKTsKIAogICAgIEFTU0VSVChhY3Rpb24pOwpAQCAtMTA4OSwxMCArMTA4
Myw4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4o
Y29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0CiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEJsb2Nr
JiBibG9jaykKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrRW5k
KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IEJsb2NrJikKIHsKLSAgICBVTlVTRURfUEFS
QU0obWV0YWRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShibG9jayk7CiAgICAgSU5GT19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKICAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bnVs
bG9wdDsKQEAgLTExMDAsOSArMTA5Miw4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsCiAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrLCBBY3Rpb24qIGFjdGlv
bikKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVn
aW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrLCBBY3Rp
b24qIGFjdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwogICAgIElORk9fTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgQVNTRVJUKGFjdGlvbik7CkBAIC0x
MTE2LDIxICsxMTA3LDE3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
blNpbXBsZUJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtCiAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0
YWRhdGEsIGNvbnN0IFNpbXBsZUJsb2NrJiBibG9jaykKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNv
bnN0IFNpbXBsZUJsb2NrJikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwogICAgIElO
Rk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCi0gICAgVU5VU0VEX1BBUkFNKGJs
b2NrKTsKLQogICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0
YWRhdGEmIG1ldGFkYXRhLCB3ZWJtOjpBY3Rpb24qIGFjdGlvbikKK3dlYm06OlN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50
TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qIGFjdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0
YWRhdGEpOwogICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAg
QVNTRVJUKGFjdGlvbik7CkBAIC0xMTQxLDkgKzExMjgsOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwQmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1l
dGFkYQogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi13ZWJt
OjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dyb3VwRW5kKGNvbnN0IHdl
Ym06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IHdlYm06OkJsb2NrR3JvdXAmIGJs
b2NrR3JvdXApCit3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0dy
b3VwRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IHdlYm06OkJsb2NrR3Jv
dXAmIGJsb2NrR3JvdXApCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBJTkZP
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBpZiAoYmxvY2tHcm91cC5ibG9j
ay5pc19wcmVzZW50KCkgJiYgYmxvY2tHcm91cC5kaXNjYXJkX3BhZGRpbmcuaXNfcHJlc2VudCgp
KSB7CiAgICAgICAgIGF1dG8gdHJhY2tOdW1iZXIgPSBibG9ja0dyb3VwLmJsb2NrLnZhbHVlKCku
dHJhY2tfbnVtYmVyOwpAQCAtMTUyNywxNiArMTUxMywxNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQog
ICAgIG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24gPSBkdXJhdGlvbjsKIH0KIAotY29uc3Qg
TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKCkKK2Jvb2wgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6aXNTdXBwb3J0ZWRWaWRlb0NvZGVjKFN0cmluZ1ZpZXcgbmFtZSkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY29kZWNzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4geyAiVl9WUDgiX3MsICJWX1ZQOSJfcyB9OwotICAgIHJl
dHVybiBjb2RlY3M7CisgICAgcmV0dXJuIG5hbWUgPT0gIlZfVlA4IiB8fCBuYW1lID09ICJWX1ZQ
OSI7CiB9CiAKLWNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxT
dHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRpb0NvZGVjcygpCiti
b29sIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzU3VwcG9ydGVkQXVkaW9Db2RlYyhTdHJpbmdW
aWV3IG5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNvZGVjcyA9IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+IHsgIkFfVk9SQklTIl9zLCAi
QV9PUFVTIl9zIH07Ci0gICAgcmV0dXJuIGNvZGVjczsKKyAgICByZXR1cm4gbmFtZSA9PSAiQV9W
T1JCSVMiIHx8IG5hbWUgPT0gIkFfT1BVUyI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaAppbmRleCA0NTVjZmI1ODA0NmM2ZWZhYTgxOTIwNTM3NTY3OTllMWVmZTJkMDc0Li44
NjMxMDVjYTgyZjg4MTBjNWQxNTU0OGUzNWJkMTJmNzMyZGExNTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCkBAIC0zNSwxNCArMzUsOCBAQAogI2luY2x1ZGUgPHdlYm0vY2FsbGJh
Y2suaD4KICNpbmNsdWRlIDx3ZWJtL3N0YXR1cy5oPgogI2luY2x1ZGUgPHdlYm0vdnA5X2hlYWRl
cl9wYXJzZXIuaD4KLSNpbmNsdWRlIDx3dGYvQm94Lmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgotI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVz
Y3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVD
TUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVmOwpAQCAtNTMsOCArNDcsNiBAQCBjbGFzcyBX
ZWJtUGFyc2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2FtcGxlQVZG
T2JqQzsKLQogY2xhc3MgU291cmNlQnVmZmVyUGFyc2VyV2ViTSA6IHB1YmxpYyBTb3VyY2VCdWZm
ZXJQYXJzZXIsIHByaXZhdGUgd2VibTo6Q2FsbGJhY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtNjIsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Ym9vbCBpc1dlYk1Gb3JtYXRSZWFkZXJBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlIGlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY29uc3QgQ29udGVu
dFR5cGUmKTsKLSAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHdlYm1NSU1FVHlwZXMoKTsKKyAgICBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJ
SUxpdGVyYWw+IHN1cHBvcnRlZE1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyV2ViTT4gY3JlYXRlKGNvbnN0IENvbnRlbnRUeXBl
Jik7CiAKICAgICBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCk7CkBAIC0yNTYsOCArMjQ4LDggQEAg
cHJpdmF0ZToKIAogICAgIFRyYWNrRGF0YSogdHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodWludDY0
X3QpOwogCi0gICAgc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRWaWRlb0NvZGVjcygpOwotICAgIHN0YXRpYyBjb25z
dCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9y
dGVkQXVkaW9Db2RlY3MoKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFZpZGVvQ29kZWMo
U3RyaW5nVmlldyk7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdWRpb0NvZGVjKFN0cmlu
Z1ZpZXcpOwogCiAgICAgLy8gd2VibTo6Q2FsbGJhY2sKICAgICB3ZWJtOjpTdGF0dXMgT25FbGVt
ZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5k
ZXggYzQyMmIyOWVkNzcwNWFmZjMzZDk4MDZiN2Q0YmUzZjcxMGY5MjEwNy4uYzc0NzEwYmMxY2Y4
MjYzYzgwOGJjYzg1MDdmZTNiODBlNTgwZWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNDgsMTAwICs0OCwxMDUgQEAgU1ZHUmVzb3Vy
Y2VzOjpTVkdSZXNvdXJjZXMoKQogewogfQogCitzdGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHRhZ1NldChTcGFuPGRlY2x0eXBlKFNWR05h
bWVzOjphVGFnKSogY29uc3Q+IHRhZ3MpCit7CisgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKKyAgICBzZXQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSh0YWdzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiB0YWcgOiB0YWdzKQorICAgICAg
ICBzZXQuYWRkKHRhZy0+Z2V0KCkubG9jYWxOYW1lKCkpOworICAgIHJldHVybiBzZXQ7Cit9CisK
IHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRv
bVN0cmluZz4mIGNsaXBwZXJGaWx0ZXJNYXNrZXJUYWdzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJp
bmc+PiBzX3RhZ0xpc3Q7Ci0gICAgaWYgKHNfdGFnTGlzdC5nZXQoKS5pc0VtcHR5KCkpIHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdGFncyB7CiAgICAgICAgIC8vICJjb250YWlu
ZXIgZWxlbWVudHMiOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1D
b250YWluZXJFbGVtZW50CiAgICAgICAgIC8vICJncmFwaGljcyBlbGVtZW50cyIgOiBodHRwOi8v
d3d3LnczLm9yZy9UUi9TVkcxMS9pbnRyby5odG1sI1Rlcm1HcmFwaGljc0VsZW1lbnQKLSAgICAg
ICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6YVRhZy0+bG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjaXJjbGVUYWctPmxvY2FsTmFtZSgp
KTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy0+bG9j
YWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpnbHlwaFRh
Zy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpn
VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6
OmltYWdlVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OmxpbmVUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFk
ZChTVkdOYW1lczo6bWFya2VyVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6Om1hc2tUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmdldCgpLmFkZChTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy0+bG9jYWxOYW1lKCkpOwot
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwYXRoVGFnLT5sb2NhbE5hbWUo
KSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvbHlnb25UYWctPmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWxp
bmVUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1l
czo6cmVjdFRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNW
R05hbWVzOjpzdmdUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFk
ZChTVkdOYW1lczo6dGV4dFRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjp1c2VUYWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgJlNWR05hbWVz
OjphVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OmNpcmNsZVRhZywKKyAgICAgICAgJlNWR05hbWVz
OjplbGxpcHNlVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OmdseXBoVGFnLAorICAgICAgICAmU1ZH
TmFtZXM6OmdUYWcsCisgICAgICAgICZTVkdOYW1lczo6aW1hZ2VUYWcsCisgICAgICAgICZTVkdO
YW1lczo6bGluZVRhZywKKyAgICAgICAgJlNWR05hbWVzOjptYXJrZXJUYWcsCisgICAgICAgICZT
VkdOYW1lczo6bWFza1RhZywKKyAgICAgICAgJlNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFnLAor
ICAgICAgICAmU1ZHTmFtZXM6OnBhdGhUYWcsCisgICAgICAgICZTVkdOYW1lczo6cG9seWdvblRh
ZywKKyAgICAgICAgJlNWR05hbWVzOjpwb2x5bGluZVRhZywKKyAgICAgICAgJlNWR05hbWVzOjpy
ZWN0VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnN2Z1RhZywKKyAgICAgICAgJlNWR05hbWVzOjp0
ZXh0VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnVzZVRhZywKIAogICAgICAgICAvLyBOb3QgbGlz
dGVkIGluIHRoZSBkZWZpbml0aW9ucyBpcyB0aGUgY2xpcFBhdGggZWxlbWVudCwgdGhlIFNWRyBz
cGVjIHNheXMgdGhvdWdoOgogICAgICAgICAvLyBUaGUgImNsaXBQYXRoIiBlbGVtZW50IG9yIGFu
eSBvZiBpdHMgY2hpbGRyZW4gY2FuIHNwZWNpZnkgcHJvcGVydHkgImNsaXAtcGF0aCIuCiAgICAg
ICAgIC8vIFNvIHdlIGhhdmUgdG8gYWRkIGNsaXBQYXRoVGFnIGhlcmUsIG90aGVyd2hpc2UgY2xp
cC1wYXRoIG9uIGNsaXBQYXRoIHdpbGwgZmFpbC4KICAgICAgICAgLy8gKEFscmVhZHkgbWFpbGVk
IFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1dGlvbikKLSAgICAgICAgc190YWdMaXN0LmdldCgp
LmFkZChTVkdOYW1lczo6Y2xpcFBhdGhUYWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgJlNWR05h
bWVzOjpjbGlwUGF0aFRhZywKIAogICAgICAgICAvLyBOb3QgbGlzdGVkIGluIHRoZSBkZWZpbml0
aW9ucyBhcmUgdGhlIHRleHQgY29udGVudCBlbGVtZW50cywgdGhvdWdoIGZpbHRlci9jbGlwcGVy
L21hc2tlciBvbiB0c3Bhbi90ZXh0Ly4uIGlzIGFsbG93ZWQuCiAgICAgICAgIC8vIChBbHJlYWR5
IG1haWxlZCBTVkcgV0csIHdhaXRpbmcgZm9yIGEgc29sdXRpb24pCi0gICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRleHRQYXRoVGFnLT5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRyZWZUYWctPmxvY2FsTmFt
ZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dHNwYW5UYWctPmxv
Y2FsTmFtZSgpKTsKKyAgICAgICAgJlNWR05hbWVzOjphbHRHbHlwaFRhZywKKyAgICAgICAgJlNW
R05hbWVzOjp0ZXh0UGF0aFRhZywKKyAgICAgICAgJlNWR05hbWVzOjp0cmVmVGFnLAorICAgICAg
ICAmU1ZHTmFtZXM6OnRzcGFuVGFnLAogCiAgICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRl
ZmluaXRpb25zIGlzIHRoZSBmb3JlaWduT2JqZWN0IGVsZW1lbnQsIGJ1dCBjbGlwLXBhdGgKICAg
ICAgICAgLy8gaXMgYSBzdXBwb3J0ZWQgYXR0cmlidXRlLgotICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLT5sb2NhbE5hbWUoKSk7CisgICAgICAg
ICZTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZywKIAogICAgICAgICAvLyBFbGVtZW50cyB0aGF0
IHdlIGlnbm9yZSwgYXMgaXQgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4KICAgICAgICAgLy8gZGVm
cywgcGF0dGVybiwgc3dpdGNoIChGSVhNRTogTWFpbCBTVkcgV0cgYWJvdXQgdGhlc2UpCiAgICAg
ICAgIC8vIHN5bWJvbCAoaXMgY29udmVydGVkIHRvIGEgc3ZnIGVsZW1lbnQsIHdoZW4gcmVmZXJl
bmNlZCBieSB1c2UsIHdlIGNhbiBzYWZlbHkgaWdub3JlIGl0LikKLSAgICB9Ci0KLSAgICByZXR1
cm4gc190YWdMaXN0OworICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNldCA9IHRh
Z1NldCh0YWdzKTsKKyAgICByZXR1cm4gc2V0OwogfQogCiBzdGF0aWMgY29uc3QgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+JiBtYXJrZXJUYWdzKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+PiBzX3RhZ0xpc3Q7Ci0gICAgaWYgKHNfdGFnTGlzdC5n
ZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
bGluZVRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjpwYXRoVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnBvbHlnb25UYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0Lmdl
dCgpLmFkZChTVkdOYW1lczo6cG9seWxpbmVUYWctPmxvY2FsTmFtZSgpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gc190YWdMaXN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSB0YWdz
IHsKKyAgICAgICAgJlNWR05hbWVzOjpsaW5lVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnBhdGhU
YWcsCisgICAgICAgICZTVkdOYW1lczo6cG9seWdvblRhZywKKyAgICAgICAgJlNWR05hbWVzOjpw
b2x5bGluZVRhZywKKyAgICB9OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzZXQgPSB0YWdT
ZXQodGFncyk7CisgICAgcmV0dXJuIHNldDsKIH0KIAogc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiYgZmlsbEFuZFN0cm9rZVRh
Z3MoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4+IHNfdGFnTGlzdDsKLSAgICBpZiAoc190YWdM
aXN0LmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjphbHRHbHlwaFRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCku
YWRkKFNWR05hbWVzOjpjaXJjbGVUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6ZWxsaXBzZVRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWctPmxvY2FsTmFtZSgpKTsK
LSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy0+bG9jYWxO
YW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRh
Zy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpy
ZWN0VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OnRleHRUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChT
VkdOYW1lczo6dGV4dFBhdGhUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0Lmdl
dCgpLmFkZChTVkdOYW1lczo6dHJlZlRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xp
c3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0c3BhblRhZy0+bG9jYWxOYW1lKCkpOwotICAgIH0KLQot
ICAgIHJldHVybiBzX3RhZ0xpc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHRh
Z3MgeworICAgICAgICAmU1ZHTmFtZXM6OmFsdEdseXBoVGFnLAorICAgICAgICAmU1ZHTmFtZXM6
OmNpcmNsZVRhZywKKyAgICAgICAgJlNWR05hbWVzOjplbGxpcHNlVGFnLAorICAgICAgICAmU1ZH
TmFtZXM6OmxpbmVUYWcsCisgICAgICAgICZTVkdOYW1lczo6cGF0aFRhZywKKyAgICAgICAgJlNW
R05hbWVzOjpwb2x5Z29uVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLAorICAg
ICAgICAmU1ZHTmFtZXM6OnJlY3RUYWcsCisgICAgICAgICZTVkdOYW1lczo6dGV4dFRhZywKKyAg
ICAgICAgJlNWR05hbWVzOjp0ZXh0UGF0aFRhZywKKyAgICAgICAgJlNWR05hbWVzOjp0cmVmVGFn
LAorICAgICAgICAmU1ZHTmFtZXM6OnRzcGFuVGFnLAorICAgIH07CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHNldCA9IHRhZ1NldCh0YWdzKTsKKyAgICByZXR1cm4gc2V0OwogfQogCiBzdGF0
aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJp
bmc+JiBjaGFpbmFibGVSZXNvdXJjZVRhZ3MoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4+IHNf
dGFnTGlzdDsKLSAgICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZy0+bG9jYWxOYW1l
KCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpmaWx0ZXJUYWctPmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0dGVy
blRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
OjpyYWRpYWxHcmFkaWVudFRhZy0+bG9jYWxOYW1lKCkpOwotICAgIH0KLQotICAgIHJldHVybiBz
X3RhZ0xpc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHRhZ3MgeworICAgICAg
ICAmU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OmZpbHRl
clRhZywKKyAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuVGFnLAorICAgICAgICAmU1ZHTmFtZXM6
OnJhZGlhbEdyYWRpZW50VGFnLAorICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNl
dCA9IHRhZ1NldCh0YWdzKTsKKyAgICByZXR1cm4gc2V0OwogfQogCiBzdGF0aWMgaW5saW5lIFN0
cmluZyB0YXJnZXRSZWZlcmVuY2VGcm9tUmVzb3VyY2UoU1ZHRWxlbWVudCYgZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CmluZGV4IDAxYjc1ZTQ4N2FlNDUyZmJhNGRmNjkwOGU3MGNlNzlmNjQ4NTkyNDcuLjAzYTRmYmMz
M2I4YzhlMzgyMTQ0N2EyOTk3MWYwMTAwMmYxZjNmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjg4LDcgKzI4OCw3
IEBAIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c29ydGVkVGFibGVzKCkKICAgICAgICAgIk9wZXJhdGluZ0RhdGVzIl9zCiAgICAg
fTsKIAotICAgIHJldHVybiB7IHNvcnRlZFRhYmxlcy5kYXRhKCksIHNvcnRlZFRhYmxlcy5zaXpl
KCkgfTsKKyAgICByZXR1cm4gc29ydGVkVGFibGVzOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rl
ZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5oCmluZGV4IDhiNTg4ZGRlMWFkZGFlNGU3NTdjMDgxNWM5YzYw
OWZlZDgyYjE3MWMuLjFjOTM2OWFiZWZlMjgwMzMyZmZhNWEzMmMxZTkzZmRlMGI5NjY1NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hl
Y2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdXhpbGlhcnlQcm9jZXNzOwogCiBib29s
IGhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbigpOwogYm9vbCBoYXNQ
cm9oaWJpdGVkVXNhZ2VTdHJpbmdzKCk7Ci1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyaW5n
Jik7CitTcGFuPGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFp
bnNGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1J1bm5pbmdUZXN0KGNvbnN0IFN0
cmluZyYgYnVuZGxlSUQpOwogdm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpOwogYm9vbCBkb2VzQXBw
SGF2ZUlUUEVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
RGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KaW5kZXggYTgyY2E2ZDc3Y2U5ODcyOTkwNWYwMDEz
YWE3YjdhYTEzNGJlNjViOC4uZGQ1YTA4ZjYxMjQwYTNiNzExMjc3NzA1ZjE3Mjk2ZjEyMDJkYzgw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dz
ZXJDaGVja3MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lv
bkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29j
b2EvRW50aXRsZW1lbnRzLmg+CkBAIC01MCwyMCArNDksMTUgQEAgYm9vbCBpc1J1bm5pbmdUZXN0
KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCiAgICAgcmV0dXJuIGJ1bmRsZUlEID09ICJjb20uYXBw
bGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MgfHwgYnVuZGxlSUQgPT0gImNvbS5hcHBsZS5XZWJL
aXQuV2ViS2l0VGVzdFJ1bm5lciJfcyB8fCBidW5kbGVJRCA9PSAib3JnLndlYmtpdC5XZWJLaXRU
ZXN0UnVubmVyQXBwIl9zOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyaW5nJiBi
dW5kbGVJRCkKK1NwYW48Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5k
RG9tYWluc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKIHsKLSAgICBpZiAoYnVu
ZGxlSUQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgYXBwQm91bmREb21haW5MaXN0ID0gTWVtb3J5Q29tcGFjdExvb2t1
cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPj4gewotICAgICAgICB7ImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJf
cywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB7IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIjEy
Ny4wLjAuMSIpIH19LAotICAgIH07Ci0KLSAgICBhdXRvIGFwcEJvdW5kRG9tYWluSXRlciA9IGFw
cEJvdW5kRG9tYWluTGlzdC0+ZmluZChidW5kbGVJRCk7Ci0gICAgaWYgKGFwcEJvdW5kRG9tYWlu
SXRlciAhPSBhcHBCb3VuZERvbWFpbkxpc3QtPmVuZCgpKQotICAgICAgICByZXR1cm4gYXBwQm91
bmREb21haW5JdGVyLT52YWx1ZTsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KGJ1bmRsZUlEID09ICJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKSB7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBkb21haW5zID0gc3RkOjphcnJheSB7CisgICAgICAg
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lz
dHJhYmxlRG9tYWluU3RyaW5nKCIxMjcuMC4wLjEiX3MpLAorICAgICAgICB9OworICAgICAgICBy
ZXR1cm4gZG9tYWlucy5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKIH0KIAogI2lmIEFT
U0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZDk5
NzFlYmFhZjlhNjE4YTZjMWI0OTI1YTdkYmY1YjVkN2FhZmQwYy4uYjFhN2Y4NmI3NjI0Njc2ZTU4
MjMyZWVkOWI2NmEwMTI2N2I4ZDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQpAQCAtNTE5LDEyICs1MTksOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxp
emVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjphZGRUZXN0RG9tYWlucygpIGNvbnN0CiB7CiAgICAgaWYgKGFwcEJv
dW5kRG9tYWlucygpLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGJ1bmRsZUlEID0gV2ViQ29y
ZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7Ci0gICAgICAgIGF1dG8gYXBwQm91bmRE
b21haW5zVGVzdGluZyA9IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoYnVuZGxlSUQpOwotICAg
ICAgICBpZiAoYXBwQm91bmREb21haW5zVGVzdGluZykgewotICAgICAgICAgICAgZm9yIChhdXRv
JiBkb21haW4gOiAqYXBwQm91bmREb21haW5zVGVzdGluZykKLSAgICAgICAgICAgICAgICBhcHBC
b3VuZERvbWFpbnMoKS5hZGQoZG9tYWluKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IGFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV2ViQ29yZTo6YXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgYXBwQm91bmREb21haW5zKCkuYWRkKGRv
bWFpbik7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="473117"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447483</attachid>
            <date>2021-12-17 15:15:19 -0800</date>
            <delta_ts>2021-12-18 15:58:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234438-20211217151518.patch</filename>
            <type>text/plain</type>
            <size>88215</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhZGNhN2JkNDgzNWUxYjM3MGEzNWFj
MjkxYThiMDI0MjMzNjBkZTguLjhiZjFlODhjYzlmODhlZDgyMDNmNThjMjFmZDAyNDE3OWIzMDI5
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhc2ggdGFibGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBt
ZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Nv
cnRlZEFycmF5TWFwLmg6CisgICAgICAgIChXVEY6OlNvcnRlZEFycmF5TWFwPEFycmF5VHlwZT46
OmNvbnRhaW5zIGNvbnN0KTogQWRkZWQuIE1vcmUgZWxlZ2FudCB0aGFuIGNhbGxpbmcgdHJ5R2V0
IGFuZAorICAgICAgICB0cmVhdGluZyB0aGUgcG9pbnRlciBhcyBhIGJvb2xlYW4uCisgICAgICAg
IChXVEY6Om1ha2VPcHRpb25hbEZyb21Qb2ludGVyKTogTW92ZWQgaGVyZSBzbyBpdCBjYW4gYmUg
cmV1c2VkLiBNaWdodCByZW5hbWUgbGF0ZXIsIHNpbmNlIGl0J3MKKyAgICAgICAgb25seSB1c2Vk
IGluIGEgZmV3IHBsYWNlcy4KKwogMjAyMS0xMi0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgY3VzdG9tIGNvcHkoKSBtZXRob2QgZm9yIFJlZjxUPiB0
byBDcm9zc1RocmVhZENvcGllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhN2ZiYTU3OWFjNTQ1YzA5N2VmMDVi
ODcwNzAwNjU4YWI4NDE2ZDMuLmQzMmY0NWRjZWJjYjUzNTg2N2ZlNzJmN2U2Y2VhYmQ0M2I1Mjkz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTYgQEAKKzIwMjEtMTItMTcgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEhhc2ggdGFibGVzLCByZWFkL3dyaXRlLCBh
bmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5IGh1cnQgcGVy
Zm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpidWNrZXRNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZE1lZGlhTUlNRVR5cGUpOiBNb3ZlZCB0aGUgY29kZSBmcm9tIGJ1Y2tldE1JTUVU
eXBlcyBpbiBoZXJlLgorICAgICAgICBVc2UgYSBTb3J0ZWRBcnJheVNldCBmb3IgYnVja2V0TUlN
RVR5cGVzLCB3aGljaCBzaG91bGQgYmUgc2ltaWxhciBpbiBwZXJmb3JtYW5jZQorICAgICAgICBh
bmQgdXNlcyBubyBoZWFwIG9yIHJlYWQvd3JpdGUgbWVtb3J5LgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnBvcHVwVmFsdWUgY29uc3QpOiBVc2UgYSBsb29wIHRvIGNoZWNrIHRo
ZSA1IHZhbGlkCisgICAgICAgIHZhbHVlcyBoZXJlIGluc3RlYWQgb2YgbWFraW5nIGEgSGFzaFNl
dC4gU2hvdWxkIGJlIHNpbWlsYXIgaW4gcGVyZm9ybWFuY2UgYW5kCisgICAgICAgIHVzZSBubyBo
ZWFwIG9yIHJlYWQvd3JpdGUgbWVtb3J5LiBBbHNvIHJlbW92ZXMgY2FsbCB0byBjb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSwKKyAgICAgICAgd2hpY2ggd2lsbCBhbHNvIGhlbHAgcGVyZm9ybWFuY2Ug
YW5kIG1lbW9yeSB1c2UgYSB0aW55IGJpdCBpbiBzb21lIGNhc2VzLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xl
IGNvbnN0KTogVXNlCisgICAgICAgIGRlY2x0eXBlIHRvIG1ha2UgdGhpcyBkZWNsYXJhdGlvbiBz
aW1wbGVyIGFuZCBzaG9ydGVyLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50
QXR0cmlidXRlKTogVXNlIGRlY2x0eXBlIGFuZCByZWZlcmVuY2VzCisgICAgICAgIGluc3RlYWQg
b2YgcG9pbnRlcnMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gYSBsaXR0bGUgY2xlYW5lci4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkF0dGFjaEF1dGhv
clNoYWRvd1Jvb3QpOiBVc2UgY29uc3RleHByIHNvIHRoZSB0YWcgbGlzdCBoZXJlIGRvZXMKKyAg
ICAgICAgbm90IHVzZSBhbnkgcmVhZC93cml0ZSBtZW1vcnkuCisKKyAgICAgICAgKiBkb20vbWFr
ZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50RmFjdG9yeUNwcEZpbGUpOiBSZW1vdmVkIHRoZSB1
bm5lY2Vzc2FyeSBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBNYXBFbnRyeQorICAgICAgICBzdHJ1Y3Rz
LiBVc2UgZGVjbHR5cGUgc28gd2UgY2FuIG1ha2UgdGhlIHRhYmxlcyBjb25zdGV4cHIgc28gdGhl
eSBkbyBub3QgdXNlCisgICAgICAgIGFueSByZWFkL3dyaXRlIG1lbW9yeS4KKyAgICAgICAgKHBy
aW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvaGliaXRl
ZFBhcmFncmFwaENoaWxkKTogQWRkZWQgYSByZXNlcnZlSW5pdGlhbENhcGFjaXR5LCB3aGljaAor
ICAgICAgICBjb3VsZCBtYWtlIHRoZSBoYXNoIHRhYmxlIGhlcmUgdXNlIGEgbGl0dGxlIGxlc3Mg
bWVtb3J5LgorCisgICAgICAgICogaHRtbC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaWVsZE5hbWVNYXApOiBEZWxldGVkLiBSZXBsYWNlZCB3aXRoIGEgU29ydGVkQXJyYXlNYXAs
IHdoaWNoIGlzCisgICAgICAgIGVudGlyZWx5IG1hZGUgb3V0IG9mIGNvbnN0ZXhwciBvYmpjdHMg
c28gZG9lcyBub3QgdXNlIGhlYXAgb3IgcmVhZC93cml0ZSBtZW1vcnkuCisgICAgICAgIChXZWJD
b3JlOjp0b0F1dG9maWxsRmllbGROYW1lKTogVXBkYXRlZCB0byB1c2UgU29ydGVkQXJyYXlNYXAg
ZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVB
dHRyaWJ1dGUpOiBBZGRlZCBhIHJlc2VydmVJbml0aWFsQ2FwYWNpdHksCisgICAgICAgIHdoaWNo
IGNvdWxkIG1ha2UgdGhlIGhhc2ggdGFibGUgaGVyZSB1c2UgYSBsaXR0bGUgbGVzcyBtZW1vcnku
CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSk6IERpdHRvLgorCisgICAgICAgICog
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b3VjaEV2ZW50
UmVnaW9uQ29sb3JzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOiBVc2UgU29ydGVkQXJyYXlNYXAgYW5kCisgICAg
ICAgIHNvbWUgbGFtYmRhcyB0byBtYWtlIHRoaXMgY29kZSB0aWdodGVyIGFuZCBlYXNpZXIgdG8g
cmVhZC4KKworICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc3RyaWN0ZWRNYXJrTmFtZXNUb05hdmlnYXRpb25UaW1pbmdGdW5jdGlv
bk1hcCk6IERlbGV0ZWQuIFVzZQorICAgICAgICBhIFNvcnRlZEFycmF5TWFwIGluc3RlYWQsIHdo
aWNoIHNob3VsZCBiZSBzaW1pbGFyIGluIHBlcmZvcm1hbmNlIGFuZCB1c2VzIG5vIGhlYXAKKyAg
ICAgICAgb3IgcmVhZC93cml0ZSBtZW1vcnkuCisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVk
TWFya0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzUmVzdHJpY3RlZE1h
cmtOYW1lTm9uTWFpblRocmVhZCk6IERlbGV0ZWQuIFRoaXMgaXMgbm93IHNhZmUgdG8gZG8gb24K
KyAgICAgICAgYW55IHRocmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVXNlclRp
bWluZzo6aXNSZXN0cmljdGVkTWFya05hbWUpOiBVc2UgdGhlIFNvcnRlZEFycmF5TWFwLAorICAg
ICAgICB3aGljaCBoYXMgdGhlIGJlbmVmaXQgb2YgcmVsYXhpbmcgdGhlIHRocmVhZCByZXN0cmlj
dGlvbnM7IHRoaXMgaXMgbm93IHNhZmUgdG8KKyAgICAgICAgY2FsbCBvbiBhbnkgdGhyZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VVc2VyVGltaW5nOjpjb252ZXJ0TWFya1RvVGlt
ZXN0YW1wIGNvbnN0KTogVXBkYXRlZCB0byB1c2UKKyAgICAgICAgdGhlIFNvcnRlZEFycmF5TWFw
LiBUaGVyZSBtYXkgYmUgc29tZSBhZGRpdGlvbmFsIHNpbXBsaWZpY2F0aW9uIHBvc3NpYmxlIG5v
dworICAgICAgICB0aGF0IHRoZSBtYXJrIGZ1bmN0aW9ucyBtYXAgY2FuIGJlIHVzZWQgaW4gYW55
IHRocmVhZCwgYnV0IEkgd2Fzbid0IHN1cmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUmVt
b3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZCk6IFVzZSBtYWtlT3B0aW9uYWxGcm9tUG9pbnRl
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGggY29uc3Qp
OiBVc2UgYSBTb3J0ZWRBcnJheVNldCwKKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIHNpbWlsYXIg
aW4gcGVyZm9ybWFuY2UgYW5kIHVzZXMgbm8gaGVhcCBvciByZWFkL3dyaXRlIG1lbW9yeQorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYWtlT3B0aW9uYWxGcm9tUG9pbnRlcik6IERlbGV0ZWQuIE1vdmVkIHRvIFNv
cnRlZEFycmF5TWFwLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlT3B0aW9uYWxGcm9tUG9pbnRlcik6IERlbGV0
ZWQuIE1vdmVkIHRvIFNvcnRlZEFycmF5TWFwLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFWQXNzZXRNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUpOiBVcGRhdGVk
IGZvciBmdW5jdGlvbiBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
OgorICAgICAgICBUd2Vha2VkIHVzZSBvZiBVTlVTRURfUEFSQU0gYSBiaXQgYWNyb3NzIHRoZSBm
aWxlLCByZWx5aW5nIG9uIG9taXR0ZWQgbmFtZXMgaW5zdGVhZC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1
bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKTogVXNlIGEgY29uc3RleHByIGFycmF5IHJhdGhlciB0aGFu
IEhhc2hTZXQsCisgICAgICAgIG9uIHNvbWV0aGluZyBqdXN0IGl0ZXJhdGluZyB0aGlzLCBub3Qg
dXNpbmcgaXQgYXMgYSBzZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBlcyk6IFJlbmFtZWQgZnJvbSB3ZWJtTUlNRVR5
cGVzLAorICAgICAgICBjaGFuZ2VkIHRvIHJldHVybiBhIFNwYW4gc28gd2UgZG9uJ3QgaGF2ZSB0
byBhbGxvY2F0ZSBhIEhhc2hTZXQsIHNpbmNlIGNhbGxlcnMKKyAgICAgICAgc2ltcGx5IGl0ZXJh
dGUgdGhpcywgYW5kIGRvbid0IGRvIHNldCBvcGVyYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNTdXBwb3J0ZWRWaWRlb0NvZGVjKTogUmVwbGFjZWQg
dGhlCisgICAgICAgIHN1cHBvcnRlZFZpZGVvQ29kZWNzIHdpdGggdGhpcy4gV2UgZG9uJ3QgbmVl
ZCBhIEhhc2hTZXQgdG8gY2hlY2sgZm9yIHR3byB2YWx1ZXMsCisgICAgICAgIGFuZCB0aGlzIHNo
b3VsZCBiZSBmYXN0ZXIgYW5kIHVzZSBsZXNzIG1lbW9yeS4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzU3VwcG9ydGVkQXVkaW9Db2RlYyk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDog
VXBkYXRlZCBmb3IgdGhlIGNoYW5nZXMgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0YWdTZXQpOiBBZGRlZCB0aGlz
IGhlbHBlciB0byBtYWtlIHRoZSBjb2RlIGluIHRoZSBmdW5jdGlvbnMgYmVsb3cgbGVzcworICAg
ICAgICByZXBldGl0aXZlLgorICAgICAgICAoV2ViQ29yZTo6Y2xpcHBlckZpbHRlck1hc2tlclRh
Z3MpOiBVc2UgYSBjb25zdGV4cHIgYXJyYXkgaW5zdGVhZCBvZiBtYW55IHNlcGFyYXRlCisgICAg
ICAgIGNhbGxzIHRvIEhhc2hTZXQ6OmFkZCB0byBjb25zdHJ1Y3QgdGhlIHNldC4KKyAgICAgICAg
KFdlYkNvcmU6Om1hcmtlclRhZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGxBbmRT
dHJva2VUYWdzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjaGFpbmFibGVSZXNvdXJjZVRh
Z3MpOiBEaXR0by4KKwogMjAyMS0xMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFdpZHRoSXRlcmF0b3I6OmFwcGx5Q1NTVmlz
aWJpbGl0eVJ1bGVzKCkgdG8gYmUgYSBsaXR0bGUgbW9yZSBlbGVnYW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNk
NzU5NWY2OTBmZWZhYjQzYmM0MDMxZWUwYzhjMTU2YzdkZGY5MDcuLmVkOWZjNGYyZWYyOTNmOTVm
YTMzMTQ2YzY0NjAyZTViZWRiMzBkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEt
MTItMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzb3J0ZWRUYWJsZXMpOiBTaW1wbGlmeSB1bm5l
Y2Vzc2FyaWx5IGNvbXBsaWNhdGVkCisgICAgICAgIGV4cHJlc3Npb24gdG8gaW5pdGlhbGl6ZSB0
aGUgU3Bhbi4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNr
cy5oOiBSZXR1cm4gYSBTcGFuIGluc3RlYWQgb2YgYW4gb3B0aW9uYWwgVmVjdG9yLgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbToKKyAgICAgICAgKFdl
YktpdDo6YXBwQm91bmREb21haW5zRm9yVGVzdGluZyk6IFJlbmFtZWQgZnJvbSBnZXRBcHBCb3Vu
ZERvbWFpbnNUZXN0aW5nIHRvIGZpdCBXZWJLaXQKKyAgICAgICAgY29kaW5nIHN0eWxlIGEgYml0
IGJldHRlciwgYW5kIGJlIGEgbGl0dGxlIG1vcmUgZ3JhbW1hdGljYWwuIFJlbW92ZWQgYW4gdW4t
bmVlZGVkIEhhc2hNYXAKKyAgICAgICAgdGhhdCBoYWQgb25seSBhIHNpbmdsZSBlbnRyeSwgdXNl
ZCBhIE5ldmVyRGVzdHJveWVkIHN0ZDo6YXJyYXkgcmF0aGVyIHRoYW4gYSBWZWN0b3Igc28gd2UK
KyAgICAgICAgZG9uJ3QgdXNlIGFueSBoZWFwIG9yIHJlYWQvd3JpdGUgbWVtb3J5LgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YWRkVGVzdERvbWFpbnMgY29u
c3QpOiBSZXdyaXRlIHRvIHVzZSB0aGUgZnVuY3Rpb24gYWJvdmUuCisgICAgICAgIEZld2VyIHNw
ZWNpYWwgY2FzZXMgbmVlZGVkIHNpbmNlIHdlIGFyZSBqdXN0IHVzaW5nIGFuIGVtcHR5IFNwYW4s
IHdoaWNoIGVmZmljaWVudGx5CisgICAgICAgIGRvZXMgbm90aGluZywgc28gbm8gbmVlZCB0byBo
YXZlIGEgZGlzdGluY3QgbnVsbCB2YWx1ZS4KKwogMjAyMS0xMi0xNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBBUEk6Ok9iamVj
dDo6VHlwZTo6QnVuZGxlUGFnZUdyb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0
ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAppbmRleCA5YjQ4
YmVlZmE3NGRlNDkyNWY5MTdiN2M2MTI5NGY3MDhjMTRiNjYzLi5iOWI2ZjQ4ZjliYWIxMDcwNmI2
ZjBkM2FjY2VkMGE3ZjFhN2M5YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRB
cnJheU1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKQEAgLTUxLDYg
KzUxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFZhbHVlVHlwZSA9IHR5cGVuYW1lIEVsZW1lbnRU
eXBlOjpzZWNvbmRfdHlwZTsKIAogICAgIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcChjb25zdCBB
cnJheVR5cGUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4gYm9vbCBjb250
YWlucyhjb25zdCBLZXlBcmd1bWVudCYpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRvIG1hdGNo
IEhhc2hNYXAgaW50ZXJmYWNlIGJldHRlciwgd291bGQgYmUgbmljZSB0byBnZXQgdGhlIGRlZmF1
bHQgdmFsdWUgZnJvbSB0cmFpdHMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+
IFZhbHVlVHlwZSBnZXQoY29uc3QgS2V5QXJndW1lbnQmLCBjb25zdCBWYWx1ZVR5cGUmIGRlZmF1
bHRWYWx1ZSA9IHsgfSkgY29uc3Q7CkBAIC03Nyw3ICs3OCw3IEBAIHN0cnVjdCBDb21wYXJhYmxl
U3RyaW5nVmlldyB7CiAKIC8vIE5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCBtZWFucyBubyBj
aGFyYWN0ZXJzIHdpdGggdGhlIDB4MjAgYml0IHNldC4KIC8vIFRoYXQgbWVhbnMgdGhlIHN0cmlu
Z3MgY2FuJ3QgaW5jbHVkZSBjb250cm9sIGNoYXJhY3RlcnMsIHVwcGVyY2FzZSBsZXR0ZXJzLCBv
ciBhbnkgb2YgQFtcXV8uCi1lbnVtIGNsYXNzIEFTQ0lJU3Vic2V0IHsgQWxsLCBOb1VwcGVyY2Fz
ZUxldHRlcnMsIE5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCB9OworZW51bSBjbGFzcyBBU0NJ
SVN1YnNldCA6IHVpbnQ4X3QgeyBBbGwsIE5vVXBwZXJjYXNlTGV0dGVycywgTm9VcHBlcmNhc2VM
ZXR0ZXJzT3B0aW1pemVkIH07CiAKIHRlbXBsYXRlPEFTQ0lJU3Vic2V0PiBzdHJ1Y3QgQ29tcGFy
YWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbCB7CiAgICAgQVNDSUlMaXRlcmFsIGxpdGVyYWw7CkBAIC0x
ODksNiArMTkwLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJndW1lbnQ+IGlubGluZSBhdXRvIFNvcnRlZEFyCiAgICAgcmV0dXJuIHJlc3Vs
dCA/ICpyZXN1bHQgOiBkZWZhdWx0VmFsdWU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGlubGluZSBib29sIFNvcnRlZEFy
cmF5TWFwPEFycmF5VHlwZT46OmNvbnRhaW5zKGNvbnN0IEtleUFyZ3VtZW50JiBrZXkpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRyeUdldChrZXkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJh
eVR5cGU+IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldDxBcnJheVR5cGU+OjpTb3J0ZWRBcnJheVNl
dChjb25zdCBBcnJheVR5cGUmIGFycmF5KQogICAgIDogbV9hcnJheSB7IGFycmF5IH0KIHsKQEAg
LTM2NSw2ICszNzEsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChQYWNrZWRBU0NJSUxvd2VyQ29kZXMKICAgICByZXR1cm4gYS52
YWx1ZSgpIDwgYi52YWx1ZSgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+IGNv
bnN0ZXhwciBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWFrZU9wdGlvbmFsRnJvbVBvaW50ZXIo
Y29uc3QgVmFsdWVUeXBlKiBwb2ludGVyKQoreworICAgIGlmICghcG9pbnRlcikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gKnBvaW50ZXI7Cit9CisKIH0KIAogLy8g
RklYTUU6IFJlbmFtZSB0aGUgQ29tcGFyYWJsZSBhbmQgUGFja2VkIHR5cGVzIGZvciBjbGFyaXR5
IGFuZCB0byBhbGlnbiB0aGVtIGJldHRlciB3aXRoIGVhY2ggb3RoZXIuCkBAIC0zNzYsMyArMzg5
LDQgQEAgdXNpbmcgV1RGOjpDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWw7CiB1c2luZyBXVEY6OlBh
Y2tlZEFTQ0lJTG93ZXJDb2RlczsKIHVzaW5nIFdURjo6U29ydGVkQXJyYXlNYXA7CiB1c2luZyBX
VEY6OlNvcnRlZEFycmF5U2V0OwordXNpbmcgV1RGOjptYWtlT3B0aW9uYWxGcm9tUG9pbnRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggNWI2ZjQwZGFmYjFjZTNkMmI0YWEyYzdj
MjAxMjAwMTIwYzdjYzY0YS4uZGZiOWJkYWM1NjZiNzk2NWJhYWNmZTBjZmVlNzA2MTQzOGIxOTVi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTQzLDM2ICs0MywzMyBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
b3J0ZWRBcnJheU1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgYnVja2V0TUlN
RVR5cGVzKCkKK3N0YXRpYyBib29sIGlzVmFsaWRNZWRpYU1JTUVUeXBlKGNvbnN0IENvbnRlbnRU
eXBlJiBjb250ZW50VHlwZSkKIHsKICAgICAvLyBBICJidWNrZXQiIE1JTUUgdHlwZXMgaXMgb25l
IHdob3NlIGNvbnRhaW5lciB0eXBlIGRvZXMgbm90IHVuaXF1ZWx5IHNwZWNpZnkgYSBjb2RlYy4K
ICAgICAvLyBTZWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MzgxCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNl
dDxTdHJpbmc+PiBidWNrZXRNSU1FVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4g
ewotICAgICAgICAiYXVkaW8vM2dwcCJfcywKLSAgICAgICAgInZpZGVvLzNncHAiX3MsCi0gICAg
ICAgICJhdWRpby8zZ3BwMiJfcywKLSAgICAgICAgInZpZGVvLzNncHAyIl9zLAotICAgICAgICAi
YXVkaW8vbXA0Il9zLAotICAgICAgICAidmlkZW8vbXA0Il9zLAotICAgICAgICAiYXBwbGljYXRp
b24vbXA0Il9zLAotICAgICAgICAidmlkZW8vcXVpY2t0aW1lIl9zLAotICAgICAgICAiYXBwbGlj
YXRpb24vbXAyMSJfcywKLSAgICAgICAgImF1ZGlvL3ZuZC5hcHBsZS5tcGVndXJsIl9zLAotICAg
ICAgICAidmlkZW8vdm5kLmFwcGxlLm1wZWd1cmwiX3MsCi0gICAgICAgICJhdWRpby9vZ2ciX3Ms
Ci0gICAgICAgICJ2aWRlby9vZ2ciX3MsCi0gICAgICAgICJ2aWRlby93ZWJtIl9zLAotICAgICAg
ICAiYXVkaW8vd2VibSJfcywKLSAgICB9KTsKLSAgICByZXR1cm4gYnVja2V0TUlNRVR5cGVzOwot
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBidWNrZXRNSU1F
VHlwZUFycmF5W10gPSB7CisgICAgICAgICJhcHBsaWNhdGlvbi9tcDIxIiwKKyAgICAgICAgImFw
cGxpY2F0aW9uL21wNCIsCisgICAgICAgICJhdWRpby8zZ3BwIiwKKyAgICAgICAgImF1ZGlvLzNn
cHAyIiwKKyAgICAgICAgImF1ZGlvL21wNCIsCisgICAgICAgICJhdWRpby9vZ2ciLAorICAgICAg
ICAiYXVkaW8vdm5kLmFwcGxlLm1wZWd1cmwiLAorICAgICAgICAiYXVkaW8vd2VibSIsCisgICAg
ICAgICJ2aWRlby8zZ3BwIiwKKyAgICAgICAgInZpZGVvLzNncHAyIiwKKyAgICAgICAgInZpZGVv
L21wNCIsCisgICAgICAgICJ2aWRlby9vZ2ciLAorICAgICAgICAidmlkZW8vcXVpY2t0aW1lIiwK
KyAgICAgICAgInZpZGVvL3ZuZC5hcHBsZS5tcGVndXJsIiwKKyAgICAgICAgInZpZGVvL3dlYm0i
LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBidWNrZXRNSU1F
VHlwZXMgeyBidWNrZXRNSU1FVHlwZUFycmF5IH07CiAKLXN0YXRpYyBib29sIGlzVmFsaWRNZWRp
YU1JTUVUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKLXsKICAgICAvLyAyLjEu
NC4gTUlNRSB0eXBlcwogICAgIC8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vbWVkaWEtY2FwYWJp
bGl0aWVzLyN2YWxpZC1tZWRpYS1taW1lLXR5cGUKICAgICAvLyBBIHZhbGlkIG1lZGlhIE1JTUUg
dHlwZSBpcyBhIHN0cmluZyB0aGF0IGlzIGEgdmFsaWQgTUlNRSB0eXBlIHBlciBbbWltZXNuaWZm
XS4gSWYgdGhlIE1JTUUgdHlwZSBkb2VzCkBAIC04NCw3ICs4MSw3IEBAIHN0YXRpYyBib29sIGlz
VmFsaWRNZWRpYU1JTUVUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSkKICAgICBh
dXRvIGNvZGVjcyA9IGNvbnRlbnRUeXBlLmNvZGVjcygpOwogCiAgICAgLy8gRklYTUU6IFRoZSBz
cGVjIHJlcXVpcmVzIHRoYXQgdGhlICJjb2RlY3MiIHBhcmFtZXRlciBpcyB0aGUgb25seSBwYXJh
bWV0ZXIgcHJlc2VudC4KLSAgICBpZiAoYnVja2V0TUlNRVR5cGVzKCkuY29udGFpbnMoY29udGVu
dFR5cGUuY29udGFpbmVyVHlwZSgpKSkKKyAgICBpZiAoYnVja2V0TUlNRVR5cGVzLmNvbnRhaW5z
KGNvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKSkpCiAgICAgICAgIHJldHVybiBjb2RlY3Muc2l6
ZSgpID09IDE7CiAgICAgcmV0dXJuICFjb2RlY3Muc2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggYTc5
ODc0ZDFjOGU1ZjhlN2IxN2NlYjBiZDhkMWIyZThkZmU2YzZlMS4uMWRjY2Q4NmFiYTIzOWNkOTNk
MTAyZTBmYjQ5MjYyNmU1ZmI0OWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC0yODQy
LDI5ICsyODQxLDI4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNIYXNQb3B1
cCgpIGNvbnN0CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpwb3B1cFZhbHVlKCkgY29u
c3QKIHsKLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExvb2t1
cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWRQb3B1cFZhbHVlcyhzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJtZW51Il9zLCAibGlzdGJveCJfcywg
InRyZWUiX3MsICJncmlkIl9zLCAiZGlhbG9nIl9zLAotICAgIH0pOwotCi0gICAgYXV0byBoYXNQ
b3B1cCA9IGdldEF0dHJpYnV0ZShhcmlhX2hhc3BvcHVwQXR0cikuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKLSAgICBpZiAoaGFzUG9wdXAuaXNOdWxsKCkgfHwgaGFzUG9wdXAuaXNFbXB0eSgp
KSB7CisgICAgYXV0byYgaGFzUG9wdXAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oYXNwb3B1cEF0dHIp
OworICAgIGlmIChoYXNQb3B1cC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSW4gQVJJQSAxLjEs
IHRoZSBpbXBsaWNpdCB2YWx1ZSBmb3IgY29tYm9ib3ggYmVjYW1lICJsaXN0Ym94LiIKICAgICAg
ICAgaWYgKGlzQ29tYm9Cb3goKSB8fCBoYXNEYXRhbGlzdCgpKQotICAgICAgICAgICAgcmV0dXJu
ICJsaXN0Ym94IjsKLSAgICAgICAgcmV0dXJuICJmYWxzZSI7CisgICAgICAgICAgICByZXR1cm4g
Imxpc3Rib3giX3M7CisgICAgICAgIHJldHVybiAiZmFsc2UiX3M7CiAgICAgfQogCi0gICAgaWYg
KGFsbG93ZWRQb3B1cFZhbHVlcy0+Y29udGFpbnMoaGFzUG9wdXApKQotICAgICAgICByZXR1cm4g
aGFzUG9wdXA7CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHsgIm1lbnUiX3MsICJsaXN0Ym94Il9z
LCAidHJlZSJfcywgImdyaWQiX3MsICJkaWFsb2ciX3MgfSkgeworICAgICAgICAvLyBGSVhNRTog
U2hvdWxkIGZpeCBhbWJpZ3VpdHkgc28gd2UgZG9uJ3QgaGF2ZSB0byB3cml0ZSAiY2hhcmFjdGVy
cyIsIGJ1dCBhbHNvIGRvbid0IGNyZWF0ZS9kZXN0cm95IGEgU3RyaW5nIHdoZW4gcGFzc2luZyBh
biBBU0NJSUxpdGVyYWwgdG8gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoaGFzUG9wdXAsIHZhbHVlLmNoYXJhY3RlcnMoKSkpCisgICAg
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogCiAgICAgLy8gYXJpYS1oYXNwb3B1cCBzcGVj
aWZpY2F0aW9uIHN0YXRlcyB0aGF0IHRydWUgbXVzdCBiZSB0cmVhdGVkIGFzIG1lbnUuCi0gICAg
aWYgKGhhc1BvcHVwID09ICJ0cnVlIikKLSAgICAgICAgcmV0dXJuICJtZW51IjsKKyAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaGFzUG9wdXAsICJ0cnVlIikpCisgICAgICAg
IHJldHVybiAibWVudSJfczsKIAogICAgIC8vIFRoZSBzcGVjIHN0YXRlcyB0aGF0ICJVc2VyIGFn
ZW50cyBtdXN0IHRyZWF0IGFueSB2YWx1ZSBvZiBhcmlhLWhhc3BvcHVwIHRoYXQgaXMgbm90CiAg
ICAgLy8gaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMsIGluY2x1ZGluZyBh
biBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSB2YWx1ZQogICAgIC8vIGZhbHNlIGhhZCBiZWVuIHBy
b3ZpZGVkLiIKLSAgICByZXR1cm4gImZhbHNlIjsKKyAgICByZXR1cm4gImZhbHNlIl9zOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0RhdGFsaXN0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IDMwNmNhMzc1ZTEyYjA1MzNkMGNkMjc5ODQ0ODU4ZmVjNjlhNzcxNDcu
LjZlNWNiMTViMmIyODg1Nzk0MTVmZTQ2NTA5OWQ4OWFjZmJkYzg2YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMzIxNCw3ICszMjE0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0CiAgICAgLy8gdGhvc2UgY2hp
bGQgZWxlbWVudHMgYXJlIGFsc28gcHJlc2VudGF0aW9uYWwuIEZvciBleGFtcGxlLCA8bGk+IGJl
Y29tZXMgcHJlc2VudGF0aW9uYWwgZnJvbSA8dWw+LgogICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1dBSS9QRi9hcmlhL2NvbXBsZXRlI3ByZXNlbnRhdGlvbgogCi0gICAgU3BhbjxMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgSFRNTFF1YWxpZmllZE5hbWU+KiBjb25zdD4gcGFyZW50VGFnczsKKyAg
ICBTcGFuPGRlY2x0eXBlKGFUYWcpKiBjb25zdD4gcGFyZW50VGFnczsKICAgICBzd2l0Y2ggKHJv
bGVWYWx1ZSgpKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlcjogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmMmM2ODQ0ZWU3
MGFhZTQyY2RkMTAwMmI1YmIyZGVkODRkNzYyOTAwLi5jMDgzNzM4ZTRmZTFkNjU5MTM0YmJlMTJi
NWQ0OWUyYzkwNjFiNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNTIxMCwxOCArNTIxMCwxOCBAQCBzdWIgR2VuZXJh
dGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZQogICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJIVE1MTmFtZXMuaCIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInZvaWQgJHtjbGFz
c05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpPiYgZnVuY3Rp
b24pXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBhaXI8TGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiwgY29uc3QgQXRvbVN0cmluZyBFdmVudE5hbWVzOjoq
PiB0YWJsZVtdID0ge1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjpwYWlyPGRlY2x0eXBlKEhUTUxOYW1lczo6YWx0QXR0cikmLCBjb25zdCBB
dG9tU3RyaW5nIEV2ZW50TmFtZXM6Oio+IHRhYmxlW10gPSB7XG4iKTsKICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIgJiYgKCFkZWZpbmVkICRldmVu
dEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0ZU5hbWUgfHwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV2ZW50SGFuZGxlckV4dGVuZGVkQXR0cmlidXRlTmFtZX0pKSB7CiAgICAgICAg
ICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBt
eSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlU2hvcnRFdmVudE5hbWUoJGF0dHJp
YnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHsgJkhUTUxO
YW1lczo6JHthdHRyaWJ1dGVOYW1lfUF0dHIsICZFdmVudE5hbWVzOjoke2V2ZW50TmFtZX0gfSxc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB7IEhUTUxOYW1l
czo6JHthdHRyaWJ1dGVOYW1lfUF0dHIsICZFdmVudE5hbWVzOjoke2V2ZW50TmFtZX0gfSxcbiIp
OwogICAgICAgICB9CiAgICAgfQogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9O1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3Jl
OjpldmVudE5hbWVzKCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yIChh
dXRvJiBuYW1lcyA6IHRhYmxlKVxuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBmdW5jdGlvbihuYW1lcy5maXJzdC0+Z2V0KCkubG9jYWxOYW1lKCksIGV2ZW50TmFtZXMuKm5h
bWVzLnNlY29uZCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGZ1bmN0
aW9uKG5hbWVzLmZpcnN0LmdldCgpLmxvY2FsTmFtZSgpLCBldmVudE5hbWVzLipuYW1lcy5zZWNv
bmQpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDRiMzk0NWViY2EwNjljOWIwNDlkMjJmN2YyMTgwYTU2N2Q1OGJm
YmUuLmFhNjUzNjA0NzkyODg3MTJlMjcyY2YxYjk3N2U2MmIyZmI1M2UzMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTI0ODYsMzEgKzI0ODYsMzEgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVT
aGFkb3dSb290KCkKIAogc3RhdGljIGJvb2wgY2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlD
b21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4+IHRhZ05hbWVzID0g
W10gewotICAgICAgICBzdGF0aWMgY29uc3QgSFRNTFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhZ0xp
c3RbXSA9IHsKLSAgICAgICAgICAgICZhcnRpY2xlVGFnLmdldCgpLAotICAgICAgICAgICAgJmFz
aWRlVGFnLmdldCgpLAotICAgICAgICAgICAgJmJsb2NrcXVvdGVUYWcuZ2V0KCksCi0gICAgICAg
ICAgICAmYm9keVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZkaXZUYWcuZ2V0KCksCi0gICAgICAg
ICAgICAmZm9vdGVyVGFnLmdldCgpLAotICAgICAgICAgICAgJmgxVGFnLmdldCgpLAotICAgICAg
ICAgICAgJmgyVGFnLmdldCgpLAotICAgICAgICAgICAgJmgzVGFnLmdldCgpLAotICAgICAgICAg
ICAgJmg0VGFnLmdldCgpLAotICAgICAgICAgICAgJmg1VGFnLmdldCgpLAotICAgICAgICAgICAg
Jmg2VGFnLmdldCgpLAotICAgICAgICAgICAgJmhlYWRlclRhZy5nZXQoKSwKLSAgICAgICAgICAg
ICZtYWluVGFnLmdldCgpLAotICAgICAgICAgICAgJm5hdlRhZy5nZXQoKSwKLSAgICAgICAgICAg
ICZwVGFnLmdldCgpLAotICAgICAgICAgICAgJnNlY3Rpb25UYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmc3BhblRhZy5nZXQoKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0YWdOYW1lcyA9IFtd
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHRhZ0xpc3QgeworICAgICAg
ICAgICAgJmFydGljbGVUYWcsCisgICAgICAgICAgICAmYXNpZGVUYWcsCisgICAgICAgICAgICAm
YmxvY2txdW90ZVRhZywKKyAgICAgICAgICAgICZib2R5VGFnLAorICAgICAgICAgICAgJmRpdlRh
ZywKKyAgICAgICAgICAgICZmb290ZXJUYWcsCisgICAgICAgICAgICAmaDFUYWcsCisgICAgICAg
ICAgICAmaDJUYWcsCisgICAgICAgICAgICAmaDNUYWcsCisgICAgICAgICAgICAmaDRUYWcsCisg
ICAgICAgICAgICAmaDVUYWcsCisgICAgICAgICAgICAmaDZUYWcsCisgICAgICAgICAgICAmaGVh
ZGVyVGFnLAorICAgICAgICAgICAgJm1haW5UYWcsCisgICAgICAgICAgICAmbmF2VGFnLAorICAg
ICAgICAgICAgJnBUYWcsCisgICAgICAgICAgICAmc2VjdGlvblRhZywKKyAgICAgICAgICAgICZz
cGFuVGFnCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5I
b29kSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAgICAgIHNldC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemVvZih0YWdMaXN0KSk7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IHRhZ0xp
c3QpCi0gICAgICAgICAgICBzZXQuYWRkKG5hbWUtPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
IHNldC5hZGQobmFtZS0+Z2V0KCkubG9jYWxOYW1lKCkpOwogICAgICAgICByZXR1cm4gc2V0Owog
ICAgIH0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA5YjI0N2ZiNzQ3OTNkYzVl
MTA1ODhkNmNkZTBhZWEyYWFhNzhiMjk4Li42YTE3NTBjYjY3ZjMxMDNkYWVjYmI0MzZjMGNlMmZk
MjUxNzA5ODc2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtOTk0LDMxICs5OTQsMjcg
QEAgRU5ECiAKICAgICBwcmludENvbnN0cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7
CiAKKyAgICBteSAkZmlyc3RUYWc7CisgICAgZm9yIG15ICR0YWcgKHNvcnQga2V5cyAldGFnQ29u
c3RydWN0b3JNYXApIHsKKyAgICAgICAgJGZpcnN0VGFnID0gJHRhZzsKKyAgICAgICAgbGFzdDsK
KyAgICB9CisKICAgICBwcmludCBGIDw8RU5ECiAKIHN0cnVjdCAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IHsKLSAgICAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25z
dHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQotICAg
ICAgICA6IGZ1bmN0aW9uKGZ1bmN0aW9uKQotICAgICAgICAsIHF1YWxpZmllZE5hbWUoJm5hbWUp
Ci0gICAgeyB9Ci0KLSAgICAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlv
bk1hcEVudHJ5KCkKLSAgICAgICAgOiBmdW5jdGlvbihudWxscHRyKQotICAgICAgICAsIHF1YWxp
ZmllZE5hbWUobnVsbHB0cikKLSAgICB7IH0KLQotICAgICRwYXJhbWV0ZXJze25hbWVzcGFjZX1D
b25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uOwotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIHF1
YWxpZmllZE5hbWU7IC8vIFVzZSBwb2ludGVyIGluc3RlYWQgb2YgcmVmZXJlbmNlIHNvIHRoYXQg
ZW1wdHlWYWx1ZSgpIGluIEhhc2hNYXAgaXMgY2hlYXAgdG8gY3JlYXRlLgorICAgICRwYXJhbWV0
ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uIHsgbnVsbHB0ciB9Owor
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIHF1YWxpZmllZE5hbWUgeyBudWxscHRyIH07IC8vIFVz
ZSBwb2ludGVyIGluc3RlYWQgb2YgcmVmZXJlbmNlIHNvIHRoYXQgZW1wdHlWYWx1ZSgpIGluIEhh
c2hNYXAgaXMgY2hlYXAgdG8gY3JlYXRlLgogfTsKIAogc3RhdGljIE5FVkVSX0lOTElORSBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeT4gY3JlYXRlJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUZhY3RvcnlNYXAoKQogewogICAgIHN0cnVjdCBUYWJsZUVudHJ5IHsKLSAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsKKyAgICAgICAgZGVjbHR5cGUoJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke2ZpcnN0VGFnfVRhZykmIG5hbWU7CiAgICAgICAgICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uOwogICAgIH07
CiAKLSAgICBzdGF0aWMgY29uc3QgVGFibGVFbnRyeSB0YWJsZVtdID0geworICAgIHN0YXRpYyBj
b25zdGV4cHIgVGFibGVFbnRyeSB0YWJsZVtdID0gewogRU5ECiAgICAgOwogCkBAIC0xMDI5LDcg
KzEwMjUsNyBAQCBFTkQKIAogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxBdG9tU3RyaW5nLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlv
bk1hcEVudHJ5PiBtYXA7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHRhYmxlKQotICAgICAgICBt
YXAuYWRkKGVudHJ5Lm5hbWUubG9jYWxOYW1lKCksICRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25z
dHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkoZW50cnkuZnVuY3Rpb24sIGVudHJ5Lm5hbWUpKTsKKyAg
ICAgICAgbWFwLmFkZChlbnRyeS5uYW1lLmdldCgpLmxvY2FsTmFtZSgpLCAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IHsgZW50cnkuZnVuY3Rpb24sICZl
bnRyeS5uYW1lLmdldCgpIH0pOwogICAgIHJldHVybiBtYXA7CiB9CiAKQEAgLTEyNjEsMTYgKzEy
NTcsMjIgQEAgRU5ECiAKICAgICBwcmludFdyYXBwZXJGdW5jdGlvbnMoJEYpOwogCisgICAgbXkg
JGZpcnN0VGFnOworICAgIGZvciBteSAkdGFnIChzb3J0IGtleXMgJWFsbFRhZ3MpIHsKKyAgICAg
ICAgJGZpcnN0VGFnID0gJHRhZzsKKyAgICAgICAgbGFzdDsKKyAgICB9CisKIHByaW50IEYgPDxF
TkQKIAogc3RhdGljIE5FVkVSX0lOTElORSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8QXRvbVN0cmluZywgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRX
cmFwcGVyRnVuY3Rpb24+IGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyTWFwKCkK
IHsKICAgICBzdHJ1Y3QgVGFibGVFbnRyeSB7Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWU7CisgICAgICAgIGRlY2x0eXBlKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtm
aXJzdFRhZ31UYWcpJiBuYW1lOwogICAgICAgICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBmdW5jdGlvbjsKICAgICB9OwogCi0gICAgc3RhdGljIGNv
bnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIFRhYmxlRW50
cnkgdGFibGVbXSA9IHsKIEVORAogOwogCkBAIC0xMzAzLDcgKzEzMDUsNyBAQCBFTkQKIAogICAg
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBDcmVh
dGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gbWFwOwogICAg
IGZvciAoYXV0byYgZW50cnkgOiB0YWJsZSkKLSAgICAgICAgbWFwLmFkZChlbnRyeS5uYW1lLmxv
Y2FsTmFtZSgpLCBlbnRyeS5mdW5jdGlvbik7CisgICAgICAgIG1hcC5hZGQoZW50cnkubmFtZS5n
ZXQoKS5sb2NhbE5hbWUoKSwgZW50cnkuZnVuY3Rpb24pOwogICAgIHJldHVybiBtYXA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggYzI0YmVmZjVjYjRlYTc0ZjBkNWQyYzNiNTY2YmRiNmZkZmI1YzZlZS4uYmJjMzIw
ZjM2YmZiNjgxMDI5MmJiM2IxNDQyNjZkODBiYzMyYjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTc3OCw2ICs3Nzgs
NyBAQCBzdGF0aWMgYm9vbCBpc1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZChjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKQogICAgICAgICAgICAgJnhtcFRhZywKICAgICAgICAgfTsKICAgICAgICAgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKKyAg
ICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RkOjpzaXplKHRhZ3MpKTsKICAgICAg
ICAgZm9yIChhdXRvJiB0YWcgOiB0YWdzKQogICAgICAgICAgICAgc2V0LmFkZCh0YWctPmdldCgp
LmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJuIHNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5j
cHAKaW5kZXggYzAzZTAzZjYyMDRlNjJkZTU1NzUyNmU1MTBhNjM2ZDcxOWE5OTNlMy4uZDgyZmM0
ZThlMjZmODdiNGVkYjUyY2ZmZTc4NzY1YjEzYTc1NDIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmls
bC5jcHAKQEAgLTMwLDEwNiArMzAsNzkgQEAKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgor
I2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgQXV0b2ZpbGxDYXRlZ29yeSB7Ci0gICAgT2ZmLAotICAgIEF1dG9tYXRpYywK
LSAgICBOb3JtYWwsCi0gICAgQ29udGFjdCwKLX07CitlbnVtIGNsYXNzIEF1dG9maWxsQ2F0ZWdv
cnkgOiB1aW50OF90IHsgT2ZmLCBBdXRvbWF0aWMsIE5vcm1hbCwgQ29udGFjdCB9OwogCi1zdHJ1
Y3QgQXV0b2ZpbGxJbmZvIHsKLSAgICBBdXRvZmlsbEZpZWxkTmFtZSBmaWVsZE5hbWU7CitzdHJ1
Y3QgQXV0b2ZpbGxGaWVsZE5hbWVNYXBwaW5nIHsKKyAgICBBdXRvZmlsbEZpZWxkTmFtZSBuYW1l
OwogICAgIEF1dG9maWxsQ2F0ZWdvcnkgY2F0ZWdvcnk7CiB9OwogCi1zdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIEF1dG9maWxs
SW5mbz4mIGZpZWxkTmFtZU1hcCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1hcCA9
IFtdIHsKLSAgICAgICAgc3RydWN0IE1hcEVudHJ5IHsKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJh
bCBuYW1lOwotICAgICAgICAgICAgQXV0b2ZpbGxJbmZvIHZhbHVlOwotICAgICAgICB9OwotICAg
ICAgICBzdGF0aWMgY29uc3RleHByIE1hcEVudHJ5IGVudHJpZXNbXSA9IHsKLSAgICAgICAgICAg
IHsgIm9mZiJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSwgQXV0b2ZpbGxDYXRlZ29yeTo6
T2ZmIH0gfSwKLSAgICAgICAgICAgIHsgIm9uIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOb25l
LCBBdXRvZmlsbENhdGVnb3J5OjpBdXRvbWF0aWMgfSB9LAotICAgICAgICAgICAgeyAibmFtZSJf
cywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKLSAgICAgICAgICAgIHsgImhvbm9yaWZpYy1wcmVmaXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6Okhvbm9yaWZpY1ByZWZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAg
ICAgICAgIHsgImdpdmVuLW5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkdpdmVuTmFtZSwg
QXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFkZGl0aW9uYWwt
bmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkaXRpb25hbE5hbWUsIEF1dG9maWxsQ2F0
ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJmYW1pbHktbmFtZSJfcywgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6RmFtaWx5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
LSAgICAgICAgICAgIHsgImhvbm9yaWZpYy1zdWZmaXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6
Okhvbm9yaWZpY1N1ZmZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAg
ICAgIHsgIm5pY2tuYW1lIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOaWNrbmFtZSwgQXV0b2Zp
bGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgInVzZXJuYW1lIl9zLCB7IEF1
dG9maWxsRmllbGROYW1lOjpVc2VybmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
LSAgICAgICAgICAgIHsgIm5ldy1wYXNzd29yZCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6TmV3
UGFzc3dvcmQsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJj
dXJyZW50LXBhc3N3b3JkIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpDdXJyZW50UGFzc3dvcmQs
IEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJvcmdhbml6YXRp
b24tdGl0bGUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok9yZ2FuaXphdGlvblRpdGxlLCBBdXRv
ZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAib3JnYW5pemF0aW9uIl9z
LCB7IEF1dG9maWxsRmllbGROYW1lOjpPcmdhbml6YXRpb24sIEF1dG9maWxsQ2F0ZWdvcnk6Ok5v
cm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJzdHJlZXQtYWRkcmVzcyJfcywgeyBBdXRvZmlsbEZp
ZWxkTmFtZTo6U3RyZWV0QWRkcmVzcywgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAg
ICAgICAgICAgIHsgImFkZHJlc3MtbGluZTEiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJl
c3NMaW5lMSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFk
ZHJlc3MtbGluZTIiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJlc3NMaW5lMiwgQXV0b2Zp
bGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFkZHJlc3MtbGluZTMiX3Ms
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJlc3NMaW5lMywgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFkZHJlc3MtbGV2ZWw0Il9zLCB7IEF1dG9maWxsRmll
bGROYW1lOjpBZGRyZXNzTGV2ZWw0LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAg
ICAgICAgICAgeyAiYWRkcmVzcy1sZXZlbDMiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZHJl
c3NMZXZlbDMsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJh
ZGRyZXNzLWxldmVsMiJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xldmVsMiwgQXV0
b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImFkZHJlc3MtbGV2ZWwx
Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpBZGRyZXNzTGV2ZWwxLCBBdXRvZmlsbENhdGVnb3J5
OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiY291bnRyeSJfcywgeyBBdXRvZmlsbEZpZWxk
TmFtZTo6Q291bnRyeSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAg
IHsgImNvdW50cnktbmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q291bnRyeU5hbWUsIEF1
dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJwb3N0YWwtY29kZSJf
cywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6UG9zdGFsQ29kZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKLSAgICAgICAgICAgIHsgImNjLW5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6
OkNjTmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImNj
LWdpdmVuLW5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjR2l2ZW5OYW1lLCBBdXRvZmls
bENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiY2MtYWRkaXRpb25hbC1uYW1l
Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpDY0FkZGl0aW9uYWxOYW1lLCBBdXRvZmlsbENhdGVn
b3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiY2MtZmFtaWx5LW5hbWUiX3MsIHsgQXV0
b2ZpbGxGaWVsZE5hbWU6OkNjRmFtaWx5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKLSAgICAgICAgICAgIHsgImNjLW51bWJlciJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NO
dW1iZXIsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJjYy1l
eHAiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwLCBBdXRvZmlsbENhdGVnb3J5OjpOb3Jt
YWwgfSB9LAotICAgICAgICAgICAgeyAiY2MtZXhwLW1vbnRoIl9zLCB7IEF1dG9maWxsRmllbGRO
YW1lOjpDY0V4cE1vbnRoLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAg
ICAgeyAiY2MtZXhwLXllYXIiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwWWVhciwgQXV0
b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgImNjLWNzYyJfcywgeyBB
dXRvZmlsbEZpZWxkTmFtZTo6Q2NDc2MsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0g
ICAgICAgICAgICB7ICJjYy10eXBlIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpDY1R5cGUsIEF1
dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJ0cmFuc2FjdGlvbi1j
dXJyZW5jeSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VHJhbnNhY3Rpb25DdXJyZW5jeSwgQXV0
b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLSAgICAgICAgICAgIHsgInRyYW5zYWN0aW9uLWFt
b3VudCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VHJhbnNhY3Rpb25BbW91bnQsIEF1dG9maWxs
Q2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJsYW5ndWFnZSJfcywgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6TGFuZ3VhZ2UsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0g
ICAgICAgICAgICB7ICJiZGF5Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpCZGF5LCBBdXRvZmls
bENhdGVnb3J5OjpOb3JtYWwgfSB9LAotICAgICAgICAgICAgeyAiYmRheS1kYXkiX3MsIHsgQXV0
b2ZpbGxGaWVsZE5hbWU6OkJkYXlEYXksIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0g
ICAgICAgICAgICB7ICJiZGF5LW1vbnRoIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpCZGF5TW9u
dGgsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJiZGF5LXll
YXIiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkJkYXlZZWFyLCBBdXRvZmlsbENhdGVnb3J5OjpO
b3JtYWwgfSB9LAotICAgICAgICAgICAgeyAic2V4Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpT
ZXgsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCi0gICAgICAgICAgICB7ICJ1cmwiX3Ms
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlVSTCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
LSAgICAgICAgICAgIHsgInBob3RvIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpQaG90bywgQXV0
b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKLQotICAgICAgICAgICAgeyAidGVsIl9zLCB7IEF1
dG9maWxsRmllbGROYW1lOjpUZWwsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAotICAg
ICAgICAgICAgeyAidGVsLWNvdW50cnktY29kZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVs
Q291bnRyeUNvZGUsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAotICAgICAgICAgICAg
eyAidGVsLW5hdGlvbmFsIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxOYXRpb25hbCwgQXV0
b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJ0ZWwtYXJlYS1jb2Rl
Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxBcmVhQ29kZSwgQXV0b2ZpbGxDYXRlZ29yeTo6
Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJ0ZWwtbG9jYWwiX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OlRlbExvY2FsLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAgICAgICAg
ICAgIHsgInRlbC1sb2NhbC1wcmVmaXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbExvY2Fs
UHJlZml4LCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAgICAgICAgICAgIHsgInRl
bC1sb2NhbC1zdWZmaXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbExvY2FsU3VmZml4LCBB
dXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKLSAgICAgICAgICAgIHsgInRlbC1leHRlbnNp
b24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbEV4dGVuc2lvbiwgQXV0b2ZpbGxDYXRlZ29y
eTo6Q29udGFjdCB9IH0sCi0gICAgICAgICAgICB7ICJlbWFpbCJfcywgeyBBdXRvZmlsbEZpZWxk
TmFtZTo6RW1haWwsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAotICAgICAgICAgICAg
eyAiaW1wcCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SW1wcCwgQXV0b2ZpbGxDYXRlZ29yeTo6
Q29udGFjdCB9IH0sCi0gICAgICAgIH07Ci0gICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBBdXRvZmlsbEluZm8+IG1hcDsKLSAgICAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpCi0gICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5h
bWUsIGVudHJ5LnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCk7Ci0gICAgcmV0
dXJuIG1hcDsKLX0KK3N0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPENvbXBhcmFibGVMZXR0ZXJz
TGl0ZXJhbCwgQXV0b2ZpbGxGaWVsZE5hbWVNYXBwaW5nPiBmaWVsZE5hbWVNYXBwaW5nc1tdID0g
eworICAgIHsgImFkZGl0aW9uYWwtbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFkZGl0aW9u
YWxOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImFkZHJlc3MtbGV2
ZWwxIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xldmVsMSwgQXV0b2ZpbGxDYXRlZ29y
eTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJhZGRyZXNzLWxldmVsMiIsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6OkFkZHJlc3NMZXZlbDIsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAi
YWRkcmVzcy1sZXZlbDMiLCB7IEF1dG9maWxsRmllbGROYW1lOjpBZGRyZXNzTGV2ZWwzLCBBdXRv
ZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImFkZHJlc3MtbGV2ZWw0IiwgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xldmVsNCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKKyAgICB7ICJhZGRyZXNzLWxpbmUxIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6QWRkcmVzc0xp
bmUxLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImFkZHJlc3MtbGluZTIi
LCB7IEF1dG9maWxsRmllbGROYW1lOjpBZGRyZXNzTGluZTIsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5v
cm1hbCB9IH0sCisgICAgeyAiYWRkcmVzcy1saW5lMyIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkFk
ZHJlc3NMaW5lMywgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJiZGF5Iiwg
eyBBdXRvZmlsbEZpZWxkTmFtZTo6QmRheSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
KyAgICB7ICJiZGF5LWRheSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkJkYXlEYXksIEF1dG9maWxs
Q2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiYmRheS1tb250aCIsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6OkJkYXlNb250aCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJi
ZGF5LXllYXIiLCB7IEF1dG9maWxsRmllbGROYW1lOjpCZGF5WWVhciwgQXV0b2ZpbGxDYXRlZ29y
eTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJjYy1hZGRpdGlvbmFsLW5hbWUiLCB7IEF1dG9maWxsRmll
bGROYW1lOjpDY0FkZGl0aW9uYWxOYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAor
ICAgIHsgImNjLWNzYyIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjQ3NjLCBBdXRvZmlsbENhdGVn
b3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImNjLWV4cCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNj
RXhwLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImNjLWV4cC1tb250aCIs
IHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNjRXhwTW9udGgsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1h
bCB9IH0sCisgICAgeyAiY2MtZXhwLXllYXIiLCB7IEF1dG9maWxsRmllbGROYW1lOjpDY0V4cFll
YXIsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiY2MtZmFtaWx5LW5hbWUi
LCB7IEF1dG9maWxsRmllbGROYW1lOjpDY0ZhbWlseU5hbWUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5v
cm1hbCB9IH0sCisgICAgeyAiY2MtZ2l2ZW4tbmFtZSIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkNj
R2l2ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImNjLW5hbWUi
LCB7IEF1dG9maWxsRmllbGROYW1lOjpDY05hbWUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9
IH0sCisgICAgeyAiY2MtbnVtYmVyIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q2NOdW1iZXIsIEF1
dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiY2MtdHlwZSIsIHsgQXV0b2ZpbGxG
aWVsZE5hbWU6OkNjVHlwZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJj
b3VudHJ5IiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q291bnRyeSwgQXV0b2ZpbGxDYXRlZ29yeTo6
Tm9ybWFsIH0gfSwKKyAgICB7ICJjb3VudHJ5LW5hbWUiLCB7IEF1dG9maWxsRmllbGROYW1lOjpD
b3VudHJ5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJjdXJyZW50
LXBhc3N3b3JkIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6Q3VycmVudFBhc3N3b3JkLCBBdXRvZmls
bENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImVtYWlsIiwgeyBBdXRvZmlsbEZpZWxkTmFt
ZTo6RW1haWwsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgImZhbWlseS1u
YW1lIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6RmFtaWx5TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6
Tm9ybWFsIH0gfSwKKyAgICB7ICJnaXZlbi1uYW1lIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6R2l2
ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgImhvbm9yaWZpYy1w
cmVmaXgiLCB7IEF1dG9maWxsRmllbGROYW1lOjpIb25vcmlmaWNQcmVmaXgsIEF1dG9maWxsQ2F0
ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAiaG9ub3JpZmljLXN1ZmZpeCIsIHsgQXV0b2ZpbGxG
aWVsZE5hbWU6Okhvbm9yaWZpY1N1ZmZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwK
KyAgICB7ICJpbXBwIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SW1wcCwgQXV0b2ZpbGxDYXRlZ29y
eTo6Q29udGFjdCB9IH0sCisgICAgeyAibGFuZ3VhZ2UiLCB7IEF1dG9maWxsRmllbGROYW1lOjpM
YW5ndWFnZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJuYW1lIiwgeyBB
dXRvZmlsbEZpZWxkTmFtZTo6TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAg
ICB7ICJuZXctcGFzc3dvcmQiLCB7IEF1dG9maWxsRmllbGROYW1lOjpOZXdQYXNzd29yZCwgQXV0
b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJuaWNrbmFtZSIsIHsgQXV0b2ZpbGxG
aWVsZE5hbWU6Ok5pY2tuYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsg
Im9mZiIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6Ok9mZiB9
IH0sCisgICAgeyAib24iLCB7IEF1dG9maWxsRmllbGROYW1lOjpOb25lLCBBdXRvZmlsbENhdGVn
b3J5OjpBdXRvbWF0aWMgfSB9LAorICAgIHsgIm9yZ2FuaXphdGlvbiIsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6Ok9yZ2FuaXphdGlvbiwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7
ICJvcmdhbml6YXRpb24tdGl0bGUiLCB7IEF1dG9maWxsRmllbGROYW1lOjpPcmdhbml6YXRpb25U
aXRsZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJwaG90byIsIHsgQXV0
b2ZpbGxGaWVsZE5hbWU6OlBob3RvLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAorICAg
IHsgInBvc3RhbC1jb2RlIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6UG9zdGFsQ29kZSwgQXV0b2Zp
bGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKKyAgICB7ICJzZXgiLCB7IEF1dG9maWxsRmllbGROYW1l
OjpTZXgsIEF1dG9maWxsQ2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAic3RyZWV0LWFkZHJl
c3MiLCB7IEF1dG9maWxsRmllbGROYW1lOjpTdHJlZXRBZGRyZXNzLCBBdXRvZmlsbENhdGVnb3J5
OjpOb3JtYWwgfSB9LAorICAgIHsgInRlbCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRlbCwgQXV0
b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9IH0sCisgICAgeyAidGVsLWFyZWEtY29kZSIsIHsgQXV0
b2ZpbGxGaWVsZE5hbWU6OlRlbEFyZWFDb2RlLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0g
fSwKKyAgICB7ICJ0ZWwtY291bnRyeS1jb2RlIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsQ291
bnRyeUNvZGUsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRlbC1leHRl
bnNpb24iLCB7IEF1dG9maWxsRmllbGROYW1lOjpUZWxFeHRlbnNpb24sIEF1dG9maWxsQ2F0ZWdv
cnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRlbC1sb2NhbCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6
OlRlbExvY2FsLCBBdXRvZmlsbENhdGVnb3J5OjpDb250YWN0IH0gfSwKKyAgICB7ICJ0ZWwtbG9j
YWwtcHJlZml4IiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTG9jYWxQcmVmaXgsIEF1dG9maWxs
Q2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRlbC1sb2NhbC1zdWZmaXgiLCB7IEF1dG9m
aWxsRmllbGROYW1lOjpUZWxMb2NhbFN1ZmZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Q29udGFjdCB9
IH0sCisgICAgeyAidGVsLW5hdGlvbmFsIiwgeyBBdXRvZmlsbEZpZWxkTmFtZTo6VGVsTmF0aW9u
YWwsIEF1dG9maWxsQ2F0ZWdvcnk6OkNvbnRhY3QgfSB9LAorICAgIHsgInRyYW5zYWN0aW9uLWFt
b3VudCIsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OlRyYW5zYWN0aW9uQW1vdW50LCBBdXRvZmlsbENh
dGVnb3J5OjpOb3JtYWwgfSB9LAorICAgIHsgInRyYW5zYWN0aW9uLWN1cnJlbmN5IiwgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6VHJhbnNhY3Rpb25DdXJyZW5jeSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9y
bWFsIH0gfSwKKyAgICB7ICJ1cmwiLCB7IEF1dG9maWxsRmllbGROYW1lOjpVUkwsIEF1dG9maWxs
Q2F0ZWdvcnk6Ok5vcm1hbCB9IH0sCisgICAgeyAidXNlcm5hbWUiLCB7IEF1dG9maWxsRmllbGRO
YW1lOjpVc2VybmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKK307CitzdGF0aWMg
Y29uc3RleHByIFNvcnRlZEFycmF5TWFwIGZpZWxkTmFtZU1hcCB7IGZpZWxkTmFtZU1hcHBpbmdz
IH07CiAKIEF1dG9maWxsRmllbGROYW1lIHRvQXV0b2ZpbGxGaWVsZE5hbWUoY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byBtYXAgPSBmaWVsZE5hbWVNYXAoKTsKLSAgICBhdXRv
IGl0ID0gbWFwLmZpbmQodmFsdWUpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0gICAgICAg
IHJldHVybiBBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZTsKLSAgICByZXR1cm4gaXQtPnZhbHVlLmZp
ZWxkTmFtZTsKKyAgICByZXR1cm4gZmllbGROYW1lTWFwLmdldCh2YWx1ZSkubmFtZTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIGlzQ29udGFjdFRva2VuKGNvbnN0IEF0b21TdHJpbmcmIHRva2Vu
KQpAQCAtMjA0LDEzICsxNzcsMTIgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRl
RnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICAvLyB0
b2tlbidzIHJvdywgdGhlbiBqdW1wIHRvIHRoZSBzdGVwIGxhYmVsZWQgZGVmYXVsdC4gT3RoZXJ3
aXNlLCBsZXQgZmllbGQgYmUgdGhlIHN0cmluZyBnaXZlbgogICAgIC8vIGluIHRoZSBjZWxsIG9m
IHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIG1hdGNoaW5nIHJvdywgYW5kIGxldCBjYXRlZ29yeSBi
ZSB0aGUgdmFsdWUgb2YgdGhlCiAgICAgLy8gY2VsbCBpbiB0aGUgdGhpcmQgY29sdW1uIG9mIHRo
YXQgc2FtZSByb3cuCi0gICAgYXV0byYgbWFwID0gZmllbGROYW1lTWFwKCk7CiAKLSAgICBhdXRv
IGl0ID0gbWFwLmZpbmQodG9rZW5zW2luZGV4XSk7Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkK
KyAgICBhdXRvIG1hcEVudHJ5ID0gZmllbGROYW1lTWFwLnRyeUdldCh0b2tlbnNbaW5kZXhdKTsK
KyAgICBpZiAoIW1hcEVudHJ5KQogICAgICAgICByZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAgICAg
Ci0gICAgYXV0byBjYXRlZ29yeSA9IGl0LT52YWx1ZS5jYXRlZ29yeTsKKyAgICBhdXRvIGNhdGVn
b3J5ID0gbWFwRW50cnktPmNhdGVnb3J5OwogCiAgICAgaWYgKHRva2Vucy5zaXplKCkgPiBtYXhU
b2tlbnNGb3JBdXRvZmlsbEZpZWxkQ2F0ZWdvcnkoY2F0ZWdvcnkpKQogICAgICAgICByZXR1cm4g
ZGVmYXVsdExhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggNzE2
NmQxZDM3N2ZhYjY3YTA5ZGEwMDljNjFlYjExYmE1MTgxMWJlZi4uZWVkYzc3ODg1ODUxMzA2MWM5
MmMwNzM2ZTNiMDU1YzVlZGE4MTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNw
cApAQCAtMjI3LDYgKzIyNyw3IEBAIGJvb2wgSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgICAg
ICZ2bGlua0F0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CisgICAgICAgIHNldC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHN0ZDo6c2l6ZShuYW1lcykpOwogICAgICAgICBmb3IgKGF1dG8qIG5hbWUg
OiBuYW1lcykKICAgICAgICAgICAgIHNldC5hZGQobmFtZS0+Z2V0KCkubG9jYWxOYW1lKCkpOwog
ICAgICAgICByZXR1cm4gc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAppbmRleCBhYmIwNDIwNTZjMWI4ZDEwYjgxYjBkMDg0NWYzNTg5NGQ0MGRkYzgxLi42M2Jm
YTdlZDEzZDBhYjFmMjQxMmU3OGEwY2UxMjY5YzY1NGFjNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzU5LDYgKzM1OSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBj
aGlsZCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbW9zdEtub3duVGFncyA9IFtdIHsKICAg
ICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5h
bWU+IHNldDsKICAgICAgICAgYXV0byogdGFncyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoKTsK
KyAgICAgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoSFRNTE5hbWVzOjpIVE1MVGFnc0Nv
dW50KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MTmFtZXM6OkhUTUxUYWdz
Q291bnQ7IGkrKykgewogICAgICAgICAgICAgYXV0byYgdGFnID0gKnRhZ3NbaV07CiAgICAgICAg
ICAgICAvLyBPbmx5IHRoZSBwYXJhbSBlbGVtZW50IHdhcyBleHBsaWNpdGx5IG1lbnRpb25lZCBp
biB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHJ1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1Bh
Z2VPdmVybGF5cy5jcHAKaW5kZXggYzY0MDg5ODM1NDQ4NmYzZDlkNmU2N2RjNjgxODliZTBiMzE0
MWRkZS4uN2IzZWM3OGYzZGFmNGE3YWMzNTc2MzllYmJkY2I1ZTMwMjE0ZDhkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTUwLDIxICsxNTAsNiBAQCBib29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6
dXBkYXRlUmVnaW9uKCkKICAgICByZXR1cm4gcmVnaW9uQ2hhbmdlZDsKIH0KIAotc3RhdGljIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JB
PHVpbnQ4X3Q+PiYgdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHJlZ2lvbkNvbG9ycyB7IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4X3Q+PiB7IHsKLSAgICAgICAgeyAidG91Y2hzdGFy
dCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKLSAgICAgICAgeyAidG91Y2htb3ZlIl9zLCB7
IDgwLCAyMDQsIDI0NSwgNTAgfSB9LAotICAgICAgICB7ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYz
LCAxMjcsIDUwIH0gfSwKLSAgICAgICAgeyAidG91Y2hmb3JjZWNoYW5nZSJfcywgeyA2MywgNjMs
IDE5MSwgNTAgfSB9LAotICAgICAgICB7ICJ3aGVlbCJfcywgeyAyNTUsIDEyOCwgMCwgNTAgfSB9
LAotICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAsIDI0NSwgODAsIDUwIH0gfSwKLSAgICAg
ICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4MCwgNTAgfSB9LAotICAgICAgICB7ICJt
b3VzZXVwIl9zLCB7IDgwLCAyNDUsIDE3NiwgNTAgfSB9LAotICAgIH0gfSB9OwotICAgIHJldHVy
biByZWdpb25Db2xvcnM7Ci19Ci0KIHN0YXRpYyB2b2lkIGRyYXdSaWdodEFsaWduZWRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgRmxvYXRQb2ludCYgYm94TG9jYXRpb24pCiB7CiAgICAgZmxvYXQg
dGV4dEdhcCA9IDEwOwpAQCAtMTc4LDYgKzE2MywxOSBAQCBzdGF0aWMgdm9pZCBkcmF3UmlnaHRB
bGlnbmVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
YwogCiB2b2lkIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92
ZXJsYXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmKQogeworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPENvbXBhcmFibGVBU0NJSUxp
dGVyYWwsIFNSR0JBPHVpbnQ4X3Q+PiBjb2xvck1hcHBpbmdzW10gPSB7CisgICAgICAgIHsgIm1v
dXNlZG93biIsIHsgODAsIDI0NSwgODAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2Vtb3ZlIiwg
eyAyNDUsIDI0NSwgODAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2V1cCIsIHsgODAsIDI0NSwg
MTc2LCA1MCB9IH0sCisgICAgICAgIHsgInRvdWNoZW5kIiwgeyAxOTEsIDYzLCAxMjcsIDUwIH0g
fSwKKyAgICAgICAgeyAidG91Y2hmb3JjZWNoYW5nZSIsIHsgNjMsIDYzLCAxOTEsIDUwIH0gfSwK
KyAgICAgICAgeyAidG91Y2htb3ZlIiwgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAg
eyAidG91Y2hzdGFydCIsIHsgMTkxLCAxOTEsIDYzLCA1MCB9IH0sCisgICAgICAgIHsgIndoZWVs
IiwgeyAyNTUsIDEyOCwgMCwgNTAgfSB9LAorICAgIH07CisgICAgY29uc3RleHByIFNvcnRlZEFy
cmF5TWFwIGNvbG9ycyB7IGNvbG9yTWFwcGluZ3MgfTsKKyAgICBjb25zdGV4cHIgYXV0byBkZWZh
dWx0Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDY0KTsKKwogICAgIElu
dFJlY3QgYm91bmRzID0gcGFnZU92ZXJsYXkuYm91bmRzKCk7CiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoYm91bmRzKTsKQEAgLTE5Miw2MCArMTkwLDMyIEBAIHZvaWQgTm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdy
YXBoaWNzCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIDAs
IDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCisgICAgYXV0byBkcmF3TGVnZW5kID0g
WyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJhbCB0ZXh0KSB7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChsZWdl
bmRSZWN0KTsKKyAgICAgICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQodGV4dCwgY29udGV4dCwgZm9u
dCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgbGVnZW5kUmVjdC5tb3ZlKDAsIDMw
KTsKKyAgICB9OworCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBjb250ZXh0LnNldEZp
bGxDb2xvcih0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZ2V0KCJ0b3VjaHN0YXJ0Il9zKSk7Ci0g
ICAgY29udGV4dC5maWxsUmVjdChsZWdlbmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4
dCgidG91Y2hzdGFydCJfcywgY29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsK
LQotICAgIGxlZ2VuZFJlY3QubW92ZSgwLCAzMCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
dG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmdldCgidG91Y2htb3ZlIl9zKSk7Ci0gICAgY29udGV4
dC5maWxsUmVjdChsZWdlbmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgidG91Y2ht
b3ZlIl9zLCBjb250ZXh0LCBmb250LCBsZWdlbmRSZWN0LmxvY2F0aW9uKCkpOwotCi0gICAgbGVn
ZW5kUmVjdC5tb3ZlKDAsIDMwKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b3VjaEV2ZW50
UmVnaW9uQ29sb3JzKCkuZ2V0KCJ0b3VjaGVuZCJfcykpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qo
bGVnZW5kUmVjdCk7Ci0gICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoInRvdWNoZW5kIl9zLCBjb250
ZXh0LCBmb250LCBsZWdlbmRSZWN0LmxvY2F0aW9uKCkpOwotCi0gICAgbGVnZW5kUmVjdC5tb3Zl
KDAsIDMwKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b3VjaEV2ZW50UmVnaW9uQ29sb3Jz
KCkuZ2V0KCJ0b3VjaGZvcmNlY2hhbmdlIl9zKSk7Ci0gICAgY29udGV4dC5maWxsUmVjdChsZWdl
bmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgidG91Y2hmb3JjZWNoYW5nZSJfcywg
Y29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKLQotICAgIGxlZ2VuZFJlY3Qu
bW92ZSgwLCAzMCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7Ci0gICAgY29u
dGV4dC5maWxsUmVjdChsZWdlbmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgicGFz
c2l2ZSBsaXN0ZW5lcnMiX3MsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7
Ci0KLSAgICBsZWdlbmRSZWN0Lm1vdmUoMCwgMzApOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHRvdWNoRXZlbnRSZWdpb25Db2xvcnMoKS5nZXQoIm1vdXNlZG93biJfcykpOwotICAgIGNvbnRl
eHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7Ci0gICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQoIm1vdXNl
ZG93biJfcywgY29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKLQotICAgIGxl
Z2VuZFJlY3QubW92ZSgwLCAzMCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVu
dFJlZ2lvbkNvbG9ycygpLmdldCgibW91c2Vtb3ZlIl9zKSk7Ci0gICAgY29udGV4dC5maWxsUmVj
dChsZWdlbmRSZWN0KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgibW91c2Vtb3ZlIl9zLCBj
b250ZXh0LCBmb250LCBsZWdlbmRSZWN0LmxvY2F0aW9uKCkpOwotCi0gICAgbGVnZW5kUmVjdC5t
b3ZlKDAsIDMwKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b3VjaEV2ZW50UmVnaW9uQ29s
b3JzKCkuZ2V0KCJtb3VzZXVwIl9zKSk7Ci0gICAgY29udGV4dC5maWxsUmVjdChsZWdlbmRSZWN0
KTsKLSAgICBkcmF3UmlnaHRBbGlnbmVkVGV4dCgibW91c2V1cCJfcywgY29udGV4dCwgZm9udCwg
bGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKKyAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAo
QVNDSUlMaXRlcmFsIGNvbG9yKSB7CisgICAgICAgIGRyYXdMZWdlbmQoY29sb3JzLmdldChTdHJp
bmdWaWV3IHsgY29sb3IgfSksIGNvbG9yKTsKKyAgICB9OworICAgIGRyYXdFdmVudExlZ2VuZCgi
dG91Y2hzdGFydCJfcyk7CisgICAgZHJhd0V2ZW50TGVnZW5kKCJ0b3VjaG1vdmUiX3MpOworICAg
IGRyYXdFdmVudExlZ2VuZCgidG91Y2hlbmQiX3MpOworICAgIGRyYXdFdmVudExlZ2VuZCgidG91
Y2hmb3JjZWNoYW5nZSJfcyk7CisgICAgZHJhd0xlZ2VuZChtX2NvbG9yLCAicGFzc2l2ZSBsaXN0
ZW5lcnMiX3MpOworICAgIGRyYXdFdmVudExlZ2VuZCgibW91c2Vkb3duIl9zKTsKKyAgICBkcmF3
RXZlbnRMZWdlbmQoIm1vdXNlbW92ZSJfcyk7CisgICAgZHJhd0V2ZW50TGVnZW5kKCJtb3VzZXVw
Il9zKTsKICNlbHNlCiAgICAgLy8gT24gZGVza3RvcCBwbGF0Zm9ybXMsIHRoZSAid2hlZWwiIHJl
Z2lvbiBpbmNsdWRlcyB0aGUgbm9uLWZhc3Qgc2Nyb2xsYWJsZSByZWdpb24uCi0gICAgY29udGV4
dC5zZXRGaWxsQ29sb3IodG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmdldCgid2hlZWwiX3MpKTsK
LSAgICBjb250ZXh0LmZpbGxSZWN0KGxlZ2VuZFJlY3QpOwotICAgIGRyYXdSaWdodEFsaWduZWRU
ZXh0KCJub24tZmFzdCByZWdpb24iX3MsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRp
b24oKSk7CisgICAgZHJhd0xlZ2VuZChjb2xvcnMuZ2V0KCJ3aGVlbCIpLCAibm9uLWZhc3QgcmVn
aW9uIl9zKTsKICNlbmRpZgogCi0gICAgZm9yIChjb25zdCBhdXRvJiBzeW5jaHJvbm91c0V2ZW50
UmVnaW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmljU3luY2hyb25vdXNE
aXNwYXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdpb25Db2xvciA9IENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYUJ5dGUoNjQpOwotICAgICAgICBhdXRvIGl0ID0gdG91Y2hFdmVudFJl
Z2lvbkNvbG9ycygpLmZpbmQoc3luY2hyb25vdXNFdmVudFJlZ2lvbi5rZXkpOwotICAgICAgICBp
ZiAoaXQgIT0gdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmVuZCgpKQotICAgICAgICAgICAgcmVn
aW9uQ29sb3IgPSBpdC0+dmFsdWU7Ci0gICAgICAgIGRyYXdSZWdpb24oY29udGV4dCwgc3luY2hy
b25vdXNFdmVudFJlZ2lvbi52YWx1ZSwgcmVnaW9uQ29sb3IsIGJvdW5kcyk7Ci0gICAgfQotCisg
ICAgZm9yIChhdXRvJiByZWdpb24gOiBtX2V2ZW50VHJhY2tpbmdSZWdpb25zLmV2ZW50U3BlY2lm
aWNTeW5jaHJvbm91c0Rpc3BhdGNoUmVnaW9ucykKKyAgICAgICAgZHJhd1JlZ2lvbihjb250ZXh0
LCByZWdpb24udmFsdWUsIGNvbG9ycy5nZXQocmVnaW9uLmtleSwgZGVmYXVsdENvbG9yKSwgYm91
bmRzKTsKICAgICBkcmF3UmVnaW9uKGNvbnRleHQsIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuYXN5
bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24sIG1fY29sb3IsIGJvdW5kcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCBkZTM3ZmMyMDU5
MTRmMTNiMjM2ZDBmM2E5OTg3YmFjYTJlZWMzM2FhLi42NDIyMDNjNGEyN2M1MjMyMDYxY2YzZTE2
MmJlNzhhOTcxZmM2OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVz
ZXJUaW1pbmcuY3BwCkBAIC0zNCw2MiArMzQsNDAgQEAKICNpbmNsdWRlICJQZXJmb3JtYW5jZVRp
bWluZy5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvU29ydGVkQXJyYXlNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBOYXZp
Z2F0aW9uVGltaW5nRnVuY3Rpb24gPSB1bnNpZ25lZCBsb25nIGxvbmcgKFBlcmZvcm1hbmNlVGlt
aW5nOjoqKSgpIGNvbnN0Owotc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlvbj4mIHJlc3RyaWN0
ZWRNYXJrTmFtZXNUb05hdmlnYXRpb25UaW1pbmdGdW5jdGlvbk1hcCgpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWlu
Z0Z1bmN0aW9uPiB7Ci0gICAgICAgIHsgImNvbm5lY3RFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWlu
Zzo6Y29ubmVjdEVuZCB9LAotICAgICAgICB7ICJjb25uZWN0U3RhcnQiX3MsICZQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdFN0YXJ0IH0sCi0gICAgICAgIHsgImRvbUNvbXBsZXRlIl9zLCAmUGVy
Zm9ybWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRlIH0sCi0gICAgICAgIHsgImRvbUNvbnRlbnRMb2Fk
ZWRFdmVudEVuZCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRF
bmQgfSwKLSAgICAgICAgeyAiZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQiX3MsICZQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgfSwKLSAgICAgICAgeyAiZG9t
SW50ZXJhY3RpdmUiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9tSW50ZXJhY3RpdmUgfSwKLSAg
ICAgICAgeyAiZG9tTG9hZGluZyJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21Mb2FkaW5nIH0s
Ci0gICAgICAgIHsgImRvbWFpbkxvb2t1cEVuZCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21h
aW5Mb29rdXBFbmQgfSwKLSAgICAgICAgeyAiZG9tYWluTG9va3VwU3RhcnQiX3MsICZQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9tYWluTG9va3VwU3RhcnQgfSwKLSAgICAgICAgeyAiZmV0Y2hTdGFydCJf
cywgJlBlcmZvcm1hbmNlVGltaW5nOjpmZXRjaFN0YXJ0IH0sCi0gICAgICAgIHsgImxvYWRFdmVu
dEVuZCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpsb2FkRXZlbnRFbmQgfSwKLSAgICAgICAgeyAi
bG9hZEV2ZW50U3RhcnQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQgfSwK
LSAgICAgICAgeyAibmF2aWdhdGlvblN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6Om5hdmln
YXRpb25TdGFydCB9LAotICAgICAgICB7ICJyZWRpcmVjdEVuZCJfcywgJlBlcmZvcm1hbmNlVGlt
aW5nOjpyZWRpcmVjdEVuZCB9LAotICAgICAgICB7ICJyZWRpcmVjdFN0YXJ0Il9zLCAmUGVyZm9y
bWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQgfSwKLSAgICAgICAgeyAicmVxdWVzdFN0YXJ0Il9z
LCAmUGVyZm9ybWFuY2VUaW1pbmc6OnJlcXVlc3RTdGFydCB9LAotICAgICAgICB7ICJyZXNwb25z
ZUVuZCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZUVuZCB9LAotICAgICAgICB7ICJy
ZXNwb25zZVN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQgfSwKLSAg
ICAgICAgeyAic2VjdXJlQ29ubmVjdGlvblN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnNl
Y3VyZUNvbm5lY3Rpb25TdGFydCB9LAotICAgICAgICB7ICJ1bmxvYWRFdmVudEVuZCJfcywgJlBl
cmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCB9LAotICAgICAgICB7ICJ1bmxvYWRFdmVu
dFN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQgfSwKLSAgICB9
OwotICAgIHJldHVybiBtYXA7Ci19Ci0KLXN0YXRpYyBOYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb24g
cmVzdHJpY3RlZE1hcmtGdW5jdGlvbihjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIHJlc3RyaWN0ZWRNYXJrTmFtZXNUb05h
dmlnYXRpb25UaW1pbmdGdW5jdGlvbk1hcCgpLmdldChtYXJrTmFtZSk7Ci19CiAKLXN0YXRpYyBi
b29sIGlzUmVzdHJpY3RlZE1hcmtOYW1lTm9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG1hcmtO
YW1lKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYm9vbCBpc1Jlc3Ry
aWN0ZWQ7Ci0gICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZpc1Jlc3RyaWN0ZWQsIG1hcmtO
YW1lID0gbWFya05hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgaXNSZXN0cmljdGVkID0g
cmVzdHJpY3RlZE1hcmtOYW1lc1RvTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uTWFwKCkuY29udGFp
bnMobWFya05hbWUpOwotICAgIH0pOwotICAgIHJldHVybiBpc1Jlc3RyaWN0ZWQ7Ci19CitzdGF0
aWMgY29uc3RleHByIHN0ZDo6cGFpcjxDb21wYXJhYmxlQVNDSUlMaXRlcmFsLCBOYXZpZ2F0aW9u
VGltaW5nRnVuY3Rpb24+IHJlc3RyaWN0ZWRNYXJrTWFwcGluZ3NbXSA9IHsKKyAgICB7ICJjb25u
ZWN0RW5kIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0RW5kIH0sCisgICAgeyAiY29ubmVj
dFN0YXJ0IiwgJlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgfSwKKyAgICB7ICJkb21D
b21wbGV0ZSIsICZQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29tcGxldGUgfSwKKyAgICB7ICJkb21D
b250ZW50TG9hZGVkRXZlbnRFbmQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUNvbnRlbnRMb2Fk
ZWRFdmVudEVuZCB9LAorICAgIHsgImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0IiwgJlBlcmZv
cm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCB9LAorICAgIHsgImRvbUlu
dGVyYWN0aXZlIiwgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21JbnRlcmFjdGl2ZSB9LAorICAgIHsg
ImRvbUxvYWRpbmciLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmRvbUxvYWRpbmcgfSwKKyAgICB7ICJk
b21haW5Mb29rdXBFbmQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCB9LAor
ICAgIHsgImRvbWFpbkxvb2t1cFN0YXJ0IiwgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29r
dXBTdGFydCB9LAorICAgIHsgImZldGNoU3RhcnQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmZldGNo
U3RhcnQgfSwKKyAgICB7ICJsb2FkRXZlbnRFbmQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRF
dmVudEVuZCB9LAorICAgIHsgImxvYWRFdmVudFN0YXJ0IiwgJlBlcmZvcm1hbmNlVGltaW5nOjps
b2FkRXZlbnRTdGFydCB9LAorICAgIHsgIm5hdmlnYXRpb25TdGFydCIsICZQZXJmb3JtYW5jZVRp
bWluZzo6bmF2aWdhdGlvblN0YXJ0IH0sCisgICAgeyAicmVkaXJlY3RFbmQiLCAmUGVyZm9ybWFu
Y2VUaW1pbmc6OnJlZGlyZWN0RW5kIH0sCisgICAgeyAicmVkaXJlY3RTdGFydCIsICZQZXJmb3Jt
YW5jZVRpbWluZzo6cmVkaXJlY3RTdGFydCB9LAorICAgIHsgInJlcXVlc3RTdGFydCIsICZQZXJm
b3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0IH0sCisgICAgeyAicmVzcG9uc2VFbmQiLCAmUGVy
Zm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlRW5kIH0sCisgICAgeyAicmVzcG9uc2VTdGFydCIsICZQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCB9LAorICAgIHsgInNlY3VyZUNvbm5lY3Rp
b25TdGFydCIsICZQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0IH0sCisg
ICAgeyAidW5sb2FkRXZlbnRFbmQiLCAmUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50RW5k
IH0sCisgICAgeyAidW5sb2FkRXZlbnRTdGFydCIsICZQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2Fk
RXZlbnRTdGFydCB9LAorfTsKK3N0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgcmVzdHJp
Y3RlZE1hcmtGdW5jdGlvbnMgeyByZXN0cmljdGVkTWFya01hcHBpbmdzIH07CiAKIGJvb2wgUGVy
Zm9ybWFuY2VVc2VyVGltaW5nOjppc1Jlc3RyaWN0ZWRNYXJrTmFtZShjb25zdCBTdHJpbmcmIG1h
cmtOYW1lKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIHJlc3Ry
aWN0ZWRNYXJrTmFtZXNUb05hdmlnYXRpb25UaW1pbmdGdW5jdGlvbk1hcCgpLmNvbnRhaW5zKG1h
cmtOYW1lKTsKKyAgICByZXR1cm4gcmVzdHJpY3RlZE1hcmtGdW5jdGlvbnMuY29udGFpbnMobWFy
a05hbWUpOwogfQogCiBQZXJmb3JtYW5jZVVzZXJUaW1pbmc6OlBlcmZvcm1hbmNlVXNlclRpbWlu
ZyhQZXJmb3JtYW5jZSYgcGVyZm9ybWFuY2UpCkBAIC0xMzYsMTggKzExNCwxOCBAQCBFeGNlcHRp
b25Pcjxkb3VibGU+IFBlcmZvcm1hbmNlVXNlclRpbWluZzo6Y29udmVydE1hcmtUb1RpbWVzdGFt
cChjb25zdCBzdGQ6OnZhcgogRXhjZXB0aW9uT3I8ZG91YmxlPiBQZXJmb3JtYW5jZVVzZXJUaW1p
bmc6OmNvbnZlcnRNYXJrVG9UaW1lc3RhbXAoY29uc3QgU3RyaW5nJiBtYXJrKSBjb25zdAogewog
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgaWYgKGlzUmVzdHJpY3RlZE1hcmtO
YW1lTm9uTWFpblRocmVhZChtYXJrKSkKKyAgICAgICAgaWYgKHJlc3RyaWN0ZWRNYXJrRnVuY3Rp
b25zLmNvbnRhaW5zKG1hcmspKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gcmVzdHJp
Y3RlZE1hcmtGdW5jdGlvbihtYXJrKSkgewotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uID09ICZQ
ZXJmb3JtYW5jZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KQorICAgICAgICBpZiAoYXV0byBmdW5j
dGlvbiA9IHJlc3RyaWN0ZWRNYXJrRnVuY3Rpb25zLnRyeUdldChtYXJrKSkgeworICAgICAgICAg
ICAgaWYgKCpmdW5jdGlvbiA9PSAmUGVyZm9ybWFuY2VUaW1pbmc6Om5hdmlnYXRpb25TdGFydCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gMC4wOwogCiAgICAgICAgICAgICAvLyBQZXJmb3JtYW5j
ZVRpbWluZyBzaG91bGQgYWx3YXlzIGJlIG5vbi1udWxsIGZvciB0aGUgRG9jdW1lbnQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC4KICAgICAgICAgICAgIEFTU0VSVChtX3BlcmZvcm1hbmNlLnRpbWlu
ZygpKTsKICAgICAgICAgICAgIGF1dG8gdGltaW5nID0gbV9wZXJmb3JtYW5jZS50aW1pbmcoKTsK
ICAgICAgICAgICAgIGF1dG8gc3RhcnRUaW1lID0gdGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQoKTsK
LSAgICAgICAgICAgIGF1dG8gZW5kVGltZSA9ICgoKnRpbWluZykuKihmdW5jdGlvbikpKCk7Cisg
ICAgICAgICAgICBhdXRvIGVuZFRpbWUgPSAoKCp0aW1pbmcpLiooKmZ1bmN0aW9uKSkoKTsKICAg
ICAgICAgICAgIGlmICghZW5kVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgICAgICAgICByZXR1cm4gZW5kVGltZSAtIHN0
YXJ0VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KaW5kZXggNDU0YTRiNmZiZTE3MDJjNmRlOTYx
ZTMwYWFkNzdlM2YwODM3ODhhMy4uNmJlYTFhNDA5YmU3NzVlNTE3MjdmZDA0NDQ4ODY3ZjM5OTQ2
YTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KQEAgLTU1LDkgKzU1LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBs
YXRmb3JtQ29tbWFuZCgKICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNU
cmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAogICAgIH07
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBtYXAgeyBtYXBwaW5ncyB9Owot
ICAgIGlmIChhdXRvKiB2YWx1ZSA9IG1hcC50cnlHZXQoY29tbWFuZCkpCi0gICAgICAgIHJldHVy
biAqdmFsdWU7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbWFrZU9wdGlv
bmFsRnJvbVBvaW50ZXIobWFwLnRyeUdldChjb21tYW5kKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYT4gUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6
OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA0YzFkZmRj
ZGI5OTdmYmZhNTAwY2FhZDE5YjhmYjA3ZGQ2YTNkNGEyLi4yYTc2MTM2MmM4M2ZhNjg1YjUxYzZl
ZTA1MmM2YjEzNWMwMjVmOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUm9iaW5Ib29kSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCkBAIC0zNzMsNDMgKzM3NCw0NCBAQCBib29sIEZvbnRDYXNjYWRl
OjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gewotICAgICAgICAiQW1lcmlj
YW4gVHlwZXdyaXRlciJfcywKLSAgICAgICAgIkFyaWFsIEhlYnJldyJfcywKLSAgICAgICAgIkNo
YWxrYm9hcmQiX3MsCi0gICAgICAgICJDb2NoaW4iX3MsCi0gICAgICAgICJDb3JzaXZhIEhlYnJl
dyJfcywKLSAgICAgICAgIkNvdXJpZXIiX3MsCi0gICAgICAgICJFdXBoZW1pYSBVQ0FTIl9zLAot
ICAgICAgICAiR2VuZXZhIl9zLAotICAgICAgICAiR2lsbCBTYW5zIl9zLAotICAgICAgICAiSGVp
Il9zLAotICAgICAgICAiSGVsdmV0aWNhIl9zLAotICAgICAgICAiSG9lZmxlciBUZXh0Il9zLAot
ICAgICAgICAiSW5haU1hdGhpIl9zLAotICAgICAgICAiS2FpIl9zLAotICAgICAgICAiTHVjaWRh
IEdyYW5kZSJfcywKLSAgICAgICAgIk1hcmtlciBGZWx0Il9zLAotICAgICAgICAiTW9uYWNvIl9z
LAotICAgICAgICAiTXNodGFrYW4iX3MsCi0gICAgICAgICJOZXcgUGVuaW5pbSBNVCJfcywKLSAg
ICAgICAgIk9zYWthIl9zLAotICAgICAgICAiUmFhbmFuYSJfcywKLSAgICAgICAgIlNUSGVpdGki
X3MsCi0gICAgICAgICJTeW1ib2wiX3MsCi0gICAgICAgICJUaW1lcyJfcywKLSAgICAgICAgIkFw
cGxlIEJyYWlsbGUiX3MsCi0gICAgICAgICJBcHBsZSBMaUdvdGhpYyJfcywKLSAgICAgICAgIkFw
cGxlIExpU3VuZyJfcywKLSAgICAgICAgIkFwcGxlIFN5bWJvbHMiX3MsCi0gICAgICAgICJBcHBs
ZUdvdGhpYyJfcywKLSAgICAgICAgIkFwcGxlTXl1bmdqbyJfcywKLSAgICAgICAgIiNHdW5nU2Vv
Il9zLAotICAgICAgICAiI0hlYWRMaW5lQSJfcywKLSAgICAgICAgIiNQQ015dW5nam8iX3MsCi0g
ICAgICAgICIjUGlsR2kiX3MsCisgICAgc3RhdGljIGNvbnN0ZXhwciBDb21wYXJhYmxlQVNDSUlM
aXRlcmFsIG5hbWVzW10gPSB7CisgICAgICAgICIjR3VuZ1NlbyIsCisgICAgICAgICIjSGVhZExp
bmVBIiwKKyAgICAgICAgIiNQQ015dW5nam8iLAorICAgICAgICAiI1BpbEdpIiwKKyAgICAgICAg
IkFtZXJpY2FuIFR5cGV3cml0ZXIiLAorICAgICAgICAiQXBwbGUgQnJhaWxsZSIsCisgICAgICAg
ICJBcHBsZSBMaUdvdGhpYyIsCisgICAgICAgICJBcHBsZSBMaVN1bmciLAorICAgICAgICAiQXBw
bGUgU3ltYm9scyIsCisgICAgICAgICJBcHBsZUdvdGhpYyIsCisgICAgICAgICJBcHBsZU15dW5n
am8iLAorICAgICAgICAiQXJpYWwgSGVicmV3IiwKKyAgICAgICAgIkNoYWxrYm9hcmQiLAorICAg
ICAgICAiQ29jaGluIiwKKyAgICAgICAgIkNvcnNpdmEgSGVicmV3IiwKKyAgICAgICAgIkNvdXJp
ZXIiLAorICAgICAgICAiRXVwaGVtaWEgVUNBUyIsCisgICAgICAgICJHZW5ldmEiLAorICAgICAg
ICAiR2lsbCBTYW5zIiwKKyAgICAgICAgIkhlaSIsCisgICAgICAgICJIZWx2ZXRpY2EiLAorICAg
ICAgICAiSG9lZmxlciBUZXh0IiwKKyAgICAgICAgIkluYWlNYXRoaSIsCisgICAgICAgICJLYWki
LAorICAgICAgICAiTHVjaWRhIEdyYW5kZSIsCisgICAgICAgICJNYXJrZXIgRmVsdCIsCisgICAg
ICAgICJNb25hY28iLAorICAgICAgICAiTXNodGFrYW4iLAorICAgICAgICAiTmV3IFBlbmluaW0g
TVQiLAorICAgICAgICAiT3Nha2EiLAorICAgICAgICAiUmFhbmFuYSIsCisgICAgICAgICJTVEhl
aXRpIiwKKyAgICAgICAgIlN5bWJvbCIsCisgICAgICAgICJUaW1lcyIsCiAgICAgfTsKLSAgICBy
ZXR1cm4gIW1hcC5nZXQoKS5jb250YWlucyhmYW1pbHkpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
U29ydGVkQXJyYXlTZXQgc2V0IHsgbmFtZXMgfTsKKyAgICByZXR1cm4gIXNldC5jb250YWlucyhm
YW1pbHkpOwogfQogCiBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZh
aWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNDk0YjA0N2E0NWE4NGU0
Mzk0ZjVhZjMyZDBlNTljNmU4MzAyNmUzYy4uN2Q4ZWU3MTQ2M2RiMmU2NDZjZWFkZThhNjNjZTY2
NmJiNzA2YWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAKKyNpbmNsdWRlIDx3dGYvU29y
dGVkQXJyYXlNYXAuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKQEAgLTMy
LDEzICszNCw2IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoKQogewogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25h
bDxWYWx1ZVR5cGU+IG1ha2VPcHRpb25hbEZyb21Qb2ludGVyKGNvbnN0IFZhbHVlVHlwZSogcG9p
bnRlcikKLXsKLSAgICBpZiAoIXBvaW50ZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuICpwb2ludGVyOwotfQotCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxp
cXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhW
YXJpYW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSwgY29uc3QgQ3JlYXRp
b25EYXRhKiBjcmVhdGlvbkRhdGEpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fb3JpZW50
YXRpb24ob3JpZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRkNDdmOTY0MDAyYjNh
OTA2YzAxMjkwNjcuLmE5MGQ0MWZmNDIzMjc5NjNhNDdlNWM0M2U3NWYzM2NhZDk0YzQ5YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
Y3BwCkBAIC0zMTIsMTMgKzMxMiw2IEBAIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBh
cnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYKICAgICByZXR1
cm4gcGFyYW1ldGVyczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPiBzdGF0aWMg
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcihj
b25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCi17Ci0gICAgaWYgKCFwb2ludGVyKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiAqcG9pbnRlcjsKLX0KLQogc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM6OkNvZGVjPiBwYXJzZURvVmlDb2RlY1R5cGUoU3Ry
aW5nVmlldyBzdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBhaXI8UGFja2Vk
QVNDSUlMb3dlckNvZGVzPHVpbnQzMl90PiwgRG9WaVBhcmFtZXRlcnM6OkNvZGVjPiB0eXBlc0Fy
cmF5W10gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hl
Lm1tCmluZGV4IDdlYmU1MTI1YWY2NTAyMmVhMjhiZmMyNTVjNjY0MzlmNDE3MTUyMzMuLmQ4NDgw
NWYyMzUxZWIxZDM2MzgzNzg5OWE4NmM2MDg4ZWM0MzcxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlw
ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9p
ZCBBVkFzc2V0TUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUgKIAogI2lmIEVOQUJMRShXRUJNX0ZPUk1BVF9SRUFERVIpCiAg
ICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIGF1dG8gd2VibVR5cGVzID0gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
d2VibU1JTUVUeXBlcygpOwotICAgICAgICBjYWNoZS5hZGQod2VibVR5cGVzLmJlZ2luKCksIHdl
Ym1UeXBlcy5lbmQoKSk7CisgICAgICAgIGF1dG8gdHlwZXMgPSBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMoKTsKKyAgICAgICAgY2FjaGUuYWRkKHR5cGVzLmJlZ2lu
KCksIHR5cGVzLmVuZCgpKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQppbmRleCBiYTUwNjFlYmI1YzVmYmUwNzRkM2EyOWRlYTRmOTE4ZmMyNjIxY2Q2Li5lZjE1ODNk
YWIzMjI5MzNhYTFjNjNhYjk4MGU2NjVhZGZhZGJjYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbQpAQCAtMTQ1LDYgKzE0NSw3IEBAIC0gKHZvaWQpY29udGVudEtleVNlc3Npb25Db250ZW50
UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyRGlkQ2hhbmdlOihBVkNvbnRlbnRLCiAgICAgaWYg
KF9wYXJlbnQpCiAgICAgICAgIF9wYXJlbnQtPnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChzZXNz
aW9uLmNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXIpOwogfQorCiAtICh2b2lkKWNv
bnRlbnRLZXlTZXNzaW9uOihBVkNvbnRlbnRLZXlTZXNzaW9uICopc2Vzc2lvbiBjb250ZW50UHJv
dGVjdGlvblNlc3Npb25JZGVudGlmaWVyRGlkQ2hhbmdlRm9yS2V5R3JvdXA6KG51bGxhYmxlIEFW
Q29udGVudEtleVJlcG9ydEdyb3VwICopcmVwb3J0R3JvdXAKIHsKICAgICAvLyBGSVhNRTogUmVt
b3ZlIGFmdGVyIHJkYXI6Ly81NzQzMDc0NyBpcyBmaXhlZApAQCAtMjk4LDkgKzI5OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCEtLW1fbnVtYmVyT2ZFeHBlY3RlZFJlc3BvbnNlcykKICAgICAg
ICAgICAgIG1fY2FsbGJhY2soV1RGTW92ZShtX3Jlc3BvbnNlcykpOwogICAgIH0KLSAgICB2b2lk
IGFkZEVycm9yUmVzcG9uc2UoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCwgTlNFcnJvciog
ZXJyb3IpCisgICAgdm9pZCBhZGRFcnJvclJlc3BvbnNlKEFWQ29udGVudEtleVJlcXVlc3QqIHJl
cXVlc3QsIE5TRXJyb3IqKQogICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAg
ICAgICAgbV9yZXNwb25zZXMuc2V0KHJlcXVlc3QsIG51bGxwdHIpOwogICAgICAgICBpZiAoIS0t
bV9udW1iZXJPZkV4cGVjdGVkUmVzcG9uc2VzKQogICAgICAgICAgICAgbV9jYWxsYmFjayhXVEZN
b3ZlKG1fcmVzcG9uc2VzKSk7CkBAIC01MzYsOSArNTM2LDggQEAgYm9vbCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29u
dGVudEsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChOU0RhdGEgKnNlc3Npb25J
ZGVudGlmaWVyKQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YSAqKQogewotICAgIFVOVVNFRF9QQVJBTShzZXNz
aW9uSWRlbnRpZmllcik7CiAgICAgLy8gTm8tb3AuIElmIHdlIGFyZSBnZXR0aW5nIHRoaXMgY2Fs
bGJhY2ssIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBBVkNvbnRlbnRLZXlSZXF1ZXN0R3JvdXBzIHdo
aWNoIGFyZSBtYW5hZ2luZyB0aGVpciBvd24KICAgICAvLyBzZXNzaW9uIGlkZW50aWZpZXJzLgog
fQpAQCAtOTE3LDkgKzkxNiw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgbV91cGRh
dGVMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBs
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYsIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luKTsK
ICAgICBpZiAobGljZW5zZVR5cGUgPT0gTGljZW5zZVR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29y
ZCkgewogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgp
OwogICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSB8fCAh
c3RvcmFnZVVSTCkgewpAQCAtMTIxMyw4ICsxMjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0
YWkKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9
IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwogICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAg
ICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBw
SWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQo
KSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwg
YWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJv
cikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlE
KSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICop
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RG
TW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0b3ItPnJlcXVlc3RzRGF0YS5hcHBlbmQo
eyBXVEZNb3ZlKGtleUlEKSwgV1RGTW92ZShjb250ZW50S2V5UmVxdWVzdERhdGEpIH0pOwogICAg
ICAgICAgICAgICAgIH0pOwpAQCAtMTI3NiwxNSArMTI3MywxMiBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVz
dChBVkNvbgogICAgIH0KIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5UmVx
dWVzdCAqcmVxdWVzdCkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3Qg
KikKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChB
VkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKIHsKLSAgICBVTlVT
RURfUEFSQU0ocmVxdWVzdCk7Ci0KICAgICAvLyBSYXRoZXIgdGhhbiByZWplY3QgdGhlIHVwZGF0
ZSgpIHByb21pc2Ugd2hlbiB0aGUgQ0RNIGluZGljYXRlcyB0aGF0CiAgICAgLy8gdGhlIGtleSBy
ZXF1aXJlcyBhIGhpZ2hlciBsZXZlbCBvZiBzZWN1cml0eSB0aGFuIGl0IGlzIGN1cnJlbnRseSBh
YmxlCiAgICAgLy8gdG8gcHJvdmlkZSwgc2lnbmFsIHRoaXMgc3RhdGUgYnkgInN1Y2NlZWRpbmci
LCBidXQgc2V0IHRoZSBrZXkgc3RhdHVzCkBAIC0xMzEyLDcgKzEzMDYsNiBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJl
cXVlc3QoQVZDb250ZQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkK
IHsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CiAgICAgaWYgKG1fdXBkYXRlUmVzcG9uc2VD
b2xsZWN0b3IpIHsKICAgICAgICAgbV91cGRhdGVSZXNwb25zZUNvbGxlY3Rvci0+YWRkU3VjY2Vz
c2Z1bFJlc3BvbnNlKHJlcXVlc3QsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CkBAIC0xMzcx
LDEwICsxMzY0LDggQEAgYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Omhhc1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCoKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpz
aG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCwg
TlNTdHJpbmcgKnJlYXNvbikKK2Jvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVxdWVz
dCAqLCBOU1N0cmluZyAqKQogewotICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSAgICBVTlVT
RURfUEFSQU0ocmVhc29uKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTEzOTMsOSArMTM4NCw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhCiAgICAg
ICAgIG1fY2xpZW50LT5zZXNzaW9uSWRDaGFuZ2VkKG1fc2Vzc2lvbklkKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklk
ZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNEYXRhICpz
ZXNzaW9uSWRlbnRpZmllcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChBVkNvbnRlbnRLZXlSZXBv
cnRHcm91cCosIE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGdyb3VwKTsKICAgICBzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoc2Vzc2lvbklkZW50aWZpZXIp
OwogfQogCkBAIC0xNDUyLDE2ICsxNDQyLDE1IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50CiAg
ICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0dXNlcygpKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFs
UHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqIHJlcXVlc3QpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtl
eVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVl
c3QpOwogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVwZGF0ZVBy
b3RlY3Rpb25TdGF0dXNGb3JEaXNwbGF5SUQobV9jbGllbnQtPmRpc3BsYXlJRCgpKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlS
ZXF1ZXN0ICpyZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBkaXNwbGF5
SUQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKEFW
Q29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5
SUQ+KSBjb25zdAogewogI2lmIEhBVkUoQVZDT05URU5US0VZUkVRVUVTVF9QRU5ESU5HX1BST1RF
Q1RJT05fU1RBVFVTKQogICAgIGlmIChbcmVxdWVzdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGV4dGVybmFsQ29udGVudFByb3RlY3Rpb25TdGF0dXMpXSkgewpAQCAtMTQ3OCw3ICsxNDY3
LDYgQEAgc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGkKICAgICAvLyBhY3Jvc3MgYWxsIGRpc3BsYXlz
LiBSZXBsYWNlIHRoZSBiZWxvdyB3aXRoIGV4cGxpY2l0IEFQSXMgdG8gcXVlcnkgdGhlIHBlci1k
aXNwbGF5IEhEQ1Agc3RhdHVzIGluIHRoZSBVSVByb2Nlc3MKICAgICAvLyBhbmQgdG8gcXVlcnkg
dGhlIEhEQ1AgbGV2ZWwgcmVxdWlyZWQgYnkgZWFjaCBBVkNvbnRlbnRLZXlSZXF1ZXN0LCBhbmQg
ZG8gdGhlIGNvbXBhcmlzb24gYmV0d2VlbiB0aGUgdHdvIGluIHRoZQogICAgIC8vIFdlYlByb2Nl
c3MuCi0gICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlJRCk7CiAgICAgaWYgKFtyZXF1ZXN0IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2lsbE91dHB1dEJlT2JzY3VyZWREdWVUb0luc3VmZmlj
aWVudEV4dGVybmFsUHJvdGVjdGlvbkZvckRpc3BsYXlzOildKSB7CiAKICAgICAgICAgLy8gd2ls
bE91dHB1dEJlT2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkZvckRp
c3BsYXlzIHdpbGwgYWx3YXlzIHJldHVybiAiWUVTIiBwcmlvciB0bwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmluZGV4IDQ2ZjY5
NDE3ZmQyNmYzMTU0YzA0OWFkZDdiOTVmZDA3ZDQ0NGZkNDEuLmFjYWJhMzE0ZGRjYTA1NTNkMjA3
NjY4ZGM4ZjE1ZDQ1NmI2ZGU1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0
PFN0cmluZz4mIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQgZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMgPSBbXSB7Ci0gICAgICAgIEhh
c2hTZXQ8U3RyaW5nPiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0gewog
ICAgICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiJfcywKICAgICAgICAgICAgICJjb20ubWlj
cm9zb2Z0LmJtcCJfcywKICAgICAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciJfcywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggOGY1ZTg3OTBmMmZlMTBiYTEyM2YxM2Yy
MDNjYzdlMzFlY2E5MWRmMy4uNjBjNTE4ZTY4MWIwZWVmM2Q5MmFiN2I2MzcyOGQ0MDBmNmM2Nzhl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTU1MywxOSArNTUzLDIx
IEBAIHByaXZhdGU6CiAgICAgd2VibTo6VHJhY2tFbnRyeSBtX3RyYWNrOwogfTsKIAotY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OndlYm1NSU1FVHlwZXMoKQorU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIHR5cGVzID0gW10gewotICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiB0eXBlczsKKyNpZiAhKEVOQUJMRShWUDkpIHx8IEVOQUJMRShW
T1JCSVMpIHx8IEVOQUJMRShPUFVTKSkKKyAgICByZXR1cm4geyB9OworI2Vsc2UKKyAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdHlwZXMgewogI2lmIEVOQUJMRShWUDkpCi0gICAgICAg
IHR5cGVzLmFkZCgidmlkZW8vd2VibSIpOworICAgICAgICAidmlkZW8vd2VibSJfcywKICNlbmRp
ZgogI2lmIEVOQUJMRShWT1JCSVMpIHx8IEVOQUJMRShPUFVTKQotICAgICAgICB0eXBlcy5hZGQo
ImF1ZGlvL3dlYm0iKTsKKyAgICAgICAgImF1ZGlvL3dlYm0iX3MsCiAjZW5kaWYKLSAgICAgICAg
cmV0dXJuIHR5cGVzOwotICAgIH0oKTsKKyAgICB9OwogICAgIHJldHVybiB0eXBlczsKKyNlbmRp
ZgogfQogCiBzdGF0aWMgYm9vbCBjYW5Mb2FkRm9ybWF0UmVhZGVyKCkKQEAgLTgwNiw3ICs4MDgs
NiBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVy
KHVpbnQ2NF90IHRyYWNrTnVtYmVyKSAtPiBUcgogCiBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQWN0
aW9uKiBhY3Rpb24pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBBU1NFUlQo
YWN0aW9uKTsKICAgICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtOb3RFbm91Z2hNZW1vcnkpOwpAQCAtODc5LDcgKzg4MCw2IEBAIFN0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFk
YXRhLCBBCiAKIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVsZW1lbnRFbmQoY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRh
dGEpOwogICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgYXV0
byBvbGRTdGF0ZSA9IG1fc3RhdGU7CkBAIC05MTksOSArOTE5LDggQEAgU3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEVuZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFk
YXRhKQogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi1TdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCitTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IEVibWwmIGVibWwpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSKTsKIAogICAgIGlmIChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1s
LmRvY190eXBlLnZhbHVlKCkuY29tcGFyZSgid2VibSIpKQpAQCAtOTM5LDkgKzkzOCw4IEBAIFN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29uc3QgRWxlbWVudE1ldGFkYXRh
JiBtZXRhZGF0YSwgY29uc3QgRWJtCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBs
ZXRlZCk7CiB9CiAKLVN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdp
bihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKK1N0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBFbGVtZW50TWV0
YWRhdGEmLCBBY3Rpb24qIGFjdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwog
ICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKCFtX2lu
aXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKSB7CkBAIC05NTcsOSArOTU1LDggQEAgU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRN
ZXRhZGF0YSYgbWV0YWRhdGEsIEEKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxl
dGVkKTsKIH0KIAotU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBJbmZvJiBpbmZvKQorU3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBFbGVtZW50TWV0YWRhdGEmLCBjb25zdCBJ
bmZvJiBpbmZvKQogewotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CiAgICAgSU5GT19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1faW5pdGlhbGl6YXRpb25T
ZWdtZW50RW5jb3VudGVyZWQgfHwgIW1faW5pdGlhbGl6YXRpb25TZWdtZW50KSB7CkBAIC05NzQs
OSArOTcxLDggQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uSW5mbyhjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBJbmYKICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IENs
dXN0ZXImIGNsdXN0ZXIsIEFjdGlvbiogYWN0aW9uKQorU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0IENsdXN0
ZXImIGNsdXN0ZXIsIEFjdGlvbiogYWN0aW9uKQogewotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0
YSk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKICAgICBBU1NF
UlQoYWN0aW9uKTsKQEAgLTk5MSw5ICs5ODcsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwog
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi1TdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IFRyYWNrRW50cnkmIHRyYWNrRW50cnkpCitTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYsIGNvbnN0
IFRyYWNrRW50cnkmIHRyYWNrRW50cnkpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsK
ICAgICBpZiAoIXRyYWNrRW50cnkudHJhY2tfdHlwZS5pc19wcmVzZW50KCkgfHwgIXRyYWNrRW50
cnkuY29kZWNfaWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKIApAQCAtMTAwMiwxMiArOTk3LDEyIEBAIFN0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0
YSwgY29uCiAKICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsIHRyYWNr
VHlwZSwgIiwgY29kZWMgIiwgY29kZWNJZCk7CiAKLSAgICBpZiAodHJhY2tUeXBlID09IFRyYWNr
VHlwZTo6a1ZpZGVvICYmICFzdXBwb3J0ZWRWaWRlb0NvZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQp
KSB7CisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbyAmJiAhaXNTdXBwb3J0
ZWRWaWRlb0NvZGVjKGNvZGVjSWQpKSB7CiAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0ZWQgdmlkZW8gY29kZWMgSUQgIiwg
Y29kZWNJZCk7CiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6
VW5zdXBwb3J0ZWRWaWRlb0NvZGVjKSk7CiAgICAgfQogCi0gICAgaWYgKHRyYWNrVHlwZSA9PSBU
cmFja1R5cGU6OmtBdWRpbyAmJiAhc3VwcG9ydGVkQXVkaW9Db2RlY3MoKS5jb250YWlucyhjb2Rl
Y0lkKSkgeworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8gJiYgIWlzU3Vw
cG9ydGVkQXVkaW9Db2RlYyhjb2RlY0lkKSkgewogICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIGF1ZGlvIGNvZGVjIElE
ICIsIGNvZGVjSWQpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNv
ZGU6OlVuc3VwcG9ydGVkQXVkaW9Db2RlYykpOwogICAgIH0KQEAgLTEwNzMsOSArMTA2OCw4IEBA
IFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0Nv
bXBsZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgQmxvY2smIGJs
b2NrLCBBY3Rpb24qIGFjdGlvbikKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpPbkJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgQmxvY2smIGJsb2Nr
LCBBY3Rpb24qIGFjdGlvbikKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwogICAgIElO
Rk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgQVNTRVJUKGFjdGlvbik7
CkBAIC0xMDg5LDEwICsxMDgzLDggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldl
Yk06Ok9uQmxvY2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXQKICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotd2VibTo6U3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRh
ZGF0YSwgY29uc3QgQmxvY2smIGJsb2NrKQord2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRhJiwgY29uc3QgQmxvY2smKQog
ewotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsK
ICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKIAogICAgIG1fY3VycmVu
dEJsb2NrID0gc3RkOjpudWxsb3B0OwpAQCAtMTEwMCw5ICsxMDkyLDggQEAgd2VibTo6U3RhdHVz
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tFbmQoY29uc3QgRWxlbWVudE1ldGFkYXRh
JiBtZXRhZGF0YSwKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0K
IAotd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdp
bihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYgYmxv
Y2ssIEFjdGlvbiogYWN0aW9uKQord2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uU2ltcGxlQmxvY2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmLCBjb25zdCBTaW1wbGVC
bG9jayYgYmxvY2ssIEFjdGlvbiogYWN0aW9uKQogewotICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0
YSk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKICAgICBBU1NF
UlQoYWN0aW9uKTsKQEAgLTExMTYsMjEgKzExMDcsMTcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEm
IG0KICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotd2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tFbmQoY29uc3QgRWxl
bWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgU2ltcGxlQmxvY2smIGJsb2NrKQord2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tFbmQoY29uc3QgRWxl
bWVudE1ldGFkYXRhJiwgY29uc3QgU2ltcGxlQmxvY2smKQogewotICAgIFVOVVNFRF9QQVJBTSht
ZXRhZGF0YSk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSAg
ICBVTlVTRURfUEFSQU0oYmxvY2spOwotCiAgICAgbV9jdXJyZW50QmxvY2sgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKGNvbnN0
IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIHdlYm06OkFjdGlvbiogYWN0aW9uKQor
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKGNv
bnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiogYWN0aW9uKQogewotICAg
IFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUik7CiAKICAgICBBU1NFUlQoYWN0aW9uKTsKQEAgLTExNDEsOSArMTEyOCw4IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbihjb25z
dCB3ZWJtOjpFbGVtZW50TWV0YWRhCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBs
ZXRlZCk7CiB9CiAKLXdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2Nr
R3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3Qgd2Vi
bTo6QmxvY2tHcm91cCYgYmxvY2tHcm91cCkKK3dlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJiwgY29u
c3Qgd2VibTo6QmxvY2tHcm91cCYgYmxvY2tHcm91cCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWV0
YWRhdGEpOwogICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIGlm
IChibG9ja0dyb3VwLmJsb2NrLmlzX3ByZXNlbnQoKSAmJiBibG9ja0dyb3VwLmRpc2NhcmRfcGFk
ZGluZy5pc19wcmVzZW50KCkpIHsKICAgICAgICAgYXV0byB0cmFja051bWJlciA9IGJsb2NrR3Jv
dXAuYmxvY2sudmFsdWUoKS50cmFja19udW1iZXI7CkBAIC0xNTI3LDE2ICsxNTEzLDE0IEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24o
ZmxvYXQgZHVyYXRpb24pCiAgICAgbV9taW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbiA9IGR1cmF0
aW9uOwogfQogCi1jb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8
U3RyaW5nPiYgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkVmlkZW9Db2RlY3MoKQor
Ym9vbCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc1N1cHBvcnRlZFZpZGVvQ29kZWMoU3RyaW5n
VmlldyBuYW1lKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlD
b21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiB7ICJWX1ZQOCJfcywgIlZf
VlA5Il9zIH07Ci0gICAgcmV0dXJuIGNvZGVjczsKKyAgICByZXR1cm4gbmFtZSA9PSAiVl9WUDgi
IHx8IG5hbWUgPT0gIlZfVlA5IjsKIH0KIAotY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRl
ZEF1ZGlvQ29kZWNzKCkKK2Jvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNTdXBwb3J0ZWRB
dWRpb0NvZGVjKFN0cmluZ1ZpZXcgbmFtZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQg
Y29kZWNzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4g
eyAiQV9WT1JCSVMiX3MsICJBX09QVVMiX3MgfTsKLSAgICByZXR1cm4gY29kZWNzOworICAgIHJl
dHVybiBuYW1lID09ICJBX1ZPUkJJUyIgfHwgbmFtZSA9PSAiQV9PUFVTIjsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDQ1NWNmYjU4MDQ2YzZlZmFhODE5MjA1Mzc1
Njc5OWUxZWZlMmQwNzQuLjg2MzEwNWNhODJmODgxMGM1ZDE1NTQ4ZTM1YmQxMmY3MzJkYTE1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTM1LDE0ICszNSw4IEBACiAjaW5j
bHVkZSA8d2VibS9jYWxsYmFjay5oPgogI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CiAjaW5jbHVk
ZSA8d2VibS92cDlfaGVhZGVyX3BhcnNlci5oPgotI2luY2x1ZGUgPHd0Zi9Cb3guaD4KLSNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JvYmluSG9vZEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
b3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIHR5cGVk
ZWYgc3RydWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tCdWZmZXJSZWY7CkBAIC01Myw4
ICs0Nyw2IEBAIGNsYXNzIFdlYm1QYXJzZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgTWVkaWFTYW1wbGVBVkZPYmpDOwotCiBjbGFzcyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNIDog
cHVibGljIFNvdXJjZUJ1ZmZlclBhcnNlciwgcHJpdmF0ZSB3ZWJtOjpDYWxsYmFjayB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02Miw3ICs1NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBib29sIGlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpOwogICAg
IHN0YXRpYyBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXNDb250ZW50VHlwZVN1cHBv
cnRlZChjb25zdCBDb250ZW50VHlwZSYpOwotICAgIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgd2VibU1JTUVUeXBlcygpOworICAgIHN0YXRp
YyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc3VwcG9ydGVkTUlNRVR5cGVzKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQYXJzZXJXZWJNPiBjcmVhdGUo
Y29uc3QgQ29udGVudFR5cGUmKTsKIAogICAgIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKTsKQEAg
LTI1Niw4ICsyNDgsOCBAQCBwcml2YXRlOgogCiAgICAgVHJhY2tEYXRhKiB0cmFja0RhdGFGb3JU
cmFja051bWJlcih1aW50NjRfdCk7CiAKLSAgICBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFZpZGVvQ29kZWNzKCk7
Ci0gICAgc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNl
dDxTdHJpbmc+JiBzdXBwb3J0ZWRBdWRpb0NvZGVjcygpOworICAgIHN0YXRpYyBib29sIGlzU3Vw
cG9ydGVkVmlkZW9Db2RlYyhTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZEF1ZGlvQ29kZWMoU3RyaW5nVmlldyk7CiAKICAgICAvLyB3ZWJtOjpDYWxsYmFjawogICAgIHdl
Ym06OlN0YXR1cyBPbkVsZW1lbnRCZWdpbihjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmLCB3
ZWJtOjpBY3Rpb24qKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzLmNwcAppbmRleCBjNDIyYjI5ZWQ3NzA1YWZmMzNkOTgwNmI3ZDRiZTNmNzEwZjky
MTA3Li5jNzQ3MTBiYzFjZjgyNjNjODA4YmNjODUwN2ZlM2I4MGU1ODBlYjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkBAIC00OCwxMDAgKzQ4
LDEwNSBAQCBTVkdSZXNvdXJjZXM6OlNWR1Jlc291cmNlcygpCiB7CiB9CiAKK3N0YXRpYyBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gdGFnU2V0KFNw
YW48ZGVjbHR5cGUoU1ZHTmFtZXM6OmFUYWcpKiBjb25zdD4gdGFncykKK3sKKyAgICBNZW1vcnlD
b21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gc2V0OworICAgIHNl
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRhZ3Muc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHRh
ZyA6IHRhZ3MpCisgICAgICAgIHNldC5hZGQodGFnLT5nZXQoKS5sb2NhbE5hbWUoKSk7CisgICAg
cmV0dXJuIHNldDsKK30KKwogc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiYgY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hTZXQ8QXRvbVN0cmluZz4+IHNfdGFnTGlzdDsKLSAgICBpZiAoc190YWdMaXN0LmdldCgp
LmlzRW1wdHkoKSkgeworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSB0YWdzIHsKICAg
ICAgICAgLy8gImNvbnRhaW5lciBlbGVtZW50cyI6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzEx
L2ludHJvLmh0bWwjVGVybUNvbnRhaW5lckVsZW1lbnQKICAgICAgICAgLy8gImdyYXBoaWNzIGVs
ZW1lbnRzIiA6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ludHJvLmh0bWwjVGVybUdyYXBo
aWNzRWxlbWVudAotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjphVGFnLT5s
b2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNs
ZVRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVz
OjplbGxpcHNlVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQo
U1ZHTmFtZXM6OmdseXBoVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OmdUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0Lmdl
dCgpLmFkZChTVkdOYW1lczo6aW1hZ2VUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdM
aXN0LmdldCgpLmFkZChTVkdOYW1lczo6bGluZVRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjptYXJrZXJUYWctPmxvY2FsTmFtZSgpKTsKLSAg
ICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6bWFza1RhZy0+bG9jYWxOYW1lKCkp
OwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjptaXNzaW5nX2dseXBoVGFn
LT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBh
dGhUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1l
czo6cG9seWdvblRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjpwb2x5bGluZVRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3Qu
Z2V0KCkuYWRkKFNWR05hbWVzOjpyZWN0VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFn
TGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnN2Z1RhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBz
X3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnVzZVRhZy0+bG9jYWxOYW1lKCkpOwor
ICAgICAgICAmU1ZHTmFtZXM6OmFUYWcsCisgICAgICAgICZTVkdOYW1lczo6Y2lyY2xlVGFnLAor
ICAgICAgICAmU1ZHTmFtZXM6OmVsbGlwc2VUYWcsCisgICAgICAgICZTVkdOYW1lczo6Z2x5cGhU
YWcsCisgICAgICAgICZTVkdOYW1lczo6Z1RhZywKKyAgICAgICAgJlNWR05hbWVzOjppbWFnZVRh
ZywKKyAgICAgICAgJlNWR05hbWVzOjpsaW5lVGFnLAorICAgICAgICAmU1ZHTmFtZXM6Om1hcmtl
clRhZywKKyAgICAgICAgJlNWR05hbWVzOjptYXNrVGFnLAorICAgICAgICAmU1ZHTmFtZXM6Om1p
c3NpbmdfZ2x5cGhUYWcsCisgICAgICAgICZTVkdOYW1lczo6cGF0aFRhZywKKyAgICAgICAgJlNW
R05hbWVzOjpwb2x5Z29uVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLAorICAg
ICAgICAmU1ZHTmFtZXM6OnJlY3RUYWcsCisgICAgICAgICZTVkdOYW1lczo6c3ZnVGFnLAorICAg
ICAgICAmU1ZHTmFtZXM6OnRleHRUYWcsCisgICAgICAgICZTVkdOYW1lczo6dXNlVGFnLAogCiAg
ICAgICAgIC8vIE5vdCBsaXN0ZWQgaW4gdGhlIGRlZmluaXRpb25zIGlzIHRoZSBjbGlwUGF0aCBl
bGVtZW50LCB0aGUgU1ZHIHNwZWMgc2F5cyB0aG91Z2g6CiAgICAgICAgIC8vIFRoZSAiY2xpcFBh
dGgiIGVsZW1lbnQgb3IgYW55IG9mIGl0cyBjaGlsZHJlbiBjYW4gc3BlY2lmeSBwcm9wZXJ0eSAi
Y2xpcC1wYXRoIi4KICAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBhZGQgY2xpcFBhdGhUYWcgaGVy
ZSwgb3RoZXJ3aGlzZSBjbGlwLXBhdGggb24gY2xpcFBhdGggd2lsbCBmYWlsLgogICAgICAgICAv
LyAoQWxyZWFkeSBtYWlsZWQgU1ZHIFdHLCB3YWl0aW5nIGZvciBhIHNvbHV0aW9uKQotICAgICAg
ICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpjbGlwUGF0aFRhZy0+bG9jYWxOYW1lKCkp
OworICAgICAgICAmU1ZHTmFtZXM6OmNsaXBQYXRoVGFnLAogCiAgICAgICAgIC8vIE5vdCBsaXN0
ZWQgaW4gdGhlIGRlZmluaXRpb25zIGFyZSB0aGUgdGV4dCBjb250ZW50IGVsZW1lbnRzLCB0aG91
Z2ggZmlsdGVyL2NsaXBwZXIvbWFza2VyIG9uIHRzcGFuL3RleHQvLi4gaXMgYWxsb3dlZC4KICAg
ICAgICAgLy8gKEFscmVhZHkgbWFpbGVkIFNWRyBXRywgd2FpdGluZyBmb3IgYSBzb2x1dGlvbikK
LSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6YWx0R2x5cGhUYWctPmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFBhdGhU
YWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6
dHJlZlRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05h
bWVzOjp0c3BhblRhZy0+bG9jYWxOYW1lKCkpOworICAgICAgICAmU1ZHTmFtZXM6OmFsdEdseXBo
VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnRleHRQYXRoVGFnLAorICAgICAgICAmU1ZHTmFtZXM6
OnRyZWZUYWcsCisgICAgICAgICZTVkdOYW1lczo6dHNwYW5UYWcsCiAKICAgICAgICAgLy8gTm90
IGxpc3RlZCBpbiB0aGUgZGVmaW5pdGlvbnMgaXMgdGhlIGZvcmVpZ25PYmplY3QgZWxlbWVudCwg
YnV0IGNsaXAtcGF0aAogICAgICAgICAvLyBpcyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGUuCi0gICAg
ICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWctPmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgJlNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLAogCiAgICAgICAg
IC8vIEVsZW1lbnRzIHRoYXQgd2UgaWdub3JlLCBhcyBpdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNl
LgogICAgICAgICAvLyBkZWZzLCBwYXR0ZXJuLCBzd2l0Y2ggKEZJWE1FOiBNYWlsIFNWRyBXRyBh
Ym91dCB0aGVzZSkKICAgICAgICAgLy8gc3ltYm9sIChpcyBjb252ZXJ0ZWQgdG8gYSBzdmcgZWxl
bWVudCwgd2hlbiByZWZlcmVuY2VkIGJ5IHVzZSwgd2UgY2FuIHNhZmVseSBpZ25vcmUgaXQuKQot
ICAgIH0KLQotICAgIHJldHVybiBzX3RhZ0xpc3Q7CisgICAgfTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQgc2V0ID0gdGFnU2V0KHRhZ3MpOworICAgIHJldHVybiBzZXQ7CiB9CiAKIHN0YXRp
YyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmlu
Zz4mIG1hcmtlclRhZ3MoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4+IHNfdGFnTGlzdDsKLSAg
ICBpZiAoc190YWdMaXN0LmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzX3RhZ0xpc3QuZ2V0
KCkuYWRkKFNWR05hbWVzOjpsaW5lVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190
YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cG9seWdvblRhZy0+bG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2x5bGluZVRhZy0+bG9jYWxOYW1l
KCkpOwotICAgIH0KLQotICAgIHJldHVybiBzX3RhZ0xpc3Q7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5IHRhZ3MgeworICAgICAgICAmU1ZHTmFtZXM6OmxpbmVUYWcsCisgICAgICAg
ICZTVkdOYW1lczo6cGF0aFRhZywKKyAgICAgICAgJlNWR05hbWVzOjpwb2x5Z29uVGFnLAorICAg
ICAgICAmU1ZHTmFtZXM6OnBvbHlsaW5lVGFnLAorICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkIHNldCA9IHRhZ1NldCh0YWdzKTsKKyAgICByZXR1cm4gc2V0OwogfQogCiBzdGF0aWMg
Y29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+
JiBmaWxsQW5kU3Ryb2tlVGFncygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPj4gc190YWdMaXN0
OwotICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlz
dC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmFsdEdseXBoVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAg
IHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmNpcmNsZVRhZy0+bG9jYWxOYW1lKCkpOwot
ICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjplbGxpcHNlVGFnLT5sb2NhbE5h
bWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVUYWctPmxv
Y2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0LmdldCgpLmFkZChTVkdOYW1lczo6cGF0aFRh
Zy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjpw
b2x5Z29uVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZH
TmFtZXM6OnBvbHlsaW5lVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQo
KS5hZGQoU1ZHTmFtZXM6OnJlY3RUYWctPmxvY2FsTmFtZSgpKTsKLSAgICAgICAgc190YWdMaXN0
LmdldCgpLmFkZChTVkdOYW1lczo6dGV4dFRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3Rh
Z0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0ZXh0UGF0aFRhZy0+bG9jYWxOYW1lKCkpOwotICAg
ICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRkKFNWR05hbWVzOjp0cmVmVGFnLT5sb2NhbE5hbWUoKSk7
Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRzcGFuVGFnLT5sb2NhbE5h
bWUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNfdGFnTGlzdDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXkgdGFncyB7CisgICAgICAgICZTVkdOYW1lczo6YWx0R2x5cGhUYWcsCisg
ICAgICAgICZTVkdOYW1lczo6Y2lyY2xlVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OmVsbGlwc2VU
YWcsCisgICAgICAgICZTVkdOYW1lczo6bGluZVRhZywKKyAgICAgICAgJlNWR05hbWVzOjpwYXRo
VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnBvbHlnb25UYWcsCisgICAgICAgICZTVkdOYW1lczo6
cG9seWxpbmVUYWcsCisgICAgICAgICZTVkdOYW1lczo6cmVjdFRhZywKKyAgICAgICAgJlNWR05h
bWVzOjp0ZXh0VGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnRleHRQYXRoVGFnLAorICAgICAgICAm
U1ZHTmFtZXM6OnRyZWZUYWcsCisgICAgICAgICZTVkdOYW1lczo6dHNwYW5UYWcsCisgICAgfTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc2V0ID0gdGFnU2V0KHRhZ3MpOworICAgIHJldHVy
biBzZXQ7CiB9CiAKIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hTZXQ8QXRvbVN0cmluZz4mIGNoYWluYWJsZVJlc291cmNlVGFncygpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNl
dDxBdG9tU3RyaW5nPj4gc190YWdMaXN0OwotICAgIGlmIChzX3RhZ0xpc3QuZ2V0KCkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFtZXM6OmxpbmVhckdyYWRp
ZW50VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5nZXQoKS5hZGQoU1ZHTmFt
ZXM6OmZpbHRlclRhZy0+bG9jYWxOYW1lKCkpOwotICAgICAgICBzX3RhZ0xpc3QuZ2V0KCkuYWRk
KFNWR05hbWVzOjpwYXR0ZXJuVGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIHNfdGFnTGlzdC5n
ZXQoKS5hZGQoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnLT5sb2NhbE5hbWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHNfdGFnTGlzdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXkgdGFncyB7CisgICAgICAgICZTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcsCisgICAgICAg
ICZTVkdOYW1lczo6ZmlsdGVyVGFnLAorICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5UYWcsCisg
ICAgICAgICZTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcsCisgICAgfTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgc2V0ID0gdGFnU2V0KHRhZ3MpOworICAgIHJldHVybiBzZXQ7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRhcmdldFJlZmVyZW5jZUZyb21SZXNvdXJjZShTVkdFbGVt
ZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMDFiNzVlNDg3YWU0NTJmYmE0ZGY2OTA4ZTcwY2U3OWY2
NDg1OTI0Ny4uMDNhNGZiYzMzYjhjOGUzODIxNDQ3YTI5OTcxZjAxMDAyZjFmM2ZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CkBAIC0yODgsNyArMjg4LDcgQEAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzb3J0ZWRUYWJsZXMoKQogICAgICAgICAiT3BlcmF0
aW5nRGF0ZXMiX3MKICAgICB9OwogCi0gICAgcmV0dXJuIHsgc29ydGVkVGFibGVzLmRhdGEoKSwg
c29ydGVkVGFibGVzLnNpemUoKSB9OworICAgIHJldHVybiBzb3J0ZWRUYWJsZXM7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXJUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgKaW5kZXggOGI1ODhkZGUxYWRk
YWU0ZTc1N2MwODE1YzljNjA5ZmVkODJiMTcxYy4uMWM5MzY5YWJlZmUyODAzMzJmZmE1YTMyYzFl
OTNmZGUwYjk2NjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVm
YXVsdFdlYkJyb3dzZXJDaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
ZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1eGlsaWFy
eVByb2Nlc3M7CiAKIGJvb2wgaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNz
aW9uKCk7CiBib29sIGhhc1Byb2hpYml0ZWRVc2FnZVN0cmluZ3MoKTsKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVz
dGluZyhjb25zdCBTdHJpbmcmKTsKK1NwYW48Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7CiBib29sIGlzUnVu
bmluZ1Rlc3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCk7CiB2b2lkIGRldGVybWluZUlUUFN0YXRl
KCk7CiBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCBhODJjYTZk
NzdjZTk4NzI5OTA1ZjAwMTNhYTdiN2FhMTM0YmU2NWI4Li5kZDVhMDhmNjEyNDBhM2I3MTEyNzc3
MDVmMTcyOTZmMTIwMmRjODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvUm9iaW5Ib29kSGFzaE1h
cC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4K
ICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KQEAgLTUwLDIwICs0OSwxNSBAQCBi
b29sIGlzUnVubmluZ1Rlc3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKICAgICByZXR1cm4gYnVu
ZGxlSUQgPT0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyB8fCBidW5kbGVJRCA9
PSAiY29tLmFwcGxlLldlYktpdC5XZWJLaXRUZXN0UnVubmVyIl9zIHx8IGJ1bmRsZUlEID09ICJv
cmcud2Via2l0LldlYktpdFRlc3RSdW5uZXJBcHAiX3M7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGlu
Zyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQorU3Bhbjxjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gYXBwQm91bmREb21haW5zRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlE
KQogewotICAgIGlmIChidW5kbGVJRC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBhcHBCb3VuZERvbWFpbkxpc3QgPSBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiB7Ci0gICAgICAgIHsiaW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RJZGVudGlmaWVyIl9zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZygiMTI3LjAuMC4xIikgfX0sCi0gICAgfTsKLQotICAgIGF1dG8gYXBwQm91
bmREb21haW5JdGVyID0gYXBwQm91bmREb21haW5MaXN0LT5maW5kKGJ1bmRsZUlEKTsKLSAgICBp
ZiAoYXBwQm91bmREb21haW5JdGVyICE9IGFwcEJvdW5kRG9tYWluTGlzdC0+ZW5kKCkpCi0gICAg
ICAgIHJldHVybiBhcHBCb3VuZERvbWFpbkl0ZXItPnZhbHVlOwotCi0gICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoYnVuZGxlSUQgPT0gImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRl
bnRpZmllciIpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGRvbWFpbnMgPSBzdGQ6
OmFycmF5IHsKKyAgICAgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIjEyNy4wLjAuMSJfcyksCisgICAg
ICAgIH07CisgICAgICAgIHJldHVybiBkb21haW5zLmdldCgpOworICAgIH0KKyAgICByZXR1cm4g
eyB9OwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbQppbmRleCBkOTk3MWViYWFmOWE2MThhNmMxYjQ5MjVhN2RiZjViNWQ3YWFmZDBjLi5i
MWE3Zjg2Yjc2MjQ2NzZlNTgyMzJlZWQ5YjY2YTAxMjY3YjhkNzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC01MTksMTIgKzUxOSw4IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24g
Zm9yY2VSZWluCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFRlc3REb21haW5zKCkgY29uc3QK
IHsKICAgICBpZiAoYXBwQm91bmREb21haW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8g
YnVuZGxlSUQgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKLSAgICAg
ICAgYXV0byBhcHBCb3VuZERvbWFpbnNUZXN0aW5nID0gZ2V0QXBwQm91bmREb21haW5zVGVzdGlu
ZyhidW5kbGVJRCk7Ci0gICAgICAgIGlmIChhcHBCb3VuZERvbWFpbnNUZXN0aW5nKSB7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6ICphcHBCb3VuZERvbWFpbnNUZXN0aW5nKQotICAg
ICAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucygpLmFkZChkb21haW4pOwotICAgICAgICB9Cisg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogYXBwQm91bmREb21haW5zRm9yVGVzdGluZyhXZWJD
b3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBhcHBCb3Vu
ZERvbWFpbnMoKS5hZGQoZG9tYWluKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>