<?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>226137</bug_id>
          
          <creation_ts>2021-05-21 23:07:53 -0700</creation_ts>
          <short_desc>Remove StringBuilder::appendLiteral</short_desc>
          <delta_ts>2021-05-24 14:53:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>P3</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>alecflett</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</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>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rego</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762775</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-21 23:07:53 -0700</bug_when>
    <thetext>Remove StringBuilder::appendLiteral</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762787</commentid>
    <comment_count>1</comment_count>
      <attachid>429409</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-22 00:57:08 -0700</bug_when>
    <thetext>Created attachment 429409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762829</commentid>
    <comment_count>2</comment_count>
      <attachid>429422</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-22 12:21:26 -0700</bug_when>
    <thetext>Created attachment 429422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762830</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-22 12:22:24 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762971</commentid>
    <comment_count>4</comment_count>
      <attachid>429481</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-23 15:48:37 -0700</bug_when>
    <thetext>Created attachment 429481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763019</commentid>
    <comment_count>5</comment_count>
      <attachid>429501</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-23 22:06:22 -0700</bug_when>
    <thetext>Created attachment 429501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763144</commentid>
    <comment_count>6</comment_count>
      <attachid>429501</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-24 08:33:58 -0700</bug_when>
    <thetext>Comment on attachment 429501
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763156</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-24 09:17:34 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763258</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-24 14:51:57 -0700</bug_when>
    <thetext>Committed r277967 (238091@main): &lt;https://commits.webkit.org/238091@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429501.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763259</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-24 14:53:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/78420303&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429409</attachid>
            <date>2021-05-22 00:57:08 -0700</date>
            <delta_ts>2021-05-22 12:21:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226137-20210522005707.patch</filename>
            <type>text/plain</type>
            <size>319752</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWI0ZmJjYWNhMTU4YTdjN2NhOTFjNDVlODIxYmIzNjNjMzU1NmE1Li4xMGU2OTBjYWZiNGNiY2U0
YWVmZWNiZDc0NzhmM2UwN2Y1ZjZlZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMS0wNS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL3Rlc3RzL1BpbmdQb25n
U3RhY2tPdmVyZmxvd1Rlc3QuY3BwOgorICAgICAgICAoUGluZ1BvbmdTdGFja092ZXJmbG93T2Jq
ZWN0X2hhc0luc3RhbmNlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQpOiBSZW1v
dmUgdW5uZWNlc3NhcnkgY2FzdAorICAgICAgICBmcm9tIGNvbnN0IGNoYXIqIHRvIFN0cmluZywg
d2hpY2ggZGVmZWF0cyBvcHRpbWl6YXRpb24gYW5kIGhhcyBubyBiZW5lZml0LgorCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgIChKU0M6OlJlc3RQYXJhbWV0ZXJOb2RlOjp0b1N0cmluZyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6IFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICBSZW1vdmVkIHVubmVjZXNhcnkgdXNlIG9mIGFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcgdG8gYXBwZW5kIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc25hcHNo
b3RUeXBlVG9TdHJpbmcgYW5kIGVkZ2VUeXBlVG9TdHJpbmcsIHdoaWNoIHJldHVybiBhIGNvbnN0
IGNoYXIqIHRoYXQKKyAgICAgICAgbmV2ZXIgY29udGFpbnMgY2hhcmFjdGVycyB0aGF0IHJlcXVp
cmUgc3BlY2lhbCBxdW90aW5nIGNvbnNpZGVyYXRpb24sIHNvCisgICAgICAgIGNhbiBiZSBhcHBl
bmRlZCBlZmZpY2llbnRseSB3aXRoIHRoZSBub3JtYWwgYXBwZW5kIGZ1bmN0aW9uLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorCisgICAgICAgICoganNjLmNwcDogVXNlIGFwcG5lZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IFVzZSBhdXRvIGZvciB0
aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdl
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdXNl
IHZhcmlhZGljIGFwcGVuZCB3aGVuIHByYWN0aWNhbCBmb3IgYmV0dGVyIGVmZmljaWVuY3kuCisg
ICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1l
bnRzKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRU
b1N0cmluZyk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6Om5vdEFG
dW5jdGlvblNvdXJjZUFwcGVuZGVyKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOiBEaXR0by4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSBhdXRvIGFuZCBjdXQgZG93biBv
biByZWZlcmVuY2UgY291bnQKKyAgICAgICAgY2h1cm4gYnkgdXNpbmcgcGFzc2luZyB0aGUgU3Ry
aW5nSW1wbCB0byBtYWtlU3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0
ZSk6IERpdHRvLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6IFVzZSBtb3JlIGNvbnN0IGFuZCB1c2UgdmFyaWFkaWMKKyAgICAgICAgYXBwZW5kIGZvciBi
ZXR0ZXIgZWZmaWNpZW5jeS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKTogVXNlIGFw
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFw
cGVuZExpbmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPik6IERpdHRvLgorCisgICAgICAgICogcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxl
cjo6cmVwb3J0VG9wRnVuY3Rpb25zKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0
cmluZy4KKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGVz
KTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5jcHA6CisgICAgICAg
IChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisgICAgICAgIGFwcGVuZExpdGVyYWwuCisKKyAgICAg
ICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpkdW1wVHlw
ZXMgY29uc3QpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAg
KEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU2hhcGU6OnRvSlNPTlN0cmluZyBjb25zdCk6IERpdHRvLgorCiAyMDIxLTA1LTIxICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xk
TG9jaygpIGluIEpTQyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBz
YWZldHkgYW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggZDA1M2IzODRhMGNkZmMzY2E2YzAwMzYwNTgzZTczYWI5ZTRl
YTc3Zi4uNDk5MjYzNzg4OTgxZjhmZWIwZjcyNDZlOGYxOTIwNGZiOTAxZjQ1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMS0wNS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcHRpbWl6YXRpb24gZG9u
ZSBieSBhcHBlbmRMaXRlcmFsIGhhcyBtaW5pbWFsIHZhbHVlIGFuZCBpcyBzb21ldGhpbmcgd2UK
KyAgICAgICAgY2FuIGRvIHdpdGhvdXQuIEl0IGRvZXMgbm90IGN1dCBkb3duIHRoZSBudW1iZXIg
b2YgYWxsb2NhdGlvbnMsIHdoaWNoIGlzIHRoZQorICAgICAgICBtYWluIGNvc3Qgb2YgdGhlIFN0
cmluZ0J1aWxkZXIgY2xhc3MuIEdldHRpbmcgcmlkIG9mIHRoZSBkaWZmZXJlbnRseSBuYW1lZAor
ICAgICAgICBhcHBlbmRMaXRlcmFsIGltcHJvdmVzIHRoZSBkZXNpZ24gb2YgdGhlIFN0cmluZ0J1
aWxkZXIgY2xhc3MgZm9yIGNhbGxlcnMuCisgICAgICAgIE91ciBnb2FsIGlzIHRvIGdldCBhcyBj
bG9zZSBhcyBwb3NzaWJsZSB0byBhIHNpbmdsZSBhcHBlbmQgZnVuY3Rpb24uCisKKyAgICAgICAg
SWYgd2UgZGVjaWRlIHdlIG5lZWQgYW4gb3B0aW1pemF0aW9uIGZvciBsaXRlcmFscywgd2UgY2Fu
IGNvbWUgdXAgd2l0aCBhCisgICAgICAgIGRpZmZlcmVudCB3YXkgdGhhdCBpcyBjb21wYXRpYmxl
IHdpdGggYXBwZW5kLiBGb3IgZXhhbXBsZSwgd2UgY291bGQgYXNzdW1lCisgICAgICAgIHRoYXQg
YW55IGNoYXIgYXJyYXkgaXMgYSBsaXRlcmFsIGFuZCBjaGVjayB0aGF0IGF0IGNvbXBpbGUgdGlt
ZSBpbgorICAgICAgICBTdHJpbmdDb25jYXRlbmF0ZTsgdGhhdCBvcHRpbWl6YXRpb24gd291bGQg
d29yayBmb3IgYm90aCBtYWtlU3RyaW5nIGFuZAorICAgICAgICBTdHJpbmdCdWlsZGVyLiBPciB3
ZSBjb3VsZCB1c2UgYSBzdHJhdGVneSBsaWtlIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIHd0
Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmVuY29kZUZv
ckZpbGVOYW1lKTogU3RyZWFtbGluZSBsb2dpYywKKyAgICAgICAgYW5kIHVzZSB2YXJpYWRpYyBh
cHBlbmQgdG8gbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50LgorCisgICAgICAgICogd3RmL0pTT05W
YWx1ZXMuY3BwOgorICAgICAgICAoV1RGOjpKU09OSW1wbDo6VmFsdWU6OmVzY2FwZVN0cmluZyk6
IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAo
V1RGOjpKU09OSW1wbDo6VmFsdWU6OndyaXRlSlNPTiBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogd3RmL0xvZ2dlci5oOgorICAgICAgICAoV1RGOjpMb2dnZXI6OmxvZyk6IFVzZSBhdXRvIGZv
ciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdURjo6TG9nZ2VyOjpsb2dWZXJib3Nl
KTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lOjp0b1N0cmluZyBjb25zdCk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3Ry
aW5nQnVpbGRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaDoKKyAgICAgICAgTWFkZSBsZW5ndGhPZkludGVnZXJBc1N0cmluZyBhIGNvbnN0ZXhwciBm
dW5jdGlvbiBzbyB3ZSBjYW4gdXNlIGl0IHRvCisgICAgICAgIGNvbXB1dGUgdGhlIHJlcXVpcmVk
IHNpemUgb2YgYXJyYXlzIGZvciBjb252ZXJzaW9uLiBBZGRlZCB1c2luZyBmb3IgYm90aAorICAg
ICAgICBsZW5ndGhPZkludGVnZXJBc1N0cmluZyBhbmQgd3JpdGVJbnRlZ2VyVG9CdWZmZXIgc28g
d2UgY2FuIHVzZSB0aGVtIHdpdGhvdXQKKyAgICAgICAgdGhlIFdURiBwcmVmaXggYXMgaXMgY3Vz
dG9tYXJ5IGZvciBmdW5jdGlvbnMgaW4gV1RGLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsKTog
RGVsZXRlZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZGVk
IHN1cHBvcnQgZm9yIGFwcGVuZGluZyBTdHJpbmdJbXBsJiwKKyAgICAgICAgU3RyaW5nSW1wbCos
IEF0b21TdHJpbmdJbXBsJiwgYW5kIEF0b21TdHJpbmdJbXBsKi4KKwogMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkQ29uZGl0
aW9uIGluIG1vcmUgcGxhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTljYzFlYTMyZGRmOGJiZWMzOWZlMzM1
MzYzMTc3NTdiMGFlMmZjMC4uMTAzZTc4ODA5ODRhNDJkYmI5NjZmMmNmNWFlZjdkNTk1YzY4Mjlj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1NyBAQAorMjAyMS0wNS0yMSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYWNrYWdlRm9ybURhdGEpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5n
LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBp
bnN0ZWFkCisgICAgICAgIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOiBVc2UgYXV0
bworICAgICAgICBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OmJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQpOiBVc2UgbWFrZVN0cmluZwor
ICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OmJ1aWxkSW5kZXhTdGF0ZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YnVpbGRPYmplY3RTdG9yZVN0YXRlbWVudCk6IERpdHRvLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNv
ZGVQcm90b2NvbFN0cmluZyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFw
cGVuZEFjY2VwdGVkRXh0ZW5zaW9uKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
QWxzbyB1c2UgQVNDSUlMaXRlcmFsIGZvciBzb21lIFN0cmluZyBjb25zdHJ1Y3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3Qg
Y29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoZm9ybWF0Rm9yRGVidWdnZXIpOiBV
c2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3Mv
Q1NTQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRDaXJjbGVTdHJpbmcp
OiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkRWxsaXBzZVN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRQYXRo
U3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsZFBvbHlnb25TdHJpbmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zZXRTdHJpbmcpOiBEaXR0by4KKyAgICAg
ICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5l
YXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NDb25pY0dyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1Rl
eHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NHcmlkSW50ZWdlclJlcGVhdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWU6OmN1
c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0
cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogVXNl
IGFwcGVuZAorICAgICAgICBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICogY3Nz
L0NTU0ltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6Y3Nz
VGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6Y3NzVGV4dCBjb25zdCk6IFVz
ZSBtYWtlU3RyaW5nCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAg
ICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZy
YW1lc1J1bGU6OmNzc1RleHQgY29uc3QpOiBVc2UgdmFyaWFkaWMgYXBwZW5kLgorCisgICAgICAg
ICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TGluZUJveENvbnRhaW5WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IFVzZQorICAgICAgICBh
cHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIGNzcy9DU1NOYW1lc3Bh
Y2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVzcGFjZVJ1bGU6OmNzc1RleHQg
Y29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6Y3NzVGV4dCBjb25zdCk6IFVzZSBtYWtlU3RyaW5nIGlu
c3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhaW50SW1hZ2VWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1i
ZXJGb3JDdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9m
IGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kTGFuZ0FyZ3VtZW50TGlzdCk6IFVzZSB2YXJpYWRpYyBhcHBlbmQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0IGNvbnN0KTogRGl0
dG8uIEFsc28gdXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwgYW5k
IG1ha2Ugc29tZSBpbXByb3ZlbWVudHMgdG8KKyAgICAgICAgY3V0IGRvd24gb24gYWxsb2NhdGlv
bnMgYSBsaXR0bGUuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6YnVpbGRTZWxlY3RvcnNUZXh0IGNvbnN0KTog
VXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
OjpDU1NTdHlsZVNoZWV0KTogTW92ZWQgbW9yZSBvZiB0aGUKKyAgICAgICAgZGF0YSBtZW1iZXIg
aW5pdGlhbGl6YXRpb24gdG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZgorICAg
ICAgICBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6IE1vdmVk
IGluaXRpYWxpemF0aW9uIGhlcmUuCisKKyAgICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6
OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9m
IFN0cmluZ0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAg
KiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6Om1l
ZGlhVGV4dCBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRMaXRl
cmFsLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL01lZGlh
UXVlcnlFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHByZXNz
aW9uOjpzZXJpYWxpemUgY29uc3QpOiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFkIG9m
IFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
IGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxpemUgY29uc3QpOiBSZW1vdmVkIGEgbG90IG9mCisg
ICAgICAgIHVubmVjZXNzYXJ5IGJyYWNlcy4gVXNlIHZhcmlhZGljIGFwcGVuZCBhbmQgYXBwZW5k
IGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6IFVzZSBh
dXRvIGZvciB0aGUgcmVzdWx0CisgICAgICAgIG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBdHRyaWJ1dGVzKTogVXNl
IHZhcmlhZGljIGFwcGVuZCBhbmQgYXBwZW5kCisgICAgICAgIGluc3RlYWQgb2YgYXBwZW5kTGl0
ZXJhbC4KKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KTogRGl0dG8uCisgICAgICAg
ICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VhcmNoZXIpOiBV
c2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogZWRpdGlu
Zy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcpOgorICAgICAgICBVc2UgYXBwZW5kIGluc3RlYWQgb2Yg
YXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRTdGFydFRhZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dXJsVG9NYXJrdXAp
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlY29yZEZvcm1TdHJ1Y3R1cmUpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXBvcnRWYWxpZGl0eSk6IFVzZSBhdXRvIGZvcgorICAgICAgICB0aGUgcmVz
dWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkp
OiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVl
IGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFlZCBvZiBhcHBlbmRMaXRlcmFsLgor
CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlc3RyaWN0aW9uTmFtZXMpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9y
bUxvY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0
ZXJUb2tlbkJ1ZmZlcjo6dGFrZVJlbWFpbmluZyk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQ29u
c29sZUVycm9yKTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKTogRGl0dG8uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmV4cHJlc3Npb25Gb3JFdmFsdWF0aW5nQ29tbWFuZCk6IFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRs
ZSk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKToKKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgYXV0byBmb3IgdGhlIHJl
c3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50Ojpk
aWRGYWlsTG9hZGluZyk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOiBEaXR0bworICAgICAgICAo
V2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KTog
RGl0dG8KKworICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlVmFsaWRVUkwpOiBBZGRlZC4gVXNlZCBmb3IgdmFyaW91cyBj
YXNlcyBiZWxvdyB0aGF0IGFsbCBjb25zdHJ1Y3QKKyAgICAgICAgVVJMcyBpbiB0aGUgc2FtZSB3
YXkgd2l0aCB0aGUgc2FtZSBraW5kcyBvZiBjaGVja3MuIFVzZSBtYWtlU3RyaW5nIGhlcmUgaW5z
dGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAoV2ViQ29yZTo6YXR0cmli
dXRpb25SZXBvcnRVUkwpOiBDYWxsIG1ha2VWYWxpZFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5
VVJMIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRCb29sZWFuKTogVXNlIGFwcGVuZCBp
bnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRIYXNoU2V0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphcHBlbmROYXZpZ2F0b3JBUElPcHRpb25TZXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNjcmVlbkFQSU9wdGlvblNldCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcg
Y29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOiBVc2UgYXV0byBmb3IKKyAgICAgICAgdGhlIHJlc3VsdCBvZiBt
YWtlU3RyaW5nLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKTogVXNlIGFw
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdHdlYWsgY29kaW5n
IHN0eWxlIGEgYml0LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojpsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlIGNvbnN0KTog
VXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAg
ICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Vy
aWFsaXplcjo6U2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyk6Cisg
ICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1lKTogVXNlIGF1
dG8gZm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4KKworICAgICAgICAqIHBh
Z2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZv
cm1hbmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNTdHJpbmcp
OgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAg
ICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KTogVXNlIGF1dG8g
Zm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4KKworICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbik6IFVzZSBtYWtlU3RyaW5nIGluc3RzZWFkIG9mIFN0cmluZ0J1
aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UnVu
bmluZ09yRGlzcGxheWluZ0luc2VjdXJlQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkRGlyZWN0aXZlVmFsdWVDaGFy
YWN0ZXIgY29uc3QpOgorICAgICAgICBHZXQgcmlkIG9mIGxvY2FsIHZhcmlhYmxlIGZvciByZXN1
bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVwb3J0SW52YWxpZFBhdGhDaGFyYWN0ZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFNvdXJjZUV4cHJlc3Np
b24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKTogR2V0IHJpZCBvZiBsb2NhbAorICAgICAgICB2
YXJpYWJsZSBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KToKKyAgICAg
ICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWxkZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9EZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnRvU3RyaW5n
IGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGltaW5nRnVuY3Rpb246OmNyZWF0ZUZyb21DU1NUZXh0KTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpj
YWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6IFVzZSBhdXRvCisgICAgICAgIGZv
ciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6
IFVzZQorICAgICAgICBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6IEdvdCByaWQg
b2YgbG9jYWwKKyAgICAgICAgdmFyaWFibGUgZm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0
aW9ucyk6IFVzZSBhdXRvCisgICAgICAgIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCk6IFVw
ZGF0ZSB0bworICAgICAgICB1c2UgT3B0aW9uU2V0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvblBvbGlj
eUFzU3RyaW5nKTogVXNlIE9wdGlvblNldC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QpOiBVc2UgYXV0byBmb3IgaXRlcmF0b3IKKyAgICAgICAgYW5k
IHJhbmdlLWJhc2VkIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnVwZGF0
ZVRpbGVMYXllclByb3BlcnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlk
OjpibGFua1BpeGVsQ291bnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVH
cmlkOjpyZW1vdmVUaWxlcyk6IFVzZSBIYXNoQ291bnRlZFNldC4KKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMpOiBVc2UgT3B0aW9uU2V0LgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUdyaWQ6OnJldGFpbmVkVGlsZUJhY2tpbmdTdG9yZU1lbW9yeSBjb25zdCk6IFVz
ZQorICAgICAgICByYW5nZWQtYmFzZWQgZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpUaWxl
R3JpZDo6ZHJhd1RpbGVNYXBDb250ZW50cyBjb25zdCk6IFVzZSByYW5nZS1iYXNlZAorICAgICAg
ICBmb3IgbG9vcCBhbmQgdXNlIHdyaXRlSW50ZWdlclRvQnVmZmVyIGluc3RlYWQgb2YgU3RyaW5n
OjpudW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyUmVw
YWludENvdW50IGNvbnN0KTogVXNlCisgICAgICAgIEhhc2hDb3VudGVkU2V0LgorICAgICAgICAo
V2ViQ29yZTo6VGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCk6
IERpdHRvLgorICAgICAgICBUaGlzIGN1dHMgdXMgZG93biBmcm9tIDMgaGFzaCB0YWJsZSBsb29r
dXBzIHRvIDEuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRlZFRp
bGVzTm93KTogUmVtb3ZlZCBsb2NhbAorICAgICAgICB2YXJpYWJsZSB0byBtYWtlIGNvZGUgYSBs
aXR0bGUgdGlnaHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5o
OiBVc2UgT3B0aW9uU2V0IGFuZCBIYXNoQ291bnRlZFNldC4KKyAgICAgICAgUmVtb3ZlZCBzb21l
IHR5cGUgbmFtZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUZpbHRl
cnM6OnNldEZpbHRlcnNPbkxheWVyKTogVXNlIGF1dG8gZm9yCisgICAgICAgIHJldXNsdCBvZiBt
YWtlU3RyaW5nLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdU
ZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1vY2s6OnNjcm9sbGJhclBy
ZWZpeCBjb25zdCk6IEFkZGVkCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiBmb3IgdXNlIGJlbG93
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUVudGVyZWRTY3Jv
bGxiYXIgY29uc3QpOiBVc2UKKyAgICAgICAgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1
aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1vY2s6Om1vdXNlRXhpdGVk
U2Nyb2xsYmFyIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ck1vY2s6Om1vdXNlSXNEb3duSW5TY3JvbGxiYXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oOiBEaXR0by4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
UHJveHlTZXJ2ZXJTdHJpbmcpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKTogR2V0IHJpZAor
ICAgICAgICBvZiBsb2NhbCB2YXJpYWJsZSB3aXRoIHJlc3VsdCBvZiBtYWVrU3RyaW5nIGluIGl0
LgorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpvcGVuKTogVXNlIGF1dG8gZm9yIHJlc3VsdCBvZiBt
YWtlU3RyaW5nLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZSk6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFsKTog
VXNlIGFwcGVuZCBpbnN0ZWFkCisgICAgICAgIG9mIGFwcGVuZExpdGVyYWwgYW5kIFN0cmluZ1Zp
ZXc6OnN1YnN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZzo6c3Vic3RyaW5nLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpuYW1lIGNvbnN0KTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRlYnVnRGVzY3JpcHRpb24gY29uc3QpOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8pOiBV
c2UgYXBwZW5kIGluc3RlYWQgb2YKKyAgICAgICAgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUFu
ZEVzY2FwZU5vblByaW50YWJsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5vZGVQb3Np
dGlvbik6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bW92ZVRvKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb1Zl
cnRpY2FsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6
Y3VydmVUb0N1YmljKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6Y3VydmVUb0N1YmljU21vb3RoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNUbyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsb3NlUGF0aCk6IERp
dHRvLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6ZHVtcE1hcmtlclJlY3RzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2Nyb2xsU25hcE9m
ZnNldHMpOiBEaXR0by4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6dmFsaWRhdGVXb3JrZXJS
ZXNwb25zZSk6IFVzZSBhdXRvCisgICAgICAgIGZvciByZXVzbHQgb2YgbWFrZVN0cmluZy4KKwog
MjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBsb2NraW5nIGlzc3VlIGZvciBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6Om1faXNQbGF5aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDBlMWEyOGJkNDliMjI0MThlMzFjZDk3ZWYzZDFiZjc2OWNhZjZkZDUuLjFhYjkw
MTVlNmJiMGMzYmZhNGZkMWIyMmUxOGZiY2JmZWI1Mzc2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODcgQEAKKzIwMjEtMDUtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5kTWFrZURv
bWFpbkxpc3QpOiBVc2UgYXBwZW5kCisgICAgICAgIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4K
KyAgICAgICAgKFdlYktpdDo6ZG9tYWluc1RvU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkTGlzdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmFw
cGVuZEJvb2xlYW4pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6YXBwZW5kTmV4dEVudHJ5KTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphcHBlbmRTdWJTdGF0aXN0aWNMaXN0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5n
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
ZG9tYWluc1RvU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBo
ZXJlIGZyb20gdGhlIGhlYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6dG9TdHJp
bmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6ZW5jb2RlIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6OmRlY29kZSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpvcGVyYXRvcj09IGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQ
YXJ0eURhdGE6OnRvU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OmVuY29kZSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6b3BlcmF0b3I8IGNvbnN0
KTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDogTW92ZWQgbWVtYmVyCisgICAgICAgIGZ1bmN0aW9ucyBv
ZiB0aGUgbmVzdGVkIHN0cnVjdHVyZXMgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZmlsZSBhbmQg
Zml4ZWQKKyAgICAgICAgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBzdHJ1Y3R1cmVzIHRvIGluZGlj
YXRlIHRoZSBuZXN0aW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51
ZUNoZWNraW5nUmVxdWVzdCk6IERvIG5vdCB1c2UgYSBsb2NhbAorICAgICAgICB2YXJpYWJsZSBm
b3IgdGhlIHJldXNsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ld1Rl
c3RpbmdTZXNzaW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpk
dW1wQ29udGVudHNUb0ZpbGUpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbAor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YXNKU09OIGNvbnN0KTogRGl0dG8u
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aCk6IERvIG5vdCB1c2UgYSBsb2NhbCB2YXJpYWJsZSBmb3IKKyAgICAgICAgdGhlIHJlc3Vs
dCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVy
OjpyZWdpc3Rlck1ETlNOYW1lKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0cmlu
Zy4KKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycyk6IERpdHRvLgorCisgICAgICAgICog
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0
aWFsaXplU2FuZGJveFBhcmFtZXRlcnMpOiBEbyBub3QgdXNlIGEgbG9jYWwgdmFyaWFibGUgZm9y
IHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4gQWxzbywgdGFrZSBhZHZhbnRhZ2Ug
b2YgdGhlIHN1cHBvcnQgZm9yIGNvbmNhdGVuYXRpbmcgYW4gTlNTdHJpbmcgaW5zdGVhZAorICAg
ICAgICBvZiBjb252ZXJ0aW5nIGl0IHRvIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1v
cnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQgY29uc3QpOiBVc2UgQVNDSUlMaXRlcmFsIGFuZCByZW1v
dmUgZXhwbGljaXQKKyAgICAgICAgY29udmVyc2lvbiB0byBTdHJpbmcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKTogVXNlIGF1dG8gZm9yIHJlc3VsdCBv
ZiBtYWtlU3RyaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0
U3RvcmFnZVNwYWNlKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5n
U3RyaW5nKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IFVzZSBhdXRvIGZvciByZXN1bHQg
b2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVt
b3J5U2FtcGxlcik6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOiBVc2UgYXBwZW5kIGlu
c3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29u
dGVudHNBc1N0cmluZyk6IERpdHRvLgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYktpdC9X
ZWJLaXRMZWdhY3kvVG9vbHMgYXMgaXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBDbGFuZyB0aHJl
YWQgc2FmZXR5IGFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDcwMzc4ZjM0NzMyOTc3
NTk4YjVlZDYzYzYyOTlhZGM3YTllZWIzZGUuLjllMGJjYmU3NDIxOTFmODFiNDBhZTQxYTE4ZjEw
ZGI4NDQyMzI5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDUtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBT
dHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24pOiBEbyBub3QgdXNlIGxvY2FsCisgICAgICAgIGZvciByZXR1cm4gdmFs
dWUgb2YgbWFrZVN0cmluZy4KKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIFN0b3JhZ2VBcmVhU3luYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFmNTUyNzUxNWU5MGYwYjBhOGYwMWU5M2Yz
NDNmNTI5MDA5NWMxMjcuLjEwNGIxNmIzMDQ3NWExYzJmNGIyZWI5ZGRjYTg4NTE2YWVhZjdhZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0y
MSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAg
ICAgIChyZWdFeHBGb3JMYWJlbHMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJh
bC4KKyAgICAgICAgQWxzbyBpbXJwdm9lIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGEgYml0LgorCiAy
MDIxLTA1LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNPU10gQWRvcHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRy
b2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1Bv
bmdTdGFja092ZXJmbG93VGVzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCmluZGV4IDgxMWQ0ZGViZGFiMjkxZDkwNGY5
NmJiZmU0NjdiNzljMDI3M2QxMTkuLjM2ZWRiZDlhNzMwYWZlY2E1ZjJmMGI0MDQyMTE0NzQyOTY0
YWZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1Bv
bmdTdGFja092ZXJmbG93VGVzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90
ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIHN0
YXRpYyBib29sIFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9oYXNJbnN0YW5jZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgICAgIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb24oY29udGV4dCwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCAxLCAmcG9zc2libGVWYWx1ZSwg
ZXhjZXB0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZHVtbXkudmFsdWVPZihbMF0iKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoImR1bW15LnZhbHVlT2YoWzBdIik7CiAgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIs
IFsiLCBpLCAnXScpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIik7Iik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIpOyIpOwogICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0
LCBudWxscHRyLCBudWxscHRyLCAxLCBleGNlcHRpb24pOwogICAgICAgICBKU1N0cmluZ1JlbGVh
c2Uoc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggYTAzMjkyMGU0MDM4YmMwYjVhOWQ1N2MzOWJhZWRk
OWJhMWQ0MGFiZS4uN2ZmM2U2MWU0MjUyMzZhOGU2NTY1NWFiOTBlM2E5ZDQ3OWU5YWY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVy
OjphcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkKIHsKICAgICBWTSYgdm0gPSBt
X2dsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgbV9h
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBTdHJpbmcoYXJndW1lbnQpKSk7CisgICAgbV9h
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlw
dENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0M2EzNWRlODFmMmJkNTdiOS4uMzA2NDRm
MDE3NjkxOWFjZWI0Yjc2NjI2M2I3MjM3M2ZjMjFiNDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTQ4Miw3ICs1
NDgyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBCaW5kaW5n
VHlwZTo6UmVzdEVsZW1lbnQ6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi4u
LiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIi4uLiIpOwogICAgICAgICAgICAgdGFy
Z2V0LnBhdHRlcm4tPnRvU3RyaW5nKGJ1aWxkZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTU4MDIsNyArNTgwMiw3IEBAIHZvaWQgUmVzdFBhcmFtZXRlck5vZGU6OmNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMpCiAKIHZv
aWQgUmVzdFBhcmFtZXRlck5vZGU6OnRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNv
bnN0CiB7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIuLi4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiLi4uIik7CiAgICAgbV9wYXR0ZXJuLT50b1N0cmluZyhidWlsZGVyKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApp
bmRleCBjMzZkMWQwMjEyZjkyZTYzZDY4Mzc0ZmUxZGY2ZjBiZWM1ZWZkYjNjLi42MTRmNzE4OWJi
OGIzYjY4N2M0ZmIwMjExMDQxMzczMGI3MjIyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDU1LDE5ICs0NTUsMTgg
QEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3Qg
SGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICB9OwogCiAgICAgLy8gdmVyc2lvbgotICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgie1widmVyc2lvblwiOjIiKTsKKyAgICBqc29uLmFwcGVuZCgi
e1widmVyc2lvblwiOjIiKTsKIAogICAgIC8vIHR5cGUKLSAgICBqc29uLmFwcGVuZExpdGVyYWwo
IixcInR5cGVcIjoiKTsKLSAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoc25hcHNob3RU
eXBlVG9TdHJpbmcobV9zbmFwc2hvdFR5cGUpKTsKKyAgICBqc29uLmFwcGVuZCgiLFwidHlwZVwi
OlwiIiwgc25hcHNob3RUeXBlVG9TdHJpbmcobV9zbmFwc2hvdFR5cGUpLCAnIicpOwogCiAgICAg
Ly8gbm9kZXMKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcIm5vZGVzXCI6WyIpOworICAgIGpz
b24uYXBwZW5kKCIsXCJub2Rlc1wiOlsiKTsKICAgICAvLyA8cm9vdD4KICAgICBpZiAobV9zbmFw
c2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KQotICAgICAgICBq
c29uLmFwcGVuZExpdGVyYWwoIjAsMCwwLDAsMCxcIjB4MFwiLFwiMHgwXCIiKTsKKyAgICAgICAg
anNvbi5hcHBlbmQoIjAsMCwwLDAsMCxcIjB4MFwiLFwiMHgwXCIiKTsKICAgICBlbHNlCi0gICAg
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiMCwwLDAsMCIpOworICAgICAgICBqc29uLmFwcGVuZCgi
MCwwLDAsMCIpOwogCiAgICAgZm9yIChIZWFwU25hcHNob3QqIHNuYXBzaG90ID0gbV9wcm9maWxl
ci5tb3N0UmVjZW50U25hcHNob3QoKTsgc25hcHNob3Q7IHNuYXBzaG90ID0gc25hcHNob3QtPnBy
ZXZpb3VzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogc25hcHNob3QtPm1fbm9kZXMp
CkBAIC00NzYsNyArNDc1LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVu
Y3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICBqc29uLmFw
cGVuZCgnXScpOwogCiAgICAgLy8gbm9kZSBjbGFzcyBuYW1lcwotICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiLFwibm9kZUNsYXNzTmFtZXNcIjpbIik7CisgICAganNvbi5hcHBlbmQoIixcIm5vZGVD
bGFzc05hbWVzXCI6WyIpOwogICAgIFZlY3RvcjxTdHJpbmc+IG9yZGVyZWRDbGFzc05hbWVzKGNs
YXNzTmFtZUluZGV4ZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2xhc3NOYW1l
SW5kZXhlcykKICAgICAgICAgb3JkZXJlZENsYXNzTmFtZXNbZW50cnkudmFsdWVdID0gZW50cnku
a2V5OwpAQCAtNTMyLDI0ICs1MzEsMTYgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompz
b24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICB9
KTsKIAogICAgIC8vIGVkZ2VzCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXCJlZGdlc1wiOlsi
KTsKKyAgICBqc29uLmFwcGVuZCgiLFwiZWRnZXNcIjpbIik7CiAgICAgZm9yIChhdXRvJiBlZGdl
IDogbV9lZGdlcykKICAgICAgICAgYXBwZW5kRWRnZUpTT04oZWRnZSk7CiAgICAganNvbi5hcHBl
bmQoJ10nKTsKIAogICAgIC8vIGVkZ2UgdHlwZXMKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIixc
ImVkZ2VUeXBlc1wiOlsiKTsKLSAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoZWRnZVR5
cGVUb1N0cmluZyhFZGdlVHlwZTo6SW50ZXJuYWwpKTsKLSAgICBqc29uLmFwcGVuZCgnLCcpOwot
ICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBl
OjpQcm9wZXJ0eSkpOwotICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAganNvbi5hcHBlbmRRdW90
ZWRKU09OU3RyaW5nKGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OkluZGV4KSk7Ci0gICAganNv
bi5hcHBlbmQoJywnKTsKLSAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoZWRnZVR5cGVU
b1N0cmluZyhFZGdlVHlwZTo6VmFyaWFibGUpKTsKLSAgICBqc29uLmFwcGVuZCgnXScpOworICAg
IGpzb24uYXBwZW5kKCIsXCJlZGdlVHlwZXNcIjpbXCIiLCBlZGdlVHlwZVRvU3RyaW5nKEVkZ2VU
eXBlOjpJbnRlcm5hbCksICJcIixcIiIsIGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OlByb3Bl
cnR5KSwgIlwiLFwiIiwgZWRnZVR5cGVUb1N0cmluZyhFZGdlVHlwZTo6SW5kZXgpLCAiXCIsXCIi
LCBlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpWYXJpYWJsZSksICJcIl0iKTsKIAogICAgIC8v
IGVkZ2UgbmFtZXMKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcImVkZ2VOYW1lc1wiOlsiKTsK
KyAgICBqc29uLmFwcGVuZCgiLFwiZWRnZU5hbWVzXCI6WyIpOwogICAgIFZlY3RvcjxVbmlxdWVk
U3RyaW5nSW1wbCo+IG9yZGVyZWRFZGdlTmFtZXMoZWRnZU5hbWVJbmRleGVzLnNpemUoKSk7CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IGVkZ2VOYW1lSW5kZXhlcykKICAgICAgICAgb3JkZXJlZEVk
Z2VOYW1lc1tlbnRyeS52YWx1ZV0gPSBlbnRyeS5rZXk7CkBAIC01NjUsNyArNTU2LDcgQEAgU3Ry
aW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNu
YXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAgICAgaWYgKG1f
c25hcHNob3RUeXBlID09IFNuYXBzaG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hvdCkgewotICAg
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcInJvb3RzXCI6WyIpOworICAgICAgICBqc29uLmFw
cGVuZCgiLFwicm9vdHNcIjpbIik7CiAKICAgICAgICAgSGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9
IG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCk7CiAKQEAgLTYwNSw3ICs1OTYsNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgaWYgKG1fc25hcHNob3RUeXBlID09IFNuYXBz
aG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hvdCkgewogICAgICAgICAvLyBpbnRlcm5hbCBub2Rl
IGRlc2NyaXB0aW9ucwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcImxhYmVsc1wiOlsi
KTsKKyAgICAgICAganNvbi5hcHBlbmQoIixcImxhYmVsc1wiOlsiKTsKIAogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBvcmRlcmVkTGFiZWxzKGxhYmVsSW5kZXhlcy5zaXplKCkpOwogICAgICAgICBm
b3IgKGF1dG8mIGVudHJ5IDogbGFiZWxJbmRleGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNw
cAppbmRleCAyZjlmOGYwNTljYjEzOTEzYWZhMzBmNjQ5NzdlMDMzYjUzNGM5NDkzLi5jNzZmMWYy
MDYzY2I1ZTkwMGNkYjMyNDc5NTAwMTNmZDA5Y2U2NjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFn
ZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtOTMsMTAgKzkyLDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIE9wdGlvbmEKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCi0gICAgU3RyaW5n
QnVpbGRlciBmdW5jdGlvblN0cmluZzsKLSAgICBmdW5jdGlvblN0cmluZy5hcHBlbmRMaXRlcmFs
KCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBl
dmFsKGAoIik7Ci0gICAgZnVuY3Rpb25TdHJpbmcuYXBwZW5kKHRlc3QuaXNvbGF0ZWRDb3B5KCku
cmVwbGFjZSgnYCcsICJcXGAiKSk7Ci0gICAgZnVuY3Rpb25TdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
KWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKKyAgICBhdXRvIGZ1bmN0aW9uU3RyaW5nID0g
bWFrZVN0cmluZygiKGZ1bmN0aW9uKFdlYkluc3BlY3RvckF1ZGl0KSB7IFwidXNlIHN0cmljdFwi
OyByZXR1cm4gZXZhbChgKCIsIFN0cmluZyB7IHRlc3QgfS5yZXBsYWNlKCdgJywgIlxcYCIpLCAi
KWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKIAogICAgIEluamVjdGVkU2NyaXB0OjpFeGVj
dXRlT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMub2JqZWN0R3JvdXAgPSAiYXVkaXQiX3M7
CkBAIC0xMTIsNyArMTA4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKIAogICAgIG11dGVD
b25zb2xlKCk7CiAKLSAgICBpbmplY3RlZFNjcmlwdC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5j
dGlvblN0cmluZy50b1N0cmluZygpLCBXVEZNb3ZlKG9wdGlvbnMpLCByZXN1bHQsIHdhc1Rocm93
biwgc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgaW5qZWN0ZWRTY3JpcHQuZXhlY3V0ZShlcnJvclN0
cmluZywgZnVuY3Rpb25TdHJpbmcsIFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3du
LCBzYXZlZFJlc3VsdEluZGV4KTsKIAogICAgIHVubXV0ZUNvbnNvbGUoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZmRmNWU1NDVlNGM2OWFlNGU0NzFiODBiMjVlZjMx
MjFjNzY5ODliZS4uMjViNzIzMWEyNWU3YTE2YzJhMDQ5ODBmMWFlOTc3MTdhYzg1YTFkZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QKIAogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KLSAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIFNjcmlw
dEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICJcIiBh
bHJlYWR5IGV4aXN0cyIpOworICAgICAgICBhdXRvIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShs
YWJlbCksICJcIiBhbHJlYWR5IGV4aXN0cyIpOwogICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxPYmplY3QsIDEpKSk7CiAgICAgfQogfQpA
QCAtMTU0LDE0ICsxNTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWlu
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFMKICAgICBhdXRvIGl0
ID0gbV90aW1lcy5maW5kKGxhYmVsKTsKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewog
ICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxp
emF0aW9uPwotICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwg
U2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwg
IlwiIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIGF1dG8gd2FybmluZyA9IG1ha2VTdHJpbmco
IlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNz
YWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBX
VEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90
b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1v
bm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwotICAgIFN0cmluZyBtZXNzYWdlID0gbWFr
ZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2Uo
bGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNl
Y29uZHMoKSwgMyksICJtcyIpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoU2NyaXB0
QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIjogIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAi
bXMiKTsKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CiB9CiAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjpzdG9wVGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QK
ICAgICBhdXRvIGl0ID0gbV90aW1lcy5maW5kKGxhYmVsKTsKICAgICBpZiAoaXQgPT0gbV90aW1l
cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVu
ZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmco
IlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNz
YWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIGF1dG8gd2FybmluZyA9
IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0Zv
ckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7CiAgICAgICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMg
ZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwotICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29u
c29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxh
cHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VT
dHJpbmcoU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxh
YmVsKSwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNv
bmRzKCksIDMpLCAibXMiKTsKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1p
bmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwog
CiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluCiAKICAgICAvLyBGSVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBh
IGJldHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0
ZWQgY291bnRlciB2YWx1ZS4KIAotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhTY3Jp
cHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiOiAi
LCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCks
ICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxPYmplY3QsIDEpKSk7CiB9CiAKQEAgLTIxOSw3ICsy
MTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0CiAgICAgYXV0byBpdCA9IG1fY291bnRzLmZp
bmQobGFiZWwpOwogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBG
SVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAg
ICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBTY3JpcHRBcmd1
bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKKyAgICAgICAgYXV0byB3YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBc
IiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJl
bCksICJcIiBkb2VzIG5vdCBleGlzdCIpOwogICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxPYmplY3QsIDEpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQzYTI4MTEyNzA4MDU4MWYwZWQxNWI0ZjM4
NTg4NTUwY2YzZWU2ZWUuLmJhODY4ZmI5NzlkMmQ2NjUzODE0Yzk4ODU4NmQxOTlmNzE1ZmZhZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25KU0NTdGFjaywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTdHJp
bmdCdWlsZGVyIHRyYWNlOwotICAgIHRyYWNlLmFwcGVuZExpdGVyYWwoIi0tPiBTdGFjayB0cmFj
ZTpcbiIpOworICAgIHRyYWNlLmFwcGVuZCgiLS0+IFN0YWNrIHRyYWNlOlxuIik7CiAKICAgICBG
dW5jdGlvbkpTQ1N0YWNrRnVuY3RvciBmdW5jdG9yKHRyYWNlKTsKICAgICBjYWxsRnJhbWUtPml0
ZXJhdGUodm0sIGZ1bmN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcAppbmRleCAzMzhmOWQ4OTgxNTg5YTNlNjQwMWUxOTM0NzYxY2U1NzQ4MWE5NmU4
Li4xM2M1Y2I5NDYxYjVmYWRiOGI1N2IzMjg2MWJkY2U1N2RjYjNhMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVu
dGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAKIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJB
cmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiB2bSwgQVNDSUlMaXRlcmFsIHByZWZpeCwg
dW5zaWduZWQgaWRlbnRpZmllcikKIHsKLSAgICBTdHJpbmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJp
bmcocHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHN5bWJvbE5hbWUgPSBtYWtlU3RyaW5n
KHByZWZpeCwgaWRlbnRpZmllcik7CiAgICAgYXV0byBzeW1ib2wgPSB2bS5wcml2YXRlU3ltYm9s
UmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFtZSk7CiAgICAgbV9pZGVudGlmaWVycy5h
cHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKICAgICByZXR1cm4gbV9pZGVudGlm
aWVycy5sYXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVD
bGllbnQuY3BwCmluZGV4IDg1NzZiYWI2ZmE0MTVhY2EyZDc5Y2FkNDIzYmUxMjA4MDgxNTE3NjMu
LjExMzk5ZWIwOWIyYmNjODU5YzdlZDM2YTljZWU0ZDIzM2M5Y2Q2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCkBAIC0xOTQsMTIgKzE5
NCwxMSBAQCB2b2lkIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsCiAKICAgICBpZiAoIXVybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgYXBwZW5kVVJMQW5kUG9zaXRpb24oYnVpbGRlciwgdXJsLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIpOwogICAgIH0KIAogICAgIGFwcGVuZE1lc3NhZ2VQ
cmVmaXgoYnVpbGRlciwgc291cmNlLCB0eXBlLCBsZXZlbCk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChtZXNzYWdlKTsKKyAgICBidWlsZGVyLmFwcGVuZCgn
ICcsIG1lc3NhZ2UpOwogCiAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIGJ1aWxkZXIudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIH0KQEAgLTIxNSw3ICsyMTQsNyBAQCB2b2lkIENvbnNvbGVDbGll
bnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1lbnRzKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYQogCiAgICAgaWYgKCFsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICBhcHBlbmRVUkxBbmRQb3NpdGlvbihidWlsZGVyLCBsYXN0Q2FsbGVyLnNvdXJjZVVS
TCgpLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5jb2x1bW5OdW1iZXIoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIjogIik7CiAgICAgfQogCiAgICAgYXBwZW5kTWVzc2FnZVByZWZpeChidWlsZGVyLCBz
b3VyY2UsIHR5cGUsIGxldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5NTU3NTZiYTQwNWY0MDA5NzA2MTBmOWE2OGM3ZWQ0
MmE2N2NiMDE1Li4yZGVjZjhhODNjODBlODBjYTg2NzdmNGM3ODdiZjc5YzZjMjk5NWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBA
IC02OSwxNCArNjksMTEgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoV1RGOjp3ZWVrZGF5TmFtZVsodC53ZWVrRGF5KCkgKyA2KSAlIDddKTsKIAogICAg
ICAgICBpZiAoYXNVVENWYXJpYW50KSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgICAg
IGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOwotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhO
YW1lW3QubW9udGgoKV0pOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnLCBXVEY6Om1v
bnRoTmFtZVt0Lm1vbnRoKCldKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6Om1vbnRoTmFt
ZVt0Lm1vbnRoKCldKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcsIFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0sICcgJyk7
CiAgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERheSgpKTsKICAg
ICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwpAQCAtOTIsNyArODksNyBAQCBT
dHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1l
Rm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwg
dC5taW51dGUoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIGFwcGVu
ZE51bWJlcjwyPihidWlsZGVyLCB0LnNlY29uZCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgR01UIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgR01UIik7CiAKICAgICAg
ICAgaWYgKCFhc1VUQ1ZhcmlhbnQpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBhYnModC51
dGNPZmZzZXRJbk1pbnV0ZSgpKTsKQEAgLTExMCwxMSArMTA3LDggQEAgU3RyaW5nIGZvcm1hdERh
dGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQs
IGJvb2wgYXMKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKICAgICAgICAgICAg
IHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVab25lTmFtZSksICIlWiIsICZndG0p
OwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodGltZVpvbmVOYW1lWzBdKSB7Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIpOwotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyknKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAoIiwgdGltZVpvbmVOYW1lLCAnKScpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCmluZGV4IGQyY2QzNmVlNWE5ZmIxMzUyMDcyNjVkMWI0ODM2M2JkOTBj
MDZkODcuLjljNDc2YWViOTc0ZDU2MDNiMzg5YWE5Nzg0NmFmZDVkNGViNGUwMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlSW50Lmgi
CiAjaW5jbHVkZSAiU3RhY2tGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIwOSwxNyArMjA4LDcgQEAgU3RyaW5nIEVy
cm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBzYW5pdGl6ZWRNZXNzYWdlU3RyaW5nKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgU3RyaW5nKCkpOwog
Ci0gICAgaWYgKCFuYW1lU3RyaW5nLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbWVzc2FnZVN0
cmluZzsKLQotICAgIGlmICghbWVzc2FnZVN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IG5hbWVTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQobmFtZVN0cmluZyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcobmFtZVN0cmluZywgbmFtZVN0cmluZy5pc0Vt
cHR5KCkgJiYgbWVzc2FnZVN0cmluZy5pc0VtcHR5KCkgPyAiIiA6ICI6ICIsIG1lc3NhZ2VTdHJp
bmcpOwogfQogCiB2b2lkIEVycm9ySW5zdGFuY2U6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
JiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggZDRhZDU4MTlhMDhmOWFhNmJiMmZmZDEwNWQ5OThiOTkyOTI3YzhkNS4u
YjU5NWEzMDI4Mzc2OTNkNGI3NDg1ZmQ1MTVlYmExNjdiZWZmOTM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTE3NSwx
MCArMTc1LDEwIEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIoY29u
c3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyKFN0cmluZ0J1aWxkZXI6Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwog
ICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2UsICIgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnIiwgc291
cmNlVGV4dCwgIicsICciLCBiYXNlLCAiJyBpcyAiKTsKICAgICBpZiAodHlwZSA9PSBUeXBlU3lt
Ym9sKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImEgU3ltYm9sIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJhIFN5bWJvbCIpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodHlw
ZSA9PSBUeXBlT2JqZWN0KQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhbiBp
bnN0YW5jZSBvZiAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJhbiBpbnN0YW5jZSBv
ZiAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlzcGxheVZhbHVlKTsKICAgICB9CiAgICAg
YnVpbGRlci5hcHBlbmQoJyknKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGY4OTgwNmM1NmIyNjA1MjJmYzdjN2I5
OGFmODUyY2Y3MzNmODk4NWYuLmQ3OGNjMmVhZTIyMjU5NjY3YmU2ZGYwYzMyOGNiODI1NzEwYTg5
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcApAQCAtNjA5LDEzICs2MDksMTMgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoICh3
ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJyb3c6Ci0gICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJFRUVFRSIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJFRUVFRSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlZWtkYXk6OlNob3J0Ogot
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRUVFIik7CisgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIkVFRSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdl
ZWtkYXk6Okxvbmc6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRUVF
Iik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkVFRUUiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWVrZGF5OjpOb25lOgogICAgICAgICBicmVhazsKQEAgLTYyNSwxMyAr
NjI1LDEzIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAoZXJhKSB7CiAgICAgY2FzZSBFcmE6Ok5hcnJv
dzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkdHR0dHIik7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkdHR0dHIik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRXJhOjpTaG9ydDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
IkdHRyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJHR0ciKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFcmE6Okxvbmc6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJHR0dHIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkdHR0ci
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFcmE6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwpA
QCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAoeWVhcikgewogICAgIGNhc2Ug
WWVhcjo6VHdvRGlnaXQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ5
eSIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJ5eSIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFllYXI6Ok51bWVyaWM6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoJ3knKTsKQEAgLTY1NCwxOSArNjU0LDE5IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpp
bml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAobW9udGgp
IHsKICAgICBjYXNlIE1vbnRoOjpUd29EaWdpdDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIk1NIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIk1NIik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTW9udGg6Ok51bWVyaWM6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ00nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb250aDo6
TmFycm93OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTU1NTU0iKTsK
KyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiTU1NTU0iKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNb250aDo6U2hvcnQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJNTU0iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiTU1NIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTW9udGg6Okxvbmc6Ci0gICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJNTU1NIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIk1NTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb250aDo6Tm9uZToKICAgICAg
ICAgYnJlYWs7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoIChkYXkpIHsK
ICAgICBjYXNlIERheTo6VHdvRGlnaXQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJkZCIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJkZCIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERheTo6TnVtZXJpYzoKICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnZCcpOwpAQCAtNzQ1LDEzICs3NDUsMTMgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgICAgICAvLyBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3Nl
L0lDVS0yMDczMQogICAgICAgICBzd2l0Y2ggKGRheVBlcmlvZCkgewogICAgICAgICBjYXNlIERh
eVBlcmlvZDo6TmFycm93OgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkJCQkJCIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJCQkJCQiIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGF5UGVyaW9kOjpTaG9ydDoKICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0InKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERheVBlcmlvZDo6TG9uZzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJCQkJCIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCJCQkJCIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEYXlQZXJp
b2Q6Ok5vbmU6CiAgICAgICAgICAgICBicmVhazsKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIElu
dGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBzd2l0Y2ggKG1pbnV0ZSkgewogICAgIGNhc2UgTWludXRlOjpUd29EaWdpdDoKLSAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIm1tIik7CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIm1tIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWludXRlOjpO
dW1lcmljOgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdtJyk7CkBAIC03NzUsNyAr
Nzc1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoIChzZWNvbmQpIHsKICAgICBjYXNlIFNlY29uZDo6
VHdvRGlnaXQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzcyIpOwor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJzcyIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFNlY29uZDo6TnVtZXJpYzoKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgn
cycpOwpAQCAtNzk2LDcgKzc5Niw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFs
aXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgneicpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRp
bWVab25lTmFtZTo6TG9uZzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
Inp6enoiKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgienp6eiIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6Tm9uZToKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3Bw
CmluZGV4IGYwMzUwYzg0MzhkNzdlYmU3YTVmOTI3NDkwN2UzY2I0MmEzN2U1ZDIuLjliYjRiMDdj
ODFiNGE2ZjFhNzFjNGYyOWIyZjJkNzc2ODAyYzBkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0zODAsMzIgKzM4MCwz
MSBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91
bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251
bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdCdWlsZGVyIHNrZWxldG9uQnVpbGRlcjsK
LSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicm91bmRpbmctbW9kZS1oYWxmLXVw
Iik7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7
CiAKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpEZWNpbWFsOgogICAg
ICAgICAvLyBObyBza2VsZXRvbiBpcyBuZWVkZWQuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3R5bGU6OlBlcmNlbnQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
cGVyY2VudCBzY2FsZS8xMDAiKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHBl
cmNlbnQgc2NhbGUvMTAwIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3R5bGU6OkN1cnJl
bmN5OiB7Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY3VycmVuY3kv
Iik7Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoY3VycmVuY3kpOworICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgY3VycmVuY3kvIiwgY3VycmVuY3kpOwogCiAgICAgICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKICAg
ICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkgewogICAgICAgICBjYXNlIEN1cnJlbmN5
RGlzcGxheTo6Q29kZToKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgiIHVuaXQtd2lkdGgtaXNvLWNvZGUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgogICAgICAgICAgICAgLy8gRGVmYXVsdCBv
cHRpb24uIERvIG5vdCBzcGVjaWZ5IHVuaXQtd2lkdGguCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJvd1N5bWJvbDoKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1bml0LXdpZHRoLW5hcnJvdyIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpOYW1lOgotICAg
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwt
bmFtZSIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHVuaXQtd2lkdGgt
ZnVsbC1uYW1lIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKQEAgLTQxNCwyNSArNDEzLDI0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6
ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgICAg
IC8vIFRoZSBtZWFzdXJlLXVuaXQgc3RlbSB0YWtlcyBvbmUgcmVxdWlyZWQgb3B0aW9uOiB0aGUg
dW5pdCBpZGVudGlmaWVyIG9mIHRoZSB1bml0IHRvIGJlIGZvcm1hdHRlZC4KICAgICAgICAgLy8g
VGhlIGZ1bGwgdW5pdCBpZGVudGlmaWVyIGlzIHJlcXVpcmVkOiBib3RoIHRoZSB0eXBlIGFuZCB0
aGUgc3VidHlwZSAoZm9yIGV4YW1wbGUsIGxlbmd0aC1tZXRlcikuCiAgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUv
Zm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQKLSAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtZWFzdXJlLXVuaXQvIik7CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIiBtZWFzdXJlLXVuaXQvIik7CiAgICAgICAgIGF1dG8gbnVtZXJhdG9y
VW5pdCA9IHdlbGxGb3JtZWRVbml0LT5udW1lcmF0b3I7CiAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQobnVtZXJhdG9yVW5pdC50eXBlLCAnLScsIG51bWVyYXRvclVuaXQuc3ViVHlwZSk7
CiAgICAgICAgIGlmIChhdXRvIGRlbm9taW5hdG9yVW5pdFZhbHVlID0gd2VsbEZvcm1lZFVuaXQt
PmRlbm9taW5hdG9yKSB7CiAgICAgICAgICAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IGRlbm9t
aW5hdG9yVW5pdFZhbHVlLnZhbHVlKCk7Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIHBlci1tZWFzdXJlLXVuaXQvIik7Ci0gICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKGRlbm9taW5hdG9yVW5pdC50eXBlLCAnLScsIGRlbm9taW5hdG9yVW5pdC5z
dWJUeXBlKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBwZXItbWVhc3Vy
ZS11bml0LyIsIGRlbm9taW5hdG9yVW5pdC50eXBlLCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJU
eXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2Rl
LW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMv
c2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKICAgICAgICAgc3dpdGNoIChtX3VuaXREaXNwbGF5KSB7
CiAgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgotICAgICAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLXNob3J0Iik7CisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0aC1zaG9ydCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Ok5hcnJvdzoKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1uYXJyb3ciKTsKKyAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1bml0LXdpZHRoLW5hcnJvdyIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6Okxvbmc6Ci0gICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1l
Iik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0aC1mdWxs
LW5hbWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtNDQwLDggKzQzOCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgfQogCiAgICAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3Vz
ZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjaW50ZWdlci13aWR0aAot
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgaW50ZWdlci13aWR0aC8iKTsKLSAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKChXVEY6OklDVTo6bWFqb3JWZXJzaW9uKCkgPj0gNjcp
ID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3LCB1c2UgdGhlIHN5bWJvbCArIGluc3Rl
YWQgb2YgKi4KKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgaW50ZWdlci13aWR0aC8iLCAo
V1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3KSA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRv
IElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgnMCcpOwogCkBAIC00NzQsMTggKzQ3MSwxOCBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM6Ci0gICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2NpZW50aWZpYyIpOworICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCIgc2NpZW50aWZpYyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgZW5naW5lZXJpbmciKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIGVuZ2luZWVyaW5nIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50bE5vdGF0aW9u
OjpDb21wYWN0OgogICAgICAgICBzd2l0Y2ggKG1fY29tcGFjdERpc3BsYXkpIHsKICAgICAgICAg
Y2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBjb21wYWN0LXNob3J0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgY29tcGFjdC1sb25nIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKQEAgLTQ5NywyOSArNDk0LDI5IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CiAgICAgY2FzZSBTaWduRGlz
cGxheTo6QXV0bzoKICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCi0gICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZyIpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0
byIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYXV0byIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoKLSAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5ldmVyIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCi0gICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1h
bHdheXMiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFjY291
bnRpbmctYWx3YXlzIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBzaWduLWFsd2F5cyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNp
Z25EaXNwbGF5OjpFeGNlcHRaZXJvOgogICAgICAgICBpZiAodXNlQWNjb3VudGluZykKLSAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWV4
Y2VwdC16ZXJvIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1h
Y2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXplcm8iKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFtX3VzZUdyb3VwaW5nKQotICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9mZiIpOworICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb2ZmIik7CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2Vs
ZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0
SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggZGEyYWJj
M2RmMWIzNzFjZjczNjIxYTNkYWJiMjQ2YjVlY2UwZjMzZC4uNDVhOWVmZmZkNjliM2FhN2Q1Mzk4
MDEzMGFmOTE5OTFiZWJkNTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+
KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7CiAK
ICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhv
c3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCi0gICAgU3RyaW5nIG5hbWUgPSBt
YWtlU3RyaW5nKCJnZXQgIiwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKKyAg
ICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAwLCBuYW1l
KTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IGVjNTQ0Yzc4
NDg3ZmQ1NDM1YTAwZGE2ZjNmYWRmZTAwMWUzNWMyMzUuLmQwNDc1MjRiNWI0MTUwYWM5ZGVlYTEy
MTRiZWQwYjViZDI4NDQ1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPih2
bS5oZWFwKSkgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2V0dGVyKTsKIAogICAgIC8vIENhbid0IGRv
IHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0
IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJpbmcoInNldCAi
LCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOworICAgIGF1dG8gbmFtZSA9IG1h
a2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBmdW5jdGlv
bi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIDEsIG5hbWUpOwogICAgIHJldHVybiBm
dW5jdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBmNzFmMDc3NGJjMjkzMjgyODRhOTFj
Njg4NzNmNTQzYTUxYjJlZmY5Li5lNjZhMDg5ZTk5MTg5YmUxMTg0NmM0ZDUzMjdlODNiOTdkYzJm
MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01NDAsNyArNTQwLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQYXJzZUZsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2EKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNEZWNvZGVV
UkksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CiB7Ci0gICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90VW5lc2NhcGVXaGVuRGVjb2RpbmdVUkkg
PSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAgIHN0YXRpYyBjb25zdCBCaXRtYXA8MjU2PiBkb05v
dFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAg
IiMkJissLzo7PT9AIgogICAgICk7CiAKQEAgLTU0OSw0NCArNTQ5LDQyIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRGVjb2RlVVJJLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRGVjb2Rl
VVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBlbXB0eUJpdG1hcDsKKyAgICBz
dGF0aWMgY29uc3QgQml0bWFwPDI1Nj4gZW1wdHlCaXRtYXA7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkZWNvZGUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBlbXB0
eUJpdG1hcCwgdHJ1ZSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVu
Y0VuY29kZVVSSSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKIHsKLSAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGVXaGVuRW5jb2Rp
bmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAgIHN0YXRpYyBjb25zdCBCaXRtYXA8MjU2
PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAg
ICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKICAgICAgICAgImFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ3eHl6IgogICAgICAgICAiMDEyMzQ1Njc4OSIKICAgICAgICAgIiEjJCYnKCkqKywt
Li86Oz0/QF9+IgogICAgICk7Ci0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRvTm90RXNjYXBlV2hlbkVuY29k
aW5nVVJJKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRW5jb2Rl
VVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNv
ZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCisgICAgc3RhdGljIGNvbnN0
IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50ID0gbWFrZUNo
YXJhY3RlckJpdG1hcCgKICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgogICAg
ICAgICAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAgICAgICAgICIwMTIzNDU2Nzg5Igog
ICAgICAgICAiIScoKSotLl9+IgogICAgICk7Ci0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRvTm90RXNjYXBl
V2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihnbG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZSA9
IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCi0gICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WiIKLSAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAiMDEyMzQ1
Njc4OSIKLSAgICAgICAgIiorLS4vQF8iCi0gICAgKTsKLQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
WyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+
IGRvTm90RXNjYXBlID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKKyAgICAgICAgICAgICJBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWiIKKyAgICAgICAgICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eiIKKyAgICAgICAgICAgICIwMTIzNDU2Nzg5IgorICAgICAgICAgICAgIiorLS4vQF8iCisg
ICAgICAgICk7CisKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7CkBA
IC01OTUsMTAgKzU5Myw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNj
YXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgICAgICAg
ICAgaW50IHUgPSBjWzBdOwogICAgICAgICAgICAgICAgIGlmIChkb05vdEVzY2FwZS5nZXQoc3Rh
dGljX2Nhc3Q8TENoYXI+KHUpKSkKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
KmMpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgodSwg
MikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJywgaGV4KHUsIDIpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgYnVpbGRlci50b1N0cmluZygpKTsKICAg
ICAgICAgfQpAQCAtNjA2LDE2ICs2MDIsMTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGds
b2JhbEZ1bmNFc2NhcGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAg
ICAgICAgY29uc3QgVUNoYXIqIGMgPSB2aWV3LmNoYXJhY3RlcnMxNigpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGsgPSAwOyBrIDwgdmlldy5sZW5ndGgoKTsgaysrLCBjKyspIHsKICAgICAgICAg
ICAgIFVDaGFyIHUgPSBjWzBdOwotICAgICAgICAgICAgaWYgKHUgPj0gZG9Ob3RFc2NhcGUuc2l6
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIldSIpOwotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Pih1ID4+IDgpLCAyKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHUgJiAweEZGKSwgMikpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKKyAgICAgICAgICAg
IGlmICh1ID49IGRvTm90RXNjYXBlLnNpemUoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiJXUiLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4odSA+PiA4KSwgMiksIGhleChzdGF0
aWNfY2FzdDx1aW50OF90Pih1KSwgMikpOworICAgICAgICAgICAgZWxzZSBpZiAoZG9Ob3RFc2Nh
cGUuZ2V0KHN0YXRpY19jYXN0PExDaGFyPih1KSkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoKmMpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4odSksIDIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScsIGhleCh1LCAyKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDYx
MGYzNmNmZWJjZGI0NzdhOTI0NGRlOGQ4YjA4M2E4NGNkNjc1NmIuLmRjMDJlODhiYzhjYWU0NzE0
YjNkOWU5ZGJiNjk1YzRjNGFiY2I5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgU3RyaW5naWZpZXI6OlN0cmlu
Z2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWls
ZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRPclN5bWJv
bFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAg
ICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzQ4LDkgKzM0OCw5
IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmlu
Z2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKIAogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkg
ewogICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoInRydWUiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmYWxzZSIpOwogICAgICAgICByZXR1cm4gU3Ry
aW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIFN0cmluZ2lmaWVy
OjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3Ry
aW5nQnVpbGRlciYKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUgbnVtYmVyID0g
dmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShudW1iZXIp
KQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtYmVyKTsKICAgICAgICAgfQpAQCAtMzg1LDcg
KzM4NSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVu
ZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKSB7CiAgICAg
ICAgIGlmIChob2xkZXIuaXNBcnJheSgpKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5lZE9yU3ltYm9sVmFsdWU7CkBAIC01Njcs
NyArNTY3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHko
U3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKIAogICAgIHN3aXRjaCAoc3RyaW5n
aWZ5UmVzdWx0KSB7CiAgICAgICAgIGNhc2UgU3RyaW5naWZ5RmFpbGVkOgotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgibnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5naWZ5U3Vj
Y2VlZGVkOgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCmluZGV4IGE3YjJkYjM4YmZjNjIwN2U1MGU0MjZiYTYyYWE5YzIwNWVjMmVm
MzguLmEwMTE4M2Y3ZGZiYmY3ZDU1ZWRkNTMwMTYwMWU4YjQ4OWZiMmNhNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC0xMDA5LDkgKzEwMDksOSBAQCB2
b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVs
IGxldmVsLCBPcHRpb25zOjpJRCBpZAogCiAgICAgaWYgKHdhc092ZXJyaWRkZW4gJiYgKGR1bXBE
ZWZhdWx0c09wdGlvbiA9PSBEdW1wRGVmYXVsdHMpKSB7CiAgICAgICAgIGF1dG8gZGVmYXVsdE9w
dGlvbiA9IE9wdGlvblJlYWRlcjo6ZGVmYXVsdEZvcihpZCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIChkZWZhdWx0OiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAoZGVm
YXVsdDogIik7CiAgICAgICAgIGRlZmF1bHRPcHRpb24uZHVtcChidWlsZGVyKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpIik7
CiAgICAgfQogCiAgICAgaWYgKG5lZWRzRGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCAzMDgwZjkwNjY5NzNj
NjA3ZTg4YjU5MGU3MzY2NzY0Mjg1NGJiMDZhLi4wODI4NzgwNzIyNTVkODk3MzcwODI1OTgyY2Zl
N2UyZTUwNDk4YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKQEAgLTM4NCw5ICszODQsOSBAQCBpbmxpbmUgdm9pZCBhcHBlbmRM
aW5lVGVybWluYXRvckVzY2FwZTxVQ2hhcj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgVUNoYXIg
bGluZQogICAgIGVsc2UgaWYgKGxpbmVUZXJtaW5hdG9yID09ICdccicpCiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdyJyk7CiAgICAgZWxzZSBpZiAobGluZVRlcm1pbmF0b3IgPT0gMHgyMDI4KQot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInUyMDI4Iik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJ1MjAyOCIpOwogICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJ1MjAyOSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgidTIwMjkiKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDVmZjU4N2VlOTQwMTU4ZTY0ZWU5
ZDE2MGJmNjAwNDRhMWI2OWRmNDMuLjcxODhlYTQ2MWJiYzYzYjljM2M4MjU3ZTZhZmNlNWI5M2Q2
ZDZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6
OnJlcG9ydFRvcEZ1bmN0aW9ucyhQcmludFN0cmVhbSYgb3V0KQogICAgICAgICAgICAgaGFzaCA9
IHN0cmVhbS50b1N0cmluZygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhhc2ggPSAi
PG5pbD4iX3M7Ci0gICAgICAgIFN0cmluZyBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhm
cmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgJyMnLCBoYXNoLCAnOicsIGZyYW1lLnNvdXJjZUlEKCkp
OworICAgICAgICBhdXRvIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lLmRpc3Bs
YXlOYW1lKG1fdm0pLCAnIycsIGhhc2gsICc6JywgZnJhbWUuc291cmNlSUQoKSk7CiAgICAgICAg
IGZ1bmN0aW9uQ291bnRzLmFkZChmcmFtZURlc2NyaXB0aW9uLCAwKS5pdGVyYXRvci0+dmFsdWUr
KzsKICAgICAgICAgdG90YWxTYW1wbGVzKys7CiAgICAgfQpAQCAtMTE1Myw3ICsxMTUzLDcgQEAg
dm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91
dCkKICAgICAgICAgfTsKIAogICAgICAgICBTdGFja0ZyYW1lJiBmcmFtZSA9IHN0YWNrVHJhY2Uu
ZnJhbWVzLmZpcnN0KCk7Ci0gICAgICAgIFN0cmluZyBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0
cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFt
ZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7CisgICAgICAg
IGF1dG8gZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWUuZGlzcGxheU5hbWUobV92
bSksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24oZnJhbWUuc2VtYW50aWNMb2NhdGlvbiwgZnJhbWUu
d2FzbUNvbXBpbGF0aW9uTW9kZSkpOwogICAgICAgICBpZiAoT3B0aW9uYWw8c3RkOjpwYWlyPFN0
YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiwgQ29kZUJsb2NrKj4+IG1hY2hpbmVMb2NhdGlvbiA9IGZy
YW1lLm1hY2hpbmVMb2NhdGlvbikgewogICAgICAgICAgICAgZnJhbWVEZXNjcmlwdGlvbiA9IG1h
a2VTdHJpbmcoZnJhbWVEZXNjcmlwdGlvbiwgIiA8LS0gIiwKICAgICAgICAgICAgICAgICBtYWNo
aW5lTG9jYXRpb24tPnNlY29uZC0+aW5mZXJyZWROYW1lKCkuZGF0YSgpLCBkZXNjcmlwdGlvbkZv
ckxvY2F0aW9uKG1hY2hpbmVMb2NhdGlvbi0+Zmlyc3QsIFdURjo6bnVsbG9wdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggYWZiZTJi
Mzk2MTVmMTdkYjM1YzhjODcxM2M5OTNkNGY2ZjBkY2E0NC4uNjIyMTEzOTQ5YmU5YTc1N2VkNDAw
YjUyZGE1MTI5OGEzMjNkYWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC04NSwyMCArODUsMTcgQEAgU3RyaW5nIFR5cGVQcm9maWxl
cjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJj
aERlc2MKIAogICAgIGpzb24uYXBwZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiZ2xvYmFsVHlwZVNldFwiOiIpOworICAgIGpzb24uYXBwZW5kKCJcImdsb2JhbFR5cGVTZXRc
IjoiKTsKICAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCAmJiBsb2NhdGlvbi0+bV9n
bG9iYWxWYXJpYWJsZUlEICE9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHMpCiAgICAgICAg
IGpzb24uYXBwZW5kKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnRvSlNPTlN0cmluZygpKTsK
ICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAgICBq
c29uLmFwcGVuZCgibnVsbCIpOwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKICAgICBqc29uLmFw
cGVuZCgiXCJpbnN0cnVjdGlvblR5cGVTZXRcIjoiLCBsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5
cGVTZXQtPnRvSlNPTlN0cmluZygpLCAnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
ImlzT3ZlcmZsb3duXCI6Iik7Ci0gICAgaWYgKGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNl
dC0+aXNPdmVyZmxvd24oKSB8fCAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCAmJiBsb2NhdGlv
bi0+bV9nbG9iYWxUeXBlU2V0LT5pc092ZXJmbG93bigpKSkKLSAgICAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCJ0cnVlIik7Ci0gICAgZWxzZQotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoImZh
bHNlIik7CisgICAgYm9vbCBpc092ZXJmbG93biA9IGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlw
ZVNldC0+aXNPdmVyZmxvd24oKSB8fCAobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCAmJiBsb2Nh
dGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5pc092ZXJmbG93bigpKTsKKyAgICBqc29uLmFwcGVuZCgi
XCJpc092ZXJmbG93blwiOiIsIGlzT3ZlcmZsb3duID8gInRydWUiIDogImZhbHNlIik7CiAKICAg
ICBqc29uLmFwcGVuZCgnfScpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuY3BwCmluZGV4IDcyMTQxMGIxMGRiNDFhYjk4MmE5ODhmNTljNjFiNzUwNDFjNTgyNGYuLmQ4
OGJhMjhjM2YzMDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC05NSw0MiArOTUsMzYgQEAgU3RyaW5nIFR5
cGVTZXQ6OmR1bXBUeXBlcygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBzZWVuOwogCiAgICAg
aWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1bmN0aW9uKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVy
YWwoIkZ1bmN0aW9uICIpOworICAgICAgICBzZWVuLmFwcGVuZCgiRnVuY3Rpb24gIik7CiAgICAg
aWYgKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRl
cmFsKCJVbmRlZmluZWQgIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCJVbmRlZmluZWQgIik7CiAg
ICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCi0gICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJh
bCgiTnVsbCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7CiAgICAgaWYgKG1fc2Vl
blR5cGVzICYgVHlwZUJvb2xlYW4pCi0gICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJhbCgiQm9vbGVh
biAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIkJvb2xlYW4gIik7CiAgICAgaWYgKG1fc2VlblR5
cGVzICYgVHlwZUFueUludCkKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJBbnlJbnQgIik7
CisgICAgICAgIHNlZW4uYXBwZW5kKCJBbnlJbnQgIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYg
VHlwZU51bWJlcikKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJOdW1iZXIgIik7CisgICAg
ICAgIHNlZW4uYXBwZW5kKCJOdW1iZXIgIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVN0
cmluZykKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJTdHJpbmcgIik7CisgICAgICAgIHNl
ZW4uYXBwZW5kKCJTdHJpbmcgIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU9iamVjdCkK
LSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJPYmplY3QgIik7CisgICAgICAgIHNlZW4uYXBw
ZW5kKCJPYmplY3QgIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVN5bWJvbCkKLSAgICAg
ICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJTeW1ib2wgIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCJT
eW1ib2wgIik7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0
b3J5KSB7Ci0gICAgICAgIHNlZW4uYXBwZW5kKHNoYXBlLT5tX2NvbnN0cnVjdG9yTmFtZSk7Ci0g
ICAgICAgIHNlZW4uYXBwZW5kKCcgJyk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgc2hh
cGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpCisgICAgICAgIHNlZW4uYXBwZW5kKHNoYXBlLT5tX2Nv
bnN0cnVjdG9yTmFtZSwgJyAnKTsKIAogICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgp
KSAKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJcblN0cnVjdHVyZXM6WyAiKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KSB7Ci0gICAgICAgIHNl
ZW4uYXBwZW5kKHNoYXBlLT5zdHJpbmdSZXByZXNlbnRhdGlvbigpKTsKLSAgICAgICAgc2Vlbi5h
cHBlbmQoJyAnKTsKLSAgICB9CisgICAgICAgIHNlZW4uYXBwZW5kKCJcblN0cnVjdHVyZXM6WyAi
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNoYXBlIDogbV9zdHJ1Y3R1cmVIaXN0b3J5KQorICAg
ICAgICBzZWVuLmFwcGVuZChzaGFwZS0+c3RyaW5nUmVwcmVzZW50YXRpb24oKSwgJyAnKTsKICAg
ICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSkKICAgICAgICAgc2Vlbi5hcHBlbmQoJ10n
KTsKIAotICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKSB7Ci0gICAgICAgIHNlZW4u
YXBwZW5kTGl0ZXJhbCgiXG5MZWFzdCBDb21tb24gQW5jZXN0b3I6ICIpOwotICAgICAgICBzZWVu
LmFwcGVuZChsZWFzdENvbW1vbkFuY2VzdG9yKCkpOwotICAgIH0KKyAgICBpZiAobV9zdHJ1Y3R1
cmVIaXN0b3J5LnNpemUoKSkKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuTGVhc3QgQ29tbW9uIEFu
Y2VzdG9yOiAiLCBsZWFzdENvbW1vbkFuY2VzdG9yKCkpOwogCiAgICAgcmV0dXJuIHNlZW4udG9T
dHJpbmcoKTsKIH0KQEAgLTI1OCw1OSArMjUyLDU3IEBAIFN0cmluZyBUeXBlU2V0Ojp0b0pTT05T
dHJpbmcoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIganNvbjsKICAgICBqc29uLmFwcGVuZCgn
eycpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImRpc3BsYXlUeXBlTmFtZVwiOiIpOwor
ICAgIGpzb24uYXBwZW5kKCJcImRpc3BsYXlUeXBlTmFtZVwiOiIpOwogICAgIGpzb24uYXBwZW5k
UXVvdGVkSlNPTlN0cmluZyhkaXNwbGF5TmFtZSgpKTsKICAgICBqc29uLmFwcGVuZCgnLCcpOwog
Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInByaW1pdGl2ZVR5cGVOYW1lc1wiOiIpOwotICAg
IGpzb24uYXBwZW5kKCdbJyk7CisgICAganNvbi5hcHBlbmQoIlwicHJpbWl0aXZlVHlwZU5hbWVz
XCI6WyIpOwogICAgIGJvb2wgaGFzQW5JdGVtID0gZmFsc2U7CiAgICAgaWYgKG1fc2VlblR5cGVz
ICYgVHlwZVVuZGVmaW5lZCkgewogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBq
c29uLmFwcGVuZExpdGVyYWwoIlwiVW5kZWZpbmVkXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQo
IlwiVW5kZWZpbmVkXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwp
IHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7
CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJOdWxsXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwiTnVsbFwiIik7CiAgICAgfQogICAg
IGlmIChtX3NlZW5UeXBlcyAmIFR5cGVCb29sZWFuKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0p
CiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVl
OwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiQm9vbGVhblwiIik7CisgICAgICAgIGpz
b24uYXBwZW5kKCJcIkJvb2xlYW5cIiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlQW55SW50KSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCiAgICAgICAgICAgICBqc29uLmFw
cGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVu
ZExpdGVyYWwoIlwiSW50ZWdlclwiIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJcIkludGVnZXJc
IiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVtYmVyKSB7CiAgICAgICAg
IGlmIChoYXNBbkl0ZW0pCiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBo
YXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiTnVtYmVyXCIi
KTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwiTnVtYmVyXCIiKTsKICAgICB9CiAgICAgaWYgKG1f
c2VlblR5cGVzICYgVHlwZVN0cmluZykgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAg
ICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAg
ICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlN0cmluZ1wiIik7CisgICAgICAgIGpzb24uYXBwZW5k
KCJcIlN0cmluZ1wiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTeW1ib2wp
IHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7
CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJTeW1ib2xcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiXCJTeW1ib2xcIiIpOwogICAgIH0K
ICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAgICAganNvbi5hcHBlbmQoJywnKTsKIAotICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiXCJzdHJ1Y3R1cmVzXCI6Iik7Ci0gICAganNvbi5hcHBlbmQoJ1sn
KTsKKyAgICBqc29uLmFwcGVuZCgiXCJzdHJ1Y3R1cmVzXCI6WyIpOwogICAgIGhhc0FuSXRlbSA9
IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCkBAIC0zNjAsMTEgKzM1Miw4IEBA
IFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5h
cHBlbmQocHJvcGVydHkpOwogICAgIH0KIAotICAgIGlmIChtX3Byb3RvKSB7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiX19wcm90
b19fIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsK
LSAgICB9CisgICAgaWYgKG1fcHJvdG8pCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6X19wcm90
b19fIiwgbV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwogCiAgICAgbV9wcm9wZXJ0eUhhc2ggPSBt
YWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKICAgICByZXR1cm4gKm1fcHJv
cGVydHlIYXNoOwpAQCAtNDM3LDUwICs0MjYsNDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjp0
b0pTT05TdHJpbmcoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIganNvbjsKICAgICBqc29uLmFw
cGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImNvbnN0cnVjdG9yTmFtZVwi
OiIpOworICAgIGpzb24uYXBwZW5kKCJcImNvbnN0cnVjdG9yTmFtZVwiOiIpOwogICAgIGpzb24u
YXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2NvbnN0cnVjdG9yTmFtZSk7CiAgICAganNvbi5hcHBl
bmQoJywnKTsKIAotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJpc0luRGljdGlvbmFyeU1vZGVc
IjoiKTsKKyAgICBqc29uLmFwcGVuZCgiXCJpc0luRGljdGlvbmFyeU1vZGVcIjoiKTsKICAgICBp
ZiAobV9pc0luRGljdGlvbmFyeU1vZGUpCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgidHJ1
ZSIpOworICAgICAgICBqc29uLmFwcGVuZCgidHJ1ZSIpOwogICAgIGVsc2UKLSAgICAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCJmYWxzZSIpOworICAgICAgICBqc29uLmFwcGVuZCgiZmFsc2UiKTsK
ICAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImZpZWxk
c1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7CisgICAganNvbi5hcHBlbmQoIlwiZmllbGRz
XCI6WyIpOwogICAgIGJvb2wgaGFzQW5JdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGl0ID0g
bV9maWVsZHMuYmVnaW4oKSwgZW5kID0gbV9maWVsZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgIGZvciAoYXV0byYgZmllbGQgOiBtX2ZpZWxkcykgewogICAgICAgICBpZiAoaGFzQW5J
dGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0g
dHJ1ZTsKIAotICAgICAgICBTdHJpbmcgZmllbGROYW1lKCgqaXQpLmdldCgpKTsKKyAgICAgICAg
U3RyaW5nIGZpZWxkTmFtZShmaWVsZC5nZXQoKSk7CiAgICAgICAgIGpzb24uYXBwZW5kUXVvdGVk
SlNPTlN0cmluZyhmaWVsZE5hbWUpOwogICAgIH0KLSAgICBqc29uLmFwcGVuZCgnXScpOwotICAg
IGpzb24uYXBwZW5kKCcsJyk7CisgICAganNvbi5hcHBlbmQoIl0sIik7CiAKLSAgICBqc29uLmFw
cGVuZExpdGVyYWwoIlwib3B0aW9uYWxGaWVsZHNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgnWycp
OworICAgIGpzb24uYXBwZW5kKCJcIm9wdGlvbmFsRmllbGRzXCI6WyIpOwogICAgIGhhc0FuSXRl
bSA9IGZhbHNlOwotICAgIGZvciAoYXV0byBpdCA9IG1fb3B0aW9uYWxGaWVsZHMuYmVnaW4oKSwg
ZW5kID0gbV9vcHRpb25hbEZpZWxkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9y
IChhdXRvJiBmaWVsZCA6IG1fb3B0aW9uYWxGaWVsZHMpIHsKICAgICAgICAgaWYgKGhhc0FuSXRl
bSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRy
dWU7CiAKLSAgICAgICAgU3RyaW5nIGZpZWxkTmFtZSgoKml0KS5nZXQoKSk7CisgICAgICAgIFN0
cmluZyBmaWVsZE5hbWUoZmllbGQuZ2V0KCkpOwogICAgICAgICBqc29uLmFwcGVuZFF1b3RlZEpT
T05TdHJpbmcoZmllbGROYW1lKTsKICAgICB9CiAgICAganNvbi5hcHBlbmQoJ10nKTsKICAgICBq
c29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInByb3RvXCI6Iik7
CisgICAganNvbi5hcHBlbmQoIlwicHJvdG9cIjoiKTsKICAgICBpZiAobV9wcm90bykKICAgICAg
ICAganNvbi5hcHBlbmQobV9wcm90by0+dG9KU09OU3RyaW5nKCkpOwogICAgIGVsc2UKLSAgICAg
ICAganNvbi5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJudWxs
Iik7CiAKICAgICBqc29uLmFwcGVuZCgnfScpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGFh
ODZkNWIxMGI3MmYxNmI4MjgzZDc4ZjY5MWM5MWY5YjQyMTFiMDUuLmMzZjE3MGNjMjhhYmVlYzQw
MmEyYzcyOGZkMTcxYmFlYzY1OGJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0xNDcsMjUg
KzE0NywxOCBAQCBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBpbnB1dFN0
cmluZykKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUNhcGFj
aXR5KGxlbmd0aCk7CiAKLSAgICBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcjsKLSAgICBVQ2hhciBj
aGFyYWN0ZXIgPSAwOworICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyID0gMDsKICAgICBVQ2hh
ciBuZXh0Q2hhcmFjdGVyID0gaW5wdXRTdHJpbmdbMF07CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFj
dGVyOwotICAgICAgICBjaGFyYWN0ZXIgPSBuZXh0Q2hhcmFjdGVyOwotICAgICAgICBuZXh0Q2hh
cmFjdGVyID0gaSArIDEgPCBsZW5ndGggPyBpbnB1dFN0cmluZ1tpICsgMV0gOiAwOwotCisgICAg
ICAgIGF1dG8gY2hhcmFjdGVyID0gc3RkOjpleGNoYW5nZShuZXh0Q2hhcmFjdGVyLCBpICsgMSA8
IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDApOwogICAgICAgICBpZiAoc2hvdWxkRXNj
YXBlVUNoYXIoY2hhcmFjdGVyLCBwcmV2aW91c0NoYXJhY3RlciwgbmV4dENoYXJhY3RlcikpIHsK
LSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoYXJhY3RlciksIDIpKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hh
cmFjdGVyID4+IDgpLCAyKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAweEZGKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyUnLCBoZXgoY2hhcmFjdGVyLCAyKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiJSsiLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4o
Y2hhcmFjdGVyID4+IDgpLCAyKSwgaGV4KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGNoYXJhY3Rlciks
IDIpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgICAgIHByZXZpb3VzQ2hhcmFjdGVyID0gY2hhcmFjdGVyOwogICAgIH0KIAogICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pT
T05WYWx1ZXMuY3BwIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggNDc3Njg1
NDgwODI5N2VjZDIzOThmMmM1MDdlOGM2YTI4YWY2ZTUwMS4uM2QyNTZiZWYyZGE5MTE0ODMyOWE1
MDNhZjJiNGI2NzdlYjUyMTljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVl
cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTUyMywyNSArNTIz
LDI1IEBAIHZvaWQgVmFsdWU6OmVzY2FwZVN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBT
dHJpbmdWaWV3IHN0cmluZykKICAgICBmb3IgKFVDaGFyIGNvZGVVbml0IDogc3RyaW5nLmNvZGVV
bml0cygpKSB7CiAgICAgICAgIHN3aXRjaCAoY29kZVVuaXQpIHsKICAgICAgICAgY2FzZSAnXGIn
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcXGIiKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBj
YXNlICdcZic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcZiIpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcZiIpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxu
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxuIik7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgY2FzZSAnXHInOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJcXHIiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcXHIiKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBjYXNlICdcdCc6Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlxcdCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcdCIpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcXCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxcXFwiKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjYXNlICciJzoKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcIiIpOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxcXCIiKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIC8vIFdlIGVzY2FwZSA8IGFuZCA+IHRvIHByZXZlbnQgc2NyaXB0IGV4ZWN1dGlvbi4KQEAg
LTU5OCwxMyArNTk4LDEzIEBAIHZvaWQgVmFsdWU6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBv
dXRwdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6Ok51
bGw6Ci0gICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgIG91dHB1
dC5hcHBlbmQoIm51bGwiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpCb29sZWFu
OgogICAgICAgICBpZiAobV92YWx1ZS5ib29sZWFuKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZExpdGVyYWwoInRydWUiKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoInRydWUiKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoImZhbHNlIik7Cisg
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJmYWxzZSIpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFR5cGU6OlN0cmluZzoKICAgICAgICAgYXBwZW5kRG91YmxlUXVvdGVkU3RyaW5nKG91dHB1
dCwgbV92YWx1ZS5zdHJpbmcpOwpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgVmFsdWU6OndyaXRl
SlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiAgICAgY2FzZSBUeXBlOjpEb3VibGU6
CiAgICAgY2FzZSBUeXBlOjpJbnRlZ2VyOiB7CiAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSht
X3ZhbHVlLm51bWJlcikpCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgibnVsbCIp
OworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgibnVsbCIpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kKG1fdmFsdWUubnVtYmVyKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dl
ci5oCmluZGV4IGU5OWQ0OWJmMmU5ZDlhZDJhNmIzYjYxODBkY2JkOThjZDc4NWZhNTQuLjBkNzdh
MDUyZWU1ODYzZjkzMjcxNjQ5MGEyN2EwNmMzNWIwMGRkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCkBAIC0zMDcsNyAr
MzA3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudD4KICAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgbG9nKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xl
dmVsIGxldmVsLCBjb25zdCBBcmd1bWVudCYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAg
U3RyaW5nIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFyZ3VtZW50Pjo6dG9T
dHJpbmcoYXJndW1lbnRzKS4uLik7CisgICAgICAgIGF1dG8gbG9nTWVzc2FnZSA9IG1ha2VTdHJp
bmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0b1N0cmluZyhhcmd1bWVudHMpLi4uKTsKIAogI2lm
IFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFdURkxvZygmY2hhbm5lbCwgIiVzIiwgbG9n
TWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50PgogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBs
b2dWZXJib3NlKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBjb25z
dCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgaW50IGxpbmUsIGNvbnN0IEFyZ3Vt
ZW50Ji4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBTdHJpbmcgbG9nTWVzc2FnZSA9IG1h
a2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0b1N0cmluZyhhcmd1bWVudHMpLi4uKTsK
KyAgICAgICAgYXV0byBsb2dNZXNzYWdlID0gbWFrZVN0cmluZyhMb2dBcmd1bWVudDxBcmd1bWVu
dD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOwogCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAgICAgV1RGTG9nVmVyYm9zZShmaWxlLCBsaW5lLCBmdW5jdGlvbiwgJmNoYW5uZWwsICIl
cyIsIGxvZ01lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCA5Mzk3
NzUwOGI0YzU3ZTE5MjEwN2NiYjJjNTYyZmZiZWFlNWY4YTY3Li40YmJjOTgxZDhkYjAyYjUzNjlk
YWZjMTQ0ZThhZDI0NDM5ZmRlZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRp
bWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC01NjUsMTUgKzU2NCwxMCBAQCB2b2lkIE1lZGlhVGltZTo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogCiBTdHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0
CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCd7Jyk7
Ci0gICAgaWYgKCFoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Rp
bWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2FsZSwgIiA9ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHRv
RG91YmxlKCkpOwotICAgIGlmIChpc0ludmFsaWQoKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsIGludmFsaWQiKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnfScpOwotICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgY29uc3QgY2hhciogaW52YWxpZCA9IGlzSW52YWxp
ZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKKyAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAg
IHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90aW1lU2NhbGUsICIg
PSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBN
ZWRpYVRpbWU6OnRvSlNPTk9iamVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCmluZGV4IDIyYWNlZmNjOGJiY2ZmYzEzMzIwNzVh
Nzg2YWJjNGJlM2RiNGZjYjIuLjAzZjU4NjFjMzNjYmUyZjM5ZDVjMTAzYzhhOTIwZTQxYmQwMWZl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSB2b2lkIHdyaXRlSW50ZWdlclRvQnVmZmVyKElu
dGVnZXJUeXBlIGludGVnZXIsIENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJl
ciBOdW1iZXJUeXBlPgotc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nSW1w
bChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKK2NvbnN0ZXhwciB1bnNpZ25lZCBsZW5ndGhP
ZkludGVnZXJBc1N0cmluZ0ltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCiB7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBsZW5ndGhPZkludGVnZXJBc1N0cmluZ0ltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIp
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPgotaW5saW5lIHVuc2lnbmVkIGxl
bmd0aE9mSW50ZWdlckFzU3RyaW5nKEludGVnZXJUeXBlIGludGVnZXIpCitjb25zdGV4cHIgdW5z
aWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoSW50ZWdlclR5cGUgaW50ZWdlcikKIHsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWxfdjxJbnRlZ2VyVHlwZT4pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8SW50ZWdlclR5cGUsIGJvb2w+KSB7CkBAIC0xMjgs
MyArMTI4LDYgQEAgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKEludGVn
ZXJUeXBlIGludGVnZXIpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Omxl
bmd0aE9mSW50ZWdlckFzU3RyaW5nOwordXNpbmcgV1RGOjp3cml0ZUludGVnZXJUb0J1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5kZXggNTRmMmIyNDI1OWM1ODBmZjMxNDVl
OGU3YmZmM2M4OGM2MmY5OTdhMi4uNjY2OGFjNjI3MzBlMDg2OTY1MGIyOTgyMGY4MzZkZjc3MWE4
NDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTY5LDggKzY5LDYgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiBBZGQgYSBTdHJpbmdUeXBlQWRhcHRlciBzbyB3ZSBjYW4g
YXBwZW5kIG9uZSBzdHJpbmcgYnVpbGRlciB0byBhbm90aGVyIHdpdGggdmFyaWFkaWMgYXBwZW5k
LgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZ0J1aWxkZXImKTsKIAotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiB2b2lkIGFwcGVuZExpdGVyYWwoY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgeyBhcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3Rl
cnMsIGNoYXJhY3RlckNvdW50IC0gMSk7IH0KLQogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyKFVD
aGFyKSA9IGRlbGV0ZTsKICAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihMQ2hhcikgPSBkZWxldGU7
CiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoY2hhcikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKaW5kZXggMjY5MDJlMGZhMjQ1YmRhZTFlZmYxZWEwYzcx
N2I2ZDE5Yjc5ZjE0Ni4uMmUzOGVmNzc4OTlhM2MzZWJhZmViNTFkYTk0MDZjZmFiZGRmNzM3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtMTcwLDE1ICsxNzAs
MTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIG1fdmVjdG9yOwogfTsKIAot
dGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHsKK3RlbXBs
YXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nSW1wbCosIHZvaWQ+IHsKIHB1Ymxp
YzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcihTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgICAgIDogbV9zdHJpbmcgeyBz
dHJpbmcgfQogICAgIHsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuaXNOdWxsKCkgfHwgbV9zdHJpbmcuaXM4Qml0KCk7IH0KKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZyA/IG1fc3RyaW5nLT5sZW5ndGgoKSA6
IDA7IH0KKyAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cmluZyB8fCBtX3N0
cmluZy0+aXM4Qml0KCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0CiAgICAgewogICAg
ICAgICBTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChk
ZXN0aW5hdGlvbik7CkBAIC0xODYsNyArMTg2LDIzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgU3RyaW5nJiBtX3N0cmluZzsKKyAgICBTdHJpbmdJbXBsKiBjb25zdCBt
X3N0cmluZzsKK307CisKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8QXRvbVN0
cmluZ0ltcGwqLCB2b2lkPiA6IHB1YmxpYyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwg
dm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKEF0b21TdHJpbmdJbXBsKiBz
dHJpbmcpCisgICAgICAgIDogU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nSW1wbCosIHZvaWQ+IHsg
c3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZykgfQorICAgIHsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gOiBwdWJsaWMg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nSW1wbCosIHZvaWQ+IHsKK3B1YmxpYzoKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcihjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICAgICAgOiBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geyBzdHJpbmcuaW1wbCgpIH0KKyAgICB7CisgICAg
fQogfTsKIAogdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5nLCB2
b2lkPiA6IHB1YmxpYyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHsKQEAgLTE5Nyw2
ICsyMTMsMzMgQEAgcHVibGljOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nSW1wbCYsIHZvaWQ+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmdUeXBl
QWRhcHRlcihTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgICAgIDogbV9zdHJpbmcgeyBzdHJpbmcg
fQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5sZW5ndGgoKTsgfQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXM4Qml0KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0CisgICAgeworICAg
ICAgICBTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChk
ZXN0aW5hdGlvbik7CisgICAgICAgIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NU
UklORygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmdJbXBsJiBtX3N0cmluZzsKK307
CisKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8QXRvbVN0cmluZ0ltcGwmLCB2
b2lkPiA6IHB1YmxpYyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsJiwgdm9pZD4geworcHVi
bGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICAgICAg
OiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsJiwgdm9pZD4geyBzdHJpbmcgfQorICAgIHsK
KyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4gY2xhc3MgU3Ry
aW5nVHlwZUFkYXB0ZXI8c3RkOjp0dXBsZTxTdHJpbmdUeXBlcy4uLj4sIHZvaWQ+IHsKIHB1Ymxp
YzoKICAgICBTdHJpbmdUeXBlQWRhcHRlcihzdGQ6OnR1cGxlPFN0cmluZ1R5cGVzLi4uPiB0dXBs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAKaW5kZXggMWQxNzE1OGQyOGNlMzllOWU3MGM4MzQ3MDMzOWE2Zjc3NDcxMzA0NC4uNTVj
ZmRhYWQ3ZGJmYzExNWQ5MjdmYWY5YTRlODBhMzE2YzNmNTI2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTE4OSw3ICsx
ODksNyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIGF1dG8gZm9ybSA9IERPTUZvcm1E
YXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkpOwogICAgIGF1dG8gbWltZVR5cGUgPSBwYXJzZU1J
TUVUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBpZiAoYXV0byBtdWx0aXBhcnRCb3VuZGFyeSA9IHBh
cnNlTXVsdGlwYXJ0Qm91bmRhcnkobWltZVR5cGUpKSB7Ci0gICAgICAgIFN0cmluZyBib3VuZGFy
eVdpdGhEYXNoZXMgPSBtYWtlU3RyaW5nKCItLSIsICptdWx0aXBhcnRCb3VuZGFyeSk7CisgICAg
ICAgIGF1dG8gYm91bmRhcnlXaXRoRGFzaGVzID0gbWFrZVN0cmluZygiLS0iLCAqbXVsdGlwYXJ0
Qm91bmRhcnkpOwogICAgICAgICBDU3RyaW5nIGJvdW5kYXJ5ID0gYm91bmRhcnlXaXRoRGFzaGVz
LnV0ZjgoKTsKICAgICAgICAgc2l6ZV90IGJvdW5kYXJ5TGVuZ3RoID0gYm91bmRhcnkubGVuZ3Ro
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5j
cHAKaW5kZXggYjQxYjJmMGUzYjM2MTZlNThjNTNlMDc0MDM0NjJlZjBiOWZhMTJkMi4uOGY3OGM0
YzdlYmU4Nzc0OWNjMjM4YjRjZjc1MDRmODA0ZGNhMzQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTMyMywyNCArMzIzLDI0IEBA
IFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICI8aW52YWxpZD4iX3M7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7CiAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI8YXJyYXk+IC0geyAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjxhcnJheT4gLSB7
ICIpOwogICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4o
bV92YWx1ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5W2ldLmxvZ2dpbmdTdHJpbmco
KSk7CiAgICAgICAgICAgICBpZiAoaSA8IGFycmF5LnNpemUoKSAtIDEpCi0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIsICIpOwogICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IH0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiB9Iik7CiAgICAgICAgIHJlc3VsdCA9IGJ1
aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSW5kZXhl
ZERCOjpLZXlUeXBlOjpCaW5hcnk6IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjxiaW5hcnk+IC0gIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI8YmluYXJ5PiAtICIpOwogCiAgICAgICAgIGF1dG8qIGRhdGEgPSBXVEY6
OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0YSgpOwogICAgICAgICBpZiAo
IWRhdGEpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKG51bGwpIik7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG51bGwpIik7CiAgICAgICAgICAgICByZXN1bHQg
PSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MzUzLDcgKzM1Myw3IEBAIFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhLT5zaXplKCkgPiA4KQotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIuLi4iKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIuLi4iKTsKIAogICAgICAgICByZXN1bHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzZDJjZDEzNmFk
NDM3NDVhYWNjMjI3NDk1ZDA1ZjdkN2EyZTNjOWRkLi5kN2ZhM2JjMmVlMWM2ODdjZTdlNGExYmJk
N2E0YjBhYzYwNjM0ODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAt
MjIyMCw3ICsyMjIwLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIGZpbGUgZm9yIHRoaXMgYmxvYlVSTCwg
c28gY29tbWl0IG91ciBmaWxlIGFzIGEgdW5pcXVlIGZpbGVuYW1lCi0gICAgICAgIFN0cmluZyBz
dG9yZWRGaWxlbmFtZSA9IG1ha2VTdHJpbmcocG90ZW50aWFsRmlsZU5hbWVJbnRlZ2VyLCAiLmJs
b2IiKTsKKyAgICAgICAgYXV0byBzdG9yZWRGaWxlbmFtZSA9IG1ha2VTdHJpbmcocG90ZW50aWFs
RmlsZU5hbWVJbnRlZ2VyLCAiLmJsb2IiKTsKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBz
cWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpBZGRCbG9iRmlsZW5hbWUsICJJTlNFUlQgSU5UTyBC
bG9iRmlsZXMgVkFMVUVTICg/LCA/KTsiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAKaW5kZXggNzAzMmIyMzhjYmE2ZjFiNTY3MTFhOWZmOThhNjk2MWFlMzY1
NGFiOS4uMGUyYzdjNjA0MTc1MTc1Yzg4NDZhZmZmZWFkZjEwYzI4NDA0YmQyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1l
bnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHNxbGl0ZTMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtMTM0LDc4ICsxMzMsMzIgQEAgdm9pZCBT
UUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBP
cHRpb25hbDxJREJLZXlQYXQKIAogc3RhdGljIFN0cmluZyBidWlsZFByZUluZGV4U3RhdGVtZW50
KGJvb2wgaXNEaXJlY3Rpb25OZXh0KQogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVlIEZST00g
SW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCkg
QU5EIHZhbHVlICIpOwotICAgIGlmIChpc0RpcmVjdGlvbk5leHQpCi0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc+Jyk7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgnPCcpOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIHZhbHVl
Iik7Ci0gICAgaWYgKCFpc0RpcmVjdGlvbk5leHQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIERFU0MiKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0KLSAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJTRUxFQ1Qgcm93aWQs
IGtleSwgdmFsdWUgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9
IENBU1QoPyBBUyBURVhUKSBBTkQgdmFsdWUgIiwKKyAgICAgICAgaXNEaXJlY3Rpb25OZXh0ID8g
Jz4nIDogJzwnLCAiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSB2YWx1ZSIsIGlzRGlyZWN0aW9u
TmV4dCA/ICIiIDogIiBERVNDIiwgJzsnKTsKIH0KIAogc3RhdGljIFN0cmluZyBidWlsZEluZGV4
U3RhdGVtZW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNFTEVDVCByb3dpZCwga2V5LCB2YWx1
ZSBGUk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ICIpOwotICAgIGlm
ICgha2V5UmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLmxvd2VyT3BlbikKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI+PSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoJz4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBB
UyBURVhUKSBBTkQga2V5ICIpOwotICAgIGlmICgha2V5UmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkg
JiYgIWtleVJhbmdlLnVwcGVyT3BlbikKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8
PSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzwnKTsKLQotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXkiKTsKLSAgICBp
ZiAoY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2IHx8
IGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldnVuaXF1
ZSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgREVTQyIpOwotCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIHZhbHVlIik7Ci0gICAgaWYgKGN1cnNvckRpcmVjdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldikKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgREVTQyIpOwotCi0gICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKLQotICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlNFTEVDVCByb3dp
ZCwga2V5LCB2YWx1ZSBGUk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5
ICIsCisgICAgICAgICFrZXlSYW5nZS5sb3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93
ZXJPcGVuID8gIj49IiA6ICI+IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSAi
LAorICAgICAgICAha2V5UmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVy
T3BlbiA/ICI8PSIgOiAiPCIsCisgICAgICAgICIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtl
eSIsCisgICAgICAgIGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
bjo6UHJldiB8fCBjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246
OlByZXZ1bmlxdWUgPyAiIERFU0MiIDogIiIKKyAgICAgICAgIiwgdmFsdWUiLAorICAgICAgICBj
dXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgPyAiIERF
U0MiIDogIiIsCisgICAgICAgICc7Jyk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRPYmplY3RT
dG9yZVN0YXRlbWVudChjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24pCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwg
dmFsdWUgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgIik7Ci0K
LSAgICBpZiAoIWtleVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5nZS5sb3dlck9w
ZW4pCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPj0iKTsKLSAgICBlbHNlCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCc+Jyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBD
QVNUKD8gQVMgVEVYVCkgQU5EIGtleSAiKTsKLQotICAgIGlmICgha2V5UmFuZ2UudXBwZXJLZXku
aXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVyT3BlbikKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI8PSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzwnKTsKLQot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXki
KTsKLQotICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246OlByZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpQcmV2dW5pcXVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0K
LSAgICBidWlsZGVyLmFwcGVuZCgnOycpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVlIEZST00g
UmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ICIsCisgICAgICAgICFrZXlS
YW5nZS5sb3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJPcGVuID8gIj49IiA6ICI+
IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSAiLAorICAgICAgICAha2V5UmFu
Z2UudXBwZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVyT3BlbiA/ICI8PSIgOiAiPCIs
CisgICAgICAgICIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIsCisgICAgICAgIGN1cnNv
ckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldiB8fCBjdXJzb3JE
aXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWUgPyAiIERF
U0MiIDogIiIsCisgICAgICAgICc7Jyk7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3Rh
Ymxpc2hTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAppbmRleCBmZTgwZDQwMTAwNWU1MTRiOWM5ZjRkNDRjMDdlOTdjMDhkZDE1
ODQ3Li5jZDljYTIyNGMzOGJkYjRlNWMxYzUxNTE3YjE2OGExNTg0YTU1OThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTA4LDEx
ICsxMDgsMTAgQEAgc3RhdGljIFN0cmluZyBlbmNvZGVQcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHByb3RvY29sKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKHBy
b3RvY29sW2ldIDwgMHgyMCB8fCBwcm90b2NvbFtpXSA+IDB4N0UpIHsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFx1Iik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCho
ZXgocHJvdG9jb2xbaV0sIDQpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm90b2NvbFtpXSA9PSAw
eDVjKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CisgICAgICAg
IGlmIChwcm90b2NvbFtpXSA8IDB4MjAgfHwgcHJvdG9jb2xbaV0gPiAweDdFKQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIlxcdSIsIGhleChwcm90b2NvbFtpXSwgNCkpOworICAgICAgICBl
bHNlIGlmIChwcm90b2NvbFtpXSA9PSAweDVjKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxcXFwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJvdG9j
b2xbaV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAppbmRleCAw
MDY2NjM4YzE3MWMzOWQ2NjUzODZhNzQxYTAwY2NkZGIwY2RjNmJjLi4xMjRkNmEzNWY2ZmVmNDA5
Yzc4ZDRiNTMyMzc4MGExZTRkYjU5MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGNvbnN0IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0CiB2b2lkIFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXI6OmFwcGVuZEFjY2VwdGVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uVG9rZW4sIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRlbnNpb25QYXJhbWV0ZXJz
KQogewogICAgIGlmICghbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Cisg
ICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgbV9h
Y2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZChleHRlbnNpb25Ub2tlbik7CiAgICAgLy8g
RklYTUU6IFNob3VsZCB1c2UgTGlzdEhhc2hTZXQgdG8ga2VlcCB0aGUgb3JkZXIgb2YgdGhlIHBh
cmFtZXRlcnMuCiAgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBleHRlbnNpb25QYXJhbWV0ZXJz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGU0OTBhZGEzN2JkMTM2ODRjNWNhZjZhYmNiNDI3MTU0
NGQ4N2MzZTUuLjU4MjJjMDhiMTg3MTczNjRmYzRhZWVlYWUwNDY1Yjk3YTljOTk5MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwCkBAIC0xNjksMTMgKzE2OSwxMSBAQCBDU3RyaW5nIFdlYlNvY2tldEhhbmRz
aGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAgICAgLy8gS2VlcCB0aGUgZm9s
bG93aW5nIGNvbnNpc3RlbnQgd2l0aCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkuCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJHRVQgIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2VOYW1lKG1fdXJsKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgSFRUUC8xLjFcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkdFVCAi
LCByZXNvdXJjZU5hbWUobV91cmwpLCAiIEhUVFAvMS4xXHJcbiIpOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gZmllbGRzOwotICAgIGZpZWxkcy5hcHBlbmQoIlVwZ3JhZGU6IHdlYnNvY2tldCIpOwot
ICAgIGZpZWxkcy5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGUiKTsKKyAgICBmaWVsZHMuYXBw
ZW5kKCJVcGdyYWRlOiB3ZWJzb2NrZXQiX3MpOworICAgIGZpZWxkcy5hcHBlbmQoIkNvbm5lY3Rp
b246IFVwZ3JhZGUiX3MpOwogICAgIGZpZWxkcy5hcHBlbmQoIkhvc3Q6ICIgKyBob3N0TmFtZSht
X3VybCwgbV9zZWN1cmUpKTsKICAgICBmaWVsZHMuYXBwZW5kKCJPcmlnaW46ICIgKyBtX2NsaWVu
dE9yaWdpbik7CiAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkKQEAgLTE4OCwx
MSArMTg2LDExIEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VN
ZXNzYWdlKCkgY29uc3QKICAgICAvLyBUaGVyZSBhcmUgc29tZSBwcm94aWVzIHRoYXQgcmV3cml0
ZSAiQ29ubmVjdGlvbjogdXBncmFkZSIKICAgICAvLyB0byAiQ29ubmVjdGlvbjogY2xvc2UiIGlu
IHRoZSByZXNwb25zZSBpZiBhIHJlcXVlc3QgZG9lc24ndCBjb250YWluCiAgICAgLy8gdGhlc2Ug
aGVhZGVycy4KLSAgICBmaWVsZHMuYXBwZW5kKCJQcmFnbWE6IG5vLWNhY2hlIik7Ci0gICAgZmll
bGRzLmFwcGVuZCgiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUiKTsKKyAgICBmaWVsZHMuYXBwZW5k
KCJQcmFnbWE6IG5vLWNhY2hlIl9zKTsKKyAgICBmaWVsZHMuYXBwZW5kKCJDYWNoZS1Db250cm9s
OiBuby1jYWNoZSJfcyk7CiAKICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LUtleTog
IiArIG1fc2VjV2ViU29ja2V0S2V5KTsKLSAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0
LVZlcnNpb246IDEzIik7CisgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9u
OiAxMyJfcyk7CiAgICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25E
aXNwYXRjaGVyLmNyZWF0ZUhlYWRlclZhbHVlKCk7CiAgICAgaWYgKGV4dGVuc2lvblZhbHVlLmxl
bmd0aCgpKQogICAgICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6
ICIgKyBleHRlbnNpb25WYWx1ZSk7CkBAIC0yMDQsMTIgKzIwMiwxMCBAQCBDU3RyaW5nIFdlYlNv
Y2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiAgICAgLy8gb3Jk
ZXIgaXMgbm90IG1lYW5pbmdmdWwuICBUaHVzLCBpdCdzIG9rIHRvIHNlbmQgdGhlIG9yZGVyIHdl
IGNvbnN0cnVjdGVkCiAgICAgLy8gdGhlIGZpZWxkcy4KIAotICAgIGZvciAoYXV0byYgZmllbGQg
OiBmaWVsZHMpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZmllbGQpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBmaWVsZCA6
IGZpZWxkcykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZmllbGQsICJcclxuIik7CiAKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIp
OwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CkBAIC0yMTgsMTgg
KzIxNCwxNiBAQCBSZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5k
c2hha2VSZXF1ZXN0KGNvbnN0IEZ1bmN0aW9uPFN0cmluZwogewogICAgIC8vIEtlZXAgdGhlIGZv
bGxvd2luZyBjb25zaXN0ZW50IHdpdGggY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpLgogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KG1fdXJsKTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
IkdFVCIpOworICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKIAotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiVXBncmFk
ZSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25u
ZWN0aW9uLCAiVXBncmFkZSJfcyk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6Okhvc3QsIGhvc3ROYW1lKG1fdXJsLCBtX3NlY3VyZSkpOwogICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG1fY2xpZW50T3Jp
Z2luKTsKICAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0UHJvdG9j
b2wsIG1fY2xpZW50UHJvdG9jb2wpOwogCi0gICAgVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50
aWNhdGlvbkFuZENvb2tpZXMoKTsKICAgICBpZiAobV9hbGxvd0Nvb2tpZXMpIHsKLSAgICAgICAg
U3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVybCk7Ci0gICAg
ICAgIGlmICghY29va2llLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKFN0cmluZyBjb29raWUgPSBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRD
b29raWVzKCkpOyAhY29va2llLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZSk7CiAgICAgfQogCkBA
IC0yMzcsNyArMjMxLDcgQEAgUmVzb3VyY2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xp
ZW50SGFuZHNoYWtlUmVxdWVzdChjb25zdCBGdW5jdGlvbjxTdHJpbmcKICAgICByZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVy
VmFsdWVzOjpub0NhY2hlKCkpOwogCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldEtleSwgbV9zZWNXZWJTb2NrZXRLZXkpOwotICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRWZXJz
aW9uLCAiMTMiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6U2VjV2ViU29ja2V0VmVyc2lvbiwgIjEzIl9zKTsKICAgICBjb25zdCBTdHJpbmcgZXh0ZW5z
aW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKICAg
ICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRFeHRlbnNpb25zLCBleHRlbnNp
b25WYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDc1
Mjc0MTViYTM5MzRkNTdhZTEzNTdiM2FlZDMxYjE3ZjRjOGY3M2EuLmNiMzU5MjFkZGQ0ZTYwNzk5
NzMxNTAyYmVkZmYxYWIzZjEzNzZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC04MSwxMCArODEsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0Fj
Y2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCi0j
aWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBDZWxsIFRhYmxl
cwpAQCAtMzU0OSwxNCArMzU0NSw3IEBAIC0gKHZvaWQpc2hvd05vZGVUcmVlRm9yVGV4dE1hcmtl
cjooQVhUZXh0TWFya2VyUmVmKXRleHRNYXJrZXIKIAogc3RhdGljIHZvaWQgZm9ybWF0Rm9yRGVi
dWdnZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlLCBjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICAKLSAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZnJvbSAiKTsKLSAgICByZXN1bHQuYXBwZW5kKHJhbmdlLnN0
YXJ0LmRlYnVnRGVzY3JpcHRpb24oKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB0byAi
KTsKLSAgICByZXN1bHQuYXBwZW5kKHJhbmdlLmVuZC5kZWJ1Z0Rlc2NyaXB0aW9uKCkpOwotICAg
IAotICAgIHN0cmxjcHkoYnVmZmVyLCByZXN1bHQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBs
ZW5ndGgpOworICAgIHN0cmxjcHkoYnVmZmVyLCBtYWtlU3RyaW5nKCJmcm9tICIsIHJhbmdlLnN0
YXJ0LmRlYnVnRGVzY3JpcHRpb24oKSwgIiB0byAiLCByYW5nZS5lbmQuZGVidWdEZXNjcmlwdGlv
bigpKS51dGY4KCkuZGF0YSgpLCBsZW5ndGgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IDdlZThhZWQxYWMzMjI0ZDdiN2NjNWQwNzdjYzYyNmRl
MTc0YjA1MmEuLjI1NjI2NzI4MjJjMWZmZmY4ZjU2MDdlMTc3NDQ5NmZjM2E1NDk5NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KENT
U1ByaW1pdGl2ZVZhbHVlKgogc3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBT
dHJpbmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBjb25zdCBTdHJpbmcmIGNlbnRl
clkpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoImNpcmNsZSgiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJjaXJjbGUoIik7CiAgICAgaWYgKCFy
YWRpdXMuaXNOdWxsKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFkaXVzKTsKICAgICBpZiAo
IWNlbnRlclguaXNOdWxsKCkgfHwgIWNlbnRlclkuaXNOdWxsKCkpIHsKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBl
JiBzaGFwZSkgY29uc3QKIHN0YXRpYyBTdHJpbmcgYnVpbGRFbGxpcHNlU3RyaW5nKGNvbnN0IFN0
cmluZyYgcmFkaXVzWCwgY29uc3QgU3RyaW5nJiByYWRpdXNZLCBjb25zdCBTdHJpbmcmIGNlbnRl
clgsIGNvbnN0IFN0cmluZyYgY2VudGVyWSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZWxsaXBzZSgiKTsKKyAgICByZXN1bHQuYXBwZW5k
KCJlbGxpcHNlKCIpOwogICAgIGJvb2wgbmVlZHNTZXBhcmF0b3IgPSBmYWxzZTsKICAgICBpZiAo
IXJhZGl1c1guaXNOdWxsKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNYKTsKQEAg
LTE5MCw5ICsxOTAsOSBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkUGF0aFN0cmluZyhjb25zdCBXaW5k
UnVsZSYgd2luZFJ1bGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29ucwogewogICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogICAgIGlmICh3aW5kUnVsZSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBhdGgoZXZlbm9kZCwgIik7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoInBhdGgoZXZlbm9kZCwgIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgicGF0aCgiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgicGF0aCgiKTsK
IAogICAgIHNlcmlhbGl6ZVN0cmluZyhwYXRoLCByZXN1bHQpOwogICAgIHJlc3VsdC5hcHBlbmQo
JyknKTsKQEAgLTI0NCwxMyArMjQ0LDEzIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRQb2x5Z29uU3Ry
aW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAg
cmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAgICAgaWYgKHdpbmRSdWxlID09IFdp
bmRSdWxlOjpFdmVuT2RkKQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbChldmVuT2RkT3Bl
bmluZyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZXZlbk9kZE9wZW5pbmcpOwogICAgIGVsc2UK
LSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwobm9uWmVyb09wZW5pbmcpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKG5vblplcm9PcGVuaW5nKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcG9pbnRzLnNpemUoKTsgaSArPSAyKSB7CiAgICAgICAgIGlmIChpKQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoY29tbWFTZXBhcmF0b3IpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjb21tYVNlcGFyYXRvcik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocG9pbnRzW2ld
LCAnICcsIHBvaW50c1tpICsgMV0pOwogICAgIH0KIApAQCAtMzIyLDE0ICszMjIsMTQgQEAgc3Rh
dGljIFN0cmluZyBidWlsZEluc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgdG9wLCBjb25zdCBTdHJp
bmcmIHJpZ2h0LCBjb25zdCBTdHIKICAgICAgICAgYXJlRGVmYXVsdENvcm5lclJhZGlpICY9IGJ1
aWxkSW5zZXRSYWRpaSh2ZXJ0aWNhbFJhZGlpLCB0b3BMZWZ0UmFkaXVzSGVpZ2h0LCB0b3BSaWdo
dFJhZGl1c0hlaWdodCwgYm90dG9tUmlnaHRSYWRpdXNIZWlnaHQsIGJvdHRvbUxlZnRSYWRpdXNI
ZWlnaHQpOwogCiAgICAgICAgIGlmICghYXJlRGVmYXVsdENvcm5lclJhZGlpKSB7Ci0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHJvdW5kIik7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCIgcm91bmQiKTsKIAogICAgICAgICAgICAgZm9yIChhdXRvJiByYWRpdXMgOiBob3Jp
em9udGFsUmFkaWkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIHJhZGl1cyk7
CiAKICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbFJhZGlpLnNpemUoKSAhPSBob3Jpem9udGFsUmFk
aWkuc2l6ZSgpCiAgICAgICAgICAgICAgICAgfHwgIVdURjo6VmVjdG9yQ29tcGFyZXI8ZmFsc2Us
IFN0cmluZz46OmNvbXBhcmUodmVydGljYWxSYWRpaS5kYXRhKCksIGhvcml6b250YWxSYWRpaS5k
YXRhKCksIHZlcnRpY2FsUmFkaWkuc2l6ZSgpKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCIgLyIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAvIik7
CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByYWRpdXMgOiB2ZXJ0aWNhbFJhZGlpKQogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgcmFkaXVzKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA5YTU4MDExZjEz
Y2FhZTUyYTI0Y2Q5NmVhY2Y1ZjdkY2EwMjY1MzZjLi42ODY0OWE0OWQxMDJhZDliYTQyZTg3ZTA1
MTdhYWNjOWVjNGZmNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3Bw
CkBAIC02OTYsOSArNjk2LDkgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3Rv
bUNTU1RleHQoKSBjb25zdAogICAgICAgICBhcHBlbmRHcmFkaWVudFN0b3BzKHJlc3VsdCwgc3Rv
cHMoKSk7CiAgICAgfSBlbHNlIGlmIChncmFkaWVudFR5cGUoKSA9PSBDU1NQcmVmaXhlZExpbmVh
ckdyYWRpZW50KSB7CiAgICAgICAgIGlmIChpc1JlcGVhdGluZygpKQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIi13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgiKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFk
aWVudCgiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
Ii13ZWJraXQtbGluZWFyLWdyYWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIik7CiAKICAgICAgICAgaWYgKG1fYW5nbGUpCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fYW5nbGUtPmNzc1RleHQoKSk7CkBAIC03MDYsMTQgKzcw
NiwxNCBAQCBTdHJpbmcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNv
bnN0CiAgICAgICAgICAgICBhcHBlbmRTcGFjZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChy
ZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBzdG9wIDog
c3RvcHMoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAgd3JpdGVDb2xvclN0b3Ao
cmVzdWx0LCBzdG9wKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc1Jl
cGVhdGluZygpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1s
aW5lYXItZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJyZXBlYXRpbmct
bGluZWFyLWdyYWRpZW50KCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgibGluZWFyLWdyYWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgibGluZWFyLWdyYWRpZW50KCIpOwogCiAgICAgICAgIGJvb2wgd3JvdGVTb21ldGhpbmcgPSBm
YWxzZTsKIApAQCAtNzIxLDE0ICs3MjEsMTQgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFs
dWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2Fu
Z2xlLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAg
ICAgICB9IGVsc2UgaWYgKGZpcnN0WCgpIHx8IChmaXJzdFkoKSAmJiBmaXJzdFkoKS0+dmFsdWVJ
RCgpICE9IENTU1ZhbHVlQm90dG9tKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoInRvICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgidG8gIik7CiAgICAgICAgICAg
ICBhcHBlbmRTcGFjZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgp
LCBmaXJzdFkoKSk7CiAgICAgICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGF1dG8mIHN0b3AgOiBzdG9wcygpKSB7CiAgICAgICAgICAgICBp
ZiAod3JvdGVTb21ldGhpbmcpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgICAg
IHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIHdyaXRlQ29sb3JTdG9wKHJlc3Vs
dCwgc3RvcCk7CiAgICAgICAgIH0KQEAgLTg5MSw0NCArODkxLDQ0IEBAIFN0cmluZyBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgYXBwZW5kR3Jh
ZGllbnRTdG9wcyhyZXN1bHQsIHN0b3BzKCkpOwogICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBl
KCkgPT0gQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCkgewogICAgICAgICBpZiAoaXNSZXBlYXRp
bmcoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LXJlcGVhdGlu
Zy1yYWRpYWwtZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCItd2Via2l0
LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LXJhZGlhbC1ncmFkaWVudCgiKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtcmFkaWFsLWdyYWRpZW50KCIpOwogCiAgICAg
ICAgIGlmIChmaXJzdFgoKSB8fCBmaXJzdFkoKSkKICAgICAgICAgICAgIGFwcGVuZFNwYWNlU2Vw
YXJhdGVkT3B0aW9uYWxDU1NQdHJUZXh0KHJlc3VsdCwgZmlyc3RYKCksIGZpcnN0WSgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNlbnRlciIpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiY2VudGVyIik7CiAKICAgICAgICAgaWYgKG1fc2hh
cGUgfHwgbV9zaXppbmdCZWhhdmlvcikgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAg
aWYgKG1fc2hhcGUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3NoYXBlLT5jc3NU
ZXh0KCksICcgJyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoImVsbGlwc2UgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
ZWxsaXBzZSAiKTsKICAgICAgICAgICAgIGlmIChtX3NpemluZ0JlaGF2aW9yKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV9zaXppbmdCZWhhdmlvci0+Y3NzVGV4dCgpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY292ZXIi
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJjb3ZlciIpOwogICAgICAgICB9IGVs
c2UgaWYgKG1fZW5kSG9yaXpvbnRhbFNpemUgJiYgbV9lbmRWZXJ0aWNhbFNpemUpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCIsICIsIG1fZW5kSG9yaXpvbnRhbFNpemUtPmNzc1RleHQoKSwg
JyAnLCBtX2VuZFZlcnRpY2FsU2l6ZS0+Y3NzVGV4dCgpKTsKIAogICAgICAgICBmb3IgKGF1dG8m
IHN0b3AgOiBzdG9wcygpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgICAgICB3cml0ZUNv
bG9yU3RvcChyZXN1bHQsIHN0b3ApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKGlzUmVwZWF0aW5nKCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmVw
ZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInJl
cGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJyYWRpYWwtZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCJyYWRpYWwtZ3JhZGllbnQoIik7CiAKICAgICAgICAgYm9vbCB3cm90ZVNvbWV0
aGluZyA9IGZhbHNlOwogCiAgICAgICAgIC8vIFRoZSBvbmx5IGFtYmlndW91cyBjYXNlIHRoYXQg
bmVlZHMgYW4gZXhwbGljaXQgc2hhcGUgdG8gYmUgcHJvdmlkZWQKICAgICAgICAgLy8gaXMgd2hl
biBhIHNpemluZyBrZXl3b3JkIGlzIHVzZWQgKG9yIGFsbCBzaXppbmcgaXMgb21pdHRlZCkuCiAg
ICAgICAgIGlmIChtX3NoYXBlICYmIG1fc2hhcGUtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUVsbGlw
c2UgJiYgKG1fc2l6aW5nQmVoYXZpb3IgfHwgKCFtX3NpemluZ0JlaGF2aW9yICYmICFtX2VuZEhv
cml6b250YWxTaXplKSkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaXJj
bGUiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImNpcmNsZSIpOwogICAgICAgICAgICAg
d3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9CiAKQEAgLTk0OSwxOCArOTQ5LDE4IEBA
IFN0cmluZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAg
ICAgICAgaWYgKChmaXJzdFgoKSAmJiAhZmlyc3RYKCktPmlzQ2VudGVyUG9zaXRpb24oKSkgfHwg
KGZpcnN0WSgpICYmICFmaXJzdFkoKS0+aXNDZW50ZXJQb3NpdGlvbigpKSkgewogICAgICAgICAg
ICAgaWYgKHdyb3RlU29tZXRoaW5nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAn
KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJhdCAiKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImF0ICIpOwogICAgICAgICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRP
cHRpb25hbENTU1B0clRleHQocmVzdWx0LCBmaXJzdFgoKSwgZmlyc3RZKCkpOwogICAgICAgICAg
ICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdyb3Rl
U29tZXRoaW5nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogCiAgICAgICAgIGJvb2wgd3JvdGVGaXJzdFN0
b3AgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewogICAgICAg
ICAgICAgaWYgKHdyb3RlRmlyc3RTdG9wKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIsICIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAg
ICAgICAgICB3cm90ZUZpcnN0U3RvcCA9IHRydWU7CiAgICAgICAgICAgICB3cml0ZUNvbG9yU3Rv
cChyZXN1bHQsIHN0b3ApOwogICAgICAgICB9CkBAIC0xMjE5LDEwICsxMjE5LDcgQEAgU3RyaW5n
IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CiAKLSAgICBpZiAoaXNSZXBlYXRpbmcoKSkKLSAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgiKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb25pYy1ncmFkaWVudCgiKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKGlzUmVwZWF0aW5nKCkgPyAicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KCIg
OiAiY29uaWMtZ3JhZGllbnQoIik7CiAKICAgICBib29sIHdyb3RlU29tZXRoaW5nID0gZmFsc2U7
CiAKQEAgLTEyMzQsMTggKzEyMzEsMTggQEAgU3RyaW5nIENTU0NvbmljR3JhZGllbnRWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgaWYgKChmaXJzdFgoKSAmJiAhZmlyc3RYKCktPmlz
Q2VudGVyUG9zaXRpb24oKSkgfHwgKGZpcnN0WSgpICYmICFmaXJzdFkoKS0+aXNDZW50ZXJQb3Np
dGlvbigpKSkgewogICAgICAgICBpZiAod3JvdGVTb21ldGhpbmcpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJhdCAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiYXQgIik7CiAgICAgICAgIGFwcGVuZFNwYWNlU2VwYXJhdGVk
T3B0aW9uYWxDU1NQdHJUZXh0KHJlc3VsdCwgZmlyc3RYKCksIGZpcnN0WSgpKTsKICAgICAgICAg
d3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgIH0KIAogICAgIGlmICh3cm90ZVNvbWV0aGluZykK
LSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoIiwgIik7CiAKICAgICBib29sIHdyb3RlRmlyc3RTdG9wID0gZmFsc2U7CiAgICAgZm9yIChh
dXRvJiBzdG9wIDogc3RvcHMoKSkgewogICAgICAgICBpZiAod3JvdGVGaXJzdFN0b3ApCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiwgIik7CiAgICAgICAgIHdyb3RlRmlyc3RTdG9wID0gdHJ1ZTsKICAgICAgICAgd3Jp
dGVDb2xvclN0b3AocmVzdWx0LCBzdG9wKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAKaW5kZXggZmU1ODNjYTE3MTkwNmJkZjY4
OGYxOTQyMGNmNjFiOTNjMmZlN2NjNy4uMGFiOTE0M2U3NGE3NGVkZTRhZWY0OWFiMjQwNThkZTY2
ZGQ2N2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRJbnRlZ2VyUmVw
ZWF0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkSW50ZWdlclJlcGVh
dFZhbHVlLmNwcApAQCAtMzEsMTkgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NHcmlk
SW50ZWdlclJlcGVhdFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKCJyZXBlYXQoIik7Ci0gICAgcmVzdWx0
LmFwcGVuZChTdHJpbmc6Om51bWJlcihyZXBldGl0aW9ucygpKSk7Ci0gICAgcmVzdWx0LmFwcGVu
ZCgiLCAiKTsKLSAgICByZXN1bHQuYXBwZW5kKENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgp
KTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZXBlYXQoIiwgcmVwZXRpdGlvbnMoKSwgIiwgIiwg
Q1NTVmFsdWVMaXN0OjpjdXN0b21DU1NUZXh0KCksICcpJyk7CiB9CiAKIGJvb2wgQ1NTR3JpZElu
dGVnZXJSZXBlYXRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUm
IG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4
IDJmN2IyYjU5ZDljNDQ4OWMyMzVkNGM2NWZhNGFiZDM2Zjk0YTM0ZjIuLmE5MzIwMzA4MjVhYmI2
NTViNTI3OGFmNWM2MTUyZTNiNTQ3ZWFkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKQEAgLTEyOCwxNiArMTI4LDEzIEBAIFJlZjxDU1NJbWFnZVNldFZhbHVlPiBD
U1NJbWFnZVNldFZhbHVlOjppbWFnZVNldFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRl
CiBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImltYWdlLXNl
dCgiKTsKLQorICAgIHJlc3VsdC5hcHBlbmQoImltYWdlLXNldCgiKTsKICAgICBzaXplX3QgbGVu
Z3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgKyAxIDwgbGVu
Z3RoOyBpICs9IDIpIHsKICAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIiwgIik7Ci0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgpLCAnICcsIGl0ZW0oaSArIDEp
LT5jc3NUZXh0KCkpOwogICAgIH0KLQogICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAK
aW5kZXggNGM2NjYxM2NjMzU5MjQxNjMwNmY1MmJmNjhhNjM0NTlhYTMwNTNhMy4uODdhMjg4NzIx
ZmY2NzdhZTViZWQ0MTdhMmNjOTc5MDJhMmU0ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBv
cnRSdWxlLmNwcApAQCAtNTksMjcgKzU5LDE5IEBAIE1lZGlhTGlzdCYgQ1NTSW1wb3J0UnVsZTo6
bWVkaWEoKSBjb25zdAogU3RyaW5nIENTU0ltcG9ydFJ1bGU6OmNzc1RleHQoKSBjb25zdAogewog
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJAaW1w
b3J0IHVybChcIiIpOwotICAgIHJlc3VsdC5hcHBlbmQobV9pbXBvcnRSdWxlLmdldCgpLmhyZWYo
KSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIlwiKSIpOwotCisgICAgcmVzdWx0LmFwcGVu
ZCgiQGltcG9ydCB1cmwoXCIiLCBtX2ltcG9ydFJ1bGUuZ2V0KCkuaHJlZigpLCAiXCIpIik7CiAg
ICAgaWYgKG1faW1wb3J0UnVsZS5nZXQoKS5tZWRpYVF1ZXJpZXMoKSkgewotICAgICAgICBTdHJp
bmcgbWVkaWFUZXh0ID0gbV9pbXBvcnRSdWxlLmdldCgpLm1lZGlhUXVlcmllcygpLT5tZWRpYVRl
eHQoKTsKLSAgICAgICAgaWYgKCFtZWRpYVRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1lZGlhVGV4dCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKFN0cmluZyBtZWRpYVRleHQgPSBtX2ltcG9ydFJ1bGUu
Z2V0KCkubWVkaWFRdWVyaWVzKCktPm1lZGlhVGV4dCgpOyAhbWVkaWFUZXh0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCBtZWRpYVRleHQpOwogICAgIH0KICAgICBy
ZXN1bHQuYXBwZW5kKCc7Jyk7Ci0gICAgCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwog
fQogCiBDU1NTdHlsZVNoZWV0KiBDU1NJbXBvcnRSdWxlOjpzdHlsZVNoZWV0KCkgY29uc3QKIHsg
CiAgICAgaWYgKCFtX2ltcG9ydFJ1bGUuZ2V0KCkuc3R5bGVTaGVldCgpKQotICAgICAgICByZXR1
cm4gMDsKLQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fc3R5bGVTaGVldENT
U09NV3JhcHBlcikKICAgICAgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyID0gQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlKCptX2ltcG9ydFJ1bGUuZ2V0KCkuc3R5bGVTaGVldCgpLCBjb25zdF9jYXN0
PENTU0ltcG9ydFJ1bGUqPih0aGlzKSk7CiAgICAgcmV0dXJuIG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlci5nZXQoKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVS
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCmluZGV4IGMz
YzczYmQ0NjlmZGY4Nzg2NzU5NTM5Zjk5MjYzNzNhNjcxMGQwY2YuLmJiM2ViNjhmYTM3ODE5OGZl
ZTE1MGJkZDRhZGRhMWE3YjMzY2QyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NLZXlmcmFtZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1
bGUuY3BwCkBAIC04OSwxOSArODksMTMgQEAgYm9vbCBTdHlsZVJ1bGVLZXlmcmFtZTo6c2V0S2V5
VGV4dChjb25zdCBTdHJpbmcmIGtleVRleHQpCiAKIFN0cmluZyBTdHlsZVJ1bGVLZXlmcmFtZTo6
Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZChrZXlUZXh0KCkpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyAiKTsKLSAg
ICBTdHJpbmcgZGVjbHMgPSBtX3Byb3BlcnRpZXMtPmFzVGV4dCgpOwotICAgIHJlc3VsdC5hcHBl
bmQoZGVjbHMpOwotICAgIGlmICghZGVjbHMuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKKyAgICBpZiAoU3RyaW5nIGRlY2xhcmF0aW9ucyA9IG1fcHJvcGVydGllcy0+YXNU
ZXh0KCk7ICFkZWNsYXJhdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZyhrZXlUZXh0KCksICIgeyAiLCBkZWNsYXJhdGlvbnMsICIgfSIpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKGtleVRleHQoKSwgIiB7IH0iKTsKIH0KIAogQ1NTS2V5ZnJhbWVSdWxlOjpDU1NLZXlm
cmFtZVJ1bGUoU3R5bGVSdWxlS2V5ZnJhbWUmIGtleWZyYW1lLCBDU1NLZXlmcmFtZXNSdWxlKiBw
YXJlbnQpCi0gICAgOiBDU1NSdWxlKDApCisgICAgOiBDU1NSdWxlKG51bGxwdHIpCiAgICAgLCBt
X2tleWZyYW1lKGtleWZyYW1lKQogewogICAgIHNldFBhcmVudFJ1bGUocGFyZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCA5ODI4MTdhZmQ1NTg0NGQ1OGE3
ZjM4MGQxOTc5ZDI3Y2RmMzhmYjdhLi40NDU0MTZhOGZkY2YwZDU1NjNlYTgzZDFlNGRmNjNiNTlk
MDQ2ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0xOTgs
MTYgKzE5OCw5IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6ZmluZFJ1bGUo
Y29uc3QgU3RyaW5nJiBzKQogU3RyaW5nIENTU0tleWZyYW1lc1J1bGU6OmNzc1RleHQoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJALXdlYmtpdC1rZXlmcmFtZXMgIik7Ci0gICAgcmVzdWx0LmFwcGVuZChuYW1lKCkpOwotICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgeyBcbiIpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiAgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9r
ZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpXS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgcmVzdWx0LmFwcGVuZCgiQC13ZWJraXQta2V5ZnJh
bWVzICIsIG5hbWUoKSwgIiB7IFxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9
IGxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCIgICIsIG1f
a2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKClbaV0tPmNzc1RleHQoKSwgJ1xuJyk7CiAgICAgcmVz
dWx0LmFwcGVuZCgnfScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAppbmRleCA3MTQ1ZDYz
Y2MzZWE2OTVmNmIxYzIwNjljMjYwM2I3ZjE3NDU5YTQ0Li4zZjNiYmJkY2ZmN2RiNDEwMzc0MmNm
ZWQ5NDQ0ODVjZmJkODc1ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hD
b250YWluVmFsdWUuY3BwCkBAIC00MSwzNyArNDEsMzcgQEAgU3RyaW5nIENTU0xpbmVCb3hDb250
YWluVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsK
IAogICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpCbG9jaykpCi0gICAg
ICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiYmxvY2siKTsKKyAgICAgICAgdGV4dC5hcHBlbmQoImJs
b2NrIik7CiAKICAgICBpZiAobV92YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6SW5saW5l
KSkgewogICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGV4dC5hcHBl
bmQoJyAnKTsKLSAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJpbmxpbmUiKTsKKyAgICAgICAg
dGV4dC5hcHBlbmQoImlubGluZSIpOwogICAgIH0KICAgICBpZiAobV92YWx1ZS5jb250YWlucyhM
aW5lQm94Q29udGFpbjo6Rm9udCkpIHsKICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgi
Zm9udCIpOworICAgICAgICB0ZXh0LmFwcGVuZCgiZm9udCIpOwogICAgIH0KICAgICBpZiAobV92
YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhzKSkgewogICAgICAgICBpZiAoIXRl
eHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgdGV4
dC5hcHBlbmRMaXRlcmFsKCJnbHlwaHMiKTsKKyAgICAgICAgdGV4dC5hcHBlbmQoImdseXBocyIp
OwogICAgIH0KICAgICBpZiAobV92YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6UmVwbGFj
ZWQpKSB7CiAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoInJlcGxhY2VkIik7CisgICAg
ICAgIHRleHQuYXBwZW5kKCJyZXBsYWNlZCIpOwogICAgIH0KICAgICBpZiAobV92YWx1ZS5jb250
YWlucyhMaW5lQm94Q29udGFpbjo6SW5saW5lQm94KSkgewogICAgICAgICBpZiAoIXRleHQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgdGV4dC5hcHBl
bmRMaXRlcmFsKCJpbmxpbmUtYm94Iik7CisgICAgICAgIHRleHQuYXBwZW5kKCJpbmxpbmUtYm94
Iik7CiAgICAgfQogICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJbml0
aWFsTGV0dGVyKSkgewogICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
dGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJpbml0aWFsLWxl
dHRlciIpOworICAgICAgICB0ZXh0LmFwcGVuZCgiaW5pdGlhbC1sZXR0ZXIiKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdGV4dC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVzcGFj
ZVJ1bGUuY3BwCmluZGV4IDc4M2MyZThjMWY0ZjAxMjE2ZjhhODU5YWNjMjczYjk4NDM5M2E4YTYu
LmZiZGE3YTJlMmUwM2FjYmY4NTMzMGM4ZjY4ZWJhYjEzN2NjZjQwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQXRvbVN0cmluZyBD
U1NOYW1lc3BhY2VSdWxlOjpwcmVmaXgoKSBjb25zdAogU3RyaW5nIENTU05hbWVzcGFjZVJ1bGU6
OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJAbmFtZXNwYWNlICIpOworICAgIHJlc3VsdC5hcHBlbmQoIkBuYW1l
c3BhY2UgIik7CiAgICAgc2VyaWFsaXplSWRlbnRpZmllcihwcmVmaXgoKSwgcmVzdWx0KTsKICAg
ICBpZiAoIXByZWZpeCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKaW5kZXggNmE2MTdjMjEyNWFiZGE3YzQxM2M1MWIz
ZDhmYmQ4MDNlMDY3MTZmZS4uZGJjNTg4NTNkN2ViMWJhMTdkZmNkOGNmMTA2NGQ3OTM2MDRjYTI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc2LDE1ICs3NSw5
IEBAIHZvaWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVj
dG9yVGV4dCkKIAogU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKHNlbGVjdG9yVGV4dCgpKTsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0gICAgU3RyaW5nIGRlY2xzID0gbV9w
YWdlUnVsZS0+cHJvcGVydGllcygpLmFzVGV4dCgpOwotICAgIHJlc3VsdC5hcHBlbmQoZGVjbHMp
OwotICAgIGlmICghZGVjbHMuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
Ci0gICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsK
KyAgICBpZiAoU3RyaW5nIGRlY2xhcmF0aW9ucyA9IG1fcGFnZVJ1bGUtPnByb3BlcnRpZXMoKS5h
c1RleHQoKTsgIWRlY2xhcmF0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKHNlbGVjdG9yVGV4dCgpLCAiIHsgIiwgZGVjbGFyYXRpb25zLCAiIH0iKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhzZWxlY3RvclRleHQoKSwgIiB7IH0iKTsKIH0KIAogdm9pZCBDU1NQYWdl
UnVsZTo6cmVhdHRhY2goU3R5bGVSdWxlQmFzZSYgcnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhaW50SW1hZ2VWYWx1ZS5jcHAKaW5kZXggY2UxNWVhY2NhZGQzMmJkMDE4YjE0NTNjMzA1MzE0
YzkwNzI5YWY3Yi4uMmFiMWIyYWZmNzgyNmQ3ZTlhNGEzYzc3YzhkOGYyNDJjZTM3MmVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKQEAgLTM5LDEyICszOSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1BhaW50SW1hZ2VWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoInBhaW50KCIpOwotICAgIHJlc3VsdC5hcHBlbmQobV9uYW1lKTsK
LSAgICAvLyBGSVhNRTogcHJpbnQgYXJncy4KLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBpbmNs
dWRlIHRoZSBhcmd1bWVudHMgdG9vLgorICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWludCgiLCBt
X25hbWUsICcpJyk7CiB9CiAKIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFn
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCkBA
IC03MSw4ICs2Nyw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFnZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiAgICAgICAgICAgICAgICAg
bG9jYWxSYW5nZS5jb25zdW1lKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChsb2NhbFJhbmdlLnBl
ZWsoKS5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkgewogICAg
ICAgICAgICAgICAgIGxvY2FsUmFuZ2UucGVlaygpLnNlcmlhbGl6ZShidWlsZGVyKTsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbFJhbmdlLmNvbnN1bWVCbG9jaygpLnNlcmlh
bGl6ZSgpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvY2FsUmFuZ2UuY29uc3VtZUJsb2NrKCkuc2VyaWFsaXpl
KCksICcpJyk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsb2NhbFJhbmdl
LmNvbnN1bWUoKS5zZXJpYWxpemUoYnVpbGRlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDFmNmI0NGQ1YjhhYzE2MGZiNDY3OGRlZTky
ZjAxYjhmNjA5ODZiODQuLjlmNWYyYmQ1ODQ2ZTdhZDdkOWE2ZDgwMTA5MWMxMTZmM2Y5MGEzMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTA5OSwyMCAr
MTA5OSwxNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0
TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgICAgICBTdHJpbmcgc2VwYXJhdG9yID0gbV92YWx1ZS5jb3VudGVyLT5zZXBhcmF0
b3IoKTsKICAgICAgICAgaWYgKHNlcGFyYXRvci5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiY291bnRlcigiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
ImNvdW50ZXIoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJjb3VudGVycygiKTsKLQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiY291bnRlcnMo
Iik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZS5jb3VudGVyLT5pZGVudGlmaWVyKCkp
OwogICAgICAgICBpZiAoIXNlcGFyYXRvci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsK
ICAgICAgICAgICAgIHNlcmlhbGl6ZVN0cmluZyhzZXBhcmF0b3IsIHJlc3VsdCk7CiAgICAgICAg
IH0KLSAgICAgICAgU3RyaW5nIGxpc3RTdHlsZSA9IG1fdmFsdWUuY291bnRlci0+bGlzdFN0eWxl
KCk7Ci0gICAgICAgIGlmICghbGlzdFN0eWxlLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKGF1dG8g
bGlzdFN0eWxlID0gbV92YWx1ZS5jb3VudGVyLT5saXN0U3R5bGUoKTsgIWxpc3RTdHlsZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIsIGxpc3RTdHlsZSk7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLQogICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiAgICAgfQogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRUNUOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKaW5kZXggZWM1ZmIxMTAwNjVlZDc2ZGU4NzE4NGQwZmU5ZDIyM2VhYjkx
MjJlZi4uMGU3MDkxMjllMTYxNDRmNWIzZWUxYzhhYjJkNGI5Yzc5YWVlYmNmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zMzUsMTQgKzMzNSw4IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0
IENTU1NlbGVjCiAKIHN0YXRpYyB2b2lkIGFwcGVuZExhbmdBcmd1bWVudExpc3QoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBhcmd1bWVudExpc3QpCiB7
Ci0gICAgdW5zaWduZWQgYXJndW1lbnRMaXN0U2l6ZSA9IGFyZ3VtZW50TGlzdC5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50TGlzdFNpemU7ICsraSkgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChhcmd1bWVu
dExpc3RbaV0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICBpZiAoaSAh
PSBhcmd1bWVudExpc3RTaXplIC0gMSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGFyZ3VtZW50
TGlzdC5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJywg
YXJndW1lbnRMaXN0W2ldLCAnIicsIGkgIT0gc2l6ZSAtIDEgPyAiLCAiIDogIiIpOwogfQogCiAv
LyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNzZXJpYWxpemluZy1hbmIKQEAg
LTM4OCwxMSArMzgyLDggQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3Qg
U3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgaWYgKG1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6
OlRhZyAmJiAhbV90YWdJc0Zvck5hbWVzcGFjZVJ1bGUpIHsKICAgICAgICAgaWYgKHRhZ1FOYW1l
KCkucHJlZml4KCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0YWdRTmFt
ZSgpLmxvY2FsTmFtZSgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCh0YWdRTmFtZSgpLnByZWZpeCgpLnN0cmluZygpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCd8Jyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0YWdRTmFtZSgpLmxvY2Fs
TmFtZSgpKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCh0YWdRTmFtZSgpLnByZWZpeCgpLnN0cmluZygpLCAnfCcsIHRhZ1FOYW1lKCkubG9jYWxO
YW1lKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBjcyA9IHRoaXM7CkBAIC00
MDcsMjY4ICszOTgsMjY4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0
IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAgICAgICAgICAgc3dpdGNoIChjcy0+cHNldWRv
Q2xhc3NUeXBlKCkpIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9u
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtYW5pbWF0
aW5nLWZ1bGwtc2NyZWVuLXRyYW5zaXRpb24iKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOi13ZWJraXQtYW5pbWF0aW5nLWZ1bGwtc2NyZWVuLXRyYW5zaXRpb24iKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NBbnk6IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ijotd2Via2l0LWFueSgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJr
aXQtYW55KCIpOwogICAgICAgICAgICAgICAgIGNzLT5zZWxlY3Rvckxpc3QoKS0+YnVpbGRTZWxl
Y3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueUxpbms6Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6YW55LWxpbmsiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOmFueS1saW5rIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueUxpbmtEZXByZWNhdGVkOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtYW55LWxpbmsiKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtYW55LWxpbmsiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
QXV0b2ZpbGw6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtp
dC1hdXRvZmlsbCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1h
dXRvZmlsbCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbFN0cm9uZ1Bhc3N3b3JkOgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtYXV0b2ZpbGwtc3Ryb25nLXBhc3N3
b3JkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWF1dG9maWxs
LXN0cm9uZy1wYXNzd29yZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbFN0cm9uZ1Bhc3N3b3JkVmlld2Fi
bGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1hdXRv
ZmlsbC1zdHJvbmctcGFzc3dvcmQtdmlld2FibGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOi13ZWJraXQtYXV0b2ZpbGwtc3Ryb25nLXBhc3N3b3JkLXZpZXdhYmxlIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0RpcmVjdEZvY3VzOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOi13ZWJraXQtZGlyZWN0LWZvY3VzIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjotd2Via2l0LWRpcmVjdC1mb2N1cyIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEcmFnOgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtZHJhZyIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1kcmFnIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxQYWdlTWVk
aWE6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxs
LXBhZ2UtbWVkaWEiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NG
dWxsU2NyZWVuOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJr
aXQtZnVsbC1zY3JlZW4iKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJr
aXQtZnVsbC1zY3JlZW4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRnVsbFNjcmVlbkFuY2VzdG9yOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtZnVsbC1zY3JlZW4tYW5jZXN0
b3IiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZnVsbC1zY3Jl
ZW4tYW5jZXN0b3IiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRnVsbFNjcmVlbkRvY3VtZW50OgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jdW1lbnQi
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZnVsbC1zY3JlZW4t
ZG9jdW1lbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzRnVsbFNjcmVlbkNvbnRyb2xzSGlkZGVuOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtZnVsbC1zY3JlZW4tY29udHJv
bHMtaGlkZGVuIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWZ1
bGwtc2NyZWVuLWNvbnRyb2xzLWhpZGRlbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1BpY3R1cmVJblBpY3R1cmU6Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cGljdHVyZS1pbi1waWN0dXJlIik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpwaWN0dXJlLWluLXBpY3R1cmUiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NBY3RpdmU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
YWN0aXZlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjphY3RpdmUiKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzQ2hlY2tlZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpj
aGVja2VkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpjaGVja2VkIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0Nvcm5lclByZXNlbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6Y29ybmVyLXByZXNlbnQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
OmNvcm5lci1wcmVzZW50Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlY3JlbWVudDoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjpkZWNyZW1lbnQiKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOmRlY3JlbWVudCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWZhdWx0OgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmRlZmF1bHQiKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOmRlZmF1bHQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0RpcjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpkaXIoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpkaXIoIik7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kUHNldWRvQ2xhc3NGdW5jdGlvblRhaWwoYnVpbGRlciwgY3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpk
aXNhYmxlZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NEb3VibGVCdXR0b246Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6ZG91YmxlLWJ1dHRvbiIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6ZG91YmxlLWJ1dHRvbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbXB0eToKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjplbXB0eSIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI6ZW1wdHkiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZDoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjplbmFibGVkIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjplbmFibGVkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuZDoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjplbmQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOmVuZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGaXJzdENoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOmZpcnN0LWNoaWxkIik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjpmaXJzdC1jaGlsZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGaXJzdE9mVHlwZToKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmaXJzdC1vZi10eXBlIik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpmaXJzdC1vZi10eXBlIik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3Vz
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZvY3VzIik7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpmb2N1cyIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2li
bGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Zm9jdXMtdmlzaWJs
ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Zm9jdXMtdmlzaWJsZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NGb2N1c1dpdGhpbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjpmb2N1cy13aXRoaW4iKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZv
Y3VzLXdpdGhpbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShWSURFTykK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRnV0dXJlOgotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZ1dHVyZSIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZnV0dXJlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIYXNBdHRhY2htZW50OgotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmhhcy1hdHRhY2htZW50Iik7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjpoYXMtYXR0YWNobWVudCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvcml6
b250YWw6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6aG9yaXpvbnRh
bCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aG9yaXpvbnRhbCIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NIb3ZlcjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpob3Zl
ciIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aG92ZXIiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
SW5SYW5nZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjppbi1yYW5n
ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aW4tcmFuZ2UiKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSW5jcmVtZW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmlu
Y3JlbWVudCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aW5jcmVtZW50Iik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0luZGV0ZXJtaW5hdGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6aW5kZXRlcm1pbmF0ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCI6aW5kZXRlcm1pbmF0ZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkOgotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmludmFsaWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOmludmFsaWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFuZzoKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIjpsYW5nKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCI6bGFuZygiKTsKICAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNzLT5h
cmd1bWVudExpc3QoKSAmJiAhY3MtPmFyZ3VtZW50TGlzdCgpLT5pc0VtcHR5KCksICJBbiBlbXB0
eSA6bGFuZygpIGlzIGludmFsaWQgYW5kIHNob3VsZCBuZXZlciBiZSBnZW5lcmF0ZWQgYnkgdGhl
IHBhcnNlci4iKTsKICAgICAgICAgICAgICAgICBhcHBlbmRMYW5nQXJndW1lbnRMaXN0KGJ1aWxk
ZXIsICpjcy0+YXJndW1lbnRMaXN0KCkpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0xhc3RDaGlsZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIjpsYXN0LWNoaWxkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjpsYXN0LWNoaWxkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhc3RPZlR5cGU6Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6bGFzdC1vZi10eXBlIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjpsYXN0LW9mLXR5cGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGluazoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpsaW5rIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjpsaW5rIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc05vQnV0dG9uOgotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm5vLWJ1dHRvbiIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI6bm8tYnV0dG9uIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc05vdDoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpub3QoIik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjpub3QoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5i
dWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzTnRoQ2hpbGQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6bnRoLWNoaWxkKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCI6bnRoLWNoaWxkKCIpOwogICAgICAgICAgICAgICAgIG91dHB1dE50aENoaWxkQW5QbHVzQigq
Y3MsIGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3Qq
IHNlbGVjdG9yTGlzdCA9IGNzLT5zZWxlY3Rvckxpc3QoKSkgewotICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKKyAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiBvZiAiKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5i
dWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc050aExhc3RDaGlsZDoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtbGFzdC1jaGlsZCgiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm50aC1sYXN0LWNoaWxkKCIpOwogICAgICAg
ICAgICAgICAgIG91dHB1dE50aENoaWxkQW5QbHVzQigqY3MsIGJ1aWxkZXIpOwogICAgICAgICAg
ICAgICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IGNzLT5zZWxl
Y3Rvckxpc3QoKSkgewotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiBvZiAiKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBvZiAiKTsKICAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRl
cik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc050aExhc3RPZlR5cGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6bnRoLWxhc3Qtb2YtdHlwZSgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOm50aC1sYXN0LW9mLXR5cGUoIik7CiAgICAgICAgICAgICAgICAgYXBwZW5kUHNl
dWRvQ2xhc3NGdW5jdGlvblRhaWwoYnVpbGRlciwgY3MpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOdGhPZlR5cGU6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bnRoLW9mLXR5cGUoIik7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpudGgtb2YtdHlwZSgiKTsKICAgICAgICAg
ICAgICAgICBhcHBlbmRQc2V1ZG9DbGFzc0Z1bmN0aW9uVGFpbChidWlsZGVyLCBjcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc09ubHlDaGlsZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpv
bmx5LWNoaWxkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpvbmx5LWNoaWxk
Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc09ubHlPZlR5cGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6b25seS1vZi10eXBlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ijpvbmx5LW9mLXR5cGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6b3B0aW9uYWwiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOm9wdGlvbmFsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0lzOiB7Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6aXMoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjppcygiKTsKICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2Vs
ZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NNYXRjaGVzOiB7Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6bWF0Y2hlcygiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOm1hdGNoZXMoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgp
LT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzV2hlcmU6IHsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp3aGVyZSgiKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOndoZXJlKCIpOwogICAgICAgICAgICAgICAgIGNzLT5zZWxlY3Rvckxp
c3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1BsYWNlaG9sZGVyU2hvd246
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cGxhY2Vob2xkZXItc2hv
d24iKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnBsYWNlaG9sZGVyLXNob3du
Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc091dE9mUmFuZ2U6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6b3V0LW9mLXJhbmdlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjpvdXQtb2YtcmFuZ2UiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Bhc3Q6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cGFzdCIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6cGFzdCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1JlYWRPbmx5Ogot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnJlYWQtb25seSIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6cmVhZC1vbmx5Iik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1JlYWRX
cml0ZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpyZWFkLXdyaXRl
Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpyZWFkLXdyaXRlIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1JlcXVpcmVkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnJl
cXVpcmVkIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpyZXF1aXJlZCIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JTX0xFVkVMNCkK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUm9sZToKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpyb2xlKCIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6cm9sZSgiKTsKICAgICAgICAgICAgICAgICBhcHBlbmRQc2V1ZG9D
bGFzc0Z1bmN0aW9uVGFpbChidWlsZGVyLCBjcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUm9vdDoKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpyb290Iik7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjpyb290Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Njb3BlOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnNjb3BlIik7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjpzY29wZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NTaW5nbGVCdXR0b246Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6c2luZ2xlLWJ1dHRvbiIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6c2luZ2xlLWJ1dHRvbiIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NTdGFy
dDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpzdGFydCIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6c3RhcnQiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVGFyZ2V0Ogot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnRhcmdldCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6dGFyZ2V0Iik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlkOgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnZhbGlkIik7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjp2YWxpZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWZXJ0aWNhbDoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp2ZXJ0aWNhbCIpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6dmVydGljYWwiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmlzaXRlZDoKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp2aXNpdGVkIik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjp2aXNpdGVkIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1dpbmRvd0luYWN0
aXZlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOndpbmRvdy1pbmFj
dGl2ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6d2luZG93LWluYWN0aXZl
Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvc3Q6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6aG9zdCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aG9zdCIpOwogICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBzZWxlY3Rvckxpc3QgPSBjcy0+c2VsZWN0b3JMaXN0KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0b3JMaXN0LT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CkBAIC02
NzYsNyArNjY3LDcgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3Ry
aW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWZpbmVk
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmRlZmluZWQiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmRlZmluZWQiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVW5rbm93
bjoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY4NCwxMiArNjc1
LDEyIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmln
aHRTaWRlKSBjb25zdAogICAgICAgICB9IGVsc2UgaWYgKGNzLT5tYXRjaCgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNzLT5wc2V1ZG9FbGVt
ZW50VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
U2xvdHRlZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6c2xvdHRl
ZCgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjpzbG90dGVkKCIpOwogICAg
ICAgICAgICAgICAgIGNzLT5zZWxlY3Rvckxpc3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxk
ZXIpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50UGFy
dDogewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjpwYXJ0KCIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6OnBhcnQoIik7CiAgICAgICAgICAgICAg
ICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhcnRO
YW1lIDogKmNzLT5hcmd1bWVudExpc3QoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
Rmlyc3QpCkBAIC03MDIsMzIgKzY5MywyOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9y
VGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b21MZWdhY3lQ
cmVmaXhlZDoKICAgICAgICAgICAgICAgICBpZiAoY3MtPnZhbHVlKCkgPT0gInBsYWNlaG9sZGVy
IikKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Oi13ZWJraXQt
aW5wdXQtcGxhY2Vob2xkZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ijo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOwogICAgICAgICAgICAgICAgIGlmIChjcy0+
dmFsdWUoKSA9PSAiZmlsZS1zZWxlY3Rvci1idXR0b24iKQotICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjo6LXdlYmtpdC1maWxlLXVwbG9hZC1i
dXR0b24iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlOiB7CiAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlbGVjdG9yTGlzdCA9IGNzLT5zZWxlY3Rvckxpc3QoKSkgewotICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6Y3VlKCIpOworICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjpjdWUoIik7CiAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yTGlzdC0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6Y3VlIik7CisgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6OmN1ZSIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChjcy0+c2VyaWFsaXppbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOjoiLCBjcy0+c2VyaWFsaXppbmdWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjcy0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7CiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnWycpOwotICAgICAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgcHJlZml4ID0gY3MtPmF0dHJpYnV0ZSgpLnByZWZpeCgpOwotICAgICAgICAgICAgaWYg
KCFwcmVmaXguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJl
Zml4KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnfCcpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGF1dG8mIHByZWZpeCA9IGNzLT5hdHRyaWJ1dGUoKS5wcmVmaXgo
KTsgIXByZWZpeC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJl
Zml4LCAnfCcpOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoY3MtPmF0dHJpYnV0ZSgpLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgIHN3aXRjaCAoY3MtPm1hdGNoKCkpIHsKICAgICAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKQEAgLTczOCwxOSArNzI1LDE5IEBAIFN0
cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRlKSBj
b25zdAogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpMaXN0
OgotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIn49Iik7CisgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifD0iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoInw9Iik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkJlZ2luOgotICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIl49Iik7CisgICAgICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJePSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFbmQ6Ci0gICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJD0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiQ9Iik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OkNvbnRhaW46Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKj0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Iio9Iik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzU4LDIwICs3NDUsMjAgQEAgU3Ry
aW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNv
bnN0CiAgICAgICAgICAgICBpZiAoY3MtPm1hdGNoKCkgIT0gQ1NTU2VsZWN0b3I6OlNldCkgewog
ICAgICAgICAgICAgICAgIHNlcmlhbGl6ZVN0cmluZyhjcy0+c2VyaWFsaXppbmdWYWx1ZSgpLCBi
dWlsZGVyKTsKICAgICAgICAgICAgICAgICBpZiAoY3MtPmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJ
c0Nhc2VJbnNlbnNpdGl2ZSgpKQotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBpXSIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGldIik7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXScpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNzLT5tYXRjaCgpID09
IENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpIHsKICAgICAgICAgICAgIHN3aXRjaCAoY3Mt
PnBhZ2VQc2V1ZG9DbGFzc1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlUHNldWRvQ2xh
c3NGaXJzdDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmaXJzdCIp
OworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Zmlyc3QiKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZVBzZXVkb0NsYXNzTGVmdDoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpsZWZ0Iik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpsZWZ0Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFBhZ2VQc2V1ZG9DbGFzc1JpZ2h0OgotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOnJpZ2h0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjpyaWdodCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC03OTcsMTAgKzc4NCwxMiBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9y
VGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgIEZBTExUSFJP
VUdIOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KGJ1aWxkZXIudG9T
dHJpbmcoKSArIHJpZ2h0U2lkZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChyaWdodFNp
ZGUpOworICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnktPnNlbGVjdG9yVGV4dChidWlsZGVy
LnRvU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCkgKyByaWdodFNpZGU7CisgICAgYnVpbGRlci5hcHBlbmQocmlnaHRTaWRlKTsKKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wgY29udmVydFRvTG93ZXJjYXNl
LCBBdHRyaWJ1dGVNYXRjaFR5cGUgbWF0Y2hUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmNwcAppbmRleCBlMTU5MGI5YjUzYmZlNmFmNjYyMDViNzIzMzQzZDA3YTdiYzA3YzE3
Li5jYzA3M2I0YjExYzI1Y2RjMDUwZTczZjczYjM2NWI4YzYxNmQzZGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQ1NTU2Vs
ZWN0b3JMaXN0OjpidWlsZFNlbGVjdG9yc1RleHQoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
cikgY29uc3QKICAgICBjb25zdCBDU1NTZWxlY3RvciogZmlyc3RTdWJzZWxlY3RvciA9IGZpcnN0
KCk7CiAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc3ViU2VsZWN0b3IgPSBmaXJzdFN1YnNl
bGVjdG9yOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQo
c3ViU2VsZWN0b3IpKSB7CiAgICAgICAgIGlmIChzdWJTZWxlY3RvciAhPSBmaXJzdFN1YnNlbGVj
dG9yKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKHN1YlNlbGVjdG9yLT5zZWxlY3RvclRleHQoKSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDA1NzFjZjk2Y2UwODEyYjVlODI3NTk3OTBl
NWUwMGQ5MTZhNTQ5ZjYuLjUxOTNjMzJjMmVmNWExYjQ0NDI5YzRmMzM1ZjNkN2FhNzI5OTUwNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNp
bmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldENvbnRlbnRzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDEyICs4NSw3IEBAIFJlZjxDU1NTdHls
ZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBzaGVldCwKIAogQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmIGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpCiAgICAgOiBt
X2NvbnRlbnRzKFdURk1vdmUoY29udGVudHMpKQotICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQo
ZmFsc2UpCi0gICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCi0gICAgLCBtX211dGF0ZWRSdWxlcyhm
YWxzZSkKLSAgICAsIG1fb3duZXJOb2RlKDApCiAgICAgLCBtX293bmVyUnVsZShvd25lclJ1bGUp
Ci0gICAgLCBtX3N0YXJ0UG9zaXRpb24oKQogewogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xp
ZW50KHRoaXMpOwogfQpAQCAtOTksMTEgKzkzLDggQEAgQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVT
aGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKgog
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNv
bnRlbnRzLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdp
bkNsZWFuKQogICAgIDogbV9jb250ZW50cyhXVEZNb3ZlKGNvbnRlbnRzKSkKICAgICAsIG1faXNJ
bmxpbmVTdHlsZXNoZWV0KGlzSW5saW5lU3R5bGVzaGVldCkKLSAgICAsIG1faXNEaXNhYmxlZChm
YWxzZSkKLSAgICAsIG1fbXV0YXRlZFJ1bGVzKGZhbHNlKQogICAgICwgbV9pc09yaWdpbkNsZWFu
KGlzT3JpZ2luQ2xlYW4pCiAgICAgLCBtX293bmVyTm9kZSgmb3duZXJOb2RlKQotICAgICwgbV9v
d25lclJ1bGUoMCkKICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKQogewogICAg
IEFTU0VSVChpc0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KCZvd25lck5vZGUpKTsKQEAg
LTI5NywxNyArMjg4LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlU2hlZXQ6OmRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiAKIEV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6
YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRp
b25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciB0ZXh0OwotICAgIHRl
eHQuYXBwZW5kKHNlbGVjdG9yKTsKLSAgICB0ZXh0LmFwcGVuZExpdGVyYWwoIiB7ICIpOwotICAg
IHRleHQuYXBwZW5kKHN0eWxlKTsKLSAgICBpZiAoIXN0eWxlLmlzRW1wdHkoKSkKLSAgICAgICAg
dGV4dC5hcHBlbmQoJyAnKTsKLSAgICB0ZXh0LmFwcGVuZCgnfScpOwotICAgIGF1dG8gaW5zZXJ0
UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxl
bmd0aCgpKSk7CisgICAgYXV0byB0ZXh0ID0gbWFrZVN0cmluZyhzZWxlY3RvciwgIiB7ICIsIHN0
eWxlLCAhc3R5bGUuaXNFbXB0eSgpID8gIiAiIDogIiIsICd9Jyk7CisgICAgYXV0byBpbnNlcnRS
dWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LCBpbmRleC52YWx1ZU9yKGxlbmd0aCgpKSk7CiAg
ICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBp
bnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAKICAgICAvLyBBcyBwZXIg
TWljcm9zb2Z0IGRvY3VtZW50YXRpb24sIGFsd2F5cyByZXR1cm4gLTEuCiAgICAgcmV0dXJuIC0x
OwogfQpAQCAtMzQ4LDcgKzMzMiw2IEBAIE1lZGlhTGlzdCogQ1NTU3R5bGVTaGVldDo6bWVkaWEo
KSBjb25zdAogewogICAgIGlmICghbV9tZWRpYVF1ZXJpZXMpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgaWYgKCFtX21lZGlhQ1NTT01XcmFwcGVyKQogICAgICAgICBtX21lZGlhQ1NT
T01XcmFwcGVyID0gTWVkaWFMaXN0OjpjcmVhdGUobV9tZWRpYVF1ZXJpZXMuZ2V0KCksIGNvbnN0
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHRoaXMpKTsKICAgICByZXR1cm4gbV9tZWRpYUNTU09NV3Jh
cHBlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVmODc3NDg3MDZj
ZDRmYTg2NWRhYjRkNjI0YjE1ODJkNjlhNzFkM2QuLjk5NzE1Y2UyOGE3ZjYwOWRhMDA3YmQyNDI5
YTBlYjY4NWJjZWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTM4LDE1
ICsxMzgsMTUgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJ0ZXh0L2NzcyJfczsgfQogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gbV9jb250
ZW50czsKLSAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0OwotICAgIGJvb2wgbV9pc0Rpc2Fi
bGVkOwotICAgIGJvb2wgbV9tdXRhdGVkUnVsZXM7CisgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVz
aGVldCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRGlzYWJsZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9tdXRhdGVkUnVsZXMgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPGJvb2w+IG1faXNPcmln
aW5DbGVhbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
bV9tZWRpYVF1ZXJpZXM7CiAKLSAgICBOb2RlKiBtX293bmVyTm9kZTsKLSAgICBDU1NJbXBvcnRS
dWxlKiBtX293bmVyUnVsZTsKKyAgICBOb2RlKiBtX293bmVyTm9kZSB7IG51bGxwdHIgfTsKKyAg
ICBDU1NJbXBvcnRSdWxlKiBtX293bmVyUnVsZSB7IG51bGxwdHIgfTsKIAogICAgIFRleHRQb3Np
dGlvbiBtX3N0YXJ0UG9zaXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdG
dW5jdGlvblZhbHVlLmNwcAppbmRleCBlNjBjODVhNzJkOWM0OTNjZjQxNjZlY2NkYzJkNGQ4OWMy
YWZlNTc4Li5hZWFjYmJkZWVlYmIzMThkNjUyYmE4MDY4ZTUzOTNiZTIwYTg1YTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZS5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdApAQCAtNDIsMzMgKzQwLDI3IEBAIGJvb2wgQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvCiAKIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVy
LmFwcGVuZCgic3RlcHMoIiwgbV9zdGVwcyk7CisgICAgY29uc3QgY2hhciogcG9zaXRpb24gPSAi
IjsKICAgICBpZiAobV9zdGVwUG9zaXRpb24pIHsKICAgICAgICAgc3dpdGNoIChtX3N0ZXBQb3Np
dGlvbi52YWx1ZSgpKSB7CiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBv
c2l0aW9uOjpKdW1wU3RhcnQ6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
anVtcC1zdGFydCIpOworICAgICAgICAgICAgcG9zaXRpb24gPSAiLCBqdW1wLXN0YXJ0IjsKICAg
ICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uOjpKdW1wTm9uZToKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCBqdW1wLW5vbmUiKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gIiwganVtcC1ub25lIjsKICAg
ICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uOjpKdW1wQm90aDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCBqdW1wLWJvdGgiKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gIiwganVtcC1ib3RoIjsKICAg
ICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uOjpTdGFydDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBz
dGFydCIpOworICAgICAgICAgICAgcG9zaXRpb24gPSAiLCBzdGFydCI7CiAgICAgICAgICAgICBi
cmVhazsKLQogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6
SnVtcEVuZDoKICAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246
OkVuZDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4g
bWFrZVN0cmluZygic3RlcHMoIiwgbV9zdGVwcywgcG9zaXRpb24sICcpJyk7CiB9CiAKIGJvb2wg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU3RlcHNUaW1pbmdG
dW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTc4LDE3ICs3MCw3IEBAIGJvb2wgQ1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU3RlcHNUaW1pbmdGdW5jdGlv
blZhbHVlJiBvdGhlCiAKIFN0cmluZyBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0
b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJzcHJpbmcoIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX21hc3MpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
bV9zdGlmZm5lc3MpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9kYW1waW5nKSk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKG1faW5pdGlhbFZlbG9jaXR5KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCJzcHJpbmcoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX21hc3MpLCAnICcs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9zdGlmZm5lc3MpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9kYW1waW5nKSwgJyAnLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKG1faW5pdGlhbFZlbG9jaXR5KSwgJyknKTsKIH0KIAogYm9vbCBD
U1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU3ByaW5nVGltaW5n
RnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CkBAIC05Niw1ICs3OCw0IEBAIGJvb2wgQ1NTU3By
aW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NwcmluZ1RpbWluZ0Z1bmN0
aW9uVmFsdWUmIG90CiAgICAgcmV0dXJuIG1fbWFzcyA9PSBvdGhlci5tX21hc3MgJiYgbV9zdGlm
Zm5lc3MgPT0gb3RoZXIubV9zdGlmZm5lc3MgJiYgbV9kYW1waW5nID09IG90aGVyLm1fZGFtcGlu
ZyAmJiBtX2luaXRpYWxWZWxvY2l0eSA9PSBvdGhlci5tX2luaXRpYWxWZWxvY2l0eTsKIH0KIAot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCmluZGV4IGFj
NzRmZTg3ZmIzMTU3MmZhMjY5NTFiZWFkYzUzYjIzYjdmNGY2OGMuLjlkZjNjNjM3ODY5NGZlODM0
MTBlZmVmMTNlNjlhYzRmNzFkNDk2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgU3RyaW5nIE1lZGlhUXVlcnlTZXQ6Om1lZGlhVGV4dCgpIGNvbnN0CiAg
ICAgYm9vbCBuZWVkQ29tbWEgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogbV9xdWVy
aWVzKSB7CiAgICAgICAgIGlmIChuZWVkQ29tbWEpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgdGV4
dC5hcHBlbmQocXVlcnkuY3NzVGV4dCgpKTsKICAgICAgICAgbmVlZENvbW1hID0gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKaW5kZXggMTY2MjQyMGM5MjU2NGRlNDAxMjA1
ZjIxNDliNDc3ODZmNmFjN2ZiYS4uNDk3OTBkMzZhMWVhMGQ2ZDNjNzZhMGI2YjM2NmJlYjJiYThh
YWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcApAQCAtNDYsMTAgKzQ2LDEwIEBAIFN0
cmluZyBNZWRpYVF1ZXJ5OjpzZXJpYWxpemUoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgIHN3aXRjaCAobV9yZXN0cmljdG9yKSB7CiAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpP
bmx5OgotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgib25seSAiKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgib25seSAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVF1ZXJ5
OjpOb3Q6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJub3QgIik7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoIm5vdCAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVF1ZXJ5
OjpOb25lOgogICAgICAgICBzaG91bGRPbWl0TWVkaWFUeXBlID0gIW1fZXhwcmVzc2lvbnMuaXNF
bXB0eSgpICYmIG1fbWVkaWFUeXBlID09ICJhbGwiOwpAQCAtNjIsNyArNjIsNyBAQCBTdHJpbmcg
TWVkaWFRdWVyeTo6c2VyaWFsaXplKCkgY29uc3QKICAgICB9CiAgICAgZm9yIChhdXRvJiBleHBy
ZXNzaW9uIDogbV9leHByZXNzaW9ucykgewogICAgICAgICBpZiAobmVlZHNBbmQpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGFuZCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiBhbmQgIik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoZXhwcmVzc2lvbi5zZXJpYWxp
emUoKSk7CiAgICAgICAgIG5lZWRzQW5kID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcAppbmRleCBiMDk5ZmM0ZDFkNzBkZWE0MjY4NzA1
MjM2MmExOTAyMjFmM2Y3NjUyLi44Yjg1N2VhM2YwYmU4MWFkZDgxMDhlNDE3NzY0YmU5ODNiYjEy
ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogI2luY2x1ZGUg
Ik1lZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yNzQsMTkgKzI3Myw4IEBAIE1lZGlhUXVlcnlFeHByZXNzaW9uOjpNZWRp
YVF1ZXJ5RXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGZlYXR1cmUsIENTU1BhcnNlclRva2VuCiAK
IFN0cmluZyBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6c2VyaWFsaXplKCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fc2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbV9zZXJp
YWxpemF0aW9uQ2FjaGU7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQu
YXBwZW5kKCcoJyk7Ci0gICAgcmVzdWx0LmFwcGVuZChtX21lZGlhRmVhdHVyZS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKLSAgICBpZiAobV92YWx1ZSkgewotICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLT5jc3NUZXh0
KCkpOwotICAgIH0KLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICBtX3NlcmlhbGl6YXRp
b25DYWNoZSA9IHJlc3VsdC50b1N0cmluZygpOworICAgIGlmIChtX3NlcmlhbGl6YXRpb25DYWNo
ZS5pc051bGwoKSkKKyAgICAgICAgbV9zZXJpYWxpemF0aW9uQ2FjaGUgPSBtYWtlU3RyaW5nKCco
JywgbV9tZWRpYUZlYXR1cmUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgbV92YWx1ZSA/ICI6
ICIgOiAiIiwgbV92YWx1ZSA/IG1fdmFsdWUtPmNzc1RleHQoKSA6ICIiLCAnKScpOwogICAgIHJl
dHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAppbmRleCBmZDYzNjhkMDdlYmEyNjllZDZjYTYwZGNlM2VkMTYyZmI5OTNkYjYz
Li40NWFkZTIyYTI4OWYzMTI0NjUxOTI2MGRiNDFlOWQwMmQ3MmNiZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtNTkzLDcgKzU5Myw3IEBAIFN0cmluZyBTdHls
ZVByb3BlcnRpZXM6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzCiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kUG9zaXRpb25ZQ1NTUHJvcGVydHkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgbGF5
ZXJSZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLyAiKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJS
ZXN1bHQuYXBwZW5kKCIvICIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmICh1c2VSZXBlYXRYU2hvcnRoYW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyVG9rZW4uY3BwCmluZGV4IGRjNjkyMzJlYmY1NDE3OWE4NzA2M2UxZmYxOTM0ZGQ1
ZjM1NTg2OTIuLjlhN2I3MjRhZGUyOWVjZjYxZDFkYTg4YWEzNTMyMjdjOGQxNjg5NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCkBAIC00MTQsMTQ2
ICs0MTQsMTI3IEBAIHZvaWQgQ1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBDU1NQYXJzZXJUb2tlbiogbmV4CiAKICAgICAgICAgQ1NTUGFyc2Vy
VG9rZW5UeXBlIG5leHRUeXBlID0gbmV4dFRva2VuLT50eXBlKCk7CiAgICAgICAgIGlmICh0b2tl
bnNOZWVkaW5nQ29tbWVudC5idWZmZXJbbmV4dFR5cGVdKSB7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIi8qKi8iKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIvKiov
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobmV4dFR5
cGUgPT0gRGVsaW1pdGVyVG9rZW4gJiYgKChkZWxpbWl0ZXJzTmVlZGluZ0NvbW1lbnQgPT0gbmV4
dFRva2VuLT5kZWxpbWl0ZXIoKSkgfHwgLi4uIHx8IGZhbHNlKSkgewotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvKiovIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
LyoqLyIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfTsKIAogICAgIHN3
aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBJZGVudFRva2VuOiB7CisgICAgY2FzZSBJZGVudFRv
a2VuOgogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVp
bGRlcik7CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0
aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VU
b2tlbiwgRGltZW5zaW9uVG9rZW4sIENEQ1Rva2VuLCBMZWZ0UGFyZW50aGVzaXNUb2tlbiB9LCAn
LScpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGdW5jdGlvblRva2VuOiB7Cisg
ICAgY2FzZSBGdW5jdGlvblRva2VuOgogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVl
KCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEF0S2V5d29yZFRva2VuOiB7CisgICAgY2Fz
ZSBBdEtleXdvcmRUb2tlbjoKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0AnKTsKICAgICAgICAg
c2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAg
ICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBGdW5jdGlvblRva2VuLCBVcmxU
b2tlbiwgQmFkVXJsVG9rZW4sIE51bWJlclRva2VuLCBQZXJjZW50YWdlVG9rZW4sIERpbWVuc2lv
blRva2VuLCBDRENUb2tlbiB9LCAnLScpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBIYXNoVG9rZW46IHsKKyAgICBjYXNlIEhhc2hUb2tlbjoKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyMnKTsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCks
IGJ1aWxkZXIsIChnZXRIYXNoVG9rZW5UeXBlKCkgPT0gSGFzaFRva2VuVW5yZXN0cmljdGVkKSk7
CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9uVG9r
ZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tlbiwg
RGltZW5zaW9uVG9rZW4sIENEQ1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIFVybFRva2VuOiB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidXJs
KCIpOworICAgIGNhc2UgVXJsVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1cmwoIik7
CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVy
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46IHsKKyAgICBjYXNlIERlbGltaXRlclRva2VuOgogICAg
ICAgICBzd2l0Y2ggKGRlbGltaXRlcigpKSB7Ci0gICAgICAgIGNhc2UgJ1xcJzogewotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFxuIik7CisgICAgICAgIGNhc2UgJ1xcJzoK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQorCiAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICBjYXNlICctJzogeworICAg
ICAgICBjYXNlICctJzoKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRlbGltaXRlcigpKTsK
ICAgICAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9u
VG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tl
biwgRGltZW5zaW9uVG9rZW4gfSwgJy0nKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CiAKLSAgICAgICAgY2FzZSAnQCc6IHsKKyAgICAgICAgY2FzZSAnQCc6CiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnQCcpOwogICAgICAgICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsg
SWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2VuIH0sICctJyk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogCiAgICAgICAgIGNhc2UgJy4nOgotICAg
ICAgICBjYXNlICcrJzogeworICAgICAgICBjYXNlICcrJzoKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGRlbGltaXRlcigpKTsKICAgICAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7
IE51bWJlclRva2VuLCBQZXJjZW50YWdlVG9rZW4sIERpbWVuc2lvblRva2VuIH0pOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KIAotICAgICAgICBjYXNlICcvJzogeworICAgICAgICBj
YXNlICcvJzoKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcvJyk7CiAgICAgICAgICAgICAv
LyBXZWlyZGx5IENsYW5nIGVycm9ycyBpZiB5b3UgdHJ5IHRvIHVzZSB0aGUgZm9sZCBleHByZXNz
aW9uIGluIGJ1aWxkTmV4dFRva2VuTmVlZHNDb21tZW50VGFibGUoKSBiZWNhdXNlIHRoZSB0cnVl
IHZhbHVlIGlzIHVudXNlZC4KICAgICAgICAgICAgIC8vIFNvIHdlIGp1c3QgYnVpbGQgdGhlIHRh
YmxlIGJ5IGhhbmQgaGVyZSBpbnN0ZWFkLiBTZWU6IHJkYXI6Ly82OTcxMDY2MQogICAgICAgICAg
ICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsgfSwgJyonKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGRlbGltaXRlcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KICAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgTnVtYmVyVG9rZW46IHsKLSAgICAgICAgLy8gVGhlc2Ug
d29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZworICAgIGNh
c2UgTnVtYmVyVG9rZW46CisgICAgICAgIC8vIFRoZXNlIHdvbid0IHByb3Blcmx5IHByZXNlcnZl
IHRoZSBOdW1lcmljVmFsdWVUeXBlIGZsYWcuCiAgICAgICAgIGlmIChtX251bWVyaWNTaWduID09
IFBsdXNTaWduKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJysnKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQobnVtZXJpY1ZhbHVlKCkpOwogICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVk
ZWQoeyBJZGVudFRva2VuLCBGdW5jdGlvblRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4sIE51
bWJlclRva2VuLCBQZXJjZW50YWdlVG9rZW4sIERpbWVuc2lvblRva2VuIH0sICclJyk7CiAgICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFBlcmNlbnRhZ2VUb2tlbjogeworICAgIGNhc2Ug
UGVyY2VudGFnZVRva2VuOgogICAgICAgICBidWlsZGVyLmFwcGVuZChudW1lcmljVmFsdWUoKSwg
JyUnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRGltZW5zaW9uVG9rZW46IHsK
LSAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2UyIGFz
IDQwMDBlMgorICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2lsbCBp
bmNvcnJlY3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIuCiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG51bWVyaWNWYWx1ZSgpKTsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2
YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVk
ZWQoeyBJZGVudFRva2VuLCBGdW5jdGlvblRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4sIE51
bWJlclRva2VuLCBQZXJjZW50YWdlVG9rZW4sIERpbWVuc2lvblRva2VuLCBDRENUb2tlbiB9LCAn
LScpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjog
ewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlUrIik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGhleCh1bmljb2RlUmFuZ2VTdGFydCgpKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCctJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleCh1bmljb2RlUmFuZ2VFbmQoKSkpOwor
ICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJVKyIs
IGhleCh1bmljb2RlUmFuZ2VTdGFydCgpKSwgJy0nLCBoZXgodW5pY29kZVJhbmdlRW5kKCkpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU3RyaW5nVG9rZW46IHsKKyAgICBjYXNl
IFN0cmluZ1Rva2VuOgogICAgICAgICBzZXJpYWxpemVTdHJpbmcodmFsdWUoKS50b1N0cmluZygp
LCBidWlsZGVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBJbmNsdWRlTWF0
Y2hUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ+PSIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgifj0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEYXNoTWF0Y2hU
b2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ8PSIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgifD0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcmVmaXhNYXRjaFRv
a2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIl49Iik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJePSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN1ZmZpeE1hdGNoVG9r
ZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJD0iKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiQ9Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3Vic3RyaW5nTWF0Y2hU
b2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIqPSIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgiKj0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2x1bW5Ub2tlbjoK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ8fCIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgifHwiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDRE9Ub2tlbjoKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8IS0tIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI8
IS0tIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0RDVG9rZW46Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLS0+Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItLT4iKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCYWRTdHJpbmdUb2tlbjoKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCInXG4iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIidcbiIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEJhZFVybFRva2VuOgotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoInVybCgoKSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hpdGVzcGFjZVRva2VuOgogICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDQ3YmVkYmQzNTQz
NzM0ODk5ZDJiODljMGVkOWMwZDJiYTU2MDg3MC4uN2MxZDdmMDE4OWEyMGMyYmUwYTkyMmU2N2Jm
NGE3MzU5ODI1Yzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MTgxLDcgKzYxODEs
NyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICNlbmRpZgogCiAgICAg
aWYgKHNob3VsZEVuZm9yY2VIVFRQMDlTYW5kYm94KCkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJTYW5kYm94aW5nICciLCBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSwgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iKTsKKyAgICAg
ICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiU2FuZGJveGluZyAnIiwgbV91cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8w
LjkuIik7CiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgZW5mb3JjZVNhbmRib3hG
bGFncyhTYW5kYm94U2NyaXB0cyB8IFNhbmRib3hQbHVnaW5zKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggNTA0ZmY1NGU2ZjhhNmFhNWQzZDAzZWU4MDJhN2ZiMDZlZmYwZmZkYi4u
MjNmMTM0OTVmZmE4YTAwNDQ4MzBjZTU2NmMxZTAwZDIwNzQ1MjIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMjcyOSw3ICsyNzI5LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRl
cyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIGlkPVwnIiwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLCAnXCcn
KTsKIAogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgY2xhc3M9XCciKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBjbGFzcz1c
JyIpOwogICAgICAgICBzaXplX3QgY2xhc3NOYW1lc1RvRHVtcCA9IGVsZW1lbnQuY2xhc3NOYW1l
cygpLnNpemUoKTsKICAgICAgICAgY29uc3RleHByIHNpemVfdCBtYXhOdW1DbGFzc05hbWVzID0g
NzsKICAgICAgICAgYm9vbCBhZGRFbGxpcHNpcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmNwcAppbmRleCBmNTc4MzhhNjIwMWQ1ZWViMWNjOTcwNWYyZGIxMmY5ODY2
NDk5YmViLi40ZTUyODhlNzYzNjYxZGE2OWI5ZjgwMGE1OTFmMDE5YzFjMTczMTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcApAQCAtMTM2LDExICsxMzYsMTAgQEAgU2Fu
ZGJveEZsYWdzIFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmlu
ZyYgcG9saWN5LCBTdHJpbmcmIGkKICAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94U3RvcmFn
ZUFjY2Vzc0J5VXNlckFjdGl2YXRpb247CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYg
KG51bWJlck9mVG9rZW5FcnJvcnMpCi0gICAgICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5k
TGl0ZXJhbCgiLCAnIik7CisgICAgICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKCIsICci
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmQo
J1wnJyk7Ci0gICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmQoc2FuZGJveFRva2VuKTsKLSAg
ICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgnXCcnKTsKKyAgICAgICAgICAgIHRva2VuRXJy
b3JzLmFwcGVuZChzYW5kYm94VG9rZW4sICdcJycpOwogICAgICAgICAgICAgbnVtYmVyT2ZUb2tl
bkVycm9ycysrOwogICAgICAgICB9CiAKQEAgLTE0OSw5ICsxNDgsOSBAQCBTYW5kYm94RmxhZ3Mg
U2VjdXJpdHlDb250ZXh0OjpwYXJzZVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ks
IFN0cmluZyYgaQogCiAgICAgaWYgKG51bWJlck9mVG9rZW5FcnJvcnMpIHsKICAgICAgICAgaWYg
KG51bWJlck9mVG9rZW5FcnJvcnMgPiAxKQotICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5k
TGl0ZXJhbCgiIGFyZSBpbnZhbGlkIHNhbmRib3ggZmxhZ3MuIik7CisgICAgICAgICAgICB0b2tl
bkVycm9ycy5hcHBlbmQoIiBhcmUgaW52YWxpZCBzYW5kYm94IGZsYWdzLiIpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmRMaXRlcmFsKCIgaXMgYW4gaW52YWxp
ZCBzYW5kYm94IGZsYWcuIik7CisgICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmQoIiBpcyBh
biBpbnZhbGlkIHNhbmRib3ggZmxhZy4iKTsKICAgICAgICAgaW52YWxpZFRva2Vuc0Vycm9yTWVz
c2FnZSA9IHRva2VuRXJyb3JzLnRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKaW5kZXggNGI4NGZjNzU2OWVkMWEzMGYxMzI4YmFl
NDI3YTUxODJhYzhjZWFhOS4uNzNkMWMzZjJjNmJmZDM4MWJmYjkzYTFhYjQ1ZTNkN2RkZDQ3Njdh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChjb25z
dCBTdHJpbmcmIGluLCBjb25zdCBUZXh0KiBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpID09IDAgfHwgaSArIDEgPT0gaW4ubGVuZ3RoKCkpIC8vIGF0IHN0YXJ0IG9yIGVu
ZCBvZiBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZExpdGVyYWwo
Y29udmVydGVkU3BhY2VTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBw
ZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
aW5kZXggOTM3ODZkM2NjZGMxZjI5ZjQwN2Y0OTkyMGFiYmE1MmNiZmIzMjk5Ny4uOTRiNDJmOTc1
OWU3NTA3OGUzMDc5OTIwMjc0NzE3ZGNkNGYwMWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcApAQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIFVTdHJpbmdTZWFy
Y2gqIGNyZWF0ZVNlYXJjaGVyKCkKICAgICAvLyBidXQgaXQgZG9lc24ndCBtYXR0ZXIgZXhhY3Rs
eSB3aGF0IGl0IGlzLCBzaW5jZSB3ZSBkb24ndCBwZXJmb3JtIGFueSBzZWFyY2hlcwogICAgIC8v
IHdpdGhvdXQgc2V0dGluZyBib3RoIHRoZSBwYXR0ZXJuIGFuZCB0aGUgdGV4dC4KICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBTdHJpbmcgc2VhcmNoQ29sbGF0b3JO
YW1lID0gbWFrZVN0cmluZyhjdXJyZW50U2VhcmNoTG9jYWxlSUQoKSwgIkBjb2xsYXRpb249c2Vh
cmNoIik7CisgICAgYXV0byBzZWFyY2hDb2xsYXRvck5hbWUgPSBtYWtlU3RyaW5nKGN1cnJlbnRT
ZWFyY2hMb2NhbGVJRCgpLCAiQGNvbGxhdGlvbj1zZWFyY2giKTsKICAgICBVU3RyaW5nU2VhcmNo
KiBzZWFyY2hlciA9IHVzZWFyY2hfb3BlbigmbmV3bGluZUNoYXJhY3RlciwgMSwgJm5ld2xpbmVD
aGFyYWN0ZXIsIDEsIHNlYXJjaENvbGxhdG9yTmFtZS51dGY4KCkuZGF0YSgpLCAwLCAmc3RhdHVz
KTsKICAgICBBU1NFUlQoc3RhdHVzID09IFVfWkVST19FUlJPUiB8fCBzdGF0dXMgPT0gVV9VU0lO
R19GQUxMQkFDS19XQVJOSU5HIHx8IHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyk7
CiAgICAgcmV0dXJuIHNlYXJjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDE5
Y2IwZDlhOGUyZDQ0ZDc3MzMzODhlY2VhMTI0MGMyYTQxZWNhOWQuLmZiNWUyNjEzNzU1MmY5NDky
OTg4NDg5MWNkZTUxZjJhYWZjMWI2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTM4NiwxMSArMzg2LDExIEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0
eWxlTm9kZU9wZW5UYWcoU3RyaW5nQnVpbGRlciYgb3V0LCBTdHlsZVByCiAgICAgLy8gd3JhcHBp
bmdTdHlsZUZvclNlcmlhbGl6YXRpb24gc2hvdWxkIGhhdmUgcmVtb3ZlZCAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbnMtaW4tZWZmZWN0CiAgICAgQVNTRVJUKHByb3BlcnR5TWlzc2luZ09yRXF1YWxU
b05vbmUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsK
ICAgICBpZiAoaXNCbG9jaykKLSAgICAgICAgb3V0LmFwcGVuZExpdGVyYWwoIjxkaXYgc3R5bGU9
XCIiKTsKKyAgICAgICAgb3V0LmFwcGVuZCgiPGRpdiBzdHlsZT1cIiIpOwogICAgIGVsc2UKLSAg
ICAgICAgb3V0LmFwcGVuZExpdGVyYWwoIjxzcGFuIHN0eWxlPVwiIik7CisgICAgICAgIG91dC5h
cHBlbmQoIjxzcGFuIHN0eWxlPVwiIik7CiAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBz
dHlsZS0+YXNUZXh0KCksIGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpOwotICAgIG91dC5hcHBl
bmRMaXRlcmFsKCJcIj4iKTsKKyAgICBvdXQuYXBwZW5kKCJcIj4iKTsKIH0KIAogY29uc3QgU3Ry
aW5nJiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBpc0Js
b2NrKQpAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZFN0YXJ0VGFnKFN0cmluZ0J1aWxkZXImIG91dCwgY29uc3QgRWxlbWVudCYKICAgICAgICAg
fQogCiAgICAgICAgIGlmICghbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgb3V0LmFwcGVuZExpdGVyYWwoIiBzdHlsZT1cIiIpOworICAgICAgICAgICAgb3V0LmFwcGVu
ZCgiIHN0eWxlPVwiIik7CiAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIG5l
d0lubGluZVN0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAg
ICAgICAgb3V0LmFwcGVuZCgnIicpOwogICAgICAgICB9CkBAIC0xMjQyLDExICsxMjQyLDkgQEAg
U3RyaW5nIGRvY3VtZW50VHlwZVN0cmluZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiBTdHJp
bmcgdXJsVG9NYXJrdXAoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7Ci0gICAgbWFya3VwLmFwcGVuZExpdGVyYWwoIjxhIGhy
ZWY9XCIiKTsKLSAgICBtYXJrdXAuYXBwZW5kKHVybC5zdHJpbmcoKSk7Ci0gICAgbWFya3VwLmFw
cGVuZExpdGVyYWwoIlwiPiIpOworICAgIG1hcmt1cC5hcHBlbmQoIjxhIGhyZWY9XCIiLCB1cmwu
c3RyaW5nKCksICJcIj4iKTsKICAgICBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ2hhcmFjdGVy
c1JlcGxhY2luZ0VudGl0aWVzKG1hcmt1cCwgdGl0bGUsIDAsIHRpdGxlLmxlbmd0aCgpLCBFbnRp
dHlNYXNrSW5QQ0RBVEEpOwotICAgIG1hcmt1cC5hcHBlbmRMaXRlcmFsKCI8L2E+Iik7CisgICAg
bWFya3VwLmFwcGVuZCgiPC9hPiIpOwogICAgIHJldHVybiBtYXJrdXAudG9TdHJpbmcoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA2YTQ0ZDcyNzI2YTk4
NzU4NDI2OTE0ZjljNzczYzExZmQ1YjcwOGJjLi43YWVkNjExOTY0ZGIzN2YwNTAzMWQzNWVhZWE4
OTkwNTU2MzYyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAt
Mjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRGb3JtU3RydWN0dXJlKGNv
bnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nQnVpbGRlCiAgICAgLy8gMiBpcyBlbm91
Z2ggdG8gZGlzdGluZ3Vpc2ggZm9ybXMgaW4gd2Via2l0Lm9yZy9iLzkxMjA5I2MwCiAgICAgY29u
c3Qgc2l6ZV90IG5hbWVkQ29udHJvbHNUb0JlUmVjb3JkZWQgPSAyOwogICAgIGF1dG8mIGNvbnRy
b2xzID0gZm9ybS51bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKTsKLSAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBbIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiBbIik7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIG5hbWVkQ29udHJvbHMgPSAwOyBpIDwgY29udHJvbHMuc2l6ZSgpICYmIG5hbWVk
Q29udHJvbHMgPCBuYW1lZENvbnRyb2xzVG9CZVJlY29yZGVkOyArK2kpIHsKICAgICAgICAgYXV0
byogZm9ybUFzc29jaWF0ZWRFbGVtZW50ID0gY29udHJvbHNbaV0tPmFzRm9ybUFzc29jaWF0ZWRF
bGVtZW50KCk7CiAgICAgICAgIGlmICghZm9ybUFzc29jaWF0ZWRFbGVtZW50LT5pc0Zvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZSgpKQpAQCAtMjk2LDggKzI5Niw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCByZWNvcmRGb3JtU3RydWN0dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3Ry
aW5nQnVpbGRlCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBuYW1lZENvbnRyb2xzKys7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5h
bWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChuYW1lLCAnICcpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggN2E3Nzk5
NzZhZDAzOWQ5YjJkZGUwNjVhOTUwMDA2MmYzNzI0NTg0NS4uMDRmNzhlZDcxMDMxZmYzMzNjMjg5
NmMxOTEwOGUzZGQ5NWVmZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpyZXBvcnRWYWxpZGl0eSgpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkFuIGludmFs
aWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0nIiwgbmFtZSgpLCAiJyBpcyBub3QgZm9jdXNhYmxl
LiIpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJBbiBpbnZhbGlkIGZvcm0g
Y29udHJvbCB3aXRoIG5hbWU9JyIsIG5hbWUoKSwgIicgaXMgbm90IGZvY3VzYWJsZS4iKTsKICAg
ICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDg4NWVlZWY1YzFhMTJmNmQzMzZiNzY2NDZi
MzI0YzQ3NjJkZDlkYTkuLjU1NWYxNTQxYzAwOGFiNmYxYWE4ZmM0Y2VkNzQyZWYwZWY1MGQxZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTI0NSw3ICsyNDUs
NyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KCkKICAgICAg
ICAgZm9yIChhdXRvJiBjb250cm9sIDogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKSB7CiAgICAg
ICAgICAgICBpZiAoY29udHJvbC0+aXNDb25uZWN0ZWQoKSAmJiBjb250cm9sLT5pc0ZvY3VzYWJs
ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJBbiBpbnZhbGlkIGZvcm0gY29udHJvbCB3aXRoIG5hbWU9JyIsIGNv
bnRyb2wtPm5hbWUoKSwgIicgaXMgbm90IGZvY3VzYWJsZS4iKTsKKyAgICAgICAgICAgIGF1dG8g
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIkFuIGludmFsaWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0n
IiwgY29udHJvbC0+bmFtZSgpLCAiJyBpcyBub3QgZm9jdXNhYmxlLiIpOwogICAgICAgICAgICAg
ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZDA2YTAwOGU5MTRjZWUwOTI0ODZm
NjM4MWM1YjlmYzRiMDk0Mzg1OC4uZmI0YWNkNmU1ZDZmYzUyMjY5ZDViMDE2NDA4ZmQ2MzE4YmQ0
YTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC01MjYs
NyArNTI2LDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmli
dXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2FuZGlkYXRlIDogaW1hZ2VDYW5k
aWRhdGVzKSB7CiAgICAgICAgICAgICBpZiAoJmNhbmRpZGF0ZSAhPSAmaW1hZ2VDYW5kaWRhdGVz
WzBdKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KFVSTChiYXNlLCBjYW5kaWRhdGUuc3RyaW5nLnRvU3RyaW5nKCkpLnN0cmluZygpKTsKICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUuZGVuc2l0eSAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgY2FuZGlkYXRlLmRlbnNpdHksICd4
Jyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA4
NjcxMDQ0Y2NkNjE3ZDZlYmVlZGMyOWE0Y2ZhZGQ3ODkwMGRmYzBkLi42ZmIzZjZjYTNjOTdjYTM2
MmU4NjVhZjRlMjMzZWQ2ZDNlYTc0ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAKQEAgLTc4LDEzICs3OCwxNCBAQCBzdGF0aWMgYm9vbCBpc0VsZW1l
bnRMYXJnZUVub3VnaEZvck1haW5Db250ZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBNZWRp
YVNlcwogc3RhdGljIGJvb2wgaXNFbGVtZW50TWFpbkNvbnRlbnRGb3JQdXJwb3Nlc09mQXV0b3Bs
YXkoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJvb2wgc2hvdWxkSGl0VGVzdE1haW5GcmFtZSk7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKwogc3RhdGljIFN0cmluZyByZXN0cmljdGlv
bk5hbWVzKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdHJpY3Rpb25CdWlsZGVyOwogI2RlZmluZSBD
QVNFKHJlc3RyaWN0aW9uVHlwZSkgXAogICAgIGlmIChyZXN0cmljdGlvbiAmIE1lZGlhRWxlbWVu
dFNlc3Npb246OnJlc3RyaWN0aW9uVHlwZSkgeyBcCiAgICAgICAgIGlmICghcmVzdHJpY3Rpb25C
dWlsZGVyLmlzRW1wdHkoKSkgXAotICAgICAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7IFwKKyAgICAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5hcHBlbmQo
IiwgIik7IFwKICAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgjcmVzdHJpY3Rpb25U
eXBlKTsgXAogICAgIH0gXAogCkBAIC0xMDcsNiArMTA4LDcgQEAgc3RhdGljIFN0cmluZyByZXN0
cmljdGlvbk5hbWVzKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJl
c3RyaWMKIAogICAgIHJldHVybiByZXN0cmljdGlvbkJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KKwog
I2VuZGlmCiAKIHN0YXRpYyBib29sIHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3Bs
YXlJbmxpbmUoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggNTE1NTQ4OGQ3ZWQxZGE5NTBkNWFmNjc4ZDQ2ZDIzNDBiOGJhOWNlZS4uMzJkYzZlNTUw
YjY5NzMyMDQwY2Q5MWJlYzEwM2RlMzU3NmVhOTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTM2
OTcsNyArMzY5Nyw3IEBAIFJlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMCiAgICAgICAgICAgICBpbmZv
Lm5hbWUgPSBpbmZvLm5hbWUubGVmdChpbmZvLm5hbWUubGVuZ3RoKCkgLSAzKTsKICAgICAgICAg
Ly8gSWYgaXQncyBhbiBhcnJheSwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggZWFjaCBlbGVt
ZW50LCBhcHBlbmRpbmcgIltpbmRleF0iIHRvIHRoZSBuYW1lLgogICAgICAgICBmb3IgKEdDR0xp
bnQgaW5kZXggPSAwOyBpbmRleCA8IGluZm8uc2l6ZTsgKytpbmRleCkgewotICAgICAgICAgICAg
U3RyaW5nIHVuaWZvcm1OYW1lID0gbWFrZVN0cmluZyhpbmZvLm5hbWUsICdbJywgaW5kZXgsICdd
Jyk7CisgICAgICAgICAgICBhdXRvIHVuaWZvcm1OYW1lID0gbWFrZVN0cmluZyhpbmZvLm5hbWUs
ICdbJywgaW5kZXgsICddJyk7CiAKICAgICAgICAgICAgIGlmIChuYW1lID09IHVuaWZvcm1OYW1l
IHx8IG5hbWUgPT0gaW5mby5uYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbjo6Y3JlYXRlKCZwcm9ncmFtLCB1bmlmb3JtTG9jYXRpb24sIGluZm8udHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRl
eCA5MmYyNzZmMzhiNzQ0ZDUxZWM1MWM4ZmNmOWFiNDZmZTcyZDJlZDRiLi5iNDU4NWMxNDVkNTJl
MjBiYTgzMjExMGU5M2UxNDcwY2NhY2JjNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgdGFrZVJlbWFpbmluZygpCiAgICAgewotICAgICAgICBTdHJpbmcgcmVzdWx0
ID0gbWFrZVN0cmluZyhtX3RleHQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VTdHJpbmco
bV90ZXh0KTsKICAgICAgICAgbV90ZXh0ID0gU3RyaW5nVmlldygpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yRGVsZWdhdGUuY3BwCmluZGV4IDgwYjQyMTM2NjliYTMxZTgxYTAyNzU1MWJjYzc4YWIxYTMx
Y2MxMDguLmMyZTMwN2ZhMGEzYjE0MTg2YjEyYTEwNDAyZmU2Y2ZhZjkxNTA1YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcApAQCAt
MzcsMTEgKzM3LDEwIEBACiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgeworCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBYU1NBdWRpdG9yRGVsZWdhdGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCkBAIC01MiwyMSArNTEsMTMgQEAgWFNTQXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVs
ZWdhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBidWlsZENv
bnNvbGVFcnJvcihjb25zdCBYU1NJbmZvJiB4c3NJbmZvKQogewotICAgIFN0cmluZ0J1aWxkZXIg
bWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIlRoZSBYU1MgQXVkaXRvciAiKTsK
LSAgICBtZXNzYWdlLmFwcGVuZCh4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlID8gImJsb2Nr
ZWQgYWNjZXNzIHRvIiA6ICJyZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQgaW4iKTsKLSAgICBt
ZXNzYWdlLmFwcGVuZExpdGVyYWwoIiAnIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoeHNzSW5mby5t
X29yaWdpbmFsVVJMKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIicgYmVjYXVzZSAiKTsK
LSAgICBtZXNzYWdlLmFwcGVuZCh4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlID8gInRoZSBz
b3VyY2UgY29kZSBvZiBhIHNjcmlwdCIgOiAiaXRzIHNvdXJjZSBjb2RlIik7Ci0gICAgbWVzc2Fn
ZS5hcHBlbmRMaXRlcmFsKCIgd2FzIGZvdW5kIHdpdGhpbiB0aGUgcmVxdWVzdC4iKTsKLQotICAg
IGlmICh4c3NJbmZvLm1fZGlkU2VuZFhTU1Byb3RlY3Rpb25IZWFkZXIpCi0gICAgICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiIFRoZSBzZXJ2ZXIgc2VudCBhbiAnWC1YU1MtUHJvdGVjdGlvbicg
aGVhZGVyIHJlcXVlc3RpbmcgdGhpcyBiZWhhdmlvci4iKTsKLSAgICBlbHNlCi0gICAgICAgIG1l
c3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIFRoZSBhdWRpdG9yIHdhcyBlbmFibGVkIGJlY2F1c2UgdGhl
IHNlcnZlciBkaWQgbm90IHNlbmQgYW4gJ1gtWFNTLVByb3RlY3Rpb24nIGhlYWRlci4iKTsKLQot
ICAgIHJldHVybiBtZXNzYWdlLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlRo
ZSBYU1MgQXVkaXRvciAiLAorICAgICAgICB4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlID8g
ImJsb2NrZWQgYWNjZXNzIHRvIiA6ICJyZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQgaW4iLCAi
ICciLAorICAgICAgICB4c3NJbmZvLm1fb3JpZ2luYWxVUkwsICInIGJlY2F1c2UgIiwKKyAgICAg
ICAgeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSA/ICJ0aGUgc291cmNlIGNvZGUgb2YgYSBz
Y3JpcHQiIDogIml0cyBzb3VyY2UgY29kZSIsCisgICAgICAgICIgd2FzIGZvdW5kIHdpdGhpbiB0
aGUgcmVxdWVzdC4iLAorICAgICAgICB4c3NJbmZvLm1fZGlkU2VuZFhTU1Byb3RlY3Rpb25IZWFk
ZXIgPyAiIFRoZSBzZXJ2ZXIgc2VudCBhbiAnWC1YU1MtUHJvdGVjdGlvbicgaGVhZGVyIHJlcXVl
c3RpbmcgdGhpcyBiZWhhdmlvci4iCisgICAgICAgICAgICA6ICIgVGhlIGF1ZGl0b3Igd2FzIGVu
YWJsZWQgYmVjYXVzZSB0aGUgc2VydmVyIGRpZCBub3Qgc2VuZCBhbiAnWC1YU1MtUHJvdGVjdGlv
bicgaGVhZGVyLiIpOwogfQogCiBSZWY8Rm9ybURhdGE+IFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6Z2Vu
ZXJhdGVWaW9sYXRpb25SZXBvcnQoY29uc3QgWFNTSW5mbyYgeHNzSW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAzZWVmZGJiOTE2YjA3ODg0YTFh
ZGQwMjQzMWI1NjAzNTgxNzM1YWIzLi5kNGI2YmViM2VhNWMzODY1NDExZjNkMzcyMzFlMjE4NzVl
Y2ZkZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBA
IC01MDksMjIgKzUwOSwxMyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVl
KCkKICAgICBtX2N1ZU5vZGUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudCk7CiAgICAg
bV9kaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoY2xvbmVkRnJhZ21lbnQpOwogCi0gICAgaWYgKG1f
Zm9udFNpemUgJiYgb3duZXJEb2N1bWVudCgpLnBhZ2UoKSkgewotICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG93bmVyRG9jdW1lbnQoKS5wYWdl
KCktPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KCkpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiA6OiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChUZXh0VHJhY2tD
dWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgneycpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlG
b250U2l6ZSkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKG1fZm9udFNpemUsICJweCIpKTsKLSAgICAgICAgaWYgKG1fZm9u
dFNpemVJc0ltcG9ydGFudCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICFp
bXBvcnRhbnQiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI7IH0iKTsKLQotICAg
ICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5
bGVUYWcsIG93bmVyRG9jdW1lbnQoKSwgZmFsc2UpOwotICAgICAgICBzdHlsZS0+c2V0VGV4dENv
bnRlbnQoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAgICAgbV9kaXNwbGF5VHJlZS0+YXBwZW5k
Q2hpbGQoc3R5bGUpOworICAgIGlmIChtX2ZvbnRTaXplKSB7CisgICAgICAgIGlmIChhdXRvIHBh
Z2UgPSBvd25lckRvY3VtZW50KCkucGFnZSgpKSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0g
SFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIG93bmVyRG9jdW1l
bnQoKSwgZmFsc2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KG1ha2VTdHJp
bmcocGFnZS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKSwKKyAgICAgICAgICAg
ICAgICAiIDo6IiwgVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgpLCAie2ZvbnQtc2l6
ZToiLCBtX2ZvbnRTaXplLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQgPyAicHggIWltcG9ydGFudH0i
IDogInB4fSIpKTsKKyAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxl
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0cmFjaygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuY3BwCmluZGV4IGJiOTgzYzUyOWI1OWU2ZDQyMTc0M2E0ZjE1NGZiNTQ5NjNmODQzMzAuLjYy
OGNkZWNjYWIxZGI5NTZhMzI2NTI1NWE2OWE3MzIwOTVkMjIwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuY3BwCkBAIC0xMTQsMTcgKzExNCwxMiBAQCBKU0RPTUdsb2JhbE9iamVjdCogSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpmcm9udGVuZEdsb2JhbE9iamVjdCgpCiBzdGF0aWMgU3Ry
aW5nIGV4cHJlc3Npb25Gb3JFdmFsdWF0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQs
IFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiYmIGFyZ3VtZW50cykKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGV4cHJlc3Npb247Ci0gICAgZXhwcmVzc2lvbi5hcHBlbmRMaXRlcmFsKCJJbnNwZWN0b3JG
cm9udGVuZEFQSS5kaXNwYXRjaChbXCIiKTsKLSAgICBleHByZXNzaW9uLmFwcGVuZChjb21tYW5k
KTsKLSAgICBleHByZXNzaW9uLmFwcGVuZCgnIicpOwotCisgICAgZXhwcmVzc2lvbi5hcHBlbmQo
Ikluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICciJyk7CiAgICAg
Zm9yIChhdXRvJiBhcmd1bWVudCA6IGFyZ3VtZW50cykgewotICAgICAgICBleHByZXNzaW9uLmFw
cGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGV4cHJlc3Npb24uYXBwZW5kKCIsICIpOwogICAg
ICAgICBhcmd1bWVudC0+d3JpdGVKU09OKGV4cHJlc3Npb24pOwogICAgIH0KLQotICAgIGV4cHJl
c3Npb24uYXBwZW5kKCddJyk7Ci0gICAgZXhwcmVzc2lvbi5hcHBlbmQoJyknKTsKKyAgICBleHBy
ZXNzaW9uLmFwcGVuZCgiXSkiKTsKICAgICByZXR1cm4gZXhwcmVzc2lvbi50b1N0cmluZygpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5k
ZXggNjExMzQ4YmY3NzhmOTUyMDUwZmFmYzExNWE3MWRjOTBmMDE4ZWJjMy4uYTE2OTMxNjJiY2Y3
YWZiZWYyNzM3ZTVkZWM0YThhYmJhYmVjNDI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMTA0Nyw4ICsxMDQ3LDggQEAgUGF0aCBJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Tm9kZSYgbm9kZSwgY28KICAgICBib29sIGhhc1NlY29uZExpbmUgPSAhZWxlbWVudFJvbGUuaXNF
bXB0eSgpOwogCiAgICAgewotICAgICAgICBTdHJpbmcgZmlyc3RMaW5lID0gbWFrZVN0cmluZyhl
bGVtZW50VGFnTmFtZSwgZWxlbWVudElEVmFsdWUsIGVsZW1lbnRDbGFzc1ZhbHVlLCBlbGVtZW50
UHNldWRvVHlwZSwgJyAnLCBlbGVtZW50V2lkdGgsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25T
aWduLCAnICcsIGVsZW1lbnRIZWlnaHQsICJweCIpOwotICAgICAgICBTdHJpbmcgc2Vjb25kTGlu
ZSA9IG1ha2VTdHJpbmcoIlJvbGUgIiwgZWxlbWVudFJvbGUpOworICAgICAgICBhdXRvIGZpcnN0
TGluZSA9IG1ha2VTdHJpbmcoZWxlbWVudFRhZ05hbWUsIGVsZW1lbnRJRFZhbHVlLCBlbGVtZW50
Q2xhc3NWYWx1ZSwgZWxlbWVudFBzZXVkb1R5cGUsICcgJywgZWxlbWVudFdpZHRoLCAicHgiLCAn
ICcsIG11bHRpcGxpY2F0aW9uU2lnbiwgJyAnLCBlbGVtZW50SGVpZ2h0LCAicHgiKTsKKyAgICAg
ICAgYXV0byBzZWNvbmRMaW5lID0gbWFrZVN0cmluZygiUm9sZSAiLCBlbGVtZW50Um9sZSk7CiAK
ICAgICAgICAgZmxvYXQgZmlyc3RMaW5lV2lkdGggPSBmb250LndpZHRoKFRleHRSdW4oZmlyc3RM
aW5lKSk7CiAgICAgICAgIGZsb2F0IHNlY29uZExpbmVXaWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1
bihzZWNvbmRMaW5lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggN2E3YzJkN2JlOTQ2MzczNTA1MGQzNzk3NTM4YmVkYjY0Y2Ji
ZmZjNC4uOGM3MjE1N2I4YzljMmE1MjU0MmQ0NTg2M2JlNmM4MzZlM2FlZTNiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtOTQ1
LDggKzk0NSw3IEBAIEV4Y2VwdGlvbk9yPENTU1N0eWxlUnVsZSo+IEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKICAgICBpZiAoIXN0eWxlU2hlZXRU
ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKCdcbicpOwogCi0g
ICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKHNlbGVjdG9yKTsKLSAgICBzdHlsZVNoZWV0VGV4dC5h
cHBlbmRMaXRlcmFsKCIge30iKTsKKyAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQoc2VsZWN0b3Is
ICIge30iKTsKIAogICAgIC8vIFVzaW5nIHNldFRleHQoKSBhcyB0aGlzIG9wZXJhdGlvbiBjaGFu
Z2VzIHRoZSBzdHlsZXNoZWV0IHJ1bGUgc2V0LgogICAgIHNldFRleHQoc3R5bGVTaGVldFRleHQu
dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYWY2
NzM3OGE2ZGRjZDFhZTc3MjQ0ZTg5OTUzNjc3M2E3MDI3YjAzYy4uYTQ0N2Y3MDUzOWUwNmU0Yzgz
MDQyNzZmY2I0Y2UxYTU4NTE2ZWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
OTIsMjcgKzE5MSwxNSBAQCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdAogCiBSZWY8UHJvdG9jb2w6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJiByZXNvdXJjZUluZm8p
CiB7Ci0gICAgU3RyaW5nQnVpbGRlciB0eXBlczsKLQotICAgIGlmIChyZXNvdXJjZUluZm8uaXNN
YXN0ZXIpCi0gICAgICAgIHR5cGVzLmFwcGVuZExpdGVyYWwoIk1hc3RlciAiKTsKLQotICAgIGlm
IChyZXNvdXJjZUluZm8uaXNNYW5pZmVzdCkKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgi
TWFuaWZlc3QgIik7Ci0KLSAgICBpZiAocmVzb3VyY2VJbmZvLmlzRmFsbGJhY2spCi0gICAgICAg
IHR5cGVzLmFwcGVuZExpdGVyYWwoIkZhbGxiYWNrICIpOwotCi0gICAgaWYgKHJlc291cmNlSW5m
by5pc0ZvcmVpZ24pCi0gICAgICAgIHR5cGVzLmFwcGVuZExpdGVyYWwoIkZvcmVpZ24gIik7Ci0K
LSAgICBpZiAocmVzb3VyY2VJbmZvLmlzRXhwbGljaXQpCi0gICAgICAgIHR5cGVzLmFwcGVuZExp
dGVyYWwoIkV4cGxpY2l0ICIpOwotCisgICAgYXV0byB0eXBlcyA9IG1ha2VTdHJpbmcocmVzb3Vy
Y2VJbmZvLmlzTWFzdGVyID8gIk1hc3RlciAiIDogIiIsCisgICAgICAgIHJlc291cmNlSW5mby5p
c01hbmlmZXN0ID8gIk1hbmlmZXN0ICIgOiAiIiwKKyAgICAgICAgcmVzb3VyY2VJbmZvLmlzRmFs
bGJhY2sgPyAiRmFsbGJhY2sgIiA6ICIiLAorICAgICAgICByZXNvdXJjZUluZm8uaXNGb3JlaWdu
ID8gIkZvcmVpZ24gIiA6ICIiLAorICAgICAgICByZXNvdXJjZUluZm8uaXNFeHBsaWNpdCA/ICJF
eHBsaWNpdCAiIDogIiIpOwogICAgIHJldHVybiBQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKHJlc291
cmNlSW5mby5yZXNvdXJjZS5zdHJpbmcoKSkKICAgICAgICAgLnNldFNpemUoc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUluZm8uc2l6ZSkpCi0gICAgICAgIC5zZXRUeXBlKHR5cGVzLnRvU3RyaW5n
KCkpCisgICAgICAgIC5zZXRUeXBlKHR5cGVzKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5j
cHAKaW5kZXggOTJjM2VlZGEzZGY2NjJiYzliODE1NWM1NGRkMjIzMjk1ZDRjODM0Ni4uNDhiOWE3
MTg1M2Y0NDk0ZmJmNDdlMzgzOGE4NjM2NDc5ZTY3ZGViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNjgsNyArNjgs
NyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93
KiB3aW5kb3cpCiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewotICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNl
OiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksICIgKCIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25z
b2xlTWVzc2FnZShyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSwgJyknKTsKKyAgICAgICAgYXV0
byBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2
ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgIiAoIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdl
KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpLCAnKScpOwogICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmss
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogICAg
IH0KIH0KQEAgLTc5LDE0ICs3OSw4IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9h
ZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgaWYg
KGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1
aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIkZhaWxlZCB0byBsb2Fk
IHJlc291cmNlIik7Ci0gICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1w
dHkoKSkgewotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIG1l
c3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgIH0KLQotICAg
IGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVz
c2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksIDAsIDAsIG51bGxw
dHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygi
RmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlz
RW1wdHkoKSA/ICIiIDogIjogIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNz
YWdlLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJ
ZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCBmZGE5Mjg2YWZmMGJkOWJh
MTUwM2JhYTUzZTM3ZjVjYmIwODljODQ5Li41YjE3N2M3ODExNzBjMzQ3M2VlZjNhYjQ0MWVlYWRl
YmI5OTIzMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhl
ZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVCiBzdGF0aWMg
dm9pZCBsb2dXYXJuaW5nKGNvbnN0IEZyYW1lJiBmcmFtZSwgYm9vbCBhbGxvd2VkLCBjb25zdCBT
dHJpbmcmIGFjdGlvbiwgY29uc3QgVVJMJiB0YXJnZXQpCiB7CiAgICAgY29uc3QgY2hhciogZXJy
b3JTdHJpbmcgPSBhbGxvd2VkID8gIiB3YXMgYWxsb3dlZCB0byAiIDogIiB3YXMgbm90IGFsbG93
ZWQgdG8gIjsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoKGFsbG93ZWQgPyBTdHJp
bmcoKSA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBmcmFtZS5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgZXJyb3JTdHJpbmcsIGFjdGlv
biwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiLlxuIik7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxs
b3dlZCA/IFN0cmluZygpIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCBlcnJvclN0
cmluZywgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKICAgICBmcmFtZS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCBtZXNzYWdlKTsKIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJp
dHlPcmlnaW4mCiAgICAgaWYgKCFpc01peGVkQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUg
cGFnZSBhdCAiLCBmcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSwgIiBjb250YWlucyBhIGZvcm0gd2hpY2ggdGFyZ2V0cyBhbiBpbnNlY3VyZSBV
UkwgIiwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CisgICAg
YXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgY29udGFpbnMgYSBm
b3JtIHdoaWNoIHRhcmdldHMgYW4gaW5zZWN1cmUgVVJMICIsIHVybC5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIGZyYW1lLmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IG1lc3NhZ2UpOwogCiAgICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5jcHAKaW5kZXggMDMzYTlkNDY1YTc1NGRmOWUzOWY2ZjY3MDJiZmNmOGFiMzJk
OTBmZC4uNTNlZjRjMDE3MTA3MDZkMmFiNDhhM2M5ZTIxNTU2YTI0ZGIwYmJhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jh
bmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIApAQCAtMTI5LDE4ICsx
MjgsMTUgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aGFzSGlnaGVyUHJpb3JpdHlU
aGFuKGNvbnN0IFByaXZhdGVDbGlja01lYXN1cmVtZW4KICAgICByZXR1cm4gbV9hdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLT5wcmlvcml0eSA+IG90aGVyLm1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+
cHJpb3JpdHk7CiB9CiAKLXN0YXRpYyBVUkwgYXR0cmlidXRpb25SZXBvcnRVUkwoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQorc3RhdGljIFVSTCBtYWtlVmFsaWRV
UkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgY2hhciogcGF0aCkKIHsK
LSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJo
dHRwczovLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygp
KTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRSZXBv
cnRBdHRyaWJ1dGlvblBhdGgpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVyLnRvU3Ry
aW5nKCkgfTsKLSAgICBpZiAodXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHVybDsKKyAg
ICBVUkwgdmFsaWRVUkwgeyB7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgZG9tYWluLnN0cmlu
ZygpLCBwYXRoKSB9OworICAgIHJldHVybiB2YWxpZFVSTC5pc1ZhbGlkKCkgPyB2YWxpZFVSTCA6
IFVSTCB7IH07Cit9CiAKLSAgICByZXR1cm4gVVJMKCk7CitzdGF0aWMgVVJMIGF0dHJpYnV0aW9u
UmVwb3J0VVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgcmV0dXJu
IG1ha2VWYWxpZFVSTChkb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50UmVwb3J0QXR0cmli
dXRpb25QYXRoKTsKIH0KIAogVVJMIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjphdHRyaWJ1dGlv
blJlcG9ydFNvdXJjZVVSTCgpIGNvbnN0CkBAIC0yMDcsMzAgKzIwMywxMiBAQCBVUkwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlVVJMKCkgY29uc3QKICAgICBpZiAoIW1f
ZXBoZW1lcmFsU291cmNlTm9uY2UgfHwgIW1fZXBoZW1lcmFsU291cmNlTm9uY2UtPmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlUGF0aCk7
Ci0KLSAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OwotICAgIGlmICh1
cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdXJsOwotCi0gICAgcmV0dXJuIFVSTCgpOwor
ICAgIHJldHVybiBtYWtlVmFsaWRVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlUGF0aCk7CiB9CiAKIFVSTCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdAogewotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImh0dHBzOi8v
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLnN0
cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwocHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblB1YmxpY0tleVBhdGgpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVyLnRv
U3RyaW5nKCkgfTsKLSAgICBpZiAodXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHVybDsK
LQotICAgIHJldHVybiBVUkwoKTsKKyAgICByZXR1cm4gbWFrZVZhbGlkVVJMKG1fc291cmNlU2l0
ZS5yZWdpc3RyYWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tl
eVBhdGgpOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
dG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCA4N2I3ZTNkMDRmMjI4NzQ1ZmI3MDhiMWEx
NmFkNzMzYmEwMmU5YWIwLi40ZjIyODgzMzYzYTBjZTM1YWY1MmE0YjViN2ZlMWYwMWYzNWUzNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCkBAIC0zNTEsMTAgKzM1MSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVj
b2RlKEtleWVkRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgbW9kZWxWZXJzaW9uCiAKIHN0YXRp
YyB2b2lkIGFwcGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgYm9vbCBmbGFnKQogewotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICIp
OwotICAgIGJ1aWxkZXIuYXBwZW5kKGxhYmVsKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZmxhZyA/ICJZZXMiIDogIk5vIik7CisgICAgYnVp
bGRlci5hcHBlbmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9
CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEhhc2hTZXQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGhhc2hT
ZXQpCkBAIC0zNjIsMTUgKzM1OSw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEhhc2hTZXQoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgSGFzCiAgICAgaWYg
KGhhc2hTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobGFiZWwpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOlxuIik7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6
IGhhc2hTZXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgICAgICIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChlbnRyeS5zdHJpbmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAi
OlxuIik7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGhhc2hTZXQpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIgICAgICAgICIsIGVudHJ5LnN0cmluZygpLCAnXG4nKTsKIH0KIAogI2lmIEVOQUJM
RShXRUJfQVBJX1NUQVRJU1RJQ1MpCkBAIC0zNzksMTUgKzM3MCw5IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZEhhc2hTZXQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QgSGFzCiAgICAgaWYgKGhhc2hTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQobGFiZWwpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOlxuIik7Ci0gICAgCi0gICAg
Zm9yIChhdXRvJiBlbnRyeSA6IGhhc2hTZXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgICAgICAgICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChlbnRyeSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICIs
IGxhYmVsLCAiOlxuIik7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGhhc2hTZXQpCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgICAgICIsIGVudHJ5LCAnXG4nKTsKIH0KIAogc3RhdGljIEFT
Q0lJTGl0ZXJhbCBuYXZpZ2F0b3JBUElFbnVtVG9TdHJpbmcoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6TmF2aWdhdG9yQVBJIG5hdmlnYXRvckVudW0pCkBAIC00MzgsMjMgKzQyMywxOCBAQCBzdGF0
aWMgdm9pZCBhcHBlbmROYXZpZ2F0b3JBUElPcHRpb25TZXQoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgY29uc3QgT3B0aW9uU2V0PAogewogICAgIGlmIChvcHRpb25TZXQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbmF2aWdhdG9yRnVu
Y3Rpb25zQWNjZXNzZWQ6XG4iKTsKLSAgICBmb3IgKGF1dG8gbmF2aWdhdG9yQVBJIDogb3B0aW9u
U2V0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICAgICAiKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQobmF2aWdhdG9yQVBJRW51bVRvU3RyaW5nKG5hdmlnYXRvckFQSSku
Y2hhcmFjdGVycygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgbmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQ6XG4iKTsKKyAg
ICBmb3IgKGF1dG8gbmF2aWdhdG9yQVBJIDogb3B0aW9uU2V0KQorICAgICAgICBidWlsZGVyLmFw
cGVuZCgiICAgICAgICAiLCBuYXZpZ2F0b3JBUElFbnVtVG9TdHJpbmcobmF2aWdhdG9yQVBJKSwg
J1xuJyk7CiB9CiAgICAgCiBzdGF0aWMgdm9pZCBhcHBlbmRTY3JlZW5BUElPcHRpb25TZXQoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgT3B0aW9uU2V0PFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OlNjcmVlbkFQST4mIG9wdGlvblNldCkKIHsKICAgICBpZiAob3B0aW9uU2V0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIHNjcmVl
bkZ1bmN0aW9uc0FjY2Vzc2VkOlxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBzY3JlZW5G
dW5jdGlvbnNBY2Nlc3NlZDpcbiIpOwogICAgIGZvciAoYXV0byBzY3JlZW5BUEkgOiBvcHRpb25T
ZXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgICAgICIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChzY3JlZW5BUElFbnVtVG9TdHJpbmcoc2NyZWVuQVBJKS5jaGFyYWN0
ZXJzKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiAgICAgICAgIiwgc2NyZWVuQVBJRW51bVRvU3RyaW5nKHNjcmVlbkFQSSksICdcbicp
OwogICAgIH0KIH0KICNlbmRpZgpAQCAtNDY3LDE4ICs0NDcsMTIgQEAgc3RhdGljIGJvb2wgaGFz
SGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFjdGlvblRpbWVTZWNv
bmRzKQogU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJS
ZWdpc3RyYWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHJlZ2lzdHJhYmxlRG9t
YWluLnN0cmluZygpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCByZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSwg
J1xuJyk7CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBwZW5kQm9vbGVhbihidWls
ZGVyLCAiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0aW9uKTsKICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uOiAiKTsKLSAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0
aW9uKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkpKQot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIndpdGhpbiAyNCBob3VycyIpOwotICAgIGVs
c2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCItMSIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIiwgaGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2No
KCkpID8gIndpdGhpbiAyNCBob3VycyIgOiAiLTEiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgZ3JhbmRmYXRo
ZXJlZCk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTE5MGQ2OTBjNmZlNjhjMTk5
ZjNkNWExMWUwNTE1MzdjMzM1MWE2Mi4uMTU4MTVkMzU0NGRlYTZlMmYxODMxZjE5NjMxZmZkNGIz
YjM3YWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcAogICAg
IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS53b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKS0+cnVuTG9vcCgpOwogCiAgICAgLy8gQ3JlYXRlIGEgdW5pcXVl
IG1vZGUganVzdCBmb3IgdGhpcyBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkLgotICAgIFN0cmlu
ZyBtb2RlID0gbWFrZVN0cmluZygibG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUiLCBydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpOworICAgIGF1dG8gbW9kZSA9IG1ha2VTdHJpbmcoImxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlIiwgcnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKTsKIAog
ICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIFN0cmluZygpKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3Nh
Z2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBk
MTQ1NWI1NGRhMGQ5YmYzMjU5YTA4NzkyZDA4YjlhN2I4M2EwODg2Li5mODIyYTdjYmI2ZDIyZWY1
Y2MwMjM1MjJjMGRhNDVhOTk5OTA2NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC05MjQsNyArOTI0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2Fn
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICAgICAgICAgIC8v
IENoZWNrIHRhcmdldCBvcmlnaW4gbm93IHNpbmNlIHRoZSB0YXJnZXQgZG9jdW1lbnQgbWF5IGhh
dmUgY2hhbmdlZCBzaW5jZSB0aGUgdGltZXIgd2FzIHNjaGVkdWxlZC4KICAgICAgICAgICAgIGlm
ICghdGFyZ2V0T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChkb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlQ29uc29sZSA9IGNv
bnNvbGUoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gIiwgdGFyZ2V0T3JpZ2luLT50b1N0cmluZygp
LCAiLiBSZWNpcGllbnQgaGFzIG9yaWdpbiAiLCBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LnRvU3RyaW5nKCksICIuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtZXNzYWdlID0g
bWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiLCB0YXJnZXRPcmlnaW4tPnRv
U3RyaW5nKCksICIuIFJlY2lwaWVudCBoYXMgb3JpZ2luICIsIGRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkudG9TdHJpbmcoKSwgIi5cbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3Rh
Y2tUcmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb25zb2xlLT5hZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCAq
c3RhY2tUcmFjZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
aW5kZXggM2NhODY3YTYyZmI5YzQxYWM2MTBlNjZjMzc4NjUyYzk2MjA2ZmY5ZC4uMjRlYWViM2Yy
NWM4NDM4Y2JjZTc3ZmJkNzFmNzc2YjRhNGFiYmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTM3NywyOCArMzc3LDE5IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNy
ZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3
Iik7CiAgICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAgIHBhdHRlcm4uYXBwZW5kKCcoJyk7
Ci0gICAgdW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7Ci0gICAgdW5zaWdu
ZWQgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bUxhYmVsczsgaSsrKSB7Ci0gICAgICAg
IFN0cmluZyBsYWJlbCA9IGxhYmVsc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBudW1M
YWJlbHMgPSBsYWJlbHMuc2l6ZSgpOyBpIDwgbnVtTGFiZWxzOyBpKyspIHsKKyAgICAgICAgYXV0
byYgbGFiZWwgPSBsYWJlbHNbaV07CiAKLSAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXIg
PSBmYWxzZTsKLSAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyID0gZmFsc2U7CisgICAgICAg
IGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBlbmRz
V2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNo
KGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgIGVuZHNXaXRoV29yZENo
YXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgo
KSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3
b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAgICAg
ICAgICAgIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFi
ZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCd8Jyk7CiAgICAgICAg
IC8vIFNlYXJjaCBmb3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFiZWwgc3RhcnRzL2VuZHMg
d2l0aCAid29yZCBjaGFyYWN0ZXJzIi4KLSAgICAgICAgLy8gSWYgd2UgYWx3YXlzIHNlYXJjaGVk
IGZvciB3b3JkIGJvdW5kYXJpZXMsIHRoaXMgd291bGRuJ3Qgd29yayBmb3IgbGFuZ3VhZ2VzCi0g
ICAgICAgIC8vIHN1Y2ggYXMgSmFwYW5lc2UuCi0gICAgICAgIGlmIChzdGFydHNXaXRoV29yZENo
YXIpCi0gICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwotICAgICAgICBw
YXR0ZXJuLmFwcGVuZChsYWJlbCk7Ci0gICAgICAgIGlmIChlbmRzV2l0aFdvcmRDaGFyKQotICAg
ICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKKyAgICAgICAgLy8gSWYgd2Ug
YWx3YXlzIHNlYXJjaGVkIGZvciB3b3JkIGJvdW5kYXJpZXMsIHRoaXMgd291bGRuJ3Qgd29yayBm
b3IgbGFuZ3VhZ2VzIHN1Y2ggYXMgSmFwYW5lc2UuCisgICAgICAgIHBhdHRlcm4uYXBwZW5kKGkg
PyAifCIgOiAiIiwgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPyAiXFxiIiA6ICIiLCBsYWJlbCwg
ZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID8gIlxcYiIgOiAiIik7CiAgICAgfQogICAgIHBhdHRlcm4u
YXBwZW5kKCcpJyk7CiAgICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0
dGVybi50b1N0cmluZygpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDY1ODNjMzY5ZmRhMWMwNmQ5NDM3NWNjZGMyM2ZjOGI3
MjIzMGJmNWEuLjNmZjNjNjk5ZmVmM2Y0NmNlNGZjN2U5NTZlMzNhZDM2MGFmYTczZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE0NTEsMTQgKzE0NTEsMTEgQEAgYm9vbCBGcmFt
ZVZpZXc6OnVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogCiB2b2lkIEZyYW1lVmlldzo6
bG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0
CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGF1
dG8gZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuOwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBpZiAoZnJhbWUo
KS5pc01haW5GcmFtZSgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIk1haW4iKTsK
LSAgICBidWlsZGVyLmFwcGVuZCgiRnJhbWVWaWV3OiAiLCBtZXNzYWdlKTsKLSAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6
RGVidWcsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLAorICAgICAgICBt
YWtlU3RyaW5nKGZyYW1lKCkuaXNNYWluRnJhbWUoKSA/ICJNYWluIiA6ICIiLCAiRnJhbWVWaWV3
OiAiLCBtZXNzYWdlKSk7CiB9CiAKIFN0cmluZyBGcmFtZVZpZXc6OmRlYnVnRGVzY3JpcHRpb24o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAzZjZlZDg0
ZDA2ZDQ1YzNjNzAwNzhkNzc3ODA3NjU2ZGQ0NThkYWE5Li45MWU4ODI0MGZjZDY5N2FlYzg0YTRh
NWFkMTU0ZTMzNDg4MGJlNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cApAQCAtMTMwLDExICsxMzAsOCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpTZXJpYWxpemVyTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0VGFnKFN0cmluZ0J1aWxkZXImCiAgICAgaWYgKCFz
aG91bGRJZ25vcmVFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICBNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kU3RhcnRUYWcob3V0LCBlbGVtZW50LCBuYW1lc3BhY2VzKTsKIAotICAgIGlmIChlbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSkgewotICAgICAgICBvdXQuYXBwZW5k
TGl0ZXJhbCgiPG1ldGEgY2hhcnNldD1cIiIpOwotICAgICAgICBvdXQuYXBwZW5kKG1fZG9jdW1l
bnQuY2hhcnNldCgpKTsKLSAgICAgICAgb3V0LmFwcGVuZExpdGVyYWwoIlwiPiIpOwotICAgIH0K
KyAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpCisgICAgICAg
IG91dC5hcHBlbmQoIjxtZXRhIGNoYXJzZXQ9XCIiLCBtX2RvY3VtZW50LmNoYXJzZXQoKSwgIlwi
PiIpOwogCiAgICAgLy8gRklYTUU6IEZvciBvYmplY3QgKHBsdWdpbnMpIHRhZ3MgYW5kIHZpZGVv
IHRhZyB3ZSBjb3VsZCByZXBsYWNlIHRoZW0gYnkgYW4gaW1hZ2Ugb2YgdGhlaXIgY3VycmVudCBj
b250ZW50cy4KIH0KQEAgLTI0Miw3ICsyMzksNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAog
ICAgICAgICBpZiAoIWl0ZW1UZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY3NzVGV4dC5h
cHBlbmQoaXRlbVRleHQpOwogICAgICAgICAgICAgaWYgKGkgPCBzdHlsZVNoZWV0LT5sZW5ndGgo
KSAtIDEpCi0gICAgICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmRMaXRlcmFsKCJcblxuIik7Cisg
ICAgICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmQoIlxuXG4iKTsKICAgICAgICAgfQogICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCk7CiAgICAg
ICAgIC8vIFNvbWUgcnVsZXMgaGF2ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdGhh
dCB3ZSBuZWVkIHRvIHJldHJpZXZlLgpAQCAtMzE4LDExICszMTUsMTAgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogc3R5bGUKIAogVVJMIFBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1lKEZyYW1l
KiBmcmFtZSkKIHsKLSAgICBhdXRvIGl0ZXIgPSBtX2JsYW5rRnJhbWVVUkxzLmZpbmQoZnJhbWUp
OwotICAgIGlmIChpdGVyICE9IG1fYmxhbmtGcmFtZVVSTHMuZW5kKCkpCi0gICAgICAgIHJldHVy
biBpdGVyLT52YWx1ZTsKLSAgICBTdHJpbmcgdXJsID0gbWFrZVN0cmluZygid3ljaXd5ZzovL2Zy
YW1lLyIsIG1fYmxhbmtGcmFtZUNvdW50ZXIrKyk7Ci0gICAgVVJMIGZha2VVUkwoeyB9LCB1cmwp
OworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2JsYW5rRnJhbWVVUkxzLmZpbmQoZnJhbWUpOworICAg
IGlmIChpdGVyYXRvciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQorICAgICAgICByZXR1cm4g
aXRlcmF0b3ItPnZhbHVlOworICAgIFVSTCBmYWtlVVJMIHsgeyB9LCBtYWtlU3RyaW5nKCJ3eWNp
d3lnOi8vZnJhbWUvIiwgbV9ibGFua0ZyYW1lQ291bnRlcisrKSB9OwogICAgIG1fYmxhbmtGcmFt
ZVVSTHMuYWRkKGZyYW1lLCBmYWtlVVJMKTsKICAgICByZXR1cm4gZmFrZVVSTDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcAppbmRleCBm
OWQ5MTE5ODVhMjA2NGRmZGM0ODAyY2YxMmY4MWYwZGFmZjhlZDhkLi40YTUwY2Y4MjIyZjRlNDUy
OGEwZWMwNDEyNWFjZjY4NjYxNjI5NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwCkBAIC0yNiwzMCArMjYsMjEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKIAotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TdHJpbmcgUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50OjpzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnNBc1N0cmluZyhPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb24+IHN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29ucykKK1N0cmluZyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ6
OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzU3RyaW5nKE9wdGlvblNldDxTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbj4gcmVhc29ucykKIHsKLSAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zLmlzRW1wdHkoKSkKKyAgICBpZiAocmVhc29ucy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3RyaW5nQnVpbGRlciByZWFzb25zOwotCi0g
ICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29uOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJh
bCgiZm9yY2VkLCIpOwotICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBy
ZWFzb25zLmFwcGVuZExpdGVyYWwoInNsb3ctcmVwYWludCBvYmplY3RzLCIpOwotICAgIGlmIChz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6
SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJz
KQotICAgICAgICByZWFzb25zLmFwcGVuZExpdGVyYWwoInZpZXdwb3J0LWNvbnN0cmFpbmVkIG9i
amVjdHMsIik7Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KQotICAgICAgICByZWFzb25zLmFwcGVuZExpdGVyYWwoIm5vbi1sYXllciB2aWV3cG9ydC1jb25z
dHJhaW5lZCBvYmplY3RzLCIpOwotICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
JiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SXNJbWFnZURvY3VtZW50KQotICAgICAgICBy
ZWFzb25zLmFwcGVuZExpdGVyYWwoImltYWdlIGRvY3VtZW50LCIpOworICAgIGF1dG8gc3RyaW5n
ID0gbWFrZVN0cmluZyhyZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
OjpGb3JjZWRPbk1haW5UaHJlYWQpID8gImZvcmNlZCwiIDogIiIsCisgICAgICAgIHJlYXNvbnMu
Y29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1Nsb3dSZXBhaW50T2JqZWN0
cykgPyAic2xvdy1yZXBhaW50IG9iamVjdHMsIiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRh
aW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpID8gInZpZXdwb3J0LWNvbnN0cmFpbmVk
IG9iamVjdHMsIiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uOjpIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKSA/ICJu
b24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiIDogIiIsCisgICAgICAgIHJl
YXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OklzSW1hZ2VEb2N1bWVu
dCkgPyAiaW1hZ2UgZG9jdW1lbnQsIiA6ICIiKTsKIAogICAgIC8vIFN0cmlwIHRoZSB0cmFpbGlu
ZyBjb21tYS4KLSAgICByZXR1cm4gcmVhc29ucy50b1N0cmluZygpLmxlZnQocmVhc29ucy5sZW5n
dGgoKSAtIDEpOworICAgIHJldHVybiBzdHJpbmcubGVmdChzdHJpbmcubGVuZ3RoKCkgLSAxKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IDUwOWYyM2JhY2Ux
ZWU1ZmE2MTdkODVjYmRhMTU2OGQ5OTM4Yjg1OGUuLmU1MTliZTdhODRiMDE0NTRiNDYzZjZkYzM1
ODQzNzAwNzI4ZmM4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIFJl
c291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybURyYXcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAg
ICAgICAgIHNpemVfdCByZWNsYWltYWJsZSA9IGNhdGVnb3J5LnJlY2xhaW1hYmxlU2l6ZS5sYXN0
KCk7CiAgICAgICAgIHNpemVfdCBleHRlcm5hbCA9IGNhdGVnb3J5LmV4dGVybmFsU2l6ZS5sYXN0
KCk7CiAgICAgICAgIAotICAgICAgICBTdHJpbmcgbGFiZWwgPSBtYWtlU3RyaW5nKHBhZCgnICcs
IDExLCBjYXRlZ29yeS5uYW1lKSwgIjogIiwgZm9ybWF0Qnl0ZU51bWJlcihkaXJ0eSkpOworICAg
ICAgICBhdXRvIGxhYmVsID0gbWFrZVN0cmluZyhwYWQoJyAnLCAxMSwgY2F0ZWdvcnkubmFtZSks
ICI6ICIsIGZvcm1hdEJ5dGVOdW1iZXIoZGlydHkpKTsKICAgICAgICAgaWYgKGV4dGVybmFsKQog
ICAgICAgICAgICAgbGFiZWwgPSBsYWJlbCArIG1ha2VTdHJpbmcoIiArICIsIGZvcm1hdEJ5dGVO
dW1iZXIoZXh0ZXJuYWwpKTsKICAgICAgICAgaWYgKHJlY2xhaW1hYmxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggY2YwYmE4
MDFmZjI1ZTIzYzc4Y2UxYzAwMTg3MTkzZmYwOWNkYWFiMi4uZjQxYWIwZTQyNDMxY2UyMWQzODNj
Y2M3NWZhN2UxYjhiNzI3NGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC02OCwyNiArNjgsMTEgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bihjb25zdCBjaGFyKiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9j
a2VkVVJMLCBjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIHN1YmplY3QgPSAiaXQiKQog
ewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5k
aXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJbUmVwb3J0IE9ubHldICIpOwotICAgIHJlc3VsdC5hcHBlbmQocHJlZml4KTsKLSAgICBp
ZiAoIWJsb2NrZWRVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZChibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRU
b0xlbmd0aCgpKTsKLSAgICB9Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBiZWNhdXNlICIp
OwotICAgIHJlc3VsdC5hcHBlbmQoc3ViamVjdCk7Ci0gICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZl
LmlzRGVmYXVsdFNyYygpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgYXBwZWFy
cyBpbiBuZWl0aGVyIHRoZSAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChlZmZlY3RpdmVWaW9s
YXRlZERpcmVjdGl2ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZGlyZWN0aXZl
IG5vciB0aGUgZGVmYXVsdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBv
bGljeS4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGRv
ZXMgbm90IGFwcGVhciBpbiB0aGUgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZWZmZWN0aXZl
VmlvbGF0ZWREaXJlY3RpdmUpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGRpcmVj
dGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7Ci0gICAgfQotICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyh2aW9sYXRlZERpcmVj
dGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkgPyAiW1JlcG9ydCBPbmx5XSAiIDog
IiIsCisgICAgICAgIHByZWZpeCwgYmxvY2tlZFVSTC5pc0VtcHR5KCkgPyAiIiA6ICIgIiwgYmxv
Y2tlZFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBiZWNhdXNlICIsIHN1
YmplY3QsCisgICAgICAgIHZpb2xhdGVkRGlyZWN0aXZlLmlzRGVmYXVsdFNyYygpID8gIiBhcHBl
YXJzIGluIG5laXRoZXIgdGhlICIgOiAiIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgIiwKKyAgICAg
ICAgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsCisgICAgICAgIHZpb2xhdGVkRGlyZWN0aXZl
LmlzRGVmYXVsdFNyYygpID8gIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3Rp
dmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIgOiAiIGRpcmVjdGl2ZSBvZiB0aGUg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7CiB9CiAKIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
Q29udGVudFNlY3VyaXR5UG9saWN5KFVSTCYmIHByb3RlY3RlZFVSTCwgQ29udGVudFNlY3VyaXR5
UG9saWN5Q2xpZW50KiBjbGllbnQpCkBAIC0xMzgsMjIgKzEyMywxNCBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6Y29weVVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZyb20oY29uc3Qg
Q29udGVudFNlYwogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UnVubmluZ09yRGlz
cGxheWluZ0luc2VjdXJlQ29udGVudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBib29sIGFsbG93
ID0gdHJ1ZTsKLSAgICBib29sIGlzUmVwb3J0T25seSA9IGZhbHNlOwogICAgIGZvciAoYXV0byYg
cG9saWN5IDogbV9wb2xpY2llcykgewogICAgICAgICBpZiAoIXBvbGljeS0+aGFzQmxvY2tBbGxN
aXhlZENvbnRlbnREaXJlY3RpdmUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGlzUmVwb3J0T25seSA9IHBvbGljeS0+aXNSZXBvcnRPbmx5KCk7Ci0KLSAgICAgICAgU3RyaW5n
QnVpbGRlciBjb25zb2xlTWVzc2FnZTsKLSAgICAgICAgaWYgKGlzUmVwb3J0T25seSkKLSAgICAg
ICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExpdGVyYWwoIltSZXBvcnQgT25seV0gIik7Ci0g
ICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZCgiQmxvY2tlZCBtaXhlZCBjb250ZW50ICIpOwot
ICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmQodXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRU
b0xlbmd0aCgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIGJlY2F1
c2UgIik7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZCgiJ2Jsb2NrLWFsbC1taXhlZC1j
b250ZW50JyBhcHBlYXJzIGluIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKTsKLSAgICAg
ICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpi
bG9ja0FsbE1peGVkQ29udGVudCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OmJsb2NrQWxsTWl4ZWRDb250ZW50LCAqcG9saWN5LCB1cmwsIGNvbnNvbGVNZXNzYWdlLnRvU3Ry
aW5nKCkpOwotCisgICAgICAgIGJvb2wgaXNSZXBvcnRPbmx5ID0gcG9saWN5LT5pc1JlcG9ydE9u
bHkoKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZyhpc1JlcG9ydE9ubHkgPyAi
W1JlcG9ydCBPbmx5XSAiIDogIiIsICJCbG9ja2VkIG1peGVkIGNvbnRlbnQgIiwKKyAgICAgICAg
ICAgIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBiZWNhdXNlICdibG9j
ay1hbGwtbWl4ZWQtY29udGVudCcgYXBwZWFycyBpbiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kuIik7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6YmxvY2tBbGxNaXhlZENvbnRlbnQsCisgICAgICAgICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmxvY2tBbGxNaXhlZENvbnRlbnQsICpwb2xpY3ks
IHVybCwgbWVzc2FnZSk7CiAgICAgICAgIGlmICghaXNSZXBvcnRPbmx5KQogICAgICAgICAgICAg
YWxsb3cgPSBmYWxzZTsKICAgICB9CkBAIC04MzksMzAgKzgxNiwyNSBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZERpcmVjdGl2ZUluSFRUUEVxdWl2TWV0YShjb25z
dCBTdHJpbmcmCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkRGly
ZWN0aXZlVmFsdWVDaGFyYWN0ZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHZhbHVlIGZvciBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUgJyIsIGRpcmVj
dGl2ZU5hbWUsICInIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcmFjdGVyOiAnIiwgdmFsdWUsICIn
LiBOb24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG91dHNpZGUgQVNDSUkgMHgyMS0weDdFIG11c3Qg
YmUgcGVyY2VudC1lbmNvZGVkLCBhcyBkZXNjcmliZWQgaW4gUkZDIDM5ODYsIHNlY3Rpb24gMi4x
OiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4xLiIpOwotICAg
IGxvZ1RvQ29uc29sZShtZXNzYWdlKTsKKyAgICBsb2dUb0NvbnNvbGUobWFrZVN0cmluZygiVGhl
IHZhbHVlIGZvciBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmUgJyIsIGRpcmVjdGl2
ZU5hbWUsICInIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcmFjdGVyOiAnIiwgdmFsdWUsICInLiBO
b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG91dHNpZGUgQVNDSUkgMHgyMS0weDdFIG11c3QgYmUg
cGVyY2VudC1lbmNvZGVkLCBhcyBkZXNjcmliZWQgaW4gUkZDIDM5ODYsIHNlY3Rpb24gMi4xOiBo
dHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4xLiIpKTsKIH0KIAog
dm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWRQYXRoQ2hhcmFjdGVyKGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgY2hh
ciBpbnZhbGlkQ2hhcikgY29uc3QKIHsKICAgICBBU1NFUlQoaW52YWxpZENoYXIgPT0gJyMnIHx8
IGludmFsaWRDaGFyID09ICc/Jyk7CiAKLSAgICBTdHJpbmcgaWdub3Jpbmc7CisgICAgY29uc3Qg
Y2hhciogaWdub3Jpbmc7CiAgICAgaWYgKGludmFsaWRDaGFyID09ICc/JykKICAgICAgICAgaWdu
b3JpbmcgPSAiVGhlIHF1ZXJ5IGNvbXBvbmVudCwgaW5jbHVkaW5nIHRoZSAnPycsIHdpbGwgYmUg
aWdub3JlZC4iOwogICAgIGVsc2UKICAgICAgICAgaWdub3JpbmcgPSAiVGhlIGZyYWdtZW50IGlk
ZW50aWZpZXIsIGluY2x1ZGluZyB0aGUgJyMnLCB3aWxsIGJlIGlnbm9yZWQuIjsKLQotICAgIFN0
cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHNvdXJjZSBsaXN0IGZvciBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmUgJyIsIGRpcmVjdGl2ZU5hbWUsICInIGNvbnRhaW5zIGEg
c291cmNlIHdpdGggYW4gaW52YWxpZCBwYXRoOiAnIiwgdmFsdWUsICInLiAiLCBpZ25vcmluZyk7
Ci0gICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOworICAgIGxvZ1RvQ29uc29sZShtYWtlU3RyaW5n
KCJUaGUgc291cmNlIGxpc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAn
IiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYSBzb3VyY2Ugd2l0aCBhbiBpbnZhbGlkIHBh
dGg6ICciLCB2YWx1ZSwgIicuICIsIGlnbm9yaW5nKSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkU291cmNlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGRp
cmVjdGl2ZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlKSBjb25zdAogewotICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHNvdXJjZSBsaXN0IGZvciBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBkaXJlY3RpdmUgJyIsIGRpcmVjdGl2ZU5hbWUsICInIGNvbnRhaW5zIGFuIGludmFs
aWQgc291cmNlOiAnIiwgc291cmNlLCAiJy4gSXQgd2lsbCBiZSBpZ25vcmVkLiIpOwotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UsICInbm9uZSciKSkKLSAgICAg
ICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcobWVzc2FnZSwgIiBOb3RlIHRoYXQgJ25vbmUnIGhhcyBu
byBlZmZlY3QgdW5sZXNzIGl0IGlzIHRoZSBvbmx5IGV4cHJlc3Npb24gaW4gdGhlIHNvdXJjZSBs
aXN0LiIpOwotICAgIGxvZ1RvQ29uc29sZShtZXNzYWdlKTsKKyAgICBsb2dUb0NvbnNvbGUobWFr
ZVN0cmluZygiVGhlIHNvdXJjZSBsaXN0IGZvciBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmUgJyIsIGRpcmVjdGl2ZU5hbWUsICInIGNvbnRhaW5zIGFuIGludmFsaWQgc291cmNlOiAn
Iiwgc291cmNlLCAiJy4gSXQgd2lsbCBiZSBpZ25vcmVkLiIsCisgICAgICAgIGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgIidub25lJyIpID8gIiBOb3RlIHRoYXQgJ25vbmUn
IGhhcyBubyBlZmZlY3QgdW5sZXNzIGl0IGlzIHRoZSBvbmx5IGV4cHJlc3Npb24gaW4gdGhlIHNv
dXJjZSBsaXN0LiIgOiAiIikpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0TWlzc2luZ1JlcG9ydFVSSShjb25zdCBTdHJpbmcmIHBvbGljeSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAKaW5kZXggYmNkNzA2Yzk2NGY5ZmRiMTY5NzQ3OWRmOTlmMzg1ZmZm
MmMwY2Y1MS4uZDdiNzA2NmQyMTRkYTkxN2E5ZTQ3MzQ4NDkxMDQ1YmQ5NzVjYTgxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTEyOCwxMCArMTI4LDggQEAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGkKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20pOwogCiAgICAg
aWYgKCFjaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMt
Pm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKLSAgICAgICAgU3RyaW5nIGV2YWxEaXNhYmxlZE1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIGEgc3RyaW5nIGFzIEphdmFTY3Jp
cHQgYmVjYXVzZSAndW5zYWZlLWV2YWwnIGlzIG5vdCBhbiBhbGxvd2VkIHNvdXJjZSBvZiBzY3Jp
cHQgaW4gdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6IFwi
IiwgZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3Jj
LmdldCgpKS0+dGV4dCgpLCAiXCIuXG4iKTsKLSAgICAgICAgZGlyZWN0aXZlcy0+c2V0RXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKGV2YWxEaXNhYmxlZE1lc3NhZ2UpOwotICAgICAgICBTdHJpbmcg
d2ViQXNzZW1ibHlEaXNhYmxlZE1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGNyZWF0
ZSBhIFdlYkFzc2VtYmx5IG9iamVjdCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFs
bG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGRpcmVjdGl2ZTogXCIiLCBkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGly
ZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpLT50ZXh0KCksICJcIi5cbiIpOwotICAgICAgICBk
aXJlY3RpdmVzLT5zZXRXZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlKHdlYkFzc2VtYmx5
RGlzYWJsZWRNZXNzYWdlKTsKKyAgICAgICAgZGlyZWN0aXZlcy0+c2V0RXZhbERpc2FibGVkRXJy
b3JNZXNzYWdlKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2
YVNjcmlwdCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9m
IHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogXCIiLCBkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3Jp
cHRTcmMuZ2V0KCkpLT50ZXh0KCksICJcIi5cbiIpKTsKKyAgICAgICAgZGlyZWN0aXZlcy0+c2V0
V2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZShtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGNy
ZWF0ZSBhIFdlYkFzc2VtYmx5IG9iamVjdCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFu
IGFsbG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IGRpcmVjdGl2ZTogXCIiLCBkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUo
ZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpLT50ZXh0KCksICJcIi5cbiIpKTsKICAgICB9
CiAKICAgICBpZiAoZGlyZWN0aXZlcy0+aXNSZXBvcnRPbmx5KCkgJiYgZGlyZWN0aXZlcy0+cmVw
b3J0VVJJcygpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA5YjYyOWQwZTU5MzE4OWJkOTNk
NTlmZTczMDY3YTg0ZTk3NzUzMzgwLi4xODcyZTQyZWRmZWVlMTgwMzAwN2U5ZGVkZTc4MGJhODc4
ZjFlM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0b3IuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgzLDI5ICsz
ODIsMTMgQEAgU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdUcmVlQXNUZXh0
KFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW8KIAogU3RyaW5nIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoT3B0aW9uU2V0PFN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29uPiByZWFzb25zKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b246OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIpOwotCi0gICAgaWYgKHJlYXNvbnMgJiBTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIik7
Ci0KLSAgICBpZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSGFzIHZpZXdwb3J0IGNvbnN0cmFpbmVk
IG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIik7Ci0KLSAgICBpZiAo
cmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNOb25MYXllclZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IkhhcyBub24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywgIik7Ci0KLSAgICBp
ZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpJc0ltYWdlRG9jdW1lbnQp
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSXMgaW1hZ2UgZG9jdW1lbnQs
ICIpOwotCi0gICAgaWYgKHJlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6RGVz
Y2VuZGFudFNjcm9sbGVyc0hhdmVTeW5jaHJvbm91c1Njcm9sbGluZykKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJIYXMgc2xvdyByZXBhaW50IGRlc2NlbmRhbnQgc2Nyb2xs
ZXJzLCAiKTsKLQotICAgIGlmIChzdHJpbmdCdWlsZGVyLmxlbmd0aCgpKQotICAgICAgICBzdHJp
bmdCdWlsZGVyLnNocmluayhzdHJpbmdCdWlsZGVyLmxlbmd0aCgpIC0gMik7Ci0gICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmco
cmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6Rm9yY2VkT25NYWlu
VGhyZWFkKSA/ICJGb3JjZWQgb24gbWFpbiB0aHJlYWQsICIgOiAiIiwKKyAgICAgICAgcmVhc29u
cy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzU2xvd1JlcGFpbnRPYmpl
Y3RzKSA/ICJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMsICIgOiAiIiwKKyAgICAgICAgcmVhc29u
cy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKSA/ICJIYXMgdmlld3BvcnQg
Y29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiIDog
IiIsCisgICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246
Okhhc05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpID8gIkhhcyBub24tbGF5ZXIg
dmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywgIiA6ICIiLAorICAgICAgICByZWFzb25zLmNv
bnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpJc0ltYWdlRG9jdW1lbnQpID8gIklz
IGltYWdlIGRvY3VtZW50LCAiIDogIiIsCisgICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb246OkRlc2NlbmRhbnRTY3JvbGxlcnNIYXZlU3luY2hyb25vdXNT
Y3JvbGxpbmcpID8gIkhhcyBzbG93IHJlcGFpbnQgZGVzY2VuZGFudCBzY3JvbGxlcnMsICIgOiAi
Iik7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBzdHJpbmcgOiBzdHJpbmcubGVmdChz
dHJpbmcubGVuZ3RoKCkgLSAyKTsKIH0KIAogU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EZWNpbWFsLmNwcAppbmRleCA1YzFiYmY0ZTE1ZWE4ZGY5NDYwOGIwY2MyNjlhMTc3MTA0ODQx
YjQ2Li45ZWMwMTcyYTIxYTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtMTAwOSwxMiArMTAwOSwxMSBAQCBTdHJpbmcgRGVj
aW1hbDo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKICAgICAgICAgfQogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiMC4iKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjAuIik7CiAgICAgICAgIGZvciAoaW50IGkgPSBhZGp1
c3RlZEV4cG9uZW50ICsgMTsgaSA8IDA7ICsraSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcwJyk7CiAKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzKTsKLQogICAgIH0gZWxzZSB7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0c1swXSk7CiAgICAgICAgIHdoaWxlIChjb2Vm
ZmljaWVudExlbmd0aCA+PSAyICYmIGRpZ2l0c1tjb2VmZmljaWVudExlbmd0aCAtIDFdID09ICcw
JykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVu
Y3Rpb24uY3BwCmluZGV4IGJhZWIxNGJkZjQxNzEzZTRkOGFmMWI3Nzk1ZGY2MGU3ZGQ0YTljZjYu
LmJkYWRhNTRlMGMwYTNlNGZhZTBlZDYxYTE3MTE1YTYwNjY4MjAzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcApAQCAt
MTQ1LDE4ICsxNDUsMTIgQEAgZG91YmxlIFRpbWluZ0Z1bmN0aW9uOjp0cmFuc2Zvcm1UaW1lKGRv
dWJsZSBpbnB1dFRpbWUsIGRvdWJsZSBkdXJhdGlvbiwgYm9vbCBiZWYKIAogRXhjZXB0aW9uT3I8
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPj4gVGltaW5nRnVuY3Rpb246OmNyZWF0ZUZyb21DU1NUZXh0
KGNvbnN0IFN0cmluZyYgY3NzVGV4dCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGNzc1N0cmluZzsK
LSAgICBjc3NTdHJpbmcuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKSk7Ci0gICAgY3NzU3RyaW5nLmFwcGVuZExpdGVyYWwoIjog
Iik7Ci0gICAgY3NzU3RyaW5nLmFwcGVuZChjc3NUZXh0KTsKLSAgICBhdXRvIHN0eWxlUHJvcGVy
dGllcyA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwotICAgIHN0eWxlUHJvcGVy
dGllcy0+cGFyc2VEZWNsYXJhdGlvbihjc3NTdHJpbmcudG9TdHJpbmcoKSwgQ1NTUGFyc2VyQ29u
dGV4dChIVE1MU3RhbmRhcmRNb2RlKSk7Ci0KLSAgICBpZiAoYXV0byBjc3NWYWx1ZSA9IHN0eWxl
UHJvcGVydGllcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKSkgewotICAgICAgICBpZiAoYXV0byB0aW1pbmdGdW5jdGlvbiA9IGNyZWF0ZUZy
b21DU1NWYWx1ZSgqY3NzVmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIHRpbWluZ0Z1
bmN0aW9uOworICAgIGF1dG8gcHJvcGVydGllcyA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNy
ZWF0ZSgpOworICAgIHByb3BlcnRpZXMtPnBhcnNlRGVjbGFyYXRpb24obWFrZVN0cmluZygiYW5p
bWF0aW9uLXRpbWluZy1mdW5jdGlvbjoiLCBjc3NUZXh0KSwgQ1NTUGFyc2VyQ29udGV4dChIVE1M
U3RhbmRhcmRNb2RlKSk7CisgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pKSB7CisgICAg
ICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gY3JlYXRlRnJvbUNTU1ZhbHVlKCp2YWx1ZSkpCisgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShmdW5jdGlvbik7CiAgICAgfQotICAgIAogICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCA5MzgyYWIzNThlNzQyMjBkOTkzNjM2
MDc0ZWQ2YzlhZGRmNjYwYTM4Li5mYzFmZmZhOTZhNTRlZjk4ZDhkMjQwZGQ2YWE1NjE1ZjA4MThk
YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2Vy
bmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAgQXVk
aW9DaGFubmVsKiBsZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVk
aW9CdXM6OkNoYW5uZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJl
c3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxz
ZQotICAgIFN0cmluZyByZXNvdXJjZU5hbWUgPSBtYWtlU3RyaW5nKCJJUkNfIiwgc3ViamVjdE5h
bWUsICJfQ19SMDE5NV9UIiwgcGFkKCcwJywgMywgYXppbXV0aCksICJfUCIsIHBhZCgnMCcsIDMs
IHBvc2l0aXZlRWxldmF0aW9uKSk7CisgICAgYXV0byByZXNvdXJjZU5hbWUgPSBtYWtlU3RyaW5n
KCJJUkNfIiwgc3ViamVjdE5hbWUsICJfQ19SMDE5NV9UIiwgcGFkKCcwJywgMywgYXppbXV0aCks
ICJfUCIsIHBhZCgnMCcsIDMsIHBvc2l0aXZlRWxldmF0aW9uKSkudXRmOCgpOwogCi0gICAgUmVm
UHRyPEF1ZGlvQnVzPiBpbXB1bHNlUmVzcG9uc2UoQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKHJlc291cmNlTmFtZS51dGY4KCkuZGF0YSgpLCBzYW1wbGVSYXRlKSk7CisgICAgUmVmUHRy
PEF1ZGlvQnVzPiBpbXB1bHNlUmVzcG9uc2UoQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KHJlc291cmNlTmFtZS5kYXRhKCksIHNhbXBsZVJhdGUpKTsKIAogICAgIEFTU0VSVChpbXB1bHNl
UmVzcG9uc2UuZ2V0KCkpOwogICAgIGlmICghaW1wdWxzZVJlc3BvbnNlLmdldCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IGY3MDNk
MDQ1Yjc4NjZiYTk3ODhhMTc2MjRiOGNjZjY5YjJmN2Y0NjIuLmVmYjE0ZjRmM2Q4YjhkM2QyYzUz
MmNlNmNhNDFmMzUwOWIwOTRlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBSZWY8SW5iYW5kR2VuZXJp
Y0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZh
bHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8Yj4iKTsKKyAgICAgICAg
ICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9
ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFu
VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0
YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8aT4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFydC5h
cHBlbmQoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L2k+IiArIHRhZ0VuZDsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2OSw3ICsxNjks
NyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRl
cmFsKCI8dT4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjx1PiIpOwogICAg
ICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDc4Yzc5Y2Q3ZTg5ZTky
YzI2YzRmZTZjNDdkZTk1N2ZmZDhmZjk2YzQuLjE3OTRjMDY3YjFiYjYwZmU0OWQ0ZThhMzYyMDBk
NzcyYTMzMmU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTY0OSw4ICsxNjQ5LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1p
dFN0YXRlLCBjb25zdCBUcmEKICAgICAgICAgY29uc3RleHByIGF1dG8gd2FzaEJvcmRlckNvbG9y
ID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUoMTAwKTsKICAgICAgICAgCiAgICAgICAg
IG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gbWFr
ZVN0cmluZygiVmlzaWJsZSBUaWxlIFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExv
d2VyY2FzZSkpOwotICAgICAgICBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5zZXROYW1lKG5hbWUp
OworICAgICAgICBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5zZXROYW1lKG1ha2VTdHJpbmcoIlZp
c2libGUgVGlsZSBXYXNoIExheWVyIDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX3Zpc2libGVUaWxlV2FzaExheWVyLT5wbGF0Zm9ybUxheWVyKCkpLCBMb3dlcmNhc2UpKSk7
CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQzRCgwLCAwLCAwKSk7CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldEJvcmRl
ckNvbG9yKHdhc2hCb3JkZXJDb2xvcik7CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIt
PnNldEJvcmRlcldpZHRoKDgpOwpAQCAtMzM4Nyw3ICszMzg2LDcgQEAgYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWwKICAgICBmb3IgKGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXggPSAwOyBp
bnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXggPCBudW1BbmltYXRlZFByb3BlcnRpZXM7ICsraW50
ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSB7CiAgICAgICAgIGJvb2wgdmFsdWVzT0s7CiAgICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKLSAgICAgICAgU3Ry
aW5nIGtleVBhdGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZpbHRlcl8iLCBhbmltYXRpb25JbmRl
eCwgJy4nLCBQbGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmls
dGVyT3AsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkpOworICAgICAgICBhdXRvIGtleVBh
dGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZpbHRlcl8iLCBhbmltYXRpb25JbmRleCwgJy4nLCBQ
bGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyT3AsIGlu
dGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzS2V5
ZnJhbWUodmFsdWVMaXN0KSkgewogICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlm
cmFtZUFuaW1hdGlvbihhbmltYXRpb24sIGtleVBhdGgsIGZhbHNlLCBrZXlmcmFtZXNTaG91bGRV
c2VBbmltYXRpb25XaWRlVGltaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDg0MjdmOWNi
YjQyZDRjN2ExNzU3Y2EwMWNiNmU2YWIxY2U5ZjM4M2MuLjRmYmFhN2ZiZGFhMTQ3NDQ2M2MzZTg4
ZDZmZGM4NWFmNTNlNWMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTYxNSw5ICs2MTUsOSBAQCB2b2lk
IFRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCgpCiAgICAgLy8gSWYg
d2UgYXJlIG5vdCB2aXNpYmxlIGdldCByaWQgb2YgdGhlIHpvb21lZC1vdXQgdGlsZXMuCiAgICAg
Y2xlYXJab29tZWRPdXRUaWxlR3JpZCgpOwogCi0gICAgVGlsZUdyaWQ6OlRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kgPSAoc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMo
KSA/IDAgOiBUaWxlR3JpZDo6UHJ1bmVTZWNvbmRhcnlUaWxlcykgfCBUaWxlR3JpZDo6VW5wYXJl
bnRBbGxUaWxlczsKLQotICAgIHRpbGVHcmlkKCkucmV2YWxpZGF0ZVRpbGVzKHZhbGlkYXRpb25Q
b2xpY3kpOworICAgIHRpbGVHcmlkKCkucmV2YWxpZGF0ZVRpbGVzKHNob3VsZEFnZ3Jlc3NpdmVs
eVJldGFpblRpbGVzKCkKKyAgICAgICAgPyBPcHRpb25TZXQgeyBUaWxlR3JpZDo6UHJ1bmVTZWNv
bmRhcnlUaWxlcywgVGlsZUdyaWQ6OlVucGFyZW50QWxsVGlsZXMgfQorICAgICAgICA6IE9wdGlv
blNldCB7IFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzIH0pOwogfQogCiB2b2lkIFRpbGVDb250
cm9sbGVyOjpkaWRSZXZhbGlkYXRlVGlsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCmluZGV4IDAzYjAwYmZiY2Q1Y2E5ZjY5NDE5ZWM1
YjExZTkzMWFjYjgxYmQzYWEuLjlkOGZiYjFhMGYwZGUzNDcyYTVjYWNlZjdmYzdlNTk3ZWI2YTI2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3Jp
ZC5jcHAKQEAgLTQ1LDIyICs0NSwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxP
R19ESVNBQkxFRAotc3RhdGljIFN0cmluZyB2YWxpZGF0aW9uUG9saWN5QXNTdHJpbmcoVGlsZUdy
aWQ6OlRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCi17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyIpOwotICAgIGlm
ICh2YWxpZGF0aW9uUG9saWN5ICYgVGlsZUdyaWQ6OlBydW5lU2Vjb25kYXJ5VGlsZXMpCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicHJ1bmUgc2Vjb25kYXJ5Iik7Ci0KLSAgICBpZiAo
dmFsaWRhdGlvblBvbGljeSAmIFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzKSB7Ci0gICAgICAg
IGlmIChidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1bnBhcmVudCBhbGwiKTsK
LSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJdIik7CiAKLSAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworc3RhdGljIFN0cmluZyB2YWxpZGF0aW9uUG9saWN5QXNTdHJpbmco
T3B0aW9uU2V0PFRpbGVHcmlkOjpWYWxpZGF0aW9uUG9saWN5RmxhZz4gcG9saWN5KQoreworICAg
IHJldHVybiBtYWtlU3RyaW5nKCdbJywKKyAgICAgICAgcG9saWN5LmNvbnRhaW5zKFRpbGVHcmlk
OjpQcnVuZVNlY29uZGFyeVRpbGVzKSA/ICJwcnVuZSBzZWNvbmRhcnkiIDogIiIsCisgICAgICAg
IHBvbGljeS5jb250YWluc0FsbCh7IFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzLCBUaWxl
R3JpZDo6VW5wYXJlbnRBbGxUaWxlcyB9KSA/ICIsICIgOiAiIiwKKyAgICAgICAgcG9saWN5LmNv
bnRhaW5zKFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzKSA/ICJ1bnBhcmVudCBhbGwiIDog
IiIsCisgICAgICAgICddJyk7CiB9CisKICNlbmRpZgogCiBUaWxlR3JpZDo6VGlsZUdyaWQoVGls
ZUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCkBAIC0xMzcsOCArMTMxLDcgQEAgdm9pZCBUaWxlR3Jp
ZDo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICBmb3IgKGludCB5ID0gdG9wTGVmdC55KCk7IHkgPD0gYm90dG9tUmlnaHQueSgpOyArK3kpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gdG9wTGVmdC54KCk7IHggPD0gYm90dG9tUmln
aHQueCgpOyArK3gpIHsKICAgICAgICAgICAgICAgICAgICAgVGlsZUluZGV4IHRpbGVJbmRleCh4
LCB5KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIFRpbGVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKHRpbGVJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaXQgPSBtX3RpbGVzLmZpbmQodGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0ICE9IG1fdGlsZXMuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
aWxlTmVlZHNEaXNwbGF5SW5SZWN0KHRpbGVJbmRleCwgaXQtPnZhbHVlLCByZXBhaW50UmVjdElu
VGlsZUNvb3JkcywgbV9wcmltYXJ5VGlsZUNvdmVyYWdlUmVjdCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ3LDggKzE0MCw4IEBAIHZvaWQgVGlsZUdyaWQ6OnNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9y
IChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0
KGl0LT5rZXksIGl0LT52YWx1ZSwgcmVwYWludFJlY3RJblRpbGVDb29yZHMsIG1fcHJpbWFyeVRp
bGVDb3ZlcmFnZVJlY3QpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3RpbGVzKQorICAgICAg
ICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0KGVudHJ5LmtleSwgZW50cnkudmFsdWUsIHJlcGFp
bnRSZWN0SW5UaWxlQ29vcmRzLCBtX3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0KTsKIH0KIAogdm9p
ZCBUaWxlR3JpZDo6ZHJvcFRpbGVzSW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0yMDMs
OSArMTk2LDcgQEAgdm9pZCBUaWxlR3JpZDo6dXBkYXRlVGlsZUxheWVyUHJvcGVydGllcygpCiAg
ICAgYm9vbCBvcGFxdWUgPSBtX2NvbnRyb2xsZXIudGlsZXNBcmVPcGFxdWUoKTsKICAgICBDb2xv
ciB0aWxlRGVidWdCb3JkZXJDb2xvciA9IG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xv
cigpOwogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRoID0gbV9jb250cm9sbGVyLnRpbGVE
ZWJ1Z0JvcmRlcldpZHRoKCk7Ci0KLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgY29uc3QgVGlsZUluZm8mIHRpbGVJbmZvID0gaXQtPnZhbHVlOworICAgIGZv
ciAoYXV0byYgdGlsZUluZm8gOiBtX3RpbGVzLnZhbHVlcygpKSB7CiAgICAgICAgIHRpbGVJbmZv
LmxheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcoYWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICAg
ICAgdGlsZUluZm8ubGF5ZXItPnNldFdhbnRzRGVlcENvbG9yQmFja2luZ1N0b3JlKGRlZXBDb2xv
cik7CiAgICAgICAgIHRpbGVJbmZvLmxheWVyLT5zZXRTdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFz
ZWRUZXh0KHN1YnBpeGVsQW50aWFsaWFzZWRUZXh0KTsKQEAgLTI5MiwxMiArMjgzLDEwIEBAIGJv
b2wgVGlsZUdyaWQ6OmdldFRpbGVJbmRleFJhbmdlRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
LCBUaWxlSW5kZXgmIHRvcExlZnQsCiB1bnNpZ25lZCBUaWxlR3JpZDo6YmxhbmtQaXhlbENvdW50
KCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybUxheWVyTGlzdCB0aWxlcyhtX3RpbGVzLnNpemUoKSk7
Ci0KLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigp
LCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKFBs
YXRmb3JtTGF5ZXIgKmxheWVyID0gaXQtPnZhbHVlLmxheWVyLT5wbGF0Zm9ybUxheWVyKCkpCisg
ICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoYXV0
byBsYXllciA9IHRpbGUubGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKICAgICAgICAgICAgIHRpbGVz
LmFwcGVuZChsYXllcik7CiAgICAgfQotCiAgICAgcmV0dXJuIFRpbGVDb250cm9sbGVyOjpibGFu
a1BpeGVsQ291bnRGb3JUaWxlcyh0aWxlcywgbV9jb250cm9sbGVyLnZpc2libGVSZWN0KCksIElu
dFBvaW50KDAsIDApKTsKIH0KIApAQCAtMzA2LDcgKzI5NSw3IEBAIHZvaWQgVGlsZUdyaWQ6OnJl
bW92ZVRpbGVzKFZlY3RvcjxUaWxlR3JpZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0b1JlbW92ZS5zaXplKCk7ICsraSkgewogICAgICAgICBUaWxl
SW5mbyB0aWxlSW5mbyA9IG1fdGlsZXMudGFrZSh0b1JlbW92ZVtpXSk7CiAgICAgICAgIHRpbGVJ
bmZvLmxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBtX3RpbGVSZXBhaW50
Q291bnRzLnJlbW92ZSh0aWxlSW5mby5sYXllci5nZXQoKSk7CisgICAgICAgIG1fdGlsZVJlcGFp
bnRDb3VudHMucmVtb3ZlQWxsKHRpbGVJbmZvLmxheWVyLmdldCgpKTsKICAgICAgICAgdGlsZUlu
Zm8ubGF5ZXItPm1vdmVUb0xheWVyUG9vbCgpOwogICAgIH0KIH0KQEAgLTMyOCw3ICszMTcsNyBA
QCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVBbGxTZWNvbmRhcnlUaWxlcygpCiAKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV90aWxlcykgewogICAgICAgICBjb25zdCBUaWxlSW5mbyYgdGlsZUluZm8g
PSBlbnRyeS52YWx1ZTsKLSAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSBWaXNpYmxlVGls
ZUNvaG9ydCkKKyAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSB2aXNpYmxlVGlsZUNvaG9y
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0aWxlc1RvUmVtb3ZlLmFwcGVuZChl
bnRyeS5rZXkpOwogICAgIH0KQEAgLTMzOCw3ICszMjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpyZW1v
dmVBbGxTZWNvbmRhcnlUaWxlcygpCiAKIHZvaWQgVGlsZUdyaWQ6OnJlbW92ZVRpbGVzSW5Db2hv
cnQoVGlsZUNvaG9ydCBjb2hvcnQpCiB7Ci0gICAgQVNTRVJUKGNvaG9ydCAhPSBWaXNpYmxlVGls
ZUNvaG9ydCk7CisgICAgQVNTRVJUKGNvaG9ydCAhPSB2aXNpYmxlVGlsZUNvaG9ydCk7CiAgICAg
VmVjdG9yPFRpbGVJbmRleD4gdGlsZXNUb1JlbW92ZTsKIAogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX3RpbGVzKSB7CkBAIC0zNTEsNyArMzQwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVGls
ZXNJbkNvaG9ydChUaWxlQ29ob3J0IGNvaG9ydCkKICAgICByZW1vdmVUaWxlcyh0aWxlc1RvUmVt
b3ZlKTsKIH0KIAotdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCit2b2lkIFRpbGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMo
T3B0aW9uU2V0PFZhbGlkYXRpb25Qb2xpY3lGbGFnPiB2YWxpZGF0aW9uUG9saWN5KQogewogICAg
IEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QgPSBtX2NvbnRyb2xsZXIuY292ZXJhZ2VSZWN0KCk7CiAg
ICAgSW50UmVjdCBib3VuZHMgPSBtX2NvbnRyb2xsZXIuYm91bmRzKCk7CkBAIC0zODMsNyArMzcy
LDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5
IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSByZWN0Rm9yVGls
ZUluZGV4KHRpbGVJbmRleCk7CiAKICAgICAgICAgaWYgKHRpbGVSZWN0LmludGVyc2VjdHMoY292
ZXJhZ2VSZWN0SW5UaWxlQ29vcmRzKSkgewotICAgICAgICAgICAgdGlsZUluZm8uY29ob3J0ID0g
VmlzaWJsZVRpbGVDb2hvcnQ7CisgICAgICAgICAgICB0aWxlSW5mby5jb2hvcnQgPSB2aXNpYmxl
VGlsZUNvaG9ydDsKICAgICAgICAgICAgIGlmICh0aWxlSW5mby5oYXNTdGFsZUNvbnRlbnQpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogc3RvcmUgYSBkaXJ0eSByZWdpb24gcGVyIGxheWVy
PwogICAgICAgICAgICAgICAgIHRpbGVMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CkBAIC0zOTEs
NyArMzgwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBBZGQgdG8gdGhlIGN1cnJlbnRDb2hvcnQgaWYgbm90IGFscmVhZHkg
aW4gb25lLgotICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSBWaXNpYmxlVGlsZUNv
aG9ydCkgeworICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSB2aXNpYmxlVGlsZUNv
aG9ydCkgewogICAgICAgICAgICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IGN1cnJDb2hvcnQ7CiAg
ICAgICAgICAgICAgICAgKyt0aWxlc0luQ29ob3J0OwogICAgICAgICAgICAgICAgIHRpbGVMYXll
ci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKQEAgLTYzMCwxNiArNjE5LDEzIEBAIEludFJlY3Qg
VGlsZUdyaWQ6OmV4dGVudCgpIGNvbnN0CiBkb3VibGUgVGlsZUdyaWQ6OnJldGFpbmVkVGlsZUJh
Y2tpbmdTdG9yZU1lbW9yeSgpIGNvbnN0CiB7CiAgICAgZG91YmxlIHRvdGFsQnl0ZXMgPSAwOwot
ICAgIAotICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2lu
KCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25z
dCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB0aWxlSW5m
byA6IG1fdGlsZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKHRpbGVJbmZvLmxheWVyLT5zdXBl
cmxheWVyKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZHMgPSB0aWxlSW5mby5sYXll
ci0+Ym91bmRzKCk7CiAgICAgICAgICAgICBkb3VibGUgY29udGVudHNTY2FsZSA9IHRpbGVJbmZv
LmxheWVyLT5jb250ZW50c1NjYWxlKCk7CiAgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IDQgKiBi
b3VuZHMud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUgKiBib3VuZHMuaGVpZ2h0KCkgKiBjb250ZW50
c1NjYWxlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIHRvdGFsQnl0ZXM7CiB9CiAK
QEAgLTY2MSw4ICs2NDcsNyBAQCB2b2lkIFRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENH
Q29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpIGNvbgogICAgIENHRmxvYXQg
Y29udGV4dFNjYWxlID0gc2NhbGVGYWN0b3IgLyBtX3NjYWxlOwogICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIGNvbnRleHRTY2FsZSwgY29udGV4dFNjYWxlKTsKICAgICAKLSAgICBmb3Ig
KFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3Rp
bGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgVGlsZUluZm8mIHRp
bGVJbmZvID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgdGlsZUluZm8gOiBtX3RpbGVzLnZh
bHVlcygpKSB7CiAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogdGlsZUxheWVyID0gdGlsZUluZm8u
bGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgQ0dGbG9hdCByZWQgPSAxOwpAQCAtNjczLDcgKzY1OCw3
IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgICAgICAgICByZWQgPSAwLjI1OwogICAg
ICAgICAgICAgZ3JlZW4gPSAwLjEyNTsKICAgICAgICAgICAgIGJsdWUgPSAwOwotICAgICAgICB9
IGVsc2UgaWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYm
IHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCkgeworICAgICAgICB9IGVsc2Ug
aWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYmIHRpbGVJ
bmZvLmNvaG9ydCAhPSB2aXNpYmxlVGlsZUNvaG9ydCkgewogICAgICAgICAgICAgcmVkID0gMC44
OwogICAgICAgICAgICAgZ3JlZW4gPSAwLjg7CiAgICAgICAgICAgICBibHVlID0gMC44OwpAQCAt
NjgyLDcgKzY2Nyw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgICAgIFRpbGVDb2hv
cnQgbmV3ZXN0Q29ob3J0ID0gbmV3ZXN0VGlsZUNvaG9ydCgpOwogICAgICAgICBUaWxlQ29ob3J0
IG9sZGVzdENvaG9ydCA9IG9sZGVzdFRpbGVDb2hvcnQoKTsKIAotICAgICAgICBpZiAoIW1fY29u
dHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYmIHRpbGVJbmZvLmNvaG9y
dCAhPSBWaXNpYmxlVGlsZUNvaG9ydCAmJiBuZXdlc3RDb2hvcnQgPiBvbGRlc3RDb2hvcnQpCisg
ICAgICAgIGlmICghbV9jb250cm9sbGVyLnNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkg
JiYgdGlsZUluZm8uY29ob3J0ICE9IHZpc2libGVUaWxlQ29ob3J0ICYmIG5ld2VzdENvaG9ydCA+
IG9sZGVzdENvaG9ydCkKICAgICAgICAgICAgIGFscGhhID0gMSAtIChzdGF0aWNfY2FzdDxmbG9h
dD4oKG5ld2VzdENvaG9ydCAtIHRpbGVJbmZvLmNvaG9ydCkpIC8gKG5ld2VzdENvaG9ydCAtIG9s
ZGVzdENvaG9ydCkpOwogCiAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CkBAIC03MDEsMTIgKzY4NiwxMyBAQCB2b2lkIFRp
bGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
bGF5ZXJCb3VuZHMpIGNvbgogCiAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAwLCAwLCAwLCAwLjUpOwogCi0gICAgICAgIFN0cmluZyByZXBhaW50Q291bnQgPSBTdHJp
bmc6Om51bWJlcihtX3RpbGVSZXBhaW50Q291bnRzLmdldCh0aWxlTGF5ZXIpKTsKLQogICAgICAg
ICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCisgICAgICAgIGF1dG8gcmVwYWludENv
dW50ID0gbV90aWxlUmVwYWludENvdW50cy5jb3VudCh0aWxlTGF5ZXIpOworICAgICAgICBjaGFy
IHJlcGFpbnRDb3VudENoYXJhY3RlcnNbbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoc3RkOjpudW1l
cmljX2xpbWl0czxkZWNsdHlwZShyZXBhaW50Q291bnQpPjo6bWF4KCkpXTsKKyAgICAgICAgd3Jp
dGVJbnRlZ2VyVG9CdWZmZXIocmVwYWludENvdW50LCByZXBhaW50Q291bnRDaGFyYWN0ZXJzKTsK
ICAgICAgICAgdGlsZUxheWVyLT5kcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZnJhbWUub3JpZ2lu
LnggKyA2NCwgZnJhbWUub3JpZ2luLnkgKyAxOTIsIENHU2l6ZU1ha2UoMywgLTMpLCA1OCwKLSAg
ICAgICAgICAgIHJlcGFpbnRDb3VudC5hc2NpaSgpLmRhdGEoKSwgcmVwYWludENvdW50Lmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIHJlcGFpbnRDb3VudENoYXJhY3RlcnMsIGxlbmd0aE9mSW50ZWdl
ckFzU3RyaW5nKHJlcGFpbnRDb3VudCkpOwogCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7CiAgICAgfQpAQCAtNzgxLDI5ICs3NjcsMTkgQEAgYm9vbCBUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdAogCiBpbnQgVGlsZUdyaWQ6OnBs
YXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXll
cikgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvIGl0ID0gbV90aWxlUmVwYWludENvdW50cy5maW5k
KHBsYXRmb3JtQ0FMYXllcik7Ci0gICAgcmV0dXJuIGl0ICE9IG1fdGlsZVJlcGFpbnRDb3VudHMu
ZW5kKCkgPyBpdC0+dmFsdWUgOiAwOworICAgIHJldHVybiBtX3RpbGVSZXBhaW50Q291bnRzLmNv
dW50KHBsYXRmb3JtQ0FMYXllcik7CiB9CiAKIGludCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVy
SW5jcmVtZW50UmVwYWludENvdW50KFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQog
ewotICAgIGludCByZXBhaW50Q291bnQgPSAwOwotCi0gICAgaWYgKG1fdGlsZVJlcGFpbnRDb3Vu
dHMuY29udGFpbnMocGxhdGZvcm1DQUxheWVyKSkKLSAgICAgICAgcmVwYWludENvdW50ID0gbV90
aWxlUmVwYWludENvdW50cy5nZXQocGxhdGZvcm1DQUxheWVyKTsKLQotICAgIG1fdGlsZVJlcGFp
bnRDb3VudHMuc2V0KHBsYXRmb3JtQ0FMYXllciwgKytyZXBhaW50Q291bnQpOwotCi0gICAgcmV0
dXJuIHJlcGFpbnRDb3VudDsKKyAgICByZXR1cm4gbV90aWxlUmVwYWludENvdW50cy5hZGQocGxh
dGZvcm1DQUxheWVyKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCkKIHsKLSAgICB3
aGlsZSAoIW1fY29ob3J0TGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVGlsZUNvaG9ydEluZm8g
Zmlyc3RDb2hvcnQgPSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7Ci0gICAgICAgIHJlbW92ZVRp
bGVzSW5Db2hvcnQoZmlyc3RDb2hvcnQuY29ob3J0KTsKLSAgICB9CisgICAgd2hpbGUgKCFtX2Nv
aG9ydExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVUaWxlc0luQ29ob3J0KG1fY29ob3J0
TGlzdC50YWtlRmlyc3QoKS5jb2hvcnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCmluZGV4IDQ4MGZkMGE5N2RjZTMwNWFh
ZGNmOWM3NTU1OGNlNGU4NWM3YjJjYWUuLjI1N2JhNTk4MzRhY2Q2ZGNhN2ViM2JkZWNmNmNkMTAx
ZDM1M2ViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUdyaWQuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNpZiBVU0Uo
Q0cpCkBAIC00NSw5ICs0NSwxMCBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBUaWxl
Q29udHJvbGxlcjsKIAogY2xhc3MgVGlsZUdyaWQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxlR3JpZCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGVHcmlkKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBUaWxlR3JpZChUaWxlQ29udHJvbGxl
ciYpOworICAgIGV4cGxpY2l0IFRpbGVHcmlkKFRpbGVDb250cm9sbGVyJik7CiAgICAgflRpbGVH
cmlkKCk7CiAKICNpZiBVU0UoQ0EpCkBAIC02NywxMiArNjgsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBwcmVwb3B1bGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBlbnVtIFRpbGVW
YWxpZGF0aW9uUG9saWN5RmxhZ3MgeworICAgIGVudW0gVmFsaWRhdGlvblBvbGljeUZsYWcgOiB1
aW50OF90IHsKICAgICAgICAgUHJ1bmVTZWNvbmRhcnlUaWxlcyA9IDEgPDwgMCwKICAgICAgICAg
VW5wYXJlbnRBbGxUaWxlcyAgICA9IDEgPDwgMQogICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBUaWxlVmFsaWRhdGlvblBvbGljeTsKLSAgICB2b2lkIHJldmFsaWRhdGVUaWxlcyhUaWxlVmFs
aWRhdGlvblBvbGljeSA9IDApOworICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKE9wdGlvblNldDxW
YWxpZGF0aW9uUG9saWN5RmxhZz4gPSB7IH0pOwogCiAgICAgYm9vbCB0aWxlc1dvdWxkQ2hhbmdl
Rm9yQ292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCkBAIC05MywyMCArOTMs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCk7CiAjZW5k
aWYKIAotICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OworICAgIHVzaW5nIFRpbGVJbmRl
eCA9IEludFBvaW50OwogCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBUaWxlQ29ob3J0OwotICAgIHN0
YXRpYyBjb25zdCBUaWxlQ29ob3J0IFZpc2libGVUaWxlQ29ob3J0ID0gVUlOVF9NQVg7CisgICAg
dXNpbmcgVGlsZUNvaG9ydCA9IHVuc2lnbmVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgVGlsZUNv
aG9ydCB2aXNpYmxlVGlsZUNvaG9ydCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGlsZUNvaG9ydD46
Om1heCgpOwogCiAgICAgc3RydWN0IFRpbGVJbmZvIHsKICAgICAgICAgUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gbGF5ZXI7Ci0gICAgICAgIFRpbGVDb2hvcnQgY29ob3J0OyAvLyBWaXNpYmxlVGls
ZUNvaG9ydCBpcyB2aXNpYmxlLgotICAgICAgICBib29sIGhhc1N0YWxlQ29udGVudDsKLQotICAg
ICAgICBUaWxlSW5mbygpCi0gICAgICAgICAgICA6IGNvaG9ydChWaXNpYmxlVGlsZUNvaG9ydCkK
LSAgICAgICAgICAgICwgaGFzU3RhbGVDb250ZW50KGZhbHNlKQotICAgICAgICB7IH0KKyAgICAg
ICAgVGlsZUNvaG9ydCBjb2hvcnQgeyB2aXNpYmxlVGlsZUNvaG9ydCB9OworICAgICAgICBib29s
IGhhc1N0YWxlQ29udGVudCB7IGZhbHNlIH07CiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTE1OCwx
OSArMTUzLDE2IEBAIHByaXZhdGU6CiAgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gbV9jb250YWlu
ZXJMYXllcjsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFRpbGVJbmRleCwgVGlsZUlu
Zm8+IFRpbGVNYXA7Ci0gICAgVGlsZU1hcCBtX3RpbGVzOworICAgIEhhc2hNYXA8VGlsZUluZGV4
LCBUaWxlSW5mbz4gbV90aWxlczsKIAogICAgIEludFJlY3QgbV9wcmltYXJ5VGlsZUNvdmVyYWdl
UmVjdDsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX3NlY29uZGFyeVRpbGVDb3ZlcmFnZVJlY3Rz
OwogCi0gICAgdHlwZWRlZiBEZXF1ZTxUaWxlQ29ob3J0SW5mbz4gVGlsZUNvaG9ydExpc3Q7Ci0g
ICAgVGlsZUNvaG9ydExpc3QgbV9jb2hvcnRMaXN0OworICAgIERlcXVlPFRpbGVDb2hvcnRJbmZv
PiBtX2NvaG9ydExpc3Q7CiAKICAgICBUaW1lciBtX2NvaG9ydFJlbW92YWxUaW1lcjsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQ+IFJlcGFpbnRDb3VudE1hcDsK
LSAgICBSZXBhaW50Q291bnRNYXAgbV90aWxlUmVwYWludENvdW50czsKKyAgICBIYXNoQ291bnRl
ZFNldDxQbGF0Zm9ybUNBTGF5ZXIqPiBtX3RpbGVSZXBhaW50Q291bnRzOwogICAgIAogICAgIElu
dFNpemUgbV90aWxlU2l6ZTsKIApAQCAtMTc4LDQgKzE3MCwzIEBAIHByaXZhdGU6CiB9OwogCiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCmluZGV4IDAwMGQ5MzcwMzc0
YmJhOWI0NWFhZjVkYjM3ZWUzNjliYjc1MDczNDcuLmQ0ZmEzYzRiZmFkMzRhYWYzMDkzYTlmMDI0
ODZiYjcyN2Y5OGQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQpA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRGaWx0ZXJzT25MYXll
cihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3BlcgogCiAgICAgdW5zaWduZWQg
aSA9IDA7CiAgICAgYXV0byBhcnJheSA9IGNyZWF0ZU5TQXJyYXkoZmlsdGVycy5vcGVyYXRpb25z
KCksIFsmXSAoYXV0byYgb3BlcmF0aW9uUHRyKSAtPiBpZCB7Ci0gICAgICAgIFN0cmluZyBmaWx0
ZXJOYW1lID0gbWFrZVN0cmluZygiZmlsdGVyXyIsIGkrKyk7CisgICAgICAgIGF1dG8gZmlsdGVy
TmFtZSA9IG1ha2VTdHJpbmcoImZpbHRlcl8iLCBpKyspOwogICAgICAgICBhdXRvJiBmaWx0ZXJP
cGVyYXRpb24gPSAqb3BlcmF0aW9uUHRyOwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlv
bi50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRFRkFVTFQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCmluZGV4IDllZTY4ODE1ODJlNzViNGJkNjUzMmI5MjVmN2VmYzA1ODNkNDMwYTYu
LjM3ZDFhNDQ5OWE4NzZjNjYwZWZjMjM1MTRlMWJjMWU0ODNhMzNkNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEZsb2F0UG9pbnQgdGltZUxvY2F0
aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuMDUsIGNhcHR1cmVTaXplLmhlaWdodCgpICogLjE1
KTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwogICAgIGNvbnRleHQu
c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7Ci0gICAgU3RyaW5nIHN0
cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1p
bnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxp
c2Vjb25kcyAlIDEwMDApKTsKKyAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNl
Y29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKICAgICBjb250
ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGlt
ZUxvY2F0aW9uKTsKIAogICAgIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgNiwgbV9mcmFt
ZU51bWJlcisrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nj
cm9sbEFuaW1hdG9yTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bEFuaW1hdG9yTW9jay5jcHAKaW5kZXggZDRlZTBkNDEzOWNmM2M5ODMyYzBlMDZkYzQ4ODU2MWI3
MGFjNDc2OC4uMjI2MTU4Y2ZjZDQ5YzU5YjBmOGJkMDcwNDViZTU5YjQ4NTliZmJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNw
cApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yTW9jay5oIgogCiAj
aW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODYsNTMgKzg1LDI2IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKICAgICBTY3JvbGxB
bmltYXRvcjo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpOwogfQogCitjb25zdCBjaGFyKiBTY3Jv
bGxBbmltYXRvck1vY2s6OnNjcm9sbGJhclByZWZpeChTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29u
c3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyID09IG1fdmVydGljYWxTY3JvbGxiYXIgPyAiVmVy
dGljYWwiIDogc2Nyb2xsYmFyID09IG1faG9yaXpvbnRhbFNjcm9sbGJhciA/ICJIb3Jpem9udGFs
IiA6ICJVbmtub3duIjsKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1vY2s6Om1vdXNlRW50ZXJl
ZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUVudGVyZWQiKTsK
LSAgICBpZiAoc2Nyb2xsYmFyID09IG1fdmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiVmVydGljYWwiKTsKLSAgICBlbHNlIGlmIChzY3JvbGxiYXIgPT0g
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIkhv
cml6b250YWwiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiVW5r
bm93biIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiU2Nyb2xsYmFyIik7Ci0gICAgbV9s
b2dnZXIobWVzc2FnZS50b1N0cmluZygpKTsKKyAgICBtX2xvZ2dlcihtYWtlU3RyaW5nKCJtb3Vz
ZUVudGVyZWQiLCBzY3JvbGxiYXJQcmVmaXgoc2Nyb2xsYmFyKSwgIlNjcm9sbGJhciIpKTsKICAg
ICBTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiB9CiAK
IHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUV4aXRlZCIpOwotICAgIGlmIChzY3JvbGxiYXIgPT0g
bV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJWZXJ0
aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBtX2hvcml6b250YWxTY3JvbGxiYXIp
Ci0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9yaXpvbnRhbCIpOwotICAgIGVsc2UK
LSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtub3duIik7Ci0gICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xvZ2dlcihtZXNzYWdlLnRvU3RyaW5n
KCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoIm1vdXNlRXhpdGVkIiwgc2Nyb2xsYmFyUHJl
Zml4KHNjcm9sbGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAgU2Nyb2xsQW5pbWF0b3I6Om1vdXNl
RXhpdGVkU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2Nr
Ojptb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIGlzUHJl
c3NlZCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJtb3VzZUlzIik7Ci0gICAgaWYgKGlzUHJlc3NlZCkKLSAgICAgICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJEb3duIik7Ci0gICAgZWxzZQotICAgICAgICBtZXNzYWdlLmFw
cGVuZExpdGVyYWwoIlVwIik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJJbiIpOwotICAg
IGlmIChzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJWZXJ0aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBtX2hv
cml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9yaXpv
bnRhbCIpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtub3du
Iik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xvZ2dl
cihtZXNzYWdlLnRvU3RyaW5nKCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoaXNQcmVzc2Vk
ID8gIm1vdXNlSXNEb3duSW4iIDogIm1vdXNlSXNVcEluIiwgc2Nyb2xsYmFyUHJlZml4KHNjcm9s
bGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAgU2Nyb2xsQW5pbWF0b3I6Om1vdXNlSXNEb3duSW5T
Y3JvbGxiYXIoc2Nyb2xsYmFyLCBpc1ByZXNzZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaAppbmRleCA0NmNlYTA2M2RkNzY0
MDI5NjViOGQ1MzVmYmQwMmFhMGQzMzU5OGU3Li5mOTcyMWE4ZjYyMmM4OWU1NDZkOWViYmFjZDk4
MjEwZjgzMTFiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nj
cm9sbEFuaW1hdG9yTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsQW5pbWF0b3JNb2NrLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IG1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgbW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBjb25zdCBjaGFyKiBzY3JvbGxiYXJQcmVmaXgoU2Nyb2xsYmFyKikgY29uc3Q7CiAK
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fbG9nZ2VyOwogICAgIFNj
cm9sbGJhciogbV92ZXJ0aWNhbFNjcm9sbGJhciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKaW5kZXggYWI5ZWRkOWI0NzQ3
MDE1ZmVkMzZhODlmMWQzYjA1YjM3ZjEwNTEzYS4uMzZhZGYwNWQ5Njg2ZjA4Y2VlY2U3NDZiNTYx
ODMyYWRhZDgwMzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5jcHAKQEAgLTM3LDE3ICszNywxNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcm94
eVNlcnZlclN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYg
cAogCiAgICAgc3dpdGNoIChwcm94eVNlcnZlci50eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2Vy
dmVyOjpEaXJlY3Q6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRElSRUNUIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIkRJUkVDVCIpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFByb3h5U2VydmVyOjpIVFRQOgogICAgIGNhc2UgUHJveHlTZXJ2
ZXI6OkhUVFBTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlBST1hZIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJQUk9YWSAiLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOics
IHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJveHlTZXJ2
ZXI6OlNPQ0tTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNPQ0tTIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJTT0NLUyAiLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOics
IHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0gICAgCi0gICAgYnVp
bGRlci5hcHBlbmQoJyAnLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOicsIHByb3h5U2VydmVy
LnBvcnQoKSk7CisgICAgfQogfQogCiBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFByb3h5
U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpAQCAtNTgsMTMgKzU3LDEwIEBAIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMpCiAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJveHlTZXJ2
ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI7ICIpOwotCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiOyAiKTsKICAgICAgICAgYXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcoc3RyaW5nQnVpbGRl
ciwgcHJveHlTZXJ2ZXJzW2ldKTsKICAgICB9Ci0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
aW5kZXggMWYwOTJkOGQ1OGRjOWNmZDBkYmNiNDcyMjQ3YjQyODlhNjE5MGM5YS4uYWE5MTYyZTQ5
MGZlZjYxMDY5MWRlMjQ2OTQzZDMxZDgyYTFlMmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTMw
NywxMSArMzA3LDEwIEBAIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdn
ZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpCiAgICAgaWYgKHN1Z2dlc3Rl
ZEZpbGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN1Z2dlc3RlZEZpbGVuYW1lOwog
Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIpLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlIHsgeyB7IH0sICJodHRwOi8vZXhhbXBsZS5jb20vIl9zIH0sIHsgfSwgLTEsIHsgfSB9
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgU3RyaW5nIGVzY2Fw
ZWRTdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgn
XFwnLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAiXFxcIiIpOwotICAgIFN0cmluZyB2YWx1ZSA9IG1h
a2VTdHJpbmcoImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dlc3RlZEZpbGVu
YW1lLCAnIicpOwotICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudERpc3Bvc2l0aW9uLCB2YWx1ZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24sIG1ha2VTdHJpbmcoImF0
dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1lLCAnIicpKTsK
ICAgICByZXR1cm4gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggZWE0NTMxMTBh
MTgzOTczN2Q5NzVmYjM1ZTFlODIwOWM4ZWEyMDI5Zi4uYjBiZjM4MTBhYmU0NzdiM2YyMWY0MGM2
MTg4OGVmZDJhYzM3MGU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6
b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKICAgICBpZiAo
b3Blbk1vZGUgIT0gT3Blbk1vZGU6OlJlYWRPbmx5KQogICAgICAgICB1c2VXQUxKb3VybmFsTW9k
ZSgpOwogCi0gICAgU3RyaW5nIHNobUZpbGVOYW1lID0gbWFrZVN0cmluZyhmaWxlbmFtZSwgIi1z
aG0iX3MpOworICAgIGF1dG8gc2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVuYW1lLCAiLXNo
bSJfcyk7CiAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htRmlsZU5hbWUpKSB7CiAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHNobUZp
bGVOYW1lKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoU1FMRGF0YWJhc2UsICJP
cGVuZWQgYW4gU1FMaXRlIGRhdGFiYXNlIHdpdGggYSBDbGFzcyBBIC1zaG0gZmlsZS4gVGhpcyBt
YXkgdHJpZ2dlciBhIGNyYXNoIHdoZW4gdGhlIHVzZXIgbG9ja3MgdGhlIGRldmljZS4gKCVzKSIs
IHNobUZpbGVOYW1lLmxhdGluMSgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggYTdhMjAyMWQ2ODllYTQxMGNmN2Fi
MDIxZmY5YzZjNGZlNDc0MzMxZC4uNmMzZDNhOGRmNjA4MGVhMzllYjcyZjUxY2M3ZWE3NDM0MGFj
NWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVT
eXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcApAQCAtNzksOCArNzksOCBAQCBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogCiBib29sIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewot
ICAgIFN0cmluZyB3YWxGaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsICItd2FsIl9zKTsK
LSAgICBTdHJpbmcgc2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1lLCAiLXNobSJfcyk7
CisgICAgYXV0byB3YWxGaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsICItd2FsIl9zKTsK
KyAgICBhdXRvIHNobUZpbGVOYW1lID0gbWFrZVN0cmluZyhmaWxlTmFtZSwgIi1zaG0iX3MpOwog
CiAgICAgLy8gVHJ5IHRvIGRlbGV0ZSBhbGwgdGhyZWUgZmlsZXMgd2hldGhlciBvciBub3QgdGhl
eSBhcmUgdGhlcmUuCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGM3
NWQzM2Q2ZmY4NDc2ZWZhMzJkYjg0NGU2YWY5MjI0NDY3NmNlNzkuLjQzYTE4YmNlYTAxNzk2MzBi
OTBlZWRjNjI2NDJiM2RhNzdlMGIxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0yNTUsMjMgKzI1NSwxNyBAQCB2b2lkIERhdGVU
aW1lRm9ybWF0OjpxdW90ZUFuZEFwcGVuZExpdGVyYWwoY29uc3QgU3RyaW5nJiBsaXRlcmFsLCBT
dHJpbmdCdWlsZGVyJgogICAgICAgICBidWZmZXIuYXBwZW5kKGxpdGVyYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKGxpdGVyYWwuZmluZCgnXCcnKSA9PSBub3RG
b3VuZCkgewotICAgICAgICBidWZmZXIuYXBwZW5kKCdcJycpOwotICAgICAgICBidWZmZXIuYXBw
ZW5kKGxpdGVyYWwpOwotICAgICAgICBidWZmZXIuYXBwZW5kKCdcJycpOworICAgICAgICBidWZm
ZXIuYXBwZW5kKCdcJycsIGxpdGVyYWwsICdcJycpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpdGVyYWwubGVuZ3RoKCk7ICsraSkgewog
ICAgICAgICBpZiAobGl0ZXJhbFtpXSA9PSAnXCcnKQotICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZExpdGVyYWwoIicnIik7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCInJyIpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBlc2NhcGVkID0gbGl0ZXJhbC5zdWJzdHJpbmco
aSk7Ci0gICAgICAgICAgICBlc2NhcGVkLnJlcGxhY2UoJ1wnJywgIicnIik7Ci0gICAgICAgICAg
ICBidWZmZXIuYXBwZW5kKCdcJycpOwotICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChlc2NhcGVk
KTsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJyk7CisgICAgICAgICAgICBidWZmZXIu
YXBwZW5kKCdcJycsIFN0cmluZyB7IGxpdGVyYWwuc3Vic3RyaW5nKGkpIH0ucmVwbGFjZSgnXCcn
LCAiJyciKSwgJ1wnJyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKaW5kZXggZWUx
ZmY4ZWIzZDc5ZWI3NjAyOTUwZGE5NjI0Njk0NjU1OTRkMjBiNS4uZmMyYTkyMTEwMDIwZDU5ZTQz
YTgzMGFlMzQ1NDEwMmI3Nzk3MjQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjQ0pLLmNwcApAQCAtMTA1Miw5ICsxMDUyLDkgQEAgY29uc3RleHByIHNpemVf
dCBtYXhVQ2hhcjMyRGlnaXRzID0gMTA7CiAKIHN0YXRpYyB2b2lkIGFwcGVuZERlY2ltYWwoVUNo
YXIzMiBjLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKIHsKLSAgICB1aW50OF90IGJ1ZmZlclsx
MF07Ci0gICAgV1RGOjp3cml0ZUludGVnZXJUb0J1ZmZlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YyksIGJ1ZmZlcik7Ci0gICAgcmVzdWx0LmFwcGVuZChidWZmZXIsIFdURjo6bGVuZ3RoT2ZJbnRl
Z2VyQXNTdHJpbmcoYykpOworICAgIHVpbnQ4X3QgYnVmZmVyW2xlbmd0aE9mSW50ZWdlckFzU3Ry
aW5nKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUoYyk+OjptYXgoKSldOworICAgIHdyaXRl
SW50ZWdlclRvQnVmZmVyKGMsIGJ1ZmZlcik7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIsIGxl
bmd0aE9mSW50ZWdlckFzU3RyaW5nKGMpKTsKIH0KIAogc3RhdGljIHZvaWQgdXJsRW5jb2RlZEVu
dGl0eVVuZW5jb2RhYmxlSGFuZGxlcihVQ2hhcjMyIGMsIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMTdiMmM4MzRk
MGVjZWEyZGMyMjI1MjAwOTgwY2EwNGI3OWEwOGFmMC4uZTgwZDVlNzAzMmNjYWUyZmYyNDBhNGQx
YjE5NjNkNGU1N2EzZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC04MTMsMTMgKzgxMyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyTGlz
dHNJZk5lZWRlZCgpCiAKIFN0cmluZyBSZW5kZXJMYXllcjo6bmFtZSgpIGNvbnN0CiB7Ci0gICAg
U3RyaW5nQnVpbGRlciBuYW1lOwotICAgIG5hbWUuYXBwZW5kKHJlbmRlcmVyKCkuZGVzY3JpcHRp
b24oKSk7Ci0KLSAgICBpZiAoaXNSZWZsZWN0aW9uKCkpCi0gICAgICAgIG5hbWUuYXBwZW5kTGl0
ZXJhbCgiIChyZWZsZWN0aW9uKSIpOwotCi0gICAgcmV0dXJuIG5hbWUudG9TdHJpbmcoKTsKKyAg
ICBpZiAoIWlzUmVmbGVjdGlvbigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS5kZWJ1Z0Rl
c2NyaXB0aW9uKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocmVuZGVyZXIoKS5kZWJ1Z0Rlc2Ny
aXB0aW9uKCksICIgKHJlZmxlY3Rpb24pIik7CiB9CiAKIFJlbmRlckxheWVyQ29tcG9zaXRvciYg
UmVuZGVyTGF5ZXI6OmNvbXBvc2l0b3IoKSBjb25zdApAQCAtMjc1MywzMiArMjc0OSwyMSBAQCBS
ZW5kZXJMYXllcjo6T3ZlcmZsb3dDb250cm9sUmVjdHMgUmVuZGVyTGF5ZXI6Om92ZXJmbG93Q29u
dHJvbHNSZWN0cygpIGNvbnN0CiAKIFN0cmluZyBSZW5kZXJMYXllcjo6ZGVidWdEZXNjcmlwdGlv
bigpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCJSZW5kZXJMYXllciAweCJfcywgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSwgTG93ZXJjYXNlKSwgJyAnLCBzaXplKCkud2lkdGgoKSwgJ3gnLCBzaXplKCkuaGVpZ2h0
KCkpOwotCi0gICAgaWYgKHRyYW5zZm9ybSgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGhh
cyB0cmFuc2Zvcm0iX3MpOwotCi0gICAgaWYgKGhhc0ZpbHRlcigpKQotICAgICAgICBidWlsZGVy
LmFwcGVuZCgiIGhhcyBmaWx0ZXIiX3MpOwotCi0gICAgaWYgKGhhc0JhY2tkcm9wRmlsdGVyKCkp
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaGFzIGJhY2tkcm9wIGZpbHRlciJfcyk7Ci0KLSAg
ICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaGFzIGJsZW5k
IG1vZGUiX3MpOwotCi0gICAgaWYgKGlzb2xhdGVzQmxlbmRpbmcoKSkKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiBpc29sYXRlcyBibGVuZGluZyJfcyk7Ci0KKyAgICBTdHJpbmcgY29tcG9zaXRl
ZERlc2NyaXB0aW9uOwogICAgIGlmIChpc0NvbXBvc2l0ZWQoKSkgewotICAgICAgICAvLyBPaCBm
b3IgYmV0dGVyIFN0cmluZ0J1aWxkZXIvVGV4dFN0cmVhbSBpbnRlZ3JhdGlvbi4KICAgICAgICAg
VGV4dFN0cmVhbSBzdHJlYW07CiAgICAgICAgIHN0cmVhbSA8PCAiICIgPDwgKmJhY2tpbmcoKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyZWFtLnJlbGVhc2UoKSk7CisgICAgICAgIGNvbXBv
c2l0ZWREZXNjcmlwdGlvbiA9IHN0cmVhbS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiUmVuZGVyTGF5ZXIg
MHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBMb3dlcmNhc2UpLAor
ICAgICAgICAnICcsIHNpemUoKS53aWR0aCgpLCAneCcsIHNpemUoKS5oZWlnaHQoKSwKKyAgICAg
ICAgdHJhbnNmb3JtKCkgPyAiIGhhcyB0cmFuc2Zvcm0iIDogIiIsCisgICAgICAgIGhhc0ZpbHRl
cigpID8gIiBoYXMgZmlsdGVyIiA6ICIiLAorICAgICAgICBoYXNCYWNrZHJvcEZpbHRlcigpID8g
IiBoYXMgYmFja2Ryb3AgZmlsdGVyIiA6ICIiLAorICAgICAgICBoYXNCbGVuZE1vZGUoKSA/ICIg
aGFzIGJsZW5kIG1vZGUiIDogIiIsCisgICAgICAgIGlzb2xhdGVzQmxlbmRpbmcoKSA/ICIgaXNv
bGF0ZXMgYmxlbmRpbmciIDogIiIsCisgICAgICAgIGNvbXBvc2l0ZWREZXNjcmlwdGlvbik7CiB9
CiAKIEludFNpemUgUmVuZGVyTGF5ZXI6Om9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50
UG9pbnQmIGxvY2FsUG9pbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDRlNzc4NDU5OTIzMTQyYTg5NmE5OTdl
YjdlY2JjOTViYjhiZThkOGUuLjMzNjgxNmExMDg3NDI5NjQ4ZmE3Mjg5OThiMzcyNTNhNTcwYTQ0
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC0xNTQxLDQ3ICsxNTQxLDM4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpsb2dMYXllckluZm8oY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBjaGFyKiBw
CiAKICAgICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpIHx8
IGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSB8fCBiYWNraW5nLT5mb3Jl
Z3JvdW5kTGF5ZXIoKSB8fCBiYWNraW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewogICAgICAgICBs
b2dTdHJpbmcuYXBwZW5kKCdbJyk7Ci0gICAgICAgIGJvb2wgcHJlcGVuZFNwYWNlID0gZmFsc2U7
CisKKyAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiI7CiAgICAgICAgIGlmIChiYWNraW5n
LT5ncmFwaGljc0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkpIHsKLSAgICAgICAgICAgIGxvZ1N0
cmluZy5hcHBlbmRMaXRlcmFsKCJvcGFxdWUiKTsKLSAgICAgICAgICAgIHByZXBlbmRTcGFjZSA9
IHRydWU7CisgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCJvcGFxdWUiKTsKKyAgICAgICAg
ICAgIHByZWZpeCA9ICIsICI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYmFja2luZy0+cGFp
bnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpKSB7Ci0gICAgICAgICAgICBpZiAocHJlcGVuZFNw
YWNlKQotICAgICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
ICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoInBhaW50cyBpbnRvIGFuY2VzdG9yIik7
Ci0gICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOworICAgICAgICAgICAgbG9nU3RyaW5n
LmFwcGVuZChwcmVmaXgsICJwYWludHMgaW50byBhbmNlc3RvciIpOworICAgICAgICAgICAgcHJl
Zml4ID0gIiwgIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChiYWNraW5nLT5mb3JlZ3JvdW5k
TGF5ZXIoKSB8fCBiYWNraW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewotICAgICAgICAgICAgaWYg
KHByZXBlbmRTcGFjZSkKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKICAgICAgICAgICAgIGlmIChiYWNraW5nLT5mb3JlZ3JvdW5kTGF5ZXIoKSAmJiBiYWNr
aW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBl
bmRMaXRlcmFsKCIrZm9yZWdyb3VuZCtiYWNrZ3JvdW5kIik7Ci0gICAgICAgICAgICAgICAgcHJl
cGVuZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKHByZWZp
eCwgIitmb3JlZ3JvdW5kK2JhY2tncm91bmQiKTsKKyAgICAgICAgICAgICAgICBwcmVmaXggPSAi
LCAiOwogICAgICAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nLT5mb3JlZ3JvdW5kTGF5ZXIoKSkg
ewotICAgICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIrZm9yZWdyb3VuZCIp
OwotICAgICAgICAgICAgICAgIHByZXBlbmRTcGFjZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
bG9nU3RyaW5nLmFwcGVuZChwcmVmaXgsICIrZm9yZWdyb3VuZCIpOworICAgICAgICAgICAgICAg
IHByZWZpeCA9ICIsICI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxv
Z1N0cmluZy5hcHBlbmRMaXRlcmFsKCIrYmFja2dyb3VuZCIpOwotICAgICAgICAgICAgICAgIHBy
ZXBlbmRTcGFjZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZChwcmVm
aXgsICIrYmFja2dyb3VuZCIpOworICAgICAgICAgICAgICAgIHByZWZpeCA9ICIsICI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChiYWNraW5nLT5wYWlu
dHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAocHJlcGVuZFNw
YWNlKQotICAgICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
ICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoInRleHR5Iik7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGJhY2tpbmctPnBhaW50c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0KCkpCisgICAg
ICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKHByZWZpeCwgInRleHR5Iik7CiAKLSAgICAgICAgbG9n
U3RyaW5nLmFwcGVuZExpdGVyYWwoIl0gIik7CisgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoIl0g
Iik7CiAgICAgfQogCi0gICAgbG9nU3RyaW5nLmFwcGVuZChsYXllci5uYW1lKCkpOwotCi0gICAg
bG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgIGxvZ1N0cmluZy5hcHBlbmQocGhh
c2UpOworICAgIGxvZ1N0cmluZy5hcHBlbmQobGF5ZXIubmFtZSgpLCAiIC0gIiwgcGhhc2UpOwog
CiAgICAgTE9HKENvbXBvc2l0aW5nLCAiJXMiLCBsb2dTdHJpbmcudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAppbmRleCA3MjQ3NzRhZjNhYWJjMDczYzEwOWI2YmQ4NDEwMGUyNjU4MWYxYzZjLi44MTcw
MmY0NWQ0YzE2YzA5YjZiNTc1NDViOGY5MWQxZGI2ZjVlZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0xNTUsMTkgKzE1NSwxNiBAQCBT
dHJpbmcgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKFN0cmluZ1ZpZXcgcykKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpICE9IHMubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBVQ2hhciBj
ID0gc1tpXTsKICAgICAgICAgaWYgKGMgPT0gJ1xcJykgewotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIlxcXFwiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIlxcXFwiKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjID09ICciJykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIlxcXCIiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIlxcXCIiKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjID09ICdcbicgfHwgYyA9PSBub0JyZWFrU3BhY2UpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYg
KGMgPj0gMHgyMCAmJiBjIDwgMHg3RikKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMp
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIlxceHsiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleChjKSk7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIlxceHsiLCBoZXgoYyksICd9
Jyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmVzdWx0LmFwcGVuZCgnIicpOwpAQCAtODI0LDEx
ICs4MjEsMTEgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICBm
b3IgKE5vZGUqIG4gPSBub2RlOyBuOyBuID0gcGFyZW50KSB7CiAgICAgICAgIHBhcmVudCA9IG4t
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgaWYgKG4gIT0gbm9kZSkKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCIgb2YgIik7CiAgICAgICAgIGlmIChwYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChi
b2R5ICYmIG4gPT0gYm9keSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hh
dCBvZmZzZXQgYm9keSBtYXkgYmUgaW4gdGhlIGRvY3VtZW50LgotICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJib2R5Iik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiYm9keSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKQpAQCAtODM2LDcgKzgzMyw3IEBAIHN0YXRpYyBT
dHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiY2hpbGQgIiwgbi0+Y29tcHV0ZU5vZGVJbmRleCgpLCAi
IHsiLCBnZXRUYWdOYW1lKG4pLCAnfScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJkb2N1bWVudCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiZG9jdW1lbnQiKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAppbmRleCA0ODNiZjY5
ZWVlMjhjZWMxMWNjNWJiYzBjMWFmOWZmZjA2YjVhZDczLi43YWE3MmJkOGFmNmNlZmRlY2UwMGNk
YzM4MjJiZGE3ZjlkNDM2YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFN0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5n
QnVpbGRlci5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kUG9pbnQoU3Ry
aW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB2b2lk
IFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9p
bnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFi
c29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJNICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJNICIpOwogICAgIGVsc2UK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIm0gIik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIm0gIik7CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1
aWxkZXIsIHRhcmdldFBvaW50KTsKIH0KQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBTVkdQYXRoU3Ry
aW5nQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29sLCBQ
YXRoQ29vcmQKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUbyhjb25zdCBGbG9hdFBv
aW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1v
ZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkwgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIkwgIik7CiAg
ICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibCAiKTsKKyAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgibCAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1f
c3RyaW5nQnVpbGRlciwgdGFyZ2V0UG9pbnQpOwogfQpAQCAtODksOSArODksOSBAQCB2b2lkIFNW
R1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IFBhdGhDb29yZGluYXRlTQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvSG9yaXpv
bnRhbChmbG9hdCB4LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9
PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiSCAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiSCAiKTsKICAgICBl
bHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJoICIpOworICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJoICIpOwogCiAgICAgYXBwZW5kTnVtYmVyKG1fc3Ry
aW5nQnVpbGRlciwgeCk7CiB9CkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1
aWxkZXI6OmxpbmVUb0hvcml6b250YWwoZmxvYXQgeCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUp
CiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbChmbG9hdCB5LCBQYXRo
Q29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5h
dGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiViAiKTsKKyAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiViAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ2ICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ2ICIpOwogCiAgICAgYXBwZW5kTnVtYmVyKG1fc3RyaW5nQnVpbGRlciwgeSk7CiB9
CkBAIC0xMDksOSArMTA5LDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvVmVy
dGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB2b2lkIFNWR1BhdGhTdHJp
bmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29v
cmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVz
KQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQyAiKTsKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiQyAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJjICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJjICIpOwogCiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCBwb2ludDEpOwog
ICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgcG9pbnQyKTsKQEAgLTEyMSw5ICsxMjEs
OSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6
Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmICht
b2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJTICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJTICIpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInMgIik7Cisg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInMgIik7CiAKICAgICBhcHBlbmRQb2ludCht
X3N0cmluZ0J1aWxkZXIsIHBvaW50Mik7CiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVy
LCB0YXJnZXRQb2ludCk7CkBAIC0xMzIsOSArMTMyLDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3Qg
RmwKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3Jk
aW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlEgIik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIlEgIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgicSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZCgicSAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgcG9pbnQxKTsKICAg
ICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHRhcmdldFBvaW50KTsKQEAgLTE0Myw5ICsx
NDMsOSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRl
cjo6Y3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwg
UGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29y
ZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlQgIik7Cisg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIlQgIik7CiAgICAgZWxzZQotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidCAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgidCAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgdGFy
Z2V0UG9pbnQpOwogfQpAQCAtMTUzLDkgKzE1Myw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxk
ZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
CiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNUbyhmbG9hdCByMSwgZmxvYXQgcjIsIGZs
b2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0
UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAo
bW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiQSAiKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhICIpOwor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJhICIpOwogCiAgICAgYXBwZW5kTnVtYmVy
KG1fc3RyaW5nQnVpbGRlciwgcjEpOwogICAgIGFwcGVuZE51bWJlcihtX3N0cmluZ0J1aWxkZXIs
IHIyKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNU
byhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRgogCiB2b2lk
IFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJaICIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIlogIik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA0MjJjZTU1ZDgxNTI2OGVhYzY3ZmIyMDVlZmRiMjI1ZGEwNWE4ZWVmLi4zYzc1
NjdjODFiYmE4MjJjNDhhYjA2ZWQyNGRlMjk2NDk4MzAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNzU5LDcgKzE3NTksNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+
IEludGVybmFsczo6ZHVtcE1hcmtlclJlY3RzKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZVN0cmlu
ZykKIAogICAgIC8vIEZJWE1FOiBVc2luZyBmaXhlZCBwcmVjaXNpb24gaGVyZSBmb3Igd2lkdGgg
YmVjYXVzZSBvZiB0ZXN0IHJlc3VsdHMgdGhhdCBjb250YWluIG51bWJlcnMgd2l0aCBzcGVjaWZp
YyBwcmVjaXNpb24uIFdvdWxkIGJlIG5pY2UgdG8gdXBkYXRlIHRoZSB0ZXN0IHJlc3VsdHMgYW5k
IG1vdmUgdG8gZGVmYXVsdCBmb3JtYXR0aW5nLgogICAgIFN0cmluZ0J1aWxkZXIgcmVjdFN0cmlu
ZzsKLSAgICByZWN0U3RyaW5nLmFwcGVuZExpdGVyYWwoIm1hcmtlciByZWN0czogIik7CisgICAg
cmVjdFN0cmluZy5hcHBlbmQoIm1hcmtlciByZWN0czogIik7CiAgICAgZm9yIChjb25zdCBhdXRv
JiByZWN0IDogcmVjdHMpCiAgICAgICAgIHJlY3RTdHJpbmcuYXBwZW5kKCcoJywgcmVjdC54KCks
ICIsICIsIHJlY3QueSgpLCAiLCAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHJl
Y3Qud2lkdGgoKSksICIsICIsIHJlY3QuaGVpZ2h0KCksICIpICIpOwogICAgIHJldHVybiByZWN0
U3RyaW5nLnRvU3RyaW5nKCk7CkBAIC00NzAxLDE4ICs0NzAxLDE4IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZE9mZnNldHMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0CiB7CiAgICAgYm9vbCBqdXN0U3RhcnRpbmcgPSB0cnVlOwogCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJ7ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJ7ICIpOwogICAgIGZv
ciAoYXV0byYgY29vcmRpbmF0ZSA6IHNuYXBPZmZzZXRzKSB7CiAgICAgICAgIGlmICghanVzdFN0
YXJ0aW5nKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGp1
c3RTdGFydGluZyA9IGZhbHNlOwogICAgICAgICBidWlsZGVyLmFwcGVuZChjb29yZGluYXRlLm9m
ZnNldC50b1Vuc2lnbmVkKCkpOwogICAgICAgICBpZiAoY29vcmRpbmF0ZS5zdG9wID09IFNjcm9s
bFNuYXBTdG9wOjpBbHdheXMpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAo
YWx3YXlzKSIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAoYWx3YXlzKSIpOwogCiAg
ICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH0iKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgiIH0iKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC00NzMzLDE1ICs0NzMzLDE0IEBA
IEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50
JiBlbGVtZW50KQogICAgIGF1dG8qIG9mZnNldEluZm8gPSBzY3JvbGxhYmxlQXJlYS0+c25hcE9m
ZnNldEluZm8oKTsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAob2Zmc2V0SW5m
byAmJiAhb2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiaG9yaXpvbnRhbCA9ICIpOworICAgICAgICByZXN1
bHQuYXBwZW5kKCJob3Jpem9udGFsID0gIik7CiAgICAgICAgIGFwcGVuZE9mZnNldHMocmVzdWx0
LCBvZmZzZXRJbmZvLT5ob3Jpem9udGFsU25hcE9mZnNldHMpOwogICAgIH0KIAogICAgIGlmIChv
ZmZzZXRJbmZvICYmICFvZmZzZXRJbmZvLT52ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIiwgIik7Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInZlcnRpY2Fs
ID0gIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgICByZXN1bHQu
YXBwZW5kKCJ2ZXJ0aWNhbCA9ICIpOwogICAgICAgICBhcHBlbmRPZmZzZXRzKHJlc3VsdCwgb2Zm
c2V0SW5mby0+dmVydGljYWxTbmFwT2Zmc2V0cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggN2RiZmNjYjQwYWFkMTczY2Rk
NDk2YWU3OGEwMTFkNWFkYmExZGYyNi4uOGJlODA4MWE3N2E3MzEzZDAxZTk3NTAxNzQ4YzBlZDg2
NWU0MTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcApAQCAtMTYyLDE2ICsxNjIsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVz
dD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QKIFJlc291
cmNlRXJyb3IgV29ya2VyU2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQogewogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9
IDIgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkKLSAgICAgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlJl
c3BvbnNlIGlzIG5vdCAyeHgiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAg
ICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJs
KCksICJSZXNwb25zZSBpcyBub3QgMnh4Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFs
IH07CiAKICAgICBpZiAoIWlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihyZXNwb25zZSkpIHsKLSAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYXMgc2Ny
aXB0IGJlY2F1c2UgXCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmXCIgd2FzIGdpdmVu
IGFuZCBpdHMgQ29udGVudC1UeXBlIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7Ci0gICAg
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
cmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6Okdl
bmVyYWwgfTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBl
eGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiIGFzIHNjcmlwdCBiZWNhdXNlIFwiWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZlwi
IHdhcyBnaXZlbiBhbmQgaXRzIENvbnRlbnQtVHlwZSBpcyBub3QgYSBzY3JpcHQgTUlNRSB0eXBl
LiIpOworICAgICAgICByZXR1cm4geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNw
b25zZS51cmwoKSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJh
bCB9OwogICAgIH0KIAogICAgIGlmIChzaG91bGRCbG9ja1Jlc3BvbnNlRHVlVG9NSU1FVHlwZShy
ZXNwb25zZSwgZGVzdGluYXRpb24pKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0
cmluZygiUmVmdXNlZCB0byBleGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNlICIsIHJlc3BvbnNlLm1pbWVU
eXBlKCksICIgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsKLSAgICAgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwo
KSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OworICAg
ICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVz
cG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0
IGJlY2F1c2UgIiwgcmVzcG9uc2UubWltZVR5cGUoKSwgIiBpcyBub3QgYSBzY3JpcHQgTUlNRSB0
eXBlLiIpOworICAgICAgICByZXR1cm4geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBy
ZXNwb25zZS51cmwoKSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCB9OwogICAgIH0KIAogICAgIHJldHVybiB7IH07CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUVycm9yKCkKIHsKICAgICBtX2ZhaWxlZCA9IHRy
dWU7CiAgICAgaWYgKG1fZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIG1fZXJyb3IgPSBSZXNvdXJj
ZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksICJGYWlsZWQgdG8g
bG9hZCBzY3JpcHQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgICAgIG1f
ZXJyb3IgPSB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCAiRmFpbGVkIHRv
IGxvYWQgc2NyaXB0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OwogICAgIG5vdGlm
eUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDM5NmY1Yzc3NTIyZDUyZTdhNTEwMmJmMmVjNjkz
MzBhMWUyMzdlYzkuLjU1N2Q3ZjI2OTM5NzE3ZjYxNjg1YWI1MzM0MWU2ZGViYzE1OTkzOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcApAQCAtMTAzMCwyMCArMTAzMCwxMSBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9t
YWluTGlzdChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluTGlzdCkKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgCiAgICAgZm9yIChhdXRvJiB0b3BGcmFt
ZVJlc291cmNlIDogZG9tYWluTGlzdCkgewotICAgICAgICAKICAgICAgICAgLy8gSW5zZXJ0IHF1
ZXJ5IHdpbGwgZmFpbCBpZiB0b3AgZnJhbWUgZG9tYWluIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBk
YXRhYmFzZQotICAgICAgICBhdXRvIHJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHRvcEZyYW1lUmVzb3VyY2UpOwotICAgICAgICBpZiAocmVzdWx0
LnNlY29uZCkgewotICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnIicpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodG9wRnJhbWVSZXNvdXJj
ZS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgICAgICB9
CisgICAgICAgIGlmIChlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bih0b3BGcmFtZVJlc291cmNlKS5zZWNvbmQpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChi
dWlsZGVyLmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgJyInLCB0b3BGcmFtZVJlc291cmNlLnN0cmlu
ZygpLCAnIicpOwogICAgIH0KLQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
QEAgLTEyNjAsMTQgKzEyNTEsOCBAQCBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdAogc3RhdGljIFN0
cmluZyBkb21haW5zVG9TdHJpbmcoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbnMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoY29uc3QgYXV0
byYgZG9tYWluTmFtZSA6IGRvbWFpbnMpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluTmFtZS5zdHJp
bmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgfQotCisgICAgZm9yIChj
b25zdCBhdXRvJiBkb21haW5OYW1lIDogZG9tYWlucykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
YnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsICciJywgZG9tYWluTmFtZS5zdHJpbmcoKSwg
JyInKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkBAIC0xMzM2LDExICsx
MzIxLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KIHN0YXRpYyBTdHJpbmcg
YnVpbGRMaXN0KGNvbnN0IFdURjo6SXRlcmF0b3JSYW5nZTxJdGVyYXRvclR5cGU+JiB2YWx1ZXMp
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byBkb21haW5JRCA6
IHZhbHVlcykgewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChkb21h
aW5JRCk7Ci0gICAgfQorICAgIGZvciAoYXV0byBkb21haW5JRCA6IHZhbHVlcykKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbklEKTsK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkBAIC0xMzg1LDEyICsxMzY3LDgg
QEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgZm9yIChhdXRvIHZhbHVlIDogcmVzdWx0cy5rZXlzKCkpIHsKLSAgICAgICAg
aWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwotICAgIH0KLQorICAgIGZv
ciAoYXV0byB2YWx1ZSA6IHJlc3VsdHMua2V5cygpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChi
dWlsZGVyLmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgdmFsdWUpOwogICAgIGF1dG8gZG9tYWluSURz
T2ZJbnRlcmVzdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAogICAgIGF1dG8gc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIENPVU5UKHRvcEZy
YW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBC
WSBzdWJyZXNvdXJjZURvbWFpbklEIikpOwpAQCAtMTk1MiwxNyArMTkzMCwxNSBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhDb21wbGV0aW9uSAogICAgIHN0ZDo6c29ydChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMu
ZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJSZXNvdXJjZSBsb2FkIHN0YXRp
c3RpY3M6XG5cbiIpOworICAgIHJlc3VsdC5hcHBlbmQoIlJlc291cmNlIGxvYWQgc3RhdGlzdGlj
czpcblxuIik7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQogICAgICAgICByZXNv
dXJjZVRvU3RyaW5nKHJlc3VsdCwgZG9tYWluKTsKIAogICAgIGF1dG8gdGhpcmRQYXJ0eURhdGEg
PSBhZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoKTsKICAgICBpZiAoIXRoaXJkUGFydHlEYXRhLmlz
RW1wdHkoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKCJcbklUUCBEYXRhOlxuIik7Ci0gICAg
ICAgIGZvciAoYXV0byB0aGlyZFBhcnR5IDogdGhpcmRQYXJ0eURhdGEpIHsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQodGhpcmRQYXJ0eS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvIHRoaXJkUGFydHkg
OiB0aGlyZFBhcnR5RGF0YSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcmRQYXJ0eS50
b1N0cmluZygpLCAnXG4nKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LnRv
U3RyaW5nKCkpOwogfQpAQCAtMjc0OCwxNyArMjcyNCwxMiBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppc0NvcnJlY3RTdWJTdGF0aXN0aWNzQ291bnQoY29uc3Qg
UmVnaQogCiBzdGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKIHsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiAgICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChsYWJlbCk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZsYWcgPyAiWWVzIiA6ICJO
byIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgIiwgbGFiZWwsICI6ICIsIGZsYWcgPyAiWWVz
IiA6ICJObyIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmROZXh0RW50cnkoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgU3RyaW5nIGVudHJ5KQorc3RhdGljIHZvaWQgYXBwZW5kTmV4dEVudHJ5KFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgZW50cnkpCiB7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgICAgICAgICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGVudHJ5KTsK
LSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICAgICAi
LCBlbnRyeSwgJ1xuJyk7CiB9CiAKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkIGRvbWFpbklEKSBj
b25zdApAQCAtMjgyMSw5ICsyNzkyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJgogICAgIGlm
IChkYXRhLT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHRhYmxl
TmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6XG4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiICAgICIsIHRhYmxlTmFtZSwgIjpcbiIpOwogICAgIAogICAgIGF1dG8gcmVzdWx0ID0g
Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKGRhdGEtPmNvbHVtbkludCgwKSk7CiAgICAgYXBw
ZW5kTmV4dEVudHJ5KGJ1aWxkZXIsIHJlc3VsdCk7CkBAIC0yODUwLDE4ICsyODE5LDE2IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmco
U3RyaW5nQnVpbGRlciYgYnVpbGRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQoZG9tYWluKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiUmVnaXN0cmFibGUgZG9tYWluOiAiLCBkb21haW4sICdcbicpOwogICAgIAogICAgIC8v
IFVzZXIgaW50ZXJhY3Rpb24KICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50
ZXJhY3Rpb24iLCBtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1u
SW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
bjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
OiAiKTsKICAgICBpZiAoaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFNlY29uZHMobV9nZXRS
ZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkRvdWJsZShNb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZUluZGV4KSkpKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIndpdGhpbiAyNCBob3VycyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgid2l0aGluIDI0
IGhvdXJzIik7CiAgICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0xIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItMSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiLCBtX2dldFJlc291
cmNlRGF0YUJ5RG9tYWluTmFtZVN0YXRlbWVudC0+Y29sdW1uSW50KEdyYW5kZmF0aGVyZWRJbmRl
eCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpAQCAtMzQxNCwxNSArMzM4MSwxNSBAQCBT
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9T
dHJpbmcoV2ViQ29yZTo6U1FMaXRlUwogICAgICAgICBpZiAoYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSAhPSAtMSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuQXR0cmlidXRpb24gdHJp
Z2dlciBkYXRhOiAiLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCAiXG5BdHRyaWJ1dGlvbiBwcmlv
cml0eTogIiwgcHJpb3JpdHksICJcbkF0dHJpYnV0aW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDog
Iik7CiAgICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lVG9TZW5kID09IC0xKQotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTm90IHNldCIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJOb3Qgc2V0Iik7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
ZWFybGllc3RUaW1lVG9TZW5kKSAtIFdhbGxUaW1lOjpub3coKTsKICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgoc2Vjb25kc1VudGlsU2VuZCA+PSAyNF9oICYmIHNlY29uZHNVbnRpbFNl
bmQgPD0gNDhfaCkgPyAiV2l0aGluIDI0LTQ4IGhvdXJzIiA6ICJPdXRzaWRlIDI0LTQ4IGhvdXJz
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcbk5vIGF0dHJpYnV0aW9u
IHRyaWdnZXIgZGF0YS4iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuTm8gYXR0cmlidXRp
b24gdHJpZ2dlciBkYXRhLiIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM0NTAsOSArMzQxNyw4IEBAIFN0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b1N0cmluZygpCiAgICAgdW5zaWduZWQgdW5hdHRyaWJ1dGVkTnVtYmVyID0gMDsKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgd2hpbGUgKHVuYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVu
dC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaWYgKCF1bmF0dHJpYnV0ZWROdW1i
ZXIpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlVuYXR0cmlidXRlZCBQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50czoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0dHJpYnV0ZWROdW1iZXIsICdc
bicsCisgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IHVuYXR0cmlidXRlZE51bWJlciA/ICIi
IDogIlVuYXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoiOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcmVmaXgsICJcbldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
ICIsICsrdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAogICAgICAgICAgICAgYXR0cmlidXRpb25U
b1N0cmluZyh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCksIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpVbmF0dHJpYnV0ZWQpKTsKICAgICB9CiAKQEAgLTM0
NjUsMTMgKzM0MzEsOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcoKQogCiAgICAgdW5zaWduZWQgYXR0
cmlidXRlZE51bWJlciA9IDA7CiAgICAgd2hpbGUgKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGlmICghYXR0cmlidXRlZE51bWJlcikg
ewotICAgICAgICAgICAgaWYgKHVuYXR0cmlidXRlZE51bWJlcikKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
QXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czpcbiIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgiV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVt
YmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAorICAgICAgICBpZiAoIWF0dHJpYnV0ZWRO
dW1iZXIpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh1bmF0dHJpYnV0ZWROdW1iZXIgPyAi
XG4iIDogIiIsICJBdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAi
LCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1iZXIsICdcbicsCiAgICAgICAg
ICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKGF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQuZ2V0KCks
IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKSk7CiAg
ICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDAxODRkMmM4ZWYxOGFj
Yjc4OWE4MGQ2YzQ5NzE3ODEzNDRiNGE1MTEuLjYwYzY2MjRlMjk1NGE3OGM5NGI5OTUxNThiYzI1
ZWUyZGE5OWVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25I
YW4KICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOlxuXG4iKTsKKyAgICByZXN1bHQuYXBw
ZW5kKCJSZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3M6XG5cbiIpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHNvcnRlZE1hcEVudHJpZXM7CiAgICAgZm9yIChhdXRvJiBtYXBFbnRyeSA6IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLnZhbHVlcygpKQogICAgICAgICBzb3J0ZWRNYXBFbnRyaWVzLmFwcGVuZCht
YXBFbnRyeS0+dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IGNiMzFjZmNmNDVhMDdmNmJiYjRkMzFmYmYzYjk1YjQ4YTRmNTM3NGIu
LjQ1MDBiODViNmY5NjkyZjI4YTAxNWVhMWRhY2RjNGExNzVlNGE5OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC01NCwzNSArNTQsMjAgQEAgY29u
c3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NQcm9jZXNzaW5nSW50ZXJ2YWwgeyA1X3Mg
fTsKIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mIGRvbWFpbnMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZv
ciAoYXV0byYgZG9tYWluIDogZG9tYWlucykgewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0
eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5nKCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGRv
bWFpbiA6IGRvbWFpbnMpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgp
ID8gIiIgOiAiLCAiLCBkb21haW4uc3RyaW5nKCkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiBkb21haW5zVG9SZW1v
dmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNp
dGVEYXRhRm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IpIHsKLSAgICAgICAgaWYgKCFi
dWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGRhdGEpIik7Ci0gICAgfQotICAgIGZvciAoYXV0byYg
ZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFpbnNU
b0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcikgewotICAgICAgICBpZiAoIWJ1aWxkZXIu
aXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5nKCkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIihhbGwgYnV0IEh0dHBPbmx5IGNvb2tpZXMpIik7Ci0gICAgfQotICAgIGZv
ciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
LmRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKSB7Ci0gICAgICAgIGlm
ICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmcoKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGFsbCBidXQgY29va2llcykiKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9SZW1vdmVPclJlc3RyaWN0V2Vic2l0ZURhdGFG
b3IuZG9tYWluc1RvRGVsZXRlQWxsQ29va2llc0ZvcikKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
YnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbi5zdHJpbmcoKSwgIihhbGwgZGF0
YSkiKTsKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCBkb21h
aW4uc3RyaW5nKCksICIoYWxsIGJ1dCBIdHRwT25seSBjb29raWVzKSIpOworICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yKQorICAgICAgICBidWlsZGVyLmFw
cGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgZG9tYWluLnN0cmluZygpLCAiKGFs
bCBidXQgY29va2llcykiKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkBA
IC05Myw3ICs3OCw2IEBAIE9wZXJhdGluZ0RhdGUgT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1l
KFdhbGxUaW1lIHRpbWUpCiAgICAgaW50IHllYXJEYXkgPSBkYXlJblllYXIobXMsIHllYXIpOwog
ICAgIGludCBtb250aCA9IG1vbnRoRnJvbURheUluWWVhcih5ZWFyRGF5LCBpc0xlYXBZZWFyKHll
YXIpKTsKICAgICBpbnQgbW9udGhEYXkgPSBkYXlJbk1vbnRoRnJvbURheUluWWVhcih5ZWFyRGF5
LCBpc0xlYXBZZWFyKHllYXIpKTsKLQogICAgIHJldHVybiBPcGVyYXRpbmdEYXRlIHsgeWVhciwg
bW9udGgsIG1vbnRoRGF5IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZTQzY2U0MjJiYzFjMmViMzE5NjU3YjJmOTFkZGFkYWJl
NWY5Y2VjNS4uZDQxYWI0ODMzODlmZmMwZmEyYWJlYWRlYTY0NmY3NzliODY3NmRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE4OCw2
ICsxODgsMTEgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3Rv
cmUpOwogfQogCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Np
b24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIGlzRXBoZW1lcmFsKSk7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0xNjc2LDYgKzE2ODEsNzkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Om1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHAKICAgICB9KTsKIH0K
IAorU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHk6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFr
ZVN0cmluZygiSGFzIGJlZW4gZ3JhbnRlZCBzdG9yYWdlIGFjY2VzcyB1bmRlciAiLCBmaXJzdFBh
cnR5RG9tYWluLnN0cmluZygpLCAiOiAiLCBzdG9yYWdlQWNjZXNzR3JhbnRlZCA/ICcxJyA6ICcw
JywgIjsgSGFzIGJlZW4gc2VlbiB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAi
IGluIHRoZSBsYXN0IDI0IGhvdXJzOiAiLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKSAtIHRpbWVMYXN0VXBkYXRlZCA8IDI0X2ggPyAnMScgOiAnMCcpOworfQorCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHk6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBmaXJzdFBhcnR5RG9tYWluOworICAgIGVuY29kZXIgPDwgc3RvcmFnZUFjY2Vzc0dy
YW50ZWQ7CisgICAgZW5jb2RlciA8PCB0aW1lTGFzdFVwZGF0ZWQ7Cit9CisKK2F1dG8gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8VGhpcmRQYXJ0
eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+Cit7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRlY29kZWREb21haW47CisgICAgZGVjb2RlciA+PiBkZWNvZGVkRG9t
YWluOworICAgIGlmICghZGVjb2RlZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGRlY29kZWRTdG9yYWdlQWNjZXNzOworICAgIGRlY29k
ZXIgPj4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2Vz
cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFNlY29uZHM+
IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CisgICAgZGVjb2RlciA+PiBkZWNvZGVkVGltZUxhc3RV
cGRhdGVkOworICAgIGlmICghZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkRG9tYWluKSwg
V1RGTW92ZSgqZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKCpkZWNvZGVkVGltZUxhc3RV
cGRhdGVkKSB9fTsKK30KKworYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpvcGVyYXRvcj09KGNvbnN0IFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4gZmlyc3RQYXJ0eURvbWFpbiA9PSBvdGhlci5maXJzdFBhcnR5RG9tYWluICYmIHN0b3JhZ2VB
Y2Nlc3NHcmFudGVkID09IG90aGVyLnN0b3JhZ2VBY2Nlc3NHcmFudGVkOworfQorCitTdHJpbmcg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6dG9TdHJpbmco
KSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKyAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiVGhpcmQgUGFydHkgUmVnaXN0cmFibGUgRG9tYWluOiAiLCB0aGlyZFBh
cnR5RG9tYWluLnN0cmluZygpLCAiXG4gICAgeyIpOworICAgIGZvciAoYXV0byBmaXJzdFBhcnR5
IDogdW5kZXJGaXJzdFBhcnRpZXMpCisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ7ICIs
IGZpcnN0UGFydHkudG9TdHJpbmcoKSwgIiB9LCIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCd9Jyk7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eURv
bWFpbjsKKyAgICBlbmNvZGVyIDw8IHVuZGVyRmlyc3RQYXJ0aWVzOworfQorCithdXRvIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhPgoreworICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOworICAgIGRlY29k
ZXIgPj4gZGVjb2RlZERvbWFpbjsKKyAgICBpZiAoIWRlY29kZWREb21haW4pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOworICAgIGRlY29kZXIg
Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVj
b2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMpIH19OworfQorCitib29s
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6Om9wZXJhdG9y
PChjb25zdCBUaGlyZFBhcnR5RGF0YSAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHVuZGVy
Rmlyc3RQYXJ0aWVzLnNpemUoKSA8IG90aGVyLnVuZGVyRmlyc3RQYXJ0aWVzLnNpemUoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDk2M2VhNDczZDMyODg5NzY2NWFmMmU4OTk5
N2ViY2QyYWI2YjVkMjQuLjdhYTFhMDdhZmMzMjE3NzMxY2E5OTQxMGEyOTAzYTQ2ZDRiMjlmMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTEx
MSwxMDEgKzExMSwzNCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Njb3BlID0g
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Njb3BlOwogICAgIHVzaW5nIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmVzdWx0ID0gV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ7CiAKLSAgICBz
dGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdvcmtT
ZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1l
cmFsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOwotICAgIH0KKyAg
ICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVt
ZXJhbCk7CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKLXN0cnVj
dCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7Ci0gICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbjsKLSAgICBib29sIHN0b3JhZ2VBY2Nlc3NH
cmFudGVkOwotICAgIFNlY29uZHMgdGltZUxhc3RVcGRhdGVkOwotCi0gICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJIYXMgYmVlbiBn
cmFudGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCks
ICI6ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8gJzEnIDogJzAnLCAiOyBIYXMgYmVlbiBzZWVu
IHVuZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICIgaW4gdGhlIGxhc3QgMjQgaG91
cnM6ICIsIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gdGltZUxhc3RVcGRh
dGVkIDwgMjRfaCA/ICcxJyA6ICcwJyk7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBh
cnR5RG9tYWluOwotICAgICAgICBlbmNvZGVyIDw8IHN0b3JhZ2VBY2Nlc3NHcmFudGVkOwotICAg
ICAgICBlbmNvZGVyIDw8IHRpbWVMYXN0VXBkYXRlZDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgT3B0
aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCi0gICAgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKLSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkRG9t
YWluOwotICAgICAgICBpZiAoIWRlY29kZWREb21haW4pCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGRlY29kZWRTdG9yYWdlQWNjZXNz
OwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRTdG9yYWdlQWNjZXNzOwotICAgICAgICBpZiAo
IWRlY29kZWRTdG9yYWdlQWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IGRlY29kZWRUaW1lTGFzdFVwZGF0
ZWQ7Ci0gICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsKLSAgICAgICAg
aWYgKCFkZWNvZGVkVGltZUxhc3RVcGRhdGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkRG9tYWlu
KSwgV1RGTW92ZSgqZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKCpkZWNvZGVkVGltZUxh
c3RVcGRhdGVkKSB9fTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oVGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgY29uc3Qgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZmlyc3RQYXJ0eURvbWFpbiA9PSBvdGhlci5maXJzdFBhcnR5RG9tYWluICYmIHN0
b3JhZ2VBY2Nlc3NHcmFudGVkID09IG90aGVyLnN0b3JhZ2VBY2Nlc3NHcmFudGVkOwotICAgIH0K
LX07CisgICAgc3RydWN0IFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IHsKKyAg
ICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbjsKKyAgICAg
ICAgYm9vbCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKKyAgICAgICAgU2Vjb25kcyB0aW1lTGFzdFVw
ZGF0ZWQ7CiAKLXN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbjsKLSAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk+IHVuZGVyRmlyc3RQYXJ0aWVzOwotCi0gICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlRoaXJkIFBhcnR5IFJlZ2lzdHJhYmxlIERv
bWFpbjogIiwgdGhpcmRQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIlxuIik7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIHsiKTsKLQotICAgICAgICBmb3IgKGF1dG8gZmly
c3RQYXJ0eSA6IHVuZGVyRmlyc3RQYXJ0aWVzKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoInsgIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChm
aXJzdFBhcnR5LnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgfSwiKTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIn0iKTsKLSAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlEb21haW47Ci0gICAgICAgIGVuY29kZXIg
PDwgdW5kZXJGaXJzdFBhcnRpZXM7Ci0gICAgfQotCi0gICAgc3RhdGljIE9wdGlvbmFsPFRoaXJk
UGFydHlEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlY29kZWREb21haW47Ci0gICAg
ICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKLSAgICAgICAgaWYgKCFkZWNvZGVkRG9tYWlu
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBkZWNvZGVkRmlyc3RQ
YXJ0aWVzOwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7Ci0gICAgICAg
IGlmICghZGVjb2RlZEZpcnN0UGFydGllcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3Zl
KCpkZWNvZGVkRmlyc3RQYXJ0aWVzKSB9fTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPChj
b25zdCBUaGlyZFBhcnR5RGF0YSAmb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
dW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpIDwgb3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgp
OwotICAgIH0KLX07CisgICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICAgICAgc3RhdGljIE9wdGlvbmFs
PFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBkZWNvZGUoSVBDOjpEZWNvZGVy
Jik7CisKKyAgICAgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgaWdub3JlcyBkaWZmZXJlbmNlcyBp
biBkZWNvZGVkVGltZUxhc3RVcGRhdGVkIGl0IHByb2JhYmx5IHNob3VsZCBiZSBhIG5hbWVkIGZ1
bmN0aW9uLCBub3Qgb3BlcmF0b3I9PS4KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5JikgY29uc3Q7CisgICAgfTsKKworICAg
IHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRoaXJkUGFydHlEb21haW47CisgICAgICAgIFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eT4gdW5kZXJGaXJzdFBhcnRpZXM7CisKKyAgICAgICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3Q7CisgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0
OworICAgICAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6OkRl
Y29kZXImKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBzb3J0cyBieSBudW1iZXIgb2YgdW5k
ZXJGaXJzdFBhcnRpZXMsIHNvIGl0IHByb2JhYmx5IHNob3VsZCBiZSBhIG5hbWVkIGZ1bmN0aW9u
LCBub3Qgb3BlcmF0b3I8LgorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUaGlyZFBhcnR5
RGF0YSYpIGNvbnN0OworICAgIH07CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggYmNiOTE3MWQ4Zjky
MWJhMjI0MzNkZmI3YTIzODczODZhYTRmMjQ4Ny4uNmExOWFjNDU4MWQ0NjlmOTQyZDk0OTc2MDc2
YjY5MjAwYzUzZmIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtMzA1LDggKzMwNSw3IEBAIHZvaWQgTmV0d29ya0xv
YWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBWYWxpCiAgICAgfQogCiAgICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6U2FtZU9yaWdpbikgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIsIHJlcXVlc3QudXJsKCkuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgZnJvbSBvcmlnaW4gIiwgbV9vcmlnaW4tPnRvU3Ry
aW5nKCksICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIpOwot
ICAgICAgICBoYW5kbGVyKGFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKFdU
Rk1vdmUobWVzc2FnZSkpKTsKKyAgICAgICAgaGFuZGxlcihhY2Nlc3NDb250cm9sRXJyb3JGb3JW
YWxpZGF0aW9uSGFuZGxlcihtYWtlU3RyaW5nKCJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAi
LCByZXF1ZXN0LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGZyb20g
b3JpZ2luICIsIG1fb3JpZ2luLT50b1N0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5k
IHBvcnRzIG11c3QgbWF0Y2guXG4iKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGMy
YzUzYWJmNWVlYjBiNzRhMWUxNTM2NTc4YzA3N2MyYjNmMTU5OWMuLjM2NGMyMzYxOGIzY2UyNWUw
YzQzYjU0YmY1Mzg1ODJhZGFiODMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NTUsMTcgKzQ1NSwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6bmV3
VGVzdGluZ1Nlc3NpbwogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFNlc3Npb24gbmFt
ZSBzaG91bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBuYW1lIHRv
IGJlIHVuZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRib3ggcnVsZXMgd29uJ3Qgd29yayAo
c2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgotICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9
IG1ha2VTdHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7Ci0KLSAg
ICBhdXRvIHNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vz
c2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KKyAgICBhdXRvIHNlc3Npb24gPSBX
ZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24obWFrZVN0cmluZygiV2ViS2l0IFRl
c3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZTsKICAgICBp
ZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkpIHsKICAgICAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAgICAgICBpZiAoc2Vzc2lvbikKICAgICAgICAg
ICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tp
ZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KLQog
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vz
c2lvbklELCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlm
IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggNmRjMzI4ZWYzNzdj
NDVjZTEwMmFmZjE1ZTgwNjFkYTc3ZGIwNjlhZi4uZjc3ZmQxMTJhMmRhMGIyZGQ4ZDQ2N2IzZDVl
Mzg0ZmU5NGYwOGRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgQ2FjaGU6OmR1
bXBDb250ZW50c1RvRmlsZSgpCiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgICAg
ICBlbnRyeS0+YXNKU09OKGpzb24sIGluZm8pOwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwo
IixcbiIpOworICAgICAgICBqc29uLmFwcGVuZCgiLFxuIik7CiAgICAgICAgIGF1dG8gd3JpdGVE
YXRhID0ganNvbi50b1N0cmluZygpLnV0ZjgoKTsKICAgICAgICAgd3JpdGVUb0ZpbGUoZmQsIHdy
aXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCmluZGV4IDBhNGFiMjU2NjBiOTkzM2I2MGViNWEyYWM0MmUyZDRhZjliODE1M2UuLjc1OGU0
NWM0NjhkNzRmY2ZmZmU5YTUxOTYwOTJmMDYxY2EwNDdhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBFbnRyeTo6c2V0TmVlZHNWYWxpZGF0aW9uKGJvb2wgdmFs
dWUpCiAKIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCBjb25zdCBTdG9y
YWdlOjpSZWNvcmRJbmZvJiBpbmZvKSBjb25zdAogewotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
e1xuIgorICAgIGpzb24uYXBwZW5kKCJ7XG4iCiAgICAgICAgICJcImhhc2hcIjogIik7CiAgICAg
anNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKG1fa2V5Lmhhc2hBc1N0cmluZygpKTsKICAgICBq
c29uLmFwcGVuZCgiLFxuIgpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgRW50cnk6OmFzSlNPTihT
dHJpbmdCdWlsZGVyJiBqc29uLCBjb25zdCBTdG9yYWdlOjpSZWNvcmRJbmZvJiBpbmZvKSBjb25z
dAogICAgICAgICAiXCJ0aW1lc3RhbXBcIjogIiwgbV90aW1lU3RhbXAuc2Vjb25kc1NpbmNlRXBv
Y2goKS5taWxsaXNlY29uZHMoKSwgIixcbiIKICAgICAgICAgIlwiVVJMXCI6ICIpOwogICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKLSAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIKKyAgICBqc29uLmFwcGVuZCgiLFxuIgogICAgICAg
ICAiXCJib2R5SGFzaFwiOiAiKTsKICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoaW5m
by5ib2R5SGFzaCk7CiAgICAganNvbi5hcHBlbmQoIixcbiIKQEAgLTI0NCwxNSArMjQ0LDEyIEBA
IHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCBjb25zdCBTdG9yYWdlOjpS
ZWNvcmRJbmZvJiBpbmZvKSBjb25zdAogICAgICAgICAiXCJoZWFkZXJzXCI6IHtcbiIpOwogICAg
IGJvb2wgZmlyc3RIZWFkZXIgPSB0cnVlOwogICAgIGZvciAoYXV0byYgaGVhZGVyIDogbV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgaWYgKCFmaXJzdEhlYWRlcikKLSAg
ICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7Ci0gICAgICAgIGZpcnN0SGVhZGVy
ID0gZmFsc2U7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiICAgICIpOworICAgICAgICBq
c29uLmFwcGVuZChzdGQ6OmV4Y2hhbmdlKGZpcnN0SGVhZGVyLCBmYWxzZSkgPyAiIiA6ICIsXG4i
LCAiICAgICIpOwogICAgICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoaGVhZGVyLmtl
eSk7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiOiAiKTsKKyAgICAgICAganNvbi5hcHBl
bmQoIjogIik7CiAgICAgICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhoZWFkZXIudmFs
dWUpOwogICAgIH0KLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlxuIgorICAgIGpzb24uYXBwZW5k
KCJcbiIKICAgICAgICAgIn1cbiIKICAgICAgICAgIn0iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IGY1ODc0NTI1N2YyODNlMzZmODA3ZmY4NThkZDRiODg4M2E1NWIzYWMuLmE4MDdmYmYw
MTI1ZTNjZGY3NTBkYTYyZWY3MjRmNmMxYTQ1YTVkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApA
QCAtMTc5LDggKzE3OSw3IEBAIHN0YXRpYyBTdHJpbmcgbWFrZUNhY2hlUGF0aChjb25zdCBTdHJp
bmcmIGJhc2VDYWNoZVBhdGgpCiAKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICBTdHJpbmcgdmVy
c2lvblN1YmRpcmVjdG9yeSA9IG1ha2VTdHJpbmcodmVyc2lvbkRpcmVjdG9yeVByZWZpeCwgU3Rv
cmFnZTo6dmVyc2lvbik7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0
aCwgbWFrZVN0cmluZyh2ZXJzaW9uRGlyZWN0b3J5UHJlZml4LCBTdG9yYWdlOjp2ZXJzaW9uKSk7
CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVJlY29yZHNEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmlu
ZyYgYmFzZURpcmVjdG9yeVBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDQzYTBjZDEz
Y2U4MzIzZmNkZTYwZjBhZmM2YzNmYzk4MWExNjc1YTYuLjA4MjU4ODM3YWVkOGE2ZWZjN2MwYTAz
NmMwODA4NmViOWUxMDVkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC0xMjYsNyArMTI2
LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdp
c3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAgICB9IGVsc2UKICAgICAgICAgc2Vydmlj
ZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZyhjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtl
U3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOwogCiAgICAgYXV0
byBpcCA9IGluZXRfYWRkcihpcEFkZHJlc3MudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggNWM4ODE3ZTc0YmE2MDEzZmFjMmM3
MTNiZjM3YWI3ZWQ5MzNkMGNmZS4uM2E1ODE0ZWIzNmU1OTYwY2YxZjc3OWQxMDAwNDI3N2RiZWYz
YzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKQEAgLTE0
MywxMCArMTQzLDggQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFsaXplU2FuZGJveGVk
TG9nRmlsZShTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW0KIAogdm9pZCBXZWJNZW1vcnlT
YW1wbGVyOjp3cml0ZUhlYWRlcnMoKQogewotICAgIFN0cmluZyBwcm9jZXNzRGV0YWlscyA9IG1h
a2VTdHJpbmcoIlByb2Nlc3M6ICIsIHByb2Nlc3NOYW1lKCksICIgUGlkOiAiLCBnZXRDdXJyZW50
UHJvY2Vzc0lEKCksICdcbicpOwotCi0gICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcHJvY2Vzc0Rl
dGFpbHMudXRmOCgpOwotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmls
ZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgIGF1dG8gcHJv
Y2Vzc0RldGFpbHMgPSBtYWtlU3RyaW5nKCJQcm9jZXNzOiAiLCBwcm9jZXNzTmFtZSgpLCAiIFBp
ZDogIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAnXG4nKS51dGY4KCk7CisgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCBwcm9jZXNzRGV0YWlscy5kYXRhKCksIHBy
b2Nlc3NEZXRhaWxzLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzYW1w
bGVUaW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhp
bGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0KaW5kZXggYzI0YzFiM2M1NzI3M2U2ZTIxMjlhNTE2MGJhYTdmYzYwZjhlODgy
ZS4uYzcyNzg4NjhhYzY0Y2I0YmEwZDNlMmE4ZmQ2Zjg5MzdhYjA2YTQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KQEAgLTU3LDYgKzU3
LDcgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvY2YvU3RyaW5nQnVpbGRlckNGLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogI2ltcG9ydCA8cm9vdGxlc3MuaD4KQEAgLTY0Niw4ICs2NDcsNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3QgQXV4aWxpYXJ5UHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYQogICAgICAgICAgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXIg
PSBjb2RlU2lnbmluZ0lkZW50aWZpZXIocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllci54
cGNDb25uZWN0aW9uLmdldCgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRJZGVudGlmaWVyLmlz
TnVsbCgpKQogICAgICAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLmNs
aWVudElkZW50aWZpZXI7Ci0gICAgICAgICAgICBTdHJpbmcgZGVmYXVsdFVzZXJEaXJlY3RvcnlT
dWZmaXggPSBtYWtlU3RyaW5nKFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdKSwgJysnLCBjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHNhbmRib3hQ
YXJhbWV0ZXJzLnNldFVzZXJEaXJlY3RvcnlTdWZmaXgoZGVmYXVsdFVzZXJEaXJlY3RvcnlTdWZm
aXgpOworICAgICAgICAgICAgc2FuZGJveFBhcmFtZXRlcnMuc2V0VXNlckRpcmVjdG9yeVN1ZmZp
eChtYWtlU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0sICcr
JywgY2xpZW50SWRlbnRpZmllcikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KaW5kZXggN2QzYTQwNDMw
Y2Q1MzlhNjI5ZDkyMzk5NmM1MDA0ZmVkM2RmYzE3YS4uNmRhNzIwMWMyM2E0NDg2ZTU0ZDk0NmNh
MDRiMDI4YjFjNjljNzhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
Yk1lbW9yeVNhbXBsZXIubWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJN
ZW1vcnlTYW1wbGVyLm1hYy5tbQpAQCAtMTM4LDM3ICsxMzgsMzcgQEAgV2ViTWVtb3J5U3RhdGlz
dGljcyBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQoKSBjb25zdAogCiAgICAgV2FsbFRp
bWUgbm93ID0gV2FsbFRpbWU6Om5vdygpOwogICAgICAgICAKLSAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRpbWVzdGFtcCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZCgiVGltZXN0YW1wIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSk7Ci0gICAgd2ViS2l0
TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUb3RhbCBCeXRlcyBvZiBNZW1vcnkgSW4g
VXNlIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJUb3RhbCBCeXRlcyBv
ZiBNZW1vcnkgSW4gVXNlIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5k
KHRvdGFsQnl0ZXNJblVzZSk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3Ry
aW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlT
dGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1v
cnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRlZmF1bHQgTWFsbG9jIFpvbmUg
Qnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVsdE1h
bGxvY1pvbmVCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChT
dHJpbmcoIkRpc3BhdGNoIENvbnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiRGlzcGF0Y2ggQ29udGludWF0aW9uIE1hbGxv
YyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGRp
c3BhdGNoQ29udGludWF0aW9uTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9y
eVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiUHVyZ2VhYmxlIE1hbGxvYyBab25lIEJ5dGVzIikp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJQdXJnZWFibGUgTWFsbG9jIFpv
bmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQocHVyZ2Vh
YmxlTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0
YXRzLmtleXMuYXBwZW5kKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1l
bW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1l
bW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgQnl0ZXMgb2YgQ29tbWl0dGVkIE1l
bW9yeSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiVG90YWwgQnl0ZXMg
b2YgQ29tbWl0dGVkIE1lbW9yeSJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZCh0b3RhbEJ5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZChTdHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktp
dE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKLSAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpv
bmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRlZmF1bHQg
TWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBl
bmQoZGVmYXVsdE1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEaXNwYXRjaCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUg
Qnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRpc3BhdGNoIENv
bnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMu
dmFsdWVzLmFwcGVuZChkaXNwYXRjaENvbnRpbnVhdGlvbk1hbGxvY1pvbmVCeXRlc0NvbW1pdHRl
ZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJQdXJnZWFibGUg
TWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQo
IlB1cmdlYWJsZSBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMu
dmFsdWVzLmFwcGVuZChwdXJnZWFibGVNYWxsb2Nab25lQnl0ZXNDb21taXR0ZWQpOwotICAgIHdl
YktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVz
IikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJKYXZhU2NyaXB0IEhlYXAg
Qnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5
dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmco
IkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoIkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRz
LnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7Ci0gICAgd2ViS2l0
TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpKTsK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiSmF2YVNjcmlwdCBKSVQgQnl0ZXMi
X3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3Rh
dHMuSklUQnl0ZXMpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygi
UmVzaWRlbnQgU2l6ZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiUmVz
aWRlbnQgU2l6ZSJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChyZXNp
ZGVudFNpemUpOwogICAgIAogICAgIHJldHVybiB3ZWJLaXRNZW1vcnlTdGF0czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKaW5kZXggMDU0ZWFlNDZlMDc4ZTA2ODA1N2FhMzkyNDQyOWZkY2EwYjJlMjQz
OC4uNDRjOGQ3NTIzYWExNGQyMjI3Y2UzZDAxNTY0MjM4ZTY2NmZhMGRjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKQEAgLTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2Nl
cHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cgog
ICAgIGlmIChjb21wb25lbnRzLnNpemUoKSAhPSAyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBTdHJpbmcgd2lsZGNhcmRlZE1JTUVUeXBlID0gbWFrZVN0cmluZyhjb21wb25lbnRzWzBd
LCAiLyoiKTsKKyAgICBhdXRvIHdpbGRjYXJkZWRNSU1FVHlwZSA9IG1ha2VTdHJpbmcoY29tcG9u
ZW50c1swXSwgIi8qIik7CiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMod2lsZGNh
cmRlZE1JTUVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGMwMmFlOTUxYjUwYWUyY2FkMWE5NTE3MzQ0NDVjNzA5Mzg1ZGI0ZDIuLmY4YzlmYWI0OGI4OWRk
MTdhODQyNDY2YTFjODRkYzExMjU1NTE0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM5Niw3ICsx
Mzk2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZyhGaWxlU3lzdGVtOjplbmNvZGVG
b3JGaWxlTmFtZShvcmlnaW4udG9wT3JpZ2luLmhvc3QpLCAiIGNvbnRlbnQiKTsKKyAgICAgICAg
ICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUo
b3JpZ2luLnRvcE9yaWdpbi5ob3N0KSwgIiBjb250ZW50Iik7CiAgICAgICAgICAgICBwYWdlLT5y
ZXF1ZXN0U3RvcmFnZVNwYWNlKHBhZ2UtPm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIG9yaWdpbi50
b3BPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCksIG5hbWUsIG5hbWUsIGN1cnJlbnRRdW90YSwg
Y3VycmVudFNpemUsIGN1cnJlbnRTaXplLCBzcGFjZVJlcXVpcmVkLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBxdW90YSkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocXVvdGEpOwogICAgICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRl
eCA4ZTdhYzdmYzYzMzRmZWQ2MzllMTRkMWM4ZDgxNDdkODA2Mzc4NWJiLi5lNDhmNTk5MjBmZTRh
M2FiMzkxMTI2YTM3YzYzMjcyMTk4YTA0NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQ5MiwxMiArNDkyLDEyIEBAIGNvbnN0IGNo
YXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1N0cmluZygpCiAgICAgYnVpbGRlci5hcHBl
bmQoIldlYkJhY2tGb3J3YXJkTGlzdCAweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odGhpcykpLCAiIC0gIiwgbV9lbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzLCBoYXMgY3VycmVu
dCBpbmRleCAiLCBtX2N1cnJlbnRJbmRleCA/ICJZRVMiIDogIk5PIiwgIiAoIiwgbV9jdXJyZW50
SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwLCAnKScpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CisgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeDsKICAgICAgICAgaWYgKG1fY3VycmVu
dEluZGV4ICYmICptX2N1cnJlbnRJbmRleCA9PSBpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgKiAiKTsKKyAgICAgICAgICAgIHByZWZpeCA9ICIgKiAiOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtICIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZChtX2VudHJpZXNbaV0tPmxvZ2dpbmdTdHJpbmcoKSk7CisgICAgICAgICAg
ICBwcmVmaXggPSAiIC0gIjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJywgcHJlZml4LCBt
X2VudHJpZXNbaV0tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRlYnVn
U3RyaW5nKCJcbiIsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTBjZmZhNWNjYjYwMGExNzg5MjE1ZDk0MTJiYmQz
YWFhNmE2ZWVhNC4uYmE5MzBmYTRlNzY3M2I1ZDUyZTJmNGQ1YWMzOWE1Y2M0ZmMzYzMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtOTMzLDcgKzkz
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIGlmIChtX21lbW9yeVNhbXBsZXJFbmFibGVkKSB7
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dTYW5kYm94SGFuZGxl
OyAgICAgICAgCiAgICAgICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKLSAgICAg
ICAgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmluZygiV2ViUHJvY2VzcyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obm93LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kcygpKSwgInBpZCIsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGF1
dG8gc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkp
LCAicGlkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgc2FtcGxlTG9n
RmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxl
KHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNh
bXBsZUxvZ1NhbmRib3hIYW5kbGUpOwogICAgICAgICAKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhh
bmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CkBA
IC0xNDc5LDcgKzE0NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydE1lbW9yeVNhbXBs
ZXIoY29uc3QgZG91YmxlIGludGVydmFsKQogICAgIC8vIEZvciBXZWJQcm9jZXNzCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAgIAogICAgIFdh
bGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBTdHJpbmcgc2FtcGxlTG9nRmlsZVBh
dGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpKTsKKyAgICBhdXRvIHNhbXBs
ZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmluZygiV2ViUHJvY2VzcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4obm93LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7CiAgICAg
c2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOwogICAgIAogICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlTYW1wbGVyKHNhbXBsZUxvZ1Nh
bmRib3hIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBpbnRlcnZhbCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiMTdhNzRhNDM2YWUzZGU0
ZmI1MmY4ZjU1M2NmODExNTgwN2QwOTA3Li41YjBjZjA0YTNkNjUyYTdkZGJiYjAyOGU3YjIxNDVj
ZDBmMDdmMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRQYWdlWm9vbUZhY3Rv
cihkb3VibGUgem9vbUZhY3RvcikKIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShIaXN0b3J5
SXRlbSYgaXRlbSwgc2l6ZV90IGluZGVudCwgYm9vbCBpc0N1cnJlbnRJdGVtLCBTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAg
aWYgKGlzQ3VycmVudEl0ZW0pCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
Y3Vyci0+ICAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImN1cnItPiAgIik7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZW50OyArK2kpCiAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwpAQCAtMjA4NSwyMyArMjA4NSwx
OSBAQCBzdGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIHNpemVf
dCBpbmRlbnQsIGJvb2wgaXNDdXJyZW50SXRlbQogICAgICAgICAgICAgc3RhcnQgPSAwOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzdGFydCArPSBkaXJlY3RvcnlOYW1lLmxlbmd0aCgpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIihmaWxlIHRlc3QpOiIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0YXJ0KSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIoZmlsZSB0ZXN0KToiLCBTdHJpbmdWaWV3
IHsgdXJsLnN0cmluZygpIH0uc3Vic3RyaW5nKHN0YXJ0KSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKSk7Ci0gICAgCisKICAgICBhdXRvJiB0
YXJnZXQgPSBpdGVtLnRhcmdldCgpOwotICAgIGlmICh0YXJnZXQubGVuZ3RoKCkpIHsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKGluIGZyYW1lIFwiIik7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRhcmdldCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXCIpIik7Ci0gICAgfQotICAgIAorICAgIGlmICh0YXJnZXQubGVuZ3RoKCkp
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgKGluIGZyYW1lIFwiIiwgdGFyZ2V0LCAi
XCIpIik7CisKICAgICBpZiAoaXRlbS5pc1RhcmdldEl0ZW0oKSkKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgICoqbmF2IHRhcmdldCoqIik7Ci0gICAgCisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICoqbmF2IHRhcmdldCoqIik7CisKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAKKwogICAgIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiBj
aGlsZHJlbjsKICAgICBjaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZW0uY2hpbGRy
ZW4oKS5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGQgOiBpdGVtLmNoaWxkcmVuKCkpCkBA
IC0zNzMwLDI2ICszNzI2LDE4IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1lCiB2b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
cyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgc3dpdGNoIChpbmNsdWRlQ2hpbGRGcmFtZXMpIHsKLSAg
ICBjYXNlIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vOiB7Ci0gICAgICAg
IFN0cmluZyByZXN1bHRTdHJpbmcgPSBtX21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygpOwot
ICAgICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOworICAgIGNhc2UgQ29udGVudEFzU3RyaW5n
SW5jbHVkZXNDaGlsZEZyYW1lczo6Tm86CisgICAgICAgIGNhbGxiYWNrKG1fbWFpbkZyYW1lLT5j
b250ZW50c0FzU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb250
ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXM6IHsKKyAgICBjYXNlIENvbnRlbnRB
c1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6OlllczoKICAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0UmVu
ZGVyZWQoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmZyYW1lKSkgewotICAgICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5cbiIp
OwotCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQod2ViRnJhbWUtPmNvbnRlbnRzQXNT
dHJpbmcoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byBmcmFtZSA9IG1ha2VS
ZWZQdHIobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHRSZW5kZXJlZCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB3ZWJG
cmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpCisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICJcblxuIiwgd2ViRnJhbWUt
PmNvbnRlbnRzQXNTdHJpbmcoKSk7CiAgICAgICAgIH0KLQogICAgICAgICBjYWxsYmFjayhidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgfQogfQogCiAjaWYg
RU5BQkxFKE1IVE1MKQpAQCAtMzc3MCw4ICszNzU4LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdp
dGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5p
c1JhbmdlKCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgfQotCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
LmNwcAppbmRleCA5NWVmMjI5NGE5NzZmODQ0ZWMzYTQ5NWViYmJlM2IzZmQ5NmE3NGQ3Li5lZjlk
MWNlNmZlMjBiOTc3NjU0MDlmNjYwMDc3YzA2ODlhZjg5NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwCkBAIC02MywxMCArNjMsOCBAQCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKAog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIC8v
IFNlc3Npb24gbmFtZSBzaG91bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJl
Z2lvbiBuYW1lIHRvIGJlIHVuZGVyIHRoZSBsaW1pdCwgb3RlaHJ3aXNlIHNhbmRib3ggcnVsZXMg
d29uJ3Qgd29yayAoc2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgotICAgIFN0cmluZyBz
ZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNz
SUQoKSk7Ci0KLSAgICBhdXRvIHNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgLy8gU2Vz
c2lvbiBuYW1lIHNob3VsZCBiZSBzaG9ydCBlbm91Z2ggZm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9u
IG5hbWUgdG8gYmUgdW5kZXIgdGhlIGxpbWl0LCBvdGhlcndpc2Ugc2FuZGJveCBydWxlcyB3b24n
dCB3b3JrIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNjQyODUyPikuCisgICAgYXV0byBzZXNzaW9u
ID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKG1ha2VTdHJpbmcoIldlYktp
dCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZTsK
ICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29v
a2llQVBJKCkpIHsKQEAgLTg2LDEzICs4NCwxMyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwog
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVy
QmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5j
cmVhdGVDRlN0cmluZygpOworICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRp
ZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiBzdG9yYWdlU2Vzc2lvbjsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGlkZW50aWZpZXIuZ2V0KCkpOwogICAgIGVs
c2UKLSAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGNmSWRlbnRpZmllci5nZXQo
KSk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihpZGVudGlmaWVyLmdldCgp
KTsKIAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
OwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VD
b29raWVBUEkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCAyZWVlZjcwMmVkYzM2MzE2ZjQ1YjYw
MTNhMTA1Zjc2MDQzZDMzNDA1Li44ZWEyMWI0NDQzNjJiOWQ0Mzk2MjkzYWExMGFhNTllMGJhNjQx
YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMzcyLDIzICszNzIsMTYgQEAgc3RhdGljIFJlZ3Vs
YXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgbnVtTGFiZWxzOyBpKyspIHsKICAgICAgICAgICAgIFN0cmluZyBsYWJl
bCA9IFtsYWJlbHMgb2JqZWN0QXRJbmRleDppXTsKIAotICAgICAgICAgICAgYm9vbCBzdGFydHNX
aXRoV29yZENoYXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9
IGZhbHNlOwotICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpICE9IDApIHsKLSAgICAgICAg
ICAgICAgICBzdGFydHNXaXRoV29yZENoYXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVs
LnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFy
ID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkg
LSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7
CisgICAgICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBzdGFy
dHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3Ry
aW5nKDAsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXJhY3RlciA9
IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0aCgpIC0g
MSwgMSkpID49IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChpICE9IDApCi0gICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQoJ3wnKTsKICAgICAgICAg
ICAgIC8vIFNlYXJjaCBmb3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFiZWwgc3RhcnRzL2Vu
ZHMgd2l0aCAid29yZCBjaGFyYWN0ZXJzIi4KLSAgICAgICAgICAgIC8vIElmIHdlIGFsd2F5cyBz
ZWFyY2hlZCBmb3Igd29yZCBib3VuZGFyaWVzLCB0aGlzIHdvdWxkbid0IHdvcmsgZm9yIGxhbmd1
YWdlcwotICAgICAgICAgICAgLy8gc3VjaCBhcyBKYXBhbmVzZS4KLSAgICAgICAgICAgIGlmIChz
dGFydHNXaXRoV29yZENoYXIpCi0gICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFs
KCJcXGIiKTsKLSAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKGxhYmVsKTsKLSAgICAgICAgICAg
IGlmIChlbmRzV2l0aFdvcmRDaGFyKQotICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0
ZXJhbCgiXFxiIik7CisgICAgICAgICAgICAvLyBJZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdv
cmQgYm91bmRhcmllcywgdGhpcyB3b3VsZG4ndCB3b3JrIGZvciBsYW5ndWFnZXMgc3VjaCBhcyBK
YXBhbmVzZS4KKyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKGkgPyAifCIgOiAiIiwgc3RhcnRz
V2l0aFdvcmRDaGFyYWN0ZXIgPyAiXFxiIiA6ICIiLCBsYWJlbCwgZW5kc1dpdGhXb3JkQ2hhcmFj
dGVyID8gIlxcYiIgOiAiIik7CiAgICAgICAgIH0KICAgICAgICAgcGF0dGVybi5hcHBlbmQoJykn
KTsKICAgICAgICAgcmVzdWx0ID0gbmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4udG9TdHJp
bmcoKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429422</attachid>
            <date>2021-05-22 12:21:26 -0700</date>
            <delta_ts>2021-05-23 15:48:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226137-20210522122125.patch</filename>
            <type>text/plain</type>
            <size>354641</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZjY3MTE3MDhhODUyMGY5MDcyMjIzNDExNThhODk2NDgzZjU5NmE2Li5hYzcxYmRmNWMzOWU0MjY1
OTYyNzMwZGExZTQ5ZGNjNGQ2NmM3OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL3Rlc3RzL1BpbmdQb25n
U3RhY2tPdmVyZmxvd1Rlc3QuY3BwOgorICAgICAgICAoUGluZ1BvbmdTdGFja092ZXJmbG93T2Jq
ZWN0X2hhc0luc3RhbmNlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQpOiBSZW1v
dmUgdW5uZWNlc3NhcnkgY2FzdAorICAgICAgICBmcm9tIGNvbnN0IGNoYXIqIHRvIFN0cmluZywg
d2hpY2ggZGVmZWF0cyBvcHRpbWl6YXRpb24gYW5kIGhhcyBubyBiZW5lZml0LgorCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgIChKU0M6OlJlc3RQYXJhbWV0ZXJOb2RlOjp0b1N0cmluZyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6IFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICBSZW1vdmVkIHVubmVjZXNhcnkgdXNlIG9mIGFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcgdG8gYXBwZW5kIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc25hcHNo
b3RUeXBlVG9TdHJpbmcgYW5kIGVkZ2VUeXBlVG9TdHJpbmcsIHdoaWNoIHJldHVybiBhIGNvbnN0
IGNoYXIqIHRoYXQKKyAgICAgICAgbmV2ZXIgY29udGFpbnMgY2hhcmFjdGVycyB0aGF0IHJlcXVp
cmUgc3BlY2lhbCBxdW90aW5nIGNvbnNpZGVyYXRpb24sIHNvCisgICAgICAgIGNhbiBiZSBhcHBl
bmRlZCBlZmZpY2llbnRseSB3aXRoIHRoZSBub3JtYWwgYXBwZW5kIGZ1bmN0aW9uLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorCisgICAgICAgICoganNjLmNwcDogVXNlIGFwcG5lZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IFVzZSBhdXRvIGZvciB0
aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdl
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdXNl
IHZhcmlhZGljIGFwcGVuZCB3aGVuIHByYWN0aWNhbCBmb3IgYmV0dGVyIGVmZmljaWVuY3kuCisg
ICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1l
bnRzKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRU
b1N0cmluZyk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6Om5vdEFG
dW5jdGlvblNvdXJjZUFwcGVuZGVyKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOiBEaXR0by4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSBhdXRvIGFuZCBjdXQgZG93biBv
biByZWZlcmVuY2UgY291bnQKKyAgICAgICAgY2h1cm4gYnkgdXNpbmcgcGFzc2luZyB0aGUgU3Ry
aW5nSW1wbCB0byBtYWtlU3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0
ZSk6IERpdHRvLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6IFVzZSBtb3JlIGNvbnN0IGFuZCB1c2UgdmFyaWFkaWMKKyAgICAgICAgYXBwZW5kIGZvciBi
ZXR0ZXIgZWZmaWNpZW5jeS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKTogVXNlIGFw
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZ0pvaW5lci5oOiBEZWxldGVkIHVudXNlZCBhcHBlbmRMaXRlcmFsIGZ1bmN0aW9u
LgorICAgICAgICBVbnJlbGF0ZWQgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCwgYnV0
IGRlYWQgY29kZS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0
ZXJhbC4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmFwcGVuZExpbmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPik6IERpdHRvLgorCisgICAgICAg
ICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQ
cm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2Yg
bWFrZVN0cmluZy4KKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0
ZWNvZGVzKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0
T2Zmc2V0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisgICAgICAgIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0Ojpk
dW1wVHlwZXMgY29uc3QpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAg
ICAgICAgKEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6OnRvSlNPTlN0cmluZyBjb25zdCk6IERpdHRvLgorCiAyMDIxLTA1
LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBM
b2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhNzYyZWU5MzNh
ODIxNDI3MDRlN2M0ZDc2YjZkNWRkMWFhZjRmZTUxLi44YjZkNjZjNzg4YjU1NjU3ZGFkZTRjZTkz
NzY5NTM0MmQ0ZGY2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA1LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIG9wdGltaXphdGlvbiBkb25lIGJ5IGFwcGVuZExpdGVyYWwgaGFzIG1pbmltYWwg
dmFsdWUgYW5kIGlzIHNvbWV0aGluZyB3ZQorICAgICAgICBjYW4gZG8gd2l0aG91dC4gSXQgZG9l
cyBub3QgY3V0IGRvd24gdGhlIG51bWJlciBvZiBhbGxvY2F0aW9ucywgd2hpY2ggaXMgdGhlCisg
ICAgICAgIG1haW4gY29zdCBvZiB0aGUgU3RyaW5nQnVpbGRlciBjbGFzcy4gR2V0dGluZyByaWQg
b2YgdGhlIGRpZmZlcmVudGx5IG5hbWVkCisgICAgICAgIGFwcGVuZExpdGVyYWwgaW1wcm92ZXMg
dGhlIGRlc2lnbiBvZiB0aGUgU3RyaW5nQnVpbGRlciBjbGFzcyBmb3IgY2FsbGVycy4KKyAgICAg
ICAgT3VyIGdvYWwgaXMgdG8gZ2V0IGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIGEgc2luZ2xlIGFw
cGVuZCBmdW5jdGlvbi4KKworICAgICAgICBJZiB3ZSBkZWNpZGUgd2UgbmVlZCBhbiBvcHRpbWl6
YXRpb24gZm9yIGxpdGVyYWxzLCB3ZSBjYW4gY29tZSB1cCB3aXRoIGEKKyAgICAgICAgZGlmZmVy
ZW50IHdheSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCBhcHBlbmQuIEZvciBleGFtcGxlLCB3ZSBj
b3VsZCBhc3N1bWUKKyAgICAgICAgdGhhdCBhbnkgY2hhciBhcnJheSBpcyBhIGxpdGVyYWwgYW5k
IGNoZWNrIHRoYXQgYXQgY29tcGlsZSB0aW1lIGluCisgICAgICAgIFN0cmluZ0NvbmNhdGVuYXRl
OyB0aGF0IG9wdGltaXphdGlvbiB3b3VsZCB3b3JrIGZvciBib3RoIG1ha2VTdHJpbmcgYW5kCisg
ICAgICAgIFN0cmluZ0J1aWxkZXIuIE9yIHdlIGNvdWxkIHVzZSBhIHN0cmF0ZWd5IGxpa2UgQVND
SUlMaXRlcmFsLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6ZW5jb2RlRm9yRmlsZU5hbWUpOiBTdHJlYW1saW5lIGxvZ2ljLAor
ICAgICAgICBhbmQgdXNlIHZhcmlhZGljIGFwcGVuZCB0byBtYWtlIHRoaXMgbW9yZSBlZmZpY2ll
bnQuCisKKyAgICAgICAgKiB3dGYvSlNPTlZhbHVlcy5jcHA6CisgICAgICAgIChXVEY6OkpTT05J
bXBsOjpWYWx1ZTo6ZXNjYXBlU3RyaW5nKTogVXNlIGFwcGVuZCBpbnN0ZWFkCisgICAgICAgIG9m
IGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXVEY6OkpTT05JbXBsOjpWYWx1ZTo6d3JpdGVKU09O
IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmg6CisgICAgICAgIChXVEY6
OkxvZ2dlcjo6bG9nKTogVXNlIGF1dG8gZm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAg
ICAoV1RGOjpMb2dnZXI6OmxvZ1ZlcmJvc2UpOiBEaXR0by4KKworICAgICAgICAqIHd0Zi9NZWRp
YVRpbWUuY3BwOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWU6OnRvU3RyaW5nIGNvbnN0KTogVXNl
IG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogd3RmL3Rl
eHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOgorICAgICAgICBNYWRlIGxlbmd0aE9mSW50
ZWdlckFzU3RyaW5nIGEgY29uc3RleHByIGZ1bmN0aW9uIHNvIHdlIGNhbiB1c2UgaXQgdG8KKyAg
ICAgICAgY29tcHV0ZSB0aGUgcmVxdWlyZWQgc2l6ZSBvZiBhcnJheXMgZm9yIGNvbnZlcnNpb24u
IEFkZGVkIHVzaW5nIGZvciBib3RoCisgICAgICAgIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nIGFu
ZCB3cml0ZUludGVnZXJUb0J1ZmZlciBzbyB3ZSBjYW4gdXNlIHRoZW0gd2l0aG91dAorICAgICAg
ICB0aGUgV1RGIHByZWZpeCBhcyBpcyBjdXN0b21hcnkgZm9yIGZ1bmN0aW9ucyBpbiBXVEYuCisK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6OlN0cmlu
Z0J1aWxkZXI6OmFwcGVuZExpdGVyYWwpOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaDogQWRkZWQgc3VwcG9ydCBmb3IgYXBwZW5kaW5nIFN0cmluZ0lt
cGwmLAorICAgICAgICBTdHJpbmdJbXBsKiwgQXRvbVN0cmluZ0ltcGwmLCBhbmQgQXRvbVN0cmlu
Z0ltcGwqLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDE5OGFkOWI4YjI4OTNmYmRiNzA0ZTU3YTczMzU0ZmE4ZDAzOTI3YWQu
LjI1MTAzY2U5OTdjZjUxNmNmZThjMGI0YTExOGY4MTBiNzI2NjMwOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNzcgQEAKKzIwMjEtMDUtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFja2FnZUZvcm1EYXRh
KTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBv
ZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKTogVXNlIGF1dG8KKyAgICAgICAgZm9yIHRo
ZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpi
dWlsZFByZUluZGV4U3RhdGVtZW50KTogVXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBv
ZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpidWlsZEluZGV4
U3RhdGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OmJ1aWxkT2Jq
ZWN0U3RvcmVTdGF0ZW1lbnQpOiBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlUHJvdG9jb2xTdHJpbmcp
OiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphcHBlbmRBY2NlcHRlZEV4dGVu
c2lvbik6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRI
YW5kc2hha2VNZXNzYWdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIEFsc28gdXNlIEFTQ0lJTGl0
ZXJhbCBmb3Igc29tZSBTdHJpbmcgY29uc3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0IGNvbnN0KTogRGl0dG8uCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbToKKyAgICAgICAgKGZvcm1hdEZvckRlYnVnZ2VyKTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcpOiBVc2UKKyAgICAgICAgYXBwZW5kIGluc3RlYWQg
b2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRDaXJjbGVTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkRWxsaXBzZVN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRQ
YXRoU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsZFBvbHlnb25TdHJpbmcp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zZXRTdHJpbmcpOiBEaXR0by4KKyAg
ICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NM
aW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NDb25pY0dyYWRpZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NHcmlkSW50ZWdlclJlcGVh
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWU6
OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9m
IFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTog
VXNlIGFwcGVuZAorICAgICAgICBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICog
Y3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6
Y3NzVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0tleWZyYW1lUnVsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6Y3NzVGV4dCBjb25zdCk6
IFVzZSBtYWtlU3RyaW5nCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0tl
eWZyYW1lc1J1bGU6OmNzc1RleHQgY29uc3QpOiBVc2UgdmFyaWFkaWMgYXBwZW5kLgorCisgICAg
ICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTTGluZUJveENvbnRhaW5WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IFVzZQorICAgICAg
ICBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIGNzcy9DU1NOYW1l
c3BhY2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05hbWVzcGFjZVJ1bGU6OmNzc1Rl
eHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6Y3NzVGV4dCBjb25zdCk6IFVzZSBtYWtlU3RyaW5n
IGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiBjc3MvQ1NTUGFp
bnRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhaW50SW1hZ2VWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXRO
dW1iZXJGb3JDdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFk
IG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwZW5kTGFuZ0FyZ3VtZW50TGlzdCk6IFVzZSB2YXJpYWRpYyBhcHBl
bmQuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0IGNvbnN0KTog
RGl0dG8uIEFsc28gdXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwg
YW5kIG1ha2Ugc29tZSBpbXByb3ZlbWVudHMgdG8KKyAgICAgICAgY3V0IGRvd24gb24gYWxsb2Nh
dGlvbnMgYSBsaXR0bGUuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6YnVpbGRTZWxlY3RvcnNUZXh0IGNvbnN0
KTogVXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KTogTW92ZWQgbW9yZSBvZiB0aGUKKyAgICAgICAgZGF0YSBtZW1i
ZXIgaW5pdGlhbGl6YXRpb24gdG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZgor
ICAgICAgICBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6IE1v
dmVkIGluaXRpYWxpemF0aW9uIGhlcmUuCisKKyAgICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rp
b25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFk
IG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NTcHJpbmdUaW1pbmdGdW5j
dGlvblZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgRGl0dG8uCisKKyAgICAg
ICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6
Om1lZGlhVGV4dCBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRM
aXRlcmFsLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL01l
ZGlhUXVlcnlFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHBy
ZXNzaW9uOjpzZXJpYWxpemUgY29uc3QpOiBVc2UgbWFrZVN0cmluZworICAgICAgICBpbnN0ZWFk
IG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlIGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwu
CisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxpemUgY29uc3QpOiBSZW1vdmVkIGEgbG90IG9m
CisgICAgICAgIHVubmVjZXNzYXJ5IGJyYWNlcy4gVXNlIHZhcmlhZGljIGFwcGVuZCBhbmQgYXBw
ZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6IFVz
ZSBhdXRvIGZvciB0aGUgcmVzdWx0CisgICAgICAgIG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBdHRyaWJ1dGVzKTog
VXNlIHZhcmlhZGljIGFwcGVuZCBhbmQgYXBwZW5kCisgICAgICAgIGluc3RlYWQgb2YgYXBwZW5k
TGl0ZXJhbC4KKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KTogRGl0dG8uCisgICAg
ICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdCk6IERpdHRvLgorCisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2VhcmNoZXIp
OiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcpOgorICAgICAgICBVc2UgYXBwZW5kIGluc3RlYWQg
b2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRTdGFydFRhZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dXJsVG9NYXJr
dXApOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlY29yZEZvcm1TdHJ1Y3R1cmUpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpyZXBvcnRWYWxpZGl0eSk6IFVzZSBhdXRvIGZvcgorICAgICAgICB0aGUg
cmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZl
bHkpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFlZCBvZiBhcHBlbmRMaXRlcmFs
LgorCisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlc3RyaWN0aW9uTmFtZXMpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtl
U3RyaW5nLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFy
YWN0ZXJUb2tlbkJ1ZmZlcjo6dGFrZVJlbWFpbmluZyk6IERpdHRvLgorCisgICAgICAgICogaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
Q29uc29sZUVycm9yKTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKTogRGl0dG8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmV4cHJlc3Npb25Gb3JFdmFsdWF0aW5nQ29tbWFuZCk6IFVzZSBhcHBlbmQgaW5zdGVh
ZCBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRU
aXRsZSk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVu
ZExpdGVyYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKToKKyAg
ICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgYXV0byBmb3IgdGhl
IHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50
OjpkaWRGYWlsTG9hZGluZyk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5pbmcpOiBEaXR0bworICAgICAg
ICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50
KTogRGl0dG8KKworICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWtlVmFsaWRVUkwpOiBBZGRlZC4gVXNlZCBmb3IgdmFyaW91
cyBjYXNlcyBiZWxvdyB0aGF0IGFsbCBjb25zdHJ1Y3QKKyAgICAgICAgVVJMcyBpbiB0aGUgc2Ft
ZSB3YXkgd2l0aCB0aGUgc2FtZSBraW5kcyBvZiBjaGVja3MuIFVzZSBtYWtlU3RyaW5nIGhlcmUg
aW5zdGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAoV2ViQ29yZTo6YXR0
cmlidXRpb25SZXBvcnRVUkwpOiBDYWxsIG1ha2VWYWxpZFVSTC4KKyAgICAgICAgKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGlj
S2V5VVJMIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRCb29sZWFuKTogVXNlIGFwcGVu
ZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRIYXNo
U2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphcHBlbmROYXZpZ2F0b3JBUElPcHRpb25T
ZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNjcmVlbkFQSU9wdGlvblNldCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJp
bmcgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBVc2UgYXV0byBmb3IKKyAgICAgICAgdGhlIHJlc3VsdCBv
ZiBtYWtlU3RyaW5nLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKTogVXNl
IGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdHdlYWsgY29k
aW5nIHN0eWxlIGEgYml0LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlIGNvbnN0
KTogVXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6U2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyk6
CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1lKTogVXNl
IGF1dG8gZm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4KKworICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNTdHJp
bmcpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisK
KyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KTogVXNlIGF1
dG8gZm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4KKworICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25z
b2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IFVzZSBtYWtlU3RyaW5nIGluc3RzZWFkIG9mIFN0cmlu
Z0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
UnVubmluZ09yRGlzcGxheWluZ0luc2VjdXJlQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkRGlyZWN0aXZlVmFsdWVD
aGFyYWN0ZXIgY29uc3QpOgorICAgICAgICBHZXQgcmlkIG9mIGxvY2FsIHZhcmlhYmxlIGZvciBy
ZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6cmVwb3J0SW52YWxpZFBhdGhDaGFyYWN0ZXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFNvdXJjZUV4cHJl
c3Npb24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKTogR2V0IHJpZCBvZiBsb2NhbAorICAgICAg
ICB2YXJpYWJsZSBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KToKKyAg
ICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWxkZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9EZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2ltYWw6OnRvU3Ry
aW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGltaW5nRnVuY3Rpb246OmNyZWF0ZUZyb21DU1NUZXh0KTogVXNlIG1ha2VTdHJpbmcg
aW5zdGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9u
OjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6IFVzZSBhdXRvCisgICAgICAg
IGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L1VzZXJBZ2VudEdMaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRVc2VyQWdlbnRTdHJp
bmcpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWVBdHRyaWJ1dGVzKTogVXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFu
Z2VzKTogR290IHJpZCBvZiBsb2NhbAorICAgICAgICB2YXJpYWJsZSBmb3IgcmVzdWx0IG9mIG1h
a2VTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKTogVXNlIGF1dG8KKyAgICAgICAgZm9yIHJlc3VsdCBvZiBtYWtl
U3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVSZXZhbGlkYXRpb25U
aW1lckZpcmVkKTogVXBkYXRlIHRvCisgICAgICAgIHVzZSBPcHRpb25TZXQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0aW9uUG9saWN5QXNTdHJpbmcpOiBVc2UgT3B0aW9uU2V0LgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUdyaWQ6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6IFVzZSBhdXRvIGZvciBpdGVyYXRv
cgorICAgICAgICBhbmQgcmFuZ2UtYmFzZWQgZm9yIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpU
aWxlR3JpZDo6dXBkYXRlVGlsZUxheWVyUHJvcGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUdyaWQ6OmJsYW5rUGl4ZWxDb3VudCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGlsZUdyaWQ6OnJlbW92ZVRpbGVzKTogVXNlIEhhc2hDb3VudGVkU2V0LgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnJldmFsaWRhdGVUaWxlcyk6IFVzZSBPcHRpb25TZXQu
CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cmV0YWluZWRUaWxlQmFja2luZ1N0b3JlTWVt
b3J5IGNvbnN0KTogVXNlCisgICAgICAgIHJhbmdlZC1iYXNlZCBmb3IgbG9vcC4KKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzIGNvbnN0KTogVXNlIHJhbmdl
LWJhc2VkCisgICAgICAgIGZvciBsb29wIGFuZCB1c2Ugd3JpdGVJbnRlZ2VyVG9CdWZmZXIgaW5z
dGVhZCBvZiBTdHJpbmc6Om51bWJlci4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0
Zm9ybUNBTGF5ZXJSZXBhaW50Q291bnQgY29uc3QpOiBVc2UKKyAgICAgICAgSGFzaENvdW50ZWRT
ZXQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVySW5jcmVtZW50
UmVwYWludENvdW50KTogRGl0dG8uCisgICAgICAgIFRoaXMgY3V0cyB1cyBkb3duIGZyb20gMyBo
YXNoIHRhYmxlIGxvb2t1cHMgdG8gMS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpyZW1v
dmVVbnBhcmVudGVkVGlsZXNOb3cpOiBSZW1vdmVkIGxvY2FsCisgICAgICAgIHZhcmlhYmxlIHRv
IG1ha2UgY29kZSBhIGxpdHRsZSB0aWdodGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVHcmlkLmg6IFVzZSBPcHRpb25TZXQgYW5kIEhhc2hDb3VudGVkU2V0LgorICAgICAg
ICBSZW1vdmVkIHNvbWUgdHlwZSBuYW1lcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09uTGF5ZXIpOiBVc2UgYXV0byBmb3IKKyAgICAg
ICAgcmV1c2x0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Ny
b2xsQW5pbWF0b3JNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTW9j
azo6c2Nyb2xsYmFyUHJlZml4IGNvbnN0KTogQWRkZWQKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9u
IGZvciB1c2UgYmVsb3cuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1vY2s6Om1v
dXNlRW50ZXJlZFNjcm9sbGJhciBjb25zdCk6IFVzZQorICAgICAgICBtYWtlU3RyaW5nIGluc3Rl
YWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTW9j
azo6bW91c2VFeGl0ZWRTY3JvbGxiYXIgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yTW9jazo6bW91c2VJc0Rvd25JblNjcm9sbGJhciBjb25zdCk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmg6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRQcm94eVNlcnZlclN0cmluZyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBh
cHBlbmRMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6dG9TdHJpbmcpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUpOiBHZXQgcmlkCisgICAgICAgIG9mIGxvY2FsIHZhcmlhYmxlIHdpdGggcmVzdWx0IG9mIG1h
ZWtTdHJpbmcgaW4gaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdl
bnRQbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUZvclVBU3RyaW5n
KTogRGVsZXRlZC4gTm8gbmVlZCBmb3IgYSBnbG9iYWwgdmFyaWFibGUKKyAgICAgICAgdG8gaG9s
ZCB0aGUgcmVzdWx0IG9mIHNvbWV0aGluZyBjYWxsZWQgb25seSBvbmNlLgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkVXNlckFnZW50U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0
YW5kYXJkVXNlckFnZW50U3RhdGljKTogTW92ZWQgdGhlIGxvZ2ljIGZyb20gYnVpbGRVc2VyQWdl
bnRTdHJpbmcKKyAgICAgICAgaGVyZSwgdXNpbmcgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmlu
Z0J1aWxkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBVc2UgYXV0byBmb3IgcmVz
dWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJh
c2VGaWxlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRm9ybWF0OjpxdW90ZUFuZEFwcGVuZExp
dGVyYWwpOiBVc2UgYXBwZW5kIGluc3RlYWQKKyAgICAgICAgb2YgYXBwZW5kTGl0ZXJhbCBhbmQg
U3RyaW5nVmlldzo6c3Vic3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nOjpzdWJzdHJpbmcuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyk6IFVzZSBh
cHBlbmQKKyAgICAgICAgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogcGxh
dGZvcm0vd2luL1VzZXJBZ2VudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZFVz
ZXJBZ2VudCk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlZXIuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpuYW1lIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZgorICAgICAg
ICBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgICogc3Zn
L1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdCdWlsZGVyOjptb3ZlVG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdCdWlsZGVyOjpsaW5lVG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJp
bmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvVmVydGljYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVh
ZHJhdGljKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6
Y3VydmVUb1F1YWRyYXRpY1Ntb290aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFN0cmluZ0J1aWxkZXI6OmFyY1RvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U3RyaW5nQnVpbGRlcjo6Y2xvc2VQYXRoKTogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkdW1wTWFya2VyUmVjdHMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE9mZnNldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyk6IERpdHRvLgorCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKTogVXNlIGF1dG8KKyAgICAgICAg
Zm9yIHJldXNsdCBvZiBtYWtlU3RyaW5nLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMjBmNDQyNGIyYzBjZDIyODFhNWU2ZWJi
N2JmOTI4OGY5MmVhZDhiLi44Nzk4YTVkYzFmMWZhYjgwNDE4ZDNjZWI1OGNiMTE5OTkzZWYwZmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIxLTA1LTIyICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0
ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KTogVXNlIGFwcGVuZAorICAgICAgICBpbnN0
ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXZWJLaXQ6OmRvbWFpbnNUb1N0cmluZyk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpidWlsZExpc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJl
dmFsZW50UmVzb3VyY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjphcHBlbmRCb29sZWFuKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OmFwcGVuZE5leHRFbnRyeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cmVzb3VyY2VUb1N0cmluZyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6IERpdHRvLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OmRvbWFpbnNUb1N0cmluZyk6IERpdHRvLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSk6IE1vdmVkIHRoaXMgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk6OnRvU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk6OmVuY29kZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJz
dFBhcnR5OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6b3Bl
cmF0b3I9PSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjp0b1N0cmluZyBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhOjplbmNvZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0
eURhdGE6Om9wZXJhdG9yPCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6IE1vdmVkIG1lbWJl
cgorICAgICAgICBmdW5jdGlvbnMgb2YgdGhlIG5lc3RlZCBzdHJ1Y3R1cmVzIGludG8gdGhlIGlt
cGxlbWVudGF0aW9uIGZpbGUgYW5kIGZpeGVkCisgICAgICAgIHRoZSBpbmRlbnRhdGlvbiBvZiB0
aGUgc3RydWN0dXJlcyB0byBpbmRpY2F0ZSB0aGUgbmVzdGluZy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QpOiBEbyBub3QgdXNlIGEgbG9j
YWwKKyAgICAgICAgdmFyaWFibGUgZm9yIHRoZSByZXVzbHQgb2YgbWFrZVN0cmluZy4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpuZXdUZXN0aW5nU2Vzc2lvbik6IERpdHRvLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKTogVXNlIGFwcGVuZCBpbnN0
ZWFkIG9mIGFwcGVuZExpdGVyYWwKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6
OmFzSlNPTiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgpOiBEbyBub3QgdXNlIGEgbG9jYWwgdmFyaWFibGUg
Zm9yCisgICAgICAgIHRoZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
YnVpbGRBY2NlcHRMYW5ndWFnZXMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJh
bC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0VGFzazo6YWNjZXB0ZWRFeHRlbnNpb25zIGNvbnN0
KTogRGl0dG8uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lz
dGVyTUROU05hbWUpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVtb3J5U2FtcGxlcjo6d3JpdGVIZWFkZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVT
YW5kYm94UGFyYW1ldGVycyk6IERvIG5vdCB1c2UgYSBsb2NhbCB2YXJpYWJsZSBmb3IgdGhlIHJl
c3VsdCBvZgorICAgICAgICBtYWtlU3RyaW5nLiBBbHNvLCB0YWtlIGFkdmFudGFnZSBvZiB0aGUg
c3VwcG9ydCBmb3IgY29uY2F0ZW5hdGluZyBhbiBOU1N0cmluZyBpbnN0ZWFkCisgICAgICAgIG9m
IGNvbnZlcnRpbmcgaXQgdG8gYSBXVEY6OlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9tYWMv
V2ViTWVtb3J5U2FtcGxlci5tYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBs
ZXI6OnNhbXBsZVdlYktpdCBjb25zdCk6IFVzZSBBU0NJSUxpdGVyYWwgYW5kIHJlbW92ZSBleHBs
aWNpdAorICAgICAgICBjb252ZXJzaW9uIHRvIFN0cmluZy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5K
YXZhU2NyaXB0Q2FsbGJhY2spOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6ZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQpOiBVc2UgYXV0
byBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOiBVc2UgbWFrZVN0cmluZyBpbnN0
ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSk6IFVzZSBhdXRvIGZvciByZXN1bHQgb2Yg
bWFrZVN0cmluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOiBV
c2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKTogVXNlIGF1dG8gZm9yIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnRNZW1vcnlTYW1wbGVy
KTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmR1bXBIaXN0b3J5SXRlbSk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBh
cHBlbmRMaXRlcmFsLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDb250ZW50c0FzU3Ry
aW5nKTogRGl0dG8uCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFy
aWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDczNmNlN2IzMzNlYjJmZmUxMzE0NzkxMGQ0
ZWQ4NDY2MmQ0MTM4ZWQuLmVmMzk3NjIxOTNiODdiMzJmNjc1MGM5Y2E5NmMxOWJhOTZlNmNhNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVy
OjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHA6Cisg
ICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24pOiBEbyBub3QgdXNlIGxvY2FsCisgICAgICAgIGZvciByZXR1cm4gdmFsdWUgb2YgbWFrZVN0
cmluZy4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiZDE1MThmOTFlMDdhZTdkZTA3YzM0YzZj
ZDk4YmRmNzViY2EzNjczLi4yODMzNzQyNDg4M2UzZTc2OWVlMWRhNjliZjgxMTIwN2EyMTc0MTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUt
MjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTdHJp
bmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAg
ICAgICAocmVnRXhwRm9yTGFiZWxzKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisgICAgICAgIEFsc28gaW1ycG92ZSBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhIGJpdC4KKwog
MjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
cGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCA3MGEyMTViMzU1YzU2ZTA3OGU3ZjVhZGEwMmNkYjdiZjE4
YzliNDg3Li4zMTc4YzY2ZTFkMjZmZWI3MzNjZjNhYzMxMjc3ZGQ5MDE3ZGM3NWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVy
OjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjpn
ZXRfYWNjS2V5Ym9hcmRTaG9ydGN1dCk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBuZWRMaXRl
cmFsLgorICAgICAgICAqIFdlYlZpZXcuY3BwOiBEaXR0by4KKwogMjAyMS0wNS0yMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3
aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCmlu
ZGV4IDgxMWQ0ZGViZGFiMjkxZDkwNGY5NmJiZmU0NjdiNzljMDI3M2QxMTkuLjM2ZWRiZDlhNzMw
YWZlY2E1ZjJmMGI0MDQyMTE0NzQyOTY0YWZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNw
cApAQCAtNTUsMTAgKzU1LDEwIEBAIHN0YXRpYyBib29sIFBpbmdQb25nU3RhY2tPdmVyZmxvd09i
amVjdF9oYXNJbnN0YW5jZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgICAgIHJl
c3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwgZnVuY3Rpb24sIGNvbnN0cnVj
dG9yLCAxLCAmcG9zc2libGVWYWx1ZSwgZXhjZXB0aW9uKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
ZHVtbXkudmFsdWVPZihbMF0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoImR1bW15LnZhbHVl
T2YoWzBdIik7CiAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzUwMDA7IGkrKykKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIFsiLCBpLCAnXScpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIik7Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpOyIpOwogICAgICAg
ICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJlc3VsdCA9IEpTRXZhbHVh
dGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBudWxscHRyLCBudWxscHRyLCAxLCBleGNlcHRpb24p
OwogICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggYTAzMjky
MGU0MDM4YmMwYjVhOWQ1N2MzOWJhZWRkOWJhMWQ0MGFiZS4uN2ZmM2U2MWU0MjUyMzZhOGU2NTY1
NWFiOTBlM2E5ZDQ3OWU5YWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBT
Y3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1
bWVudCkKIHsKICAgICBWTSYgdm0gPSBtX2dsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBTdHJp
bmcoYXJndW1lbnQpKSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBhcmd1
bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3Vt
ZW50KEpTVmFsdWUgYXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggM2NiZDEyMDk5ZTg1YjBiNDI2MjA4MGE0
M2EzNWRlODFmMmJkNTdiOS4uMzA2NDRmMDE3NjkxOWFjZWI0Yjc2NjI2M2I3MjM3M2ZjMjFiNDNi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtNTQ4Miw3ICs1NDgyLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjp0
b1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBCaW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQ6Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIi4uLiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ii4uLiIpOwogICAgICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPnRvU3RyaW5nKGJ1aWxkZXIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU4MDIsNyArNTgwMiw3IEBAIHZvaWQg
UmVzdFBhcmFtZXRlck5vZGU6OmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlm
aWVyPiYgaWRlbnRpZmllcnMpCiAKIHZvaWQgUmVzdFBhcmFtZXRlck5vZGU6OnRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIuLi4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiLi4uIik7CiAgICAgbV9wYXR0ZXJuLT50b1N0
cmluZyhidWlsZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCBjMzZkMWQwMjEyZjkyZTYzZDY4Mzc0ZmUxZGY2
ZjBiZWM1ZWZkYjNjLi42MTRmNzE4OWJiOGIzYjY4N2M0ZmIwMjExMDQxMzczMGI3MjIyYzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcApAQCAtNDU1LDE5ICs0NTUsMTggQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompz
b24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICB9
OwogCiAgICAgLy8gdmVyc2lvbgotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgie1widmVyc2lvblwi
OjIiKTsKKyAgICBqc29uLmFwcGVuZCgie1widmVyc2lvblwiOjIiKTsKIAogICAgIC8vIHR5cGUK
LSAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcInR5cGVcIjoiKTsKLSAgICBqc29uLmFwcGVuZFF1
b3RlZEpTT05TdHJpbmcoc25hcHNob3RUeXBlVG9TdHJpbmcobV9zbmFwc2hvdFR5cGUpKTsKKyAg
ICBqc29uLmFwcGVuZCgiLFwidHlwZVwiOlwiIiwgc25hcHNob3RUeXBlVG9TdHJpbmcobV9zbmFw
c2hvdFR5cGUpLCAnIicpOwogCiAgICAgLy8gbm9kZXMKLSAgICBqc29uLmFwcGVuZExpdGVyYWwo
IixcIm5vZGVzXCI6WyIpOworICAgIGpzb24uYXBwZW5kKCIsXCJub2Rlc1wiOlsiKTsKICAgICAv
LyA8cm9vdD4KICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVn
Z2luZ1NuYXBzaG90KQotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIjAsMCwwLDAsMCxcIjB4
MFwiLFwiMHgwXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIjAsMCwwLDAsMCxcIjB4MFwiLFwi
MHgwXCIiKTsKICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiMCwwLDAsMCIp
OworICAgICAgICBqc29uLmFwcGVuZCgiMCwwLDAsMCIpOwogCiAgICAgZm9yIChIZWFwU25hcHNo
b3QqIHNuYXBzaG90ID0gbV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKTsgc25hcHNob3Q7
IHNuYXBzaG90ID0gc25hcHNob3QtPnByZXZpb3VzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBu
b2RlIDogc25hcHNob3QtPm1fbm9kZXMpCkBAIC00NzYsNyArNDc1LDcgQEAgU3RyaW5nIEhlYXBT
bmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9k
ZSYpPiBhbGxvd04KICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAgICAgLy8gbm9kZSBjbGFzcyBu
YW1lcwotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwibm9kZUNsYXNzTmFtZXNcIjpbIik7Cisg
ICAganNvbi5hcHBlbmQoIixcIm5vZGVDbGFzc05hbWVzXCI6WyIpOwogICAgIFZlY3RvcjxTdHJp
bmc+IG9yZGVyZWRDbGFzc05hbWVzKGNsYXNzTmFtZUluZGV4ZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogY2xhc3NOYW1lSW5kZXhlcykKICAgICAgICAgb3JkZXJlZENsYXNzTmFt
ZXNbZW50cnkudmFsdWVdID0gZW50cnkua2V5OwpAQCAtNTMyLDI0ICs1MzEsMTYgQEAgU3RyaW5n
IEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBz
aG90Tm9kZSYpPiBhbGxvd04KICAgICB9KTsKIAogICAgIC8vIGVkZ2VzCi0gICAganNvbi5hcHBl
bmRMaXRlcmFsKCIsXCJlZGdlc1wiOlsiKTsKKyAgICBqc29uLmFwcGVuZCgiLFwiZWRnZXNcIjpb
Iik7CiAgICAgZm9yIChhdXRvJiBlZGdlIDogbV9lZGdlcykKICAgICAgICAgYXBwZW5kRWRnZUpT
T04oZWRnZSk7CiAgICAganNvbi5hcHBlbmQoJ10nKTsKIAogICAgIC8vIGVkZ2UgdHlwZXMKLSAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcImVkZ2VUeXBlc1wiOlsiKTsKLSAgICBqc29uLmFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcoZWRnZVR5cGVUb1N0cmluZyhFZGdlVHlwZTo6SW50ZXJuYWwpKTsK
LSAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhl
ZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpQcm9wZXJ0eSkpOwotICAgIGpzb24uYXBwZW5kKCcs
Jyk7Ci0gICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGVkZ2VUeXBlVG9TdHJpbmcoRWRn
ZVR5cGU6OkluZGV4KSk7Ci0gICAganNvbi5hcHBlbmQoJywnKTsKLSAgICBqc29uLmFwcGVuZFF1
b3RlZEpTT05TdHJpbmcoZWRnZVR5cGVUb1N0cmluZyhFZGdlVHlwZTo6VmFyaWFibGUpKTsKLSAg
ICBqc29uLmFwcGVuZCgnXScpOworICAgIGpzb24uYXBwZW5kKCIsXCJlZGdlVHlwZXNcIjpbXCIi
LCBlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpJbnRlcm5hbCksICJcIixcIiIsIGVkZ2VUeXBl
VG9TdHJpbmcoRWRnZVR5cGU6OlByb3BlcnR5KSwgIlwiLFwiIiwgZWRnZVR5cGVUb1N0cmluZyhF
ZGdlVHlwZTo6SW5kZXgpLCAiXCIsXCIiLCBlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpWYXJp
YWJsZSksICJcIl0iKTsKIAogICAgIC8vIGVkZ2UgbmFtZXMKLSAgICBqc29uLmFwcGVuZExpdGVy
YWwoIixcImVkZ2VOYW1lc1wiOlsiKTsKKyAgICBqc29uLmFwcGVuZCgiLFwiZWRnZU5hbWVzXCI6
WyIpOwogICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbCo+IG9yZGVyZWRFZGdlTmFtZXMoZWRn
ZU5hbWVJbmRleGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVkZ2VOYW1lSW5k
ZXhlcykKICAgICAgICAgb3JkZXJlZEVkZ2VOYW1lc1tlbnRyeS52YWx1ZV0gPSBlbnRyeS5rZXk7
CkBAIC01NjUsNyArNTU2LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVu
Y3Rpb248Ym9vbCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICBqc29uLmFw
cGVuZCgnXScpOwogCiAgICAgaWYgKG1fc25hcHNob3RUeXBlID09IFNuYXBzaG90VHlwZTo6R0NE
ZWJ1Z2dpbmdTbmFwc2hvdCkgewotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcInJvb3Rz
XCI6WyIpOworICAgICAgICBqc29uLmFwcGVuZCgiLFwicm9vdHNcIjpbIik7CiAKICAgICAgICAg
SGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCk7
CiAKQEAgLTYwNSw3ICs1OTYsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihG
dW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgaWYg
KG1fc25hcHNob3RUeXBlID09IFNuYXBzaG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hvdCkgewog
ICAgICAgICAvLyBpbnRlcm5hbCBub2RlIGRlc2NyaXB0aW9ucwotICAgICAgICBqc29uLmFwcGVu
ZExpdGVyYWwoIixcImxhYmVsc1wiOlsiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIixcImxhYmVs
c1wiOlsiKTsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmRlcmVkTGFiZWxzKGxhYmVsSW5k
ZXhlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGFiZWxJbmRleGVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRleCAyZjlmOGYwNTljYjEzOTEzYWZhMzBmNjQ5
NzdlMDMzYjUzNGM5NDkzLi5jNzZmMWYyMDYzY2I1ZTkwMGNkYjMyNDc5NTAwMTNmZDA5Y2U2NjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpA
QCAtOTMsMTAgKzkyLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJy
b3JTdHJpbmcpOwogCi0gICAgU3RyaW5nQnVpbGRlciBmdW5jdGlvblN0cmluZzsKLSAgICBmdW5j
dGlvblN0cmluZy5hcHBlbmRMaXRlcmFsKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsg
XCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIik7Ci0gICAgZnVuY3Rpb25TdHJpbmcuYXBw
ZW5kKHRlc3QuaXNvbGF0ZWRDb3B5KCkucmVwbGFjZSgnYCcsICJcXGAiKSk7Ci0gICAgZnVuY3Rp
b25TdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKKyAg
ICBhdXRvIGZ1bmN0aW9uU3RyaW5nID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKFdlYkluc3BlY3Rv
ckF1ZGl0KSB7IFwidXNlIHN0cmljdFwiOyByZXR1cm4gZXZhbChgKCIsIFN0cmluZyB7IHRlc3Qg
fS5yZXBsYWNlKCdgJywgIlxcYCIpLCAiKWApKFdlYkluc3BlY3RvckF1ZGl0KTsgfSkiKTsKIAog
ICAgIEluamVjdGVkU2NyaXB0OjpFeGVjdXRlT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMu
b2JqZWN0R3JvdXAgPSAiYXVkaXQiX3M7CkBAIC0xMTIsNyArMTA4LDcgQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4sIE9wdGlvbmEKIAogICAgIG11dGVDb25zb2xlKCk7CiAKLSAgICBpbmplY3RlZFNjcmlwdC5l
eGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZy50b1N0cmluZygpLCBXVEZNb3ZlKG9w
dGlvbnMpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CisgICAgaW5qZWN0
ZWRTY3JpcHQuZXhlY3V0ZShlcnJvclN0cmluZywgZnVuY3Rpb25TdHJpbmcsIFdURk1vdmUob3B0
aW9ucyksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKIAogICAgIHVubXV0
ZUNvbnNvbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZmRmNWU1
NDVlNGM2OWFlNGU0NzFiODBiMjVlZjMxMjFjNzY5ODliZS4uMjViNzIzMWEyNWU3YTE2YzJhMDQ5
ODBmMWFlOTc3MTdhYzg1YTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5n
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKIAogICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUg
ZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KLSAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtl
U3RyaW5nKCJUaW1lciBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25z
b2xlTWVzc2FnZShsYWJlbCksICJcIiBhbHJlYWR5IGV4aXN0cyIpOworICAgICAgICBhdXRvIHdh
cm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVT
dHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICJcIiBhbHJlYWR5IGV4aXN0cyIpOwogICAg
ICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxP
YmplY3QsIDEpKSk7CiAgICAgfQogfQpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFMKICAgICBhdXRvIGl0ID0gbV90aW1lcy5maW5kKGxhYmVsKTsKICAgICBpZiAo
aXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJpbmcgd2FybmluZyA9
IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0Zv
ckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7CisgICAgICAgIGF1
dG8gd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVu
Y2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7
CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwog
ICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwot
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRl
U3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOworICAgIGF1dG8gbWVz
c2FnZSA9IG1ha2VTdHJpbmcoU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNv
bGVNZXNzYWdlKGxhYmVsKSwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBz
ZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJn
dW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKQEAgLTE3NiwxNCArMTc2LDE0IEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QKICAgICBhdXRvIGl0ID0gbV90aW1lcy5maW5kKGxhYmVs
KTsKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2Vu
ZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJp
bmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVu
Y2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgICAgIGF1dG8gd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJn
dW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMg
bm90IGV4aXN0Iik7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWlu
ZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0g
aXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0g
c3RhcnRUaW1lOwotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVu
dHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwor
ICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0
cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKICAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwpAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluCiAKICAgICAvLyBGSVhNRTogV2Vi
IEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Ig
bm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAotICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29u
c29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICBh
dXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdG
b3JDb25zb2xlTWVzc2FnZShsYWJlbCksICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwog
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1
ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxPYmplY3Qs
IDEpKSk7CiB9CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0CiAg
ICAgYXV0byBpdCA9IG1fY291bnRzLmZpbmQobGFiZWwpOwogICAgIGlmIChpdCA9PSBtX2NvdW50
cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVu
ZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmco
IkNvdW50ZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1l
c3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgYXV0byB3YXJuaW5n
ID0gbWFrZVN0cmluZygiQ291bnRlciBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJp
bmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICJcIiBkb2VzIG5vdCBleGlzdCIpOwogICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShnbG9iYWxPYmplY3Qs
IDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQz
YTI4MTEyNzA4MDU4MWYwZWQxNWI0ZjM4NTg4NTUwY2YzZWU2ZWUuLmJhODY4ZmI5NzlkMmQ2NjUz
ODE0Yzk4ODU4NmQxOTlmNzE1ZmZhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xMzY2LDcg
KzEzNjYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25KU0NTdGFjaywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBTdHJpbmdCdWlsZGVyIHRyYWNlOwotICAgIHRyYWNlLmFwcGVu
ZExpdGVyYWwoIi0tPiBTdGFjayB0cmFjZTpcbiIpOworICAgIHRyYWNlLmFwcGVuZCgiLS0+IFN0
YWNrIHRyYWNlOlxuIik7CiAKICAgICBGdW5jdGlvbkpTQ1N0YWNrRnVuY3RvciBmdW5jdG9yKHRy
YWNlKTsKICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0sIGZ1bmN0b3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCAzMzhmOWQ4OTgxNTg5YTNl
NjQwMWUxOTM0NzYxY2U1NzQ4MWE5NmU4Li4xM2M1Y2I5NDYxYjVmYWRiOGI1N2IzMjg2MWJkY2U1
N2RjYjNhMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVu
YTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAKIGNvbnN0
IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiB2
bSwgQVNDSUlMaXRlcmFsIHByZWZpeCwgdW5zaWduZWQgaWRlbnRpZmllcikKIHsKLSAgICBTdHJp
bmcgc3ltYm9sTmFtZSA9IG1ha2VTdHJpbmcocHJlZml4LCBpZGVudGlmaWVyKTsKKyAgICBhdXRv
IHN5bWJvbE5hbWUgPSBtYWtlU3RyaW5nKHByZWZpeCwgaWRlbnRpZmllcik7CiAgICAgYXV0byBz
eW1ib2wgPSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoc3ltYm9sTmFt
ZSk7CiAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wp
KTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCmluZGV4IDg1NzZiYWI2ZmE0MTVhY2Ey
ZDc5Y2FkNDIzYmUxMjA4MDgxNTE3NjMuLjExMzk5ZWIwOWIyYmNjODU5YzdlZDM2YTljZWU0ZDIz
M2M5Y2Q2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNv
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVD
bGllbnQuY3BwCkBAIC0xOTQsMTIgKzE5NCwxMSBAQCB2b2lkIENvbnNvbGVDbGllbnQ6OnByaW50
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsCiAK
ICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgYXBwZW5kVVJMQW5kUG9zaXRpb24o
YnVpbGRlciwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjogIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIpOwogICAg
IH0KIAogICAgIGFwcGVuZE1lc3NhZ2VQcmVmaXgoYnVpbGRlciwgc291cmNlLCB0eXBlLCBsZXZl
bCk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChtZXNzYWdl
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgnICcsIG1lc3NhZ2UpOwogCiAgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KQEAgLTIxNSw3ICsy
MTQsNyBAQCB2b2lkIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1l
bnRzKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYQogCiAgICAgaWYgKCFsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRVUkxBbmRQb3NpdGlvbihidWls
ZGVyLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFz
dENhbGxlci5jb2x1bW5OdW1iZXIoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
OiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjogIik7CiAgICAgfQogCiAgICAgYXBwZW5k
TWVzc2FnZVByZWZpeChidWlsZGVyLCBzb3VyY2UsIHR5cGUsIGxldmVsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5NTU3NTZi
YTQwNWY0MDA5NzA2MTBmOWE2OGM3ZWQ0MmE2N2NiMDE1Li4yZGVjZjhhODNjODBlODBjYTg2Nzdm
NGM3ODdiZjc5YzZjMjk5NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC02OSwxNCArNjksMTEgQEAgU3RyaW5nIGZvcm1hdERh
dGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQs
IGJvb2wgYXMKICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGOjp3ZWVrZGF5TmFtZVsodC53ZWVr
RGF5KCkgKyA2KSAlIDddKTsKIAogICAgICAgICBpZiAoYXNVVENWYXJpYW50KSB7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLCAiKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRo
RGF5KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnLCBXVEY6Om1vbnRoTmFtZVt0Lm1vbnRoKCldKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChXVEY6Om1vbnRoTmFtZVt0Lm1vbnRoKCldKTsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIFdURjo6bW9u
dGhOYW1lW3QubW9udGgoKV0sICcgJyk7CiAgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVp
bGRlciwgdC5tb250aERheSgpKTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwpAQCAtOTIsNyArODksNyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICBh
cHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5taW51dGUoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCc6Jyk7CiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0LnNlY29uZCgpKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgR01UIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIgR01UIik7CiAKICAgICAgICAgaWYgKCFhc1VUQ1ZhcmlhbnQpIHsKICAgICAgICAg
ICAgIGludCBvZmZzZXQgPSBhYnModC51dGNPZmZzZXRJbk1pbnV0ZSgpKTsKQEAgLTExMCwxMSAr
MTA3LDggQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0
LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAgIGNoYXIgdGltZVpv
bmVOYW1lWzcwXTsKICAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRp
bWVab25lTmFtZSksICIlWiIsICZndG0pOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodGltZVpv
bmVOYW1lWzBdKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICh0aW1lWm9uZU5hbWVbMF0pCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAo
IiwgdGltZVpvbmVOYW1lLCAnKScpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGQyY2QzNmVlNWE5
ZmIxMzUyMDcyNjVkMWI0ODM2M2JkOTBjMDZkODcuLjljNDc2YWViOTc0ZDU2MDNiMzg5YWE5Nzg0
NmFmZDVkNGViNGUwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlBhcnNlSW50LmgiCiAjaW5jbHVkZSAiU3RhY2tGcmFtZS5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIw
OSwxNyArMjA4LDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSBz
YW5pdGl6ZWRNZXNzYWdlU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgU3RyaW5nKCkpOwogCi0gICAgaWYgKCFuYW1lU3RyaW5nLmxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gbWVzc2FnZVN0cmluZzsKLQotICAgIGlmICghbWVzc2FnZVN0cmluZy5s
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG5hbWVTdHJpbmc7Ci0KLSAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobmFtZVN0cmluZyk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcpOwot
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcobmFt
ZVN0cmluZywgbmFtZVN0cmluZy5pc0VtcHR5KCkgJiYgbWVzc2FnZVN0cmluZy5pc0VtcHR5KCkg
PyAiIiA6ICI6ICIsIG1lc3NhZ2VTdHJpbmcpOwogfQogCiB2b2lkIEVycm9ySW5zdGFuY2U6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDRhZDU4MTlhMDhmOWFhNmJi
MmZmZDEwNWQ5OThiOTkyOTI3YzhkNS4uYjU5NWEzMDI4Mzc2OTNkNGI3NDg1ZmQ1MTVlYmExNjdi
ZWZmOTM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1
bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0
IFN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyKFN0cmluZ0J1aWxkZXI6Ok92ZXJmbG93SGFu
ZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGJhc2UsICIgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnIiwgc291cmNlVGV4dCwgIicsICciLCBiYXNlLCAiJyBpcyAiKTsK
ICAgICBpZiAodHlwZSA9PSBUeXBlU3ltYm9sKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoImEgU3ltYm9sIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJhIFN5bWJvbCIpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAodHlwZSA9PSBUeXBlT2JqZWN0KQotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJhbiBpbnN0YW5jZSBvZiAiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJhbiBpbnN0YW5jZSBvZiAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlz
cGxheVZhbHVlKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4
IGY4OTgwNmM1NmIyNjA1MjJmYzdjN2I5OGFmODUyY2Y3MzNmODk4NWYuLmQ3OGNjMmVhZTIyMjU5
NjY3YmU2ZGYwYzMyOGNiODI1NzEwYTg5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNjA5LDEzICs2MDksMTMg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgc3dpdGNoICh3ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJy
b3c6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRUVFRSIpOworICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJFRUVFRSIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFdlZWtkYXk6OlNob3J0OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiRUVFIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkVFRSIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdlZWtkYXk6Okxvbmc6Ci0gICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJFRUVFIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoIkVFRUUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWVrZGF5OjpOb25lOgogICAg
ICAgICBicmVhazsKQEAgLTYyNSwxMyArNjI1LDEzIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0
Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAoZXJh
KSB7CiAgICAgY2FzZSBFcmE6Ok5hcnJvdzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkdHR0dHIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkdHR0dH
Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXJhOjpTaG9ydDoKLSAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkdHRyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCJHR0ciKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFcmE6Okxvbmc6Ci0gICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJHR0dHIik7CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIkdHR0ciKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFcmE6
Ok5vbmU6CiAgICAgICAgIGJyZWFrOwpAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgSW50bERhdGVU
aW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHN3
aXRjaCAoeWVhcikgewogICAgIGNhc2UgWWVhcjo6VHdvRGlnaXQ6Ci0gICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ5eSIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJ5eSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFllYXI6Ok51bWVyaWM6CiAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ3knKTsKQEAgLTY1NCwxOSArNjU0LDE5IEBAIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogICAgIHN3aXRjaCAobW9udGgpIHsKICAgICBjYXNlIE1vbnRoOjpUd29EaWdpdDoKLSAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIk1NIik7CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIk1NIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTW9udGg6
Ok51bWVyaWM6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ00nKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNb250aDo6TmFycm93OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiTU1NTU0iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
TU1NTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb250aDo6U2hvcnQ6Ci0gICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJNTU0iKTsKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgiTU1NIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTW9udGg6Okxv
bmc6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJNTU1NIik7CisgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIk1NTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNb250aDo6Tm9uZToKICAgICAgICAgYnJlYWs7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgc3dpdGNoIChkYXkpIHsKICAgICBjYXNlIERheTo6VHdvRGlnaXQ6Ci0gICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkZCIpOworICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCJkZCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERheTo6TnVtZXJp
YzoKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnZCcpOwpAQCAtNzQ1LDEzICs3NDUs
MTMgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAvLyBodHRwczovL3VuaWNvZGUt
b3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0yMDczMQogICAgICAgICBzd2l0Y2ggKGRheVBl
cmlvZCkgewogICAgICAgICBjYXNlIERheVBlcmlvZDo6TmFycm93OgotICAgICAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkJCQkJCIik7CisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCJCQkJCQiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRGF5UGVyaW9kOjpTaG9ydDoKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
J0InKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERheVBlcmlvZDo6TG9uZzoK
LSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJCQkJCIik7CisgICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJCQkJCIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBEYXlQZXJpb2Q6Ok5vbmU6CiAgICAgICAgICAgICBicmVhazsKQEAg
LTc2Miw3ICs3NjIsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBzd2l0Y2ggKG1pbnV0ZSkgewogICAgIGNhc2Ug
TWludXRlOjpUd29EaWdpdDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwo
Im1tIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIm1tIik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWludXRlOjpOdW1lcmljOgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCdtJyk7CkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoIChzZWNv
bmQpIHsKICAgICBjYXNlIFNlY29uZDo6VHdvRGlnaXQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJzcyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJz
cyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlY29uZDo6TnVtZXJpYzoKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgncycpOwpAQCAtNzk2LDcgKzc5Niw3IEBAIHZvaWQgSW50
bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgneicpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6TG9uZzoKLSAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInp6enoiKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgienp6eiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6
Tm9uZToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGYwMzUwYzg0MzhkNzdlYmU3YTVmOTI3NDkw
N2UzY2I0MmEzN2U1ZDIuLjliYjRiMDdjODFiNGE2ZjFhNzFjNGYyOWIyZjJkNzc2ODAyYzBkYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCkBAIC0zODAsMzIgKzM4MCwzMSBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91
c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kCiAKICAgICBTdHJpbmdC
dWlsZGVyIHNrZWxldG9uQnVpbGRlcjsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgicm91bmRpbmctbW9kZS1oYWxmLXVwIik7CisgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
cm91bmRpbmctbW9kZS1oYWxmLXVwIik7CiAKICAgICBzd2l0Y2ggKG1fc3R5bGUpIHsKICAgICBj
YXNlIFN0eWxlOjpEZWNpbWFsOgogICAgICAgICAvLyBObyBza2VsZXRvbiBpcyBuZWVkZWQuCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3R5bGU6OlBlcmNlbnQ6Ci0gICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyY2VudCBzY2FsZS8xMDAiKTsKKyAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZCgiIHBlcmNlbnQgc2NhbGUvMTAwIik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3R5bGU6OkN1cnJlbmN5OiB7Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgY3VycmVuY3kvIik7Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoY3VycmVuY3kpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgY3VycmVuY3kv
IiwgY3VycmVuY3kpOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9y
Zy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tl
bGV0b25zLm1kI3VuaXQtd2lkdGgKICAgICAgICAgc3dpdGNoIChtX2N1cnJlbmN5RGlzcGxheSkg
ewogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6Q29kZToKLSAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1pc28tY29kZSIpOworICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHVuaXQtd2lkdGgtaXNvLWNvZGUiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6U3ltYm9sOgog
ICAgICAgICAgICAgLy8gRGVmYXVsdCBvcHRpb24uIERvIG5vdCBzcGVjaWZ5IHVuaXQtd2lkdGgu
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hcnJv
d1N5bWJvbDoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5p
dC13aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1
bml0LXdpZHRoLW5hcnJvdyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3Vy
cmVuY3lEaXNwbGF5OjpOYW1lOgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOworICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1lIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTQxNCwyNSArNDEzLDI0IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhCiAgICAgICAgIC8vIFRoZSBtZWFzdXJlLXVuaXQgc3RlbSB0YWtlcyBv
bmUgcmVxdWlyZWQgb3B0aW9uOiB0aGUgdW5pdCBpZGVudGlmaWVyIG9mIHRoZSB1bml0IHRvIGJl
IGZvcm1hdHRlZC4KICAgICAgICAgLy8gVGhlIGZ1bGwgdW5pdCBpZGVudGlmaWVyIGlzIHJlcXVp
cmVkOiBib3RoIHRoZSB0eXBlIGFuZCB0aGUgc3VidHlwZSAoZm9yIGV4YW1wbGUsIGxlbmd0aC1t
ZXRlcikuCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxv
Yi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1k
I3VuaXQKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtZWFzdXJlLXVu
aXQvIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBtZWFzdXJlLXVuaXQvIik7
CiAgICAgICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9IHdlbGxGb3JtZWRVbml0LT5udW1lcmF0b3I7
CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQobnVtZXJhdG9yVW5pdC50eXBlLCAnLScs
IG51bWVyYXRvclVuaXQuc3ViVHlwZSk7CiAgICAgICAgIGlmIChhdXRvIGRlbm9taW5hdG9yVW5p
dFZhbHVlID0gd2VsbEZvcm1lZFVuaXQtPmRlbm9taW5hdG9yKSB7CiAgICAgICAgICAgICBhdXRv
IGRlbm9taW5hdG9yVW5pdCA9IGRlbm9taW5hdG9yVW5pdFZhbHVlLnZhbHVlKCk7Ci0gICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBlci1tZWFzdXJlLXVuaXQvIik7
Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKGRlbm9taW5hdG9yVW5pdC50eXBl
LCAnLScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBwZXItbWVhc3VyZS11bml0LyIsIGRlbm9taW5hdG9yVW5pdC50eXBlLCAn
LScsIGRlbm9taW5hdG9yVW5pdC5zdWJUeXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3Vp
ZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3VuaXQtd2lkdGgKICAgICAgICAg
c3dpdGNoIChtX3VuaXREaXNwbGF5KSB7CiAgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6OlNob3J0
OgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRo
LXNob3J0Iik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0
aC1zaG9ydCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW5pdERpc3BsYXk6
Ok5hcnJvdzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5p
dC13aWR0aC1uYXJyb3ciKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1
bml0LXdpZHRoLW5hcnJvdyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW5p
dERpc3BsYXk6Okxvbmc6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1lIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDQwLDggKzQzOCw3IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhCiAgICAgfQogCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3Jn
L2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2Vs
ZXRvbnMubWQjaW50ZWdlci13aWR0aAotICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgaW50ZWdlci13aWR0aC8iKTsKLSAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKChXVEY6OklD
VTo6bWFqb3JWZXJzaW9uKCkgPj0gNjcpID8gJyonIDogJysnKTsgLy8gUHJpb3IgdG8gSUNVIDY3
LCB1c2UgdGhlIHN5bWJvbCArIGluc3RlYWQgb2YgKi4KKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCIgaW50ZWdlci13aWR0aC8iLCAoV1RGOjpJQ1U6Om1ham9yVmVyc2lvbigpID49IDY3KSA/
ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFk
IG9mICouCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdp
dHM7ICsraSkKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOwogCkBAIC00NzQs
MTggKzQ3MSwxOCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgSW50bE5vdGF0
aW9uOjpTdGFuZGFyZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlNj
aWVudGlmaWM6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2NpZW50
aWZpYyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2NpZW50aWZpYyIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6Ci0gICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJpbmciKTsKKyAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGVuZ2luZWVyaW5nIik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgogICAgICAgICBzd2l0Y2ggKG1fY29t
cGFjdERpc3BsYXkpIHsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6Ci0gICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQiKTsK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBjb21wYWN0LXNob3J0Iik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKLSAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7
CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgY29tcGFjdC1sb25nIik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTQ5NywyOSAr
NDk0LDI5IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgc3dpdGNoIChtX3NpZ25EaXNw
bGF5KSB7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKICAgICAgICAgaWYgKHVzZUFjY291
bnRpbmcpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YWNjb3VudGluZyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24t
YWNjb3VudGluZyIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0byIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIHNpZ24tYXV0byIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNpZ25EaXNw
bGF5OjpOZXZlcjoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWdu
LW5ldmVyIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5ldmVyIik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICAgICAg
aWYgKHVzZUFjY291bnRpbmcpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVp
bGRlci5hcHBlbmQoIiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFsd2F5cyIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgogICAgICAgICBp
ZiAodXNlQWNjb3VudGluZykKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1l
eGNlcHQtemVybyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24t
ZXhjZXB0LXplcm8iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFtX3VzZUdy
b3VwaW5nKQotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9m
ZiIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb2ZmIik7CiAKICAg
ICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRh
TG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbi5jcHAKaW5kZXggZGEyYWJjM2RmMWIzNzFjZjczNjIxYTNkYWJiMjQ2YjVlY2UwZjMz
ZC4uNDVhOWVmZmZkNjliM2FhN2Q1Mzk4MDEzMGFmOTE5OTFiZWJkNTM3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBn
ZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7CiAKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0
aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRp
b24uCi0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgU3RyaW5nKHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwg
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtLCBleGVjdXRhYmxlLCAwLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb24uY3BwCmluZGV4IGVjNTQ0Yzc4NDg3ZmQ1NDM1YTAwZGE2ZjNmYWRmZTAwMWUzNWMyMzUu
LmQwNDc1MjRiNWI0MTUwYWM5ZGVlYTEyMTRiZWQwYjViZDI4NDQ1MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24u
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0
dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0N1c3RvbVNldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2V0
dGVyKTsKIAogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1
c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBTdHJpbmcg
bmFtZSA9IG1ha2VTdHJpbmcoInNldCAiLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkpOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUs
IDEsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRl
eCBmNzFmMDc3NGJjMjkzMjgyODRhOTFjNjg4NzNmNTQzYTUxYjJlZmY5Li5lNjZhMDg5ZTk5MTg5
YmUxMTg0NmM0ZDUzMjdlODNiOTdkYzJmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01NDAs
NyArNTQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQYXJzZUZsb2F0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAogSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGdsb2JhbEZ1bmNEZWNvZGVVUkksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90
VW5lc2NhcGVXaGVuRGVjb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAgIHN0YXRp
YyBjb25zdCBCaXRtYXA8MjU2PiBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJID0gbWFrZUNo
YXJhY3RlckJpdG1hcCgKICAgICAgICAgIiMkJissLzo7PT9AIgogICAgICk7CiAKQEAgLTU0OSw0
NCArNTQ5LDQyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRGVjb2RlVVJJ
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8
MjU2PiBlbXB0eUJpdG1hcDsKKyAgICBzdGF0aWMgY29uc3QgQml0bWFwPDI1Nj4gZW1wdHlCaXRt
YXA7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0VuY29kZVVSSSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBzdGF0aWMgQml0bWFwPDI1
Nj4gZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAg
IHN0YXRpYyBjb25zdCBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSSA9IG1h
a2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIK
ICAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgogICAgICAgICAiMDEyMzQ1Njc4
OSIKICAgICAgICAgIiEjJCYnKCkqKywtLi86Oz0/QF9+IgogICAgICk7Ci0KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8
MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VDaGFyYWN0ZXJC
aXRtYXAoCisgICAgc3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlV2hlbkVuY29k
aW5nVVJJQ29tcG9uZW50ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAgIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaIgogICAgICAgICAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoi
CiAgICAgICAgICIwMTIzNDU2Nzg5IgogICAgICAgICAiIScoKSotLl9+IgogICAgICk7Ci0KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBC
aXRtYXA8MjU2PiBkb05vdEVzY2FwZSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCi0gICAgICAgICJB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6IgotICAgICAgICAiMDEyMzQ1Njc4OSIKLSAgICAgICAgIiorLS4vQF8iCi0gICAgKTsK
LQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlID0gbWFrZUNoYXJhY3RlckJpdG1h
cCgKKyAgICAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKyAgICAgICAgICAg
ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKKyAgICAgICAgICAgICIwMTIzNDU2Nzg5Igor
ICAgICAgICAgICAgIiorLS4vQF8iCisgICAgICAgICk7CisKICAgICAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAg
IGlmICh2aWV3LmlzOEJpdCgpKSB7CkBAIC01OTUsMTAgKzU5Myw4IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyCiAgICAgICAgICAgICAgICAgaW50IHUgPSBjWzBdOwogICAgICAgICAgICAgICAg
IGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKICAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChoZXgodSwgMikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJywgaGV4
KHUsIDIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwg
YnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgfQpAQCAtNjA2LDE2ICs2MDIsMTIgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNFc2NhcGUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICAgICAgY29uc3QgVUNoYXIqIGMgPSB2aWV3LmNoYXJh
Y3RlcnMxNigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgdmlldy5sZW5ndGgo
KTsgaysrLCBjKyspIHsKICAgICAgICAgICAgIFVDaGFyIHUgPSBjWzBdOwotICAgICAgICAgICAg
aWYgKHUgPj0gZG9Ob3RFc2NhcGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIldSIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1ID4+IDgpLCAyKSk7Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHUgJiAweEZGKSwg
MikpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8
TENoYXI+KHUpKSkKKyAgICAgICAgICAgIGlmICh1ID49IGRvTm90RXNjYXBlLnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiJXUiLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhf
dD4odSA+PiA4KSwgMiksIGhleChzdGF0aWNfY2FzdDx1aW50OF90Pih1KSwgMikpOworICAgICAg
ICAgICAgZWxzZSBpZiAoZG9Ob3RFc2NhcGUuZ2V0KHN0YXRpY19jYXN0PExDaGFyPih1KSkpCiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odSksIDIpKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnJScsIGhleCh1LCAyKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4ganNTdHJpbmco
dm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCmluZGV4IDYxMGYzNmNmZWJjZGI0NzdhOTI0NGRlOGQ4YjA4M2E4NGNk
Njc1NmIuLmRjMDJlODhiYzhjYWU0NzE0YjNkOWU5ZGJiNjk1YzRjNGFiY2I5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMzgsNyArMzM4
LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFp
bGVkRHVlVG9VbmRlZmluZWRPclN5bWJvbFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgp
KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwog
ICAgIH0KIApAQCAtMzQ4LDkgKzM0OCw5IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQg
U3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKIAogICAg
IGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewogICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInRydWUiKTsKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmYWxz
ZSIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzY3
LDcgKzM2Nyw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFw
cGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgICAgIGlm
ICghc3RkOjppc2Zpbml0ZShudW1iZXIpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgibnVsbCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtYmVy
KTsKICAgICAgICAgfQpAQCAtMzg1LDcgKzM4NSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlS
ZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3Qt
PmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIGlmIChob2xkZXIuaXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJudWxsIik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5l
ZE9yU3ltYm9sVmFsdWU7CkBAIC01NjcsNyArNTY3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9s
ZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdC
dWkKIAogICAgIHN3aXRjaCAoc3RyaW5naWZ5UmVzdWx0KSB7CiAgICAgICAgIGNhc2UgU3RyaW5n
aWZ5RmFpbGVkOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU3RyaW5naWZ5U3VjY2VlZGVkOgogICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAppbmRleCA1NDA5
MWQ3MGQ4YTczNjQ3ZGRmY2ZiNmIyOWY4ZGVhYjQ3ODc0YTM1Li4wMzI3YzMwMGNlNTdlMDY5YTNm
Y2FmMzc5NzExMDE3MjZkZDI2NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ0pvaW5lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSm9pbmVyLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcmJik7CiAgICAg
dm9pZCBhcHBlbmQ4Qml0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5kTGl0ZXJhbChj
b25zdCBJZGVudGlmaWVyJik7CiAgICAgdW5zaWduZWQgam9pbmVkTGVuZ3RoKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CiAKICAgICBMQ2hhciBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvcjsKQEAg
LTkyLDEzICs5MSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5k
OEJpdChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX3N0cmluZ3MudW5jaGVja2VkQXBwZW5k
KHsgc3RyaW5nLCBzdHJpbmcgfSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pv
aW5lcjo6YXBwZW5kTGl0ZXJhbChjb25zdCBJZGVudGlmaWVyJiBsaXRlcmFsKQotewotICAgIG1f
YWNjdW11bGF0ZWRTdHJpbmdzTGVuZ3RoICs9IGxpdGVyYWwubGVuZ3RoKCk7Ci0gICAgQVNTRVJU
KGxpdGVyYWwuc3RyaW5nKCkuaXM4Qml0KCkpOwotICAgIG1fc3RyaW5ncy51bmNoZWNrZWRBcHBl
bmQoeyBsaXRlcmFsLnN0cmluZygpLCB7IH0gfSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBK
U1N0cmluZ0pvaW5lcjo6YXBwZW5kRW1wdHlTdHJpbmcoKQogewogICAgIG1fc3RyaW5ncy51bmNo
ZWNrZWRBcHBlbmQoeyB7IH0sIHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKaW5kZXggYTdiMmRiMzhiZmM2MjA3ZTUwZTQyNmJhNjJhYTljMjA1ZWMyZWYz
OC4uYTAxMTgzZjdkZmJiZjdkNTVlZGQ1MzAxNjAxZThiNDg5ZmIyY2E2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTEwMDksOSArMTAwOSw5IEBAIHZv
aWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwg
bGV2ZWwsIE9wdGlvbnM6OklEIGlkCiAKICAgICBpZiAod2FzT3ZlcnJpZGRlbiAmJiAoZHVtcERl
ZmF1bHRzT3B0aW9uID09IER1bXBEZWZhdWx0cykpIHsKICAgICAgICAgYXV0byBkZWZhdWx0T3B0
aW9uID0gT3B0aW9uUmVhZGVyOjpkZWZhdWx0Rm9yKGlkKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgKGRlZmF1bHQ6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIChkZWZh
dWx0OiAiKTsKICAgICAgICAgZGVmYXVsdE9wdGlvbi5kdW1wKGJ1aWxkZXIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIikiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIikiKTsK
ICAgICB9CiAKICAgICBpZiAobmVlZHNEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDMwODBmOTA2Njk3M2M2
MDdlODhiNTkwZTczNjY3NjQyODU0YmIwNmEuLjA4Mjg3ODA3MjI1NWQ4OTczNzA4MjU5ODJjZmU3
ZTJlNTA0OThiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcApAQCAtMzg0LDkgKzM4NCw5IEBAIGlubGluZSB2b2lkIGFwcGVuZExp
bmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBVQ2hhciBs
aW5lCiAgICAgZWxzZSBpZiAobGluZVRlcm1pbmF0b3IgPT0gJ1xyJykKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ3InKTsKICAgICBlbHNlIGlmIChsaW5lVGVybWluYXRvciA9PSAweDIwMjgpCi0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidTIwMjgiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoInUyMDI4Iik7CiAgICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
InUyMDI5Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1MjAyOSIpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggZDcxZjNlYzE5ZmYzNjc0Njc3MDdm
ZTUyYjg4MDI0YzU2MjdhMTRhZC4uMTZhM2I0NjJhNDdmMzY3YzIyMzY5YTIxMGY4NGQ3YmI0YmMw
ZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAKQEAgLTEwNDksNyArMTA0OSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6
cmVwb3J0VG9wRnVuY3Rpb25zKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICAgICBoYXNoID0g
c3RyZWFtLnRvU3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaGFzaCA9ICI8
bmlsPiJfczsKLSAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZy
YW1lLmRpc3BsYXlOYW1lKG1fdm0pLCAnIycsIGhhc2gsICc6JywgZnJhbWUuc291cmNlSUQoKSk7
CisgICAgICAgIGF1dG8gZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWUuZGlzcGxh
eU5hbWUobV92bSksICcjJywgaGFzaCwgJzonLCBmcmFtZS5zb3VyY2VJRCgpKTsKICAgICAgICAg
ZnVuY3Rpb25Db3VudHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9yLT52YWx1ZSsr
OwogICAgICAgICB0b3RhbFNhbXBsZXMrKzsKICAgICB9CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2
b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0
KQogICAgICAgICB9OwogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3RhY2tUcmFjZS5m
cmFtZXMuZmlyc3QoKTsKLSAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3Ry
aW5nKGZyYW1lLmRpc3BsYXlOYW1lKG1fdm0pLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9uKGZyYW1l
LnNlbWFudGljTG9jYXRpb24sIGZyYW1lLndhc21Db21waWxhdGlvbk1vZGUpKTsKKyAgICAgICAg
YXV0byBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3Zt
KSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53
YXNtQ29tcGlsYXRpb25Nb2RlKSk7CiAgICAgICAgIGlmIChPcHRpb25hbDxzdGQ6OnBhaXI8U3Rh
Y2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uID0gZnJh
bWUubWFjaGluZUxvY2F0aW9uKSB7CiAgICAgICAgICAgICBmcmFtZURlc2NyaXB0aW9uID0gbWFr
ZVN0cmluZyhmcmFtZURlc2NyaXB0aW9uLCAiIDwtLSAiLAogICAgICAgICAgICAgICAgIG1hY2hp
bmVMb2NhdGlvbi0+c2Vjb25kLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9y
TG9jYXRpb24obWFjaGluZUxvY2F0aW9uLT5maXJzdCwgV1RGOjpudWxsb3B0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCBhZmJlMmIz
OTYxNWYxN2RiMzVjOGM4NzEzYzk5M2Q0ZjZmMGRjYTQ0Li42MjIxMTM5NDliZTlhNzU3ZWQ0MDBi
NTJkYTUxMjk4YTMyM2RhYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKQEAgLTg1LDIwICs4NSwxNyBAQCBTdHJpbmcgVHlwZVByb2ZpbGVy
Ojp0eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNo
RGVzYwogCiAgICAganNvbi5hcHBlbmQoJ3snKTsKIAotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJnbG9iYWxUeXBlU2V0XCI6Iik7CisgICAganNvbi5hcHBlbmQoIlwiZ2xvYmFsVHlwZVNldFwi
OiIpOwogICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2ds
b2JhbFZhcmlhYmxlSUQgIT0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0cykKICAgICAgICAg
anNvbi5hcHBlbmQobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+dG9KU09OU3RyaW5nKCkpOwog
ICAgIGVsc2UKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgIGpz
b24uYXBwZW5kKCJudWxsIik7CiAgICAganNvbi5hcHBlbmQoJywnKTsKIAogICAgIGpzb24uYXBw
ZW5kKCJcImluc3RydWN0aW9uVHlwZVNldFwiOiIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlw
ZVNldC0+dG9KU09OU3RyaW5nKCksICcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwi
aXNPdmVyZmxvd25cIjoiKTsKLSAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5pc092ZXJmbG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9u
LT5tX2dsb2JhbFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29uLmFwcGVuZExp
dGVyYWwoInRydWUiKTsKLSAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiZmFs
c2UiKTsKKyAgICBib29sIGlzT3ZlcmZsb3duID0gbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBl
U2V0LT5pc092ZXJmbG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0
aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpOworICAgIGpzb24uYXBwZW5kKCJc
ImlzT3ZlcmZsb3duXCI6IiwgaXNPdmVyZmxvd24gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAg
IGpzb24uYXBwZW5kKCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5jcHAKaW5kZXggNzIxNDEwYjEwZGI0MWFiOTgyYTk4OGY1OWM2MWI3NTA0MWM1ODI0Zi4uZDg4
YmEyOGMzZjMwOTI3MmUzZGEyZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTk1LDQyICs5NSwzNiBAQCBTdHJpbmcgVHlw
ZVNldDo6ZHVtcFR5cGVzKCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKICAgICBp
ZiAobV9zZWVuVHlwZXMgJiBUeXBlRnVuY3Rpb24pCi0gICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJh
bCgiRnVuY3Rpb24gIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCJGdW5jdGlvbiAiKTsKICAgICBp
ZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVy
YWwoIlVuZGVmaW5lZCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5lZCAiKTsKICAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFs
KCJOdWxsICIpOworICAgICAgICBzZWVuLmFwcGVuZCgiTnVsbCAiKTsKICAgICBpZiAobV9zZWVu
VHlwZXMgJiBUeXBlQm9vbGVhbikKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJCb29sZWFu
ICIpOworICAgICAgICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAiKTsKICAgICBpZiAobV9zZWVuVHlw
ZXMgJiBUeXBlQW55SW50KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIkFueUludCAiKTsK
KyAgICAgICAgc2Vlbi5hcHBlbmQoIkFueUludCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlTnVtYmVyKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk51bWJlciAiKTsKKyAgICAg
ICAgc2Vlbi5hcHBlbmQoIk51bWJlciAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3Ry
aW5nKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlN0cmluZyAiKTsKKyAgICAgICAgc2Vl
bi5hcHBlbmQoIlN0cmluZyAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlT2JqZWN0KQot
ICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk9iamVjdCAiKTsKKyAgICAgICAgc2Vlbi5hcHBl
bmQoIk9iamVjdCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3ltYm9sKQotICAgICAg
ICBzZWVuLmFwcGVuZExpdGVyYWwoIlN5bWJvbCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlN5
bWJvbCAiKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3Rv
cnkpIHsKLSAgICAgICAgc2Vlbi5hcHBlbmQoc2hhcGUtPm1fY29uc3RydWN0b3JOYW1lKTsKLSAg
ICAgICAgc2Vlbi5hcHBlbmQoJyAnKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBzaGFw
ZSA6IG1fc3RydWN0dXJlSGlzdG9yeSkKKyAgICAgICAgc2Vlbi5hcHBlbmQoc2hhcGUtPm1fY29u
c3RydWN0b3JOYW1lLCAnICcpOwogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkp
IAotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlxuU3RydWN0dXJlczpbICIpOwotICAgIGZv
ciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpIHsKLSAgICAgICAgc2Vl
bi5hcHBlbmQoc2hhcGUtPnN0cmluZ1JlcHJlc2VudGF0aW9uKCkpOwotICAgICAgICBzZWVuLmFw
cGVuZCgnICcpOwotICAgIH0KKyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpbICIp
OworICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpCisgICAg
ICAgIHNlZW4uYXBwZW5kKHNoYXBlLT5zdHJpbmdSZXByZXNlbnRhdGlvbigpLCAnICcpOwogICAg
IGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKQogICAgICAgICBzZWVuLmFwcGVuZCgnXScp
OwogCi0gICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpIHsKLSAgICAgICAgc2Vlbi5h
cHBlbmRMaXRlcmFsKCJcbkxlYXN0IENvbW1vbiBBbmNlc3RvcjogIik7Ci0gICAgICAgIHNlZW4u
YXBwZW5kKGxlYXN0Q29tbW9uQW5jZXN0b3IoKSk7Ci0gICAgfQorICAgIGlmIChtX3N0cnVjdHVy
ZUhpc3Rvcnkuc2l6ZSgpKQorICAgICAgICBzZWVuLmFwcGVuZCgiXG5MZWFzdCBDb21tb24gQW5j
ZXN0b3I6ICIsIGxlYXN0Q29tbW9uQW5jZXN0b3IoKSk7CiAKICAgICByZXR1cm4gc2Vlbi50b1N0
cmluZygpOwogfQpAQCAtMjU4LDU5ICsyNTIsNTcgQEAgU3RyaW5nIFR5cGVTZXQ6OnRvSlNPTlN0
cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgIGpzb24uYXBwZW5kKCd7
Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7Cisg
ICAganNvbi5hcHBlbmQoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7CiAgICAganNvbi5hcHBlbmRR
dW90ZWRKU09OU3RyaW5nKGRpc3BsYXlOYW1lKCkpOwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAK
LSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicHJpbWl0aXZlVHlwZU5hbWVzXCI6Iik7Ci0gICAg
anNvbi5hcHBlbmQoJ1snKTsKKyAgICBqc29uLmFwcGVuZCgiXCJwcmltaXRpdmVUeXBlTmFtZXNc
IjpbIik7CiAgICAgYm9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKICAgICBpZiAobV9zZWVuVHlwZXMg
JiBUeXBlVW5kZWZpbmVkKSB7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiXCJVbmRlZmluZWRcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgi
XCJVbmRlZmluZWRcIiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkg
ewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsK
ICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
Ik51bGxcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiXCJOdWxsXCIiKTsKICAgICB9CiAgICAg
aWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkK
ICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7
Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJCb29sZWFuXCIiKTsKKyAgICAgICAganNv
bi5hcHBlbmQoIlwiQm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5
cGVBbnlJbnQpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBw
ZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5k
TGl0ZXJhbCgiXCJJbnRlZ2VyXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwiSW50ZWdlclwi
Iik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpIHsKICAgICAgICAg
aWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhh
c0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJOdW1iZXJcIiIp
OworICAgICAgICBqc29uLmFwcGVuZCgiXCJOdW1iZXJcIiIpOwogICAgIH0KICAgICBpZiAobV9z
ZWVuVHlwZXMgJiBUeXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCiAgICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIlwiU3RyaW5nXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQo
IlwiU3RyaW5nXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVN5bWJvbCkg
ewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsK
ICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
IlN5bWJvbFwiIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJcIlN5bWJvbFwiIik7CiAgICAgfQog
ICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNv
bi5hcHBlbmRMaXRlcmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgnWycp
OworICAgIGpzb24uYXBwZW5kKCJcInN0cnVjdHVyZXNcIjpbIik7CiAgICAgaGFzQW5JdGVtID0g
ZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6
ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKQEAgLTM2MCwxMSArMzUyLDggQEAg
U3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFw
cGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgaWYgKG1fcHJvdG8pIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJfX3Byb3Rv
X18iKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwot
ICAgIH0KKyAgICBpZiAobV9wcm90bykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpfX3Byb3Rv
X18iLCBtX3Byb3RvLT5wcm9wZXJ0eUhhc2goKSk7CiAKICAgICBtX3Byb3BlcnR5SGFzaCA9IG1h
a2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9wcm9w
ZXJ0eUhhc2g7CkBAIC00MzcsNTAgKzQyNiw0NyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnRv
SlNPTlN0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgIGpzb24uYXBw
ZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0b3JOYW1lXCI6
Iik7CisgICAganNvbi5hcHBlbmQoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CiAgICAganNvbi5h
cHBlbmRRdW90ZWRKU09OU3RyaW5nKG1fY29uc3RydWN0b3JOYW1lKTsKICAgICBqc29uLmFwcGVu
ZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImlzSW5EaWN0aW9uYXJ5TW9kZVwi
OiIpOworICAgIGpzb24uYXBwZW5kKCJcImlzSW5EaWN0aW9uYXJ5TW9kZVwiOiIpOwogICAgIGlm
IChtX2lzSW5EaWN0aW9uYXJ5TW9kZSkKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJ0cnVl
Iik7CisgICAgICAgIGpzb24uYXBwZW5kKCJ0cnVlIik7CiAgICAgZWxzZQotICAgICAgICBqc29u
LmFwcGVuZExpdGVyYWwoImZhbHNlIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOwog
ICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZmllbGRz
XCI6Iik7Ci0gICAganNvbi5hcHBlbmQoJ1snKTsKKyAgICBqc29uLmFwcGVuZCgiXCJmaWVsZHNc
IjpbIik7CiAgICAgYm9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gaXQgPSBt
X2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgZm9yIChhdXRvJiBmaWVsZCA6IG1fZmllbGRzKSB7CiAgICAgICAgIGlmIChoYXNBbkl0
ZW0pCiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0
cnVlOwogCi0gICAgICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCkuZ2V0KCkpOworICAgICAgICBT
dHJpbmcgZmllbGROYW1lKGZpZWxkLmdldCgpKTsKICAgICAgICAganNvbi5hcHBlbmRRdW90ZWRK
U09OU3RyaW5nKGZpZWxkTmFtZSk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCddJyk7Ci0gICAg
anNvbi5hcHBlbmQoJywnKTsKKyAgICBqc29uLmFwcGVuZCgiXSwiKTsKIAotICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiXCJvcHRpb25hbEZpZWxkc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7
CisgICAganNvbi5hcHBlbmQoIlwib3B0aW9uYWxGaWVsZHNcIjpbIik7CiAgICAgaGFzQW5JdGVt
ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9vcHRpb25hbEZpZWxkcy5iZWdpbigpLCBl
bmQgPSBtX29wdGlvbmFsRmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3Ig
KGF1dG8mIGZpZWxkIDogbV9vcHRpb25hbEZpZWxkcykgewogICAgICAgICBpZiAoaGFzQW5JdGVt
KQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1
ZTsKIAotICAgICAgICBTdHJpbmcgZmllbGROYW1lKCgqaXQpLmdldCgpKTsKKyAgICAgICAgU3Ry
aW5nIGZpZWxkTmFtZShmaWVsZC5nZXQoKSk7CiAgICAgICAgIGpzb24uYXBwZW5kUXVvdGVkSlNP
TlN0cmluZyhmaWVsZE5hbWUpOwogICAgIH0KICAgICBqc29uLmFwcGVuZCgnXScpOwogICAgIGpz
b24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicHJvdG9cIjoiKTsK
KyAgICBqc29uLmFwcGVuZCgiXCJwcm90b1wiOiIpOwogICAgIGlmIChtX3Byb3RvKQogICAgICAg
ICBqc29uLmFwcGVuZChtX3Byb3RvLT50b0pTT05TdHJpbmcoKSk7CiAgICAgZWxzZQotICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIm51bGwi
KTsKIAogICAgIGpzb24uYXBwZW5kKCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggYWE4
NmQ1YjEwYjcyZjE2YjgyODNkNzhmNjkxYzkxZjliNDIxMWIwNS4uYzNmMTcwY2MyOGFiZWVjNDAy
YTJjNzI4ZmQxNzFiYWVjNjU4YmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTE0NywyNSAr
MTQ3LDE4IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3Ry
aW5nKQogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNp
dHkobGVuZ3RoKTsKIAotICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOwotICAgIFVDaGFyIGNo
YXJhY3RlciA9IDA7CisgICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIgPSAwOwogICAgIFVDaGFy
IG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0
ZXI7Ci0gICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAgIG5leHRDaGFy
YWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7Ci0KKyAgICAg
ICAgYXV0byBjaGFyYWN0ZXIgPSBzdGQ6OmV4Y2hhbmdlKG5leHRDaGFyYWN0ZXIsIGkgKyAxIDwg
bGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMCk7CiAgICAgICAgIGlmIChzaG91bGRFc2Nh
cGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewot
ICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaGFy
YWN0ZXIgPj4gOCksIDIpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaGFyYWN0ZXIpLCAyKSk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDB4RkYpCisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnJScsIGhleChjaGFyYWN0ZXIsIDIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlKyIsIGhleChzdGF0aWNfY2FzdDx1aW50OF90Pihj
aGFyYWN0ZXIgPj4gOCksIDIpLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4oY2hhcmFjdGVyKSwg
MikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVy
KTsKKyAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNP
TlZhbHVlcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRleCA0Nzc2ODU0
ODA4Mjk3ZWNkMjM5OGYyYzUwN2U4YzZhMjhhZjZlNTAxLi4zZDI1NmJlZjJkYTkxMTQ4MzI5YTUw
M2FmMmI0YjY3N2ViNTIxOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVz
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNTIzLDI1ICs1MjMs
MjUgQEAgdm9pZCBWYWx1ZTo6ZXNjYXBlU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIGZvciAoVUNoYXIgY29kZVVuaXQgOiBzdHJpbmcuY29kZVVu
aXRzKCkpIHsKICAgICAgICAgc3dpdGNoIChjb2RlVW5pdCkgewogICAgICAgICBjYXNlICdcYic6
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcYiIpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIlxcYiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNh
c2UgJ1xmJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxmIik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxmIik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXG4i
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcXG4iKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBjYXNlICdccic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIlxcciIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcciIpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJ1x0JzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXFx0Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFx0Iik7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XFxcXCIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJyInOgotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFwiIik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiXFxcIiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgLy8gV2UgZXNjYXBlIDwgYW5kID4gdG8gcHJldmVudCBzY3JpcHQgZXhlY3V0aW9uLgpAQCAt
NTk4LDEzICs1OTgsMTMgQEAgdm9pZCBWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91
dHB1dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6TnVs
bDoKLSAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZCgibnVsbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJvb2xlYW46
CiAgICAgICAgIGlmIChtX3ZhbHVlLmJvb2xlYW4pCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5k
TGl0ZXJhbCgidHJ1ZSIpOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgidHJ1ZSIpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVHlwZTo6U3RyaW5nOgogICAgICAgICBhcHBlbmREb3VibGVRdW90ZWRTdHJpbmcob3V0cHV0
LCBtX3ZhbHVlLnN0cmluZyk7CkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBWYWx1ZTo6d3JpdGVK
U09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKICAgICBjYXNlIFR5cGU6OkRvdWJsZToK
ICAgICBjYXNlIFR5cGU6OkludGVnZXI6IHsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1f
dmFsdWUubnVtYmVyKSkKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFsKCJudWxsIik7
CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJudWxsIik7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93dGYvTG9nZ2Vy
LmgKaW5kZXggZTk5ZDQ5YmYyZTlkOWFkMmE2YjNiNjE4MGRjYmQ5OGNkNzg1ZmE1NC4uMGQ3N2Ew
NTJlZTU4NjNmOTMyNzE2NDkwYTI3YTA2YzM1YjAwZGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTG9nZ2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAgLTMwNyw3ICsz
MDcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50PgogICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2
ZWwgbGV2ZWwsIGNvbnN0IEFyZ3VtZW50Ji4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBT
dHJpbmcgbG9nTWVzc2FnZSA9IG1ha2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0b1N0
cmluZyhhcmd1bWVudHMpLi4uKTsKKyAgICAgICAgYXV0byBsb2dNZXNzYWdlID0gbWFrZVN0cmlu
ZyhMb2dBcmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOwogCiAjaWYg
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgV1RGTG9nKCZjaGFubmVsLCAiJXMiLCBsb2dN
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnQ+CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGxv
Z1ZlcmJvc2UoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIGNvbnN0
IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgbGluZSwgY29uc3QgQXJndW1l
bnQmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIFN0cmluZyBsb2dNZXNzYWdlID0gbWFr
ZVN0cmluZyhMb2dBcmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOwor
ICAgICAgICBhdXRvIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFyZ3VtZW50
Pjo6dG9TdHJpbmcoYXJndW1lbnRzKS4uLik7CiAKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICAgICBXVEZMb2dWZXJib3NlKGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCAmY2hhbm5lbCwgIiVz
IiwgbG9nTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDkzOTc3
NTA4YjRjNTdlMTkyMTA3Y2JiMmM1NjJmZmJlYWU1ZjhhNjcuLjRiYmM5ODFkOGRiMDJiNTM2OWRh
ZmMxNDRlOGFkMjQ0MzlmZGVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtMzYsNyArMzYsNiBA
QAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTU2NSwxNSArNTY0LDEwIEBAIHZvaWQgTWVkaWFUaW1lOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiAKIFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5nKCkgY29uc3QK
IHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ3snKTsK
LSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGlt
ZVZhbHVlLCAnLycsIG1fdGltZVNjYWxlLCAiID0gIik7Ci0gICAgYnVpbGRlci5hcHBlbmQodG9E
b3VibGUoKSk7Ci0gICAgaWYgKGlzSW52YWxpZCgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgaW52YWxpZCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7Ci0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyKiBpbnZhbGlkID0gaXNJbnZhbGlk
KCkgPyAiLCBpbnZhbGlkIiA6ICIiOworICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZygneycsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2FsZSwgIiA9
ICIsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CiB9CiAKIFJlZjxKU09OOjpPYmplY3Q+IE1l
ZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKaW5kZXggMjJhY2VmY2M4YmJjZmZjMTMzMjA3NWE3
ODZhYmM0YmUzZGI0ZmNiMi4uMDNmNTg2MWMzM2NiZTJmMzlkNWMxMDNjOGE5MjBlNDFiZDAxZmVm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmgKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIHZvaWQgd3JpdGVJbnRlZ2VyVG9CdWZmZXIoSW50
ZWdlclR5cGUgaW50ZWdlciwgQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24KIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVy
IE51bWJlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmdJbXBs
KFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyKQorY29uc3RleHByIHVuc2lnbmVkIGxlbmd0aE9m
SW50ZWdlckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKIHsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSAwOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIHVuc2lnbmVk
IGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdlclR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgbGVu
Z3RoT2ZJbnRlZ2VyQXNTdHJpbmcoSW50ZWdlclR5cGUgaW50ZWdlcikKK2NvbnN0ZXhwciB1bnNp
Z25lZCBsZW5ndGhPZkludGVnZXJBc1N0cmluZyhJbnRlZ2VyVHlwZSBpbnRlZ2VyKQogewogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbF92PEludGVnZXJUeXBlPik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxJbnRlZ2VyVHlwZSwgYm9vbD4pIHsKQEAgLTEyOCwz
ICsxMjgsNiBAQCBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoSW50ZWdl
clR5cGUgaW50ZWdlcikKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6bGVu
Z3RoT2ZJbnRlZ2VyQXNTdHJpbmc7Cit1c2luZyBXVEY6OndyaXRlSW50ZWdlclRvQnVmZmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1NGYyYjI0MjU5YzU4MGZmMzE0NWU4
ZTdiZmYzYzg4YzYyZjk5N2EyLi42NjY4YWM2MjczMGUwODY5NjUwYjI5ODIwZjgzNmRmNzcxYTg0
MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtNjksOCArNjksNiBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IEFkZCBhIFN0cmluZ1R5cGVBZGFwdGVyIHNvIHdlIGNhbiBh
cHBlbmQgb25lIHN0cmluZyBidWlsZGVyIHRvIGFub3RoZXIgd2l0aCB2YXJpYWRpYyBhcHBlbmQu
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nQnVpbGRlciYpOwogCi0gICAgdGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IHZvaWQgYXBwZW5kTGl0ZXJhbChjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVy
cywgY2hhcmFjdGVyQ291bnQgLSAxKTsgfQotCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoVUNo
YXIpID0gZGVsZXRlOwogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyKExDaGFyKSA9IGRlbGV0ZTsK
ICAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihjaGFyKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAppbmRleCAyNjkwMmUwZmEyNDViZGFlMWVmZjFlYTBjNzE3
YjZkMTliNzlmMTQ2Li4yZTM4ZWY3Nzg5OWEzYzNlYmFmZWI1MWRhOTQwNmNmYWJkZGY3MzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0xNzAsMTUgKzE3MCwx
NSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgbV92ZWN0b3I7CiB9OwogCi10
ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewordGVtcGxh
dGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4gewogcHVibGlj
OgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIFN0cmlu
Z1R5cGVBZGFwdGVyKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyB7IHN0
cmluZyB9CiAgICAgewogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9Ci0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5pc051bGwoKSB8fCBtX3N0cmluZy5pczhCaXQoKTsgfQorICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nID8gbV9zdHJpbmctPmxlbmd0aCgpIDog
MDsgfQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gIW1fc3RyaW5nIHx8IG1fc3Ry
aW5nLT5pczhCaXQoKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKICAgICB7CiAgICAg
ICAgIFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRl
c3RpbmF0aW9uKTsKQEAgLTE4Niw3ICsxODYsMjMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBjb25zdCBTdHJpbmcmIG1fc3RyaW5nOworICAgIFN0cmluZ0ltcGwqIGNvbnN0IG1f
c3RyaW5nOworfTsKKwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3Ry
aW5nSW1wbCosIHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwqLCB2
b2lkPiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQXRvbVN0cmluZ0ltcGwqIHN0
cmluZykKKyAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geyBz
dGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSB9CisgICAgeworICAgIH0KK307CisKK3Rl
bXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nLCB2b2lkPiA6IHB1YmxpYyBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geworcHVibGljOgorICAgIFN0cmlu
Z1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgICAgICA6IFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ0ltcGwqLCB2b2lkPiB7IHN0cmluZy5pbXBsKCkgfQorICAgIHsKKyAgICB9
CiB9OwogCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEF0b21TdHJpbmcsIHZv
aWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewpAQCAtMTk3LDYg
KzIxMywzMyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdJbXBsJiwgdm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyB7IHN0cmluZyB9
CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmxlbmd0aCgpOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5pczhCaXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKKyAgICB7CisgICAg
ICAgIFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRl
c3RpbmF0aW9uKTsKKyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RS
SU5HKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZ0ltcGwmIG1fc3RyaW5nOworfTsK
KwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5nSW1wbCYsIHZv
aWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lkPiB7CitwdWJs
aWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgICAgICA6
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lkPiB7IHN0cmluZyB9CisgICAgewor
ICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBjbGFzcyBTdHJp
bmdUeXBlQWRhcHRlcjxzdGQ6OnR1cGxlPFN0cmluZ1R5cGVzLi4uPiwgdm9pZD4gewogcHVibGlj
OgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKHN0ZDo6dHVwbGU8U3RyaW5nVHlwZXMuLi4+IHR1cGxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAppbmRleCAxZDE3MTU4ZDI4Y2UzOWU5ZTcwYzgzNDcwMzM5YTZmNzc0NzEzMDQ0Li41NWNm
ZGFhZDdkYmZjMTE1ZDkyN2ZhZjlhNGU4MGEzMTZjM2Y1MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMTg5LDcgKzE4
OSw3IEBAIHN0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgYXV0byBmb3JtID0gRE9NRm9ybURh
dGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHBhcnNlTUlN
RVR5cGUoY29udGVudFR5cGUpOwogICAgIGlmIChhdXRvIG11bHRpcGFydEJvdW5kYXJ5ID0gcGFy
c2VNdWx0aXBhcnRCb3VuZGFyeShtaW1lVHlwZSkpIHsKLSAgICAgICAgU3RyaW5nIGJvdW5kYXJ5
V2l0aERhc2hlcyA9IG1ha2VTdHJpbmcoIi0tIiwgKm11bHRpcGFydEJvdW5kYXJ5KTsKKyAgICAg
ICAgYXV0byBib3VuZGFyeVdpdGhEYXNoZXMgPSBtYWtlU3RyaW5nKCItLSIsICptdWx0aXBhcnRC
b3VuZGFyeSk7CiAgICAgICAgIENTdHJpbmcgYm91bmRhcnkgPSBib3VuZGFyeVdpdGhEYXNoZXMu
dXRmOCgpOwogICAgICAgICBzaXplX3QgYm91bmRhcnlMZW5ndGggPSBib3VuZGFyeS5sZW5ndGgo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNw
cAppbmRleCBiNDFiMmYwZTNiMzYxNmU1OGM1M2UwNzQwMzQ2MmVmMGI5ZmExMmQyLi44Zjc4YzRj
N2ViZTg3NzQ5Y2MyMzhiNGNmNzUwNGY4MDRkY2EzNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtMzIzLDI0ICszMjMsMjQgQEAg
U3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4g
IjxpbnZhbGlkPiJfczsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjxhcnJheT4gLSB7ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiPGFycmF5PiAtIHsg
Iik7CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+Piht
X3ZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXlbaV0ubG9nZ2luZ1N0cmluZygp
KTsKICAgICAgICAgICAgIGlmIChpIDwgYXJyYXkuc2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIiwgIik7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
fSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIH0iKTsKICAgICAgICAgcmVzdWx0ID0gYnVp
bGRlci50b1N0cmluZygpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OkJpbmFyeTogewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPGJpbmFyeT4gLSAiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjxiaW5hcnk+IC0gIik7CiAKICAgICAgICAgYXV0byogZGF0YSA9IFdURjo6
Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CiAgICAgICAgIGlmICgh
ZGF0YSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobnVsbCkiKTsKICAgICAgICAgICAgIHJlc3VsdCA9
IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0z
NTMsNyArMzUzLDcgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGEtPnNpemUoKSA+IDgpCi0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIi4uLiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ii4uLiIpOwogCiAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNkMmNkMTM2YWQ0
Mzc0NWFhY2MyMjc0OTVkMDVmN2Q3YTJlM2M5ZGQuLmQ3ZmEzYmMyZWUxYzY4N2NlN2U0YTFiYmQ3
YTRiMGFjNjA2MzQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0y
MjIwLDcgKzIyMjAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICB9CiAKICAg
ICAgICAgLy8gV2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgZmlsZSBmb3IgdGhpcyBibG9iVVJMLCBz
byBjb21taXQgb3VyIGZpbGUgYXMgYSB1bmlxdWUgZmlsZW5hbWUKLSAgICAgICAgU3RyaW5nIHN0
b3JlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhwb3RlbnRpYWxGaWxlTmFtZUludGVnZXIsICIuYmxv
YiIpOworICAgICAgICBhdXRvIHN0b3JlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhwb3RlbnRpYWxG
aWxlTmFtZUludGVnZXIsICIuYmxvYiIpOwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OkFkZEJsb2JGaWxlbmFtZSwgIklOU0VSVCBJTlRPIEJs
b2JGaWxlcyBWQUxVRVMgKD8sID8pOyJfcyk7CiAgICAgICAgICAgICBpZiAoIXNxbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcAppbmRleCA3MDMyYjIzOGNiYTZmMWI1NjcxMWE5ZmY5OGE2OTYxYWUzNjU0
YWI5Li4wZTJjN2M2MDQxNzUxNzVjODg0NmFmZmZlYWRmMTBjMjg0MDRiZDJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC0xMzQsNzggKzEzMywzMiBAQCB2b2lkIFNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdAogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQo
Ym9vbCBpc0RpcmVjdGlvbk5leHQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwgdmFsdWUgRlJPTSBJ
bmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhUKSBB
TkQgdmFsdWUgIik7Ci0gICAgaWYgKGlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoJz4nKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc8Jyk7Ci0KLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkgdmFsdWUi
KTsKLSAgICBpZiAoIWlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgREVTQyIpOwotCi0gICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKLQotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlNFTEVDVCByb3dpZCwg
a2V5LCB2YWx1ZSBGUk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ID0g
Q0FTVCg/IEFTIFRFWFQpIEFORCB2YWx1ZSAiLAorICAgICAgICBpc0RpcmVjdGlvbk5leHQgPyAn
PicgOiAnPCcsICIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIHZhbHVlIiwgaXNEaXJlY3Rpb25O
ZXh0ID8gIiIgOiAiIERFU0MiLCAnOycpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkSW5kZXhT
dGF0ZW1lbnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gY3Vyc29yRGlyZWN0aW9uKQogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVl
IEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgIik7Ci0gICAgaWYg
KCFrZXlSYW5nZS5sb3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJPcGVuKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj49Iik7Ci0gICAgZWxzZQotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnPicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFT
IFRFWFQpIEFORCBrZXkgIik7Ci0gICAgaWYgKCFrZXlSYW5nZS51cHBlcktleS5pc051bGwoKSAm
JiAha2V5UmFuZ2UudXBwZXJPcGVuKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjw9
Iik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgnPCcpOwotCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIpOwotICAgIGlm
IChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgfHwg
Y3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVl
KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0KLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgdmFsdWUiKTsKLSAgICBpZiAoY3Vyc29yRGlyZWN0aW9uID09IElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2KQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBERVNDIik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZCgnOycpOwotCi0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiU0VMRUNUIHJvd2lk
LCBrZXksIHZhbHVlIEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkg
IiwKKyAgICAgICAgIWtleVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5nZS5sb3dl
ck9wZW4gPyAiPj0iIDogIj4iLAorICAgICAgICAiIENBU1QoPyBBUyBURVhUKSBBTkQga2V5ICIs
CisgICAgICAgICFrZXlSYW5nZS51cHBlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UudXBwZXJP
cGVuID8gIjw9IiA6ICI8IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5
IiwKKyAgICAgICAgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpQcmV2IHx8IGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6
UHJldnVuaXF1ZSA/ICIgREVTQyIgOiAiIgorICAgICAgICAiLCB2YWx1ZSIsCisgICAgICAgIGN1
cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldiA/ICIgREVT
QyIgOiAiIiwKKyAgICAgICAgJzsnKTsKIH0KIAogc3RhdGljIFN0cmluZyBidWlsZE9iamVjdFN0
b3JlU3RhdGVtZW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNFTEVDVCByb3dpZCwga2V5LCB2
YWx1ZSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSAiKTsKLQot
ICAgIGlmICgha2V5UmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLmxvd2VyT3Bl
bikKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI+PSIpOwotICAgIGVsc2UKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJz4nKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENB
U1QoPyBBUyBURVhUKSBBTkQga2V5ICIpOwotCi0gICAgaWYgKCFrZXlSYW5nZS51cHBlcktleS5p
c051bGwoKSAmJiAha2V5UmFuZ2UudXBwZXJPcGVuKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjw9Iik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgnPCcpOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIp
OwotCi0gICAgaWYgKGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
bjo6UHJldiB8fCBjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246
OlByZXZ1bmlxdWUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIERFU0MiKTsKLQot
ICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKCJTRUxFQ1Qgcm93aWQsIGtleSwgdmFsdWUgRlJPTSBS
ZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgIiwKKyAgICAgICAgIWtleVJh
bmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5nZS5sb3dlck9wZW4gPyAiPj0iIDogIj4i
LAorICAgICAgICAiIENBU1QoPyBBUyBURVhUKSBBTkQga2V5ICIsCisgICAgICAgICFrZXlSYW5n
ZS51cHBlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UudXBwZXJPcGVuID8gIjw9IiA6ICI8IiwK
KyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5IiwKKyAgICAgICAgY3Vyc29y
RGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2IHx8IGN1cnNvckRp
cmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldnVuaXF1ZSA/ICIgREVT
QyIgOiAiIiwKKyAgICAgICAgJzsnKTsKIH0KIAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmVzdGFi
bGlzaFN0YXRlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCmluZGV4IGZlODBkNDAxMDA1ZTUxNGI5YzlmNGQ0NGMwN2U5N2MwOGRkMTU4
NDcuLmNkOWNhMjI0YzM4YmRiNGU1YzFjNTE1MTdiMTY4YTE1ODRhNTU5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xMDgsMTEg
KzEwOCwxMCBAQCBzdGF0aWMgU3RyaW5nIGVuY29kZVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgewotICAgICAgICBpZiAocHJv
dG9jb2xbaV0gPCAweDIwIHx8IHByb3RvY29sW2ldID4gMHg3RSkgewotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcXHUiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhl
eChwcm90b2NvbFtpXSwgNCkpOwotICAgICAgICB9IGVsc2UgaWYgKHByb3RvY29sW2ldID09IDB4
NWMpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcXFwiKTsKKyAgICAgICAg
aWYgKHByb3RvY29sW2ldIDwgMHgyMCB8fCBwcm90b2NvbFtpXSA+IDB4N0UpCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXFx1IiwgaGV4KHByb3RvY29sW2ldLCA0KSk7CisgICAgICAgIGVs
c2UgaWYgKHByb3RvY29sW2ldID09IDB4NWMpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XFxcXCIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChwcm90b2Nv
bFtpXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCmluZGV4IDAw
NjY2MzhjMTcxYzM5ZDY2NTM4NmE3NDFhMDBjY2RkYjBjZGM2YmMuLjEyNGQ2YTM1ZjZmZWY0MDlj
NzhkNGI1MzIzNzgwYTFlNGRiNTkwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXI6OmNyZWF0ZUhlYWRlclZhbHVlKCkgY29uc3QKIHZvaWQgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb25Ub2tlbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQotICAg
ICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAg
ICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICBtX2Fj
Y2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKGV4dGVuc2lvblRva2VuKTsKICAgICAvLyBG
SVhNRTogU2hvdWxkIHVzZSBMaXN0SGFzaFNldCB0byBrZWVwIHRoZSBvcmRlciBvZiB0aGUgcGFy
YW1ldGVycy4KICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGV4dGVuc2lvblBhcmFtZXRlcnMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZTQ5MGFkYTM3YmQxMzY4NGM1Y2FmNmFiY2I0MjcxNTQ0
ZDg3YzNlNS4uNTgyMmMwOGIxODcxNzM2NGZjNGFlZWVhZTA0NjViOTdhOWM5OTkwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTE2OSwxMyArMTY5LDExIEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNo
YWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKICAgICAvLyBLZWVwIHRoZSBmb2xs
b3dpbmcgY29uc2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKS4KICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkdFVCAiKTsK
LSAgICBidWlsZGVyLmFwcGVuZChyZXNvdXJjZU5hbWUobV91cmwpKTsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBIVFRQLzEuMVxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiR0VUICIs
IHJlc291cmNlTmFtZShtX3VybCksICIgSFRUUC8xLjFcclxuIik7CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFwcGVuZCgiVXBncmFkZTogd2Vic29ja2V0Iik7Ci0g
ICAgZmllbGRzLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZSIpOworICAgIGZpZWxkcy5hcHBl
bmQoIlVwZ3JhZGU6IHdlYnNvY2tldCJfcyk7CisgICAgZmllbGRzLmFwcGVuZCgiQ29ubmVjdGlv
bjogVXBncmFkZSJfcyk7CiAgICAgZmllbGRzLmFwcGVuZCgiSG9zdDogIiArIGhvc3ROYW1lKG1f
dXJsLCBtX3NlY3VyZSkpOwogICAgIGZpZWxkcy5hcHBlbmQoIk9yaWdpbjogIiArIG1fY2xpZW50
T3JpZ2luKTsKICAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQpAQCAtMTg4LDEx
ICsxODYsMTEgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKSBjb25zdAogICAgIC8vIFRoZXJlIGFyZSBzb21lIHByb3hpZXMgdGhhdCByZXdyaXRl
ICJDb25uZWN0aW9uOiB1cGdyYWRlIgogICAgIC8vIHRvICJDb25uZWN0aW9uOiBjbG9zZSIgaW4g
dGhlIHJlc3BvbnNlIGlmIGEgcmVxdWVzdCBkb2Vzbid0IGNvbnRhaW4KICAgICAvLyB0aGVzZSBo
ZWFkZXJzLgotICAgIGZpZWxkcy5hcHBlbmQoIlByYWdtYTogbm8tY2FjaGUiKTsKLSAgICBmaWVs
ZHMuYXBwZW5kKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSIpOworICAgIGZpZWxkcy5hcHBlbmQo
IlByYWdtYTogbm8tY2FjaGUiX3MpOworICAgIGZpZWxkcy5hcHBlbmQoIkNhY2hlLUNvbnRyb2w6
IG5vLWNhY2hlIl9zKTsKIAogICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtS2V5OiAi
ICsgbV9zZWNXZWJTb2NrZXRLZXkpOwotICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQt
VmVyc2lvbjogMTMiKTsKKyAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LVZlcnNpb246
IDEzIl9zKTsKICAgICBjb25zdCBTdHJpbmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRp
c3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVu
Z3RoKCkpCiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczog
IiArIGV4dGVuc2lvblZhbHVlKTsKQEAgLTIwNCwxMiArMjAyLDEwIEBAIENTdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKICAgICAvLyBvcmRl
ciBpcyBub3QgbWVhbmluZ2Z1bC4gIFRodXMsIGl0J3Mgb2sgdG8gc2VuZCB0aGUgb3JkZXIgd2Ug
Y29uc3RydWN0ZWQKICAgICAvLyB0aGUgZmllbGRzLgogCi0gICAgZm9yIChhdXRvJiBmaWVsZCA6
IGZpZWxkcykgewotICAgICAgICBidWlsZGVyLmFwcGVuZChmaWVsZCk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiXHJcbiIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGZpZWxkIDog
ZmllbGRzKQorICAgICAgICBidWlsZGVyLmFwcGVuZChmaWVsZCwgIlxyXG4iKTsKIAotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKIH0KQEAgLTIxOCwxOCAr
MjE0LDE2IEBAIFJlc291cmNlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZVJlcXVlc3QoY29uc3QgRnVuY3Rpb248U3RyaW5nCiB7CiAgICAgLy8gS2VlcCB0aGUgZm9s
bG93aW5nIGNvbnNpc3RlbnQgd2l0aCBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkuCiAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmwpOwotICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogCi0gICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJVcGdyYWRl
Iik7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5l
Y3Rpb24sICJVcGdyYWRlIl9zKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6SG9zdCwgaG9zdE5hbWUobV91cmwsIG1fc2VjdXJlKSk7CiAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Ok9yaWdpbiwgbV9jbGllbnRPcmln
aW4pOwogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRQcm90b2Nv
bCwgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAgICBVUkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRp
Y2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2FsbG93Q29va2llcykgewotICAgICAgICBT
dHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodXJsKTsKLSAgICAg
ICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKQorICAgICAgICBpZiAoU3RyaW5nIGNvb2tpZSA9IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENv
b2tpZXMoKSk7ICFjb29raWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29va2llKTsKICAgICB9CiAKQEAg
LTIzNyw3ICsyMzEsNyBAQCBSZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGll
bnRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IEZ1bmN0aW9uPFN0cmluZwogICAgIHJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJW
YWx1ZXM6Om5vQ2FjaGUoKSk7CiAKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0S2V5LCBtX3NlY1dlYlNvY2tldEtleSk7Ci0gICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldFZlcnNp
b24sICIxMyIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpTZWNXZWJTb2NrZXRWZXJzaW9uLCAiMTMiX3MpOwogICAgIGNvbnN0IFN0cmluZyBleHRlbnNp
b25WYWx1ZSA9IG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5jcmVhdGVIZWFkZXJWYWx1ZSgpOwogICAg
IGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldEV4dGVuc2lvbnMsIGV4dGVuc2lv
blZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNzUy
NzQxNWJhMzkzNGQ1N2FlMTM1N2IzYWVkMzFiMTdmNGM4ZjczYS4uY2IzNTkyMWRkZDRlNjA3OTk3
MzE1MDJiZWRmZjFhYjNmMTM3NmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTgxLDEwICs4MSw2IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNj
ZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKLSNp
ZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIENlbGwgVGFibGVz
CkBAIC0zNTQ5LDE0ICszNTQ1LDcgQEAgLSAodm9pZClzaG93Tm9kZVRyZWVGb3JUZXh0TWFya2Vy
OihBWFRleHRNYXJrZXJSZWYpdGV4dE1hcmtlcgogCiBzdGF0aWMgdm9pZCBmb3JtYXRGb3JEZWJ1
Z2dlcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuZ3RoKQogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIAotICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tICIpOwotICAgIHJlc3VsdC5hcHBlbmQocmFuZ2Uuc3Rh
cnQuZGVidWdEZXNjcmlwdGlvbigpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHRvICIp
OwotICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UuZW5kLmRlYnVnRGVzY3JpcHRpb24oKSk7Ci0gICAg
Ci0gICAgc3RybGNweShidWZmZXIsIHJlc3VsdC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxl
bmd0aCk7CisgICAgc3RybGNweShidWZmZXIsIG1ha2VTdHJpbmcoImZyb20gIiwgcmFuZ2Uuc3Rh
cnQuZGVidWdEZXNjcmlwdGlvbigpLCAiIHRvICIsIHJhbmdlLmVuZC5kZWJ1Z0Rlc2NyaXB0aW9u
KCkpLnV0ZjgoKS5kYXRhKCksIGxlbmd0aCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5k
ZXggNjg1ZTc5NmYzN2FkNjVlMGJjZDAyY2UzNjNiM2U5YWU3YzIwZjAwZi4uMDFjZjE5NDdkMzE0
OGYxYTBkN2Q5ZDMxMjcwOGUyZDBiMzM0Y2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC05OCw4ICs5
OCw4IEBAIHN0YXRpYyBTdHJpbmcgcHJlZml4VHJlZVZlcnRleFRvU3RyaW5nKGNvbnN0IFByZWZp
eFRyZWVWZXJ0ZXgmIHZlcnRleCwgY29uc3QgSGFzCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIHdoaWxlIChkZXB0aC0tKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ2ZXJ0ZXggYWN0aW9uczogIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJ2ZXJ0ZXgg
YWN0aW9uczogIik7CiAKICAgICBhdXRvIGFjdGlvbnNTbG90ID0gYWN0aW9ucy5maW5kKCZ2ZXJ0
ZXgpOwogICAgIGlmIChhY3Rpb25zU2xvdCAhPSBhY3Rpb25zLmVuZCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCA3ZWU4YWVkMWFjMzIyNGQ3YjdjYzVkMDc3Y2M2
MjZkZTE3NGIwNTJhLi4yNTYyNjcyODIyYzFmZmZmOGY1NjA3ZTE3NzQ0OTZmYzNhNTQ5OTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNl
dChDU1NQcmltaXRpdmVWYWx1ZSoKIHN0YXRpYyBTdHJpbmcgYnVpbGRDaXJjbGVTdHJpbmcoY29u
c3QgU3RyaW5nJiByYWRpdXMsIGNvbnN0IFN0cmluZyYgY2VudGVyWCwgY29uc3QgU3RyaW5nJiBj
ZW50ZXJZKQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCJjaXJjbGUoIik7CisgICAgcmVzdWx0LmFwcGVuZCgiY2lyY2xlKCIpOwogICAgIGlm
ICghcmFkaXVzLmlzTnVsbCgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKHJhZGl1cyk7CiAgICAg
aWYgKCFjZW50ZXJYLmlzTnVsbCgpIHx8ICFjZW50ZXJZLmlzTnVsbCgpKSB7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgYm9vbCBDU1NCYXNpY1NoYXBlQ2lyY2xlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNT
aGFwZSYgc2hhcGUpIGNvbnN0CiBzdGF0aWMgU3RyaW5nIGJ1aWxkRWxsaXBzZVN0cmluZyhjb25z
dCBTdHJpbmcmIHJhZGl1c1gsIGNvbnN0IFN0cmluZyYgcmFkaXVzWSwgY29uc3QgU3RyaW5nJiBj
ZW50ZXJYLCBjb25zdCBTdHJpbmcmIGNlbnRlclkpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImVsbGlwc2UoIik7CisgICAgcmVzdWx0LmFw
cGVuZCgiZWxsaXBzZSgiKTsKICAgICBib29sIG5lZWRzU2VwYXJhdG9yID0gZmFsc2U7CiAgICAg
aWYgKCFyYWRpdXNYLmlzTnVsbCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFkaXVzWCk7
CkBAIC0xOTAsOSArMTkwLDkgQEAgc3RhdGljIFN0cmluZyBidWlsZFBhdGhTdHJpbmcoY29uc3Qg
V2luZFJ1bGUmIHdpbmRSdWxlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnMKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAod2luZFJ1bGUgPT0gV2luZFJ1bGU6OkV2ZW5PZGQp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwYXRoKGV2ZW5vZGQsICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCJwYXRoKGV2ZW5vZGQsICIpOwogICAgIGVsc2UKLSAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoInBhdGgoIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoInBhdGgo
Iik7CiAKICAgICBzZXJpYWxpemVTdHJpbmcocGF0aCwgcmVzdWx0KTsKICAgICByZXN1bHQuYXBw
ZW5kKCcpJyk7CkBAIC0yNDQsMTMgKzI0NCwxMyBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkUG9seWdv
blN0cmluZyhjb25zdCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jgog
ICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAogICAgIGlmICh3aW5kUnVsZSA9
PSBXaW5kUnVsZTo6RXZlbk9kZCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoZXZlbk9k
ZE9wZW5pbmcpOworICAgICAgICByZXN1bHQuYXBwZW5kKGV2ZW5PZGRPcGVuaW5nKTsKICAgICBl
bHNlCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKG5vblplcm9PcGVuaW5nKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChub25aZXJvT3BlbmluZyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBvaW50cy5zaXplKCk7IGkgKz0gMikgewogICAgICAgICBpZiAoaSkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKGNvbW1hU2VwYXJhdG9yKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoY29tbWFTZXBhcmF0b3IpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHBvaW50
c1tpXSwgJyAnLCBwb2ludHNbaSArIDFdKTsKICAgICB9CiAKQEAgLTMyMiwxNCArMzIyLDE0IEBA
IHN0YXRpYyBTdHJpbmcgYnVpbGRJbnNldFN0cmluZyhjb25zdCBTdHJpbmcmIHRvcCwgY29uc3Qg
U3RyaW5nJiByaWdodCwgY29uc3QgU3RyCiAgICAgICAgIGFyZURlZmF1bHRDb3JuZXJSYWRpaSAm
PSBidWlsZEluc2V0UmFkaWkodmVydGljYWxSYWRpaSwgdG9wTGVmdFJhZGl1c0hlaWdodCwgdG9w
UmlnaHRSYWRpdXNIZWlnaHQsIGJvdHRvbVJpZ2h0UmFkaXVzSGVpZ2h0LCBib3R0b21MZWZ0UmFk
aXVzSGVpZ2h0KTsKIAogICAgICAgICBpZiAoIWFyZURlZmF1bHRDb3JuZXJSYWRpaSkgewotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiByb3VuZCIpOworICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiIHJvdW5kIik7CiAKICAgICAgICAgICAgIGZvciAoYXV0byYgcmFkaXVzIDog
aG9yaXpvbnRhbFJhZGlpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCByYWRp
dXMpOwogCiAgICAgICAgICAgICBpZiAodmVydGljYWxSYWRpaS5zaXplKCkgIT0gaG9yaXpvbnRh
bFJhZGlpLnNpemUoKQogICAgICAgICAgICAgICAgIHx8ICFXVEY6OlZlY3RvckNvbXBhcmVyPGZh
bHNlLCBTdHJpbmc+Ojpjb21wYXJlKHZlcnRpY2FsUmFkaWkuZGF0YSgpLCBob3Jpem9udGFsUmFk
aWkuZGF0YSgpLCB2ZXJ0aWNhbFJhZGlpLnNpemUoKSkpIHsKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiIC8iKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIg
LyIpOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcmFkaXVzIDogdmVydGljYWxSYWRpaSkK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIHJhZGl1cyk7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggOWE1ODAx
MWYxM2NhYWU1MmEyNGNkOTZlYWNmNWY3ZGNhMDI2NTM2Yy4uNjg2NDlhNDlkMTAyYWQ5YmE0MmU4
N2UwNTE3YWFjYzllYzRmZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcApAQCAtNjk2LDkgKzY5Niw5IEBAIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgYXBwZW5kR3JhZGllbnRTdG9wcyhyZXN1bHQs
IHN0b3BzKCkpOwogICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlKCkgPT0gQ1NTUHJlZml4ZWRM
aW5lYXJHcmFkaWVudCkgewogICAgICAgICBpZiAoaXNSZXBlYXRpbmcoKSkKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQo
Iik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCItd2Via2l0LXJlcGVhdGluZy1saW5lYXIt
Z3JhZGllbnQoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCItd2Via2l0LWxpbmVhci1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCIpOwogCiAgICAgICAgIGlmIChtX2FuZ2xlKQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwpAQCAtNzA2LDE0
ICs3MDYsMTQgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogICAgICAgICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRPcHRpb25hbENTU1B0clRl
eHQocmVzdWx0LCBmaXJzdFgoKSwgZmlyc3RZKCkpOwogCiAgICAgICAgIGZvciAoYXV0byYgc3Rv
cCA6IHN0b3BzKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgICAgIHdyaXRlQ29sb3JT
dG9wKHJlc3VsdCwgc3RvcCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
aXNSZXBlYXRpbmcoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJyZXBlYXRp
bmctbGluZWFyLWdyYWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgicmVwZWF0
aW5nLWxpbmVhci1ncmFkaWVudCgiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoImxpbmVhci1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoImxpbmVhci1ncmFkaWVudCgiKTsKIAogICAgICAgICBib29sIHdyb3RlU29tZXRoaW5n
ID0gZmFsc2U7CiAKQEAgLTcyMSwxNCArNzIxLDE0IEBAIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
bV9hbmdsZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlIGlmIChmaXJzdFgoKSB8fCAoZmlyc3RZKCkgJiYgZmlyc3RZKCktPnZh
bHVlSUQoKSAhPSBDU1NWYWx1ZUJvdHRvbSkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCJ0byAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInRvICIpOwogICAgICAg
ICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRPcHRpb25hbENTU1B0clRleHQocmVzdWx0LCBmaXJz
dFgoKSwgZmlyc3RZKCkpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAg
ICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewogICAgICAgICAg
ICAgaWYgKHdyb3RlU29tZXRoaW5nKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIsICIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAg
ICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7CiAgICAgICAgICAgICB3cml0ZUNvbG9yU3RvcChy
ZXN1bHQsIHN0b3ApOwogICAgICAgICB9CkBAIC04OTEsNDQgKzg5MSw0NCBAQCBTdHJpbmcgQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIGFwcGVu
ZEdyYWRpZW50U3RvcHMocmVzdWx0LCBzdG9wcygpKTsKICAgICB9IGVsc2UgaWYgKGdyYWRpZW50
VHlwZSgpID09IENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpIHsKICAgICAgICAgaWYgKGlzUmVw
ZWF0aW5nKCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLXdlYmtpdC1yZXBl
YXRpbmctcmFkaWFsLWdyYWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLXdl
YmtpdC1yZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCIpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoIik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCItd2Via2l0LXJhZGlhbC1ncmFkaWVudCgiKTsKIAog
ICAgICAgICBpZiAoZmlyc3RYKCkgfHwgZmlyc3RZKCkpCiAgICAgICAgICAgICBhcHBlbmRTcGFj
ZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjZW50ZXIi
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImNlbnRlciIpOwogCiAgICAgICAgIGlmICht
X3NoYXBlIHx8IG1fc2l6aW5nQmVoYXZpb3IpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIsICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAg
ICAgIGlmIChtX3NoYXBlKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9zaGFwZS0+
Y3NzVGV4dCgpLCAnICcpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJlbGxpcHNlICIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoImVsbGlwc2UgIik7CiAgICAgICAgICAgICBpZiAobV9zaXppbmdCZWhhdmlvcikKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fc2l6aW5nQmVoYXZpb3ItPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNv
dmVyIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiY292ZXIiKTsKICAgICAgICAg
fSBlbHNlIGlmIChtX2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGljYWxTaXplKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiLCBtX2VuZEhvcml6b250YWxTaXplLT5jc3NUZXh0
KCksICcgJywgbV9lbmRWZXJ0aWNhbFNpemUtPmNzc1RleHQoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvJiBzdG9wIDogc3RvcHMoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAgd3Jp
dGVDb2xvclN0b3AocmVzdWx0LCBzdG9wKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChpc1JlcGVhdGluZygpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
InJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmFkaWFsLWdyYWRpZW50KCIpOworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgicmFkaWFsLWdyYWRpZW50KCIpOwogCiAgICAgICAgIGJvb2wgd3JvdGVT
b21ldGhpbmcgPSBmYWxzZTsKIAogICAgICAgICAvLyBUaGUgb25seSBhbWJpZ3VvdXMgY2FzZSB0
aGF0IG5lZWRzIGFuIGV4cGxpY2l0IHNoYXBlIHRvIGJlIHByb3ZpZGVkCiAgICAgICAgIC8vIGlz
IHdoZW4gYSBzaXppbmcga2V5d29yZCBpcyB1c2VkIChvciBhbGwgc2l6aW5nIGlzIG9taXR0ZWQp
LgogICAgICAgICBpZiAobV9zaGFwZSAmJiBtX3NoYXBlLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVF
bGxpcHNlICYmIChtX3NpemluZ0JlaGF2aW9yIHx8ICghbV9zaXppbmdCZWhhdmlvciAmJiAhbV9l
bmRIb3Jpem9udGFsU2l6ZSkpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
Y2lyY2xlIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJjaXJjbGUiKTsKICAgICAgICAg
ICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgfQogCkBAIC05NDksMTggKzk0OSwx
OCBAQCBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0
CiAgICAgICAgIGlmICgoZmlyc3RYKCkgJiYgIWZpcnN0WCgpLT5pc0NlbnRlclBvc2l0aW9uKCkp
IHx8IChmaXJzdFkoKSAmJiAhZmlyc3RZKCktPmlzQ2VudGVyUG9zaXRpb24oKSkpIHsKICAgICAg
ICAgICAgIGlmICh3cm90ZVNvbWV0aGluZykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgJyk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiYXQgIik7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJhdCAiKTsKICAgICAgICAgICAgIGFwcGVuZFNwYWNlU2VwYXJh
dGVkT3B0aW9uYWxDU1NQdHJUZXh0KHJlc3VsdCwgZmlyc3RYKCksIGZpcnN0WSgpKTsKICAgICAg
ICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3
cm90ZVNvbWV0aGluZykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKIAogICAgICAgICBib29sIHdyb3RlRmly
c3RTdG9wID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYgc3RvcCA6IHN0b3BzKCkpIHsKICAg
ICAgICAgICAgIGlmICh3cm90ZUZpcnN0U3RvcCkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwog
ICAgICAgICAgICAgd3JvdGVGaXJzdFN0b3AgPSB0cnVlOwogICAgICAgICAgICAgd3JpdGVDb2xv
clN0b3AocmVzdWx0LCBzdG9wKTsKICAgICAgICAgfQpAQCAtMTIxOSwxMCArMTIxOSw3IEBAIFN0
cmluZyBDU1NDb25pY0dyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewogICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogCi0gICAgaWYgKGlzUmVwZWF0aW5nKCkpCi0gICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJyZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoIik7Ci0gICAg
ZWxzZQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY29uaWMtZ3JhZGllbnQoIik7Cisg
ICAgcmVzdWx0LmFwcGVuZChpc1JlcGVhdGluZygpID8gInJlcGVhdGluZy1jb25pYy1ncmFkaWVu
dCgiIDogImNvbmljLWdyYWRpZW50KCIpOwogCiAgICAgYm9vbCB3cm90ZVNvbWV0aGluZyA9IGZh
bHNlOwogCkBAIC0xMjM0LDE4ICsxMjMxLDE4IEBAIFN0cmluZyBDU1NDb25pY0dyYWRpZW50VmFs
dWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIGlmICgoZmlyc3RYKCkgJiYgIWZpcnN0WCgp
LT5pc0NlbnRlclBvc2l0aW9uKCkpIHx8IChmaXJzdFkoKSAmJiAhZmlyc3RZKCktPmlzQ2VudGVy
UG9zaXRpb24oKSkpIHsKICAgICAgICAgaWYgKHdyb3RlU29tZXRoaW5nKQogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiYXQgIik7
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoImF0ICIpOwogICAgICAgICBhcHBlbmRTcGFjZVNlcGFy
YXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7CiAgICAg
ICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAod3JvdGVTb21ldGhp
bmcpCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICByZXN1bHQu
YXBwZW5kKCIsICIpOwogCiAgICAgYm9vbCB3cm90ZUZpcnN0U3RvcCA9IGZhbHNlOwogICAgIGZv
ciAoYXV0byYgc3RvcCA6IHN0b3BzKCkpIHsKICAgICAgICAgaWYgKHdyb3RlRmlyc3RTdG9wKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCIsICIpOwogICAgICAgICB3cm90ZUZpcnN0U3RvcCA9IHRydWU7CiAgICAgICAg
IHdyaXRlQ29sb3JTdG9wKHJlc3VsdCwgc3RvcCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwCmluZGV4IGZlNTgzY2ExNzE5MDZi
ZGY2ODhmMTk0MjBjZjYxYjkzYzJmZTdjYzcuLjBhYjkxNDNlNzRhNzRlZGU0YWVmNDlhYjI0MDU4
ZGU2NmRkNjdmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkSW50ZWdl
clJlcGVhdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZEludGVnZXJS
ZXBlYXRWYWx1ZS5jcHAKQEAgLTMxLDE5ICszMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuaCIKIAotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgQ1NT
R3JpZEludGVnZXJSZXBlYXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgicmVwZWF0KCIpOwotICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIocmVwZXRpdGlvbnMoKSkpOwotICAgIHJlc3VsdC5h
cHBlbmQoIiwgIik7Ci0gICAgcmVzdWx0LmFwcGVuZChDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNTU1Rl
eHQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicmVwZWF0KCIsIHJlcGV0aXRpb25zKCksICIs
ICIsIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpLCAnKScpOwogfQogCiBib29sIENTU0dy
aWRJbnRlZ2VyUmVwZWF0VmFsdWU6OmVxdWFscyhjb25zdCBDU1NHcmlkSW50ZWdlclJlcGVhdFZh
bHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApp
bmRleCAyZjdiMmI1OWQ5YzQ0ODljMjM1ZDRjNjVmYTRhYmQzNmY5NGEzNGYyLi5hOTMyMDMwODI1
YWJiNjU1YjUyNzhhZjVjNjE1MmUzYjU0N2VhZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuY3BwCkBAIC0xMjgsMTYgKzEyOCwxMyBAQCBSZWY8Q1NTSW1hZ2VTZXRWYWx1
ZT4gQ1NTSW1hZ2VTZXRWYWx1ZTo6aW1hZ2VTZXRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1
aWxkZQogU3RyaW5nIENTU0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewog
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJpbWFn
ZS1zZXQoIik7Ci0KKyAgICByZXN1bHQuYXBwZW5kKCJpbWFnZS1zZXQoIik7CiAgICAgc2l6ZV90
IGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICsgMSA8
IGxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIsICIpOwotCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIp
OwogICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0oaSktPmNzc1RleHQoKSwgJyAnLCBpdGVtKGkg
KyAxKS0+Y3NzVGV4dCgpKTsKICAgICB9Ci0KICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltcG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUu
Y3BwCmluZGV4IDRjNjY2MTNjYzM1OTI0MTYzMDZmNTJiZjY4YTYzNDU5YWEzMDUzYTMuLjg3YTI4
ODcyMWZmNjc3YWU1YmVkNDE3YTJjYzk3OTAyYTJlNGRjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1wb3J0UnVsZS5jcHAKQEAgLTU5LDI3ICs1OSwxOSBAQCBNZWRpYUxpc3QmIENTU0ltcG9ydFJ1
bGU6Om1lZGlhKCkgY29uc3QKIFN0cmluZyBDU1NJbXBvcnRSdWxlOjpjc3NUZXh0KCkgY29uc3QK
IHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
QGltcG9ydCB1cmwoXCIiKTsKLSAgICByZXN1bHQuYXBwZW5kKG1faW1wb3J0UnVsZS5nZXQoKS5o
cmVmKCkpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcIikiKTsKLQorICAgIHJlc3VsdC5h
cHBlbmQoIkBpbXBvcnQgdXJsKFwiIiwgbV9pbXBvcnRSdWxlLmdldCgpLmhyZWYoKSwgIlwiKSIp
OwogICAgIGlmIChtX2ltcG9ydFJ1bGUuZ2V0KCkubWVkaWFRdWVyaWVzKCkpIHsKLSAgICAgICAg
U3RyaW5nIG1lZGlhVGV4dCA9IG1faW1wb3J0UnVsZS5nZXQoKS5tZWRpYVF1ZXJpZXMoKS0+bWVk
aWFUZXh0KCk7Ci0gICAgICAgIGlmICghbWVkaWFUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtZWRpYVRl
eHQpOwotICAgICAgICB9CisgICAgICAgIGlmIChTdHJpbmcgbWVkaWFUZXh0ID0gbV9pbXBvcnRS
dWxlLmdldCgpLm1lZGlhUXVlcmllcygpLT5tZWRpYVRleHQoKTsgIW1lZGlhVGV4dC5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgbWVkaWFUZXh0KTsKICAgICB9CiAg
ICAgcmVzdWx0LmFwcGVuZCgnOycpOwotICAgIAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmco
KTsKIH0KIAogQ1NTU3R5bGVTaGVldCogQ1NTSW1wb3J0UnVsZTo6c3R5bGVTaGVldCgpIGNvbnN0
CiB7IAogICAgIGlmICghbV9pbXBvcnRSdWxlLmdldCgpLnN0eWxlU2hlZXQoKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3N0eWxlU2hl
ZXRDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlciA9IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZSgqbV9pbXBvcnRSdWxlLmdldCgpLnN0eWxlU2hlZXQoKSwgY29uc3Rf
Y2FzdDxDU1NJbXBvcnRSdWxlKj4odGhpcykpOwogICAgIHJldHVybiBtX3N0eWxlU2hlZXRDU1NP
TVdyYXBwZXIuZ2V0KCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZy
YW1lUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAppbmRl
eCBjM2M3M2JkNDY5ZmRmODc4Njc1OTUzOWY5OTI2MzczYTY3MTBkMGNmLi5iYjNlYjY4ZmEzNzgx
OThmZWUxNTBiZGQ0YWRkYTFhN2IzM2NkMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcApAQCAtODksMTkgKzg5LDEzIEBAIGJvb2wgU3R5bGVSdWxlS2V5ZnJhbWU6OnNl
dEtleVRleHQoY29uc3QgU3RyaW5nJiBrZXlUZXh0KQogCiBTdHJpbmcgU3R5bGVSdWxlS2V5ZnJh
bWU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJl
c3VsdC5hcHBlbmQoa2V5VGV4dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7
Ci0gICAgU3RyaW5nIGRlY2xzID0gbV9wcm9wZXJ0aWVzLT5hc1RleHQoKTsKLSAgICByZXN1bHQu
YXBwZW5kKGRlY2xzKTsKLSAgICBpZiAoIWRlY2xzLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOwotICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CisgICAgaWYgKFN0cmluZyBkZWNsYXJhdGlvbnMgPSBtX3Byb3BlcnRpZXMt
PmFzVGV4dCgpOyAhZGVjbGFyYXRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoa2V5VGV4dCgpLCAiIHsgIiwgZGVjbGFyYXRpb25zLCAiIH0iKTsKKyAgICByZXR1cm4g
bWFrZVN0cmluZyhrZXlUZXh0KCksICIgeyB9Iik7CiB9CiAKIENTU0tleWZyYW1lUnVsZTo6Q1NT
S2V5ZnJhbWVSdWxlKFN0eWxlUnVsZUtleWZyYW1lJiBrZXlmcmFtZSwgQ1NTS2V5ZnJhbWVzUnVs
ZSogcGFyZW50KQotICAgIDogQ1NTUnVsZSgwKQorICAgIDogQ1NTUnVsZShudWxscHRyKQogICAg
ICwgbV9rZXlmcmFtZShrZXlmcmFtZSkKIHsKICAgICBzZXRQYXJlbnRSdWxlKHBhcmVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggOTgyODE3YWZkNTU4NDRk
NThhN2YzODBkMTk3OWQyN2NkZjM4ZmI3YS4uNDQ1NDE2YThmZGNmMGQ1NTYzZWE4M2QxZTRkZjYz
YjU5ZDA0Njg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAt
MTk4LDE2ICsxOTgsOSBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6OmZpbmRS
dWxlKGNvbnN0IFN0cmluZyYgcykKIFN0cmluZyBDU1NLZXlmcmFtZXNSdWxlOjpjc3NUZXh0KCkg
Y29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiQC13ZWJraXQta2V5ZnJhbWVzICIpOwotICAgIHJlc3VsdC5hcHBlbmQobmFtZSgpKTsK
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgXG4iKTsKLQotICAgIHVuc2lnbmVkIHNpemUg
PSBsZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgICIpOwotICAgICAgICByZXN1bHQuYXBwZW5k
KG1fa2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKClbaV0tPmNzc1RleHQoKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAgIHJlc3VsdC5hcHBlbmQoIkAtd2Via2l0LWtl
eWZyYW1lcyAiLCBuYW1lKCksICIgeyBcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNp
emUgPSBsZW5ndGgoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAi
LCBtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2ldLT5jc3NUZXh0KCksICdcbicpOwogICAg
IHJlc3VsdC5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAKaW5kZXggNzE0
NWQ2M2NjM2VhNjk1ZjZiMWMyMDY5YzI2MDNiN2YxNzQ1OWE0NC4uM2YzYmJiZGNmZjdkYjQxMDM3
NDJjZmVkOTQ0NDg1Y2ZiZDg3NTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcApAQCAtNDEsMzcgKzQxLDM3IEBAIFN0cmluZyBDU1NMaW5lQm94
Q29udGFpblZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVyIHRl
eHQ7CiAKICAgICBpZiAobV92YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6QmxvY2spKQot
ICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoImJsb2NrIik7CisgICAgICAgIHRleHQuYXBwZW5k
KCJibG9jayIpOwogCiAgICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46Oklu
bGluZSkpIHsKICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcgJyk7Ci0gICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiaW5saW5lIik7CisgICAg
ICAgIHRleHQuYXBwZW5kKCJpbmxpbmUiKTsKICAgICB9CiAgICAgaWYgKG1fdmFsdWUuY29udGFp
bnMoTGluZUJveENvbnRhaW46OkZvbnQpKSB7CiAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExpdGVy
YWwoImZvbnQiKTsKKyAgICAgICAgdGV4dC5hcHBlbmQoImZvbnQiKTsKICAgICB9CiAgICAgaWYg
KG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OkdseXBocykpIHsKICAgICAgICAgaWYg
KCF0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IHRleHQuYXBwZW5kTGl0ZXJhbCgiZ2x5cGhzIik7CisgICAgICAgIHRleHQuYXBwZW5kKCJnbHlw
aHMiKTsKICAgICB9CiAgICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OlJl
cGxhY2VkKSkgewogICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJyZXBsYWNlZCIpOwor
ICAgICAgICB0ZXh0LmFwcGVuZCgicmVwbGFjZWQiKTsKICAgICB9CiAgICAgaWYgKG1fdmFsdWUu
Y29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZUJveCkpIHsKICAgICAgICAgaWYgKCF0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHRleHQu
YXBwZW5kTGl0ZXJhbCgiaW5saW5lLWJveCIpOworICAgICAgICB0ZXh0LmFwcGVuZCgiaW5saW5l
LWJveCIpOwogICAgIH0KICAgICBpZiAobV92YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6
SW5pdGlhbExldHRlcikpIHsKICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiaW5pdGlh
bC1sZXR0ZXIiKTsKKyAgICAgICAgdGV4dC5hcHBlbmQoImluaXRpYWwtbGV0dGVyIik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRleHQudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1l
c3BhY2VSdWxlLmNwcAppbmRleCA3ODNjMmU4YzFmNGYwMTIxNmY4YTg1OWFjYzI3M2I5ODQzOTNh
OGE2Li5mYmRhN2EyZTJlMDNhY2JmODUzMzBjOGY2OGViYWIxMzdjY2Y0MGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIEF0b21TdHJp
bmcgQ1NTTmFtZXNwYWNlUnVsZTo6cHJlZml4KCkgY29uc3QKIFN0cmluZyBDU1NOYW1lc3BhY2VS
dWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiQG5hbWVzcGFjZSAiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJA
bmFtZXNwYWNlICIpOwogICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIocHJlZml4KCksIHJlc3VsdCk7
CiAgICAgaWYgKCFwcmVmaXgoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAn
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCmluZGV4IDZhNjE3YzIxMjVhYmRhN2M0MTNj
NTFiM2Q4ZmJkODAzZTA2NzE2ZmUuLmRiYzU4ODUzZDdlYjFiYTE3ZGZjZDhjZjEwNjRkNzkzNjA0
Y2EyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcApAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NiwxNSAr
NzUsOSBAQCB2b2lkIENTU1BhZ2VSdWxlOjpzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiBz
ZWxlY3RvclRleHQpCiAKIFN0cmluZyBDU1NQYWdlUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChzZWxlY3RvclRleHQo
KSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7ICIpOwotICAgIFN0cmluZyBkZWNscyA9
IG1fcGFnZVJ1bGUtPnByb3BlcnRpZXMoKS5hc1RleHQoKTsKLSAgICByZXN1bHQuYXBwZW5kKGRl
Y2xzKTsKLSAgICBpZiAoIWRlY2xzLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICcpOwotICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CisgICAgaWYgKFN0cmluZyBkZWNsYXJhdGlvbnMgPSBtX3BhZ2VSdWxlLT5wcm9wZXJ0aWVz
KCkuYXNUZXh0KCk7ICFkZWNsYXJhdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhzZWxlY3RvclRleHQoKSwgIiB7ICIsIGRlY2xhcmF0aW9ucywgIiB9Iik7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoc2VsZWN0b3JUZXh0KCksICIgeyB9Iik7CiB9CiAKIHZvaWQgQ1NT
UGFnZVJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IGNlMTVlYWNjYWRkMzJiZDAxOGIxNDUzYzMw
NTMxNGM5MDcyOWFmN2IuLjJhYjFiMmFmZjc4MjZkN2U5YTRhM2M3N2M4ZDhmMjQyY2UzNzJlZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCkBAIC0zOSwxMiAr
MzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NQYWludEltYWdlVmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwYWludCgiKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fbmFt
ZSk7Ci0gICAgLy8gRklYTUU6IHByaW50IGFyZ3MuCi0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwot
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
aW5jbHVkZSB0aGUgYXJndW1lbnRzIHRvby4KKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFpbnQo
IiwgbV9uYW1lLCAnKScpOwogfQogCiBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQpAQCAtNzEsOCArNjcsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6aW1h
Z2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgICAgICAgICAg
ICAgIGxvY2FsUmFuZ2UuY29uc3VtZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobG9jYWxSYW5n
ZS5wZWVrKCkuZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQpIHsK
ICAgICAgICAgICAgICAgICBsb2NhbFJhbmdlLnBlZWsoKS5zZXJpYWxpemUoYnVpbGRlcik7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxSYW5nZS5jb25zdW1lQmxvY2soKS5z
ZXJpYWxpemUoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbFJhbmdlLmNvbnN1bWVCbG9jaygpLnNlcmlh
bGl6ZSgpLCAnKScpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbG9jYWxS
YW5nZS5jb25zdW1lKCkuc2VyaWFsaXplKGJ1aWxkZXIpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAxZjZiNDRkNWI4YWMxNjBmYjQ2Nzhk
ZWU5MmYwMWI4ZjYwOTg2Yjg0Li45ZjVmMmJkNTg0NmU3YWQ3ZDlhNmQ4MDEwOTFjMTE2ZjNmOTBh
MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEwOTks
MjAgKzEwOTksMTcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZv
cm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICBTdHJpbmdCdWlsZGVy
IHJlc3VsdDsKICAgICAgICAgU3RyaW5nIHNlcGFyYXRvciA9IG1fdmFsdWUuY291bnRlci0+c2Vw
YXJhdG9yKCk7CiAgICAgICAgIGlmIChzZXBhcmF0b3IuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoImNvdW50ZXIoIik7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCJjb3VudGVyKCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiY291bnRlcnMoIik7Ci0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImNvdW50
ZXJzKCIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUuY291bnRlci0+aWRlbnRpZmll
cigpKTsKICAgICAgICAgaWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwg
Iik7CiAgICAgICAgICAgICBzZXJpYWxpemVTdHJpbmcoc2VwYXJhdG9yLCByZXN1bHQpOwogICAg
ICAgICB9Ci0gICAgICAgIFN0cmluZyBsaXN0U3R5bGUgPSBtX3ZhbHVlLmNvdW50ZXItPmxpc3RT
dHlsZSgpOwotICAgICAgICBpZiAoIWxpc3RTdHlsZS5pc0VtcHR5KCkpCisgICAgICAgIGlmIChh
dXRvIGxpc3RTdHlsZSA9IG1fdmFsdWUuY291bnRlci0+bGlzdFN0eWxlKCk7ICFsaXN0U3R5bGUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiLCBsaXN0U3R5bGUpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwogICAgIH0KICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVDVDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGVjNWZiMTEwMDY1ZWQ3NmRlODcxODRkMGZlOWQyMjNl
YWI5MTIyZWYuLjBlNzA5MTI5ZTE2MTQ0ZjViM2VlMWM4YWIyZDRiOWM3OWFlZWJjZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzM1LDE0ICszMzUsOCBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRQc2V1ZG9DbGFzc0Z1bmN0aW9uVGFpbChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBj
b25zdCBDU1NTZWxlYwogCiBzdGF0aWMgdm9pZCBhcHBlbmRMYW5nQXJndW1lbnRMaXN0KFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgYXJndW1lbnRMaXN0
KQogewotICAgIHVuc2lnbmVkIGFyZ3VtZW50TGlzdFNpemUgPSBhcmd1bWVudExpc3Quc2l6ZSgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudExpc3RTaXplOyArK2kpIHsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJn
dW1lbnRMaXN0W2ldKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgaWYg
KGkgIT0gYXJndW1lbnRMaXN0U2l6ZSAtIDEpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhcmd1
bWVudExpc3Quc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgn
IicsIGFyZ3VtZW50TGlzdFtpXSwgJyInLCBpICE9IHNpemUgLSAxID8gIiwgIiA6ICIiKTsKIH0K
IAogLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jc2VyaWFsaXppbmctYW5i
CkBAIC0zODgsMTEgKzM4Miw4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNv
bnN0IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAgIGlmIChtYXRjaCgpID09IENTU1NlbGVj
dG9yOjpUYWcgJiYgIW1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKSB7CiAgICAgICAgIGlmICh0YWdR
TmFtZSgpLnByZWZpeCgpLmlzTnVsbCgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGFn
UU5hbWUoKS5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodGFnUU5hbWUoKS5wcmVmaXgoKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnfCcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGFnUU5hbWUoKS5s
b2NhbE5hbWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodGFnUU5hbWUoKS5wcmVmaXgoKS5zdHJpbmcoKSwgJ3wnLCB0YWdRTmFtZSgpLmxv
Y2FsTmFtZSgpKTsKICAgICB9CiAKICAgICBjb25zdCBDU1NTZWxlY3RvciogY3MgPSB0aGlzOwpA
QCAtNDA3LDI2OCArMzk4LDI2OCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChj
b25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgIHN3aXRjaCAoY3MtPnBz
ZXVkb0NsYXNzVHlwZSgpKSB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNp
dGlvbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWFu
aW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjotd2Via2l0LWFuaW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzQW55OiB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6LXdlYmtpdC1hbnkoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjot
d2Via2l0LWFueSgiKTsKICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxk
U2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
KScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBbnlMaW5rOgotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmFueS1saW5rIik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjphbnktbGluayIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBbnlMaW5rRGVwcmVjYXRlZDoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWFueS1saW5rIik7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWFueS1saW5rIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0F1dG9maWxsOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13
ZWJraXQtYXV0b2ZpbGwiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJr
aXQtYXV0b2ZpbGwiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQXV0b2ZpbGxTdHJvbmdQYXNzd29yZDoKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWF1dG9maWxsLXN0cm9uZy1w
YXNzd29yZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hdXRv
ZmlsbC1zdHJvbmctcGFzc3dvcmQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQXV0b2ZpbGxTdHJvbmdQYXNzd29yZFZp
ZXdhYmxlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQt
YXV0b2ZpbGwtc3Ryb25nLXBhc3N3b3JkLXZpZXdhYmxlIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjotd2Via2l0LWF1dG9maWxsLXN0cm9uZy1wYXNzd29yZC12aWV3YWJsZSIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NEaXJlY3RGb2N1czoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjotd2Via2l0LWRpcmVjdC1mb2N1cyIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6LXdlYmtpdC1kaXJlY3QtZm9jdXMiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRHJhZzoKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWRyYWciKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZHJhZyIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdWxsUGFn
ZU1lZGlhOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Vi
a2l0LWZ1bGwtcGFnZS1tZWRpYSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzRnVsbFNjcmVlbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjot
d2Via2l0LWZ1bGwtc2NyZWVuIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjot
d2Via2l0LWZ1bGwtc2NyZWVuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW5BbmNlc3RvcjoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWZ1bGwtc2NyZWVuLWFu
Y2VzdG9yIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWZ1bGwt
c2NyZWVuLWFuY2VzdG9yIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW5Eb2N1bWVudDoKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWZ1bGwtc2NyZWVuLWRvY3Vt
ZW50Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWZ1bGwtc2Ny
ZWVuLWRvY3VtZW50Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW5Db250cm9sc0hpZGRlbjoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWZ1bGwtc2NyZWVuLWNv
bnRyb2xzLWhpZGRlbiIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtp
dC1mdWxsLXNjcmVlbi1jb250cm9scy1oaWRkZW4iKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NQaWN0dXJlSW5QaWN0dXJlOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnBpY3R1cmUtaW4tcGljdHVyZSIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6cGljdHVyZS1pbi1waWN0dXJlIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzQWN0aXZlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOmFjdGl2ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6YWN0aXZlIik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0NoZWNrZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6Y2hlY2tlZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Y2hlY2tlZCIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NDb3JuZXJQcmVzZW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmNvcm5lci1wcmVzZW50Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjpjb3JuZXItcHJlc2VudCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWNyZW1lbnQ6Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZGVjcmVtZW50Iik7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjpkZWNyZW1lbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpkZWZhdWx0Iik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpkZWZhdWx0Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAj
aWYgRU5BQkxFKENTU19TRUxFQ1RPUlNfTEVWRUw0KQogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NEaXI6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6ZGlyKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGlyKCIpOwog
ICAgICAgICAgICAgICAgIGFwcGVuZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKGJ1aWxkZXIsIGNz
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjpkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCI6ZGlzYWJsZWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRG91YmxlQnV0dG9uOgotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmRvdWJsZS1idXR0b24iKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOmRvdWJsZS1idXR0b24iKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW1wdHk6Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZW1wdHkiKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOmVtcHR5Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQ6Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZW5hYmxlZCIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6ZW5hYmxlZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmQ6Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZW5kIik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjplbmQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRmlyc3RDaGlsZDoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmaXJzdC1jaGlsZCIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI6Zmlyc3QtY2hpbGQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRmlyc3RPZlR5cGU6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Zmlyc3Qtb2YtdHlwZSIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Zmlyc3Qtb2YtdHlwZSIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NG
b2N1czoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmb2N1cyIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Zm9jdXMiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXNW
aXNpYmxlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZvY3VzLXZp
c2libGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZvY3VzLXZpc2libGUi
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRm9jdXNXaXRoaW46Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6Zm9jdXMtd2l0aGluIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ijpmb2N1cy13aXRoaW4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1dHVyZToKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmdXR1cmUiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZ1dHVyZSIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSGFzQXR0YWNobWVudDoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpoYXMtYXR0YWNobWVudCIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6aGFzLWF0dGFjaG1lbnQiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NI
b3Jpem9udGFsOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmhvcml6
b250YWwiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmhvcml6b250YWwiKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzSG92ZXI6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
aG92ZXIiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmhvdmVyIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0luUmFuZ2U6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6aW4t
cmFuZ2UiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmluLXJhbmdlIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0luY3JlbWVudDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjppbmNyZW1lbnQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmluY3JlbWVu
dCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NJbmRldGVybWluYXRlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOmluZGV0ZXJtaW5hdGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOmluZGV0ZXJtaW5hdGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW52YWxpZDoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjppbnZhbGlkIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjppbnZhbGlkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bGFuZygiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOmxhbmcoIik7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShj
cy0+YXJndW1lbnRMaXN0KCkgJiYgIWNzLT5hcmd1bWVudExpc3QoKS0+aXNFbXB0eSgpLCAiQW4g
ZW1wdHkgOmxhbmcoKSBpcyBpbnZhbGlkIGFuZCBzaG91bGQgbmV2ZXIgYmUgZ2VuZXJhdGVkIGJ5
IHRoZSBwYXJzZXIuIik7CiAgICAgICAgICAgICAgICAgYXBwZW5kTGFuZ0FyZ3VtZW50TGlzdChi
dWlsZGVyLCAqY3MtPmFyZ3VtZW50TGlzdCgpKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYXN0Q2hpbGQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6bGFzdC1jaGlsZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCI6bGFzdC1jaGlsZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYXN0T2ZUeXBlOgotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxhc3Qtb2YtdHlwZSIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6bGFzdC1vZi10eXBlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xpbms6Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bGluayIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6bGluayIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOb0J1dHRvbjoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpuby1idXR0b24iKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOm5vLWJ1dHRvbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOb3Q6Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bm90KCIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI6bm90KCIpOwogICAgICAgICAgICAgICAgIGNzLT5zZWxlY3Rvckxpc3Qo
KS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc050aENoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOm50aC1jaGlsZCgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOm50aC1jaGlsZCgiKTsKICAgICAgICAgICAgICAgICBvdXRwdXROdGhDaGlsZEFuUGx1
c0IoKmNzLCBidWlsZGVyKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3QgQ1NTU2VsZWN0b3JM
aXN0KiBzZWxlY3Rvckxpc3QgPSBjcy0+c2VsZWN0b3JMaXN0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgb2YgIik7CisgICAgICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIgb2YgIik7CiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yTGlz
dC0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOdGhMYXN0Q2hpbGQ6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bnRoLWxhc3QtY2hpbGQoIik7
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpudGgtbGFzdC1jaGlsZCgiKTsKICAg
ICAgICAgICAgICAgICBvdXRwdXROdGhDaGlsZEFuUGx1c0IoKmNzLCBidWlsZGVyKTsKICAgICAg
ICAgICAgICAgICBpZiAoY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBjcy0+
c2VsZWN0b3JMaXN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgb2YgIik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgb2YgIik7
CiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yTGlzdC0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1
aWxkZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NOdGhMYXN0T2ZUeXBlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOm50aC1sYXN0LW9mLXR5cGUoIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjpudGgtbGFzdC1vZi10eXBlKCIpOwogICAgICAgICAgICAgICAgIGFwcGVu
ZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKGJ1aWxkZXIsIGNzKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTnRoT2ZUeXBl
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm50aC1vZi10eXBlKCIp
OworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bnRoLW9mLXR5cGUoIik7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kUHNldWRvQ2xhc3NGdW5jdGlvblRhaWwoYnVpbGRlciwgY3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NPbmx5Q2hpbGQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6b25seS1jaGlsZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6b25seS1j
aGlsZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NPbmx5T2ZUeXBlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOm9ubHktb2YtdHlwZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCI6b25seS1vZi10eXBlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc09wdGlvbmFsOgotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm9wdGlvbmFsIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjpvcHRpb25hbCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJczogewotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmlzKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6aXMoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5idWls
ZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTWF0Y2hlczogewotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm1hdGNoZXMoIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjptYXRjaGVzKCIpOwogICAgICAgICAgICAgICAgIGNzLT5zZWxlY3Rvckxp
c3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1doZXJlOiB7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6d2hlcmUoIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjp3aGVyZSgiKTsKICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0
b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NQbGFjZWhvbGRlclNo
b3duOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnBsYWNlaG9sZGVy
LXNob3duIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpwbGFjZWhvbGRlci1z
aG93biIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NPdXRPZlJhbmdlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOm91dC1vZi1yYW5nZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCI6b3V0LW9mLXJhbmdlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxF
KFZJREVPKQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NQYXN0Ogot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnBhc3QiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnBhc3QiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NSZWFkT25s
eToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpyZWFkLW9ubHkiKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnJlYWQtb25seSIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NS
ZWFkV3JpdGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cmVhZC13
cml0ZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6cmVhZC13cml0ZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NSZXF1aXJlZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpyZXF1aXJlZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6cmVxdWlyZWQi
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZF
TDQpCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1JvbGU6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cm9sZSgiKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOnJvbGUoIik7CiAgICAgICAgICAgICAgICAgYXBwZW5kUHNl
dWRvQ2xhc3NGdW5jdGlvblRhaWwoYnVpbGRlciwgY3MpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Jvb3Q6
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cm9vdCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6cm9vdCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NTY29wZToKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpzY29wZSIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6c2NvcGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzU2luZ2xlQnV0dG9uOgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnNpbmdsZS1idXR0b24iKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnNpbmdsZS1idXR0b24iKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
U3RhcnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6c3RhcnQiKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnN0YXJ0Iik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Rhcmdl
dDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp0YXJnZXQiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnRhcmdldCIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZDoK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp2YWxpZCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6dmFsaWQiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmVydGljYWw6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6dmVydGljYWwiKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnZlcnRpY2FsIik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Zpc2l0ZWQ6
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6dmlzaXRlZCIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6dmlzaXRlZCIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NXaW5kb3dJ
bmFjdGl2ZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjp3aW5kb3ct
aW5hY3RpdmUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOndpbmRvdy1pbmFj
dGl2ZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NIb3N0OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOmhvc3QiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmhvc3QiKTsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogc2VsZWN0b3JMaXN0ID0gY3MtPnNlbGVjdG9yTGlz
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdG9yTGlzdC0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwpA
QCAtNjc2LDcgKzY2Nyw3IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0
IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGVm
aW5lZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpkZWZpbmVkIik7
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpkZWZpbmVkIik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vu
a25vd246CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02ODQsMTIg
KzY3NSwxMiBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcm
IHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+bWF0Y2goKSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewogICAgICAgICAgICAgc3dpdGNoIChjcy0+cHNldWRv
RWxlbWVudFR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudFNsb3R0ZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OnNs
b3R0ZWQoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjo6c2xvdHRlZCgiKTsK
ICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4dChi
dWlsZGVyKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dFBhcnQ6IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6cGFydCgi
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjpwYXJ0KCIpOwogICAgICAgICAg
ICAgICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBw
YXJ0TmFtZSA6ICpjcy0+YXJndW1lbnRMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc0ZpcnN0KQpAQCAtNzAyLDMyICs2OTMsMjggQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxl
Y3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tTGVn
YWN5UHJlZml4ZWQ6CiAgICAgICAgICAgICAgICAgaWYgKGNzLT52YWx1ZSgpID09ICJwbGFjZWhv
bGRlciIpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKTsKICAgICAgICAgICAgICAgICBpZiAo
Y3MtPnZhbHVlKCkgPT0gImZpbGUtc2VsZWN0b3ItYnV0dG9uIikKLSAgICAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIik7
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Oi13ZWJraXQtZmlsZS11cGxv
YWQtYnV0dG9uIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudEN1ZTogewogICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBzZWxlY3Rvckxpc3QgPSBjcy0+c2VsZWN0b3JMaXN0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OmN1ZSgiKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjo6Y3VlKCIpOwogICAgICAgICAgICAg
ICAgICAgICBzZWxlY3Rvckxpc3QtPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OmN1ZSIpOwor
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjpjdWUiKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6Iik7Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoY3MtPnNlcmlhbGl6aW5nVmFsdWUoKSk7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjo6IiwgY3MtPnNlcmlhbGl6aW5nVmFsdWUoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPmlzQXR0cmlidXRlU2VsZWN0b3IoKSkg
ewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKLSAgICAgICAgICAgIGNvbnN0IEF0
b21TdHJpbmcmIHByZWZpeCA9IGNzLT5hdHRyaWJ1dGUoKS5wcmVmaXgoKTsKLSAgICAgICAgICAg
IGlmICghcHJlZml4LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHByZWZpeCk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3wnKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvJiBwcmVmaXggPSBjcy0+YXR0cmlidXRlKCkucHJl
Zml4KCk7ICFwcmVmaXguaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHByZWZpeCwgJ3wnKTsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNzLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNzLT5tYXRjaCgpKSB7CiAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CkBAIC03MzgsMTkgKzcyNSwxOSBA
QCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lk
ZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
TGlzdDoKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ+PSIpOwor
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgifj0iKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SHlwaGVuOgot
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInw9Iik7CisgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ8PSIpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpCZWdpbjoKLSAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJePSIpOworICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXj0iKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RW5kOgotICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiQ9Iik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIkPSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpDb250YWluOgotICAgICAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIio9Iik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIqPSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc1OCwyMCArNzQ1LDIwIEBA
IFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRl
KSBjb25zdAogICAgICAgICAgICAgaWYgKGNzLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpTZXQp
IHsKICAgICAgICAgICAgICAgICBzZXJpYWxpemVTdHJpbmcoY3MtPnNlcmlhbGl6aW5nVmFsdWUo
KSwgYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgaWYgKGNzLT5hdHRyaWJ1dGVWYWx1ZU1hdGNo
aW5nSXNDYXNlSW5zZW5zaXRpdmUoKSkKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgaV0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBp
XSIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ10nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjcy0+bWF0Y2go
KSA9PSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKSB7CiAgICAgICAgICAgICBzd2l0Y2gg
KGNzLT5wYWdlUHNldWRvQ2xhc3NUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZVBzZXVk
b0NsYXNzRmlyc3Q6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Zmly
c3QiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZpcnN0Iik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VQc2V1ZG9DbGFzc0xlZnQ6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bGVmdCIpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bGVmdCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBQYWdlUHNldWRvQ2xhc3NSaWdodDoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjpyaWdodCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6cmlnaHQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNzk3LDEwICs3ODQsMTIgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxl
Y3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICBGQUxM
VEhST1VHSDsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5k
YW50OgotICAgICAgICAgICAgcmV0dXJuIHRhZ0hpc3RvcnktPnNlbGVjdG9yVGV4dChidWlsZGVy
LnRvU3RyaW5nKCkgKyByaWdodFNpZGUpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocmln
aHRTaWRlKTsKKyAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5LT5zZWxlY3RvclRleHQoYnVp
bGRlci50b1N0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpICsgcmlnaHRTaWRlOworICAgIGJ1aWxkZXIuYXBwZW5kKHJpZ2h0U2lkZSk7Cisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlLCBib29sIGNvbnZlcnRUb0xvd2Vy
Y2FzZSwgQXR0cmlidXRlTWF0Y2hUeXBlIG1hdGNoVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHAKaW5kZXggZTE1OTBiOWI1M2JmZTZhZjY2MjA1YjcyMzM0M2QwN2E3YmMw
N2MxNy4uY2MwNzNiNGIxMWMyNWNkYzA1MGU3M2Y3M2IzNjViOGM2MTZkM2RiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENT
U1NlbGVjdG9yTGlzdDo6YnVpbGRTZWxlY3RvcnNUZXh0KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIpIGNvbnN0CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGZpcnN0U3Vic2VsZWN0b3IgPSBm
aXJzdCgpOwogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHN1YlNlbGVjdG9yID0gZmlyc3RT
dWJzZWxlY3Rvcjsgc3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0Ojpu
ZXh0KHN1YlNlbGVjdG9yKSkgewogICAgICAgICBpZiAoc3ViU2VsZWN0b3IgIT0gZmlyc3RTdWJz
ZWxlY3RvcikKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChzdWJTZWxlY3Rvci0+c2VsZWN0b3JUZXh0KCkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAwNTcxY2Y5NmNlMDgxMmI1ZTgyNzU5
NzkwZTVlMDBkOTE2YTU0OWY2Li41MTkzYzMyYzJlZjVhMWI0NDQyOWM0ZjMzNWYzZDdhYTcyOTk1
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zNiw3ICszNiw2IEBA
CiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1
ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NiwxMiArODUsNyBAQCBSZWY8Q1NT
U3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+JiYgc2hlZXQsCiAKIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQogICAg
IDogbV9jb250ZW50cyhXVEZNb3ZlKGNvbnRlbnRzKSkKLSAgICAsIG1faXNJbmxpbmVTdHlsZXNo
ZWV0KGZhbHNlKQotICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQotICAgICwgbV9tdXRhdGVkUnVs
ZXMoZmFsc2UpCi0gICAgLCBtX293bmVyTm9kZSgwKQogICAgICwgbV9vd25lclJ1bGUob3duZXJS
dWxlKQotICAgICwgbV9zdGFydFBvc2l0aW9uKCkKIHsKICAgICBtX2NvbnRlbnRzLT5yZWdpc3Rl
ckNsaWVudCh0aGlzKTsKIH0KQEAgLTk5LDExICs5Myw4IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0
eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVs
ZSoKIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBjb250ZW50cywgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNP
cmlnaW5DbGVhbikKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250ZW50cykpCiAgICAgLCBt
X2lzSW5saW5lU3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hlZXQpCi0gICAgLCBtX2lzRGlzYWJs
ZWQoZmFsc2UpCi0gICAgLCBtX211dGF0ZWRSdWxlcyhmYWxzZSkKICAgICAsIG1faXNPcmlnaW5D
bGVhbihpc09yaWdpbkNsZWFuKQogICAgICwgbV9vd25lck5vZGUoJm93bmVyTm9kZSkKLSAgICAs
IG1fb3duZXJSdWxlKDApCiAgICAgLCBtX3N0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikKIHsK
ICAgICBBU1NFUlQoaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudCgmb3duZXJOb2RlKSk7
CkBAIC0yOTcsMTcgKzI4OCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0Ojpk
ZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogCiBFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hl
ZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwg
T3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewotICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKLSAg
ICB0ZXh0LmFwcGVuZChzZWxlY3Rvcik7Ci0gICAgdGV4dC5hcHBlbmRMaXRlcmFsKCIgeyAiKTsK
LSAgICB0ZXh0LmFwcGVuZChzdHlsZSk7Ci0gICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgdGV4dC5hcHBlbmQoJ30nKTsKLSAgICBhdXRvIGlu
c2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVP
cihsZW5ndGgoKSkpOworICAgIGF1dG8gdGV4dCA9IG1ha2VTdHJpbmcoc2VsZWN0b3IsICIgeyAi
LCBzdHlsZSwgIXN0eWxlLmlzRW1wdHkoKSA/ICIgIiA6ICIiLCAnfScpOworICAgIGF1dG8gaW5z
ZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dCwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSkp
OwogICAgIGlmIChpbnNlcnRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gaW5zZXJ0UnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgCiAgICAgLy8gQXMg
cGVyIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uLCBhbHdheXMgcmV0dXJuIC0xLgogICAgIHJldHVy
biAtMTsKIH0KQEAgLTM0OCw3ICszMzIsNiBAQCBNZWRpYUxpc3QqIENTU1N0eWxlU2hlZXQ6Om1l
ZGlhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWVkaWFRdWVyaWVzKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQogICAgIGlmICghbV9tZWRpYUNTU09NV3JhcHBlcikKICAgICAgICAgbV9tZWRp
YUNTU09NV3JhcHBlciA9IE1lZGlhTGlzdDo6Y3JlYXRlKG1fbWVkaWFRdWVyaWVzLmdldCgpLCBj
b25zdF9jYXN0PENTU1N0eWxlU2hlZXQqPih0aGlzKSk7CiAgICAgcmV0dXJuIG1fbWVkaWFDU1NP
TVdyYXBwZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCA1Zjg3NzQ4
NzA2Y2Q0ZmE4NjVkYWI0ZDYyNGIxNTgyZDY5YTcxZDNkLi45OTcxNWNlMjhhN2Y2MDlkYTAwN2Jk
MjQyOWEwZWI2ODViY2VhY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTEz
OCwxNSArMTM4LDE1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAidGV4dC9jc3MiX3M7IH0KIAogICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IG1f
Y29udGVudHM7Ci0gICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldDsKLSAgICBib29sIG1faXNE
aXNhYmxlZDsKLSAgICBib29sIG1fbXV0YXRlZFJ1bGVzOworICAgIGJvb2wgbV9pc0lubGluZVN0
eWxlc2hlZXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Rpc2FibGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbXV0YXRlZFJ1bGVzIHsgZmFsc2UgfTsKICAgICBPcHRpb25hbDxib29sPiBtX2lz
T3JpZ2luQ2xlYW47CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlT
ZXQ+IG1fbWVkaWFRdWVyaWVzOwogCi0gICAgTm9kZSogbV9vd25lck5vZGU7Ci0gICAgQ1NTSW1w
b3J0UnVsZSogbV9vd25lclJ1bGU7CisgICAgTm9kZSogbV9vd25lck5vZGUgeyBudWxscHRyIH07
CisgICAgQ1NTSW1wb3J0UnVsZSogbV9vd25lclJ1bGUgeyBudWxscHRyIH07CiAKICAgICBUZXh0
UG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggZTYwYzg1YTcyZDljNDkzY2Y0MTY2ZWNjZGMyZDRk
ODljMmFmZTU3OC4uYWVhY2JiZGVlZWJiMzE4ZDY1MmJhODA2OGU1MzkzYmUyMGE4NWE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcApAQCAtMjYs
OCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0
aW9uVmFsdWUuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKQEAgLTQyLDMzICs0MCwyNyBAQCBib29sIENTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0N1YmljQmV6aWVy
VGltaW5nRnVuY3RpbwogCiBTdHJpbmcgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0
b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVp
bGRlci5hcHBlbmQoInN0ZXBzKCIsIG1fc3RlcHMpOworICAgIGNvbnN0IGNoYXIqIHBvc2l0aW9u
ID0gIiI7CiAgICAgaWYgKG1fc3RlcFBvc2l0aW9uKSB7CiAgICAgICAgIHN3aXRjaCAobV9zdGVw
UG9zaXRpb24udmFsdWUoKSkgewogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0
ZXBQb3NpdGlvbjo6SnVtcFN0YXJ0OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsIGp1bXAtc3RhcnQiKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gIiwganVtcC1zdGFydCI7
CiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246
OlN0ZXBQb3NpdGlvbjo6SnVtcE5vbmU6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwganVtcC1ub25lIik7CisgICAgICAgICAgICBwb3NpdGlvbiA9ICIsIGp1bXAtbm9uZSI7
CiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246
OlN0ZXBQb3NpdGlvbjo6SnVtcEJvdGg6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwganVtcC1ib3RoIik7CisgICAgICAgICAgICBwb3NpdGlvbiA9ICIsIGp1bXAtYm90aCI7
CiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246
OlN0ZXBQb3NpdGlvbjo6U3RhcnQ6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Iiwgc3RhcnQiKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gIiwgc3RhcnQiOwogICAgICAgICAg
ICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRp
b246Okp1bXBFbmQ6CiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0
aW9uOjpFbmQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBidWls
ZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoInN0ZXBzKCIsIG1fc3RlcHMsIHBvc2l0aW9uLCAnKScpOwogfQogCiBi
b29sIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0CkBAIC03OCwxNyArNzAsNyBAQCBib29sIENT
U1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSYgb3RoZQogCiBTdHJpbmcgQ1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3ByaW5nKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9tYXNzKSk7Ci0gICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKG1fc3RpZmZuZXNzKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVy
LmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fZGFtcGluZykpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihtX2luaXRpYWxWZWxvY2l0eSkpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZygic3ByaW5nKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9tYXNzKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fc3RpZmZuZXNzKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fZGFtcGluZyksICcgJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2luaXRpYWxWZWxvY2l0eSksICcpJyk7CiB9CiAKIGJv
b2wgQ1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NwcmluZ1Rp
bWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdApAQCAtOTYsNSArNzgsNCBAQCBib29sIENT
U1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTcHJpbmdUaW1pbmdG
dW5jdGlvblZhbHVlJiBvdAogICAgIHJldHVybiBtX21hc3MgPT0gb3RoZXIubV9tYXNzICYmIG1f
c3RpZmZuZXNzID09IG90aGVyLm1fc3RpZmZuZXNzICYmIG1fZGFtcGluZyA9PSBvdGhlci5tX2Rh
bXBpbmcgJiYgbV9pbml0aWFsVmVsb2NpdHkgPT0gb3RoZXIubV9pbml0aWFsVmVsb2NpdHk7CiB9
CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAppbmRl
eCBhYzc0ZmU4N2ZiMzE1NzJmYTI2OTUxYmVhZGM1M2IyM2I3ZjRmNjhjLi45ZGYzYzYzNzg2OTRm
ZTgzNDEwZWZlZjEzZTY5YWM0ZjcxZDQ5NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5U2V0OjptZWRpYVRleHQoKSBjb25z
dAogICAgIGJvb2wgbmVlZENvbW1hID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBxdWVyeSA6IG1f
cXVlcmllcykgewogICAgICAgICBpZiAobmVlZENvbW1hKQotICAgICAgICAgICAgdGV4dC5hcHBl
bmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIiwgIik7CiAgICAgICAg
IHRleHQuYXBwZW5kKHF1ZXJ5LmNzc1RleHQoKSk7CiAgICAgICAgIG5lZWRDb21tYSA9IHRydWU7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCmluZGV4IDE2NjI0MjBjOTI1NjRkZTQw
MTIwNWYyMTQ5YjQ3Nzg2ZjZhYzdmYmEuLjQ5NzkwZDM2YTFlYTBkNmQzYzc2YTBiNmIzNjZiZWIy
YmE4YWFjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKQEAgLTQ2LDEwICs0NiwxMCBA
QCBTdHJpbmcgTWVkaWFRdWVyeTo6c2VyaWFsaXplKCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVy
IHJlc3VsdDsKICAgICBzd2l0Y2ggKG1fcmVzdHJpY3RvcikgewogICAgIGNhc2UgTWVkaWFRdWVy
eTo6T25seToKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIm9ubHkgIik7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIm9ubHkgIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFR
dWVyeTo6Tm90OgotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibm90ICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCJub3QgIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFR
dWVyeTo6Tm9uZToKICAgICAgICAgc2hvdWxkT21pdE1lZGlhVHlwZSA9ICFtX2V4cHJlc3Npb25z
LmlzRW1wdHkoKSAmJiBtX21lZGlhVHlwZSA9PSAiYWxsIjsKQEAgLTYyLDcgKzYyLDcgQEAgU3Ry
aW5nIE1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0CiAgICAgfQogICAgIGZvciAoYXV0byYg
ZXhwcmVzc2lvbiA6IG1fZXhwcmVzc2lvbnMpIHsKICAgICAgICAgaWYgKG5lZWRzQW5kKQotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBhbmQgIik7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCIgYW5kICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKGV4cHJlc3Npb24uc2Vy
aWFsaXplKCkpOwogICAgICAgICBuZWVkc0FuZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKaW5kZXggYjA5OWZjNGQxZDcwZGVhNDI2
ODcwNTIzNjJhMTkwMjIxZjNmNzY1Mi4uOGI4NTdlYTNmMGJlODFhZGQ4MTA4ZTQxNzc2NGJlOTgz
YmIxMmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3Bw
CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKICNpbmNs
dWRlICJNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjc0LDE5ICsyNzMsOCBAQCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6
TWVkaWFRdWVyeUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBDU1NQYXJzZXJUb2tl
bgogCiBTdHJpbmcgTWVkaWFRdWVyeUV4cHJlc3Npb246OnNlcmlhbGl6ZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3NlcmlhbGl6YXRpb25DYWNoZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG1f
c2VyaWFsaXphdGlvbkNhY2hlOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVz
dWx0LmFwcGVuZCgnKCcpOwotICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYUZlYXR1cmUuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSk7Ci0gICAgaWYgKG1fdmFsdWUpIHsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZS0+Y3Nz
VGV4dCgpKTsKLSAgICB9Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotCi0gICAgbV9zZXJpYWxp
emF0aW9uQ2FjaGUgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICBpZiAobV9zZXJpYWxpemF0aW9u
Q2FjaGUuaXNOdWxsKCkpCisgICAgICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gbWFrZVN0cmlu
ZygnKCcsIG1fbWVkaWFGZWF0dXJlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIG1fdmFsdWUg
PyAiOiAiIDogIiIsIG1fdmFsdWUgPyBtX3ZhbHVlLT5jc3NUZXh0KCkgOiAiIiwgJyknKTsKICAg
ICByZXR1cm4gbV9zZXJpYWxpemF0aW9uQ2FjaGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKaW5kZXggZmQ2MzY4ZDA3ZWJhMjY5ZWQ2Y2E2MGRjZTNlZDE2MmZiOTkz
ZGI2My4uNDVhZGUyMmEyODlmMzEyNDY1MTkyNjBkYjQxZTlkMDJkNzJjYmY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTU5Myw3ICs1OTMsNyBAQCBTdHJpbmcg
U3R5bGVQcm9wZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgcwogICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRTaXplIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Np
emUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFBvc2l0aW9uWUNTU1Byb3BlcnR5
KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAg
IGxheWVyUmVzdWx0LmFwcGVuZExpdGVyYWwoIi8gIik7CisgICAgICAgICAgICAgICAgICAgIGxh
eWVyUmVzdWx0LmFwcGVuZCgiLyAiKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAodXNlUmVwZWF0WFNob3J0aGFuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuLmNwcAppbmRleCBkYzY5MjMyZWJmNTQxNzlhODcwNjNlMWZmMTkz
NGRkNWYzNTU4NjkyLi45YTdiNzI0YWRlMjllY2Y2MWQxZGE4OGFhMzUzMjI3YzhkMTY4OTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcApAQCAtNDE0
LDE0NiArNDE0LDEyNyBAQCB2b2lkIENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG5leAogCiAgICAgICAgIENTU1Bh
cnNlclRva2VuVHlwZSBuZXh0VHlwZSA9IG5leHRUb2tlbi0+dHlwZSgpOwogICAgICAgICBpZiAo
dG9rZW5zTmVlZGluZ0NvbW1lbnQuYnVmZmVyW25leHRUeXBlXSkgewotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvKiovIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
LyoqLyIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG5l
eHRUeXBlID09IERlbGltaXRlclRva2VuICYmICgoZGVsaW1pdGVyc05lZWRpbmdDb21tZW50ID09
IG5leHRUb2tlbi0+ZGVsaW1pdGVyKCkpIHx8IC4uLiB8fCBmYWxzZSkpIHsKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLyoqLyIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIi8qKi8iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH07CiAKICAg
ICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgSWRlbnRUb2tlbjogeworICAgIGNhc2UgSWRl
bnRUb2tlbjoKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCks
IGJ1aWxkZXIpOwogICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBG
dW5jdGlvblRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4sIE51bWJlclRva2VuLCBQZXJjZW50
YWdlVG9rZW4sIERpbWVuc2lvblRva2VuLCBDRENUb2tlbiwgTGVmdFBhcmVudGhlc2lzVG9rZW4g
fSwgJy0nKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRnVuY3Rpb25Ub2tlbjog
eworICAgIGNhc2UgRnVuY3Rpb25Ub2tlbjoKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2
YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcp
OwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBBdEtleXdvcmRUb2tlbjogeworICAg
IGNhc2UgQXRLZXl3b3JkVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7CiAgICAg
ICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAg
ICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwg
VXJsVG9rZW4sIEJhZFVybFRva2VuLCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1l
bnNpb25Ub2tlbiwgQ0RDVG9rZW4gfSwgJy0nKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgSGFzaFRva2VuOiB7CisgICAgY2FzZSBIYXNoVG9rZW46CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcjJyk7CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmlu
ZygpLCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJpY3Rl
ZCkpOwogICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBGdW5jdGlv
blRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4sIE51bWJlclRva2VuLCBQZXJjZW50YWdlVG9r
ZW4sIERpbWVuc2lvblRva2VuLCBDRENUb2tlbiB9LCAnLScpOwogICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBVcmxUb2tlbjogewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
InVybCgiKTsKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgidXJs
KCIpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVp
bGRlcik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIERlbGltaXRlclRva2VuOiB7CisgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjoK
ICAgICAgICAgc3dpdGNoIChkZWxpbWl0ZXIoKSkgewotICAgICAgICBjYXNlICdcXCc6IHsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcbiIpOworICAgICAgICBjYXNlICdc
XCc6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxcbiIpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KKwogICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgY2FzZSAnLSc6IHsK
KyAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIo
KSk7CiAgICAgICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBGdW5j
dGlvblRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4sIE51bWJlclRva2VuLCBQZXJjZW50YWdl
VG9rZW4sIERpbWVuc2lvblRva2VuIH0sICctJyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgJ0AnOiB7CisgICAgICAgIGNhc2UgJ0AnOgogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ0AnKTsKICAgICAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRl
ZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiB9LCAn
LScpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KIAogICAgICAgICBjYXNlICcuJzoK
LSAgICAgICAgY2FzZSAnKyc6IHsKKyAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChkZWxpbWl0ZXIoKSk7CiAgICAgICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVk
ZWQoeyBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiB9KTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAKLSAgICAgICAgY2FzZSAnLyc6IHsKKyAgICAg
ICAgY2FzZSAnLyc6CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLycpOwogICAgICAgICAg
ICAgLy8gV2VpcmRseSBDbGFuZyBlcnJvcnMgaWYgeW91IHRyeSB0byB1c2UgdGhlIGZvbGQgZXhw
cmVzc2lvbiBpbiBidWlsZE5leHRUb2tlbk5lZWRzQ29tbWVudFRhYmxlKCkgYmVjYXVzZSB0aGUg
dHJ1ZSB2YWx1ZSBpcyB1bnVzZWQuCiAgICAgICAgICAgICAvLyBTbyB3ZSBqdXN0IGJ1aWxkIHRo
ZSB0YWJsZSBieSBoYW5kIGhlcmUgaW5zdGVhZC4gU2VlOiByZGFyOi8vNjk3MTA2NjEKICAgICAg
ICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IH0sICcqJyk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChkZWxpbWl0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCiAgICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIE51bWJlclRva2VuOiB7Ci0gICAgICAgIC8vIFRo
ZXNlIHdvbid0IHByb3Blcmx5IHByZXNlcnZlIHRoZSBOdW1lcmljVmFsdWVUeXBlIGZsYWcKKyAg
ICBjYXNlIE51bWJlclRva2VuOgorICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVz
ZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnLgogICAgICAgICBpZiAobV9udW1lcmljU2ln
biA9PSBQbHVzU2lnbikKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcrJyk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG51bWVyaWNWYWx1ZSgpKTsKICAgICAgICAgYXBwZW5kQ29tbWVudElm
TmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2Vu
LCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiB9LCAnJScpOwog
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBQZXJjZW50YWdlVG9rZW46IHsKKyAgICBj
YXNlIFBlcmNlbnRhZ2VUb2tlbjoKICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtZXJpY1ZhbHVl
KCksICclJyk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIERpbWVuc2lvblRva2Vu
OiB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5nLiA0ZTNl
MiBhcyA0MDAwZTIKKyAgICBjYXNlIERpbWVuc2lvblRva2VuOgorICAgICAgICAvLyBUaGlzIHdp
bGwgaW5jb3JyZWN0bHkgc2VyaWFsaXplIGUuZy4gNGUzZTIgYXMgNDAwMGUyLgogICAgICAgICBi
dWlsZGVyLmFwcGVuZChudW1lcmljVmFsdWUoKSk7CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZp
ZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYXBwZW5kQ29tbWVudElm
TmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2Vu
LCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiwgQ0RDVG9rZW4g
fSwgJy0nKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVW5pY29kZVJhbmdlVG9r
ZW46IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVKyIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChoZXgodW5pY29kZVJhbmdlU3RhcnQoKSkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgnLScpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgodW5pY29kZVJhbmdlRW5kKCkp
KTsKKyAgICBjYXNlIFVuaWNvZGVSYW5nZVRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgi
VSsiLCBoZXgodW5pY29kZVJhbmdlU3RhcnQoKSksICctJywgaGV4KHVuaWNvZGVSYW5nZUVuZCgp
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFN0cmluZ1Rva2VuOiB7CisgICAg
Y2FzZSBTdHJpbmdUb2tlbjoKICAgICAgICAgc2VyaWFsaXplU3RyaW5nKHZhbHVlKCkudG9TdHJp
bmcoKSwgYnVpbGRlcik7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgSW5jbHVk
ZU1hdGNoVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifj0iKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIn49Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGFzaE1h
dGNoVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifD0iKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoInw9Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJlZml4TWF0
Y2hUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJePSIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiXj0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdWZmaXhNYXRj
aFRva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiQ9Iik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCIkPSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN1YnN0cmluZ01h
dGNoVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKj0iKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoIio9Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29sdW1uVG9r
ZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifHwiKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInx8Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0RPVG9rZW46Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPCEtLSIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiPCEtLSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENEQ1Rva2VuOgotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIi0tPiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLS0+
Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmFkU3RyaW5nVG9rZW46Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJ1xuIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCInXG4i
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCYWRVcmxUb2tlbjoKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJ1cmwoKCkiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInVybCgo
KSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoaXRlc3BhY2VUb2tlbjoKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDA0N2JlZGJk
MzU0MzczNDg5OWQyYjg5YzBlZDljMGQyYmE1NjA4NzAuLjdjMWQ3ZjAxODlhMjBjMmJlMGE5MjJl
NjdiZjRhNzM1OTgyNWM3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjE4MSw3ICs2
MTgxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAjZW5kaWYKIAog
ICAgIGlmIChzaG91bGRFbmZvcmNlSFRUUDA5U2FuZGJveCgpKSB7Ci0gICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiU2FuZGJveGluZyAnIiwgbV91cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCksICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIik7Cisg
ICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNhbmRib3hpbmcgJyIsIG1fdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhU
VFAvMC45LiIpOwogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIGVuZm9yY2VTYW5k
Ym94RmxhZ3MoU2FuZGJveFNjcmlwdHMgfCBTYW5kYm94UGx1Z2lucyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDUwNGZmNTRlNmY4YTZhYTVkM2QwM2VlODAyYTdmYjA2ZWZmMGZm
ZGIuLjIzZjEzNDk1ZmZhOGEwMDQ0ODMwY2U1NjZjMWUwMGQyMDc0NTIyMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTI3MjksNyArMjcyOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEF0dHJp
YnV0ZXMoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiBpZD1cJyIsIGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSwg
J1wnJyk7CiAKICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpKSB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIGNsYXNzPVwnIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgY2xh
c3M9XCciKTsKICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZXNUb0R1bXAgPSBlbGVtZW50LmNsYXNz
TmFtZXMoKS5zaXplKCk7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4TnVtQ2xhc3NOYW1l
cyA9IDc7CiAgICAgICAgIGJvb2wgYWRkRWxsaXBzaXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NlY3VyaXR5Q29udGV4dC5jcHAKaW5kZXggZjU3ODM4YTYyMDFkNWVlYjFjYzk3MDVmMmRiMTJm
OTg2NjQ5OWJlYi4uNGU1Mjg4ZTc2MzY2MWRhNjliOWY4MDBhNTkxZjAxOWMxYzE3MzE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKQEAgLTEzNiwxMSArMTM2LDEwIEBA
IFNhbmRib3hGbGFncyBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGljeShjb25zdCBT
dHJpbmcmIHBvbGljeSwgU3RyaW5nJiBpCiAgICAgICAgICAgICBmbGFncyAmPSB+U2FuZGJveFN0
b3JhZ2VBY2Nlc3NCeVVzZXJBY3RpdmF0aW9uOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGlmIChudW1iZXJPZlRva2VuRXJyb3JzKQotICAgICAgICAgICAgICAgIHRva2VuRXJyb3JzLmFw
cGVuZExpdGVyYWwoIiwgJyIpOworICAgICAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgi
LCAnIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBw
ZW5kKCdcJycpOwotICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKHNhbmRib3hUb2tlbik7
Ci0gICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmQoJ1wnJyk7CisgICAgICAgICAgICB0b2tl
bkVycm9ycy5hcHBlbmQoc2FuZGJveFRva2VuLCAnXCcnKTsKICAgICAgICAgICAgIG51bWJlck9m
VG9rZW5FcnJvcnMrKzsKICAgICAgICAgfQogCkBAIC0xNDksOSArMTQ4LDkgQEAgU2FuZGJveEZs
YWdzIFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgcG9s
aWN5LCBTdHJpbmcmIGkKIAogICAgIGlmIChudW1iZXJPZlRva2VuRXJyb3JzKSB7CiAgICAgICAg
IGlmIChudW1iZXJPZlRva2VuRXJyb3JzID4gMSkKLSAgICAgICAgICAgIHRva2VuRXJyb3JzLmFw
cGVuZExpdGVyYWwoIiBhcmUgaW52YWxpZCBzYW5kYm94IGZsYWdzLiIpOworICAgICAgICAgICAg
dG9rZW5FcnJvcnMuYXBwZW5kKCIgYXJlIGludmFsaWQgc2FuZGJveCBmbGFncy4iKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kTGl0ZXJhbCgiIGlzIGFuIGlu
dmFsaWQgc2FuZGJveCBmbGFnLiIpOworICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKCIg
aXMgYW4gaW52YWxpZCBzYW5kYm94IGZsYWcuIik7CiAgICAgICAgIGludmFsaWRUb2tlbnNFcnJv
ck1lc3NhZ2UgPSB0b2tlbkVycm9ycy50b1N0cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCmluZGV4IDRiODRmYzc1NjllZDFhMzBmMTMy
OGJhZTQyN2E1MTgyYWM4Y2VhYTkuLjczZDFjM2YyYzZiZmQzODFiZmI5M2ExYWI0NWUzZDdkZGQ0
NzY3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQo
Y29uc3QgU3RyaW5nJiBpbiwgY29uc3QgVGV4dCogbm9kZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA9PSAwIHx8IGkgKyAxID09IGluLmxlbmd0aCgpKSAvLyBhdCBzdGFydCBv
ciBlbmQgb2Ygc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmRMaXRl
cmFsKGNvbnZlcnRlZFNwYWNlU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCmluZGV4IDkzNzg2ZDNjY2RjMWYyOWY0MDdmNDk5MjBhYmJhNTJjYmZiMzI5OTcuLjk0YjQy
Zjk3NTllNzUwNzhlMzA3OTkyMDI3NDcxN2RjZDRmMDFjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0YXRpYyBVU3RyaW5n
U2VhcmNoKiBjcmVhdGVTZWFyY2hlcigpCiAgICAgLy8gYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIGV4
YWN0bHkgd2hhdCBpdCBpcywgc2luY2Ugd2UgZG9uJ3QgcGVyZm9ybSBhbnkgc2VhcmNoZXMKICAg
ICAvLyB3aXRob3V0IHNldHRpbmcgYm90aCB0aGUgcGF0dGVybiBhbmQgdGhlIHRleHQuCiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgU3RyaW5nIHNlYXJjaENvbGxh
dG9yTmFtZSA9IG1ha2VTdHJpbmcoY3VycmVudFNlYXJjaExvY2FsZUlEKCksICJAY29sbGF0aW9u
PXNlYXJjaCIpOworICAgIGF1dG8gc2VhcmNoQ29sbGF0b3JOYW1lID0gbWFrZVN0cmluZyhjdXJy
ZW50U2VhcmNoTG9jYWxlSUQoKSwgIkBjb2xsYXRpb249c2VhcmNoIik7CiAgICAgVVN0cmluZ1Nl
YXJjaCogc2VhcmNoZXIgPSB1c2VhcmNoX29wZW4oJm5ld2xpbmVDaGFyYWN0ZXIsIDEsICZuZXds
aW5lQ2hhcmFjdGVyLCAxLCBzZWFyY2hDb2xsYXRvck5hbWUudXRmOCgpLmRhdGEoKSwgMCwgJnN0
YXR1cyk7CiAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IgfHwgc3RhdHVzID09IFVf
VVNJTkdfRkFMTEJBQ0tfV0FSTklORyB8fCBzdGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5J
TkcpOwogICAgIHJldHVybiBzZWFyY2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCAxOWNiMGQ5YThlMmQ0NGQ3NzMzMzg4ZWNlYTEyNDBjMmE0MWVjYTlkLi5mYjVlMjYxMzc1NTJm
OTQ5Mjk4ODQ4OTFjZGU1MWYyYWFmYzFiNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0zODYsMTEgKzM4NiwxMSBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmRTdHlsZU5vZGVPcGVuVGFnKFN0cmluZ0J1aWxkZXImIG91dCwgU3R5bGVQcgogICAgIC8vIHdy
YXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIHJlbW92ZWQgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdAogICAgIEFTU0VSVChwcm9wZXJ0eU1pc3NpbmdPckVx
dWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
KSk7CiAgICAgaWYgKGlzQmxvY2spCi0gICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCI8ZGl2IHN0
eWxlPVwiIik7CisgICAgICAgIG91dC5hcHBlbmQoIjxkaXYgc3R5bGU9XCIiKTsKICAgICBlbHNl
Ci0gICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCI8c3BhbiBzdHlsZT1cIiIpOworICAgICAgICBv
dXQuYXBwZW5kKCI8c3BhbiBzdHlsZT1cIiIpOwogICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91
dCwgc3R5bGUtPmFzVGV4dCgpLCBkb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKTsKLSAgICBvdXQu
YXBwZW5kTGl0ZXJhbCgiXCI+Iik7CisgICAgb3V0LmFwcGVuZCgiXCI+Iik7CiB9CiAKIGNvbnN0
IFN0cmluZyYgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wg
aXNCbG9jaykKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRTdGFydFRhZyhTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IEVsZW1lbnQmCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIW5ld0lubGluZVN0eWxlLT5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCIgc3R5bGU9XCIiKTsKKyAgICAgICAgICAgIG91dC5h
cHBlbmQoIiBzdHlsZT1cIiIpOwogICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0
LCBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAg
ICAgICAgICAgIG91dC5hcHBlbmQoJyInKTsKICAgICAgICAgfQpAQCAtMTI0MiwxMSArMTI0Miw5
IEBAIFN0cmluZyBkb2N1bWVudFR5cGVTdHJpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
U3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgbWFya3VwOwotICAgIG1hcmt1cC5hcHBlbmRMaXRlcmFsKCI8
YSBocmVmPVwiIik7Ci0gICAgbWFya3VwLmFwcGVuZCh1cmwuc3RyaW5nKCkpOwotICAgIG1hcmt1
cC5hcHBlbmRMaXRlcmFsKCJcIj4iKTsKKyAgICBtYXJrdXAuYXBwZW5kKCI8YSBocmVmPVwiIiwg
dXJsLnN0cmluZygpLCAiXCI+Iik7CiAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZENoYXJh
Y3RlcnNSZXBsYWNpbmdFbnRpdGllcyhtYXJrdXAsIHRpdGxlLCAwLCB0aXRsZS5sZW5ndGgoKSwg
RW50aXR5TWFza0luUENEQVRBKTsKLSAgICBtYXJrdXAuYXBwZW5kTGl0ZXJhbCgiPC9hPiIpOwor
ICAgIG1hcmt1cC5hcHBlbmQoIjwvYT4iKTsKICAgICByZXR1cm4gbWFya3VwLnRvU3RyaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggNmE0NGQ3Mjcy
NmE5ODc1ODQyNjkxNGY5Yzc3M2MxMWZkNWI3MDhiYy4uN2FlZDYxMTk2NGRiMzdmMDUwMzFkMzVl
YWVhODk5MDU1NjM2MjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
QEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkRm9ybVN0cnVjdHVy
ZShjb25zdCBIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ0J1aWxkZQogICAgIC8vIDIgaXMg
ZW5vdWdoIHRvIGRpc3Rpbmd1aXNoIGZvcm1zIGluIHdlYmtpdC5vcmcvYi85MTIwOSNjMAogICAg
IGNvbnN0IHNpemVfdCBuYW1lZENvbnRyb2xzVG9CZVJlY29yZGVkID0gMjsKICAgICBhdXRvJiBj
b250cm9scyA9IGZvcm0udW5zYWZlQXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgWyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgWyIpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBuYW1lZENvbnRyb2xzID0gMDsgaSA8IGNvbnRyb2xzLnNpemUoKSAmJiBu
YW1lZENvbnRyb2xzIDwgbmFtZWRDb250cm9sc1RvQmVSZWNvcmRlZDsgKytpKSB7CiAgICAgICAg
IGF1dG8qIGZvcm1Bc3NvY2lhdGVkRWxlbWVudCA9IGNvbnRyb2xzW2ldLT5hc0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudCgpOwogICAgICAgICBpZiAoIWZvcm1Bc3NvY2lhdGVkRWxlbWVudC0+aXNGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKSkKQEAgLTI5Niw4ICsyOTYsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgcmVjb3JkRm9ybVN0cnVjdHVyZShjb25zdCBIVE1MRm9ybUVsZW1lbnQmIGZvcm0s
IFN0cmluZ0J1aWxkZQogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgbmFtZWRDb250cm9scysrOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZChuYW1lKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQobmFtZSwgJyAnKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoJ10nKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDdh
Nzc5OTc2YWQwMzlkOWIyZGRlMDY1YTk1MDAwNjJmMzcyNDU4NDUuLjA0Zjc4ZWQ3MTAzMWZmMzMz
YzI4OTZjMTkxMDhlM2RkOTVlZmUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6cmVwb3J0VmFsaWRpdHkoKQogICAgIH0KIAogICAgIGlmIChkb2N1bWVu
dCgpLmZyYW1lKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJBbiBp
bnZhbGlkIGZvcm0gY29udHJvbCB3aXRoIG5hbWU9JyIsIG5hbWUoKSwgIicgaXMgbm90IGZvY3Vz
YWJsZS4iKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52YWxpZCBm
b3JtIGNvbnRyb2wgd2l0aCBuYW1lPSciLCBuYW1lKCksICInIGlzIG5vdCBmb2N1c2FibGUuIik7
CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA4ODVlZWVmNWMxYTEyZjZkMzM2Yjc2
NjQ2YjMyNGM0NzYyZGQ5ZGE5Li41NTVmMTU0MWMwMDhhYjZmMWFhOGZjNGNlZDc0MmVmMGVmNTBk
MWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSgpCiAg
ICAgICAgIGZvciAoYXV0byYgY29udHJvbCA6IHVuaGFuZGxlZEludmFsaWRDb250cm9scykgewog
ICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmlzQ29ubmVjdGVkKCkgJiYgY29udHJvbC0+aXNGb2N1
c2FibGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52YWxpZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPSci
LCBjb250cm9sLT5uYW1lKCksICInIGlzIG5vdCBmb2N1c2FibGUuIik7CisgICAgICAgICAgICBh
dXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJBbiBpbnZhbGlkIGZvcm0gY29udHJvbCB3aXRoIG5h
bWU9JyIsIGNvbnRyb2wtPm5hbWUoKSwgIicgaXMgbm90IGZvY3VzYWJsZS4iKTsKICAgICAgICAg
ICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQwNmEwMDhlOTE0Y2VlMDky
NDg2ZjYzODFjNWI5ZmM0YjA5NDM4NTguLmZiNGFjZDZlNWQ2ZmM1MjI2OWQ1YjAxNjQwOGZkNjMx
OGJkNGExYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
NTI2LDcgKzUyNiw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0
dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbmRpZGF0ZSA6IGltYWdl
Q2FuZGlkYXRlcykgewogICAgICAgICAgICAgaWYgKCZjYW5kaWRhdGUgIT0gJmltYWdlQ2FuZGlk
YXRlc1swXSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChVUkwoYmFzZSwgY2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKS5zdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlbnNpdHkgIT0gVW5pbml0aWFsaXplZERlc2NyaXB0
b3IpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIGNhbmRpZGF0ZS5kZW5zaXR5
LCAneCcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5k
ZXggODY3MTA0NGNjZDYxN2Q2ZWJlZWRjMjlhNGNmYWRkNzg5MDBkZmMwZC4uNmZiM2Y2Y2EzYzk3
Y2EzNjJlODY1YWY0ZTIzM2VkNmQzZWE3NGU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC03OCwxMyArNzgsMTQgQEAgc3RhdGljIGJvb2wgaXNF
bGVtZW50TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jiwg
TWVkaWFTZXMKIHN0YXRpYyBib29sIGlzRWxlbWVudE1haW5Db250ZW50Rm9yUHVycG9zZXNPZkF1
dG9wbGF5KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBib29sIHNob3VsZEhpdFRlc3RNYWluRnJh
bWUpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisKIHN0YXRpYyBTdHJpbmcgcmVzdHJp
Y3Rpb25OYW1lcyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbikKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3RyaWN0aW9uQnVpbGRlcjsKICNkZWZp
bmUgQ0FTRShyZXN0cmljdGlvblR5cGUpIFwKICAgICBpZiAocmVzdHJpY3Rpb24gJiBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpyZXN0cmljdGlvblR5cGUpIHsgXAogICAgICAgICBpZiAoIXJlc3RyaWN0
aW9uQnVpbGRlci5pc0VtcHR5KCkpIFwKLSAgICAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOyBcCisgICAgICAgICAgICByZXN0cmljdGlvbkJ1aWxkZXIuYXBw
ZW5kKCIsICIpOyBcCiAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5hcHBlbmQoI3Jlc3RyaWN0
aW9uVHlwZSk7IFwKICAgICB9IFwKIApAQCAtMTA3LDYgKzEwOCw3IEBAIHN0YXRpYyBTdHJpbmcg
cmVzdHJpY3Rpb25OYW1lcyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9u
cyByZXN0cmljCiAKICAgICByZXR1cm4gcmVzdHJpY3Rpb25CdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CisKICNlbmRpZgogCiBzdGF0aWMgYm9vbCBwYWdlRXhwbGljaXRseUFsbG93c0VsZW1lbnRUb0F1
dG9wbGF5SW5saW5lKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCmluZGV4IDUxNTU0ODhkN2VkMWRhOTUwZDVhZjY3OGQ0NmQyMzQwYjhiYTljZWUuLjMyZGM2
ZTU1MGI2OTczMjA0MGNkOTFiZWMxMDNkZTM1NzZlYTk3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBA
IC0zNjk3LDcgKzM2OTcsNyBAQCBSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTAogICAgICAgICAgICAg
aW5mby5uYW1lID0gaW5mby5uYW1lLmxlZnQoaW5mby5uYW1lLmxlbmd0aCgpIC0gMyk7CiAgICAg
ICAgIC8vIElmIGl0J3MgYW4gYXJyYXksIHdlIG5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIGVhY2gg
ZWxlbWVudCwgYXBwZW5kaW5nICJbaW5kZXhdIiB0byB0aGUgbmFtZS4KICAgICAgICAgZm9yIChH
Q0dMaW50IGluZGV4ID0gMDsgaW5kZXggPCBpbmZvLnNpemU7ICsraW5kZXgpIHsKLSAgICAgICAg
ICAgIFN0cmluZyB1bmlmb3JtTmFtZSA9IG1ha2VTdHJpbmcoaW5mby5uYW1lLCAnWycsIGluZGV4
LCAnXScpOworICAgICAgICAgICAgYXV0byB1bmlmb3JtTmFtZSA9IG1ha2VTdHJpbmcoaW5mby5u
YW1lLCAnWycsIGluZGV4LCAnXScpOwogCiAgICAgICAgICAgICBpZiAobmFtZSA9PSB1bmlmb3Jt
TmFtZSB8fCBuYW1lID09IGluZm8ubmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xV
bmlmb3JtTG9jYXRpb246OmNyZWF0ZSgmcHJvZ3JhbSwgdW5pZm9ybUxvY2F0aW9uLCBpbmZvLnR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
aW5kZXggOTJmMjc2ZjM4Yjc0NGQ1MWVjNTFjOGZjZjlhYjQ2ZmU3MmQyZWQ0Yi4uYjQ1ODVjMTQ1
ZDUyZTIwYmE4MzIxMTBlOTNlMTQ3MGNjYWNiYzVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIHRha2VSZW1haW5pbmcoKQogICAgIHsKLSAgICAgICAgU3RyaW5nIHJl
c3VsdCA9IG1ha2VTdHJpbmcobV90ZXh0KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlU3Ry
aW5nKG1fdGV4dCk7CiAgICAgICAgIG1fdGV4dCA9IFN0cmluZ1ZpZXcoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCA4MGI0MjEzNjY5YmEzMWU4MWEwMjc1NTFiY2M3OGFi
MWEzMWNjMTA4Li5jMmUzMDdmYTBhM2IxNDE4NmIxMmExMDQwMmZlNmNmYWY5MTUwNWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAK
QEAgLTM3LDExICszNywxMCBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNp
bmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogWFNTQXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQpAQCAtNTIsMjEgKzUxLDEzIEBAIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRv
ckRlbGVnYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIAogc3RhdGljIGlubGluZSBTdHJpbmcgYnVp
bGRDb25zb2xlRXJyb3IoY29uc3QgWFNTSW5mbyYgeHNzSW5mbykKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJUaGUgWFNTIEF1ZGl0b3Ig
Iik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSA/ICJi
bG9ja2VkIGFjY2VzcyB0byIgOiAicmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IGluIik7Ci0g
ICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIgJyIpOwotICAgIG1lc3NhZ2UuYXBwZW5kKHhzc0lu
Zm8ubV9vcmlnaW5hbFVSTCk7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCInIGJlY2F1c2Ug
Iik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSA/ICJ0
aGUgc291cmNlIGNvZGUgb2YgYSBzY3JpcHQiIDogIml0cyBzb3VyY2UgY29kZSIpOwotICAgIG1l
c3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIHdhcyBmb3VuZCB3aXRoaW4gdGhlIHJlcXVlc3QuIik7Ci0K
LSAgICBpZiAoeHNzSW5mby5tX2RpZFNlbmRYU1NQcm90ZWN0aW9uSGVhZGVyKQotICAgICAgICBt
ZXNzYWdlLmFwcGVuZExpdGVyYWwoIiBUaGUgc2VydmVyIHNlbnQgYW4gJ1gtWFNTLVByb3RlY3Rp
b24nIGhlYWRlciByZXF1ZXN0aW5nIHRoaXMgYmVoYXZpb3IuIik7Ci0gICAgZWxzZQotICAgICAg
ICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIiBUaGUgYXVkaXRvciB3YXMgZW5hYmxlZCBiZWNhdXNl
IHRoZSBzZXJ2ZXIgZGlkIG5vdCBzZW5kIGFuICdYLVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIuIik7
Ci0KLSAgICByZXR1cm4gbWVzc2FnZS50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCJUaGUgWFNTIEF1ZGl0b3IgIiwKKyAgICAgICAgeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFn
ZSA/ICJibG9ja2VkIGFjY2VzcyB0byIgOiAicmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IGlu
IiwgIiAnIiwKKyAgICAgICAgeHNzSW5mby5tX29yaWdpbmFsVVJMLCAiJyBiZWNhdXNlICIsCisg
ICAgICAgIHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UgPyAidGhlIHNvdXJjZSBjb2RlIG9m
IGEgc2NyaXB0IiA6ICJpdHMgc291cmNlIGNvZGUiLAorICAgICAgICAiIHdhcyBmb3VuZCB3aXRo
aW4gdGhlIHJlcXVlc3QuIiwKKyAgICAgICAgeHNzSW5mby5tX2RpZFNlbmRYU1NQcm90ZWN0aW9u
SGVhZGVyID8gIiBUaGUgc2VydmVyIHNlbnQgYW4gJ1gtWFNTLVByb3RlY3Rpb24nIGhlYWRlciBy
ZXF1ZXN0aW5nIHRoaXMgYmVoYXZpb3IuIgorICAgICAgICAgICAgOiAiIFRoZSBhdWRpdG9yIHdh
cyBlbmFibGVkIGJlY2F1c2UgdGhlIHNlcnZlciBkaWQgbm90IHNlbmQgYW4gJ1gtWFNTLVByb3Rl
Y3Rpb24nIGhlYWRlci4iKTsKIH0KIAogUmVmPEZvcm1EYXRhPiBYU1NBdWRpdG9yRGVsZWdhdGU6
OmdlbmVyYXRlVmlvbGF0aW9uUmVwb3J0KGNvbnN0IFhTU0luZm8mIHhzc0luZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggM2VlZmRiYjkxNmIwNzg4
NGExYWRkMDI0MzFiNTYwMzU4MTczNWFiMy4uZDRiNmJlYjNlYTVjMzg2NTQxMWYzZDM3MjMxZTIx
ODc1ZWNmZGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cApAQCAtNTA5LDIyICs1MDksMTMgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5
VHJlZSgpCiAgICAgbV9jdWVOb2RlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQpOwog
ICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKGNsb25lZEZyYWdtZW50KTsKIAotICAgIGlm
IChtX2ZvbnRTaXplICYmIG93bmVyRG9jdW1lbnQoKS5wYWdlKCkpIHsKLSAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChvd25lckRvY3VtZW50KCku
cGFnZSgpLT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgOjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVGV4dFRy
YWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3sn
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3Bl
cnR5Rm9udFNpemUpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhtX2ZvbnRTaXplLCAicHgiKSk7Ci0gICAgICAgIGlmICht
X2ZvbnRTaXplSXNJbXBvcnRhbnQpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAhaW1wb3J0YW50Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOyB9Iik7Ci0K
LSAgICAgICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6
OnN0eWxlVGFnLCBvd25lckRvY3VtZW50KCksIGZhbHNlKTsKLSAgICAgICAgc3R5bGUtPnNldFRl
eHRDb250ZW50KGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgICAgIG1fZGlzcGxheVRyZWUtPmFw
cGVuZENoaWxkKHN0eWxlKTsKKyAgICBpZiAobV9mb250U2l6ZSkgeworICAgICAgICBpZiAoYXV0
byBwYWdlID0gb3duZXJEb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICAgICAgYXV0byBzdHls
ZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBvd25lckRv
Y3VtZW50KCksIGZhbHNlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChtYWtl
U3RyaW5nKHBhZ2UtPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KCksCisgICAgICAg
ICAgICAgICAgIiA6OiIsIFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSwgIntmb250
LXNpemU6IiwgbV9mb250U2l6ZSwgbV9mb250U2l6ZUlzSW1wb3J0YW50ID8gInB4ICFpbXBvcnRh
bnR9IiA6ICJweH0iKSk7CisgICAgICAgICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChz
dHlsZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHJhY2soKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmNwcAppbmRleCBiYjk4M2M1MjliNTllNmQ0MjE3NDNhNGYxNTRmYjU0OTYzZjg0MzMw
Li42MjhjZGVjY2FiMWRiOTU2YTMyNjUyNTVhNjlhNzMyMDk1ZDIyMDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmNwcApAQCAtMTE0LDE3ICsxMTQsMTIgQEAgSlNET01HbG9iYWxPYmplY3QqIEluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZnJvbnRlbmRHbG9iYWxPYmplY3QoKQogc3RhdGlj
IFN0cmluZyBleHByZXNzaW9uRm9yRXZhbHVhdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kLCBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4mJiBhcmd1bWVudHMpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBleHByZXNzaW9uOwotICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIik7Ci0gICAgZXhwcmVzc2lvbi5hcHBlbmQoY29t
bWFuZCk7Ci0gICAgZXhwcmVzc2lvbi5hcHBlbmQoJyInKTsKLQorICAgIGV4cHJlc3Npb24uYXBw
ZW5kKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAnIicpOwog
ICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBhcmd1bWVudHMpIHsKLSAgICAgICAgZXhwcmVzc2lv
bi5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBleHByZXNzaW9uLmFwcGVuZCgiLCAiKTsK
ICAgICAgICAgYXJndW1lbnQtPndyaXRlSlNPTihleHByZXNzaW9uKTsKICAgICB9Ci0KLSAgICBl
eHByZXNzaW9uLmFwcGVuZCgnXScpOwotICAgIGV4cHJlc3Npb24uYXBwZW5kKCcpJyk7CisgICAg
ZXhwcmVzc2lvbi5hcHBlbmQoIl0pIik7CiAgICAgcmV0dXJuIGV4cHJlc3Npb24udG9TdHJpbmco
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CmluZGV4IDYxMTM0OGJmNzc4Zjk1MjA1MGZhZmMxMTVhNzFkYzkwZjAxOGViYzMuLmExNjkzMTYy
YmNmN2FmYmVmMjczN2U1ZGVjNGE4YWJiYWJlYzQyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTEwNDcsOCArMTA0Nyw4IEBAIFBhdGgg
SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE5vZGUmIG5vZGUsIGNvCiAgICAgYm9vbCBoYXNTZWNvbmRMaW5lID0gIWVsZW1lbnRSb2xl
LmlzRW1wdHkoKTsKIAogICAgIHsKLSAgICAgICAgU3RyaW5nIGZpcnN0TGluZSA9IG1ha2VTdHJp
bmcoZWxlbWVudFRhZ05hbWUsIGVsZW1lbnRJRFZhbHVlLCBlbGVtZW50Q2xhc3NWYWx1ZSwgZWxl
bWVudFBzZXVkb1R5cGUsICcgJywgZWxlbWVudFdpZHRoLCAicHgiLCAnICcsIG11bHRpcGxpY2F0
aW9uU2lnbiwgJyAnLCBlbGVtZW50SGVpZ2h0LCAicHgiKTsKLSAgICAgICAgU3RyaW5nIHNlY29u
ZExpbmUgPSBtYWtlU3RyaW5nKCJSb2xlICIsIGVsZW1lbnRSb2xlKTsKKyAgICAgICAgYXV0byBm
aXJzdExpbmUgPSBtYWtlU3RyaW5nKGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SURWYWx1ZSwgZWxl
bWVudENsYXNzVmFsdWUsIGVsZW1lbnRQc2V1ZG9UeXBlLCAnICcsIGVsZW1lbnRXaWR0aCwgInB4
IiwgJyAnLCBtdWx0aXBsaWNhdGlvblNpZ24sICcgJywgZWxlbWVudEhlaWdodCwgInB4Iik7Cisg
ICAgICAgIGF1dG8gc2Vjb25kTGluZSA9IG1ha2VTdHJpbmcoIlJvbGUgIiwgZWxlbWVudFJvbGUp
OwogCiAgICAgICAgIGZsb2F0IGZpcnN0TGluZVdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGZp
cnN0TGluZSkpOwogICAgICAgICBmbG9hdCBzZWNvbmRMaW5lV2lkdGggPSBmb250LndpZHRoKFRl
eHRSdW4oc2Vjb25kTGluZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDdhN2MyZDdiZTk0NjM3MzUwNTBkMzc5NzUzOGJlZGI2
NGNiYmZmYzQuLjhjNzIxNTdiOGM5YzJhNTI1NDJkNDU4NjNiZTZjODM2ZTNhZWUzYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTk0NSw4ICs5NDUsNyBAQCBFeGNlcHRpb25PcjxDU1NTdHlsZVJ1bGUqPiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiAgICAgaWYgKCFzdHlsZVNo
ZWV0VGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHN0eWxlU2hlZXRUZXh0LmFwcGVuZCgnXG4nKTsK
IAotICAgIHN0eWxlU2hlZXRUZXh0LmFwcGVuZChzZWxlY3Rvcik7Ci0gICAgc3R5bGVTaGVldFRl
eHQuYXBwZW5kTGl0ZXJhbCgiIHt9Iik7CisgICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKHNlbGVj
dG9yLCAiIHt9Iik7CiAKICAgICAvLyBVc2luZyBzZXRUZXh0KCkgYXMgdGhpcyBvcGVyYXRpb24g
Y2hhbmdlcyB0aGUgc3R5bGVzaGVldCBydWxlIHNldC4KICAgICBzZXRUZXh0KHN0eWxlU2hlZXRU
ZXh0LnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4
IGFmNjczNzhhNmRkY2QxYWU3NzI0NGU4OTk1MzY3NzNhNzAyN2IwM2MuLmE0NDdmNzA1MzllMDZl
NGM4MzA0Mjc2ZmNiNGNlMWE1ODUxNmVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTkyLDI3ICsxOTEsMTUgQEAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IEluc3BlY3QKIAogUmVmPFByb3Rv
Y29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJ
bmZvKQogewotICAgIFN0cmluZ0J1aWxkZXIgdHlwZXM7Ci0KLSAgICBpZiAocmVzb3VyY2VJbmZv
LmlzTWFzdGVyKQotICAgICAgICB0eXBlcy5hcHBlbmRMaXRlcmFsKCJNYXN0ZXIgIik7Ci0KLSAg
ICBpZiAocmVzb3VyY2VJbmZvLmlzTWFuaWZlc3QpCi0gICAgICAgIHR5cGVzLmFwcGVuZExpdGVy
YWwoIk1hbmlmZXN0ICIpOwotCi0gICAgaWYgKHJlc291cmNlSW5mby5pc0ZhbGxiYWNrKQotICAg
ICAgICB0eXBlcy5hcHBlbmRMaXRlcmFsKCJGYWxsYmFjayAiKTsKLQotICAgIGlmIChyZXNvdXJj
ZUluZm8uaXNGb3JlaWduKQotICAgICAgICB0eXBlcy5hcHBlbmRMaXRlcmFsKCJGb3JlaWduICIp
OwotCi0gICAgaWYgKHJlc291cmNlSW5mby5pc0V4cGxpY2l0KQotICAgICAgICB0eXBlcy5hcHBl
bmRMaXRlcmFsKCJFeHBsaWNpdCAiKTsKLQorICAgIGF1dG8gdHlwZXMgPSBtYWtlU3RyaW5nKHJl
c291cmNlSW5mby5pc01hc3RlciA/ICJNYXN0ZXIgIiA6ICIiLAorICAgICAgICByZXNvdXJjZUlu
Zm8uaXNNYW5pZmVzdCA/ICJNYW5pZmVzdCAiIDogIiIsCisgICAgICAgIHJlc291cmNlSW5mby5p
c0ZhbGxiYWNrID8gIkZhbGxiYWNrICIgOiAiIiwKKyAgICAgICAgcmVzb3VyY2VJbmZvLmlzRm9y
ZWlnbiA/ICJGb3JlaWduICIgOiAiIiwKKyAgICAgICAgcmVzb3VyY2VJbmZvLmlzRXhwbGljaXQg
PyAiRXhwbGljaXQgIiA6ICIiKTsKICAgICByZXR1cm4gUHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChy
ZXNvdXJjZUluZm8ucmVzb3VyY2Uuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRTaXplKHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VJbmZvLnNpemUpKQotICAgICAgICAuc2V0VHlwZSh0eXBlcy50b1N0
cmluZygpKQorICAgICAgICAuc2V0VHlwZSh0eXBlcykKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDkyYzNlZWRhM2RmNjYyYmM5YjgxNTVjNTRkZDIyMzI5NWQ0YzgzNDYuLjQ4
YjlhNzE4NTNmNDQ5NGZiZjQ3ZTM4MzhhODYzNjQ3OWU2N2RlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdp
bmRvdyogd2luZG93KQogdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsK
LSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNv
dXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpLCAiICgiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9y
Q29uc29sZU1lc3NhZ2UocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSksICcpJyk7CisgICAgICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUg
c2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCksICIgKCIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVz
c2FnZShyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSwgJyknKTsKICAgICAgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3
b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsK
ICAgICB9CiB9CkBAIC03OSwxNCArNzksOCBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFp
bExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzbwogICAg
IGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJGYWlsZWQgdG8g
bG9hZCByZXNvdXJjZSIpOwotICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAg
ICBtZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKLSAgICB9Ci0K
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAwLCAwLCBu
dWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS5pc0VtcHR5KCkgPyAiIiA6ICI6ICIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwor
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwg
bWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1
ZXN0SWRlbnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggZmRhOTI4NmFmZjBi
ZDliYTE1MDNiYWE1M2UzN2Y1Y2JiMDg5Yzg0OS4uNWIxNzdjNzgxMTcwYzM0NzNlZWYzYWI0NDFl
ZWFkZWJiOTkyMzFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6Omlz
TWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVQogc3Rh
dGljIHZvaWQgbG9nV2FybmluZyhjb25zdCBGcmFtZSYgZnJhbWUsIGJvb2wgYWxsb3dlZCwgY29u
c3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KQogewogICAgIGNvbnN0IGNoYXIq
IGVycm9yU3RyaW5nID0gYWxsb3dlZCA/ICIgd2FzIGFsbG93ZWQgdG8gIiA6ICIgd2FzIG5vdCBh
bGxvd2VkIHRvICI7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8g
U3RyaW5nKCkgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3RyaW5nLCBh
Y3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmco
KGFsbG93ZWQgPyBTdHJpbmcoKSA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBmcmFt
ZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgZXJy
b3JTdHJpbmcsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgZnJhbWUuZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgbWVzc2FnZSk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIE1peGVk
Q29udGVudENoZWNrZXI6OmNoZWNrRm9ybUZvck1peGVkQ29udGVudChGcmFtZSYgZnJhbWUsIFNl
Y3VyaXR5T3JpZ2luJgogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVy
bCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCksICIgY29udGFpbnMgYSBmb3JtIHdoaWNoIHRhcmdldHMgYW4gaW5zZWN1
cmUgVVJMICIsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwor
ICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGNvbnRhaW5z
IGEgZm9ybSB3aGljaCB0YXJnZXRzIGFuIGluc2VjdXJlIFVSTCAiLCB1cmwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKICAgICBmcmFtZS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBtZXNzYWdlKTsKIAogICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IDAzM2E5ZDQ2NWE3NTRkZjllMzlmNmY2NzAyYmZjZjhh
YjMyZDkwZmQuLjUzZWY0YzAxNzEwNzA2ZDJhYjQ4YTNjOWUyMTU1NmEyNGRiMGJiYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAgLTEyOSwx
OCArMTI4LDE1IEBAIGJvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omhhc0hpZ2hlclByaW9y
aXR5VGhhbihjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVuCiAgICAgcmV0dXJuIG1fYXR0cmli
dXRpb25UcmlnZ2VyRGF0YS0+cHJpb3JpdHkgPiBvdGhlci5tX2F0dHJpYnV0aW9uVHJpZ2dlckRh
dGEtPnByaW9yaXR5OwogfQogCi1zdGF0aWMgVVJMIGF0dHJpYnV0aW9uUmVwb3J0VVJMKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3N0YXRpYyBVUkwgbWFrZVZh
bGlkVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IGNoYXIqIHBhdGgp
CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChyZWdpc3RyYWJsZURvbWFpbi5zdHJp
bmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKHByaXZhdGVDbGlja01lYXN1cmVtZW50
UmVwb3J0QXR0cmlidXRpb25QYXRoKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwgYnVpbGRlci50
b1N0cmluZygpIH07Ci0gICAgaWYgKHVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB1cmw7
CisgICAgVVJMIHZhbGlkVVJMIHsgeyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIsIGRvbWFpbi5z
dHJpbmcoKSwgcGF0aCkgfTsKKyAgICByZXR1cm4gdmFsaWRVUkwuaXNWYWxpZCgpID8gdmFsaWRV
UkwgOiBVUkwgeyB9OworfQogCi0gICAgcmV0dXJuIFVSTCgpOworc3RhdGljIFVSTCBhdHRyaWJ1
dGlvblJlcG9ydFVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIHJl
dHVybiBtYWtlVmFsaWRVUkwoZG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0
dHJpYnV0aW9uUGF0aCk7CiB9CiAKIFVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6YXR0cmli
dXRpb25SZXBvcnRTb3VyY2VVUkwoKSBjb25zdApAQCAtMjA3LDMwICsyMDMsMTIgQEAgVVJMIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0CiAgICAgaWYg
KCFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlIHx8ICFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlLT5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImh0dHBzOi8vIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKLSAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBh
dGgpOwotCi0gICAgVVJMIHVybCB7IFVSTCgpLCBidWlsZGVyLnRvU3RyaW5nKCkgfTsKLSAgICBp
ZiAodXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHVybDsKLQotICAgIHJldHVybiBVUkwo
KTsKKyAgICByZXR1cm4gbWFrZVZhbGlkVVJMKG1fc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFp
biwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBhdGgpOwogfQogCiBVUkwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKCkgY29uc3QKIHsKLSAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJodHRw
czovLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKHByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9rZW5QdWJsaWNLZXlQYXRoKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwgYnVpbGRl
ci50b1N0cmluZygpIH07Ci0gICAgaWYgKHVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB1
cmw7Ci0KLSAgICByZXR1cm4gVVJMKCk7CisgICAgcmV0dXJuIG1ha2VWYWxpZFVSTChtX3NvdXJj
ZVNpdGUucmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5QdWJs
aWNLZXlQYXRoKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OnRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggODdiN2UzZDA0ZjIyODc0NWZiNzA4
YjFhMTZhZDczM2JhMDJlOWFiMC4uNGYyMjg4MzM2M2EwY2UzNWFmNTJhNGI1YjdmZTFmMDFmMzVl
Mzc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLmNwcApAQCAtMzUxLDEwICszNTEsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbgogCiBz
dGF0aWMgdm9pZCBhcHBlbmRCb29sZWFuKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgZmxhZykKIHsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAg
ICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChsYWJlbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGZsYWcgPyAiWWVzIiA6ICJObyIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCIgICAgIiwgbGFiZWwsICI6ICIsIGZsYWcgPyAiWWVzIiA6ICJObyIp
OwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRIYXNoU2V0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBo
YXNoU2V0KQpAQCAtMzYyLDE1ICszNTksOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRIYXNoU2V0KFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IEhhcwogICAg
IGlmIChoYXNoU2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiICAgICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGxhYmVsKTsKLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpcbiIpOwotICAgIAotICAgIGZvciAoYXV0byYgZW50
cnkgOiBoYXNoU2V0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICAgICAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZW50cnkuc3RyaW5nKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCBsYWJl
bCwgIjpcbiIpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBoYXNoU2V0KQorICAgICAgICBidWls
ZGVyLmFwcGVuZCgiICAgICAgICAiLCBlbnRyeS5zdHJpbmcoKSwgJ1xuJyk7CiB9CiAKICNpZiBF
TkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQpAQCAtMzc5LDE1ICszNzAsOSBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRIYXNoU2V0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IEhhcwogICAgIGlmIChoYXNoU2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKGxhYmVsKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpcbiIpOwotICAgIAot
ICAgIGZvciAoYXV0byYgZW50cnkgOiBoYXNoU2V0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiICAgICAgICAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZW50cnkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICAiLCBsYWJlbCwgIjpcbiIpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBoYXNoU2V0KQorICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiICAgICAgICAiLCBlbnRyeSwgJ1xuJyk7CiB9CiAKIHN0YXRp
YyBBU0NJSUxpdGVyYWwgbmF2aWdhdG9yQVBJRW51bVRvU3RyaW5nKFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Ok5hdmlnYXRvckFQSSBuYXZpZ2F0b3JFbnVtKQpAQCAtNDM4LDIzICs0MjMsMTggQEAg
c3RhdGljIHZvaWQgYXBwZW5kTmF2aWdhdG9yQVBJT3B0aW9uU2V0KFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IE9wdGlvblNldDwKIHsKICAgICBpZiAob3B0aW9uU2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG5hdmlnYXRv
ckZ1bmN0aW9uc0FjY2Vzc2VkOlxuIik7Ci0gICAgZm9yIChhdXRvIG5hdmlnYXRvckFQSSA6IG9w
dGlvblNldCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICAgIik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hdmlnYXRvckFQSUVudW1Ub1N0cmluZyhuYXZpZ2F0b3JB
UEkpLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIH0K
KyAgICBidWlsZGVyLmFwcGVuZCgiICAgIG5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkOlxuIik7
CisgICAgZm9yIChhdXRvIG5hdmlnYXRvckFQSSA6IG9wdGlvblNldCkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAgICAgICAgIiwgbmF2aWdhdG9yQVBJRW51bVRvU3RyaW5nKG5hdmlnYXRvckFQ
SSksICdcbicpOwogfQogICAgIAogc3RhdGljIHZvaWQgYXBwZW5kU2NyZWVuQVBJT3B0aW9uU2V0
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IE9wdGlvblNldDxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpTY3JlZW5BUEk+JiBvcHRpb25TZXQpCiB7CiAgICAgaWYgKG9wdGlvblNldC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBz
Y3JlZW5GdW5jdGlvbnNBY2Nlc3NlZDpcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgc2Ny
ZWVuRnVuY3Rpb25zQWNjZXNzZWQ6XG4iKTsKICAgICBmb3IgKGF1dG8gc2NyZWVuQVBJIDogb3B0
aW9uU2V0KSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICAgICAiKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoc2NyZWVuQVBJRW51bVRvU3RyaW5nKHNjcmVlbkFQSSkuY2hh
cmFjdGVycygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgICAgICAgICIsIHNjcmVlbkFQSUVudW1Ub1N0cmluZyhzY3JlZW5BUEkpLCAn
XG4nKTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTQ2NywxOCArNDQ3LDEyIEBAIHN0YXRpYyBib29s
IGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXVEY6OlNlY29uZHMgaW50ZXJhY3Rpb25UaW1l
U2Vjb25kcykKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiUmVnaXN0cmFibGUgZG9tYWluOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChyZWdpc3RyYWJs
ZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRl
ci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIiwgcmVnaXN0cmFibGVEb21haW4uc3RyaW5n
KCksICdcbicpOwogCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGFwcGVuZEJvb2xlYW4o
YnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CiAgICAg
YnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7Ci0gICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRl
cmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgp
KSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTEiKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIsIGhhc0hhZFJlY2VudFVz
ZXJJbnRlcmFjdGlvbihtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpKSA/ICJ3aXRoaW4gMjQgaG91cnMiIDogIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIGdyYW5k
ZmF0aGVyZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGExOTBkNjkwYzZmZTY4
YzE5OWYzZDVhMTFlMDUxNTM3YzMzNTFhNjIuLjE1ODE1ZDM1NDRkZWE2ZTJmMTgzMWYxOTYzMWZm
ZDRiM2IzN2FhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3AK
ICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKTsKIAogICAgIC8vIENyZWF0ZSBhIHVu
aXF1ZSBtb2RlIGp1c3QgZm9yIHRoaXMgc3luY2hyb25vdXMgcmVzb3VyY2UgbG9hZC4KLSAgICBT
dHJpbmcgbW9kZSA9IG1ha2VTdHJpbmcoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlIiwg
cnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKTsKKyAgICBhdXRvIG1vZGUgPSBtYWtlU3RyaW5nKCJs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZSIsIHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7
CiAKICAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBN
ZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5k
ZXggZDE0NTViNTRkYTBkOWJmMzI1OWEwODc5MmQwOGI5YTdiODNhMDg4Ni4uZjgyMmE3Y2JiNmQy
MmVmNWNjMDIzNTIyYzBkYTQ1YTk5OTkwNjUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtOTI0LDcgKzkyNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjCiAgICAgICAgICAg
ICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3VtZW50IG1h
eSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHRpbWVyIHdhcyBzY2hlZHVsZWQuCiAgICAgICAgICAg
ICBpZiAoIXRhcmdldE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogcGFnZUNvbnNvbGUg
PSBjb25zb2xlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvICIsIHRhcmdldE9yaWdpbi0+dG9TdHJp
bmcoKSwgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS50b1N0cmluZygpLCAiLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gIiwgdGFyZ2V0T3JpZ2lu
LT50b1N0cmluZygpLCAiLiBSZWNpcGllbnQgaGFzIG9yaWdpbiAiLCBkb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCksICIuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHN0YWNrVHJhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29uc29sZS0+YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2Fn
ZSwgKnN0YWNrVHJhY2UpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IDNjYTg2N2E2MmZiOWM0MWFjNjEwZTY2YzM3ODY1MmM5NjIwNmZmOWQuLjI0ZWFl
YjNmMjVjODQzOGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC0zNzcsMjggKzM3NywxOSBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAo
IlxcdyIpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVybjsKICAgICBwYXR0ZXJuLmFwcGVuZCgn
KCcpOwotICAgIHVuc2lnbmVkIGludCBudW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgpOwotICAgIHVu
c2lnbmVkIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBudW1MYWJlbHM7IGkrKykgewotICAg
ICAgICBTdHJpbmcgbGFiZWwgPSBsYWJlbHNbaV07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwg
bnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsgaSA8IG51bUxhYmVsczsgaSsrKSB7CisgICAgICAg
IGF1dG8mIGxhYmVsID0gbGFiZWxzW2ldOwogCi0gICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRD
aGFyID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgZW5kc1dpdGhXb3JkQ2hhciA9IGZhbHNlOworICAg
ICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgIGJvb2wg
ZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgo
KSkgewotICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5nZXQoKS5t
YXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Ci0gICAgICAgICAgICBlbmRzV2l0aFdv
cmRDaGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVu
Z3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVy
ID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Cisg
ICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNo
KGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCgnfCcpOwogICAg
ICAgICAvLyBTZWFyY2ggZm9yIHdvcmQgYm91bmRhcmllcyBvbmx5IGlmIGxhYmVsIHN0YXJ0cy9l
bmRzIHdpdGggIndvcmQgY2hhcmFjdGVycyIuCi0gICAgICAgIC8vIElmIHdlIGFsd2F5cyBzZWFy
Y2hlZCBmb3Igd29yZCBib3VuZGFyaWVzLCB0aGlzIHdvdWxkbid0IHdvcmsgZm9yIGxhbmd1YWdl
cwotICAgICAgICAvLyBzdWNoIGFzIEphcGFuZXNlLgotICAgICAgICBpZiAoc3RhcnRzV2l0aFdv
cmRDaGFyKQotICAgICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKLSAgICAg
ICAgcGF0dGVybi5hcHBlbmQobGFiZWwpOwotICAgICAgICBpZiAoZW5kc1dpdGhXb3JkQ2hhcikK
LSAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CisgICAgICAgIC8vIElm
IHdlIGFsd2F5cyBzZWFyY2hlZCBmb3Igd29yZCBib3VuZGFyaWVzLCB0aGlzIHdvdWxkbid0IHdv
cmsgZm9yIGxhbmd1YWdlcyBzdWNoIGFzIEphcGFuZXNlLgorICAgICAgICBwYXR0ZXJuLmFwcGVu
ZChpID8gInwiIDogIiIsIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID8gIlxcYiIgOiAiIiwgbGFi
ZWwsIGVuZHNXaXRoV29yZENoYXJhY3RlciA/ICJcXGIiIDogIiIpOwogICAgIH0KICAgICBwYXR0
ZXJuLmFwcGVuZCgnKScpOwogICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
KHBhdHRlcm4udG9TdHJpbmcoKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA2NTgzYzM2OWZkYTFjMDZkOTQzNzVjY2RjMjNm
YzhiNzIyMzBiZjVhLi4zZmYzYzY5OWZlZjNmNDZjZTRmYzdlOTU2ZTMzYWQzNjBhZmE3M2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNDUxLDE0ICsxNDUxLDExIEBAIGJvb2wg
RnJhbWVWaWV3Ojp1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkgY29uc3QKIAogdm9pZCBGcmFtZVZp
ZXc6OmxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBj
b25zdAogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAg
ICBhdXRvIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgaWYgKGZy
YW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJNYWlu
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoIkZyYW1lVmlldzogIiwgbWVzc2FnZSk7Ci0gICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2
ZWw6OkRlYnVnLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1ZywKKyAgICAg
ICAgbWFrZVN0cmluZyhmcmFtZSgpLmlzTWFpbkZyYW1lKCkgPyAiTWFpbiIgOiAiIiwgIkZyYW1l
VmlldzogIiwgbWVzc2FnZSkpOwogfQogCiBTdHJpbmcgRnJhbWVWaWV3OjpkZWJ1Z0Rlc2NyaXB0
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggM2Y2
ZWQ4NGQwNmQ0NWMzYzcwMDc4ZDc3NzgwNzY1NmRkNDU4ZGFhOS4uOTFlODgyNDBmY2Q2OTdhZWM4
NGE0YTVhZDE1NGUzMzQ4ODBiZTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTEzMCwxMSArMTMwLDggQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6U2VyaWFsaXpl
ck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyhTdHJpbmdCdWlsZGVyJgogICAgIGlm
ICghc2hvdWxkSWdub3JlRWxlbWVudChlbGVtZW50KSkKICAgICAgICAgTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZFN0YXJ0VGFnKG91dCwgZWxlbWVudCwgbmFtZXNwYWNlcyk7CiAKLSAgICBpZiAo
ZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpIHsKLSAgICAgICAgb3V0LmFw
cGVuZExpdGVyYWwoIjxtZXRhIGNoYXJzZXQ9XCIiKTsKLSAgICAgICAgb3V0LmFwcGVuZChtX2Rv
Y3VtZW50LmNoYXJzZXQoKSk7Ci0gICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCJcIj4iKTsKLSAg
ICB9CisgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRUYWcpKQorICAg
ICAgICBvdXQuYXBwZW5kKCI8bWV0YSBjaGFyc2V0PVwiIiwgbV9kb2N1bWVudC5jaGFyc2V0KCks
ICJcIj4iKTsKIAogICAgIC8vIEZJWE1FOiBGb3Igb2JqZWN0IChwbHVnaW5zKSB0YWdzIGFuZCB2
aWRlbyB0YWcgd2UgY291bGQgcmVwbGFjZSB0aGVtIGJ5IGFuIGltYWdlIG9mIHRoZWlyIGN1cnJl
bnQgY29udGVudHMuCiB9CkBAIC0yNDIsNyArMjM5LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBV
UkwKICAgICAgICAgaWYgKCFpdGVtVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNzc1Rl
eHQuYXBwZW5kKGl0ZW1UZXh0KTsKICAgICAgICAgICAgIGlmIChpIDwgc3R5bGVTaGVldC0+bGVu
Z3RoKCkgLSAxKQotICAgICAgICAgICAgICAgIGNzc1RleHQuYXBwZW5kTGl0ZXJhbCgiXG5cbiIp
OworICAgICAgICAgICAgICAgIGNzc1RleHQuYXBwZW5kKCJcblxuIik7CiAgICAgICAgIH0KICAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwog
ICAgICAgICAvLyBTb21lIHJ1bGVzIGhhdmUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGVt
IHRoYXQgd2UgbmVlZCB0byByZXRyaWV2ZS4KQEAgLTMxOCwxMSArMzE1LDEwIEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVBy
b3BlcnRpZXMqIHN0eWxlCiAKIFVSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9yQmxhbmtGcmFtZShG
cmFtZSogZnJhbWUpCiB7Ci0gICAgYXV0byBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZy
YW1lKTsKLSAgICBpZiAoaXRlciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gaXRlci0+dmFsdWU7Ci0gICAgU3RyaW5nIHVybCA9IG1ha2VTdHJpbmcoInd5Y2l3eWc6
Ly9mcmFtZS8iLCBtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIFVSTCBmYWtlVVJMKHsgfSwg
dXJsKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsK
KyAgICBpZiAoaXRlcmF0b3IgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBVUkwgZmFrZVVSTCB7IHsgfSwgbWFrZVN0cmluZygi
d3ljaXd5ZzovL2ZyYW1lLyIsIG1fYmxhbmtGcmFtZUNvdW50ZXIrKykgfTsKICAgICBtX2JsYW5r
RnJhbWVVUkxzLmFkZChmcmFtZSwgZmFrZVVSTCk7CiAgICAgcmV0dXJuIGZha2VVUkw7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAKaW5k
ZXggZjlkOTExOTg1YTIwNjRkZmRjNDgwMmNmMTJmODFmMGRhZmY4ZWQ4ZC4uNGE1MGNmODIyMmY0
ZTQ1MjhhMGVjMDQxMjVhY2Y2ODY2MTYyOTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcApAQCAtMjYsMzAgKzI2LDIxIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgiCiAK
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU3RyaW5nIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zQXNTdHJpbmcoT3B0aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiBz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpCitTdHJpbmcgUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50OjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1N0cmluZyhPcHRpb25TZXQ8U3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb24+IHJlYXNvbnMpCiB7Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucy5pc0VtcHR5KCkpCisgICAgaWYgKHJlYXNvbnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgcmVhc29uczsK
LQotICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICByZWFzb25zLmFwcGVuZExp
dGVyYWwoImZvcmNlZCwiKTsKLSAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYg
U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAg
ICAgcmVhc29ucy5hcHBlbmRMaXRlcmFsKCJzbG93LXJlcGFpbnQgb2JqZWN0cywiKTsKLSAgICBp
ZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b246Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExh
eWVycykKLSAgICAgICAgcmVhc29ucy5hcHBlbmRMaXRlcmFsKCJ2aWV3cG9ydC1jb25zdHJhaW5l
ZCBvYmplY3RzLCIpOwotICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0cykKLSAgICAgICAgcmVhc29ucy5hcHBlbmRMaXRlcmFsKCJub24tbGF5ZXIgdmlld3BvcnQt
Y29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OklzSW1hZ2VEb2N1bWVudCkKLSAgICAg
ICAgcmVhc29ucy5hcHBlbmRMaXRlcmFsKCJpbWFnZSBkb2N1bWVudCwiKTsKKyAgICBhdXRvIHN0
cmluZyA9IG1ha2VTdHJpbmcocmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbjo6Rm9yY2VkT25NYWluVGhyZWFkKSA/ICJmb3JjZWQsIiA6ICIiLAorICAgICAgICByZWFz
b25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNTbG93UmVwYWludE9i
amVjdHMpID8gInNsb3ctcmVwYWludCBvYmplY3RzLCIgOiAiIiwKKyAgICAgICAgcmVhc29ucy5j
b250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzVmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKSA/ICJ2aWV3cG9ydC1jb25zdHJh
aW5lZCBvYmplY3RzLCIgOiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbjo6SGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykg
PyAibm9uLWxheWVyIHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsIiA6ICIiLAorICAgICAg
ICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpJc0ltYWdlRG9j
dW1lbnQpID8gImltYWdlIGRvY3VtZW50LCIgOiAiIik7CiAKICAgICAvLyBTdHJpcCB0aGUgdHJh
aWxpbmcgY29tbWEuCi0gICAgcmV0dXJuIHJlYXNvbnMudG9TdHJpbmcoKS5sZWZ0KHJlYXNvbnMu
bGVuZ3RoKCkgLSAxKTsKKyAgICByZXR1cm4gc3RyaW5nLmxlZnQoc3RyaW5nLmxlbmd0aCgpIC0g
MSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCA1MDlmMjNi
YWNlMWVlNWZhNjE3ZDg1Y2JkYTE1NjhkOTkzOGI4NThlLi5lNTE5YmU3YTg0YjAxNDU0YjQ2M2Y2
ZGMzNTg0MzcwMDcyOGZjOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC00NjcsNyArNDY3LDcgQEAgdm9p
ZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1EcmF3KENHQ29udGV4dFJlZiBjb250ZXh0
KQogICAgICAgICBzaXplX3QgcmVjbGFpbWFibGUgPSBjYXRlZ29yeS5yZWNsYWltYWJsZVNpemUu
bGFzdCgpOwogICAgICAgICBzaXplX3QgZXh0ZXJuYWwgPSBjYXRlZ29yeS5leHRlcm5hbFNpemUu
bGFzdCgpOwogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyhwYWQo
JyAnLCAxMSwgY2F0ZWdvcnkubmFtZSksICI6ICIsIGZvcm1hdEJ5dGVOdW1iZXIoZGlydHkpKTsK
KyAgICAgICAgYXV0byBsYWJlbCA9IG1ha2VTdHJpbmcocGFkKCcgJywgMTEsIGNhdGVnb3J5Lm5h
bWUpLCAiOiAiLCBmb3JtYXRCeXRlTnVtYmVyKGRpcnR5KSk7CiAgICAgICAgIGlmIChleHRlcm5h
bCkKICAgICAgICAgICAgIGxhYmVsID0gbGFiZWwgKyBtYWtlU3RyaW5nKCIgKyAiLCBmb3JtYXRC
eXRlTnVtYmVyKGV4dGVybmFsKSk7CiAgICAgICAgIGlmIChyZWNsYWltYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGNm
MGJhODAxZmYyNWUyM2M3OGNlMWMwMDE4NzE5M2ZmMDljZGFhYjIuLmY0MWFiMGU0MjQzMWNlMjFk
MzgzY2NjNzVmYTdlMWI4YjcyNzRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtNjgsMjYgKzY4LDExIEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIHN0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oY29uc3QgY2hhciogZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYg
YmxvY2tlZFVSTCwgY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBzdWJqZWN0ID0gIml0
IikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBpZiAodmlvbGF0ZWREaXJlY3Rp
dmUuZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKQotICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiW1JlcG9ydCBPbmx5XSAiKTsKLSAgICByZXN1bHQuYXBwZW5kKHByZWZpeCk7Ci0g
ICAgaWYgKCFibG9ja2VkVVJMLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2tlZFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSk7Ci0gICAgfQotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgYmVjYXVz
ZSAiKTsKLSAgICByZXN1bHQuYXBwZW5kKHN1YmplY3QpOwotICAgIGlmICh2aW9sYXRlZERpcmVj
dGl2ZS5pc0RlZmF1bHRTcmMoKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGFw
cGVhcnMgaW4gbmVpdGhlciB0aGUgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZWZmZWN0aXZl
VmlvbGF0ZWREaXJlY3RpdmUpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGRpcmVj
dGl2ZSBub3IgdGhlIGRlZmF1bHQtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGVmZmVj
dGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBk
aXJlY3RpdmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodmlvbGF0ZWRE
aXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpID8gIltSZXBvcnQgT25seV0g
IiA6ICIiLAorICAgICAgICBwcmVmaXgsIGJsb2NrZWRVUkwuaXNFbXB0eSgpID8gIiIgOiAiICIs
IGJsb2NrZWRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYmVjYXVzZSAi
LCBzdWJqZWN0LAorICAgICAgICB2aW9sYXRlZERpcmVjdGl2ZS5pc0RlZmF1bHRTcmMoKSA/ICIg
YXBwZWFycyBpbiBuZWl0aGVyIHRoZSAiIDogIiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlICIsCisg
ICAgICAgIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLAorICAgICAgICB2aW9sYXRlZERpcmVj
dGl2ZS5pc0RlZmF1bHRTcmMoKSA/ICIgZGlyZWN0aXZlIG5vciB0aGUgZGVmYXVsdC1zcmMgZGly
ZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iIDogIiBkaXJlY3RpdmUgb2Yg
dGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwogfQogCiBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeShVUkwmJiBwcm90ZWN0ZWRVUkwsIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudCogY2xpZW50KQpAQCAtMTM4LDIyICsxMjMsMTQgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKGNv
bnN0IENvbnRlbnRTZWMKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1J1bm5pbmdP
ckRpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYm9vbCBh
bGxvdyA9IHRydWU7Ci0gICAgYm9vbCBpc1JlcG9ydE9ubHkgPSBmYWxzZTsKICAgICBmb3IgKGF1
dG8mIHBvbGljeSA6IG1fcG9saWNpZXMpIHsKICAgICAgICAgaWYgKCFwb2xpY3ktPmhhc0Jsb2Nr
QWxsTWl4ZWRDb250ZW50RGlyZWN0aXZlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpc1JlcG9ydE9ubHkgPSBwb2xpY3ktPmlzUmVwb3J0T25seSgpOwotCi0gICAgICAgIFN0
cmluZ0J1aWxkZXIgY29uc29sZU1lc3NhZ2U7Ci0gICAgICAgIGlmIChpc1JlcG9ydE9ubHkpCi0g
ICAgICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJbUmVwb3J0IE9ubHldICIp
OwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmQoIkJsb2NrZWQgbWl4ZWQgY29udGVudCAi
KTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kKHVybC5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZExpdGVyYWwoIiBi
ZWNhdXNlICIpOwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmQoIidibG9jay1hbGwtbWl4
ZWQtY29udGVudCcgYXBwZWFycyBpbiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7Ci0g
ICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
czo6YmxvY2tBbGxNaXhlZENvbnRlbnQsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpibG9ja0FsbE1peGVkQ29udGVudCwgKnBvbGljeSwgdXJsLCBjb25zb2xlTWVzc2FnZS50
b1N0cmluZygpKTsKLQorICAgICAgICBib29sIGlzUmVwb3J0T25seSA9IHBvbGljeS0+aXNSZXBv
cnRPbmx5KCk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoaXNSZXBvcnRPbmx5
ID8gIltSZXBvcnQgT25seV0gIiA6ICIiLCAiQmxvY2tlZCBtaXhlZCBjb250ZW50ICIsCisgICAg
ICAgICAgICB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYmVjYXVzZSAn
YmxvY2stYWxsLW1peGVkLWNvbnRlbnQnIGFwcGVhcnMgaW4gdGhlIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5LiIpOworICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmJsb2NrQWxsTWl4ZWRDb250ZW50LAorICAgICAgICAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmJsb2NrQWxsTWl4ZWRDb250ZW50LCAqcG9s
aWN5LCB1cmwsIG1lc3NhZ2UpOwogICAgICAgICBpZiAoIWlzUmVwb3J0T25seSkKICAgICAgICAg
ICAgIGFsbG93ID0gZmFsc2U7CiAgICAgfQpAQCAtODM5LDMwICs4MTYsMjUgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWREaXJlY3RpdmVJbkhUVFBFcXVpdk1ldGEo
Y29uc3QgU3RyaW5nJgogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxp
ZERpcmVjdGl2ZVZhbHVlQ2hhcmFjdGVyKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIlRoZSB2YWx1ZSBmb3IgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlICciLCBk
aXJlY3RpdmVOYW1lLCAiJyBjb250YWlucyBhbiBpbnZhbGlkIGNoYXJhY3RlcjogJyIsIHZhbHVl
LCAiJy4gTm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBvdXRzaWRlIEFTQ0lJIDB4MjEtMHg3RSBt
dXN0IGJlIHBlcmNlbnQtZW5jb2RlZCwgYXMgZGVzY3JpYmVkIGluIFJGQyAzOTg2LCBzZWN0aW9u
IDIuMTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMS4iKTsK
LSAgICBsb2dUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgbG9nVG9Db25zb2xlKG1ha2VTdHJpbmco
IlRoZSB2YWx1ZSBmb3IgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlICciLCBkaXJl
Y3RpdmVOYW1lLCAiJyBjb250YWlucyBhbiBpbnZhbGlkIGNoYXJhY3RlcjogJyIsIHZhbHVlLCAi
Jy4gTm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBvdXRzaWRlIEFTQ0lJIDB4MjEtMHg3RSBtdXN0
IGJlIHBlcmNlbnQtZW5jb2RlZCwgYXMgZGVzY3JpYmVkIGluIFJGQyAzOTg2LCBzZWN0aW9uIDIu
MTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMS4iKSk7CiB9
CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkUGF0aENoYXJhY3Rl
cihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IGNoYXIgaW52YWxpZENoYXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGludmFsaWRDaGFyID09ICcj
JyB8fCBpbnZhbGlkQ2hhciA9PSAnPycpOwogCi0gICAgU3RyaW5nIGlnbm9yaW5nOworICAgIGNv
bnN0IGNoYXIqIGlnbm9yaW5nOwogICAgIGlmIChpbnZhbGlkQ2hhciA9PSAnPycpCiAgICAgICAg
IGlnbm9yaW5nID0gIlRoZSBxdWVyeSBjb21wb25lbnQsIGluY2x1ZGluZyB0aGUgJz8nLCB3aWxs
IGJlIGlnbm9yZWQuIjsKICAgICBlbHNlCiAgICAgICAgIGlnbm9yaW5nID0gIlRoZSBmcmFnbWVu
dCBpZGVudGlmaWVyLCBpbmNsdWRpbmcgdGhlICcjJywgd2lsbCBiZSBpZ25vcmVkLiI7Ci0KLSAg
ICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBzb3VyY2UgbGlzdCBmb3IgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlICciLCBkaXJlY3RpdmVOYW1lLCAiJyBjb250YWlu
cyBhIHNvdXJjZSB3aXRoIGFuIGludmFsaWQgcGF0aDogJyIsIHZhbHVlLCAiJy4gIiwgaWdub3Jp
bmcpOwotICAgIGxvZ1RvQ29uc29sZShtZXNzYWdlKTsKKyAgICBsb2dUb0NvbnNvbGUobWFrZVN0
cmluZygiVGhlIHNvdXJjZSBsaXN0IGZvciBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3Rp
dmUgJyIsIGRpcmVjdGl2ZU5hbWUsICInIGNvbnRhaW5zIGEgc291cmNlIHdpdGggYW4gaW52YWxp
ZCBwYXRoOiAnIiwgdmFsdWUsICInLiAiLCBpZ25vcmluZykpOwogfQogCiB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFNvdXJjZUV4cHJlc3Npb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RpdmVOYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkgY29uc3QKIHsKLSAgICBTdHJp
bmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBzb3VyY2UgbGlzdCBmb3IgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgZGlyZWN0aXZlICciLCBkaXJlY3RpdmVOYW1lLCAiJyBjb250YWlucyBhbiBp
bnZhbGlkIHNvdXJjZTogJyIsIHNvdXJjZSwgIicuIEl0IHdpbGwgYmUgaWdub3JlZC4iKTsKLSAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLCAiJ25vbmUnIikpCi0g
ICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKG1lc3NhZ2UsICIgTm90ZSB0aGF0ICdub25lJyBo
YXMgbm8gZWZmZWN0IHVubGVzcyBpdCBpcyB0aGUgb25seSBleHByZXNzaW9uIGluIHRoZSBzb3Vy
Y2UgbGlzdC4iKTsKLSAgICBsb2dUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgbG9nVG9Db25zb2xl
KG1ha2VTdHJpbmcoIlRoZSBzb3VyY2UgbGlzdCBmb3IgQ29udGVudCBTZWN1cml0eSBQb2xpY3kg
ZGlyZWN0aXZlICciLCBkaXJlY3RpdmVOYW1lLCAiJyBjb250YWlucyBhbiBpbnZhbGlkIHNvdXJj
ZTogJyIsIHNvdXJjZSwgIicuIEl0IHdpbGwgYmUgaWdub3JlZC4iLAorICAgICAgICBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UsICInbm9uZSciKSA/ICIgTm90ZSB0aGF0ICdu
b25lJyBoYXMgbm8gZWZmZWN0IHVubGVzcyBpdCBpcyB0aGUgb25seSBleHByZXNzaW9uIGluIHRo
ZSBzb3VyY2UgbGlzdC4iIDogIiIpKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJiBwb2xpY3kpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGJjZDcwNmM5NjRmOWZkYjE2OTc0NzlkZjk5ZjM4
NWZmZjJjMGNmNTEuLmQ3YjcwNjZkMjE0ZGE5MTdhOWU0NzM0ODQ5MTA0NWJkOTc1Y2E4MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0xMjgsMTAgKzEyOCw4IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpCiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9tKTsKIAog
ICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3Rp
dmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7Ci0gICAgICAgIFN0cmluZyBldmFsRGlzYWJsZWRN
ZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZh
U2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Yg
c2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZl
OiBcIiIsIGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3Njcmlw
dFNyYy5nZXQoKSktPnRleHQoKSwgIlwiLlxuIik7Ci0gICAgICAgIGRpcmVjdGl2ZXMtPnNldEV2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZShldmFsRGlzYWJsZWRNZXNzYWdlKTsKLSAgICAgICAgU3Ry
aW5nIHdlYkFzc2VtYmx5RGlzYWJsZWRNZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBj
cmVhdGUgYSBXZWJBc3NlbWJseSBvYmplY3QgYmVjYXVzZSAndW5zYWZlLWV2YWwnIGlzIG5vdCBh
biBhbGxvd2VkIHNvdXJjZSBvZiBzY3JpcHQgaW4gdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBkaXJlY3RpdmU6IFwiIiwgZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKS0+dGV4dCgpLCAiXCIuXG4iKTsKLSAgICAg
ICAgZGlyZWN0aXZlcy0+c2V0V2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZSh3ZWJBc3Nl
bWJseURpc2FibGVkTWVzc2FnZSk7CisgICAgICAgIGRpcmVjdGl2ZXMtPnNldEV2YWxEaXNhYmxl
ZEVycm9yTWVzc2FnZShtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV2YWx1YXRlIGEgc3RyaW5nIGFz
IEphdmFTY3JpcHQgYmVjYXVzZSAndW5zYWZlLWV2YWwnIGlzIG5vdCBhbiBhbGxvd2VkIHNvdXJj
ZSBvZiBzY3JpcHQgaW4gdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6IFwiIiwgZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1f
c2NyaXB0U3JjLmdldCgpKS0+dGV4dCgpLCAiXCIuXG4iKSk7CisgICAgICAgIGRpcmVjdGl2ZXMt
PnNldFdlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3NhZ2UobWFrZVN0cmluZygiUmVmdXNlZCB0
byBjcmVhdGUgYSBXZWJBc3NlbWJseSBvYmplY3QgYmVjYXVzZSAndW5zYWZlLWV2YWwnIGlzIG5v
dCBhbiBhbGxvd2VkIHNvdXJjZSBvZiBzY3JpcHQgaW4gdGhlIGZvbGxvd2luZyBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6IFwiIiwgZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0
aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKS0+dGV4dCgpLCAiXCIuXG4iKSk7CiAg
ICAgfQogCiAgICAgaWYgKGRpcmVjdGl2ZXMtPmlzUmVwb3J0T25seSgpICYmIGRpcmVjdGl2ZXMt
PnJlcG9ydFVSSXMoKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggOWI2MjlkMGU1OTMxODli
ZDkzZDU5ZmU3MzA2N2E4NGU5Nzc1MzM4MC4uMTg3MmU0MmVkZmVlZTE4MDMwMDdlOWRlZGU3ODBi
YTg3OGYxZTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4Mywy
OSArMzgyLDEzIEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nVHJlZUFz
VGV4dChTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvCiAKIFN0cmluZyBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE9wdGlvblNldDxT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4gcmVhc29ucykKIHsKLSAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7Ci0KLSAgICBpZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29uOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiKTsKLQotICAgIGlmIChyZWFzb25zICYg
U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJIYXMgc2xvdyByZXBhaW50IG9iamVjdHMs
ICIpOwotCi0gICAgaWYgKHJlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFz
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkhhcyB2aWV3cG9ydCBjb25zdHJh
aW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOwotCi0gICAg
aWYgKHJlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzTm9uTGF5ZXJWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJIYXMgbm9uLWxheWVyIHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsICIpOwotCi0g
ICAgaWYgKHJlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SXNJbWFnZURvY3Vt
ZW50KQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIklzIGltYWdlIGRvY3Vt
ZW50LCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246
OkRlc2NlbmRhbnRTY3JvbGxlcnNIYXZlU3luY2hyb25vdXNTY3JvbGxpbmcpCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSGFzIHNsb3cgcmVwYWludCBkZXNjZW5kYW50IHNj
cm9sbGVycywgIik7Ci0KLSAgICBpZiAoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSkKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5zaHJpbmsoc3RyaW5nQnVpbGRlci5sZW5ndGgoKSAtIDIpOwotICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgYXV0byBzdHJpbmcgPSBtYWtlU3Ry
aW5nKHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OkZvcmNlZE9u
TWFpblRocmVhZCkgPyAiRm9yY2VkIG9uIG1haW4gdGhyZWFkLCAiIDogIiIsCisgICAgICAgIHJl
YXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1Nsb3dSZXBhaW50
T2JqZWN0cykgPyAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiIDogIiIsCisgICAgICAgIHJl
YXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykgPyAiSGFzIHZpZXdw
b3J0IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywg
IiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29uOjpIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKSA/ICJIYXMgbm9uLWxh
eWVyIHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsICIgOiAiIiwKKyAgICAgICAgcmVhc29u
cy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SXNJbWFnZURvY3VtZW50KSA/
ICJJcyBpbWFnZSBkb2N1bWVudCwgIiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpEZXNjZW5kYW50U2Nyb2xsZXJzSGF2ZVN5bmNocm9u
b3VzU2Nyb2xsaW5nKSA/ICJIYXMgc2xvdyByZXBhaW50IGRlc2NlbmRhbnQgc2Nyb2xsZXJzLCAi
IDogIiIpOworICAgIHJldHVybiBzdHJpbmcuaXNFbXB0eSgpID8gc3RyaW5nIDogc3RyaW5nLmxl
ZnQoc3RyaW5nLmxlbmd0aCgpIC0gMik7CiB9CiAKIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbC5jcHAKaW5kZXggNWMxYmJmNGUxNWVhOGRmOTQ2MDhiMGNjMjY5YTE3NzEw
NDg0MWI0Ni4uOWVjMDE3MmEyMWE5OGRjODA3YTRjMTY3NzU3ZTczNWFiZTIzNTg0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTEwMDksMTIgKzEwMDksMTEgQEAgU3RyaW5n
IERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgICAgIH0KIAotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjAu
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIwLiIpOwogICAgICAgICBmb3IgKGludCBpID0g
YWRqdXN0ZWRFeHBvbmVudCArIDE7IGkgPCAwOyArK2kpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnMCcpOwogCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpZ2l0cyk7Ci0KICAgICB9IGVs
c2UgewogICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHNbMF0pOwogICAgICAgICB3aGlsZSAo
Y29lZmZpY2llbnRMZW5ndGggPj0gMiAmJiBkaWdpdHNbY29lZmZpY2llbnRMZW5ndGggLSAxXSA9
PSAnMCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGlt
aW5nRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWlu
Z0Z1bmN0aW9uLmNwcAppbmRleCBiYWViMTRiZGY0MTcxM2U0ZDhhZjFiNzc5NWRmNjBlN2RkNGE5
Y2Y2Li5iZGFkYTU0ZTBjMGEzZTRmYWUwZWQ2MWExNzExNWE2MDY2ODIwMzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAK
QEAgLTE0NSwxOCArMTQ1LDEyIEBAIGRvdWJsZSBUaW1pbmdGdW5jdGlvbjo6dHJhbnNmb3JtVGlt
ZShkb3VibGUgaW5wdXRUaW1lLCBkb3VibGUgZHVyYXRpb24sIGJvb2wgYmVmCiAKIEV4Y2VwdGlv
bk9yPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+IFRpbWluZ0Z1bmN0aW9uOjpjcmVhdGVGcm9tQ1NT
VGV4dChjb25zdCBTdHJpbmcmIGNzc1RleHQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBjc3NTdHJp
bmc7Ci0gICAgY3NzU3RyaW5nLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVy
dHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpOwotICAgIGNzc1N0cmluZy5hcHBlbmRMaXRlcmFs
KCI6ICIpOwotICAgIGNzc1N0cmluZy5hcHBlbmQoY3NzVGV4dCk7Ci0gICAgYXV0byBzdHlsZVBy
b3BlcnRpZXMgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKLSAgICBzdHlsZVBy
b3BlcnRpZXMtPnBhcnNlRGVjbGFyYXRpb24oY3NzU3RyaW5nLnRvU3RyaW5nKCksIENTU1BhcnNl
ckNvbnRleHQoSFRNTFN0YW5kYXJkTW9kZSkpOwotCi0gICAgaWYgKGF1dG8gY3NzVmFsdWUgPSBz
dHlsZVByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlBbmltYXRpb25U
aW1pbmdGdW5jdGlvbikpIHsKLSAgICAgICAgaWYgKGF1dG8gdGltaW5nRnVuY3Rpb24gPSBjcmVh
dGVGcm9tQ1NTVmFsdWUoKmNzc1ZhbHVlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiB0aW1p
bmdGdW5jdGlvbjsKKyAgICBhdXRvIHByb3BlcnRpZXMgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKKyAgICBwcm9wZXJ0aWVzLT5wYXJzZURlY2xhcmF0aW9uKG1ha2VTdHJpbmco
ImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IiwgY3NzVGV4dCksIENTU1BhcnNlckNvbnRleHQo
SFRNTFN0YW5kYXJkTW9kZSkpOworICAgIGlmIChhdXRvIHZhbHVlID0gcHJvcGVydGllcy0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKSkgewor
ICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9IGNyZWF0ZUZyb21DU1NWYWx1ZSgqdmFsdWUpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZnVuY3Rpb24pOwogICAgIH0KLSAgICAKICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggOTM4MmFiMzU4ZTc0MjIwZDk5
MzYzNjA3NGVkNmM5YWRkZjY2MGEzOC4uZmMxZmZmYTk2YTU0ZWY5OGQ4ZDI0MGRkNmFhNTYxNWYw
ODE4ZGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5jcHAKQEAgLTE3MSw5ICsxNzEsOSBAQCBib29sIEhSVEZFbGV2YXRpb246OmNhbGN1bGF0
ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0aQogICAg
IEF1ZGlvQ2hhbm5lbCogbGVmdEVhckltcHVsc2VSZXNwb25zZSA9IHJlc3BvbnNlLT5jaGFubmVs
KEF1ZGlvQnVzOjpDaGFubmVsTGVmdCk7CiAgICAgQXVkaW9DaGFubmVsKiByaWdodEVhckltcHVs
c2VSZXNwb25zZSA9IHJlc3BvbnNlLT5jaGFubmVsKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpOwog
I2Vsc2UKLSAgICBTdHJpbmcgcmVzb3VyY2VOYW1lID0gbWFrZVN0cmluZygiSVJDXyIsIHN1Ympl
Y3ROYW1lLCAiX0NfUjAxOTVfVCIsIHBhZCgnMCcsIDMsIGF6aW11dGgpLCAiX1AiLCBwYWQoJzAn
LCAzLCBwb3NpdGl2ZUVsZXZhdGlvbikpOworICAgIGF1dG8gcmVzb3VyY2VOYW1lID0gbWFrZVN0
cmluZygiSVJDXyIsIHN1YmplY3ROYW1lLCAiX0NfUjAxOTVfVCIsIHBhZCgnMCcsIDMsIGF6aW11
dGgpLCAiX1AiLCBwYWQoJzAnLCAzLCBwb3NpdGl2ZUVsZXZhdGlvbikpLnV0ZjgoKTsKIAotICAg
IFJlZlB0cjxBdWRpb0J1cz4gaW1wdWxzZVJlc3BvbnNlKEF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShyZXNvdXJjZU5hbWUudXRmOCgpLmRhdGEoKSwgc2FtcGxlUmF0ZSkpOworICAgIFJl
ZlB0cjxBdWRpb0J1cz4gaW1wdWxzZVJlc3BvbnNlKEF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZShyZXNvdXJjZU5hbWUuZGF0YSgpLCBzYW1wbGVSYXRlKSk7CiAKICAgICBBU1NFUlQoaW1w
dWxzZVJlc3BvbnNlLmdldCgpKTsKICAgICBpZiAoIWltcHVsc2VSZXNwb25zZS5nZXQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCmluZGV4IDE3
NmUzYzk4NGJjY2Q3MTE1YTA5NzQ0MTE1NWJhNzQxNzg5MGU2MjkuLmI5MDQ1Mjc3YTRlZTY5YTQy
NzYxYTI4MzEyODIwMGI2OTFkNjg5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNzgsMTYgKzc4LDE0IEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogc3RhdGljIFN0cmluZyBidWlsZFVz
ZXJBZ2VudFN0cmluZyhjb25zdCBVc2VyQWdlbnRRdWlya3MmIHF1aXJrcykKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHVhU3RyaW5nOwotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1vemlsbGEv
NS4wICIpOwotICAgIHVhU3RyaW5nLmFwcGVuZCgnKCcpOworICAgIHVhU3RyaW5nLmFwcGVuZCgi
TW96aWxsYS81LjAgKCIpOwogCiAgICAgaWYgKHF1aXJrcy5jb250YWlucyhVc2VyQWdlbnRRdWly
a3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKQogICAgICAgICB1YVN0cmluZy5hcHBlbmQoVXNl
ckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50
b3NoUGxhdGZvcm0pKTsKICAgICBlbHNlIHsKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRm
b3JtRm9yVUFTdHJpbmcoKSk7Ci0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIjsgIik7
CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChwbGF0Zm9ybUZvclVBU3RyaW5nKCksICI7ICIpOwog
I2lmIGRlZmluZWQoVVNFUl9BR0VOVF9CUkFORElORykKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5k
TGl0ZXJhbChVU0VSX0FHRU5UX0JSQU5ESU5HICI7ICIpOworICAgICAgICB1YVN0cmluZy5hcHBl
bmQoVVNFUl9BR0VOVF9CUkFORElORyAiOyAiKTsKICNlbmRpZgogICAgICAgICB1YVN0cmluZy5h
cHBlbmQocGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKSk7CiAgICAgfQpAQCAtOTcsMjEgKzk1
LDIwIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRVc2VyQWdlbnRTdHJpbmcoY29uc3QgVXNlckFnZW50
UXVpcmtzJiBxdWlya3MpCiAgICAgICAgIHJldHVybiB1YVN0cmluZy50b1N0cmluZygpOwogICAg
IH0KIAotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIikgQXBwbGVXZWJLaXQvNjA1LjEuMTUg
KEtIVE1MLCBsaWtlIEdlY2tvKSAiKTsKKyAgICB1YVN0cmluZy5hcHBlbmQoIikgQXBwbGVXZWJL
aXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSAiKTsKIAogICAgIC8vIE5vdGUgdGhhdCBD
aHJvbWUgVUFzIGFkdmVydGlzZSAqYm90aCogQ2hyb21lL1ggYW5kIFNhZmFyaS9YLCBidXQgaXQg
ZG9lcwogICAgIC8vIG5vdCBhZHZlcnRpc2UgVmVyc2lvbi9YLgogICAgIGlmIChxdWlya3MuY29u
dGFpbnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpKSB7Ci0gICAgICAgIHVh
U3RyaW5nLmFwcGVuZChVc2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1
aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKSk7Ci0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVy
YWwoIiAiKTsKKyAgICAgICAgdWFTdHJpbmcuYXBwZW5kKFVzZXJBZ2VudFF1aXJrczo6c3RyaW5n
Rm9yUXVpcmsoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpLCAnICcpOwogICAg
IC8vIFZlcnNpb24vWCBpcyBtYW5kYXRvcnkgKmJlZm9yZSogU2FmYXJpL1ggdG8gYmUgYSB2YWxp
ZCBTYWZhcmkgVUEuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzM0MDMgZm9yIGRldGFpbHMuCiAgICAgfSBlbHNlCi0gICAgICAgIHVhU3RyaW5n
LmFwcGVuZExpdGVyYWwoIlZlcnNpb24vMTQuMCAiKTsKKyAgICAgICAgdWFTdHJpbmcuYXBwZW5k
KCJWZXJzaW9uLzE0LjAgIik7CiAKICAgICBpZiAoY2hhc3Npc1R5cGUoKSA9PSBXVEY6OkNoYXNz
aXNUeXBlOjpNb2JpbGUpCi0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1vYmlsZSAi
KTsKLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJTYWZhcmkvNjA1LjEuMTUiKTsKKyAgICAg
ICAgdWFTdHJpbmcuYXBwZW5kKCJNb2JpbGUgIik7CisgICAgdWFTdHJpbmcuYXBwZW5kKCJTYWZh
cmkvNjA1LjEuMTUiKTsKIAogICAgIHJldHVybiB1YVN0cmluZy50b1N0cmluZygpOwogfQpAQCAt
MTY5LDQgKzE2NiwzIEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChjb25zdCBVUkwm
IHVybCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKaW5kZXggZjcwM2QwNDViNzg2NmJhOTc4
OGExNzYyNGI4Y2NmNjliMmY3ZjQ2Mi4uZWZiMTRmNGYzZDhiOGQzZDJjNTMyY2U2Y2E0MWYzNTA5
YjA5NGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAg
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUpICE9IGtDRkJv
b2xlYW5UcnVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAg
ICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxiPiIpOworICAgICAgICAgICAgICAgIHRhZ1N0
YXJ0LmFwcGVuZCgiPGI+Iik7CiAgICAgICAgICAgICAgICAgdGFnRW5kID0gIjwvYj4iICsgdGFn
RW5kOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTYwLDcg
KzE2MCw3IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Ojpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVu
ZExpdGVyYWwoIjxpPiIpOworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZCgiPGk+Iik7
CiAgICAgICAgICAgICAgICAgdGFnRW5kID0gIjwvaT4iICsgdGFnRW5kOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTY5LDcgKzE2OSw3IEBAIFJlZjxJbmJh
bmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmli
dXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENGQm9vbGVh
blJlZj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjx1PiIpOwor
ICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZCgiPHU+Iik7CiAgICAgICAgICAgICAgICAg
dGFnRW5kID0gIjwvdT4iICsgdGFnRW5kOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNzhjNzljZDdlODllOTJjMjZjNGZlNmM0N2Rl
OTU3ZmZkOGZmOTZjNC4uMTc5NGMwNjdiMWJiNjBmZTQ5ZDRlOGEzNjIwMGQ3NzJhMzMyZTdjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCkBAIC0xNjQ5LDggKzE2NDksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0
IFRyYQogICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoQm9yZGVyQ29sb3IgPSBDb2xvcjo6cmVk
LmNvbG9yV2l0aEFscGhhQnl0ZSgxMDApOwogICAgICAgICAKICAgICAgICAgbV92aXNpYmxlVGls
ZVdhc2hMYXllciA9IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUxheWVyLCB0aGlzKTsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKCJWaXNp
YmxlIFRpbGUgV2FzaCBMYXllciAweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
bV92aXNpYmxlVGlsZVdhc2hMYXllci0+cGxhdGZvcm1MYXllcigpKSwgTG93ZXJjYXNlKSk7Ci0g
ICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldE5hbWUobmFtZSk7CisgICAgICAgIG1f
dmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldE5hbWUobWFrZVN0cmluZygiVmlzaWJsZSBUaWxlIFdh
c2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlzaWJsZVRp
bGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpKTsKICAgICAgICAgbV92
aXNpYmxlVGlsZVdhc2hMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDAp
KTsKICAgICAgICAgbV92aXNpYmxlVGlsZVdhc2hMYXllci0+c2V0Qm9yZGVyQ29sb3Iod2FzaEJv
cmRlckNvbG9yKTsKICAgICAgICAgbV92aXNpYmxlVGlsZVdhc2hMYXllci0+c2V0Qm9yZGVyV2lk
dGgoOCk7CkBAIC0zMzg3LDcgKzMzODYsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5k
VG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAg
IGZvciAoaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCA9IDA7IGludGVybmFsRmlsdGVy
UHJvcGVydHlJbmRleCA8IG51bUFuaW1hdGVkUHJvcGVydGllczsgKytpbnRlcm5hbEZpbHRlclBy
b3BlcnR5SW5kZXgpIHsKICAgICAgICAgYm9vbCB2YWx1ZXNPSzsKICAgICAgICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOwotICAgICAgICBTdHJpbmcga2V5UGF0aCA9
IG1ha2VTdHJpbmcoImZpbHRlcnMuZmlsdGVyXyIsIGFuaW1hdGlvbkluZGV4LCAnLicsIFBsYXRm
b3JtQ0FGaWx0ZXJzOjphbmltYXRlZEZpbHRlclByb3BlcnR5TmFtZShmaWx0ZXJPcCwgaW50ZXJu
YWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSk7CisgICAgICAgIGF1dG8ga2V5UGF0aCA9IG1ha2VTdHJp
bmcoImZpbHRlcnMuZmlsdGVyXyIsIGFuaW1hdGlvbkluZGV4LCAnLicsIFBsYXRmb3JtQ0FGaWx0
ZXJzOjphbmltYXRlZEZpbHRlclByb3BlcnR5TmFtZShmaWx0ZXJPcCwgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNLZXlmcmFtZSh2YWx1ZUxp
c3QpKSB7CiAgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9u
KGFuaW1hdGlvbiwga2V5UGF0aCwgZmFsc2UsIGtleWZyYW1lc1Nob3VsZFVzZUFuaW1hdGlvbldp
ZGVUaW1pbmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODQyN2Y5Y2JiNDJkNGM3YTE3NTdj
YTAxY2I2ZTZhYjFjZTlmMzgzYy4uNGZiYWE3ZmJkYWExNDc0NDYzYzNlODhkNmZkYzg1YWY1M2U1
YzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjE1LDkgKzYxNSw5IEBAIHZvaWQgVGlsZUNvbnRyb2xs
ZXI6OnRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKCkKICAgICAvLyBJZiB3ZSBhcmUgbm90IHZp
c2libGUgZ2V0IHJpZCBvZiB0aGUgem9vbWVkLW91dCB0aWxlcy4KICAgICBjbGVhclpvb21lZE91
dFRpbGVHcmlkKCk7CiAKLSAgICBUaWxlR3JpZDo6VGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRh
dGlvblBvbGljeSA9IChzaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpID8gMCA6IFRpbGVH
cmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzKSB8IFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzOwot
Ci0gICAgdGlsZUdyaWQoKS5yZXZhbGlkYXRlVGlsZXModmFsaWRhdGlvblBvbGljeSk7CisgICAg
dGlsZUdyaWQoKS5yZXZhbGlkYXRlVGlsZXMoc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMo
KQorICAgICAgICA/IE9wdGlvblNldCB7IFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzLCBU
aWxlR3JpZDo6VW5wYXJlbnRBbGxUaWxlcyB9CisgICAgICAgIDogT3B0aW9uU2V0IHsgVGlsZUdy
aWQ6OlVucGFyZW50QWxsVGlsZXMgfSk7CiB9CiAKIHZvaWQgVGlsZUNvbnRyb2xsZXI6OmRpZFJl
dmFsaWRhdGVUaWxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlR3JpZC5jcHAKaW5kZXggMDNiMDBiZmJjZDVjYTlmNjk0MTllYzViMTFlOTMxYWNiODFi
ZDNhYS4uOWQ4ZmJiMWEwZjBkZTM0NzJhNWNhY2VmN2ZjN2U1OTdlYjZhMjZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcApAQCAtNDUs
MjIgKzQ1LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhTE9HX0RJU0FCTEVECi1z
dGF0aWMgU3RyaW5nIHZhbGlkYXRpb25Qb2xpY3lBc1N0cmluZyhUaWxlR3JpZDo6VGlsZVZhbGlk
YXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbIik7Ci0gICAgaWYgKHZhbGlkYXRpb25Q
b2xpY3kgJiBUaWxlR3JpZDo6UHJ1bmVTZWNvbmRhcnlUaWxlcykKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJwcnVuZSBzZWNvbmRhcnkiKTsKLQotICAgIGlmICh2YWxpZGF0aW9uUG9s
aWN5ICYgVGlsZUdyaWQ6OlVucGFyZW50QWxsVGlsZXMpIHsKLSAgICAgICAgaWYgKGJ1aWxkZXIu
aXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInVucGFyZW50IGFsbCIpOwotICAgIH0KLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIl0iKTsKIAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CitzdGF0aWMgU3RyaW5nIHZhbGlkYXRpb25Qb2xpY3lBc1N0cmluZyhPcHRpb25TZXQ8VGls
ZUdyaWQ6OlZhbGlkYXRpb25Qb2xpY3lGbGFnPiBwb2xpY3kpCit7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoJ1snLAorICAgICAgICBwb2xpY3kuY29udGFpbnMoVGlsZUdyaWQ6OlBydW5lU2Vjb25k
YXJ5VGlsZXMpID8gInBydW5lIHNlY29uZGFyeSIgOiAiIiwKKyAgICAgICAgcG9saWN5LmNvbnRh
aW5zQWxsKHsgVGlsZUdyaWQ6OlBydW5lU2Vjb25kYXJ5VGlsZXMsIFRpbGVHcmlkOjpVbnBhcmVu
dEFsbFRpbGVzIH0pID8gIiwgIiA6ICIiLAorICAgICAgICBwb2xpY3kuY29udGFpbnMoVGlsZUdy
aWQ6OlBydW5lU2Vjb25kYXJ5VGlsZXMpID8gInVucGFyZW50IGFsbCIgOiAiIiwKKyAgICAgICAg
J10nKTsKIH0KKwogI2VuZGlmCiAKIFRpbGVHcmlkOjpUaWxlR3JpZChUaWxlQ29udHJvbGxlciYg
Y29udHJvbGxlcikKQEAgLTEzNyw4ICsxMzEsNyBAQCB2b2lkIFRpbGVHcmlkOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgICAgIGZvciAoaW50IHkg
PSB0b3BMZWZ0LnkoKTsgeSA8PSBib3R0b21SaWdodC55KCk7ICsreSkgewogICAgICAgICAgICAg
ICAgIGZvciAoaW50IHggPSB0b3BMZWZ0LngoKTsgeCA8PSBib3R0b21SaWdodC54KCk7ICsreCkg
ewogICAgICAgICAgICAgICAgICAgICBUaWxlSW5kZXggdGlsZUluZGV4KHgsIHkpOwotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgVGlsZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3RpbGVzLmZpbmQodGlsZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdCA9
IG1fdGlsZXMuZmluZCh0aWxlSW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXQgIT0g
bV90aWxlcy5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbGVOZWVkc0Rpc3Bs
YXlJblJlY3QodGlsZUluZGV4LCBpdC0+dmFsdWUsIHJlcGFpbnRSZWN0SW5UaWxlQ29vcmRzLCBt
X3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0KTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDcsOCAr
MTQwLDggQEAgdm9pZCBUaWxlR3JpZDo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKFRpbGVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgIHNldFRpbGVOZWVkc0Rpc3BsYXlJblJlY3QoaXQtPmtleSwgaXQt
PnZhbHVlLCByZXBhaW50UmVjdEluVGlsZUNvb3JkcywgbV9wcmltYXJ5VGlsZUNvdmVyYWdlUmVj
dCk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fdGlsZXMpCisgICAgICAgIHNldFRpbGVOZWVk
c0Rpc3BsYXlJblJlY3QoZW50cnkua2V5LCBlbnRyeS52YWx1ZSwgcmVwYWludFJlY3RJblRpbGVD
b29yZHMsIG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3QpOwogfQogCiB2b2lkIFRpbGVHcmlkOjpk
cm9wVGlsZXNJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTIwMyw5ICsxOTYsNyBAQCB2
b2lkIFRpbGVHcmlkOjp1cGRhdGVUaWxlTGF5ZXJQcm9wZXJ0aWVzKCkKICAgICBib29sIG9wYXF1
ZSA9IG1fY29udHJvbGxlci50aWxlc0FyZU9wYXF1ZSgpOwogICAgIENvbG9yIHRpbGVEZWJ1Z0Jv
cmRlckNvbG9yID0gbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCk7CiAgICAgZmxv
YXQgdGlsZURlYnVnQm9yZGVyV2lkdGggPSBtX2NvbnRyb2xsZXIudGlsZURlYnVnQm9yZGVyV2lk
dGgoKTsKLQotICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJl
Z2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBj
b25zdCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB0aWxl
SW5mbyA6IG1fdGlsZXMudmFsdWVzKCkpIHsKICAgICAgICAgdGlsZUluZm8ubGF5ZXItPnNldEFj
Y2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlc0RyYXdpbmcpOwogICAgICAgICB0aWxlSW5mby5s
YXllci0+c2V0V2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoZGVlcENvbG9yKTsKICAgICAgICAg
dGlsZUluZm8ubGF5ZXItPnNldFN1cHBvcnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRleHQoc3VicGl4
ZWxBbnRpYWxpYXNlZFRleHQpOwpAQCAtMjkyLDEyICsyODMsMTAgQEAgYm9vbCBUaWxlR3JpZDo6
Z2V0VGlsZUluZGV4UmFuZ2VGb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIFRpbGVJbmRleCYg
dG9wTGVmdCwKIHVuc2lnbmVkIFRpbGVHcmlkOjpibGFua1BpeGVsQ291bnQoKSBjb25zdAogewog
ICAgIFBsYXRmb3JtTGF5ZXJMaXN0IHRpbGVzKG1fdGlsZXMuc2l6ZSgpKTsKLQotICAgIGZvciAo
VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGls
ZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoUGxhdGZvcm1MYXllciAq
bGF5ZXIgPSBpdC0+dmFsdWUubGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKKyAgICBmb3IgKGF1dG8m
IHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChhdXRvIGxheWVyID0gdGls
ZS5sYXllci0+cGxhdGZvcm1MYXllcigpKQogICAgICAgICAgICAgdGlsZXMuYXBwZW5kKGxheWVy
KTsKICAgICB9Ci0KICAgICByZXR1cm4gVGlsZUNvbnRyb2xsZXI6OmJsYW5rUGl4ZWxDb3VudEZv
clRpbGVzKHRpbGVzLCBtX2NvbnRyb2xsZXIudmlzaWJsZVJlY3QoKSwgSW50UG9pbnQoMCwgMCkp
OwogfQogCkBAIC0zMDYsNyArMjk1LDcgQEAgdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVGlsZXMoVmVj
dG9yPFRpbGVHcmlkOjpUaWxlSW5kZXg+JiB0b1JlbW92ZSkKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRvUmVtb3ZlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFRpbGVJbmZvIHRpbGVJbmZv
ID0gbV90aWxlcy50YWtlKHRvUmVtb3ZlW2ldKTsKICAgICAgICAgdGlsZUluZm8ubGF5ZXItPnJl
bW92ZUZyb21TdXBlcmxheWVyKCk7Ci0gICAgICAgIG1fdGlsZVJlcGFpbnRDb3VudHMucmVtb3Zl
KHRpbGVJbmZvLmxheWVyLmdldCgpKTsKKyAgICAgICAgbV90aWxlUmVwYWludENvdW50cy5yZW1v
dmVBbGwodGlsZUluZm8ubGF5ZXIuZ2V0KCkpOwogICAgICAgICB0aWxlSW5mby5sYXllci0+bW92
ZVRvTGF5ZXJQb29sKCk7CiAgICAgfQogfQpAQCAtMzI4LDcgKzMxNyw3IEBAIHZvaWQgVGlsZUdy
aWQ6OnJlbW92ZUFsbFNlY29uZGFyeVRpbGVzKCkKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X3RpbGVzKSB7CiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9IGVudHJ5LnZhbHVl
OwotICAgICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IFZpc2libGVUaWxlQ29ob3J0KQorICAg
ICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IHZpc2libGVUaWxlQ29ob3J0KQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIHRpbGVzVG9SZW1vdmUuYXBwZW5kKGVudHJ5LmtleSk7CiAg
ICAgfQpAQCAtMzM4LDcgKzMyNyw3IEBAIHZvaWQgVGlsZUdyaWQ6OnJlbW92ZUFsbFNlY29uZGFy
eVRpbGVzKCkKIAogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVGlsZXNJbkNvaG9ydChUaWxlQ29ob3J0
IGNvaG9ydCkKIHsKLSAgICBBU1NFUlQoY29ob3J0ICE9IFZpc2libGVUaWxlQ29ob3J0KTsKKyAg
ICBBU1NFUlQoY29ob3J0ICE9IHZpc2libGVUaWxlQ29ob3J0KTsKICAgICBWZWN0b3I8VGlsZUlu
ZGV4PiB0aWxlc1RvUmVtb3ZlOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fdGlsZXMpIHsK
QEAgLTM1MSw3ICszNDAsNyBAQCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVUaWxlc0luQ29ob3J0KFRp
bGVDb2hvcnQgY29ob3J0KQogICAgIHJlbW92ZVRpbGVzKHRpbGVzVG9SZW1vdmUpOwogfQogCi12
b2lkIFRpbGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRh
dGlvblBvbGljeSkKK3ZvaWQgVGlsZUdyaWQ6OnJldmFsaWRhdGVUaWxlcyhPcHRpb25TZXQ8VmFs
aWRhdGlvblBvbGljeUZsYWc+IHZhbGlkYXRpb25Qb2xpY3kpCiB7CiAgICAgRmxvYXRSZWN0IGNv
dmVyYWdlUmVjdCA9IG1fY29udHJvbGxlci5jb3ZlcmFnZVJlY3QoKTsKICAgICBJbnRSZWN0IGJv
dW5kcyA9IG1fY29udHJvbGxlci5ib3VuZHMoKTsKQEAgLTM4Myw3ICszNzIsNyBAQCB2b2lkIFRp
bGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBv
bGljeSkKICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxlSW5kZXgodGlsZUlu
ZGV4KTsKIAogICAgICAgICBpZiAodGlsZVJlY3QuaW50ZXJzZWN0cyhjb3ZlcmFnZVJlY3RJblRp
bGVDb29yZHMpKSB7Ci0gICAgICAgICAgICB0aWxlSW5mby5jb2hvcnQgPSBWaXNpYmxlVGlsZUNv
aG9ydDsKKyAgICAgICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IHZpc2libGVUaWxlQ29ob3J0Owog
ICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmhhc1N0YWxlQ29udGVudCkgewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBzdG9yZSBhIGRpcnR5IHJlZ2lvbiBwZXIgbGF5ZXI/CiAgICAgICAgICAg
ICAgICAgdGlsZUxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTM5MSw3ICszODAsNyBAQCB2
b2lkIFRpbGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRh
dGlvblBvbGljeSkKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IC8vIEFkZCB0byB0aGUgY3VycmVudENvaG9ydCBpZiBub3QgYWxyZWFkeSBpbiBvbmUuCi0gICAg
ICAgICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IFZpc2libGVUaWxlQ29ob3J0KSB7CisgICAg
ICAgICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IHZpc2libGVUaWxlQ29ob3J0KSB7CiAgICAg
ICAgICAgICAgICAgdGlsZUluZm8uY29ob3J0ID0gY3VyckNvaG9ydDsKICAgICAgICAgICAgICAg
ICArK3RpbGVzSW5Db2hvcnQ7CiAgICAgICAgICAgICAgICAgdGlsZUxheWVyLT5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOwpAQCAtNjMwLDE2ICs2MTksMTMgQEAgSW50UmVjdCBUaWxlR3JpZDo6ZXh0
ZW50KCkgY29uc3QKIGRvdWJsZSBUaWxlR3JpZDo6cmV0YWluZWRUaWxlQmFja2luZ1N0b3JlTWVt
b3J5KCkgY29uc3QKIHsKICAgICBkb3VibGUgdG90YWxCeXRlcyA9IDA7Ci0gICAgCi0gICAgZm9y
IChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90
aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0
aWxlSW5mbyA9IGl0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIHRpbGVJbmZvIDogbV90aWxlcy52
YWx1ZXMoKSkgewogICAgICAgICBpZiAodGlsZUluZm8ubGF5ZXItPnN1cGVybGF5ZXIoKSkgewog
ICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IHRpbGVJbmZvLmxheWVyLT5ib3VuZHMoKTsK
ICAgICAgICAgICAgIGRvdWJsZSBjb250ZW50c1NjYWxlID0gdGlsZUluZm8ubGF5ZXItPmNvbnRl
bnRzU2NhbGUoKTsKICAgICAgICAgICAgIHRvdGFsQnl0ZXMgKz0gNCAqIGJvdW5kcy53aWR0aCgp
ICogY29udGVudHNTY2FsZSAqIGJvdW5kcy5oZWlnaHQoKSAqIGNvbnRlbnRzU2NhbGU7CiAgICAg
ICAgIH0KICAgICB9Ci0KICAgICByZXR1cm4gdG90YWxCeXRlczsKIH0KIApAQCAtNjYxLDggKzY0
Nyw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgQ0dGbG9hdCBjb250ZXh0U2NhbGUg
PSBzY2FsZUZhY3RvciAvIG1fc2NhbGU7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwg
Y29udGV4dFNjYWxlLCBjb250ZXh0U2NhbGUpOwogICAgIAotICAgIGZvciAoVGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25zdCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+
dmFsdWU7CisgICAgZm9yIChhdXRvJiB0aWxlSW5mbyA6IG1fdGlsZXMudmFsdWVzKCkpIHsKICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyKiB0aWxlTGF5ZXIgPSB0aWxlSW5mby5sYXllci5nZXQoKTsK
IAogICAgICAgICBDR0Zsb2F0IHJlZCA9IDE7CkBAIC02NzMsNyArNjU4LDcgQEAgdm9pZCBUaWxl
R3JpZDo6ZHJhd1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGxh
eWVyQm91bmRzKSBjb24KICAgICAgICAgICAgIHJlZCA9IDAuMjU7CiAgICAgICAgICAgICBncmVl
biA9IDAuMTI1OwogICAgICAgICAgICAgYmx1ZSA9IDA7Ci0gICAgICAgIH0gZWxzZSBpZiAobV9j
b250cm9sbGVyLnNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkgJiYgdGlsZUluZm8uY29o
b3J0ICE9IFZpc2libGVUaWxlQ29ob3J0KSB7CisgICAgICAgIH0gZWxzZSBpZiAobV9jb250cm9s
bGVyLnNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkgJiYgdGlsZUluZm8uY29ob3J0ICE9
IHZpc2libGVUaWxlQ29ob3J0KSB7CiAgICAgICAgICAgICByZWQgPSAwLjg7CiAgICAgICAgICAg
ICBncmVlbiA9IDAuODsKICAgICAgICAgICAgIGJsdWUgPSAwLjg7CkBAIC02ODIsNyArNjY3LDcg
QEAgdm9pZCBUaWxlR3JpZDo6ZHJhd1RpbGVNYXBDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4
dCwgQ0dSZWN0IGxheWVyQm91bmRzKSBjb24KICAgICAgICAgVGlsZUNvaG9ydCBuZXdlc3RDb2hv
cnQgPSBuZXdlc3RUaWxlQ29ob3J0KCk7CiAgICAgICAgIFRpbGVDb2hvcnQgb2xkZXN0Q29ob3J0
ID0gb2xkZXN0VGlsZUNvaG9ydCgpOwogCi0gICAgICAgIGlmICghbV9jb250cm9sbGVyLnNob3Vs
ZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkgJiYgdGlsZUluZm8uY29ob3J0ICE9IFZpc2libGVU
aWxlQ29ob3J0ICYmIG5ld2VzdENvaG9ydCA+IG9sZGVzdENvaG9ydCkKKyAgICAgICAgaWYgKCFt
X2NvbnRyb2xsZXIuc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoKSAmJiB0aWxlSW5mby5j
b2hvcnQgIT0gdmlzaWJsZVRpbGVDb2hvcnQgJiYgbmV3ZXN0Q29ob3J0ID4gb2xkZXN0Q29ob3J0
KQogICAgICAgICAgICAgYWxwaGEgPSAxIC0gKHN0YXRpY19jYXN0PGZsb2F0PigobmV3ZXN0Q29o
b3J0IC0gdGlsZUluZm8uY29ob3J0KSkgLyAobmV3ZXN0Q29ob3J0IC0gb2xkZXN0Q29ob3J0KSk7
CiAKICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKQEAgLTcwMSwxMiArNjg2LDEzIEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdU
aWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykg
Y29uCiAKICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDAsIDAsIDAs
IDAuNSk7CiAKLSAgICAgICAgU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6bnVtYmVyKG1f
dGlsZVJlcGFpbnRDb3VudHMuZ2V0KHRpbGVMYXllcikpOwotCiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CiAKKyAgICAgICAgYXV0byByZXBhaW50Q291bnQgPSBtX3RpbGVS
ZXBhaW50Q291bnRzLmNvdW50KHRpbGVMYXllcik7CisgICAgICAgIGNoYXIgcmVwYWludENvdW50
Q2hhcmFjdGVyc1tsZW5ndGhPZkludGVnZXJBc1N0cmluZyhzdGQ6Om51bWVyaWNfbGltaXRzPGRl
Y2x0eXBlKHJlcGFpbnRDb3VudCk+OjptYXgoKSldOworICAgICAgICB3cml0ZUludGVnZXJUb0J1
ZmZlcihyZXBhaW50Q291bnQsIHJlcGFpbnRDb3VudENoYXJhY3RlcnMpOwogICAgICAgICB0aWxl
TGF5ZXItPmRyYXdUZXh0QXRQb2ludChjb250ZXh0LCBmcmFtZS5vcmlnaW4ueCArIDY0LCBmcmFt
ZS5vcmlnaW4ueSArIDE5MiwgQ0dTaXplTWFrZSgzLCAtMyksIDU4LAotICAgICAgICAgICAgcmVw
YWludENvdW50LmFzY2lpKCkuZGF0YSgpLCByZXBhaW50Q291bnQubGVuZ3RoKCkpOworICAgICAg
ICAgICAgcmVwYWludENvdW50Q2hhcmFjdGVycywgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcocmVw
YWludENvdW50KSk7CiAKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsK
ICAgICB9CkBAIC03ODEsMjkgKzc2NywxOSBAQCBib29sIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0CiAKIGludCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVy
UmVwYWludENvdW50KFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKSBjb25zdAogewot
ICAgIGNvbnN0IGF1dG8gaXQgPSBtX3RpbGVSZXBhaW50Q291bnRzLmZpbmQocGxhdGZvcm1DQUxh
eWVyKTsKLSAgICByZXR1cm4gaXQgIT0gbV90aWxlUmVwYWludENvdW50cy5lbmQoKSA/IGl0LT52
YWx1ZSA6IDA7CisgICAgcmV0dXJuIG1fdGlsZVJlcGFpbnRDb3VudHMuY291bnQocGxhdGZvcm1D
QUxheWVyKTsKIH0KIAogaW50IFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBh
aW50Q291bnQoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIpCiB7Ci0gICAgaW50IHJl
cGFpbnRDb3VudCA9IDA7Ci0KLSAgICBpZiAobV90aWxlUmVwYWludENvdW50cy5jb250YWlucyhw
bGF0Zm9ybUNBTGF5ZXIpKQotICAgICAgICByZXBhaW50Q291bnQgPSBtX3RpbGVSZXBhaW50Q291
bnRzLmdldChwbGF0Zm9ybUNBTGF5ZXIpOwotCi0gICAgbV90aWxlUmVwYWludENvdW50cy5zZXQo
cGxhdGZvcm1DQUxheWVyLCArK3JlcGFpbnRDb3VudCk7Ci0KLSAgICByZXR1cm4gcmVwYWludENv
dW50OworICAgIHJldHVybiBtX3RpbGVSZXBhaW50Q291bnRzLmFkZChwbGF0Zm9ybUNBTGF5ZXIp
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFRp
bGVHcmlkOjpyZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKQogewotICAgIHdoaWxlICghbV9jb2hv
cnRMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBUaWxlQ29ob3J0SW5mbyBmaXJzdENvaG9ydCA9
IG1fY29ob3J0TGlzdC50YWtlRmlyc3QoKTsKLSAgICAgICAgcmVtb3ZlVGlsZXNJbkNvaG9ydChm
aXJzdENvaG9ydC5jb2hvcnQpOwotICAgIH0KKyAgICB3aGlsZSAoIW1fY29ob3J0TGlzdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJlbW92ZVRpbGVzSW5Db2hvcnQobV9jb2hvcnRMaXN0LnRha2VGaXJz
dCgpLmNvaG9ydCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmgKaW5kZXggNDgwZmQwYTk3ZGNlMzA1YWFkY2Y5Yzc1NTU4Y2U0
ZTg1YzdiMmNhZS4uMjU3YmE1OTgzNGFjZDZkY2E3ZWIzYmRlY2Y2Y2QxMDFkMzUzZWI1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCkBAIC0z
MCw4ICszMCw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogI2lmIFVTRShDRykKQEAgLTQ1LDkg
KzQ1LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIGNsYXNzIFRpbGVDb250cm9sbGVyOwog
CiBjbGFzcyBUaWxlR3JpZCA6IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRpbGVHcmlkKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZUdyaWQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFRpbGVHcmlkKFRpbGVDb250cm9sbGVyJik7CisgICAgZXhw
bGljaXQgVGlsZUdyaWQoVGlsZUNvbnRyb2xsZXImKTsKICAgICB+VGlsZUdyaWQoKTsKIAogI2lm
IFVTRShDQSkKQEAgLTY3LDEyICs2OCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIHByZXBvcHVs
YXRlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIGVudW0gVGlsZVZhbGlkYXRpb25Qb2xp
Y3lGbGFncyB7CisgICAgZW51bSBWYWxpZGF0aW9uUG9saWN5RmxhZyA6IHVpbnQ4X3QgewogICAg
ICAgICBQcnVuZVNlY29uZGFyeVRpbGVzID0gMSA8PCAwLAogICAgICAgICBVbnBhcmVudEFsbFRp
bGVzICAgID0gMSA8PCAxCiAgICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFRpbGVWYWxpZGF0
aW9uUG9saWN5OwotICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5
ID0gMCk7CisgICAgdm9pZCByZXZhbGlkYXRlVGlsZXMoT3B0aW9uU2V0PFZhbGlkYXRpb25Qb2xp
Y3lGbGFnPiA9IHsgfSk7CiAKICAgICBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKQEAgLTkzLDIwICs5MywxNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKTsKICNlbmRpZgogCi0gICAgdHlw
ZWRlZiBJbnRQb2ludCBUaWxlSW5kZXg7CisgICAgdXNpbmcgVGlsZUluZGV4ID0gSW50UG9pbnQ7
CiAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFRpbGVDb2hvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IFRp
bGVDb2hvcnQgVmlzaWJsZVRpbGVDb2hvcnQgPSBVSU5UX01BWDsKKyAgICB1c2luZyBUaWxlQ29o
b3J0ID0gdW5zaWduZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBUaWxlQ29ob3J0IHZpc2libGVU
aWxlQ29ob3J0ID0gc3RkOjpudW1lcmljX2xpbWl0czxUaWxlQ29ob3J0Pjo6bWF4KCk7CiAKICAg
ICBzdHJ1Y3QgVGlsZUluZm8gewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXll
cjsKLSAgICAgICAgVGlsZUNvaG9ydCBjb2hvcnQ7IC8vIFZpc2libGVUaWxlQ29ob3J0IGlzIHZp
c2libGUuCi0gICAgICAgIGJvb2wgaGFzU3RhbGVDb250ZW50OwotCi0gICAgICAgIFRpbGVJbmZv
KCkKLSAgICAgICAgICAgIDogY29ob3J0KFZpc2libGVUaWxlQ29ob3J0KQotICAgICAgICAgICAg
LCBoYXNTdGFsZUNvbnRlbnQoZmFsc2UpCi0gICAgICAgIHsgfQorICAgICAgICBUaWxlQ29ob3J0
IGNvaG9ydCB7IHZpc2libGVUaWxlQ29ob3J0IH07CisgICAgICAgIGJvb2wgaGFzU3RhbGVDb250
ZW50IHsgZmFsc2UgfTsKICAgICB9OwogCiBwcml2YXRlOgpAQCAtMTU4LDE5ICsxNTMsMTYgQEAg
cHJpdmF0ZToKICAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogI2Vu
ZGlmCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBUaWxlSW5mbz4gVGlsZU1hcDsK
LSAgICBUaWxlTWFwIG1fdGlsZXM7CisgICAgSGFzaE1hcDxUaWxlSW5kZXgsIFRpbGVJbmZvPiBt
X3RpbGVzOwogCiAgICAgSW50UmVjdCBtX3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0OwogICAgIFZl
Y3RvcjxGbG9hdFJlY3Q+IG1fc2Vjb25kYXJ5VGlsZUNvdmVyYWdlUmVjdHM7CiAKLSAgICB0eXBl
ZGVmIERlcXVlPFRpbGVDb2hvcnRJbmZvPiBUaWxlQ29ob3J0TGlzdDsKLSAgICBUaWxlQ29ob3J0
TGlzdCBtX2NvaG9ydExpc3Q7CisgICAgRGVxdWU8VGlsZUNvaG9ydEluZm8+IG1fY29ob3J0TGlz
dDsKIAogICAgIFRpbWVyIG1fY29ob3J0UmVtb3ZhbFRpbWVyOwogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPFBsYXRmb3JtQ0FMYXllciosIGludD4gUmVwYWludENvdW50TWFwOwotICAgIFJlcGFpbnRD
b3VudE1hcCBtX3RpbGVSZXBhaW50Q291bnRzOworICAgIEhhc2hDb3VudGVkU2V0PFBsYXRmb3Jt
Q0FMYXllcio+IG1fdGlsZVJlcGFpbnRDb3VudHM7CiAgICAgCiAgICAgSW50U2l6ZSBtX3RpbGVT
aXplOwogCkBAIC0xNzgsNCArMTcwLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZp
bHRlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KaW5kZXggMDAwZDkzNzAzNzRiYmE5YjQ1YWFmNWRi
MzdlZTM2OWJiNzUwNzM0Ny4uZDRmYTNjNGJmYWQzNGFhZjMwOTNhOWYwMjQ4NmJiNzI3Zjk4ZDRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC03MSw3ICs3MSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5
ZXIqIGxheWVyLCBjb25zdCBGaWx0ZXJPcGVyCiAKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBh
dXRvIGFycmF5ID0gY3JlYXRlTlNBcnJheShmaWx0ZXJzLm9wZXJhdGlvbnMoKSwgWyZdIChhdXRv
JiBvcGVyYXRpb25QdHIpIC0+IGlkIHsKLSAgICAgICAgU3RyaW5nIGZpbHRlck5hbWUgPSBtYWtl
U3RyaW5nKCJmaWx0ZXJfIiwgaSsrKTsKKyAgICAgICAgYXV0byBmaWx0ZXJOYW1lID0gbWFrZVN0
cmluZygiZmlsdGVyXyIsIGkrKyk7CiAgICAgICAgIGF1dG8mIGZpbHRlck9wZXJhdGlvbiA9ICpv
cGVyYXRpb25QdHI7CiAgICAgICAgIHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSkgewog
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6REVGQVVMVDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5k
ZXggOWVlNjg4MTU4MmU3NWI0YmQ2NTMyYjkyNWY3ZWZjMDU4M2Q0MzBhNi4uMzdkMWE0NDk5YTg3
NmM2NjBlZmMyMzUxNGUxYmMxZTQ4M2EzM2Q3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTM1MSw3
ICszNTEsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgRmxvYXRQb2ludCB0aW1lTG9jYXRpb24oY2FwdHVyZVNp
emUud2lkdGgoKSAqIC4wNSwgY2FwdHVyZVNpemUuaGVpZ2h0KCkgKiAuMTUpOwogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CiAgICAgY29udGV4dC5zZXRUZXh0RHJhd2lu
Z01vZGUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gbWFrZVN0
cmluZyhwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWludXRlcyksICc6Jywg
cGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywgMywgbWlsbGlzZWNvbmRzICUgMTAw
MCkpOworICAgIGF1dG8gc3RyaW5nID0gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBob3VycyksICc6
JywgcGFkKCcwJywgMiwgbWludXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywg
cGFkKCcwJywgMywgbWlsbGlzZWNvbmRzICUgMTAwMCkpOwogICAgIGNvbnRleHQuZHJhd1RleHQo
dGltZUZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCB0aW1lTG9jYXRpb24pOwog
CiAgICAgc3RyaW5nID0gbWFrZVN0cmluZyhwYWQoJzAnLCA2LCBtX2ZyYW1lTnVtYmVyKyspKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JN
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2Nr
LmNwcAppbmRleCBkNGVlMGQ0MTM5Y2YzYzk4MzJjMGUwNmRjNDg4NTYxYjcwYWM0NzY4Li4yMjYx
NThjZmNkNDljNTliMGY4YmQwNzA0NWJlNTliNDg1OWJmYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JNb2NrLmgiCiAKICNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Niw1MyArODUsMjYgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ck1vY2s6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEoKQogICAgIFNjcm9sbEFuaW1hdG9yOjptb3Vz
ZUV4aXRlZENvbnRlbnRBcmVhKCk7CiB9CiAKK2NvbnN0IGNoYXIqIFNjcm9sbEFuaW1hdG9yTW9j
azo6c2Nyb2xsYmFyUHJlZml4KFNjcm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAoreworICAgIHJl
dHVybiBzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhciA/ICJWZXJ0aWNhbCIgOiBzY3Jv
bGxiYXIgPT0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyID8gIkhvcml6b250YWwiIDogIlVua25vd24i
OworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yTW9jazo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsK
LSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIm1vdXNlRW50ZXJlZCIpOwotICAgIGlmIChzY3Jv
bGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRl
cmFsKCJWZXJ0aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBtX2hvcml6b250YWxT
Y3JvbGxiYXIpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9yaXpvbnRhbCIpOwot
ICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtub3duIik7Ci0gICAg
bWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xvZ2dlcihtZXNzYWdl
LnRvU3RyaW5nKCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoIm1vdXNlRW50ZXJlZCIsIHNj
cm9sbGJhclByZWZpeChzY3JvbGxiYXIpLCAiU2Nyb2xsYmFyIikpOwogICAgIFNjcm9sbEFuaW1h
dG9yOjptb3VzZUVudGVyZWRTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKIH0KIAogdm9pZCBTY3JvbGxB
bmltYXRvck1vY2s6Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSBj
b25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExp
dGVyYWwoIm1vdXNlRXhpdGVkIik7Ci0gICAgaWYgKHNjcm9sbGJhciA9PSBtX3ZlcnRpY2FsU2Ny
b2xsYmFyKQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIlZlcnRpY2FsIik7Ci0gICAg
ZWxzZSBpZiAoc2Nyb2xsYmFyID09IG1faG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJIb3Jpem9udGFsIik7Ci0gICAgZWxzZQotICAgICAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIlVua25vd24iKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwo
IlNjcm9sbGJhciIpOwotICAgIG1fbG9nZ2VyKG1lc3NhZ2UudG9TdHJpbmcoKSk7CisgICAgbV9s
b2dnZXIobWFrZVN0cmluZygibW91c2VFeGl0ZWQiLCBzY3JvbGxiYXJQcmVmaXgoc2Nyb2xsYmFy
KSwgIlNjcm9sbGJhciIpKTsKICAgICBTY3JvbGxBbmltYXRvcjo6bW91c2VFeGl0ZWRTY3JvbGxi
YXIoc2Nyb2xsYmFyKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvck1vY2s6Om1vdXNlSXNEb3du
SW5TY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgaXNQcmVzc2VkKSBjb25zdAog
ewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwo
Im1vdXNlSXMiKTsKLSAgICBpZiAoaXNQcmVzc2VkKQotICAgICAgICBtZXNzYWdlLmFwcGVuZExp
dGVyYWwoIkRvd24iKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
VXAiKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIkluIik7Ci0gICAgaWYgKHNjcm9sbGJh
ciA9PSBtX3ZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwo
IlZlcnRpY2FsIik7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsYmFyID09IG1faG9yaXpvbnRhbFNjcm9s
bGJhcikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJIb3Jpem9udGFsIik7Ci0gICAg
ZWxzZQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIlVua25vd24iKTsKLSAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIlNjcm9sbGJhciIpOwotICAgIG1fbG9nZ2VyKG1lc3NhZ2UudG9T
dHJpbmcoKSk7CisgICAgbV9sb2dnZXIobWFrZVN0cmluZyhpc1ByZXNzZWQgPyAibW91c2VJc0Rv
d25JbiIgOiAibW91c2VJc1VwSW4iLCBzY3JvbGxiYXJQcmVmaXgoc2Nyb2xsYmFyKSwgIlNjcm9s
bGJhciIpKTsKICAgICBTY3JvbGxBbmltYXRvcjo6bW91c2VJc0Rvd25JblNjcm9sbGJhcihzY3Jv
bGxiYXIsIGlzUHJlc3NlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCmluZGV4IDQ2Y2VhMDYzZGQ3NjQwMjk2NWI4ZDUzNWZi
ZDAyYWEwZDMzNTk4ZTcuLmY5NzIxYThmNjIyYzg5ZTU0NmQ5ZWJiYWNkOTgyMTBmODMxMWI5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JN
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1v
Y2suaApAQCAtNjgsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbW91c2VFbnRlcmVkU2Ny
b2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbW91c2VFeGl0ZWRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBtb3VzZUlzRG93
bkluU2Nyb2xsYmFyKFNjcm9sbGJhciosIGJvb2wpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0
IGNoYXIqIHNjcm9sbGJhclByZWZpeChTY3JvbGxiYXIqKSBjb25zdDsKIAogICAgIFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CiAgICAgU2Nyb2xsYmFyKiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAppbmRleCBhYjllZGQ5YjQ3NDcwMTVmZWQzNmE4OWYx
ZDNiMDViMzdmMTA1MTNhLi4zNmFkZjA1ZDk2ODZmMDhjZWVjZTc0NmI1NjE4MzJhZGFkODAzOWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNw
cApAQCAtMzcsMTcgKzM3LDE2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFByb3h5U2VydmVyU3RyaW5n
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFByb3h5U2VydmVyJiBwCiAKICAgICBzd2l0
Y2ggKHByb3h5U2VydmVyLnR5cGUoKSkgewogICAgIGNhc2UgUHJveHlTZXJ2ZXI6OkRpcmVjdDoK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJESVJFQ1QiKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgiRElSRUNUIik7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUHJveHlTZXJ2ZXI6OkhUVFA6CiAgICAgY2FzZSBQcm94eVNlcnZlcjo6SFRUUFM6Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJPWFkiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIlBST1hZICIsIHByb3h5U2VydmVyLmhvc3ROYW1lKCksICc6JywgcHJveHlTZXJ2ZXIu
cG9ydCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm94eVNlcnZlcjo6U09DS1M6Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU09DS1MiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoIlNPQ0tTICIsIHByb3h5U2VydmVyLmhvc3ROYW1lKCksICc6JywgcHJveHlTZXJ2ZXIu
cG9ydCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfSAgICAKLSAgICBidWlsZGVyLmFwcGVuZCgn
ICcsIHByb3h5U2VydmVyLmhvc3ROYW1lKCksICc6JywgcHJveHlTZXJ2ZXIucG9ydCgpKTsKKyAg
ICB9CiB9CiAKIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94
eVNlcnZlcnMpCkBAIC01OCwxMyArNTcsMTAgQEAgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFZlY3Rv
cjxQcm94eVNlcnZlcj4mIHByb3h5U2VydmVycykKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm94eVNlcnZlcnMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIjsgIik7Ci0KKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCI7ICIpOwog
ICAgICAgICBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhzdHJpbmdCdWlsZGVyLCBwcm94eVNlcnZl
cnNbaV0pOwogICAgIH0KLQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCAxZjA5MmQ4
ZDU4ZGM5Y2ZkMGRiY2I0NzIyNDdiNDI4OWE2MTkwYzlhLi5hYTkxNjJlNDkwZmVmNjEwNjkxZGUy
NDY5NDNkMzFkODJhMWUyZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMzA3LDExICszMDcsMTAg
QEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmkKICAgICBpZiAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gc3VnZ2VzdGVkRmlsZW5hbWU7CiAKLSAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCh7IH0sICJodHRwOi8vZXhhbXBsZS5jb20vIiksIFN0cmlu
ZygpLCAtMSwgU3RyaW5nKCkpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB7IHsg
fSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iX3MgfSwgeyB9LCAtMSwgeyB9IH07CiAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICBTdHJpbmcgZXNjYXBlZFN1Z2dlc3RlZEZp
bGVuYW1lID0gU3RyaW5nKHN1Z2dlc3RlZEZpbGVuYW1lKS5yZXBsYWNlKCdcXCcsICJcXFxcIiku
cmVwbGFjZSgnIicsICJcXFwiIik7Ci0gICAgU3RyaW5nIHZhbHVlID0gbWFrZVN0cmluZygiYXR0
YWNobWVudDsgZmlsZW5hbWU9XCIiLCBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUsICciJyk7Ci0g
ICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlz
cG9zaXRpb24sIHZhbHVlKTsKKyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbiwgbWFrZVN0cmluZygiYXR0YWNobWVudDsgZmls
ZW5hbWU9XCIiLCBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUsICciJykpOwogICAgIHJldHVybiBy
ZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAK
aW5kZXggNDliZGFkNzA0MTM2YWVlODYzZDAyOTkyMmE0MjNjYmU0Y2NjNzY5Ny4uYTIyMzMyMDBj
NzAxYTM2Zjk1MzM1NjU4MTJmNTVhZTRkZTIwMGMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9uLmNw
cApAQCAtMjcsOCArMjcsNyBAQAogI2luY2x1ZGUgIlVzZXJBZ2VudC5oIgogCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiAvLyBXQVJOSU5HISBXQVJOSU5HISBXQVJOSU5HIQogLy8KQEAgLTU5LDUxICs1
OCwxNyBAQCBzdGF0aWMgU3RyaW5nIGdldFN5c3RlbVNvZnR3YXJlVmVyc2lvbigpCiAgICAgcmV0
dXJuICIwLjAwIjsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybUZvclVBU3RyaW5n
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YVN5c3RlbVNv
ZnR3YXJlTmFtZShnZXRTeXN0ZW1Tb2Z0d2FyZU5hbWUoKSk7Ci0gICAgcmV0dXJuIHVhU3lzdGVt
U29mdHdhcmVOYW1lOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtVmVyc2lvbkZv
clVBU3RyaW5nKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1
YVN5c3RlbVNvZnR3YXJlVmVyc2lvbihnZXRTeXN0ZW1Tb2Z0d2FyZVZlcnNpb24oKSk7Ci0gICAg
cmV0dXJuIHVhU3lzdGVtU29mdHdhcmVWZXJzaW9uOwotfQotCiBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIqIHZlcnNpb25Gb3JVQVN0cmluZygpCiB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDM2NQogICAgIHJldHVybiAiNjA1LjEuMTUiOwog
fQogCi1zdGF0aWMgU3RyaW5nIGJ1aWxkVXNlckFnZW50U3RyaW5nKCkKK3N0YXRpYyBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKQogewotICAgIFN0cmluZ0J1aWxkZXIgdWFTdHJpbmc7
Ci0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiTW96aWxsYS81LjAgIik7Ci0gICAgdWFTdHJp
bmcuYXBwZW5kKCcoJyk7Ci0KLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJQbGF5U3RhdGlv
bjsgIik7Ci0KLSAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1Gb3JVQVN0cmluZygpKTsKLSAg
ICB1YVN0cmluZy5hcHBlbmQoJy8nKTsKLSAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1WZXJz
aW9uRm9yVUFTdHJpbmcoKSk7Ci0KLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxl
V2ViS2l0LyIpOwotICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0g
ICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7Ci0KICAg
ICAvLyBWZXJzaW9uL1ggaXMgbWFuZGF0b3J5ICpiZWZvcmUqIFNhZmFyaS9YIHRvIGJlIGEgdmFs
aWQgU2FmYXJpIFVBLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMzNDAzIGZvciBkZXRhaWxzLgotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwo
IlZlcnNpb24vMTQuMCBTYWZhcmkvIik7Ci0gICAgdWFTdHJpbmcuYXBwZW5kKHZlcnNpb25Gb3JV
QVN0cmluZygpKTsKLQotICAgIHJldHVybiB1YVN0cmluZy50b1N0cmluZygpOwotfQotCi1zdGF0
aWMgY29uc3QgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YVN0YXRpYyhidWlsZFVzZXJBZ2VudFN0cmlu
ZygpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB1YVN0YXRpYyhtYWtlU3Ry
aW5nKCJNb3ppbGxhLzUuMCAoUGxheVN0YXRpb247ICIsIGdldFN5c3RlbVNvZnR3YXJlTmFtZSgp
LCAnLycsIGdldFN5c3RlbVNvZnR3YXJlVmVyc2lvbigpLCAiKSBBcHBsZVdlYktpdC8iLCB2ZXJz
aW9uRm9yVUFTdHJpbmcoKSwgIiAoS0hUTUwsIGxpa2UgR2Vja28pICIsICJWZXJzaW9uLzE0LjAg
U2FmYXJpLyIsIHZlcnNpb25Gb3JVQVN0cmluZygpKTsKICAgICByZXR1cm4gdWFTdGF0aWM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmlu
ZGV4IDE1NzdhYTYxYjJmNTY5YjJkMTY3MmNiMjcxNzNjMmE4NmRlNGUwMWEuLjM3YjY3MDE1NmQw
NThkMDI0OTU2YjJlZmQ3NGMyZjdkNGVkMTNhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgU1FM
aXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1v
ZGUpCiAgICAgaWYgKG9wZW5Nb2RlICE9IE9wZW5Nb2RlOjpSZWFkT25seSkKICAgICAgICAgdXNl
V0FMSm91cm5hbE1vZGUoKTsKIAotICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmco
ZmlsZW5hbWUsICItc2htIl9zKTsKKyAgICBhdXRvIHNobUZpbGVOYW1lID0gbWFrZVN0cmluZyhm
aWxlbmFtZSwgIi1zaG0iX3MpOwogICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHNobUZp
bGVOYW1lKSkgewogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzU2FmZVRvVXNlTWVtb3J5TWFw
Rm9yUGF0aChzaG1GaWxlTmFtZSkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKFNR
TERhdGFiYXNlLCAiT3BlbmVkIGFuIFNRTGl0ZSBkYXRhYmFzZSB3aXRoIGEgQ2xhc3MgQSAtc2ht
IGZpbGUuIFRoaXMgbWF5IHRyaWdnZXIgYSBjcmFzaCB3aGVuIHRoZSB1c2VyIGxvY2tzIHRoZSBk
ZXZpY2UuICglcykiLCBzaG1GaWxlTmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IGE3YTIwMjFk
Njg5ZWE0MTBjZjdhYjAyMWZmOWM2YzRmZTQ3NDMzMWQuLjZjM2QzYThkZjYwODBlYTM5ZWI3MmY1
MWNjN2VhNzQzNDBhYzVjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTc5LDggKzc5LDggQEAgYm9vbCBTUUxpdGVGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIAog
Ym9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKIHsKLSAgICBTdHJpbmcgd2FsRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1l
LCAiLXdhbCJfcyk7Ci0gICAgU3RyaW5nIHNobUZpbGVOYW1lID0gbWFrZVN0cmluZyhmaWxlTmFt
ZSwgIi1zaG0iX3MpOworICAgIGF1dG8gd2FsRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1l
LCAiLXdhbCJfcyk7CisgICAgYXV0byBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUs
ICItc2htIl9zKTsKIAogICAgIC8vIFRyeSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdoZXRo
ZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJlLgogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmls
ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGlt
ZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
LmNwcAppbmRleCBjNzVkMzNkNmZmODQ3NmVmYTMyZGI4NDRlNmFmOTIyNDQ2NzZjZTc5Li40M2Ex
OGJjZWEwMTc5NjMwYjkwZWVkYzYyNjQyYjNkYTc3ZTBiMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcApAQCAtMjU1LDIzICsyNTUsMTcg
QEAgdm9pZCBEYXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFsKGNvbnN0IFN0cmlu
ZyYgbGl0ZXJhbCwgU3RyaW5nQnVpbGRlciYKICAgICAgICAgYnVmZmVyLmFwcGVuZChsaXRlcmFs
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChsaXRlcmFsLmZpbmQo
J1wnJykgPT0gbm90Rm91bmQpIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnKTsKLSAgICAg
ICAgYnVmZmVyLmFwcGVuZChsaXRlcmFsKTsKLSAgICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnKTsK
KyAgICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnLCBsaXRlcmFsLCAnXCcnKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXRlcmFsLmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgaWYgKGxpdGVyYWxbaV0gPT0gJ1wnJykKLSAgICAgICAgICAg
IGJ1ZmZlci5hcHBlbmRMaXRlcmFsKCInJyIpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgi
JyciKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgZXNjYXBlZCA9IGxpdGVy
YWwuc3Vic3RyaW5nKGkpOwotICAgICAgICAgICAgZXNjYXBlZC5yZXBsYWNlKCdcJycsICInJyIp
OwotICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnKTsKLSAgICAgICAgICAgIGJ1ZmZlci5h
cHBlbmQoZXNjYXBlZCk7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcJycpOworICAgICAg
ICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnLCBTdHJpbmcgeyBsaXRlcmFsLnN1YnN0cmluZyhpKSB9
LnJlcGxhY2UoJ1wnJywgIicnIiksICdcJycpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNDSksuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksu
Y3BwCmluZGV4IGVlMWZmOGViM2Q3OWViNzYwMjk1MGRhOTYyNDY5NDY1NTk0ZDIwYjUuLmZjMmE5
MjExMDAyMGQ1OWU0M2E4MzBhZTM0NTQxMDJiNzc5NzI0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKQEAgLTEwNTIsOSArMTA1Miw5IEBAIGNv
bnN0ZXhwciBzaXplX3QgbWF4VUNoYXIzMkRpZ2l0cyA9IDEwOwogCiBzdGF0aWMgdm9pZCBhcHBl
bmREZWNpbWFsKFVDaGFyMzIgYywgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCiB7Ci0gICAgdWlu
dDhfdCBidWZmZXJbMTBdOwotICAgIFdURjo6d3JpdGVJbnRlZ2VyVG9CdWZmZXIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGMpLCBidWZmZXIpOwotICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLCBXVEY6
Omxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKGMpKTsKKyAgICB1aW50OF90IGJ1ZmZlcltsZW5ndGhP
ZkludGVnZXJBc1N0cmluZyhzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKGMpPjo6bWF4KCkp
XTsKKyAgICB3cml0ZUludGVnZXJUb0J1ZmZlcihjLCBidWZmZXIpOworICAgIHJlc3VsdC5hcHBl
bmQoYnVmZmVyLCBsZW5ndGhPZkludGVnZXJBc1N0cmluZyhjKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHVybEVuY29kZWRFbnRpdHlVbmVuY29kYWJsZUhhbmRsZXIoVUNoYXIzMiBjLCBWZWN0b3I8dWlu
dDhfdD4mIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggODc4OWYxMWMzNjQzOTk5YzMwZGZkYjFjOWI5
MzlhZTQ1YmIwYTUxZi4uM2U5N2U4MDRlMTE1ZTBlMzc4MTRkZGY2NzBlOWUzYmE0YjNiYmM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhTdHJpbmcmIHN0cikKICAgICAgICAgaWYgKHN0cltpbmRleF0g
IT0gJ1xuJyB8fCAoaW5kZXggPiAwICYmIHN0cltpbmRleCAtIDFdID09ICdccicpKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChzdHJbaW5kZXhdKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIlxyXG4iKTsKICAgICB9CiAgICAgc3RyID0gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Vc2VyQWdlbnRXaW4uY3BwCmluZGV4IGZjNDVmZjAy
YmExY2RkYmViZWU0ZWJjM2ZiZDI2MzM0YTMzYmIyODMuLmZlYWQ1NDFiYWI2ZDFlMGJkNjM3ZjAz
OWQxN2RjMzM3MjkyMjJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9Vc2VyQWdlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Vc2Vy
QWdlbnRXaW4uY3BwCkBAIC0yNywyNiArMjcsMTUgQEAKICNpbmNsdWRlICJVc2VyQWdlbnQuaCIK
IAogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25WZXJzaW9uKQogewotICAg
IFN0cmluZ0J1aWxkZXIgdWFTdHJpbmc7Ci0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiTW96
aWxsYS81LjAgKCIpOwotICAgIHVhU3RyaW5nLmFwcGVuZCh3aW5kb3dzVmVyc2lvbkZvclVBU3Ry
aW5nKCkpOwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODAzNjUKLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxlV2ViS2l0LzYwNS4xLjE1
IChLSFRNTCwgbGlrZSBHZWNrbykiKTsKLSAgICBpZiAoIWFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiICIpOwotICAgICAgICB1YVN0
cmluZy5hcHBlbmQoYXBwbGljYXRpb25OYW1lKTsKLSAgICAgICAgaWYgKCFhcHBsaWNhdGlvblZl
cnNpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIv
Iik7Ci0gICAgICAgICAgICB1YVN0cmluZy5hcHBlbmQoYXBwbGljYXRpb25WZXJzaW9uKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKKyAgICBhdXRv
IHZlcnNpb24gPSBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IGFw
cGxpY2F0aW9uVmVyc2lvbjsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIs
IHdpbmRvd3NWZXJzaW9uRm9yVUFTdHJpbmcoKSwgIikgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtI
VE1MLCBsaWtlIEdlY2tvKSIsCisgICAgICAgIGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAi
IiA6ICIgIiwgYXBwbGljYXRpb25OYW1lLCB2ZXJzaW9uLmlzRW1wdHkoKSA/ICIiLCAiLyIsIHZl
cnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxN2IyYzgzNGQwZWNlYTJkYzIyMjUyMDA5ODBjYTA0
Yjc5YTA4YWYwLi5lODBkNWU3MDMyY2NhZTJmZjI0MGE0ZDFiMTk2M2Q0ZTU3YTNlNDU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTgxMywxMyArODEzLDkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCkKIAogU3RyaW5n
IFJlbmRlckxheWVyOjpuYW1lKCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG5hbWU7Ci0g
ICAgbmFtZS5hcHBlbmQocmVuZGVyZXIoKS5kZXNjcmlwdGlvbigpKTsKLQotICAgIGlmIChpc1Jl
ZmxlY3Rpb24oKSkKLSAgICAgICAgbmFtZS5hcHBlbmRMaXRlcmFsKCIgKHJlZmxlY3Rpb24pIik7
Ci0KLSAgICByZXR1cm4gbmFtZS50b1N0cmluZygpOworICAgIGlmICghaXNSZWZsZWN0aW9uKCkp
CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLmRlYnVnRGVzY3JpcHRpb24oKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhyZW5kZXJlcigpLmRlYnVnRGVzY3JpcHRpb24oKSwgIiAocmVmbGVjdGlv
bikiKTsKIH0KIAogUmVuZGVyTGF5ZXJDb21wb3NpdG9yJiBSZW5kZXJMYXllcjo6Y29tcG9zaXRv
cigpIGNvbnN0CkBAIC0yNzUzLDMyICsyNzQ5LDIxIEBAIFJlbmRlckxheWVyOjpPdmVyZmxvd0Nv
bnRyb2xSZWN0cyBSZW5kZXJMYXllcjo6b3ZlcmZsb3dDb250cm9sc1JlY3RzKCkgY29uc3QKIAog
U3RyaW5nIFJlbmRlckxheWVyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIlJlbmRlckxheWVyIDB4Il9z
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBMb3dlcmNhc2UpLCAnICcs
IHNpemUoKS53aWR0aCgpLCAneCcsIHNpemUoKS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAodHJhbnNm
b3JtKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaGFzIHRyYW5zZm9ybSJfcyk7Ci0KLSAg
ICBpZiAoaGFzRmlsdGVyKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaGFzIGZpbHRlciJf
cyk7Ci0KLSAgICBpZiAoaGFzQmFja2Ryb3BGaWx0ZXIoKSkKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiBoYXMgYmFja2Ryb3AgZmlsdGVyIl9zKTsKLQotICAgIGlmIChoYXNCbGVuZE1vZGUoKSkK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBoYXMgYmxlbmQgbW9kZSJfcyk7Ci0KLSAgICBpZiAo
aXNvbGF0ZXNCbGVuZGluZygpKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGlzb2xhdGVzIGJs
ZW5kaW5nIl9zKTsKLQorICAgIFN0cmluZyBjb21wb3NpdGVkRGVzY3JpcHRpb247CiAgICAgaWYg
KGlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgIC8vIE9oIGZvciBiZXR0ZXIgU3RyaW5nQnVpbGRl
ci9UZXh0U3RyZWFtIGludGVncmF0aW9uLgogICAgICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKICAg
ICAgICAgc3RyZWFtIDw8ICIgIiA8PCAqYmFja2luZygpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZChzdHJlYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgY29tcG9zaXRlZERlc2NyaXB0aW9uID0gc3Ry
ZWFtLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJSZW5kZXJMYXllciAweCIsIGhleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odGhpcyksIExvd2VyY2FzZSksCisgICAgICAgICcgJywgc2l6ZSgpLndp
ZHRoKCksICd4Jywgc2l6ZSgpLmhlaWdodCgpLAorICAgICAgICB0cmFuc2Zvcm0oKSA/ICIgaGFz
IHRyYW5zZm9ybSIgOiAiIiwKKyAgICAgICAgaGFzRmlsdGVyKCkgPyAiIGhhcyBmaWx0ZXIiIDog
IiIsCisgICAgICAgIGhhc0JhY2tkcm9wRmlsdGVyKCkgPyAiIGhhcyBiYWNrZHJvcCBmaWx0ZXIi
IDogIiIsCisgICAgICAgIGhhc0JsZW5kTW9kZSgpID8gIiBoYXMgYmxlbmQgbW9kZSIgOiAiIiwK
KyAgICAgICAgaXNvbGF0ZXNCbGVuZGluZygpID8gIiBpc29sYXRlcyBibGVuZGluZyIgOiAiIiwK
KyAgICAgICAgY29tcG9zaXRlZERlc2NyaXB0aW9uKTsKIH0KIAogSW50U2l6ZSBSZW5kZXJMYXll
cjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAKaW5kZXggNGU3Nzg0NTk5MjMxNDJhODk2YTk5N2ViN2VjYmM5NWJiOGJlOGQ4ZS4uMzM2
ODE2YTEwODc0Mjk2NDhmYTcyODk5OGIzNzI1M2E1NzBhNDQ4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE1NDEsNDcg
KzE1NDEsMzggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyhjb25z
dCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IGNoYXIqIHAKIAogICAgIGlmIChiYWNraW5nLT5n
cmFwaGljc0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkgfHwgYmFja2luZy0+cGFpbnRzSW50b0Nv
bXBvc2l0ZWRBbmNlc3RvcigpIHx8IGJhY2tpbmctPmZvcmVncm91bmRMYXllcigpIHx8IGJhY2tp
bmctPmJhY2tncm91bmRMYXllcigpKSB7CiAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoJ1snKTsK
LSAgICAgICAgYm9vbCBwcmVwZW5kU3BhY2UgPSBmYWxzZTsKKworICAgICAgICBjb25zdCBjaGFy
KiBwcmVmaXggPSAiIjsKICAgICAgICAgaWYgKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+Y29u
dGVudHNPcGFxdWUoKSkgewotICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIm9w
YXF1ZSIpOwotICAgICAgICAgICAgcHJlcGVuZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgIGxv
Z1N0cmluZy5hcHBlbmQoIm9wYXF1ZSIpOworICAgICAgICAgICAgcHJlZml4ID0gIiwgIjsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChiYWNraW5nLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2Vz
dG9yKCkpIHsKLSAgICAgICAgICAgIGlmIChwcmVwZW5kU3BhY2UpCi0gICAgICAgICAgICAgICAg
bG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKLSAgICAgICAgICAgIHByZXBlbmRT
cGFjZSA9IHRydWU7CisgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKHByZWZpeCwgInBhaW50
cyBpbnRvIGFuY2VzdG9yIik7CisgICAgICAgICAgICBwcmVmaXggPSAiLCAiOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGJhY2tpbmctPmZvcmVncm91bmRMYXllcigpIHx8IGJhY2tpbmctPmJh
Y2tncm91bmRMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAocHJlcGVuZFNwYWNlKQotICAgICAg
ICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAgaWYg
KGJhY2tpbmctPmZvcmVncm91bmRMYXllcigpICYmIGJhY2tpbmctPmJhY2tncm91bmRMYXllcigp
KSB7Ci0gICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIitmb3JlZ3JvdW5k
K2JhY2tncm91bmQiKTsKLSAgICAgICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQocHJlZml4LCAiK2ZvcmVncm91bmQrYmFja2dy
b3VuZCIpOworICAgICAgICAgICAgICAgIHByZWZpeCA9ICIsICI7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGJhY2tpbmctPmZvcmVncm91bmRMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgbG9n
U3RyaW5nLmFwcGVuZExpdGVyYWwoIitmb3JlZ3JvdW5kIik7Ci0gICAgICAgICAgICAgICAgcHJl
cGVuZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKHByZWZp
eCwgIitmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICAgICAgcHJlZml4ID0gIiwgIjsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwo
IitiYWNrZ3JvdW5kIik7Ci0gICAgICAgICAgICAgICAgcHJlcGVuZFNwYWNlID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKHByZWZpeCwgIitiYWNrZ3JvdW5kIik7Cisg
ICAgICAgICAgICAgICAgcHJlZml4ID0gIiwgIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKGJhY2tpbmctPnBhaW50c1N1YnBpeGVsQW50aWFsaWFzZWRU
ZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChwcmVwZW5kU3BhY2UpCi0gICAgICAgICAgICAgICAg
bG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgidGV4dHkiKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYmFja2luZy0+cGFp
bnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRleHQoKSkKKyAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBl
bmQocHJlZml4LCAidGV4dHkiKTsKIAotICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
XSAiKTsKKyAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgiXSAiKTsKICAgICB9CiAKLSAgICBsb2dT
dHJpbmcuYXBwZW5kKGxheWVyLm5hbWUoKSk7Ci0KLSAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiIC0gIik7Ci0gICAgbG9nU3RyaW5nLmFwcGVuZChwaGFzZSk7CisgICAgbG9nU3RyaW5nLmFw
cGVuZChsYXllci5uYW1lKCksICIgLSAiLCBwaGFzZSk7CiAKICAgICBMT0coQ29tcG9zaXRpbmcs
ICIlcyIsIGxvZ1N0cmluZy50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDcyNDc3NGFmM2Fh
YmMwNzNjMTA5YjZiZDg0MTAwZTI2NTgxZjFjNmMuLjgxNzAyZjQ1ZDRjMTZjMDliNmI1NzU0NWI4
ZjkxZDFkYjZmNWVlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKQEAgLTE1NSwxOSArMTU1LDE2IEBAIFN0cmluZyBxdW90ZUFuZEVzY2FwZU5v
blByaW50YWJsZXMoU3RyaW5nVmlldyBzKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
cy5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSBzW2ldOwogICAgICAgICBpZiAo
YyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXFxcXCIpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXFxcXCIpOwogICAgICAgICB9IGVsc2UgaWYgKGMg
PT0gJyInKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXFxcIiIpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXFxcIiIpOwogICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
J1xuJyB8fCBjID09IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAn
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoYyA+PSAweDIwICYmIGMgPCAweDdG
KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXFx4eyIpOwotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KGMpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd9Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiXFx4eyIsIGhleChjKSwgJ30nKTsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXN1bHQuYXBwZW5kKCciJyk7CkBAIC04MjQsMTEgKzgyMSwxMSBAQCBzdGF0aWMgU3Ry
aW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG47
IG4gPSBwYXJlbnQpIHsKICAgICAgICAgcGFyZW50ID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpOwogICAgICAgICBpZiAobiAhPSBub2RlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiBvZiAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiBvZiAiKTsKICAgICAg
ICAgaWYgKHBhcmVudCkgewogICAgICAgICAgICAgaWYgKGJvZHkgJiYgbiA9PSBib2R5KSB7CiAg
ICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSB3aGF0IG9mZnNldCBib2R5IG1heSBiZSBp
biB0aGUgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImJv
ZHkiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJib2R5Iik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobi0+aXNTaGFkb3dS
b290KCkpCkBAIC04MzYsNyArODMzLDcgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCJjaGlsZCAiLCBuLT5jb21wdXRlTm9kZUluZGV4KCksICIgeyIsIGdldFRhZ05hbWUobiksICd9
Jyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImRv
Y3VtZW50Iik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJkb2N1bWVudCIpOwogICAgIH0K
IAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwCmluZGV4IDQ4M2JmNjllZWUyOGNlYzExY2M1YmJjMGMxYWY5
ZmZmMDZiNWFkNzMuLjdhYTcyYmQ4YWY2Y2VmZGVjZTAwY2RjMzgyMmJkYTdmOWQ0MzZiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcApAQCAtNjksOSAr
NjksOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQb2ludChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6
Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCwgUGF0aENvb3JkaW5h
dGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIk0gIik7CisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIk0gIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
bSAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgdGFyZ2V0UG9pbnQpOwog
fQpAQCAtNzksOSArNzksOSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8oY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZAogdm9pZCBTVkdQYXRo
U3RyaW5nQnVpbGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRo
Q29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5h
dGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTCAiKTsKKyAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiTCAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJsICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJsICIpOwogCiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCB0YXJnZXRQ
b2ludCk7CiB9CkBAIC04OSw5ICs4OSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6Omxp
bmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNCiB2b2lk
IFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJIICIpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJIICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoImggIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoImggIik7CiAKICAgICBhcHBlbmROdW1iZXIobV9zdHJpbmdCdWlsZGVyLCB4KTsKIH0KQEAg
LTk5LDkgKzk5LDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvSG9yaXpvbnRh
bChmbG9hdCB4LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1
aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQog
ewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJWICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJWICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoInYgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInYgIik7CiAKICAgICBh
cHBlbmROdW1iZXIobV9zdHJpbmdCdWlsZGVyLCB5KTsKIH0KQEAgLTEwOSw5ICsxMDksOSBAQCB2
b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbChmbG9hdCB5LCBQYXRoQ29v
cmRpbmF0ZU1vZGUgbW9kZSkKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJp
Yyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJDICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJDICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
ImMgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImMgIik7CiAKICAgICBhcHBl
bmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHBvaW50MSk7CiAgICAgYXBwZW5kUG9pbnQobV9zdHJp
bmdCdWlsZGVyLCBwb2ludDIpOwpAQCAtMTIxLDkgKzEyMSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmlu
Z0J1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZs
b2F0UG9pCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0
aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGlu
YXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlMgIik7CisgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIlMgIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicyAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgicyAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgcG9pbnQy
KTsKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHRhcmdldFBvaW50KTsKQEAgLTEz
Miw5ICsxMzIsOSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9v
dGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbAogdm9pZCBTVkdQYXRoU3RyaW5n
QnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAg
ICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiUSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
USAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJx
ICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJxICIpOwogCiAgICAgYXBwZW5k
UG9pbnQobV9zdHJpbmdCdWlsZGVyLCBwb2ludDEpOwogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5n
QnVpbGRlciwgdGFyZ2V0UG9pbnQpOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBj
b25zdCBGbG9hCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21v
b3RoKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9k
ZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVCAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiVCAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJ0ICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ0ICIpOwogCiAg
ICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCB0YXJnZXRQb2ludCk7CiB9CkBAIC0xNTMs
OSArMTUzLDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpY1Nt
b290aChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1
aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VB
cmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBICIpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJBICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImEgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoImEgIik7CiAKICAgICBhcHBlbmROdW1iZXIobV9zdHJpbmdCdWlsZGVyLCByMSk7
CiAgICAgYXBwZW5kTnVtYmVyKG1fc3RyaW5nQnVpbGRlciwgcjIpOwpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwg
ZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGCiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6
OmNsb3NlUGF0aCgpCiB7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlogIik7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiWiAiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyMmNlNTVkODE1
MjY4ZWFjNjdmYjIwNWVmZGIyMjVkYTA1YThlZWYuLjNjNzU2N2M4MWJiYTgyMmM0OGFiMDZlZDI0
ZGUyOTY0OTgzMDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE3
NTksNyArMTc1OSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpkdW1wTWFya2Vy
UmVjdHMoY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlU3RyaW5nKQogCiAgICAgLy8gRklYTUU6IFVz
aW5nIGZpeGVkIHByZWNpc2lvbiBoZXJlIGZvciB3aWR0aCBiZWNhdXNlIG9mIHRlc3QgcmVzdWx0
cyB0aGF0IGNvbnRhaW4gbnVtYmVycyB3aXRoIHNwZWNpZmljIHByZWNpc2lvbi4gV291bGQgYmUg
bmljZSB0byB1cGRhdGUgdGhlIHRlc3QgcmVzdWx0cyBhbmQgbW92ZSB0byBkZWZhdWx0IGZvcm1h
dHRpbmcuCiAgICAgU3RyaW5nQnVpbGRlciByZWN0U3RyaW5nOwotICAgIHJlY3RTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgibWFya2VyIHJlY3RzOiAiKTsKKyAgICByZWN0U3RyaW5nLmFwcGVuZCgibWFy
a2VyIHJlY3RzOiAiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0cykKICAgICAg
ICAgcmVjdFN0cmluZy5hcHBlbmQoJygnLCByZWN0LngoKSwgIiwgIiwgcmVjdC55KCksICIsICIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24ocmVjdC53aWR0aCgpKSwgIiwgIiwgcmVj
dC5oZWlnaHQoKSwgIikgIik7CiAgICAgcmV0dXJuIHJlY3RTdHJpbmcudG9TdHJpbmcoKTsKQEAg
LTQ3MDEsMTggKzQ3MDEsMTggQEAgc3RhdGljIHZvaWQgYXBwZW5kT2Zmc2V0cyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXQKIHsKICAgICBib29s
IGp1c3RTdGFydGluZyA9IHRydWU7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInsgIik7
CisgICAgYnVpbGRlci5hcHBlbmQoInsgIik7CiAgICAgZm9yIChhdXRvJiBjb29yZGluYXRlIDog
c25hcE9mZnNldHMpIHsKICAgICAgICAgaWYgKCFqdXN0U3RhcnRpbmcpCi0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
LCAiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAganVzdFN0YXJ0aW5nID0gZmFsc2U7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvb3JkaW5hdGUub2Zmc2V0LnRvVW5zaWduZWQoKSk7CiAg
ICAgICAgIGlmIChjb29yZGluYXRlLnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChhbHdheXMpIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIChhbHdheXMpIik7CiAKICAgICB9Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgfSIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgfSIpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJv
b2wgZW5hYmxlZCkKQEAgLTQ3MzMsMTUgKzQ3MzMsMTQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJ
bnRlcm5hbHM6OnNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byog
b2Zmc2V0SW5mbyA9IHNjcm9sbGFibGVBcmVhLT5zbmFwT2Zmc2V0SW5mbygpOwogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwogICAgIGlmIChvZmZzZXRJbmZvICYmICFvZmZzZXRJbmZvLT5ob3Jp
em9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJob3Jpem9udGFsID0gIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoImhvcml6b250YWwg
PSAiKTsKICAgICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsIG9mZnNldEluZm8tPmhvcml6b250
YWxTbmFwT2Zmc2V0cyk7CiAgICAgfQogCiAgICAgaWYgKG9mZnNldEluZm8gJiYgIW9mZnNldElu
Zm8tPnZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChyZXN1bHQu
bGVuZ3RoKCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLQotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidmVydGljYWwgPSAiKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIiwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoInZlcnRpY2FsID0gIik7
CiAgICAgICAgIGFwcGVuZE9mZnNldHMocmVzdWx0LCBvZmZzZXRJbmZvLT52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAppbmRleCA3ZGJmY2NiNDBhYWQxNzNjZGQ0OTZhZTc4YTAxMWQ1YWRiYTFkZjI2
Li44YmU4MDgxYTc3YTczMTNkMDFlOTc1MDE3NDhjMGVkODY1ZTQxMjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xNjIsMTYgKzE2Miwx
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdAogUmVzb3VyY2VFcnJvciBXb3JrZXJTY3JpcHRM
b2FkZXI6OnZhbGlkYXRlV29ya2VyUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7CiAgICAgaWYg
KHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiUmVzcG9uc2UgaXMgbm90IDJ4eCJfcywg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OworICAgICAgICByZXR1cm4geyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlJlc3BvbnNlIGlzIG5vdCAy
eHgiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKIAogICAgIGlmICghaXNTY3Jp
cHRBbGxvd2VkQnlOb3NuaWZmKHJlc3BvbnNlKSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSBcIlgtQ29udGVu
dC1UeXBlLU9wdGlvbnM6IG5vc25pZmZcIiB3YXMgZ2l2ZW4gYW5kIGl0cyBDb250ZW50LVR5cGUg
aXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsKLSAgICAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgV1RGTW92
ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OworICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0IGJlY2F1c2Ug
XCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmXCIgd2FzIGdpdmVuIGFuZCBpdHMgQ29u
dGVudC1UeXBlIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7CisgICAgICAgIHJldHVybiB7
IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1l
c3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAgICAgfQogCiAgICAgaWYg
KHNob3VsZEJsb2NrUmVzcG9uc2VEdWVUb01JTUVUeXBlKHJlc3BvbnNlLCBkZXN0aW5hdGlvbikp
IHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1
dGUgIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIg
YXMgc2NyaXB0IGJlY2F1c2UgIiwgcmVzcG9uc2UubWltZVR5cGUoKSwgIiBpcyBub3QgYSBzY3Jp
cHQgTUlNRSB0eXBlLiIpOwotICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1h
a2VTdHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSAiLCByZXNwb25zZS5t
aW1lVHlwZSgpLCAiIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7CisgICAgICAgIHJldHVy
biB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAgICAgfQogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6
bm90aWZ5RXJyb3IoKQogewogICAgIG1fZmFpbGVkID0gdHJ1ZTsKICAgICBpZiAobV9lcnJvci5p
c051bGwoKSkKLSAgICAgICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNjcmlwdCIsIFJlc291cmNl
RXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICAgICAgbV9lcnJvciA9IHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksICJGYWlsZWQgdG8gbG9hZCBzY3JpcHQiLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAgICAgbm90aWZ5RmluaXNoZWQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
aW5kZXggMzk2ZjVjNzc1MjJkNTJlN2E1MTAyYmYyZWM2OTMzMGExZTIzN2VjOS4uNTU3ZDdmMjY5
Mzk3MTdmNjE2ODVhYjUzMzQxZTZkZWJjMTU5OTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0xMDMwLDIwICsxMDMw
LDExIEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFiCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICAKICAgICBmb3IgKGF1dG8mIHRvcEZyYW1lUmVzb3VyY2UgOiBkb21haW5MaXN0
KSB7Ci0gICAgICAgIAogICAgICAgICAvLyBJbnNlcnQgcXVlcnkgd2lsbCBmYWlsIGlmIHRvcCBm
cmFtZSBkb21haW4gaXMgbm90IGFscmVhZHkgaW4gdGhlIGRhdGFiYXNlCi0gICAgICAgIGF1dG8g
cmVzdWx0ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9w
RnJhbWVSZXNvdXJjZSk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgICAg
ICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCh0b3BGcmFtZVJlc291cmNlLnN0cmluZygpKTsKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRvcEZyYW1lUmVzb3VyY2UpLnNl
Y29uZCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIg
OiAiLCAiLCAnIicsIHRvcEZyYW1lUmVzb3VyY2Uuc3RyaW5nKCksICciJyk7CiAgICAgfQotCiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtMTI2MCwxNCArMTI1MSw4IEBA
IFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0CiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhj
b25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBkb21haW5OYW1lIDogZG9tYWlu
cykgewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZChkb21haW5OYW1lLnN0cmluZygpKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInKTsKLSAgICB9Ci0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRvbWFpbk5hbWUg
OiBkb21haW5zKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIi
IDogIiwgIiwgJyInLCBkb21haW5OYW1lLnN0cmluZygpLCAnIicpOwogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKQEAgLTEzMzYsMTEgKzEzMjEsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSXRlcmF0b3JUeXBlPgogc3RhdGljIFN0cmluZyBidWlsZExpc3QoY29uc3QgV1RGOjpJ
dGVyYXRvclJhbmdlPEl0ZXJhdG9yVHlwZT4mIHZhbHVlcykKIHsKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGRvbWFpbklEIDogdmFsdWVzKSB7Ci0gICAgICAgIGlm
ICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbklEKTsKLSAgICB9CisgICAgZm9y
IChhdXRvIGRvbWFpbklEIDogdmFsdWVzKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWlsZGVy
LmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgZG9tYWluSUQpOwogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKQEAgLTEzODUsMTIgKzEzNjcsOCBAQCBIYXNoTWFwPHVuc2lnbmVkLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291
cmNlcwogICAgIH0KIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8g
dmFsdWUgOiByZXN1bHRzLmtleXMoKSkgewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgp
KQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCh2YWx1ZSk7Ci0gICAgfQotCisgICAgZm9yIChhdXRvIHZhbHVlIDogcmVzdWx0
cy5rZXlzKCkpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIg
OiAiLCAiLCB2YWx1ZSk7CiAgICAgYXV0byBkb21haW5JRHNPZkludGVyZXN0ID0gYnVpbGRlci50
b1N0cmluZygpOwogCiAgICAgYXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxF
Q1Qgc3VicmVzb3VyY2VEb21haW5JRCwgQ09VTlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4g
KCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQi
KSk7CkBAIC0xOTUyLDE3ICsxOTMwLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25ICiAgICAg
c3RkOjpzb3J0KGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRD
b21wYXJlTGVzc1RoYW4pOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIlJlc291cmNlIGxvYWQgc3RhdGlzdGljczpcblxuIik7CisgICAgcmVz
dWx0LmFwcGVuZCgiUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOlxuXG4iKTsKICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgIHJlc291cmNlVG9TdHJpbmcocmVzdWx0LCBk
b21haW4pOwogCiAgICAgYXV0byB0aGlyZFBhcnR5RGF0YSA9IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YSgpOwogICAgIGlmICghdGhpcmRQYXJ0eURhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIlxuSVRQIERhdGE6XG4iKTsKLSAgICAgICAgZm9yIChhdXRvIHRoaXJkUGFy
dHkgOiB0aGlyZFBhcnR5RGF0YSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlyZFBh
cnR5LnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKLSAgICAg
ICAgfQorICAgICAgICBmb3IgKGF1dG8gdGhpcmRQYXJ0eSA6IHRoaXJkUGFydHlEYXRhKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlyZFBhcnR5LnRvU3RyaW5nKCksICdcbicpOwogICAg
IH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQudG9TdHJpbmcoKSk7CiB9CkBAIC0yNzQ4
LDE3ICsyNzI0LDEyIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmlzQ29ycmVjdFN1YlN0YXRpc3RpY3NDb3VudChjb25zdCBSZWdpCiAKIHN0YXRpYyB2b2lkIGFw
cGVuZEJvb2xlYW4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Ym9vbCBmbGFnKQogewotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKGxhYmVsKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoZmxhZyA/ICJZZXMiIDogIk5vIik7CisgICAgYnVpbGRlci5hcHBl
bmQoIiAgICAiLCBsYWJlbCwgIjogIiwgZmxhZyA/ICJZZXMiIDogIk5vIik7CiB9CiAKLXN0YXRp
YyB2b2lkIGFwcGVuZE5leHRFbnRyeShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBTdHJpbmcgZW50
cnkpCitzdGF0aWMgdm9pZCBhcHBlbmROZXh0RW50cnkoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
Y29uc3QgU3RyaW5nJiBlbnRyeSkKIHsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAg
ICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoZW50cnkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdc
bicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgICAgICIsIGVudHJ5LCAnXG4nKTsKIH0KIAog
U3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJp
bmdGcm9tRG9tYWluSUQodW5zaWduZWQgZG9tYWluSUQpIGNvbnN0CkBAIC0yODIxLDkgKzI3OTIs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJT
dGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImCiAgICAgaWYgKGRhdGEtPnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQodGFibGVOYW1lKTsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjpcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgIiwgdGFibGVOYW1l
LCAiOlxuIik7CiAgICAgCiAgICAgYXV0byByZXN1bHQgPSBnZXREb21haW5TdHJpbmdGcm9tRG9t
YWluSUQoZGF0YS0+Y29sdW1uSW50KDApKTsKICAgICBhcHBlbmROZXh0RW50cnkoYnVpbGRlciwg
cmVzdWx0KTsKQEAgLTI4NTAsMTggKzI4MTksMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VUb1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUmVn
aXN0cmFibGUgZG9tYWluOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChkb21haW4pOwotICAgIGJ1
aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21h
aW46ICIsIGRvbWFpbiwgJ1xuJyk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAg
IGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImhhZFVzZXJJbnRlcmFjdGlvbiIsIG1fZ2V0UmVzb3Vy
Y2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5JbnQoSGFkVXNlckludGVyYWN0aW9u
SW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwogICAgIGlmIChoYXNIYWRS
ZWNlbnRVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyhtX2dldFJlc291cmNlRGF0YUJ5RG9tYWluTmFt
ZVN0YXRlbWVudC0+Y29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5k
ZXgpKSkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGluIDI0IGhvdXJzIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ3aXRoaW4gMjQgaG91cnMiKTsKICAgICBlbHNlCi0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTEiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIi0xIik7CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgYXBwZW5kQm9vbGVhbihi
dWlsZGVyLCAiZ3JhbmRmYXRoZXJlZCIsIG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3Rh
dGVtZW50LT5jb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4KSk7CiAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7CkBAIC0zNDE0LDE1ICszMzgxLDE1IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyhXZWJDb3JlOjpTUUxpdGVT
CiAgICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKSB7CiAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG5BdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGE6ICIsIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEsICJcbkF0dHJpYnV0aW9uIHByaW9yaXR5OiAiLCBwcmlvcml0eSwgIlxu
QXR0cmlidXRpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiAiKTsKICAgICAgICAgICAgIGlmIChl
YXJsaWVzdFRpbWVUb1NlbmQgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJOb3Qgc2V0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIk5vdCBz
ZXQiKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8gc2Vjb25kc1Vu
dGlsU2VuZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhlYXJsaWVzdFRpbWVUb1NlbmQpIC0g
V2FsbFRpbWU6Om5vdygpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChzZWNvbmRz
VW50aWxTZW5kID49IDI0X2ggJiYgc2Vjb25kc1VudGlsU2VuZCA8PSA0OF9oKSA/ICJXaXRoaW4g
MjQtNDggaG91cnMiIDogIk91dHNpZGUgMjQtNDggaG91cnMiKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuTm8gYXR0
cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxu
Tm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOwogICAgIH0gZWxzZQotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxuTm8gYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhLiIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwpAQCAtMzQ1MCw5ICszNDE3LDggQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKICAgICB1bnNpZ25l
ZCB1bmF0dHJpYnV0ZWROdW1iZXIgPSAwOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICB3aGlsZSAodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JP
VykgewotICAgICAgICBpZiAoIXVuYXR0cmlidXRlZE51bWJlcikKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiVW5hdHRyaWJ1dGVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRz
OiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgY29uc3QgY2hh
ciogcHJlZml4ID0gdW5hdHRyaWJ1dGVkTnVtYmVyID8gIiIgOiAiVW5hdHRyaWJ1dGVkIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRzOiI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCwg
IlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKyt1bmF0dHJpYnV0ZWROdW1i
ZXIsICdcbicsCiAgICAgICAgICAgICBhdHRyaWJ1dGlvblRvU3RyaW5nKHVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OlVuYXR0cmlidXRlZCkpOwogICAgIH0KIApAQCAtMzQ2NSwxMyArMzQzMSw5IEBAIFN0cmlu
ZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRUb1N0cmluZygpCiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVkTnVtYmVyID0gMDsKICAg
ICB3aGlsZSAoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVkTnVtYmVyKSB7Ci0gICAgICAgICAgICBpZiAodW5h
dHRyaWJ1dGVkTnVtYmVyKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBdHRyaWJ1dGVkIFByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRzOlxuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCAiLCArK2F0dHJpYnV0ZWROdW1iZXIgKyB1bmF0dHJpYnV0ZWROdW1i
ZXIsICdcbicsCisgICAgICAgIGlmICghYXR0cmlidXRlZE51bWJlcikKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHVuYXR0cmlidXRlZE51bWJlciA/ICJcbiIgOiAiIiwgIkF0dHJpYnV0ZWQg
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
bldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrYXR0cmlidXRlZE51bWJlciAr
IHVuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKICAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJp
bmcoYXR0cmlidXRlZFNjb3BlZFN0YXRlbWVudC5nZXQoKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAKaW5kZXggMDE4NGQyYzhlZjE4YWNiNzg5YTgwZDZjNDk3MTc4MTM0NGI0
YTUxMS4uNjBjNjYyNGUyOTU0YTc4Yzk0Yjk5NTE1OGJjMjVlZTJkYTk5ZWRhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTU0
NSw3ICs1NDUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6ZHVt
cFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbgogICAgIH0KIAogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJSZXNvdXJjZSBsb2Fk
IHN0YXRpc3RpY3M6XG5cbiIpOworICAgIHJlc3VsdC5hcHBlbmQoIlJlc291cmNlIGxvYWQgc3Rh
dGlzdGljczpcblxuIik7CiAgICAgVmVjdG9yPFN0cmluZz4gc29ydGVkTWFwRW50cmllczsKICAg
ICBmb3IgKGF1dG8mIG1hcEVudHJ5IDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkp
CiAgICAgICAgIHNvcnRlZE1hcEVudHJpZXMuYXBwZW5kKG1hcEVudHJ5LT50b1N0cmluZygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggY2IzMWNm
Y2Y0NWEwN2Y2YmJiNGQzMWZiZjNiOTViNDhhNGY1Mzc0Yi4uNDUwMGI4NWI2Zjk2OTJmMjhhMDE1
ZWExZGFjZGM0YTE3NWU0YTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTU0LDM1ICs1NCwyMCBAQCBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVt
U3RhdGlzdGljc1Byb2Nlc3NpbmdJbnRlcnZhbCB7IDVfcyB9Owogc3RhdGljIFN0cmluZyBkb21h
aW5zVG9TdHJpbmcoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5z
dHJpbmcoKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbi5z
dHJpbmcoKSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogc3RhdGljIFN0
cmluZyBkb21haW5zVG9TdHJpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3ImIGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0
YUZvcikKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zVG9SZW1vdmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IuZG9tYWluc1RvRGVs
ZXRlQWxsQ29va2llc0ZvcikgewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZChkb21haW4uc3RyaW5nKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihh
bGwgZGF0YSkiKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9SZW1v
dmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IuZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRv
bWFpbi5zdHJpbmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGFsbCBidXQg
SHR0cE9ubHkgY29va2llcykiKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zVG9SZW1vdmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9u
Q29va2llV2Vic2l0ZURhdGFGb3IpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIoYWxsIGJ1dCBjb29raWVzKSIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRv
bWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxD
b29raWVzRm9yKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIi
IDogIiwgIiwgZG9tYWluLnN0cmluZygpLCAiKGFsbCBkYXRhKSIpOworICAgIGZvciAoYXV0byYg
ZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFpbnNU
b0RlbGV0ZUFsbEJ1dEh0dHBPbmx5Q29va2llc0ZvcikKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
YnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbi5zdHJpbmcoKSwgIihhbGwgYnV0
IEh0dHBPbmx5IGNvb2tpZXMpIik7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9S
ZW1vdmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IuZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2ll
V2Vic2l0ZURhdGFGb3IpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgp
ID8gIiIgOiAiLCAiLCBkb21haW4uc3RyaW5nKCksICIoYWxsIGJ1dCBjb29raWVzKSIpOwogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKQEAgLTkzLDcgKzc4LDYgQEAgT3BlcmF0
aW5nRGF0ZSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWUgdGltZSkKICAgICBp
bnQgeWVhckRheSA9IGRheUluWWVhcihtcywgeWVhcik7CiAgICAgaW50IG1vbnRoID0gbW9udGhG
cm9tRGF5SW5ZZWFyKHllYXJEYXksIGlzTGVhcFllYXIoeWVhcikpOwogICAgIGludCBtb250aERh
eSA9IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKHllYXJEYXksIGlzTGVhcFllYXIoeWVhcikpOwot
CiAgICAgcmV0dXJuIE9wZXJhdGluZ0RhdGUgeyB5ZWFyLCBtb250aCwgbW9udGhEYXkgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRl
eCBlNDNjZTQyMmJjMWMyZWIzMTk2NTdiMmY5MWRkYWRhYmU1ZjljZWM1Li5kNDFhYjQ4MzM4OWZm
YzBmYTJhYmVhZGVhNjQ2Zjc3OWI4Njc2ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTg4LDYgKzE4OCwxMSBAQCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKQog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3N0YXRpc3RpY3NTdG9yZSk7CiB9CiAKK1JlZjxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBo
ZW1lcmFsIGlzRXBoZW1lcmFsKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgaXNFcGhlbWVyYWwpKTsKK30K
Kwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRpZERlc3Ryb3lOZXR3b3Jr
U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTE2NzYsNiArMTY4MSw3OSBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHNBc0V4cAogICAgIH0pOwogfQogCitTdHJpbmcgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6
dG9TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtYWtlU3RyaW5nKCJIYXMgYmVlbiBncmFu
dGVkIHN0b3JhZ2UgYWNjZXNzIHVuZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICI6
ICIsIHN0b3JhZ2VBY2Nlc3NHcmFudGVkID8gJzEnIDogJzAnLCAiOyBIYXMgYmVlbiBzZWVuIHVu
ZGVyICIsIGZpcnN0UGFydHlEb21haW4uc3RyaW5nKCksICIgaW4gdGhlIGxhc3QgMjQgaG91cnM6
ICIsIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gdGltZUxhc3RVcGRhdGVk
IDwgMjRfaCA/ICcxJyA6ICcwJyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlEb21h
aW47CisgICAgZW5jb2RlciA8PCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKKyAgICBlbmNvZGVyIDw8
IHRpbWVMYXN0VXBkYXRlZDsKK30KKworYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQ
YXJ0eT4KK3sKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2Rl
ZERvbWFpbjsKKyAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47CisgICAgaWYgKCFkZWNvZGVk
RG9tYWluKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Ym9v
bD4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CisgICAgZGVjb2RlciA+PiBkZWNvZGVkU3RvcmFnZUFj
Y2VzczsKKyAgICBpZiAoIWRlY29kZWRTdG9yYWdlQWNjZXNzKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlZFRpbWVMYXN0VXBkYXRl
ZDsKKyAgICBkZWNvZGVyID4+IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CisgICAgaWYgKCFkZWNv
ZGVkVGltZUxhc3RVcGRhdGVkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkU3RvcmFn
ZUFjY2VzcyksIFdURk1vdmUoKmRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpIH19OworfQorCitib29s
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHk6Om9wZXJhdG9yPT0oY29uc3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHkmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBmaXJzdFBhcnR5RG9tYWluID09
IG90aGVyLmZpcnN0UGFydHlEb21haW4gJiYgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPT0gb3RoZXIu
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7Cit9CisKK1N0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJUaGlyZCBQ
YXJ0eSBSZWdpc3RyYWJsZSBEb21haW46ICIsIHRoaXJkUGFydHlEb21haW4uc3RyaW5nKCksICJc
biAgICB7Iik7CisgICAgZm9yIChhdXRvIGZpcnN0UGFydHkgOiB1bmRlckZpcnN0UGFydGllcykK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInsgIiwgZmlyc3RQYXJ0eS50b1N0cmluZygp
LCAiIH0sIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ30nKTsKKyAgICByZXR1cm4gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5RG9tYWluOworICAgIGVuY29kZXIgPDwg
dW5kZXJGaXJzdFBhcnRpZXM7Cit9CisKK2F1dG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0
aW9uYWw8VGhpcmRQYXJ0eURhdGE+Cit7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGRlY29kZWREb21haW47CisgICAgZGVjb2RlciA+PiBkZWNvZGVkRG9tYWluOwor
ICAgIGlmICghZGVjb2RlZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4+
IGRlY29kZWRGaXJzdFBhcnRpZXM7CisgICAgZGVjb2RlciA+PiBkZWNvZGVkRmlyc3RQYXJ0aWVz
OworICAgIGlmICghZGVjb2RlZEZpcnN0UGFydGllcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgq
ZGVjb2RlZEZpcnN0UGFydGllcykgfX07Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6b3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRh
ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gdW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpIDwg
b3RoZXIudW5kZXJGaXJzdFBhcnRpZXMuc2l6ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKaW5kZXggOTYzZWE0NzNkMzI4ODk3NjY1YWYyZTg5OTk3ZWJjZDJhYjZiNWQyNC4uN2FhMWEw
N2FmYzMyMTc3MzFjYTk5NDEwYTI5MDNhNDZkNGIyOWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTExLDEwMSArMTExLDM0IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzU2NvcGUgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
U2NvcGU7CiAgICAgdXNpbmcgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgPSBXZWJDb3JlOjpS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDsKIAotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29y
a1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKIAogICAgIH5XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKIAotc3RydWN0IFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5IHsKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBh
cnR5RG9tYWluOwotICAgIGJvb2wgc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7Ci0gICAgU2Vjb25kcyB0
aW1lTGFzdFVwZGF0ZWQ7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3Mg
dW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dy
YW50ZWQgPyAnMScgOiAnMCcsICI7IEhhcyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURv
bWFpbi5zdHJpbmcoKSwgIiBpbiB0aGUgbGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAn
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlEb21haW47Ci0gICAgICAgIGVu
Y29kZXIgPDwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7Ci0gICAgICAgIGVuY29kZXIgPDwgdGltZUxh
c3RVcGRhdGVkOwotICAgIH0KLQotICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKLSAgICB7
Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9t
YWluOwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47Ci0gICAgICAgIGlmICghZGVj
b2RlZERvbWFpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7Ci0gICAgICAgIGRlY29kZXIgPj4g
ZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7Ci0gICAgICAgIGlmICghZGVjb2RlZFN0b3JhZ2VBY2Nlc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICAKLSAgICAgICAgT3B0
aW9uYWw8U2Vjb25kcz4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsKLSAgICAgICAgZGVjb2RlciA+
PiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOwotICAgICAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVw
ZGF0ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkU3Rv
cmFnZUFjY2VzcyksIFdURk1vdmUoKmRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpIH19OwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eSBjb25zdCBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaXJzdFBhcnR5RG9t
YWluID09IG90aGVyLmZpcnN0UGFydHlEb21haW4gJiYgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPT0g
b3RoZXIuc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7Ci0gICAgfQotfTsKKyAgICBzdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgeworICAgICAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluOworICAgICAgICBib29sIHN0b3JhZ2VBY2Nlc3NH
cmFudGVkOworICAgICAgICBTZWNvbmRzIHRpbWVMYXN0VXBkYXRlZDsKIAotc3RydWN0IFRoaXJk
UGFydHlEYXRhIHsKLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9t
YWluOwotICAgIFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gdW5k
ZXJGaXJzdFBhcnRpZXM7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiVGhpcmQgUGFydHkgUmVnaXN0cmFibGUgRG9tYWluOiAiLCB0aGlyZFBhcnR5RG9t
YWluLnN0cmluZygpLCAiXG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgICAgeyIpOwotCi0gICAgICAgIGZvciAoYXV0byBmaXJzdFBhcnR5IDogdW5kZXJGaXJzdFBh
cnRpZXMpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgieyAiKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGZpcnN0UGFydHkudG9TdHJpbmcoKSk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9LCIpOwotICAgICAg
ICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifSIpOwotICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLQotICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwg
dGhpcmRQYXJ0eURvbWFpbjsKLSAgICAgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGE+IGRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCi0gICAgewotICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKLSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVk
RG9tYWluOwotICAgICAgICBpZiAoIWRlY29kZWREb21haW4pCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eT4+IGRlY29kZWRGaXJzdFBhcnRpZXM7Ci0gICAgICAgIGRlY29k
ZXIgPj4gZGVjb2RlZEZpcnN0UGFydGllczsKLSAgICAgICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0
aWVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4g
e3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMp
IH19OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhICZv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXpl
KCkgPCBvdGhlci51bmRlckZpcnN0UGFydGllcy5zaXplKCk7Ci0gICAgfQotfTsKKyAgICAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgT3B0aW9uYWw8VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKKworICAgICAgICAvLyBGSVhN
RTogU2luY2UgdGhpcyBpZ25vcmVzIGRpZmZlcmVuY2VzIGluIGRlY29kZWRUaW1lTGFzdFVwZGF0
ZWQgaXQgcHJvYmFibHkgc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRvcj09
LgorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZp
Y0ZpcnN0UGFydHkmKSBjb25zdDsKKyAgICB9OworCisgICAgc3RydWN0IFRoaXJkUGFydHlEYXRh
IHsKKyAgICAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbjsK
KyAgICAgICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB1bmRl
ckZpcnN0UGFydGllczsKKworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHN0YXRpYyBPcHRp
b25hbDxUaGlyZFBhcnR5RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNvcnRzIGJ5IG51bWJlciBvZiB1bmRlckZpcnN0UGFydGllcywgc28gaXQg
cHJvYmFibHkgc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRvcjwuCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFRoaXJkUGFydHlEYXRhJikgY29uc3Q7CisgICAgfTsK
IAogICAgIHZvaWQgZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmNwcAppbmRleCBiY2I5MTcxZDhmOTIxYmEyMjQzM2RmYjdhMjM4NzM4NmFh
NGYyNDg3Li42YTE5YWM0NTgxZDQ2OWY5NDJkOTQ5NzYwNzZiNjkyMDBjNTNmYjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CkBAIC0zMDUsOCArMzA1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hl
Y2tpbmdSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGkKICAgICB9CiAKICAg
ICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luKSB7
Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8g
bG9hZCBVUkwgIiwgcmVxdWVzdC51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
KSwgIiBmcm9tIG9yaWdpbiAiLCBtX29yaWdpbi0+dG9TdHJpbmcoKSwgIi4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIik7Ci0gICAgICAgIGhhbmRsZXIoYWNjZXNz
Q29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoV1RGTW92ZShtZXNzYWdlKSkpOworICAg
ICAgICBoYW5kbGVyKGFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKG1ha2VT
dHJpbmcoIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIsIHJlcXVlc3QudXJsKCkuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgZnJvbSBvcmlnaW4gIiwgbV9vcmlnaW4tPnRv
U3RyaW5nKCksICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYzJjNTNhYmY1ZWViMGI3NGExZTE1MzY1
NzhjMDc3YzJiM2YxNTk5Yy4uMzY0YzIzNjE4YjNjZTI1ZTBjNDNiNTRiZjUzODU4MmFkYWI4MzE5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTQ1NSwxNyArNDU1LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpuZXdUZXN0aW5nU2Vzc2lvCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gU2Vzc2lvbiBuYW1lIHNob3VsZCBiZSBzaG9ydCBlbm91
Z2ggZm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9uIG5hbWUgdG8gYmUgdW5kZXIgdGhlIGxpbWl0LCBv
dGhlcndpc2Ugc2FuZGJveCBydWxlcyB3b24ndCB3b3JrIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzEz
NjQyODUyPikuCi0gICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0IFRl
c3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKLQotICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNv
cmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKLQorICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vz
c0lEKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwogICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkgewogICAgICAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7CiAgICAgICAgIGlmIChzZXNzaW9uKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFk
b3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBzZXNzaW9uLmdldCgpKSk7CiAgICAgfQotCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc2Vzc2lv
biksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQ
KQogICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
c2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcAppbmRleCA2ZGMzMjhlZjM3N2M0NWNlMTAyYWZmMTVlODA2MWRhNzdk
YjA2OWFmLi5mNzdmZDExMmEyZGEwYjJkZDhkNDY3YjNkNWUzODRmZTk0ZjA4ZGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIAog
ICAgICAgICBTdHJpbmdCdWlsZGVyIGpzb247CiAgICAgICAgIGVudHJ5LT5hc0pTT04oanNvbiwg
aW5mbyk7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CisgICAgICAgIGpzb24u
YXBwZW5kKCIsXG4iKTsKICAgICAgICAgYXV0byB3cml0ZURhdGEgPSBqc29uLnRvU3RyaW5nKCku
dXRmOCgpOwogICAgICAgICB3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwgd3JpdGVE
YXRhLmxlbmd0aCgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggMGE0YWIyNTY2MGI5
OTMzYjYwZWI1YTJhYzQyZTJkNGFmOWI4MTUzZS4uNzU4ZTQ1YzQ2OGQ3NGZjZmZmZTlhNTE5NjA5
MmYwNjFjYTA0N2FkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lk
IEVudHJ5OjpzZXROZWVkc1ZhbGlkYXRpb24oYm9vbCB2YWx1ZSkKIAogdm9pZCBFbnRyeTo6YXNK
U09OKFN0cmluZ0J1aWxkZXImIGpzb24sIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIGluZm8p
IGNvbnN0CiB7Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJ7XG4iCisgICAganNvbi5hcHBlbmQo
IntcbiIKICAgICAgICAgIlwiaGFzaFwiOiAiKTsKICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05T
dHJpbmcobV9rZXkuaGFzaEFzU3RyaW5nKCkpOwogICAgIGpzb24uYXBwZW5kKCIsXG4iCkBAIC0y
MzYsNyArMjM2LDcgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIGNv
bnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIGluZm8pIGNvbnN0CiAgICAgICAgICJcInRpbWVzdGFt
cFwiOiAiLCBtX3RpbWVTdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCAi
LFxuIgogICAgICAgICAiXCJVUkxcIjogIik7CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3Ry
aW5nKG1fcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
LFxuIgorICAgIGpzb24uYXBwZW5kKCIsXG4iCiAgICAgICAgICJcImJvZHlIYXNoXCI6ICIpOwog
ICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhpbmZvLmJvZHlIYXNoKTsKICAgICBqc29u
LmFwcGVuZCgiLFxuIgpAQCAtMjQ0LDE1ICsyNDQsMTIgQEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0
cmluZ0J1aWxkZXImIGpzb24sIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIGluZm8pIGNvbnN0
CiAgICAgICAgICJcImhlYWRlcnNcIjoge1xuIik7CiAgICAgYm9vbCBmaXJzdEhlYWRlciA9IHRy
dWU7CiAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMo
KSkgewotICAgICAgICBpZiAoIWZpcnN0SGVhZGVyKQotICAgICAgICAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCIsXG4iKTsKLSAgICAgICAgZmlyc3RIZWFkZXIgPSBmYWxzZTsKLSAgICAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIgICAgIik7CisgICAgICAgIGpzb24uYXBwZW5kKHN0ZDo6ZXhjaGFu
Z2UoZmlyc3RIZWFkZXIsIGZhbHNlKSA/ICIiIDogIixcbiIsICIgICAgIik7CiAgICAgICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhoZWFkZXIua2V5KTsKLSAgICAgICAganNvbi5hcHBl
bmRMaXRlcmFsKCI6ICIpOworICAgICAgICBqc29uLmFwcGVuZCgiOiAiKTsKICAgICAgICAganNv
bi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGhlYWRlci52YWx1ZSk7CiAgICAgfQotICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiXG4iCisgICAganNvbi5hcHBlbmQoIlxuIgogICAgICAgICAifVxuIgog
ICAgICAgICAifSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZjU4NzQ1MjU3ZjI4M2Uz
NmY4MDdmZjg1OGRkNGI4ODgzYTU1YjNhYy4uYTgwN2ZiZjAxMjVlM2NkZjc1MGRhNjJlZjcyNGY2
YzFhNDVhNWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNzksOCArMTc5LDcgQEAgc3Rh
dGljIFN0cmluZyBtYWtlQ2FjaGVQYXRoKGNvbnN0IFN0cmluZyYgYmFzZUNhY2hlUGF0aCkKIAog
c3RhdGljIFN0cmluZyBtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJh
c2VEaXJlY3RvcnlQYXRoKQogewotICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0b3J5ID0gbWFr
ZVN0cmluZyh2ZXJzaW9uRGlyZWN0b3J5UHJlZml4LCBTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQ
YXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCBtYWtlU3RyaW5nKHZlcnNpb25E
aXJlY3RvcnlQcmVmaXgsIFN0b3JhZ2U6OnZlcnNpb24pKTsKIH0KIAogc3RhdGljIFN0cmluZyBt
YWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAKaW5kZXggMDBmZjhiMmZlNTAzOGVjZDQzNGZjNDY3MzhmM2EwNWVlOGQ0
ODMzZC4uZjdmNTY4MzFkMWQ3N2EyYjcxNmQ2MDdlMzQwYjY5ODc3ZTdhNzllMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKQEAgLTc4LDE2ICs3OCwxNSBAQCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExh
bmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIik7CiAKICAgICAgICAgYnVp
bGRlci5hcHBlbmQobGFuZ3VhZ2VzW2ldKTsKIAogICAgICAgICBpbnQgcXVhbGl0eSA9IDEwMCAt
IGkgKiBkZWx0YTsKICAgICAgICAgaWYgKHF1YWxpdHkgPiAwICYmIHF1YWxpdHkgPCAxMDApIHsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiO3E9Iik7CiAgICAgICAgICAgICBj
aGFyIGJ1ZmZlcls4XTsKICAgICAgICAgICAgIGdfYXNjaWlfZm9ybWF0ZChidWZmZXIsIDgsICIl
LjJmIiwgcXVhbGl0eSAvIDEwMC4wKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1ZmZl
cik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiO3E9IiwgYnVmZmVyKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYlNvY2tldFRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKaW5kZXggMWFjYWUwMDAwYzQ2NTZmNTQ2MzMwNTljMTNm
M2FkMjViYzRlMjQ5ZC4uYTZlNTA4M2JkOTFhZjUwMWU1MGQ0MDdkYWU1NjNmY2ZkNWIyYzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgU3RyaW5nIFdlYlNvY2tldFRhc2s6
OmFjY2VwdGVkRXh0ZW5zaW9ucygpIGNvbnN0CiAgICAgICAgIGF1dG8qIGV4dGVuc2lvbiA9IFNP
VVBfV0VCU09DS0VUX0VYVEVOU0lPTihpdC0+ZGF0YSk7CiAKICAgICAgICAgaWYgKCFyZXN1bHQu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
Zzo6ZnJvbVVURjgoU09VUF9XRUJTT0NLRVRfRVhURU5TSU9OX0dFVF9DTEFTUyhleHRlbnNpb24p
LT5uYW1lKSk7CiAKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXJhbXMoc291cF93ZWJzb2Nr
ZXRfZXh0ZW5zaW9uX2dldF9yZXNwb25zZV9wYXJhbXMoZXh0ZW5zaW9uKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVn
aXN0ZXIuY3BwCmluZGV4IDQzYTBjZDEzY2U4MzIzZmNkZTYwZjBhZmM2YzNmYzk4MWExNjc1YTYu
LjA4MjU4ODM3YWVkOGE2ZWZjN2MwYTAzNmMwODA4NmViOWUxMDVkNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVn
aXN0ZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAg
ICB9IGVsc2UKICAgICAgICAgc2VydmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFN0cmlu
ZyBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwi
KTsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgIi5sb2NhbCIpOwogCiAgICAgYXV0byBpcCA9IGluZXRfYWRkcihpcEFkZHJlc3MudXRmOCgp
LmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNh
bXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5k
ZXggNWM4ODE3ZTc0YmE2MDEzZmFjMmM3MTNiZjM3YWI3ZWQ5MzNkMGNmZS4uM2E1ODE0ZWIzNmU1
OTYwY2YxZjc3OWQxMDAwNDI3N2RiZWYzYzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5jcHAKQEAgLTE0MywxMCArMTQzLDggQEAgdm9pZCBXZWJNZW1vcnlTYW1w
bGVyOjppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW0KIAogdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjp3cml0ZUhlYWRlcnMoKQogewotICAgIFN0
cmluZyBwcm9jZXNzRGV0YWlscyA9IG1ha2VTdHJpbmcoIlByb2Nlc3M6ICIsIHByb2Nlc3NOYW1l
KCksICIgUGlkOiAiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksICdcbicpOwotCi0gICAgQ1N0cmlu
ZyB1dGY4U3RyaW5nID0gcHJvY2Vzc0RldGFpbHMudXRmOCgpOwotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcu
bGVuZ3RoKCkpOworICAgIGF1dG8gcHJvY2Vzc0RldGFpbHMgPSBtYWtlU3RyaW5nKCJQcm9jZXNz
OiAiLCBwcm9jZXNzTmFtZSgpLCAiIFBpZDogIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAnXG4n
KS51dGY4KCk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCBw
cm9jZXNzRGV0YWlscy5kYXRhKCksIHByb2Nlc3NEZXRhaWxzLmxlbmd0aCgpKTsKIH0KIAogdm9p
ZCBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVUaW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggYzI0YzFiM2M1NzI3M2U2
ZTIxMjlhNTE2MGJhYTdmYzYwZjhlODgyZS4uZGFhZmQ4ZDhiZDMyNzFlNDhhNTljMDYwOGNhY2Rm
ZWFlNjc3NTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0KQEAgLTUyLDE4ICs1MiwxOCBAQAogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5o
PgogI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5k
Ym94U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRl
Q0YuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxyb290bGVzcy5o
PgogI2VuZGlmCiAKLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCiBTT0ZUX0xJTktfU1lT
VEVNX0xJQlJBUlkobGlic3lzdGVtX2luZm8pCiBTT0ZUX0xJTktfT1BUSU9OQUwobGlic3lzdGVt
X2luZm8sIG1icl9jbG9zZV9jb25uZWN0aW9ucywgaW50LCAoKSwgKCkpOwogCkBAIC02NDYsOCAr
NjQ2LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJzKGNvbnN0IEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmEKICAgICAgICAgICAgIFN0cmluZyBjbGll
bnRJZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHBhcmFtZXRlcnMuY29ubmVjdGlv
bklkZW50aWZpZXIueHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50
SWRlbnRpZmllci5pc051bGwoKSkKICAgICAgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyID0g
cGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVyOwotICAgICAgICAgICAgU3RyaW5nIGRlZmF1bHRV
c2VyRGlyZWN0b3J5U3VmZml4ID0gbWFrZVN0cmluZyhTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBidW5kbGVJZGVudGlmaWVyXSksICcrJywgY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAg
ICAgICBzYW5kYm94UGFyYW1ldGVycy5zZXRVc2VyRGlyZWN0b3J5U3VmZml4KGRlZmF1bHRVc2Vy
RGlyZWN0b3J5U3VmZml4KTsKKyAgICAgICAgICAgIHNhbmRib3hQYXJhbWV0ZXJzLnNldFVzZXJE
aXJlY3RvcnlTdWZmaXgobWFrZVN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdLCAnKycsIGNsaWVudElkZW50aWZpZXIpKTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFj
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tCmlu
ZGV4IDdkM2E0MDQzMGNkNTM5YTYyOWQ5MjM5OTZjNTAwNGZlZDNkZmMxN2EuLjZkYTcyMDFjMjNh
NDQ4NmU1NGQ5NDZjYTA0YjAyOGIxYzY5Yzc4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KQEAgLTEzOCwzNyArMTM4LDM3IEBAIFdl
Yk1lbW9yeVN0YXRpc3RpY3MgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QK
IAogICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKICAgICAgICAgCi0gICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUaW1lc3RhbXAiKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIlRpbWVzdGFtcCJfcyk7CiAgICAgd2ViS2l0TWVt
b3J5U3RhdHMudmFsdWVzLmFwcGVuZChub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkp
OwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgQnl0ZXMg
b2YgTWVtb3J5IEluIFVzZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgi
VG90YWwgQnl0ZXMgb2YgTWVtb3J5IEluIFVzZSJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMu
dmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKFN0cmluZygiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAg
d2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChmYXN0TWFsbG9jQnl0ZXNJblVzZSk7Ci0g
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEZWZhdWx0IE1hbGxvYyBa
b25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJEZWZhdWx0
IE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBw
ZW5kKGRlZmF1bHRNYWxsb2Nab25lQnl0ZXNJblVzZSk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMu
a2V5cy5hcHBlbmQoU3RyaW5nKCJEaXNwYXRjaCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUgQnl0
ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRpc3BhdGNoIENvbnRp
bnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFs
dWVzLmFwcGVuZChkaXNwYXRjaENvbnRpbnVhdGlvbk1hbGxvY1pvbmVCeXRlc0luVXNlKTsKLSAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlB1cmdlYWJsZSBNYWxsb2Mg
Wm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiUHVyZ2Vh
YmxlIE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMu
YXBwZW5kKHB1cmdlYWJsZU1hbGxvY1pvbmVCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlT
dGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgSGVhcCBCeXRlcyIpKTsKKyAgICB3
ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIl9zKTsK
ICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGpzY0hlYXBCeXRlc0luVXNlKTsK
LSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRvdGFsIEJ5dGVzIG9m
IENvbW1pdHRlZCBNZW1vcnkiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQo
IlRvdGFsIEJ5dGVzIG9mIENvbW1pdHRlZCBNZW1vcnkiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0
YXRzLnZhbHVlcy5hcHBlbmQodG90YWxCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAg
IHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIl9z
KTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0Nv
bW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEZWZh
dWx0IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKCJEZWZhdWx0IE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0
cy52YWx1ZXMuYXBwZW5kKGRlZmF1bHRNYWxsb2Nab25lQnl0ZXNDb21taXR0ZWQpOwotICAgIHdl
YktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiRGlzcGF0Y2ggQ29udGludWF0aW9u
IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5k
KCJEaXNwYXRjaCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktp
dE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGlzcGF0Y2hDb250aW51YXRpb25NYWxsb2Nab25l
Qnl0ZXNDb21taXR0ZWQpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmlu
ZygiUHVyZ2VhYmxlIE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKCJQdXJnZWFibGUgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktp
dE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQocHVyZ2VhYmxlTWFsbG9jWm9uZUJ5dGVzQ29tbWl0
dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3Jp
cHQgSGVhcCBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiSmF2
YVNjcmlwdCBIZWFwIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBw
ZW5kKGpzY0hlYXBCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IFN0YWNrIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9y
eVN0YXRzLmtleXMuYXBwZW5kKCJKYXZhU2NyaXB0IFN0YWNrIEJ5dGVzIl9zKTsKICAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMp
OwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBK
SVQgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkphdmFTY3Jp
cHQgSklUIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGds
b2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZChTdHJpbmcoIlJlc2lkZW50IFNpemUiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5
cy5hcHBlbmQoIlJlc2lkZW50IFNpemUiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVl
cy5hcHBlbmQocmVzaWRlbnRTaXplKTsKICAgICAKICAgICByZXR1cm4gd2ViS2l0TWVtb3J5U3Rh
dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IDdiMjlkN2RiY2I5YWJlMmJlYmEwNmYyNDJmZmRkMWIyYzc0YTUwZTEuLjc2
ZWU2ZDI3OWI3YTcyNjU1Njk2YjFmODEwNDhhNWFhOTE0OTdkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNzgzLDcg
KzM3ODMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNr
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB3a1NlcgogICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCc6JywgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyKTsKICAgICAgICAgICAg
IGlmIChleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciA+IDApCiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJzonLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlcik7Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOiAiKTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZChleGNlcHRp
b25EZXRhaWxzLm1lc3NhZ2UpOwogICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNr
LCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBU
X0ZBSUxFRCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMDU0ZWFlNDZlMDc4ZTA2ODA1N2Fh
MzkyNDQyOWZkY2EwYjJlMjQzOC4uNDRjOGQ3NTIzYWExNGQyMjI3Y2UzZDAxNTY0MjM4ZTY2NmZh
MGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMg
Ym9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBIYXNoU2V0PFN0cgogICAgIGlmIChjb21wb25lbnRzLnNpemUoKSAhPSAyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgd2lsZGNhcmRlZE1JTUVUeXBlID0gbWFrZVN0
cmluZyhjb21wb25lbnRzWzBdLCAiLyoiKTsKKyAgICBhdXRvIHdpbGRjYXJkZWRNSU1FVHlwZSA9
IG1ha2VTdHJpbmcoY29tcG9uZW50c1swXSwgIi8qIik7CiAgICAgaWYgKGFsbG93ZWRNSU1FVHlw
ZXMuY29udGFpbnMod2lsZGNhcmRlZE1JTUVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGMwMmFlOTUxYjUwYWUyY2FkMWE5NTE3MzQ0NDVjNzA5Mzg1ZGI0
ZDIuLmY4YzlmYWI0OGI4OWRkMTdhODQyNDY2YTFjODRkYzExMjU1NTE0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMTM5Niw3ICsxMzk2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1
ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZyhG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShvcmlnaW4udG9wT3JpZ2luLmhvc3QpLCAiIGNv
bnRlbnQiKTsKKyAgICAgICAgICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoRmlsZVN5c3RlbTo6
ZW5jb2RlRm9yRmlsZU5hbWUob3JpZ2luLnRvcE9yaWdpbi5ob3N0KSwgIiBjb250ZW50Iik7CiAg
ICAgICAgICAgICBwYWdlLT5yZXF1ZXN0U3RvcmFnZVNwYWNlKHBhZ2UtPm1haW5GcmFtZSgpLT5m
cmFtZUlEKCksIG9yaWdpbi50b3BPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCksIG5hbWUsIG5h
bWUsIGN1cnJlbnRRdW90YSwgY3VycmVudFNpemUsIGN1cnJlbnRTaXplLCBzcGFjZVJlcXVpcmVk
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBx
dW90YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocXVvdGEp
OwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmNwcAppbmRleCA4ZTdhYzdmYzYzMzRmZWQ2MzllMTRkMWM4ZDgxNDdkODA2Mzc4
NWJiLi5lNDhmNTk5MjBmZTRhM2FiMzkxMTI2YTM3YzYzMjcyMTk4YTA0NGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQ5MiwxMiAr
NDkyLDEyIEBAIGNvbnN0IGNoYXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1N0cmluZygp
CiAgICAgYnVpbGRlci5hcHBlbmQoIldlYkJhY2tGb3J3YXJkTGlzdCAweCIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIC0gIiwgbV9lbnRyaWVzLnNpemUoKSwgIiBl
bnRyaWVzLCBoYXMgY3VycmVudCBpbmRleCAiLCBtX2N1cnJlbnRJbmRleCA/ICJZRVMiIDogIk5P
IiwgIiAoIiwgbV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwLCAnKScpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeDsKICAg
ICAgICAgaWYgKG1fY3VycmVudEluZGV4ICYmICptX2N1cnJlbnRJbmRleCA9PSBpKQotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKiAiKTsKKyAgICAgICAgICAgIHByZWZpeCA9
ICIgKiAiOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAtICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJpZXNbaV0tPmxvZ2dpbmdTdHJp
bmcoKSk7CisgICAgICAgICAgICBwcmVmaXggPSAiIC0gIjsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJywgcHJlZml4LCBtX2VudHJpZXNbaV0tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCJcbiIsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTBjZmZhNWNjYjYw
MGExNzg5MjE1ZDk0MTJiYmQzYWFhNmE2ZWVhNC4uYmE5MzBmYTRlNzY3M2I1ZDUyZTJmNGQ1YWMz
OWE1Y2M0ZmMzYzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIGlmIChtX21lbW9y
eVNhbXBsZXJFbmFibGVkKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1w
bGVMb2dTYW5kYm94SGFuZGxlOyAgICAgICAgCiAgICAgICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxU
aW1lOjpub3coKTsKLSAgICAgICAgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmlu
ZygiV2ViUHJvY2VzcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obm93LnNlY29u
ZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgInBpZCIsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CisgICAgICAgIGF1dG8gc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQ
cm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNl
RXBvY2goKS5zZWNvbmRzKCkpLCAicGlkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsK
ICAgICAgICAgc2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOwogICAgICAgICAKICAgICAg
ICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIo
c2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxl
ckludGVydmFsKSwgMCk7CkBAIC0xNDc5LDcgKzE0NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzdGFydE1lbW9yeVNhbXBsZXIoY29uc3QgZG91YmxlIGludGVydmFsKQogICAgIC8vIEZvciBX
ZWJQcm9jZXNzCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hI
YW5kbGU7ICAgIAogICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKLSAgICBTdHJp
bmcgc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkp
KTsKKyAgICBhdXRvIHNhbXBsZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmluZygiV2ViUHJvY2VzcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obm93LnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kcygpKSk7CiAgICAgc2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOwogICAgIAog
ICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlT
YW1wbGVyKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBpbnRlcnZh
bCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDA3YjA3YjgzNTVk
ZmRiY2Y0ODVjYjMzZmFiMzY5NWU3ODdkZDE5N2UuLjE4YjA2NDNiMzMxMjY0Y2Y3NWI5ZTgxYmYy
ZWMzMzJjYmVlZWMzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAg
LTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTMwNiwxMyArMzA1LDkgQEAgcHJpdmF0
ZToKIAogICAgICAgICAvLyBQb3N0IG9uIHRoZSBjb25zb2xlIGFzIHdlbGwgdG8gYmUgY29uc2lz
dGVudCB3aXRoIHRoZSBpbnNwZWN0b3IuCiAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRp
b24oKSkgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBlcnJvck1lc3NhZ2U7Ci0gICAgICAg
ICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2Ui
KTsKLSAgICAgICAgICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiOiAiKTsK
LSAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2Via2l0V2ViUGFnZURpZFNl
bmRDb25zb2xlTWVzc2FnZShtX3dlYlBhZ2UsIE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZS50b1N0cmluZygpLCAwLCBlcnJvci5mYWlsaW5n
VVJMKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgYXV0byBlcnJvckRlc2NyaXB0aW9uID0gZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdl
ID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiLCBlcnJvckRlc2NyaXB0aW9u
LmlzRW1wdHkoKSA/ICIiIDogIjogIiwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgICAgICAgICB3
ZWJraXRXZWJQYWdlRGlkU2VuZENvbnNvbGVNZXNzYWdlKG1fd2ViUGFnZSwgTWVzc2FnZVNvdXJj
ZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCAwLCBlcnJvci5m
YWlsaW5nVVJMKCkuc3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIxN2E3NGE0MzZhZTNkZTRm
YjUyZjhmNTUzY2Y4MTE1ODA3ZDA5MDcuLjViMGNmMDRhM2Q2NTJhN2RkYmJiMDI4ZTdiMjE0NWNk
MGYwN2YwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0yMDcyLDcgKzIwNzIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFBhZ2Vab29tRmFjdG9y
KGRvdWJsZSB6b29tRmFjdG9yKQogc3RhdGljIHZvaWQgZHVtcEhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtJiBpdGVtLCBzaXplX3QgaW5kZW50LCBib29sIGlzQ3VycmVudEl0ZW0sIFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKICAgICBp
ZiAoaXNDdXJyZW50SXRlbSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJj
dXJyLT4gICIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiY3Vyci0+ICAiKTsKICAg
ICBlbHNlIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRlbnQ7ICsraSkKICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CkBAIC0yMDg1LDIzICsyMDg1LDE5
IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgc2l6ZV90
IGluZGVudCwgYm9vbCBpc0N1cnJlbnRJdGVtCiAgICAgICAgICAgICBzdGFydCA9IDA7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHN0YXJ0ICs9IGRpcmVjdG9yeU5hbWUubGVuZ3RoKCk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGZpbGUgdGVzdCk6Iik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RhcnQpKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIihmaWxlIHRlc3QpOiIsIFN0cmluZ1ZpZXcg
eyB1cmwuc3RyaW5nKCkgfS5zdWJzdHJpbmcoc3RhcnQpKTsKICAgICB9IGVsc2UKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpKTsKLSAgICAKKwogICAgIGF1dG8mIHRh
cmdldCA9IGl0ZW0udGFyZ2V0KCk7Ci0gICAgaWYgKHRhcmdldC5sZW5ndGgoKSkgewotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoaW4gZnJhbWUgXCIiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQodGFyZ2V0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcIikiKTsKLSAgICB9Ci0gICAgCisgICAgaWYgKHRhcmdldC5sZW5ndGgoKSkK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAoaW4gZnJhbWUgXCIiLCB0YXJnZXQsICJc
IikiKTsKKwogICAgIGlmIChpdGVtLmlzVGFyZ2V0SXRlbSgpKQotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAgKipuYXYgdGFyZ2V0KioiKTsKLSAgICAKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgKipuYXYgdGFyZ2V0KioiKTsKKwogICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgIAorCiAgICAgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+IGNo
aWxkcmVuOwogICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaXRlbS5jaGlsZHJl
bigpLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGl0ZW0uY2hpbGRyZW4oKSkKQEAg
LTM3MzAsMjYgKzM3MjYsMTggQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUKIHZvaWQgV2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVz
IGluY2x1ZGVDaGlsZEZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjYWxsYmFjaykKIHsKICAgICBzd2l0Y2ggKGluY2x1ZGVDaGlsZEZyYW1lcykgewotICAg
IGNhc2UgQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6Tm86IHsKLSAgICAgICAg
U3RyaW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7Ci0g
ICAgICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CisgICAgY2FzZSBDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzOjpObzoKKyAgICAgICAgY2FsbGJhY2sobV9tYWluRnJhbWUtPmNv
bnRlbnRzQXNTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbnRl
bnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6OlllczogeworICAgIGNhc2UgQ29udGVudEFz
U3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6WWVzOgogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHRSZW5k
ZXJlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJv
bUNvcmVGcmFtZSgqZnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcblxuIik7
Ci0KLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh3ZWJGcmFtZS0+Y29udGVudHNBc1N0
cmluZygpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cihtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dFJlbmRlcmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHdlYkZy
YW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKSkKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIiIDogIlxuXG4iLCB3ZWJGcmFtZS0+
Y29udGVudHNBc1N0cmluZygpKTsKICAgICAgICAgfQotCiAgICAgICAgIGNhbGxiYWNrKGJ1aWxk
ZXIudG9TdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICB9CiB9CiAKICNpZiBF
TkFCTEUoTUhUTUwpCkBAIC0zNzcwLDggKzM3NTgsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0
aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICB9Ci0KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAu
Y3BwCmluZGV4IDk1ZWYyMjk0YTk3NmY4NDRlYzNhNDk1ZWJiYmUzYjNmZDk2YTc0ZDcuLmVmOWQx
Y2U2ZmUyMGI5Nzc2NTQwOWY2NjAwNzdjMDY4OWFmODk2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKQEAgLTYzLDEwICs2Myw4IEBAIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oCiB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCi0gICAgLy8g
U2Vzc2lvbiBuYW1lIHNob3VsZCBiZSBzaG9ydCBlbm91Z2ggZm9yIHNoYXJlZCBtZW1vcnkgcmVn
aW9uIG5hbWUgdG8gYmUgdW5kZXIgdGhlIGxpbWl0LCBvdGVocndpc2Ugc2FuZGJveCBydWxlcyB3
b24ndCB3b3JrIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNjQyODUyPikuCi0gICAgU3RyaW5nIHNl
c3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0IFRlc3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpKTsKLQotICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAvLyBTZXNz
aW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24g
bmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0
IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KKyAgICBhdXRvIHNlc3Npb24g
PSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24obWFrZVN0cmluZygiV2ViS2l0
IFRlc3QtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
IAogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlOwog
ICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29r
aWVBUEkoKSkgewpAQCAtODYsMTMgKzg0LDEzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAg
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJC
YXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNy
ZWF0ZUNGU3RyaW5nKCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlm
aWVyQmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IHN0b3JhZ2VTZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3Jl
OjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oaWRlbnRpZmllci5nZXQoKSk7CiAgICAgZWxz
ZQotICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoY2ZJZGVudGlmaWVyLmdldCgp
KTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKGlkZW50aWZpZXIuZ2V0KCkp
OwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2U7
CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNv
b2tpZUFQSSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDJlZWVmNzAyZWRjMzYzMTZmNDViNjAx
M2ExMDVmNzYwNDNkMzM0MDUuLjhlYTIxYjQ0NDM2MmI5ZDQzOTYyOTNhYTEwYWE1OWUwYmE2NDFi
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0zNzIsMjMgKzM3MiwxNiBAQCBzdGF0aWMgUmVndWxh
ckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBudW1MYWJlbHM7IGkrKykgewogICAgICAgICAgICAgU3RyaW5nIGxhYmVs
ID0gW2xhYmVscyBvYmplY3RBdEluZGV4OmldOwogCi0gICAgICAgICAgICBib29sIHN0YXJ0c1dp
dGhXb3JkQ2hhciA9IGZhbHNlOwotICAgICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyID0g
ZmFsc2U7Ci0gICAgICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkgIT0gMCkgewotICAgICAgICAg
ICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwu
c3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXIg
PSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAt
IDEsIDEpKSA+PSAwOworICAgICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9
IGZhbHNlOworICAgICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHN0YXJ0
c1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJp
bmcoMCwgMSkpID49IDA7CisgICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0g
d29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAx
LCAxKSkgPj0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KGkgIT0gMCkKLSAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCgnfCcpOwogICAgICAgICAg
ICAgLy8gU2VhcmNoIGZvciB3b3JkIGJvdW5kYXJpZXMgb25seSBpZiBsYWJlbCBzdGFydHMvZW5k
cyB3aXRoICJ3b3JkIGNoYXJhY3RlcnMiLgotICAgICAgICAgICAgLy8gSWYgd2UgYWx3YXlzIHNl
YXJjaGVkIGZvciB3b3JkIGJvdW5kYXJpZXMsIHRoaXMgd291bGRuJ3Qgd29yayBmb3IgbGFuZ3Vh
Z2VzCi0gICAgICAgICAgICAvLyBzdWNoIGFzIEphcGFuZXNlLgotICAgICAgICAgICAgaWYgKHN0
YXJ0c1dpdGhXb3JkQ2hhcikKLSAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwo
IlxcYiIpOwotICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQobGFiZWwpOwotICAgICAgICAgICAg
aWYgKGVuZHNXaXRoV29yZENoYXIpCi0gICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRl
cmFsKCJcXGIiKTsKKyAgICAgICAgICAgIC8vIElmIHdlIGFsd2F5cyBzZWFyY2hlZCBmb3Igd29y
ZCBib3VuZGFyaWVzLCB0aGlzIHdvdWxkbid0IHdvcmsgZm9yIGxhbmd1YWdlcyBzdWNoIGFzIEph
cGFuZXNlLgorICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQoaSA/ICJ8IiA6ICIiLCBzdGFydHNX
aXRoV29yZENoYXJhY3RlciA/ICJcXGIiIDogIiIsIGxhYmVsLCBlbmRzV2l0aFdvcmRDaGFyYWN0
ZXIgPyAiXFxiIiA6ICIiKTsKICAgICAgICAgfQogICAgICAgICBwYXR0ZXJuLmFwcGVuZCgnKScp
OwogICAgICAgICByZXN1bHQgPSBuZXcgUmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmlu
ZygpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IGZmYzA4MzNmYmM1MTg2N2E5Zjc0ZmJiNjRh
YTFiOWJlZDBiMjI0ZGUuLmVkMzc3NmIwYzAxYjYzODFmYzVjNjcyOWM5MTY3OWVmNzkxM2VhYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTYwNiwx
MyArNjA2LDEzIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NLZXlib2FyZFNob3J0
Y3V0KFZBUklBTlQgdkNoaWxkLCBfX2RlcmVmX29wdF9vdXQKICAgICAgICAgLy8gQ3RybCtBbHQr
U2hpZnQrTWV0YStrZXkuIE1TRE4gc3RhdGVzIHRoYXQga2V5Ym9hcmQgc2hvcnRjdXQgc3RyaW5n
cwogICAgICAgICAvLyBzaG91bGQgbm90IGJlIGxvY2FsaXplZCBhbmQgZGVmaW5lcyB0aGUgc2Vw
YXJhdG9yIGFzICIrIi4KICAgICAgICAgaWYgKG1vZGlmaWVycy5jb250YWlucyhQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcjo6Q29udHJvbEtleSkpCi0gICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmll
cnNCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkN0cmwrIik7CisgICAgICAgICAgICBhY2Nlc3NLZXlN
b2RpZmllcnNCdWlsZGVyLmFwcGVuZCgiQ3RybCsiKTsKICAgICAgICAgaWYgKG1vZGlmaWVycy5j
b250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KSkKLSAgICAgICAgICAgIGFj
Y2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQWx0KyIpOworICAgICAgICAg
ICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci5hcHBlbmQoIkFsdCsiKTsKICAgICAgICAgaWYg
KG1vZGlmaWVycy5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpKQot
ICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTaGlm
dCsiKTsKKyAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kKCJTaGlm
dCsiKTsKICAgICAgICAgaWYgKG1vZGlmaWVycy5jb250YWlucyhQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6TWV0YUtleSkpCi0gICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnNCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIldpbisiKTsKKyAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxk
ZXIuYXBwZW5kKCJXaW4rIik7CiAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVycyA9IGFjY2Vzc0tl
eU1vZGlmaWVyc0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgKnNob3J0Y3V0ID0gQlN0
cmluZyhTdHJpbmcoYWNjZXNzS2V5TW9kaWZpZXJzICsgYWNjZXNzS2V5KSkucmVsZWFzZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAwMGEwMjJkNGMxMzg5NGI2YWI0MGI3
MDIwY2E5ZmI1NjMzZTgzNmQ3Li5jMTFhYzlkOTdkYmFmZTJhM2YyODQ3N2NjZTA0NDFkOWI5Nzcw
MzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjI4MCw4ICs2MjgwLDgg
QEAgc3RhdGljIHZvaWQgY29tcG9zaXRpb25Ub1VuZGVybGluZXMoY29uc3QgVmVjdG9yPERXT1JE
PiYgY2xhdXNlcywgY29uc3QgVmVjdG9yPEIKICNkZWZpbmUgQVBQRU5EX0FSR1VNRU5UX05BTUUo
bmFtZSkgXAogICAgIGlmIChscGFyYW0gJiBuYW1lKSB7IFwKICAgICAgICAgaWYgKG5lZWRzQ29t
bWEpIFwKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOyBcCi0gICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCNuYW1lKTsgXAorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiLCAiKTsgXAorICAgICAgICByZXN1bHQuYXBwZW5kKCNuYW1lKTsgXAogICAgICAgICBuZWVk
c0NvbW1hID0gdHJ1ZTsgXAogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVhYjA4M2YxZTA3ZDQ1ZTg4YWRiMTQwMWRiYjRjMjE1YjUz
Nzg1NGEuLjFjZmYwNTJkYTM0MzcxZDk1YzhmYjg3NWU3NzkyZDAwMDViNWI0ZWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nQnVpbGRlci5jcHA6CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRl
cmFsLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVDb21tYW5kKTogVXNlIG1ha2VTdHJp
bmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
IE1hZGUgbG90cyBvZiBmaXhlcyB0byBjb2RlIGluc2lkZSAjaWYgVEVTVF9PVVRQVVQsCisgICAg
ICAgIHdoaWNoIGhhc24ndCBjb21waWxlZCBpbiBhIGxvbmcgdGltZS4gU3RpbGwgbm90IDEwMCUg
dGhlcmUsIGJ1dCBjbG9zZXIuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1RleHRDb2RlYy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0RGVjb2RlKTogVXNl
IGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0IGNvbnN0KTogRGl0
dG8uCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4
IGQ2ZTA1ZWMzMzdmZDQwNjNkZWE1YTljNGJiNTRiN2RkNTIyMDE4OWIuLjY1ZDVmZGQ1ZWE1YWM2
YTBjMDI5MzE0ZjRlMDhlYzA5YWQwYTQwNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgVEVTVChTdHJp
bmdCdWlsZGVyVGVzdCwgVG9BdG9tU3RyaW5nT25FbXB0eSkKICAgICB9CiAgICAgeyAvLyBDbGVh
cmVkIFN0cmluZ0J1aWxkZXIuCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJLaXQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIldlYktpdCIpOwogICAgICAgICBidWlsZGVyLmNsZWFyKCk7CiAgICAgICAgIEF0b21TdHJp
bmcgYXRvbVN0cmluZyA9IGJ1aWxkZXIudG9BdG9tU3RyaW5nKCk7CiAgICAgICAgIEVYUEVDVF9F
UShlbXB0eUF0b20oKSwgYXRvbVN0cmluZyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCA1ODQ4YzJhOTMzZjU5NzY5Nzc0NTdk
NmJhODJiMjUwMTdmMWU0YTI5Li4wODMxYWJjOTM2NGFkNzdhYzdlMzdhMzAwZmM1YjU4YTA4ZTUw
ZTYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKQEAgLTEwMSwxMyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRUZXN0U3RhdGUo
KQogCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIHBheWxvYWQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBjb21tYW5kOwotICAgIGNv
bW1hbmQuYXBwZW5kTGl0ZXJhbCgiZWNobyBcIiIpOwotICAgIGNvbW1hbmQuYXBwZW5kKHBheWxv
YWQpOwotICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgiXCIgPiAiKTsKLSAgICBjb21tYW5kLmFw
cGVuZChwYXRoKTsKLQotICAgIHJldHVybiBjb21tYW5kLnRvU3RyaW5nKCk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoImVjaG8gXCIiLCBwYXlsb2FkLCAiXCIgPiAiLCBwYXRoKTsKIH0KIAogc3Rh
dGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjYz
LDExICsyNTcsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKICAg
ICB9KTsKIAogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAg
ICAgICBTdHJpbmdCdWlsZGVyIGNvbW1hbmQ7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJh
bCgicm0gLWYgIik7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kKHRlbXBGaWxlUGF0aCgpKTsKLQot
ICAgICAgICBhdXRvIHJjID0gc3lzdGVtKGNvbW1hbmQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgYXV0byByYyA9IHN5c3RlbShtYWtlU3RyaW5nKCJybSAtZiAiLCB0ZW1wRmls
ZVBhdGgoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAg
ICAgICBpZiAocmMgPT0gLTEpCiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpAQCAtMzIw
LDExICszMTAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVu
RGVsZXRlKQogICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNo
KFt0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBjb21tYW5kOwotICAg
ICAgICBjb21tYW5kLmFwcGVuZExpdGVyYWwoInJtIC1mICIpOwotICAgICAgICBjb21tYW5kLmFw
cGVuZCh0ZW1wRmlsZVBhdGgoKSk7Ci0KLSAgICAgICAgYXV0byByYyA9IHN5c3RlbShjb21tYW5k
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGF1dG8gcmMgPSBzeXN0ZW0obWFr
ZVN0cmluZygicm0gLWYgIiwgdGVtcEZpbGVQYXRoKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBBU1NFUlRfTkUocmMsIC0xKTsKICAgICAgICAgaWYgKHJjID09IC0xKQogICAgICAgICAgICAg
ZGlkRmluaXNoID0gdHJ1ZTsKQEAgLTM1OSwxMSArMzQ1LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9y
VGVzdCwgRGV0ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKICAgICB9KTsKIAogICAg
IHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAgICAgICBTdHJpbmdC
dWlsZGVyIGNvbW1hbmQ7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgicm0gLWYgIik7
Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kKHRlbXBGaWxlUGF0aCgpKTsKLQotICAgICAgICBhdXRv
IHJjID0gc3lzdGVtKGNvbW1hbmQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
YXV0byByYyA9IHN5c3RlbShtYWtlU3RyaW5nKCJybSAtZiAiLCB0ZW1wRmlsZVBhdGgoKSkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAgICAgICBpZiAocmMg
PT0gLTEpCiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwCmluZGV4IDY1NWY2Y2IxZWRiMWU1NjUzMDli
M2Q1NjhmMmIzYzFhYjkzNmE5NzYuLjhkYzlhYTYwNDA1YjI2M2JlZjM0YjdhNmVkODhjNzE4ZWY2
NjVhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dn
aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIEluaXRpYWxpemF0aW9u
KQogICAgIFdURkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyh0ZXN0TG9nQ2hh
bm5lbHMsIGxvZ0NoYW5uZWxDb3VudCwgIkNoYW5uZWwxPWZvbyIpOwogICAgIEVYUEVDVF9FUShU
ZXN0Q2hhbm5lbDEubGV2ZWwsIFdURkxvZ0xldmVsOjpFcnJvcik7CiAjaWYgVEVTVF9PVVRQVVQK
LSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiVW5rbm93biBsb2dnaW5nIGxldmVs
OiBmb28iLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2UoIlVua25vd24gbG9nZ2luZyBsZXZlbDogZm9vIikpOwogI2VuZGlmCiAKICAg
ICBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdHJpbmcodGVzdExvZ0NoYW5uZWxz
LCBsb2dDaGFubmVsQ291bnQsICJDaGFubmVsMT13YXJuaW5nIik7CkBAIC0xOTYsNDAgKzE5Niw0
MCBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIFdURldpbGxMb2dXaXRoTGV2ZWwpCiBURVNUX0YoTG9n
Z2luZ1Rlc3QsIExPRykKIHsKICAgICBMT0coQ2hhbm5lbDEsICJMb2cgbWVzc2FnZS4iKTsKLSAg
ICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiTG9nIE1lc3NhZ2UuIiwgZmFsc2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJMb2cg
TWVzc2FnZS4iKSk7CiB9CiAKIFRFU1RfRihMb2dnaW5nVGVzdCwgTE9HX1dJVEhfTEVWRUwpCiB7
CiAgICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJvciwgIkdvIGFu
ZCBib2lsIHlvdXIgYm90dG9tcywgeW91IHNvbnMgb2YgYSBzaWxseSBwZXJzb24uIik7Ci0gICAg
RVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoInNvbnMgb2YgYSBzaWxseSBwZXJzb24uIiwg
ZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlD
YXNlKCJzb25zIG9mIGEgc2lsbHkgcGVyc29uLiIpKTsKIAogICAgIExPR19XSVRIX0xFVkVMKENo
YW5uZWwxLCBXVEZMb2dMZXZlbDo6V2FybmluZywgIllvdSBkb24ndCBmcmlnaHRlbiB1cywgRW5n
bGlzaCBwaWcgZG9ncy4iKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsK
IAogICAgIFdURlNldExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6
SW5mbyk7CiAgICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpXYXJuaW5n
LCAiSSdtIEZyZW5jaC4gV2h5IGRvIHlvdSB0aGluayBJIGhhdmUgdGhpcyBvdXRyYWdlb3VzIGFj
Y2VudCwgeW91IHNpbGx5IGtpbmc/Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFp
bnMoIm91dHJhZ2VvdXMgYWNjZW50IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQo
KS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJvdXRyYWdlb3VzIGFjY2VudCIpKTsKIAogICAg
IExPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RGVidWcsICJZb3UgZG9uJ3Qg
ZnJpZ2h0ZW4gdXMgd2l0aCB5b3VyIHNpbGx5IGtuZWVzLWJlbnQgcnVubmluZyBhcm91bmQgYWR2
YW5jaW5nIGJlaGF2aW9yISIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkp
OwogCiAgICAgV1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVs
OjpEZWJ1Zyk7CiAgICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1
ZywgIkdvIGFuZCB0ZWxsIHlvdXIgbWFzdGVyIHRoYXQgd2UgaGF2ZSBiZWVuIGNoYXJnZWQgYnkg
R29kIHdpdGggYSBzYWNyZWQgcXVlc3QuIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29u
dGFpbnMoInNhY3JlZCBxdWVzdCIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCku
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2FjcmVkIHF1ZXN0IikpOwogfQogCiBURVNUX0Yo
TG9nZ2luZ1Rlc3QsIFJFTEVBU0VfTE9HKQogewogICAgIFJFTEVBU0VfTE9HKENoYW5uZWwxLCAi
TG9nIG1lc3NhZ2UuIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkxvZyBN
ZXNzYWdlLiIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZSgiTG9nIE1lc3NhZ2UuIikpOwogfQogCiBURVNUX0YoTG9nZ2luZ1Rlc3Qs
IFJFTEVBU0VfTE9HX0lGKQogewogICAgIGJvb2wgZW5hYmxlZCA9IHRydWU7CiAgICAgUkVMRUFT
RV9MT0dfSUYoZW5hYmxlZCwgQ2hhbm5lbDEsICJZb3VyIG1vdGhlciB3YXMgYSBoYW1zdGVyLCIp
OwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJoYW1zdGVyLCIsIGZhbHNlKSk7
CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiaGFt
c3RlciwiKSk7CiAKICAgICBlbmFibGVkID0gZmFsc2U7CiAgICAgUkVMRUFTRV9MT0dfSUYoZW5h
YmxlZCwgQ2hhbm5lbDEsICJhbmQgeW91ciBmYXRoZXIgc21lbHQgb2YgZWxkZXJiZXJyaWVzIC4u
LiIpOwpAQCAtMjM5LDI4ICsyMzksMjggQEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBSRUxFQVNFX0xP
R19JRikKIFRFU1RfRihMb2dnaW5nVGVzdCwgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTCkKIHsKICAg
ICBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJyb3IsICJZ
b3UgZG9uJ3QgZnJpZ2h0ZW4gdXMsIEVuZ2xpc2ggcGlnIGRvZ3MuIik7Ci0gICAgRVhQRUNUX1RS
VUUob3V0cHV0KCkuY29udGFpbnMoInBpZyBkb2dzLiIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RS
VUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgicGlnIGRvZ3MuIikpOwogCiAg
ICAgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9nTGV2ZWw6Oldhcm5pbmcs
ICJHbyBhbmQgYm9pbCB5b3VyIGJvdHRvbXMsIHlvdSBzb25zIG9mIGEgc2lsbHkgcGVyc29uLiIp
OwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwogCiAgICAgV1RGU2V0TG9n
Q2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpJbmZvKTsKICAgICBSRUxF
QVNFX0xPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6V2FybmluZywgIkknbSBG
cmVuY2guIFdoeSBkbyB5b3UgdGhpbmsgSSBoYXZlIHRoaXMgb3V0cmFnZW91cyBhY2NlbnQsIHlv
dSBzaWxseSBraW5nPyIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJvdXRy
YWdlb3VzIGFjY2VudCIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSgib3V0cmFnZW91cyBhY2NlbnQiKSk7CiAKICAgICBSRUxFQVNF
X0xPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RGVidWcsICJZb3UgZG9uJ3Qg
ZnJpZ2h0ZW4gdXMgd2l0aCB5b3VyIHNpbGx5IGtuZWVzLWJlbnQgcnVubmluZyBhcm91bmQgYWR2
YW5jaW5nIGJlaGF2aW9yISIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkp
OwogCiAgICAgV1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVs
OjpEZWJ1Zyk7CiAgICAgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9nTGV2
ZWw6OkRlYnVnLCAiR28gYW5kIHRlbGwgeW91ciBtYXN0ZXIgdGhhdCB3ZSBoYXZlIGJlZW4gY2hh
cmdlZCBieSBHb2Qgd2l0aCBhIHNhY3JlZCBxdWVzdC4iKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRw
dXQoKS5jb250YWlucygic2FjcmVkIHF1ZXN0IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShv
dXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzYWNyZWQgcXVlc3QiKSk7CiB9CiAK
IFRFU1RfRihMb2dnaW5nVGVzdCwgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTF9JRikKIHsKICAgICBi
b29sIGVuYWJsZWQgPSB0cnVlOwogICAgIFJFTEVBU0VfTE9HX1dJVEhfTEVWRUxfSUYoZW5hYmxl
ZCwgQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJvciwgIklzIHRoZXJlIHNvbWVvbmUgZWxzZSB1
cCB0aGVyZSB0aGF0IHdlIGNhbiB0YWxrIHRvPyIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgp
LmNvbnRhaW5zKCJzb21lb25lIGVsc2UiLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1
dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInNvbWVvbmUgZWxzZSIpKTsKIAogICAgIFJF
TEVBU0VfTE9HX1dJVEhfTEVWRUxfSUYoZW5hYmxlZCwgQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpE
ZWJ1ZywgIk5vLCBub3cgZ28gYXdheSIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVu
Z3RoKCkpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VyKQog
ICAgIFdURlNldExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJy
b3IpOwogICAgIEVYUEVDVF9UUlVFKGxvZ2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEsIFdURkxv
Z0xldmVsOjpFcnJvcikpOwogICAgIGxvZ2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiWW91J3Jl
IHVzaW5nIGNvY29udXRzISIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJZ
b3UncmUgdXNpbmcgY29jb251dHMhIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQo
KS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJZb3UncmUgdXNpbmcgY29jb251dHMhIikpOwog
ICAgIGxvZ2dlci0+d2FybmluZyhUZXN0Q2hhbm5lbDEsICJZb3UncmUgdXNpbmcgY29jb251dHMh
Iik7CiAgICAgRVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAgICAgbG9nZ2VyLT5p
bmZvKFRlc3RDaGFubmVsMSwgIllvdSdyZSB1c2luZyBjb2NvbnV0cyEiKTsKQEAgLTI4NywxMyAr
Mjg3LDEzIEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VyKQogICAgIEVYUEVDVF9FUSgwdSwg
b3V0cHV0KCkubGVuZ3RoKCkpOwogCiAgICAgbG9nZ2VyLT5lcnJvcihUZXN0Q2hhbm5lbDEsIExv
Z2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIkxvZ2dpbmdUZXN0OjpMb2dnZXIiLCB0aGlzKSAsICI6
IHRlc3Qgb3V0cHV0Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkxvZ2dp
bmdUZXN0OjpMb2dnZXIoIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJMb2dnaW5nVGVzdDo6TG9nZ2VyKCIpKTsKIAogICAgIGxv
Z2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiV2hhdCBpcyAiLCAxLCAiICsgIiAsIDEyLjVGLCAi
PyIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJXaGF0IGlzIDEgKyAxMi41
PyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FT
Q0lJQ2FzZSgiV2hhdCBpcyAxICsgMTIuNT8iKSk7CiAKICAgICBsb2dnZXItPmVycm9yKFRlc3RD
aGFubmVsMSwgIldoYXQsICIsICJyaWRkZW4gb24gYSBob3JzZT8iKTsKLSAgICBFWFBFQ1RfVFJV
RShvdXRwdXQoKS5jb250YWlucygiV2hhdCwgcmlkZGVuIG9uIGEgaG9yc2U/IiwgZmFsc2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJXaGF0
LCByaWRkZW4gb24gYSBob3JzZT8iKSk7CiAKICAgICBsb2dnZXItPnNldEVuYWJsZWQodGhpcywg
ZmFsc2UpOwogICAgIEVYUEVDVF9GQUxTRShsb2dnZXItPmVuYWJsZWQoKSk7CkBAIC0zMDMsMTEg
KzMwMywxMSBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ2dlcikKICAgICBsb2dnZXItPnNldEVu
YWJsZWQodGhpcywgdHJ1ZSk7CiAgICAgRVhQRUNUX1RSVUUobG9nZ2VyLT5lbmFibGVkKCkpOwog
ICAgIGxvZ2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiWW91J3ZlIGdvdCAiLCAyLCAiIGVtcHR5
IGhhbHZlcyBvZiAiLCAiY29jb251dHMhIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29u
dGFpbnMoIllvdSd2ZSBnb3QgMiBlbXB0eSBoYWx2ZXMgb2YgY29jb251dHMhIiwgZmFsc2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJZb3Un
dmUgZ290IDIgZW1wdHkgaGFsdmVzIG9mIGNvY29udXRzISIpKTsKIAogICAgIFdURlNldExvZ0No
YW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJyb3IpOwogICAgIGxvZ2dl
ci0+bG9nQWx3YXlzKFRlc3RDaGFubmVsMSwgIkkgc2hhbGwgdGF1bnQgeW91IGEgc2Vjb25kIHRp
bWUhIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkkgc2hhbGwgdGF1bnQg
eW91IGEgc2Vjb25kIHRpbWUhIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJJIHNoYWxsIHRhdW50IHlvdSBhIHNlY29uZCB0aW1l
ISIpKTsKIAogICAgIGxvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGxvZ2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJvcikp
OwpAQCAtMzIyLDEyICszMjIsMTIgQEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dnZXIpCiAgICAg
QXRvbVN0cmluZyBzdHJpbmcxKCJBdG9tU3RyaW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwogICAgIGNvbnN0IEF0b21TdHJpbmcgc3RyaW5nMigiY29uc3QgQXRvbVN0cmlu
ZyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBsb2dnZXItPmxvZ0Fs
d2F5cyhUZXN0Q2hhbm5lbDEsIHN0cmluZzEsICIgYW5kICIsIHN0cmluZzIpOwotICAgIEVYUEVD
VF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJBdG9tU3RyaW5nIGFuZCBjb25zdCBBdG9tU3RyaW5n
IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVND
SUlDYXNlKCJBdG9tU3RyaW5nIGFuZCBjb25zdCBBdG9tU3RyaW5nIikpOwogCiAgICAgU3RyaW5n
IHN0cmluZzMoIlN0cmluZyIpOwogICAgIGNvbnN0IFN0cmluZyBzdHJpbmc0KCJjb25zdCBTdHJp
bmciKTsKICAgICBsb2dnZXItPmxvZ0Fsd2F5cyhUZXN0Q2hhbm5lbDEsIHN0cmluZzMsICIgYW5k
ICIsIHN0cmluZzQpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJTdHJpbmcg
YW5kIGNvbnN0IFN0cmluZyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiU3RyaW5nIGFuZCBjb25zdCBTdHJpbmciKSk7CiB9CiAK
IFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VySGVscGVyKQpAQCAtMzM1LDI2ICszMzUsMjYgQEAg
VEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dnZXJIZWxwZXIpCiAgICAgRVhQRUNUX1RSVUUobG9nZ2Vy
KCkuZW5hYmxlZCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIkxvZ2dpbmdUZXN0OjpUZXN0Qm9keSgiKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiTG9nZ2luZ1Rlc3Q6OlRlc3RCb2R5KCIpOwogICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obG9nSWRlbnRpZmllcigpKSwgYnVpbGRlcik7
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiki
KTsKICAgICBTdHJpbmcgc2lnbmF0dXJlID0gYnVpbGRlci50b1N0cmluZygpOwogCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBFWFBFQ1RfVFJVRSh0aGlzLT5vdXRwdXQoKS5j
b250YWlucyhzaWduYXR1cmUsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0
KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShzaWduYXR1cmUpKTsKIAogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIldlbGNvbWUgYmFjayIsICIgbXkgZnJpZW5kcyIsICIgdG8gdGhl
IHNob3ciLCAiIHRoYXQgbmV2ZXIgZW5kcyIpOwogICAgIFN0cmluZyByZXN1bHQgPSB0aGlzLT5v
dXRwdXQoKTsKLSAgICBFWFBFQ1RfVFJVRShyZXN1bHQuY29udGFpbnMoc2lnbmF0dXJlLCBmYWxz
ZSkpOwotICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5jb250YWlucygidG8gdGhlIHNob3cgdGhhdCBu
ZXZlciIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2Uoc2lnbmF0dXJlKSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zSWdu
b3JpbmdBU0NJSUNhc2UoInRvIHRoZSBzaG93IHRoYXQgbmV2ZXIiKSk7CiAKICAgICBXVEZTZXRM
b2dDaGFubmVsTGV2ZWwoJlRlc3RDaGFubmVsMSwgV1RGTG9nTGV2ZWw6Oldhcm5pbmcpOwogCiAg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJXZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRl
bmQiKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiV2UncmUgc28gZ2xhZCB5
b3UgY291bGQgYXR0ZW5kIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJXZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiKSk7
CiAKICAgICBXQVJOSU5HX0xPRyhMT0dJREVOVElGSUVSLCAiQ29tZSBpbnNpZGUhICIsICJDb21l
IGluc2lkZSEiKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiQ29tZSBpbnNp
ZGUhIENvbWUgaW5zaWRlISIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiQ29tZSBpbnNpZGUhIENvbWUgaW5zaWRlISIpKTsKIAog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJiZSBjYXJlZnVsIGFzIHlvdSBwYXNzLiIpOwog
ICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwpAQCAtMzc5LDEzICszNzksMTIg
QEAgcHVibGljOgogICAgIFdURkxvZ0xldmVsIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
TGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9n
Q2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbG9nTWVz
c2FnZSkgZmluYWwKKyAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYg
Y2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlY3RvcjxKU09OTG9nVmFsdWU+JiYgbG9nTWVz
c2FnZSkgZmluYWwKICAgICB7CiAgICAgICAgIG1fbG9nQnVmZmVyLmFwcGVuZChsb2dNZXNzYWdl
KTsKICAgICAgICAgbV9sYXN0Q2hhbm5lbCA9IGNoYW5uZWw7CiAgICAgICAgIG1fbGFzdExldmVs
ID0gbGV2ZWw7CiAgICAgfQotCiAgICAgU3RyaW5nQnVpbGRlciBtX2xvZ0J1ZmZlcjsKICAgICBX
VEZMb2dDaGFubmVsIG1fbGFzdENoYW5uZWw7CiAgICAgV1RGTG9nTGV2ZWwgbV9sYXN0TGV2ZWwg
eyBXVEZMb2dMZXZlbDo6RXJyb3IgfTsKQEAgLTQwMCwxNCArMzk5LDE0IEBAIFRFU1RfRihMb2dn
aW5nVGVzdCwgTG9nT2JzZXJ2ZXIpCiAKICAgICBsb2dnZXIoKS5hZGRPYnNlcnZlcihvYnNlcnZl
cik7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGVzdGluZyAxLCAyLCAzIik7Ci0g
ICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIs
IGZhbHNlKSk7Ci0gICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXIubG9nKCkuY29udGFpbnMoInRlc3Rp
bmcgMSwgMiwgMyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCkuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgidGVzdGluZyAxLCAyLCAzIikpOworICAgIEVYUEVDVF9U
UlVFKG9ic2VydmVyLmxvZygpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInRlc3RpbmcgMSwg
MiwgMyIpKTsKICAgICBFWFBFQ1RfU1RSRVEob2JzZXJ2ZXIuY2hhbm5lbCgpLm5hbWUsIGxvZ0No
YW5uZWwoKS5uYW1lKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihXVEZMb2dMZXZl
bDo6QWx3YXlzKSwgc3RhdGljX2Nhc3Q8aW50PihvYnNlcnZlci5sZXZlbCgpKSk7CiAKICAgICBs
b2dnZXIoKS5yZW1vdmVPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgQUxXQVlTX0xPRygidGVzdGlu
ZyAiLCAxLCAiLCAiLCAyLCAiLCAzIik7Ci0gICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCku
Y29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhp
cy0+b3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgidGVzdGluZyAxLCAyLCAzIikp
OwogICAgIEVYUEVDVF9FUSgwdSwgb2JzZXJ2ZXIubG9nKCkubGVuZ3RoKCkpOwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4dENvZGVj
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwCmlu
ZGV4IGZkMDUwNTBhYzAwODI3YmRlZGJmMmNlODY1NjIwOTNjNjFiYWYwNjEuLmE4Y2U1MTlhMDkw
YzVhMWZiMzg0MGJkZTVlODBiZWZlYjUxYjNiNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiB0ZXN0RGVjb2RlKGNvbnN0IGNoYXIqIGVuY29kaW5nTmFtZSwgc3RkOjppbml0
aWFsaXplcl9saXN0PGNvCiAgICAgICAgIGJvb2wgc2F3RXJyb3IgPSBmYWxzZTsKICAgICAgICAg
cmVzdWx0QnVpbGRlci5hcHBlbmQoZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKGNv
ZGVjLT5kZWNvZGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSwgbGFzdCwgZmFsc2UsIHNh
d0Vycm9yKSkpOwogICAgICAgICBpZiAoc2F3RXJyb3IpCi0gICAgICAgICAgICByZXN1bHRCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiBFUlJPUiIpOworICAgICAgICAgICAgcmVzdWx0QnVpbGRlci5h
cHBlbmQoIiBFUlJPUiIpOwogICAgIH0KICAgICByZXR1cm4gZXNjYXBlTm9uQVNDSUlQcmludGFi
bGVDaGFyYWN0ZXJzKHJlc3VsdEJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDAyOTQ2NWExMTk3NzU1MTMyN2M4
MGY3YTU1M2IwOTBmNGZmYTliNjMuLjY1YTNhMDRlNjMzZGM3ODcyYTdkMDVjOWI0ZWExMmEwZjMw
ZWE1OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBA
IC01NjYsNyArNTY2LDcgQEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogZWxlbWVudCkKICAgICBidWlsZGVyLmFwcGVuZChlbGVtZW50LT5yb2xlKCkt
PnN0cmluZygpLCAnXG4nKTsKIAogICAgIC8vIEZvciB0aGUgcGFyZW50IHdlIHByaW50IGl0cyBy
b2xlIGFuZCBpdHMgbmFtZSwgaWYgYXZhaWxhYmxlLgotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQVhQYXJlbnQ6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBhcmVudDogIik7CiAgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKTsKICAgICBBdGtPYmplY3QqIGF0a1BhcmVudCA9IHBhcmVudCA/IHBhcmVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKS5nZXQoKSA6IG51bGxwdHI7CiAgICAgaWYgKGF0a1BhcmVudCkgewpA
QCAtNTc1LDcgKzU3NSw3IEBAIFN0cmluZyBhdHRyaWJ1dGVzT2ZFbGVtZW50KEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIGlmIChwYXJlbnROYW1lICYmIHBhcmVudE5h
bWVbMF0pCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiAiLCBwYXJlbnROYW1lKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIihudWxsKSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwog
CiAgICAgYnVpbGRlci5hcHBlbmQoIkFYQ2hpbGRyZW46ICIsIGVsZW1lbnQtPmNoaWxkcmVuQ291
bnQoKSwgJ1xuJyk7CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYSGVscDogIik7CisgICAg
YnVpbGRlci5hcHBlbmQoIkFYSGVscDogIik7CiAKICAgICBmb3IgKGd1aW50IHRhcmdldENvdW50
ID0gMDsgdGFyZ2V0Q291bnQgPCB0YXJnZXRMaXN0LT5sZW47IHRhcmdldENvdW50KyspIHsKICAg
ICAgICAgaWYgKEF0a09iamVjdCogdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19w
dHJfYXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwgdGFyZ2V0Q291bnQpKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429481</attachid>
            <date>2021-05-23 15:48:37 -0700</date>
            <delta_ts>2021-05-23 22:06:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226137-20210523154835.patch</filename>
            <type>text/plain</type>
            <size>357904</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc4NDNmMmVjOTYxNDllMzQwOGVjNjJiMjNiOGZmYWVjMzE3NDdjLi4yOWM1YTllOGRhY2ExNzYx
MWI2MGNjMWYzYzdhNjgwODg1NzA5ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wNS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL3Rlc3RzL1BpbmdQb25n
U3RhY2tPdmVyZmxvd1Rlc3QuY3BwOgorICAgICAgICAoUGluZ1BvbmdTdGFja092ZXJmbG93T2Jq
ZWN0X2hhc0luc3RhbmNlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQpOiBSZW1v
dmUgdW5uZWNlc3NhcnkgY2FzdAorICAgICAgICBmcm9tIGNvbnN0IGNoYXIqIHRvIFN0cmluZywg
d2hpY2ggZGVmZWF0cyBvcHRpbWl6YXRpb24gYW5kIGhhcyBubyBiZW5lZml0LgorCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgIChKU0M6OlJlc3RQYXJhbWV0ZXJOb2RlOjp0b1N0cmluZyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6IFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICBSZW1vdmVkIHVubmVjZXNhcnkgdXNlIG9mIGFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcgdG8gYXBwZW5kIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc25hcHNo
b3RUeXBlVG9TdHJpbmcgYW5kIGVkZ2VUeXBlVG9TdHJpbmcsIHdoaWNoIHJldHVybiBhIGNvbnN0
IGNoYXIqIHRoYXQKKyAgICAgICAgbmV2ZXIgY29udGFpbnMgY2hhcmFjdGVycyB0aGF0IHJlcXVp
cmUgc3BlY2lhbCBxdW90aW5nIGNvbnNpZGVyYXRpb24sIHNvCisgICAgICAgIGNhbiBiZSBhcHBl
bmRlZCBlZmZpY2llbnRseSB3aXRoIHRoZSBub3JtYWwgYXBwZW5kIGZ1bmN0aW9uLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorCisgICAgICAgICoganNjLmNwcDogVXNlIGFwcG5lZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IFVzZSBhdXRvIGZvciB0
aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdl
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdXNl
IHZhcmlhZGljIGFwcGVuZCB3aGVuIHByYWN0aWNhbCBmb3IgYmV0dGVyIGVmZmljaWVuY3kuCisg
ICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1l
bnRzKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRU
b1N0cmluZyk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6Om5vdEFG
dW5jdGlvblNvdXJjZUFwcGVuZGVyKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOiBEaXR0by4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSBhdXRvIGFuZCBjdXQgZG93biBv
biByZWZlcmVuY2UgY291bnQKKyAgICAgICAgY2h1cm4gYnkgdXNpbmcgcGFzc2luZyB0aGUgU3Ry
aW5nSW1wbCB0byBtYWtlU3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0
ZSk6IERpdHRvLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6IFVzZSBtb3JlIGNvbnN0IGFuZCB1c2UgdmFyaWFkaWMKKyAgICAgICAgYXBwZW5kIGZvciBi
ZXR0ZXIgZWZmaWNpZW5jeS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKTogVXNlIGFw
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZ0pvaW5lci5oOiBEZWxldGVkIHVudXNlZCBhcHBlbmRMaXRlcmFsIGZ1bmN0aW9u
LgorICAgICAgICBVbnJlbGF0ZWQgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCwgYnV0
IGRlYWQgY29kZS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0
ZXJhbC4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmFwcGVuZExpbmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPik6IERpdHRvLgorCisgICAgICAg
ICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQ
cm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2Yg
bWFrZVN0cmluZy4KKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0
ZWNvZGVzKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0
T2Zmc2V0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisgICAgICAgIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0Ojpk
dW1wVHlwZXMgY29uc3QpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAg
ICAgICAgKEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6OnRvSlNPTlN0cmluZyBjb25zdCk6IERpdHRvLgorCiAyMDIxLTA1
LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5B
QkxFKE1BU01fUFJPQkUpIGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDViMTEzOTlhZmQ5ZDk3MzZlNThmNTBhOWMxNWU3
YWNhNGVlODMzNGMuLmI5Zjc5MWZiMDBkNTc1Y2U0YzhhZDgyZDJiMzcwMzJiNzc2ZDU4YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMjEtMDUtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgb3B0aW1pemF0
aW9uIGRvbmUgYnkgYXBwZW5kTGl0ZXJhbCBoYXMgbWluaW1hbCB2YWx1ZSBhbmQgaXMgc29tZXRo
aW5nIHdlCisgICAgICAgIGNhbiBkbyB3aXRob3V0LiBJdCBkb2VzIG5vdCBjdXQgZG93biB0aGUg
bnVtYmVyIG9mIGFsbG9jYXRpb25zLCB3aGljaCBpcyB0aGUKKyAgICAgICAgbWFpbiBjb3N0IG9m
IHRoZSBTdHJpbmdCdWlsZGVyIGNsYXNzLiBHZXR0aW5nIHJpZCBvZiB0aGUgZGlmZmVyZW50bHkg
bmFtZWQKKyAgICAgICAgYXBwZW5kTGl0ZXJhbCBpbXByb3ZlcyB0aGUgZGVzaWduIG9mIHRoZSBT
dHJpbmdCdWlsZGVyIGNsYXNzIGZvciBjYWxsZXJzLgorICAgICAgICBPdXIgZ29hbCBpcyB0byBn
ZXQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gYSBzaW5nbGUgYXBwZW5kIGZ1bmN0aW9uLgorCisg
ICAgICAgIElmIHdlIGRlY2lkZSB3ZSBuZWVkIGFuIG9wdGltaXphdGlvbiBmb3IgbGl0ZXJhbHMs
IHdlIGNhbiBjb21lIHVwIHdpdGggYQorICAgICAgICBkaWZmZXJlbnQgd2F5IHRoYXQgaXMgY29t
cGF0aWJsZSB3aXRoIGFwcGVuZC4gRm9yIGV4YW1wbGUsIHdlIGNvdWxkIGFzc3VtZQorICAgICAg
ICB0aGF0IGFueSBjaGFyIGFycmF5IGlzIGEgbGl0ZXJhbCBhbmQgY2hlY2sgdGhhdCBhdCBjb21w
aWxlIHRpbWUgaW4KKyAgICAgICAgU3RyaW5nQ29uY2F0ZW5hdGU7IHRoYXQgb3B0aW1pemF0aW9u
IHdvdWxkIHdvcmsgZm9yIGJvdGggbWFrZVN0cmluZyBhbmQKKyAgICAgICAgU3RyaW5nQnVpbGRl
ci4gT3Igd2UgY291bGQgdXNlIGEgc3RyYXRlZ3kgbGlrZSBBU0NJSUxpdGVyYWwuCisKKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpl
bmNvZGVGb3JGaWxlTmFtZSk6IFN0cmVhbWxpbmUgbG9naWMsCisgICAgICAgIGFuZCB1c2UgdmFy
aWFkaWMgYXBwZW5kIHRvIG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIHd0
Zi9KU09OVmFsdWVzLmNwcDoKKyAgICAgICAgKFdURjo6SlNPTkltcGw6OlZhbHVlOjplc2NhcGVT
dHJpbmcpOiBVc2UgYXBwZW5kIGluc3RlYWQKKyAgICAgICAgb2YgYXBwZW5kTGl0ZXJhbC4KKyAg
ICAgICAgKFdURjo6SlNPTkltcGw6OlZhbHVlOjp3cml0ZUpTT04gY29uc3QpOiBEaXR0by4KKwor
ICAgICAgICAqIHd0Zi9Mb2dnZXIuaDoKKyAgICAgICAgKFdURjo6TG9nZ2VyOjpsb2cpOiBVc2Ug
YXV0byBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgIChXVEY6OkxvZ2dlcjo6bG9n
VmVyYm9zZSk6IERpdHRvLgorCisgICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAg
IChXVEY6Ok1lZGlhVGltZTo6dG9TdHJpbmcgY29uc3QpOiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFk
IG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmg6CisgICAgICAgIE1hZGUgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcgYSBjb25z
dGV4cHIgZnVuY3Rpb24gc28gd2UgY2FuIHVzZSBpdCB0bworICAgICAgICBjb21wdXRlIHRoZSBy
ZXF1aXJlZCBzaXplIG9mIGFycmF5cyBmb3IgY29udmVyc2lvbi4gQWRkZWQgdXNpbmcgZm9yIGJv
dGgKKyAgICAgICAgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcgYW5kIHdyaXRlSW50ZWdlclRvQnVm
ZmVyIHNvIHdlIGNhbiB1c2UgdGhlbSB3aXRob3V0CisgICAgICAgIHRoZSBXVEYgcHJlZml4IGFz
IGlzIGN1c3RvbWFyeSBmb3IgZnVuY3Rpb25zIGluIFdURi4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0
ZXJhbCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
OiBBZGRlZCBzdXBwb3J0IGZvciBhcHBlbmRpbmcgU3RyaW5nSW1wbCYsCisgICAgICAgIFN0cmlu
Z0ltcGwqLCBBdG9tU3RyaW5nSW1wbCYsIGFuZCBBdG9tU3RyaW5nSW1wbCouCisKIDIwMjEtMDUt
MjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFC
TEUoTUFTTV9QUk9CRSkgZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZGJhNWZmZmZjMDkyYmQwY2E4MjZl
MTNhYjgwZjJkMmIyYWZjYWYxLi4xY2FjMmUyNDZhYTBhNDJmMjY2ZGVmM2NkZGU5MDdhMWQ2YTg4
MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzc5IEBACisyMDIxLTA1LTIzICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhY2thZ2VGb3JtRGF0YSk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJp
bmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcgY29uc3QpOiBVc2UgYXBwZW5k
IGluc3RlYWQKKyAgICAgICAgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6IFVzZSBh
dXRvCisgICAgICAgIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6YnVpbGRQcmVJbmRleFN0YXRlbWVudCk6IFVzZSBtYWtlU3RyaW5n
CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YnVpbGRJbmRleFN0YXRlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpidWlsZE9iamVjdFN0b3JlU3RhdGVtZW50KTogRGl0dG8uCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y29kZVByb3RvY29sU3RyaW5nKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwu
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6
YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24pOiBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlIGNvbnN0KTogVXNlCisgICAgICAg
IG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0IGNvbnN0KTogVHdlYWsK
KyAgICAgICAgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGFib3ZlIG1vcmUgY2xvc2VseSwgYW5kIHVz
ZSBBU0NJSUxpdGVyYWwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGZvcm1hdEZvckRlYnVnZ2VyKTog
VXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcpOiBVc2UKKyAgICAg
ICAgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBjc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRDaXJjbGVTdHJpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRWxsaXBzZVN0cmluZyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRQYXRoU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpi
dWlsZFBvbHlnb25TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zZXRT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0
b21DU1NUZXh0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NDb25pY0dyYWRp
ZW50VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9D
U1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyaWRJ
bnRlZ2VyUmVwZWF0VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2UgbWFr
ZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjdXN0
b21DU1NUZXh0IGNvbnN0KTogVXNlIGFwcGVuZAorICAgICAgICBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbXBvcnRSdWxlOjpjc3NUZXh0IGNvbnN0KTogVXNlIG1ha2VTdHJpbmcgaW5zdGVh
ZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZVJ1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlS2V5ZnJhbWU6OmNzc1RleHQgY29u
c3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1RleHQgY29uc3QpOiBVc2UgdmFyaWFk
aWMgYXBwZW5kLgorCisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZUJveENvbnRhaW5WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBj
b25zdCk6IFVzZQorICAgICAgICBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAg
ICAgICAqIGNzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU05h
bWVzcGFjZVJ1bGU6OmNzc1RleHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQ
YWdlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6Y3NzVGV4dCBjb25z
dCk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YKKyAgICAgICAgU3RyaW5nQnVpbGRlci4KKyAg
ICAgICAgKiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhaW50SW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAg
VXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kTGFuZ0FyZ3VtZW50TGlzdCk6
IFVzZSB2YXJpYWRpYyBhcHBlbmQuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2Vs
ZWN0b3JUZXh0IGNvbnN0KTogRGl0dG8uIEFsc28gdXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFk
IG9mIGFwcGVuZExpdGVyYWwgYW5kIG1ha2Ugc29tZSBpbXByb3ZlbWVudHMgdG8KKyAgICAgICAg
Y3V0IGRvd24gb24gYWxsb2NhdGlvbnMgYSBsaXR0bGUuCisKKyAgICAgICAgKiBjc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6YnVpbGRT
ZWxlY3RvcnNUZXh0IGNvbnN0KTogVXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVu
ZExpdGVyYWwuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KTogTW92ZWQgbW9yZSBvZiB0aGUK
KyAgICAgICAgZGF0YSBtZW1iZXIgaW5pdGlhbGl6YXRpb24gdG8gdGhlIGNsYXNzIGRlZmluaXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIG1ha2VT
dHJpbmcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNoZWV0Lmg6IE1vdmVkIGluaXRpYWxpemF0aW9uIGhlcmUuCisKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICBVc2Ug
bWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpD
U1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAg
ICAgRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUXVlcnlTZXQ6Om1lZGlhVGV4dCBjb25zdCk6IFVzZSBhcHBlbmQgaW5zdGVhZAor
ICAgICAgICBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6IERpdHRvLgor
CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUXVlcnlFeHByZXNzaW9uOjpzZXJpYWxpemUgY29uc3QpOiBVc2UgbWFrZVN0cmlu
ZworICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBjc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Z2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlIGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFk
IG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2Vu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxpemUgY29uc3Qp
OiBSZW1vdmVkIGEgbG90IG9mCisgICAgICAgIHVubmVjZXNzYXJ5IGJyYWNlcy4gVXNlIHZhcmlh
ZGljIGFwcGVuZCBhbmQgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0CisgICAgICAgIG9mIG1ha2VT
dHJpbmcuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRBdHRyaWJ1dGVzKTogVXNlIHZhcmlhZGljIGFwcGVuZCBhbmQgYXBwZW5kCisgICAgICAg
IGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9s
aWN5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdCk6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlU2VhcmNoZXIpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5n
LgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcpOgorICAgICAgICBV
c2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6dXJsVG9NYXJrdXApOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZEZvcm1TdHJ1Y3R1cmUpOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXBvcnRWYWxpZGl0eSk6IFVzZSBhdXRv
IGZvcgorICAgICAgICB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp2
YWxpZGF0ZUludGVyYWN0aXZlbHkpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0
ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFl
ZCBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc3RyaWN0aW9uTmFtZXMpOiBVc2UgYXV0byBmb3Ig
dGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6dGFrZVJlbWFpbmluZyk6IERpdHRv
LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkQ29uc29sZUVycm9yKTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBv
ZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKTogRGl0
dG8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4cHJlc3Npb25Gb3JFdmFsdWF0aW5nQ29tbWFuZCk6
IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zl
cmxheTo6ZHJhd0VsZW1lbnRUaXRsZSk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VT
dHJpbmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKTogVXNlIGFwcGVu
ZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKToKKyAgICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdC
dWlsZGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6IERpdHRvLgorICAgICAgICAqIGxv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1dhcm5p
bmcpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tG
b3JtRm9yTWl4ZWRDb250ZW50KTogRGl0dG8KKworICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlVmFsaWRVUkwpOiBBZGRl
ZC4gVXNlZCBmb3IgdmFyaW91cyBjYXNlcyBiZWxvdyB0aGF0IGFsbCBjb25zdHJ1Y3QKKyAgICAg
ICAgVVJMcyBpbiB0aGUgc2FtZSB3YXkgd2l0aCB0aGUgc2FtZSBraW5kcyBvZiBjaGVja3MuIFVz
ZSBtYWtlU3RyaW5nIGhlcmUgaW5zdGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6YXR0cmlidXRpb25SZXBvcnRVUkwpOiBDYWxsIG1ha2VWYWxpZFVSTC4K
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVy
ZVVSTCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRC
b29sZWFuKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRIYXNoU2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRO
YXZpZ2F0b3JBUElPcHRpb25TZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNj
cmVlbkFQSU9wdGlvblNldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6dG9TdHJpbmcgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBVc2UgYXV0byBmb3IKKyAg
ICAgICAgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVn
RXhwRm9yTGFiZWxzKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAg
ICAgIEFsc28gdHdlYWsgY29kaW5nIHN0eWxlIGEgYml0LgorCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpsb2dNb2NrU2Nyb2xsQW5p
bWF0b3JNZXNzYWdlIGNvbnN0KTogVXNlIG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBT
dHJpbmdCdWlsZGVyLgorCisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6U2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRTdGFydFRhZyk6CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRM
aXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0
eWxlU2hlZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjp1cmxG
b3JCbGFua0ZyYW1lKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0
cmluZy4KKworICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zQXNTdHJpbmcpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9m
IFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxh
dGZvcm1EcmF3KTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmlu
Zy4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IFVzZSBtYWtlU3RyaW5n
IGluc3RzZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93UnVubmluZ09yRGlzcGxheWluZ0luc2VjdXJlQ29udGVudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZh
bGlkRGlyZWN0aXZlVmFsdWVDaGFyYWN0ZXIgY29uc3QpOgorICAgICAgICBHZXQgcmlkIG9mIGxv
Y2FsIHZhcmlhYmxlIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxpZFBhdGhDaGFyYWN0ZXIgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0
SW52YWxpZFNvdXJjZUV4cHJlc3Npb24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKTogR2V0IHJp
ZCBvZiBsb2NhbAorICAgICAgICB2YXJpYWJsZSBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0KToKKyAgICAgICAgVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdC
dWxkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWNpbWFsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlY2ltYWw6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVu
ZExpdGVyYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5nRnVuY3Rpb246OmNyZWF0ZUZyb21DU1NUZXh0
KTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZAorICAgICAgICBvZiBTdHJpbmdCdWlsZGVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6
IFVzZSBhdXRvCisgICAgICAgIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRVc2VyQWdlbnRTdHJpbmcpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJh
bC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKTogVXNlCisgICAgICAgIGFwcGVuZCBpbnN0
ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKTogR290IHJpZCBvZiBsb2NhbAorICAgICAgICB2YXJpYWJs
ZSBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKTogVXNlIGF1dG8KKyAgICAgICAg
Zm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6
OnRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKTogVXBkYXRlIHRvCisgICAgICAgIHVzZSBPcHRp
b25TZXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uUG9saWN5QXNTdHJpbmcpOiBVc2UgT3B0aW9uU2V0
LgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6IFVz
ZSBhdXRvIGZvciBpdGVyYXRvcgorICAgICAgICBhbmQgcmFuZ2UtYmFzZWQgZm9yIGxvb3AuCisg
ICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6dXBkYXRlVGlsZUxheWVyUHJvcGVydGllcyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmJsYW5rUGl4ZWxDb3VudCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnJlbW92ZVRpbGVzKTogVXNlIEhh
c2hDb3VudGVkU2V0LgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnJldmFsaWRhdGVUaWxl
cyk6IFVzZSBPcHRpb25TZXQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cmV0YWluZWRU
aWxlQmFja2luZ1N0b3JlTWVtb3J5IGNvbnN0KTogVXNlCisgICAgICAgIHJhbmdlZC1iYXNlZCBm
b3IgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRz
IGNvbnN0KTogVXNlIHJhbmdlLWJhc2VkCisgICAgICAgIGZvciBsb29wIGFuZCB1c2Ugd3JpdGVJ
bnRlZ2VyVG9CdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmc6Om51bWJlci4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJSZXBhaW50Q291bnQgY29uc3QpOiBVc2UKKyAg
ICAgICAgSGFzaENvdW50ZWRTZXQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cGxhdGZv
cm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KTogRGl0dG8uCisgICAgICAgIFRoaXMgY3V0
cyB1cyBkb3duIGZyb20gMyBoYXNoIHRhYmxlIGxvb2t1cHMgdG8gMS4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVHcmlkOjpyZW1vdmVVbnBhcmVudGVkVGlsZXNOb3cpOiBSZW1vdmVkIGxvY2FsCisg
ICAgICAgIHZhcmlhYmxlIHRvIG1ha2UgY29kZSBhIGxpdHRsZSB0aWdodGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmg6IFVzZSBPcHRpb25TZXQgYW5kIEhhc2hD
b3VudGVkU2V0LgorICAgICAgICBSZW1vdmVkIHNvbWUgdHlwZSBuYW1lcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09uTGF5ZXIpOiBV
c2UgYXV0byBmb3IKKyAgICAgICAgcmV1c2x0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yTW9jazo6c2Nyb2xsYmFyUHJlZml4IGNvbnN0KTogQWRkZWQKKyAgICAg
ICAgaGVscGVyIGZ1bmN0aW9uIGZvciB1c2UgYmVsb3cuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRvck1vY2s6Om1vdXNlRW50ZXJlZFNjcm9sbGJhciBjb25zdCk6IFVzZQorICAgICAg
ICBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yTW9jazo6bW91c2VFeGl0ZWRTY3JvbGxiYXIgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTW9jazo6bW91c2VJc0Rvd25JblNjcm9s
bGJhciBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0
b3JNb2NrLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRQcm94eVNlcnZlclN0cmluZyk6IFVzZSBh
cHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAoV2ViQ29yZTo6dG9TdHJp
bmcpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0
aXplU3VnZ2VzdGVkRmlsZW5hbWUpOiBHZXQgcmlkCisgICAgICAgIG9mIGxvY2FsIHZhcmlhYmxl
IHdpdGggcmVzdWx0IG9mIG1hZWtTdHJpbmcgaW4gaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9w
bGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
bGF0Zm9ybUZvclVBU3RyaW5nKTogRGVsZXRlZC4gTm8gbmVlZCBmb3IgYSBnbG9iYWwgdmFyaWFi
bGUKKyAgICAgICAgdG8gaG9sZCB0aGUgcmVzdWx0IG9mIHNvbWV0aGluZyBjYWxsZWQgb25seSBv
bmNlLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkVXNlckFnZW50U3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50U3RhdGljKTogTW92ZWQgdGhlIGxvZ2lj
IGZyb20gYnVpbGRVc2VyQWdlbnRTdHJpbmcKKyAgICAgICAgaGVyZSwgdXNpbmcgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4p
OiBVc2UgYXV0byBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRm9ybWF0
OjpxdW90ZUFuZEFwcGVuZExpdGVyYWwpOiBVc2UgYXBwZW5kIGluc3RlYWQKKyAgICAgICAgb2Yg
YXBwZW5kTGl0ZXJhbCBhbmQgU3RyaW5nVmlldzo6c3Vic3RyaW5nIGluc3RlYWQgb2YgU3RyaW5n
OjpzdWJzdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5
bGVOZXdsaW5lcyk6IFVzZSBhcHBlbmQKKyAgICAgICAgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFs
LgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1VzZXJBZ2VudFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudCk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3Ry
aW5nQnVpbGRlZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpuYW1lIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6IERpdHRvLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6IFVzZSBhcHBlbmQg
aW5zdGVhZCBvZgorICAgICAgICBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9u
UHJpbnRhYmxlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKTogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3ZlVG8pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG8pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvVmVydGljYWwpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3Vi
aWMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2
ZVRvQ3ViaWNTbW9vdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdC
dWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpY1Ntb290aCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1RvKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y2xvc2VQYXRoKTogRGl0dG8uCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpkdW1wTWFya2VyUmVjdHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE9mZnNl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3JvbGxTbmFwT2Zmc2V0cyk6IERp
dHRvLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKTog
VXNlIGF1dG8KKyAgICAgICAgZm9yIHJldXNsdCBvZiBtYWtlU3RyaW5nLgorCiAyMDIxLTA1LTIz
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRM
b2NrIGluIGV2ZW4gbW9yZSBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDZkMzYwY2ZmMzRmMDI3ZWVkMzY5
Nzg5ZjQ1NjI2M2EwMmFhY2YxOS4uZjdiYjA2Mzg5OTg0YWQzYWI4YzVjNmMxYjc4OWRjZDk2ODI1
MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9tYWluTGlzdCk6IFVzZSBhcHBlbmQKKyAgICAgICAg
aW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAoV2ViS2l0Ojpkb21haW5zVG9TdHJp
bmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6YnVpbGRMaXN0KTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpmaW5kTm90VmVy
eVByZXZhbGVudFJlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6YXBwZW5kQm9vbGVhbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjphcHBlbmROZXh0RW50cnkpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlc291cmNlVG9TdHJpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmF0dHJpYnV0aW9uVG9TdHJp
bmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmcpOiBEaXR0by4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojpkb21haW5zVG9TdHJpbmcpOiBEaXR0by4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpjcmVhdGUpOiBNb3ZlZCB0aGlzIGhlcmUgZnJvbSB0aGUgaGVhZGVyLgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5Ojp0b1N0cmluZyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5OjplbmNvZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eTo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6
Om9wZXJhdG9yPT0gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6dG9TdHJpbmcgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YTo6ZW5jb2RlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OmRlY29kZSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJk
UGFydHlEYXRhOjpvcGVyYXRvcjwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBNb3ZlZCBt
ZW1iZXIKKyAgICAgICAgZnVuY3Rpb25zIG9mIHRoZSBuZXN0ZWQgc3RydWN0dXJlcyBpbnRvIHRo
ZSBpbXBsZW1lbnRhdGlvbiBmaWxlIGFuZCBmaXhlZAorICAgICAgICB0aGUgaW5kZW50YXRpb24g
b2YgdGhlIHN0cnVjdHVyZXMgdG8gaW5kaWNhdGUgdGhlIG5lc3RpbmcuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0KTogRG8gbm90IHVzZSBh
IGxvY2FsCisgICAgICAgIHZhcmlhYmxlIGZvciB0aGUgcmV1c2x0IG9mIG1ha2VTdHJpbmcuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24pOiBEaXR0by4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSk6IFVzZSBhcHBlbmQg
aW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVu
dHJ5Ojphc0pTT04gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6Om1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKTogRG8gbm90IHVzZSBhIGxvY2FsIHZhcmlh
YmxlIGZvcgorICAgICAgICB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFRhc2s6OmFjY2VwdGVkRXh0ZW5zaW9ucyBj
b25zdCk6IERpdHRvLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0cmluZy4K
KyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycyk6IERpdHRvLgorCisgICAgICAgICogU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplU2FuZGJveFBhcmFtZXRlcnMpOiBEbyBub3QgdXNlIGEgbG9jYWwgdmFyaWFibGUgZm9yIHRo
ZSByZXN1bHQgb2YKKyAgICAgICAgbWFrZVN0cmluZy4gQWxzbywgdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhlIHN1cHBvcnQgZm9yIGNvbmNhdGVuYXRpbmcgYW4gTlNTdHJpbmcgaW5zdGVhZAorICAgICAg
ICBvZiBjb252ZXJ0aW5nIGl0IHRvIGEgV1RGOjpTdHJpbmcuCisKKyAgICAgICAgKiBTaGFyZWQv
bWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlT
YW1wbGVyOjpzYW1wbGVXZWJLaXQgY29uc3QpOiBVc2UgQVNDSUlMaXRlcmFsIGFuZCByZW1vdmUg
ZXhwbGljaXQKKyAgICAgICAgY29udmVyc2lvbiB0byBTdHJpbmcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
UnVuSmF2YVNjcmlwdENhbGxiYWNrKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKTogVXNl
IGF1dG8gZm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcDogVXNlIG1ha2VTdHJpbmcg
aW5zdGVhZCBvZgorICAgICAgICBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBVc2UgYXV0byBmb3IgcmVzdWx0
IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5n
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6IFVzZSBhdXRvIGZvciByZXN1bHQgb2YgbWFr
ZVN0cmluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2Ft
cGxlcik6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpkdW1wSGlzdG9yeUl0ZW0pOiBVc2UgYXBwZW5kIGluc3RlYWQg
b2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNB
c1N0cmluZyk6IERpdHRvLgorCiAyMDIxLTA1LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRMb2NrIGluIGV2ZW4gbW9yZSBwbGFjZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNzM2Y2U3YjMzM2ViMmZmZTEzMTQ3OTEwZDRlZDg0NjYyZDQx
MzhlZC4uZWYzOTc2MjE5M2I4N2IzMmY2NzUwYzljYTk2YzE5YmE5NmU2Y2E1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExp
dGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAgICAgICAgKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6IERvIG5v
dCB1c2UgbG9jYWwKKyAgICAgICAgZm9yIHJldHVybiB2YWx1ZSBvZiBtYWtlU3RyaW5nLgorCiAy
MDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVw
bGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkMTUxOGY5MWUwN2FlN2RlMDdjMzRjNmNkOThiZGY3NWJj
YTM2NzMuLjI4MzM3NDI0ODgzZTNlNzY5ZWUxZGE2OWJmODExMjA3YTIxNzQxMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChyZWdF
eHBGb3JMYWJlbHMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAg
ICAgQWxzbyBpbXJwb3ZlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGEgYml0LgorCiAyMDIxLTA1LTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2Nr
SG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCmluZGV4IDcwYTIxNWIzNTVjNTZlMDc4ZTdmNWFkYTAyY2RiN2JmMThjOWI0ODcuLjMx
NzhjNjZlMWQyNmZlYjczM2NmM2FjMzEyNzdkZDkwMTdkYzc1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExp
dGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
QWNjZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NLZXli
b2FyZFNob3J0Y3V0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcG5lZExpdGVyYWwuCisgICAg
ICAgICogV2ViVmlldy5jcHA6IERpdHRvLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKaW5kZXggODExZDRk
ZWJkYWIyOTFkOTA0Zjk2YmJmZTQ2N2I3OWMwMjczZDExOS4uMzZlZGJkOWE3MzBhZmVjYTVmMmYw
YjQwNDIxMTQ3NDI5NjRhZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCkBAIC01NSwx
MCArNTUsMTAgQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0X2hhc0lu
c3RhbmNlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICAgICAgcmVzdWx0ID0gSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIDEsICZw
b3NzaWJsZVZhbHVlLCBleGNlcHRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJkdW1teS52YWx1
ZU9mKFswXSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiZHVtbXkudmFsdWVPZihbMF0iKTsK
ICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzNTAwMDsgaSsrKQogICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiwgWyIsIGksICddJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiKTsiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIik7Iik7CiAgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdChj
b250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEsIGV4Y2VwdGlvbik7CiAgICAgICAg
IEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCBhMDMyOTIwZTQwMzhiYzBi
NWE5ZDU3YzM5YmFlZGQ5YmExZDQwYWJlLi43ZmYzZTYxZTQyNTIzNmE4ZTY1NjU1YWI5MGUzYTlk
NDc5ZTlhZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50KQogewog
ICAgIFZNJiB2bSA9IG1fZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcodm0sIFN0cmluZyhhcmd1bWVu
dCkpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJpbmcodm0sIGFyZ3VtZW50KSk7CiB9
CiAKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNWYWx1
ZSBhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2YmQzMDFmMDg4MDRmNjc3OWE4ZGFhMDBmYWNjODEyMmNi
NzBiMDcxLi5hNDljYTcwNzQ1NjlmY2E1ZGU2YzllZGEyZjBhNmJmYmZkNWYzZjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6OnRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIEJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLi4uIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLi4uIik7CiAg
ICAgICAgICAgICB0YXJnZXQucGF0dGVybi0+dG9TdHJpbmcoYnVpbGRlcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtNTgyMCw3ICs1ODIwLDcgQEAgdm9pZCBSZXN0UGFyYW1l
dGVyTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JiBpZGVu
dGlmaWVycykKIAogdm9pZCBSZXN0UGFyYW1ldGVyTm9kZTo6dG9TdHJpbmcoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlcikgY29uc3QKIHsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi4uLiIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCIuLi4iKTsKICAgICBtX3BhdHRlcm4tPnRvU3RyaW5nKGJ1aWxk
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuY3BwCmluZGV4IGMzNmQxZDAyMTJmOTJlNjNkNjgzNzRmZTFkZjZmMGJlYzVlZmRi
M2MuLjYxNGY3MTg5YmI4YjNiNjg3YzRmYjAyMTEwNDEzNzMwYjcyMjJjMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC00
NTUsMTkgKzQ1NSwxOCBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlv
bjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAgIH07CiAKICAgICAv
LyB2ZXJzaW9uCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJ7XCJ2ZXJzaW9uXCI6MiIpOworICAg
IGpzb24uYXBwZW5kKCJ7XCJ2ZXJzaW9uXCI6MiIpOwogCiAgICAgLy8gdHlwZQotICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiLFwidHlwZVwiOiIpOwotICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhzbmFwc2hvdFR5cGVUb1N0cmluZyhtX3NuYXBzaG90VHlwZSkpOworICAgIGpzb24uYXBw
ZW5kKCIsXCJ0eXBlXCI6XCIiLCBzbmFwc2hvdFR5cGVUb1N0cmluZyhtX3NuYXBzaG90VHlwZSks
ICciJyk7CiAKICAgICAvLyBub2RlcwotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwibm9kZXNc
IjpbIik7CisgICAganNvbi5hcHBlbmQoIixcIm5vZGVzXCI6WyIpOwogICAgIC8vIDxyb290Pgog
ICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNo
b3QpCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiMCwwLDAsMCwwLFwiMHgwXCIsXCIweDBc
IiIpOworICAgICAgICBqc29uLmFwcGVuZCgiMCwwLDAsMCwwLFwiMHgwXCIsXCIweDBcIiIpOwog
ICAgIGVsc2UKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIwLDAsMCwwIik7CisgICAgICAg
IGpzb24uYXBwZW5kKCIwLDAsMCwwIik7CiAKICAgICBmb3IgKEhlYXBTbmFwc2hvdCogc25hcHNo
b3QgPSBtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpOyBzbmFwc2hvdDsgc25hcHNob3Qg
PSBzbmFwc2hvdC0+cHJldmlvdXMoKSkgewogICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBzbmFw
c2hvdC0+bV9ub2RlcykKQEAgLTQ3Niw3ICs0NzUsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVp
bGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93
TgogICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICAvLyBub2RlIGNsYXNzIG5hbWVzCi0gICAg
anNvbi5hcHBlbmRMaXRlcmFsKCIsXCJub2RlQ2xhc3NOYW1lc1wiOlsiKTsKKyAgICBqc29uLmFw
cGVuZCgiLFwibm9kZUNsYXNzTmFtZXNcIjpbIik7CiAgICAgVmVjdG9yPFN0cmluZz4gb3JkZXJl
ZENsYXNzTmFtZXMoY2xhc3NOYW1lSW5kZXhlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgZW50
cnkgOiBjbGFzc05hbWVJbmRleGVzKQogICAgICAgICBvcmRlcmVkQ2xhc3NOYW1lc1tlbnRyeS52
YWx1ZV0gPSBlbnRyeS5rZXk7CkBAIC01MzIsMjQgKzUzMSwxNiBAQCBTdHJpbmcgSGVhcFNuYXBz
aG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+
IGFsbG93TgogICAgIH0pOwogCiAgICAgLy8gZWRnZXMKLSAgICBqc29uLmFwcGVuZExpdGVyYWwo
IixcImVkZ2VzXCI6WyIpOworICAgIGpzb24uYXBwZW5kKCIsXCJlZGdlc1wiOlsiKTsKICAgICBm
b3IgKGF1dG8mIGVkZ2UgOiBtX2VkZ2VzKQogICAgICAgICBhcHBlbmRFZGdlSlNPTihlZGdlKTsK
ICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAgICAgLy8gZWRnZSB0eXBlcwotICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiLFwiZWRnZVR5cGVzXCI6WyIpOwotICAgIGpzb24uYXBwZW5kUXVvdGVkSlNP
TlN0cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpJbnRlcm5hbCkpOwotICAgIGpzb24u
YXBwZW5kKCcsJyk7Ci0gICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGVkZ2VUeXBlVG9T
dHJpbmcoRWRnZVR5cGU6OlByb3BlcnR5KSk7Ci0gICAganNvbi5hcHBlbmQoJywnKTsKLSAgICBq
c29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoZWRnZVR5cGVUb1N0cmluZyhFZGdlVHlwZTo6SW5k
ZXgpKTsKLSAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0
cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpWYXJpYWJsZSkpOwotICAgIGpzb24uYXBw
ZW5kKCddJyk7CisgICAganNvbi5hcHBlbmQoIixcImVkZ2VUeXBlc1wiOltcIiIsIGVkZ2VUeXBl
VG9TdHJpbmcoRWRnZVR5cGU6OkludGVybmFsKSwgIlwiLFwiIiwgZWRnZVR5cGVUb1N0cmluZyhF
ZGdlVHlwZTo6UHJvcGVydHkpLCAiXCIsXCIiLCBlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpJ
bmRleCksICJcIixcIiIsIGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OlZhcmlhYmxlKSwgIlwi
XSIpOwogCiAgICAgLy8gZWRnZSBuYW1lcwotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwiZWRn
ZU5hbWVzXCI6WyIpOworICAgIGpzb24uYXBwZW5kKCIsXCJlZGdlTmFtZXNcIjpbIik7CiAgICAg
VmVjdG9yPFVuaXF1ZWRTdHJpbmdJbXBsKj4gb3JkZXJlZEVkZ2VOYW1lcyhlZGdlTmFtZUluZGV4
ZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZWRnZU5hbWVJbmRleGVzKQogICAg
ICAgICBvcmRlcmVkRWRnZU5hbWVzW2VudHJ5LnZhbHVlXSA9IGVudHJ5LmtleTsKQEAgLTU2NSw3
ICs1NTYsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29s
IChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAgIGpzb24uYXBwZW5kKCddJyk7
CiAKICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1Nu
YXBzaG90KSB7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwicm9vdHNcIjpbIik7Cisg
ICAgICAgIGpzb24uYXBwZW5kKCIsXCJyb290c1wiOlsiKTsKIAogICAgICAgICBIZWFwU25hcHNo
b3QqIHNuYXBzaG90ID0gbV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKTsKIApAQCAtNjA1
LDcgKzU5Niw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJv
b2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICBpZiAobV9zbmFwc2hv
dFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7CiAgICAgICAgIC8v
IGludGVybmFsIG5vZGUgZGVzY3JpcHRpb25zCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
LFwibGFiZWxzXCI6WyIpOworICAgICAgICBqc29uLmFwcGVuZCgiLFwibGFiZWxzXCI6WyIpOwog
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG9yZGVyZWRMYWJlbHMobGFiZWxJbmRleGVzLnNpemUo
KSk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsYWJlbEluZGV4ZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckF1ZGl0QWdlbnQuY3BwCmluZGV4IDJmOWY4ZjA1OWNiMTM5MTNhZmEzMGY2NDk3N2UwMzNiNTM0
Yzk0OTMuLmM3NmYxZjIwNjNjYjVlOTAwY2RiMzI0Nzk1MDAxM2ZkMDljZTY2MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC05MywxMCAr
OTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgIGlmIChpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7
CiAKLSAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5nOwotICAgIGZ1bmN0aW9uU3RyaW5n
LmFwcGVuZExpdGVyYWwoIihmdW5jdGlvbihXZWJJbnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJp
Y3RcIjsgcmV0dXJuIGV2YWwoYCgiKTsKLSAgICBmdW5jdGlvblN0cmluZy5hcHBlbmQodGVzdC5p
c29sYXRlZENvcHkoKS5yZXBsYWNlKCdgJywgIlxcYCIpKTsKLSAgICBmdW5jdGlvblN0cmluZy5h
cHBlbmRMaXRlcmFsKCIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOworICAgIGF1dG8gZnVu
Y3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsg
XCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2Uo
J2AnLCAiXFxgIiksICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0
ZWRTY3JpcHQ6OkV4ZWN1dGVPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5vYmplY3RHcm91
cCA9ICJhdWRpdCJfczsKQEAgLTExMiw3ICsxMDgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9u
YQogCiAgICAgbXV0ZUNvbnNvbGUoKTsKIAotICAgIGluamVjdGVkU2NyaXB0LmV4ZWN1dGUoZXJy
b3JTdHJpbmcsIGZ1bmN0aW9uU3RyaW5nLnRvU3RyaW5nKCksIFdURk1vdmUob3B0aW9ucyksIHJl
c3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmplY3RlZFNjcmlwdC5l
eGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZywgV1RGTW92ZShvcHRpb25zKSwgcmVz
dWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogCiAgICAgdW5tdXRlQ29uc29sZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCBmZGY1ZTU0NWU0YzY5YWU0
ZTQ3MWI4MGIyNWVmMzEyMWM3Njk4OWJlLi4yNWI3MjMxYTI1ZTdhMTZjMmEwNDk4MGYxYWU5Nzcx
N2FjODVhMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdAogCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRp
bWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdl
KGxhYmVsKSwgIlwiIGFscmVhZHkgZXhpc3RzIik7CisgICAgICAgIGF1dG8gd2FybmluZyA9IG1h
a2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNv
bnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGdsb2JhbE9iamVjdCwgMSkp
KTsKICAgICB9CiB9CkBAIC0xNTQsMTQgKzE1NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6bG9nVGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
UwogICAgIGF1dG8gaXQgPSBtX3RpbWVzLmZpbmQobGFiZWwpOwogICAgIGlmIChpdCA9PSBtX3Rp
bWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/Ci0gICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1l
c3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgYXV0byB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5n
Rm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25k
cyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7Ci0gICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JD
b25zb2xlTWVzc2FnZShsYWJlbCksICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChl
bGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7CisgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2Uo
bGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNl
Y29uZHMoKSwgMyksICJtcyIpOwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRp
bWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBX
VEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdAogICAgIGF1dG8gaXQgPSBtX3RpbWVzLmZpbmQobGFiZWwpOwogICAgIGlm
IChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0g
dG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/Ci0gICAgICAgIFN0cmluZyB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5n
Rm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAg
YXV0byB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRy
dW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3Qi
KTsKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7
CiAgICAgU2Vjb25kcyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7
Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNh
dGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7CisgICAgYXV0byBt
ZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29u
c29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxh
cHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShj
YWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CkBAIC0yMTAsNyArMjEwLDcg
QEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW4KIAogICAgIC8vIEZJWE1FOiBXZWIgSW5zcGVjdG9y
IHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBub3cgd2UganVz
dCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2Fn
ZShsYWJlbCksICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVN
ZXNzYWdlKGxhYmVsKSwgIjogIiwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGdsb2JhbE9iamVjdCwgMSkpKTsKIH0K
IApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJl
c2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKICAgICBhdXRvIGl0
ID0gbV9jb3VudHMuZmluZChsYWJlbCk7CiAgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/Ci0gICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBc
IiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJl
bCksICJcIiBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICBhdXRvIHdhcm5pbmcgPSBtYWtlU3Ry
aW5nKCJDb3VudGVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNv
bGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7CiAgICAgICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGdsb2JhbE9iamVjdCwgMSkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDNhMjgxMTI3MDgw
NTgxZjBlZDE1YjRmMzg1ODg1NTBjZjNlZTZlZS4uYmE4NjhmYjk3OWQyZDY2NTM4MTRjOTg4NTg2
ZDE5OWY3MTVmZmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEzNjYsNyArMTM2Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkpTQ1N0YWNrLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFN0cmluZ0J1aWxkZXIgdHJhY2U7Ci0gICAgdHJhY2UuYXBwZW5kTGl0ZXJhbCgi
LS0+IFN0YWNrIHRyYWNlOlxuIik7CisgICAgdHJhY2UuYXBwZW5kKCItLT4gU3RhY2sgdHJhY2U6
XG4iKTsKIAogICAgIEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9yIGZ1bmN0b3IodHJhY2UpOwogICAg
IGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IDMzOGY5ZDg5ODE1ODlhM2U2NDAxZTE5MzQ3
NjFjZTU3NDgxYTk2ZTguLjEzYzVjYjk0NjFiNWZhZGI4YjU3YjMyODYxYmRjZTU3ZGNiM2EwMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC0x
MTEsNyArMTExLDcgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmln
SW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKIAogY29uc3QgSWRlbnRpZmll
ciYgSWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZtLCBBU0NJSUxp
dGVyYWwgcHJlZml4LCB1bnNpZ25lZCBpZGVudGlmaWVyKQogewotICAgIFN0cmluZyBzeW1ib2xO
YW1lID0gbWFrZVN0cmluZyhwcmVmaXgsIGlkZW50aWZpZXIpOworICAgIGF1dG8gc3ltYm9sTmFt
ZSA9IG1ha2VTdHJpbmcocHJlZml4LCBpZGVudGlmaWVyKTsKICAgICBhdXRvIHN5bWJvbCA9IHZt
LnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShzeW1ib2xOYW1lKTsKICAgICBt
X2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOwogICAgIHJl
dHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKaW5kZXggODU3NmJhYjZmYTQxNWFjYTJkNzljYWQ0MjNi
ZTEyMDgwODE1MTc2My4uMTEzOTllYjA5YjJiY2M4NTljN2VkMzZhOWNlZTRkMjMzYzljZDZkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAK
QEAgLTE5NCwxMiArMTk0LDExIEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwKIAogICAgIGlmICgh
dXJsLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRVUkxBbmRQb3NpdGlvbihidWlsZGVyLCB1
cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjogIik7CiAgICAgfQogCiAgICAg
YXBwZW5kTWVzc2FnZVByZWZpeChidWlsZGVyLCBzb3VyY2UsIHR5cGUsIGxldmVsKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1lc3NhZ2UpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJywgbWVzc2FnZSk7CiAKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgYnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAtMjE1LDcgKzIxNCw3IEBAIHZv
aWQgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhCiAKICAgICBpZiAoIWxhc3RDYWxsZXIuc291cmNlVVJMKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgIGFwcGVuZFVSTEFuZFBvc2l0aW9uKGJ1aWxkZXIsIGxhc3RD
YWxsZXIuc291cmNlVVJMKCksIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLmNv
bHVtbk51bWJlcigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOiAiKTsKICAgICB9CiAKICAgICBhcHBlbmRNZXNzYWdlUHJl
Zml4KGJ1aWxkZXIsIHNvdXJjZSwgdHlwZSwgbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDk1NTc1NmJhNDA1ZjQwMDk3
MDYxMGY5YTY4YzdlZDQyYTY3Y2IwMTUuLjJkZWNmOGE4M2M4MGU4MGNhODY3N2Y0Yzc4N2JmNzlj
NmMyOTk1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAKQEAgLTY5LDE0ICs2OSwxMSBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29u
c3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwog
ICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6OndlZWtkYXlOYW1lWyh0LndlZWtEYXkoKSArIDYp
ICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQpIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIp
OwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQubW9udGhEYXkoKSk7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoV1RGOjptb250aE5hbWVbdC5tb250aCgpXSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcsIFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJywgV1RGOjptb250aE5hbWVbdC5t
b250aCgpXSwgJyAnKTsKICAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1v
bnRoRGF5KCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CkBAIC05
Miw3ICs4OSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzCiAgICAgICAgIGFwcGVuZE51bWJl
cjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsK
ICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQuc2Vjb25kKCkpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBH
TVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRDVmFyaWFudCkgewogICAgICAgICAgICAgaW50IG9m
ZnNldCA9IGFicyh0LnV0Y09mZnNldEluTWludXRlKCkpOwpAQCAtMTEwLDExICsxMDcsOCBAQCBT
dHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1l
Rm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICAgICAgY2hhciB0aW1lWm9uZU5hbWVbNzBd
OwogICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1lLCBzaXplb2YodGltZVpvbmVOYW1l
KSwgIiVaIiwgJmd0bSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0p
IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQodGltZVpvbmVOYW1lKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRpbWVa
b25lTmFtZVswXSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICgiLCB0aW1lWm9u
ZU5hbWUsICcpJyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggZDJjZDM2ZWU1YTlmYjEzNTIwNzI2
NWQxYjQ4MzYzYmQ5MGMwNmQ4Ny4uOWM0NzZhZWI5NzRkNTYwM2IzODlhYTk3ODQ2YWZkNWQ0ZWI0
ZTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlICJTdGFja0ZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjA5LDE3ICsyMDgs
NyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHNhbml0aXplZE1l
c3NhZ2VTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBTdHJpbmcoKSk7CiAKLSAgICBpZiAoIW5hbWVTdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybiBtZXNzYWdlU3RyaW5nOwotCi0gICAgaWYgKCFtZXNzYWdlU3RyaW5nLmxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gbmFtZVN0cmluZzsKLQotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICBidWlsZGVyLmFwcGVuZChuYW1lU3RyaW5nKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmluZyk7Ci0gICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhuYW1lU3RyaW5nLCBu
YW1lU3RyaW5nLmlzRW1wdHkoKSAmJiBtZXNzYWdlU3RyaW5nLmlzRW1wdHkoKSA/ICIiIDogIjog
IiwgbWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkNGFkNTgxOWEwOGY5YWE2YmIyZmZkMTA1ZDk5
OGI5OTI5MjdjOGQ1Li5iNTk1YTMwMjgzNzY5M2Q0Yjc0ODVmZDUxNWViYTE2N2JlZmY5Mzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAgc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3Vy
Y2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3QKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXIoU3RyaW5nQnVpbGRlcjo6T3ZlcmZsb3dIYW5kbGVyOjpSZWNv
cmRPdmVyZmxvdyk7CiAgICAgYnVpbGRlci5hcHBlbmQoYmFzZSwgIiBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICciLCBzb3VyY2VUZXh0LCAiJywgJyIsIGJhc2UsICInIGlzICIpOwogICAgIGlmICh0
eXBlID09IFR5cGVTeW1ib2wpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYSBTeW1i
b2wiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoImEgU3ltYm9sIik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGlmICh0eXBlID09IFR5cGVPYmplY3QpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoImFuIGluc3RhbmNlIG9mICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ImFuIGluc3RhbmNlIG9mICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChkaXNwbGF5VmFsdWUp
OwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggZjg5ODA2YzU2
YjI2MDUyMmZjN2M3Yjk4YWY4NTJjZjczM2Y4OTg1Zi4uZDc4Y2MyZWFlMjIyNTk2NjdiZTZkZjBj
MzI4Y2I4MjU3MTBhODliOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC02MDksMTMgKzYwOSwxMyBAQCB2b2lkIElu
dGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBjYXNlIFdlZWtkYXk6Ok5hcnJvdzoKLSAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVFRUVFIik7CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIkVFRUVFIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Vl
a2RheTo6U2hvcnQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJFRUUi
KTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiRUVFIik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV2Vla2RheTo6TG9uZzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkVFRUUiKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiRUVFRSIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlZWtkYXk6Ok5vbmU6CiAgICAgICAgIGJyZWFr
OwpAQCAtNjI1LDEzICs2MjUsMTMgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoIChlcmEpIHsKICAgICBj
YXNlIEVyYTo6TmFycm93OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
R0dHR0ciKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiR0dHR0ciKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBFcmE6OlNob3J0OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiR0dHIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkdH
RyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVyYTo6TG9uZzoKLSAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkdHR0ciKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiR0dHRyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVyYTo6Tm9uZToKICAg
ICAgICAgYnJlYWs7CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoICh5ZWFy
KSB7CiAgICAgY2FzZSBZZWFyOjpUd29EaWdpdDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoInl5Iik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInl5Iik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWVhcjo6TnVtZXJpYzoKICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgneScpOwpAQCAtNjU0LDE5ICs2NTQsMTkgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
c3dpdGNoIChtb250aCkgewogICAgIGNhc2UgTW9udGg6OlR3b0RpZ2l0OgotICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTU0iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb250aDo6TnVtZXJpYzoK
ICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnTScpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1vbnRoOjpOYXJyb3c6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJNTU1NTSIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJNTU1NTSIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1vbnRoOjpTaG9ydDoKLSAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoIk1NTSIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCJNTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb250aDo6TG9uZzoKLSAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIk1NTU0iKTsKKyAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiTU1NTSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1vbnRo
OjpOb25lOgogICAgICAgICBicmVhazsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBz
d2l0Y2ggKGRheSkgewogICAgIGNhc2UgRGF5OjpUd29EaWdpdDoKLSAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZExpdGVyYWwoImRkIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoImRkIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGF5OjpOdW1lcmljOgogICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdkJyk7CkBAIC03NDUsMTMgKzc0NSwxMyBAQCB2b2lk
IEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNz
aWFuLm5ldC9icm93c2UvSUNVLTIwNzMxCiAgICAgICAgIHN3aXRjaCAoZGF5UGVyaW9kKSB7CiAg
ICAgICAgIGNhc2UgRGF5UGVyaW9kOjpOYXJyb3c6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiQkJCQkIiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmQoIkJCQkJCIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEYXlQZXJp
b2Q6OlNob3J0OgogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnQicpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGF5UGVyaW9kOjpMb25nOgotICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkJCQkIiKTsKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIkJCQkIiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIERheVBlcmlvZDo6Tm9uZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzYyLDcgKzc2
Miw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAobWludXRlKSB7CiAgICAgY2FzZSBNaW51dGU6OlR3
b0RpZ2l0OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibW0iKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgibW0iKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNaW51dGU6Ok51bWVyaWM6CiAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ20n
KTsKQEAgLTc3NSw3ICs3NzUsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBzd2l0Y2ggKHNlY29uZCkgewogICAg
IGNhc2UgU2Vjb25kOjpUd29EaWdpdDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoInNzIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoInNzIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2Vjb25kOjpOdW1lcmljOgogICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCdzJyk7CkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCd6Jyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpMb25nOgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgienp6eiIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJ6
enp6Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpOb25lOgogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKaW5kZXggZjAzNTBjODQzOGQ3N2ViZTdhNWY5Mjc0OTA3ZTNjYjQyYTM3
ZTVkMi4uNTZlN2YxODRkNjJlMjQwYjI3MzYzYjkxZjRmMmEyNTYyZmQ2MDcxYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAg
LTM4MCwzMiArMzgwLDMxIEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9m
b3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQKIAogICAgIFN0cmluZ0J1aWxkZXIgc2tl
bGV0b25CdWlsZGVyOwotICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJyb3VuZGlu
Zy1tb2RlLWhhbGYtdXAiKTsKKyAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJyb3VuZGluZy1t
b2RlLWhhbGYtdXAiKTsKIAogICAgIHN3aXRjaCAobV9zdHlsZSkgewogICAgIGNhc2UgU3R5bGU6
OkRlY2ltYWw6CiAgICAgICAgIC8vIE5vIHNrZWxldG9uIGlzIG5lZWRlZC4KICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBwZXJjZW50IHNjYWxlLzEwMCIpOworICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCIgcGVyY2VudCBzY2FsZS8xMDAiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHlsZTo6Q3VycmVuY3k6IHsKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBjdXJyZW5jeS8iKTsKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChjdXJyZW5j
eSk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBjdXJyZW5jeS8iLCBjdXJyZW5j
eSk7CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9i
L21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQj
dW5pdC13aWR0aAogICAgICAgICBzd2l0Y2ggKG1fY3VycmVuY3lEaXNwbGF5KSB7CiAgICAgICAg
IGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpDb2RlOgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWlzby1jb2RlIik7CisgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0aC1pc28tY29kZSIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpTeW1ib2w6CiAgICAgICAgICAg
ICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNpZnkgdW5pdC13aWR0aC4KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlzcGxheTo6TmFycm93U3ltYm9sOgot
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5h
cnJvdyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHVuaXQtd2lkdGgt
bmFycm93Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDdXJyZW5jeURpc3Bs
YXk6Ok5hbWU6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVu
aXQtd2lkdGgtZnVsbC1uYW1lIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpAQCAtNDE0LDI1ICs0MTMsMjQgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmEKICAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBzdGVtIHRha2VzIG9uZSByZXF1aXJl
ZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhlIHVuaXQgdG8gYmUgZm9ybWF0dGVk
LgogICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZpZXIgaXMgcmVxdWlyZWQ6IGJvdGgg
dGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBsZSwgbGVuZ3RoLW1ldGVyKS4KICAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdAotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG1lYXN1cmUtdW5pdC8iKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIG1lYXN1cmUtdW5pdC8iKTsKICAgICAgICAg
YXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQtPm51bWVyYXRvcjsKICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0LnR5cGUsICctJywgbnVtZXJhdG9y
VW5pdC5zdWJUeXBlKTsKICAgICAgICAgaWYgKGF1dG8gZGVub21pbmF0b3JVbml0VmFsdWUgPSB3
ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IpIHsKICAgICAgICAgICAgIGF1dG8gZGVub21pbmF0
b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUoKTsKLSAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1cmUtdW5pdC8iKTsKLSAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0b3JVbml0LnR5cGUsICctJywgZGVu
b21pbmF0b3JVbml0LnN1YlR5cGUpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIHBlci1tZWFzdXJlLXVuaXQvIiwgZGVub21pbmF0b3JVbml0LnR5cGUsICctJywgZGVub21p
bmF0b3JVbml0LnN1YlR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRf
cGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0aAogICAgICAgICBzd2l0Y2ggKG1f
dW5pdERpc3BsYXkpIHsKICAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6U2hvcnQ6Ci0gICAgICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtc2hvcnQiKTsK
KyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1bml0LXdpZHRoLXNob3J0Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6TmFycm93Ogot
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLW5h
cnJvdyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHVuaXQtd2lkdGgt
bmFycm93Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbml0RGlzcGxheTo6
TG9uZzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdW5pdC13
aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiB1
bml0LXdpZHRoLWZ1bGwtbmFtZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CkBAIC00NDAsOCArNDM4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICB9CiAKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2Iv
bWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNp
bnRlZ2VyLXdpZHRoCi0gICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpbnRlZ2Vy
LXdpZHRoLyIpOwotICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoKFdURjo6SUNVOjptYWpvclZl
cnNpb24oKSA+PSA2NykgPyAnKicgOiAnKycpOyAvLyBQcmlvciB0byBJQ1UgNjcsIHVzZSB0aGUg
c3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBpbnRl
Z2VyLXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NyA/ICcqJyA6ICcrJyk7
IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wgKyBpbnN0ZWFkIG9mICouCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUludGVnZXJEaWdpdHM7ICsraSkKICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOwogCkBAIC00NzQsMTggKzQ3MSwxOCBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2UgSW50bE5vdGF0aW9uOjpTdGFuZGFy
ZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlNjaWVudGlmaWM6Ci0g
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2NpZW50aWZpYyIpOworICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2NpZW50aWZpYyIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJpbmc6Ci0gICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJpbmciKTsKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgiIGVuZ2luZWVyaW5nIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SW50bE5vdGF0aW9uOjpDb21wYWN0OgogICAgICAgICBzd2l0Y2ggKG1fY29tcGFjdERpc3BsYXkp
IHsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hvcnQ6Ci0gICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qtc2hvcnQiKTsKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBjb21wYWN0LXNob3J0Iik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6TG9uZzoKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFjdC1sb25nIik7CisgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgY29tcGFjdC1sb25nIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTQ5NywyOSArNDk0LDI5IEBAIHZv
aWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgc3dpdGNoIChtX3NpZ25EaXNwbGF5KSB7CiAgICAg
Y2FzZSBTaWduRGlzcGxheTo6QXV0bzoKICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCi0gICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZyIp
OworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYWNjb3VudGluZyIp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHNpZ24tYXV0byIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNp
Z24tYXV0byIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpOZXZlcjoK
LSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBzaWduLW5ldmVyIik7Cisg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLW5ldmVyIik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoKICAgICAgICAgaWYgKHVzZUFjY291
bnRpbmcpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24t
YWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
IiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1hbHdheXMiKTsKKyAgICAgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFsd2F5cyIpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgogICAgICAgICBpZiAodXNlQWNjb3Vu
dGluZykKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1h
Y2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1leGNlcHQtemVybyIp
OworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tZXhjZXB0LXplcm8i
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFtX3VzZUdyb3VwaW5nKQotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGdyb3VwLW9mZiIpOworICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb2ZmIik7CiAKICAgICBTdHJpbmcgc2tl
bGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICBkYXRhTG9nTG5JZihJbnRs
TnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxldG9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAK
aW5kZXggZGEyYWJjM2RmMWIzNzFjZjczNjIxYTNkYWJiMjQ2YjVlY2UwZjMzZC4uNDVhOWVmZmZk
NjliM2FhN2Q1Mzk4MDEzMGFmOTE5OTFiZWJkNTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRh
YmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIGRvbUF0
dHJpYnV0ZSk7CiAKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBi
ZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCi0gICAgU3Ry
aW5nIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRh
YmxlLCAwLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCmlu
ZGV4IGVjNTQ0Yzc4NDg3ZmQ1NDM1YTAwZGE2ZjNmYWRmZTAwMWUzNWMyMzUuLmQwNDc1MjRiNWI0
MTUwYWM5ZGVlYTEyMTRiZWQwYjViZDI4NDQ1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2V0dGVyKTsKIAogICAg
IC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1
bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBTdHJpbmcgbmFtZSA9IG1ha2VT
dHJpbmcoInNldCAiLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOworICAgIGF1
dG8gbmFtZSA9IG1ha2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
ICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIDEsIG5hbWUpOwog
ICAgIHJldHVybiBmdW5jdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBmNzFmMDc3NGJj
MjkzMjgyODRhOTFjNjg4NzNmNTQzYTUxYjJlZmY5Li5lNjZhMDg5ZTk5MTg5YmUxMTg0NmM0ZDUz
MjdlODNiOTdkYzJmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01NDAsNyArNTQwLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQYXJzZUZsb2F0LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2Jh
bEZ1bmNEZWNvZGVVUkksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCiB7Ci0gICAgc3RhdGljIEJpdG1hcDwyNTY+IGRvTm90VW5lc2NhcGVXaGVu
RGVjb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAgIHN0YXRpYyBjb25zdCBCaXRt
YXA8MjU2PiBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJID0gbWFrZUNoYXJhY3RlckJpdG1h
cCgKICAgICAgICAgIiMkJissLzo7PT9AIgogICAgICk7CiAKQEAgLTU0OSw0NCArNTQ5LDQyIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRGVjb2RlVVJJLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9i
YWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBlbXB0eUJp
dG1hcDsKKyAgICBzdGF0aWMgY29uc3QgQml0bWFwPDI1Nj4gZW1wdHlCaXRtYXA7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZ2xvYmFsRnVuY0VuY29kZVVSSSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBzdGF0aWMgQml0bWFwPDI1Nj4gZG9Ob3RFc2Nh
cGVXaGVuRW5jb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAorICAgIHN0YXRpYyBjb25z
dCBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSSA9IG1ha2VDaGFyYWN0ZXJC
aXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKICAgICAgICAgImFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgogICAgICAgICAiMDEyMzQ1Njc4OSIKICAgICAgICAg
IiEjJCYnKCkqKywtLi86Oz0/QF9+IgogICAgICk7Ci0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRvTm90RXNj
YXBlV2hlbkVuY29kaW5nVVJJKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9i
YWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVz
Y2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCisgICAg
c3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9u
ZW50ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaIgogICAgICAgICAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAgICAgICAgICIw
MTIzNDU2Nzg5IgogICAgICAgICAiIScoKSotLl9+IgogICAgICk7Ci0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCks
IGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50KSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRpYyBCaXRtYXA8MjU2PiBk
b05vdEVzY2FwZSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCi0gICAgICAgICJBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWiIKLSAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAg
ICAgICAiMDEyMzQ1Njc4OSIKLSAgICAgICAgIiorLS4vQF8iCi0gICAgKTsKLQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKKyAgICAgICAg
ICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKyAgICAgICAgICAgICJhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5eiIKKyAgICAgICAgICAgICIwMTIzNDU2Nzg5IgorICAgICAgICAgICAg
IiorLS4vQF8iCisgICAgICAgICk7CisKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGlmICh2aWV3Lmlz
OEJpdCgpKSB7CkBAIC01OTUsMTAgKzU5Myw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihn
bG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAg
ICAgICAgICAgICAgICAgaW50IHUgPSBjWzBdOwogICAgICAgICAgICAgICAgIGlmIChkb05vdEVz
Y2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKICAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChoZXgodSwgMikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJywgaGV4KHUsIDIpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgYnVpbGRlci50b1N0
cmluZygpKTsKICAgICAgICAgfQpAQCAtNjA2LDE2ICs2MDIsMTIgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGdsb2JhbEZ1bmNFc2NhcGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnIKICAgICAgICAgY29uc3QgVUNoYXIqIGMgPSB2aWV3LmNoYXJhY3RlcnMxNigpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgdmlldy5sZW5ndGgoKTsgaysrLCBjKysp
IHsKICAgICAgICAgICAgIFVDaGFyIHUgPSBjWzBdOwotICAgICAgICAgICAgaWYgKHUgPj0gZG9O
b3RFc2NhcGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIldSIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPih1ID4+IDgpLCAyKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHUgJiAweEZGKSwgMikpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkK
KyAgICAgICAgICAgIGlmICh1ID49IGRvTm90RXNjYXBlLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiJXUiLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4odSA+PiA4KSwg
MiksIGhleChzdGF0aWNfY2FzdDx1aW50OF90Pih1KSwgMikpOworICAgICAgICAgICAgZWxzZSBp
ZiAoZG9Ob3RFc2NhcGUuZ2V0KHN0YXRpY19jYXN0PExDaGFyPih1KSkpCiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCho
ZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odSksIDIpKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScsIGhleCh1
LCAyKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCmluZGV4IDYxMGYzNmNmZWJjZGI0NzdhOTI0NGRlOGQ4YjA4M2E4NGNkNjc1NmIuLmRjMDJl
ODhiYzhjYWU0NzE0YjNkOWU5ZGJiNjk1YzRjNGFiY2I5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgU3RyaW5n
aWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkRHVlVG9VbmRl
ZmluZWRPclN5bWJvbFZhbHVlOwogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgi
bnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAt
MzQ4LDkgKzM0OCw5IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6
OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKIAogICAgIGlmICh2YWx1ZS5p
c0Jvb2xlYW4oKSkgewogICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoInRydWUiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJ0cnVlIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJmYWxzZSIpOwogICAgICAg
ICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBA
IFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lm
aWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3Vi
bGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgICAgIGlmICghc3RkOjppc2Zp
bml0ZShudW1iZXIpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVs
bCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtYmVyKTsKICAgICAgICAg
fQpAQCAtMzg1LDcgKzM4NSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5n
aWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUo
dm0pKSB7CiAgICAgICAgIGlmIChob2xkZXIuaXNBcnJheSgpKSB7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJu
dWxsIik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVmaW5lZE9yU3ltYm9sVmFs
dWU7CkBAIC01NjcsNyArNTY3LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmRO
ZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBTdHJpbmdCdWkKIAogICAgIHN3
aXRjaCAoc3RyaW5naWZ5UmVzdWx0KSB7CiAgICAgICAgIGNhc2UgU3RyaW5naWZ5RmFpbGVkOgot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
U3RyaW5naWZ5U3VjY2VlZGVkOgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAppbmRleCA1NDA5MWQ3MGQ4YTczNjQ3
ZGRmY2ZiNmIyOWY4ZGVhYjQ3ODc0YTM1Li4wMzI3YzMwMGNlNTdlMDY5YTNmY2FmMzc5NzExMDE3
MjZkZDI2NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0pvaW5lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
Sm9pbmVyLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGFw
cGVuZChTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcmJik7CiAgICAgdm9pZCBhcHBlbmQ4
Qml0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5kTGl0ZXJhbChjb25zdCBJZGVudGlm
aWVyJik7CiAgICAgdW5zaWduZWQgam9pbmVkTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CiAKICAgICBMQ2hhciBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvcjsKQEAgLTkyLDEzICs5MSw2
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kOEJpdChjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICBtX3N0cmluZ3MudW5jaGVja2VkQXBwZW5kKHsgc3RyaW5nLCBz
dHJpbmcgfSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5k
TGl0ZXJhbChjb25zdCBJZGVudGlmaWVyJiBsaXRlcmFsKQotewotICAgIG1fYWNjdW11bGF0ZWRT
dHJpbmdzTGVuZ3RoICs9IGxpdGVyYWwubGVuZ3RoKCk7Ci0gICAgQVNTRVJUKGxpdGVyYWwuc3Ry
aW5nKCkuaXM4Qml0KCkpOwotICAgIG1fc3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoeyBsaXRlcmFs
LnN0cmluZygpLCB7IH0gfSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5l
cjo6YXBwZW5kRW1wdHlTdHJpbmcoKQogewogICAgIG1fc3RyaW5ncy51bmNoZWNrZWRBcHBlbmQo
eyB7IH0sIHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAK
aW5kZXggYTdiMmRiMzhiZmM2MjA3ZTUwZTQyNmJhNjJhYTljMjA1ZWMyZWYzOC4uYTAxMTgzZjdk
ZmJiZjdkNTVlZGQ1MzAxNjAxZThiNDg5ZmIyY2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTEwMDksOSArMTAwOSw5IEBAIHZvaWQgT3B0aW9uczo6
ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlv
bnM6OklEIGlkCiAKICAgICBpZiAod2FzT3ZlcnJpZGRlbiAmJiAoZHVtcERlZmF1bHRzT3B0aW9u
ID09IER1bXBEZWZhdWx0cykpIHsKICAgICAgICAgYXV0byBkZWZhdWx0T3B0aW9uID0gT3B0aW9u
UmVhZGVyOjpkZWZhdWx0Rm9yKGlkKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
KGRlZmF1bHQ6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIChkZWZhdWx0OiAiKTsKICAg
ICAgICAgZGVmYXVsdE9wdGlvbi5kdW1wKGJ1aWxkZXIpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIikiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIikiKTsKICAgICB9CiAKICAg
ICBpZiAobmVlZHNEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDMwODBmOTA2Njk3M2M2MDdlODhiNTkwZTcz
NjY3NjQyODU0YmIwNmEuLjA4Mjg3ODA3MjI1NWQ4OTczNzA4MjU5ODJjZmU3ZTJlNTA0OThiYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcApAQCAtMzg0LDkgKzM4NCw5IEBAIGlubGluZSB2b2lkIGFwcGVuZExpbmVUZXJtaW5hdG9y
RXNjYXBlPFVDaGFyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBVQ2hhciBsaW5lCiAgICAgZWxz
ZSBpZiAobGluZVRlcm1pbmF0b3IgPT0gJ1xyJykKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3In
KTsKICAgICBlbHNlIGlmIChsaW5lVGVybWluYXRvciA9PSAweDIwMjgpCi0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgidTIwMjgiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInUyMDI4
Iik7CiAgICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInUyMDI5Iik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1MjAyOSIpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAKaW5kZXggZDcxZjNlYzE5ZmYzNjc0Njc3MDdmZTUyYjg4MDI0YzU2
MjdhMTRhZC4uMTZhM2I0NjJhNDdmMzY3YzIyMzY5YTIxMGY4NGQ3YmI0YmMwZjliMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAK
QEAgLTEwNDksNyArMTA0OSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wRnVu
Y3Rpb25zKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICAgICBoYXNoID0gc3RyZWFtLnRvU3Ry
aW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaGFzaCA9ICI8bmlsPiJfczsKLSAg
ICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lLmRpc3BsYXlO
YW1lKG1fdm0pLCAnIycsIGhhc2gsICc6JywgZnJhbWUuc291cmNlSUQoKSk7CisgICAgICAgIGF1
dG8gZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWUuZGlzcGxheU5hbWUobV92bSks
ICcjJywgaGFzaCwgJzonLCBmcmFtZS5zb3VyY2VJRCgpKTsKICAgICAgICAgZnVuY3Rpb25Db3Vu
dHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9yLT52YWx1ZSsrOwogICAgICAgICB0
b3RhbFNhbXBsZXMrKzsKICAgICB9CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIFNhbXBsaW5n
UHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9
OwogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3RhY2tUcmFjZS5mcmFtZXMuZmlyc3Qo
KTsKLSAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lLmRp
c3BsYXlOYW1lKG1fdm0pLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9uKGZyYW1lLnNlbWFudGljTG9j
YXRpb24sIGZyYW1lLndhc21Db21waWxhdGlvbk1vZGUpKTsKKyAgICAgICAgYXV0byBmcmFtZURl
c2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRp
b25Gb3JMb2NhdGlvbihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRp
b25Nb2RlKSk7CiAgICAgICAgIGlmIChPcHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29k
ZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxv
Y2F0aW9uKSB7CiAgICAgICAgICAgICBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFt
ZURlc2NyaXB0aW9uLCAiIDwtLSAiLAogICAgICAgICAgICAgICAgIG1hY2hpbmVMb2NhdGlvbi0+
c2Vjb25kLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24obWFj
aGluZUxvY2F0aW9uLT5maXJzdCwgV1RGOjpudWxsb3B0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCBhZmJlMmIzOTYxNWYxN2RiMzVj
OGM4NzEzYzk5M2Q0ZjZmMGRjYTQ0Li42MjIxMTM5NDliZTlhNzU3ZWQ0MDBiNTJkYTUxMjk4YTMy
M2RhYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ci5jcHAKQEAgLTg1LDIwICs4NSwxNyBAQCBTdHJpbmcgVHlwZVByb2ZpbGVyOjp0eXBlSW5mb3Jt
YXRpb25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNoRGVzYwogCiAgICAg
anNvbi5hcHBlbmQoJ3snKTsKIAotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJnbG9iYWxUeXBl
U2V0XCI6Iik7CisgICAganNvbi5hcHBlbmQoIlwiZ2xvYmFsVHlwZVNldFwiOiIpOwogICAgIGlm
IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxl
SUQgIT0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0cykKICAgICAgICAganNvbi5hcHBlbmQo
bG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+dG9KU09OU3RyaW5nKCkpOwogICAgIGVsc2UKLSAg
ICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJu
dWxsIik7CiAgICAganNvbi5hcHBlbmQoJywnKTsKIAogICAgIGpzb24uYXBwZW5kKCJcImluc3Ry
dWN0aW9uVHlwZVNldFwiOiIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+dG9KU09O
U3RyaW5nKCksICcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaXNPdmVyZmxvd25c
IjoiKTsKLSAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5pc092ZXJmbG93
bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFR5
cGVTZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUi
KTsKLSAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICBi
b29sIGlzT3ZlcmZsb3duID0gbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5pc092ZXJm
bG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2Jh
bFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpOworICAgIGpzb24uYXBwZW5kKCJcImlzT3ZlcmZsb3du
XCI6IiwgaXNPdmVyZmxvd24gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIGpzb24uYXBwZW5k
KCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXgg
NzIxNDEwYjEwZGI0MWFiOTgyYTk4OGY1OWM2MWI3NTA0MWM1ODI0Zi4uZDg4YmEyOGMzZjMwOTI3
MmUzZGEyZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKQEAgLTk1LDQyICs5NSwzNiBAQCBTdHJpbmcgVHlwZVNldDo6ZHVtcFR5
cGVzKCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKICAgICBpZiAobV9zZWVuVHlw
ZXMgJiBUeXBlRnVuY3Rpb24pCi0gICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJhbCgiRnVuY3Rpb24g
Iik7CisgICAgICAgIHNlZW4uYXBwZW5kKCJGdW5jdGlvbiAiKTsKICAgICBpZiAobV9zZWVuVHlw
ZXMgJiBUeXBlVW5kZWZpbmVkKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlVuZGVmaW5l
ZCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5lZCAiKTsKICAgICBpZiAobV9zZWVu
VHlwZXMgJiBUeXBlTnVsbCkKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJOdWxsICIpOwor
ICAgICAgICBzZWVuLmFwcGVuZCgiTnVsbCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBl
Qm9vbGVhbikKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJCb29sZWFuICIpOworICAgICAg
ICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQW55
SW50KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIkFueUludCAiKTsKKyAgICAgICAgc2Vl
bi5hcHBlbmQoIkFueUludCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVtYmVyKQot
ICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk51bWJlciAiKTsKKyAgICAgICAgc2Vlbi5hcHBl
bmQoIk51bWJlciAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKQotICAgICAg
ICBzZWVuLmFwcGVuZExpdGVyYWwoIlN0cmluZyAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlN0
cmluZyAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlT2JqZWN0KQotICAgICAgICBzZWVu
LmFwcGVuZExpdGVyYWwoIk9iamVjdCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIk9iamVjdCAi
KTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3ltYm9sKQotICAgICAgICBzZWVuLmFwcGVu
ZExpdGVyYWwoIlN5bWJvbCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlN5bWJvbCAiKTsKIAot
ICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpIHsKLSAgICAg
ICAgc2Vlbi5hcHBlbmQoc2hhcGUtPm1fY29uc3RydWN0b3JOYW1lKTsKLSAgICAgICAgc2Vlbi5h
cHBlbmQoJyAnKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBzaGFwZSA6IG1fc3RydWN0
dXJlSGlzdG9yeSkKKyAgICAgICAgc2Vlbi5hcHBlbmQoc2hhcGUtPm1fY29uc3RydWN0b3JOYW1l
LCAnICcpOwogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpIAotICAgICAgICBz
ZWVuLmFwcGVuZExpdGVyYWwoIlxuU3RydWN0dXJlczpbICIpOwotICAgIGZvciAoY29uc3QgYXV0
byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpIHsKLSAgICAgICAgc2Vlbi5hcHBlbmQoc2hh
cGUtPnN0cmluZ1JlcHJlc2VudGF0aW9uKCkpOwotICAgICAgICBzZWVuLmFwcGVuZCgnICcpOwot
ICAgIH0KKyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpbICIpOworICAgIGZvciAo
Y29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpCisgICAgICAgIHNlZW4uYXBw
ZW5kKHNoYXBlLT5zdHJpbmdSZXByZXNlbnRhdGlvbigpLCAnICcpOwogICAgIGlmIChtX3N0cnVj
dHVyZUhpc3Rvcnkuc2l6ZSgpKQogICAgICAgICBzZWVuLmFwcGVuZCgnXScpOwogCi0gICAgaWYg
KG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpIHsKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFs
KCJcbkxlYXN0IENvbW1vbiBBbmNlc3RvcjogIik7Ci0gICAgICAgIHNlZW4uYXBwZW5kKGxlYXN0
Q29tbW9uQW5jZXN0b3IoKSk7Ci0gICAgfQorICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6
ZSgpKQorICAgICAgICBzZWVuLmFwcGVuZCgiXG5MZWFzdCBDb21tb24gQW5jZXN0b3I6ICIsIGxl
YXN0Q29tbW9uQW5jZXN0b3IoKSk7CiAKICAgICByZXR1cm4gc2Vlbi50b1N0cmluZygpOwogfQpA
QCAtMjU4LDU5ICsyNTIsNTcgQEAgU3RyaW5nIFR5cGVTZXQ6OnRvSlNPTlN0cmluZygpIGNvbnN0
CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgIGpzb24uYXBwZW5kKCd7Jyk7CiAKLSAgICBq
c29uLmFwcGVuZExpdGVyYWwoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7CisgICAganNvbi5hcHBl
bmQoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3Ry
aW5nKGRpc3BsYXlOYW1lKCkpOwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFw
cGVuZExpdGVyYWwoIlwicHJpbWl0aXZlVHlwZU5hbWVzXCI6Iik7Ci0gICAganNvbi5hcHBlbmQo
J1snKTsKKyAgICBqc29uLmFwcGVuZCgiXCJwcmltaXRpdmVUeXBlTmFtZXNcIjpbIik7CiAgICAg
Ym9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZp
bmVkKSB7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiXCJVbmRlZmluZWRcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiXCJVbmRlZmluZWRc
IiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkgewogICAgICAgICBp
ZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFz
QW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIk51bGxcIiIpOwor
ICAgICAgICBqc29uLmFwcGVuZCgiXCJOdWxsXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5
cGVzICYgVHlwZUJvb2xlYW4pIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAg
IGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiXCJCb29sZWFuXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwi
Qm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVBbnlJbnQpIHsK
ICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAg
ICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJJ
bnRlZ2VyXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwiSW50ZWdlclwiIik7CiAgICAgfQog
ICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpIHsKICAgICAgICAgaWYgKGhhc0FuSXRl
bSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRy
dWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJOdW1iZXJcIiIpOworICAgICAgICBq
c29uLmFwcGVuZCgiXCJOdW1iZXJcIiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCiAgICAgICAgICAgICBqc29uLmFw
cGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVu
ZExpdGVyYWwoIlwiU3RyaW5nXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwiU3RyaW5nXCIi
KTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVN5bWJvbCkgewogICAgICAgICBp
ZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFz
QW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlN5bWJvbFwiIik7
CisgICAgICAgIGpzb24uYXBwZW5kKCJcIlN5bWJvbFwiIik7CiAgICAgfQogICAgIGpzb24uYXBw
ZW5kKCddJyk7CiAKICAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRl
cmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgnWycpOworICAgIGpzb24u
YXBwZW5kKCJcInN0cnVjdHVyZXNcIjpbIik7CiAgICAgaGFzQW5JdGVtID0gZmFsc2U7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgaWYgKGhhc0FuSXRlbSkKQEAgLTM2MCwxMSArMzUyLDggQEAgU3RyaW5nIFN0cnVj
dHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0
eSk7CiAgICAgfQogCi0gICAgaWYgKG1fcHJvdG8pIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
JzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJfX3Byb3RvX18iKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwotICAgIH0KKyAgICBp
ZiAobV9wcm90bykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpfX3Byb3RvX18iLCBtX3Byb3Rv
LT5wcm9wZXJ0eUhhc2goKSk7CiAKICAgICBtX3Byb3BlcnR5SGFzaCA9IG1ha2VVbmlxdWU8U3Ry
aW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7CkBA
IC00MzcsNTAgKzQyNiw0NyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnRvSlNPTlN0cmluZygp
IGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgIGpzb24uYXBwZW5kKCd7Jyk7CiAK
LSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CisgICAganNv
bi5hcHBlbmQoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CiAgICAganNvbi5hcHBlbmRRdW90ZWRK
U09OU3RyaW5nKG1fY29uc3RydWN0b3JOYW1lKTsKICAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0g
ICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImlzSW5EaWN0aW9uYXJ5TW9kZVwiOiIpOworICAgIGpz
b24uYXBwZW5kKCJcImlzSW5EaWN0aW9uYXJ5TW9kZVwiOiIpOwogICAgIGlmIChtX2lzSW5EaWN0
aW9uYXJ5TW9kZSkKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJ0cnVlIik7CisgICAgICAg
IGpzb24uYXBwZW5kKCJ0cnVlIik7CiAgICAgZWxzZQotICAgICAgICBqc29uLmFwcGVuZExpdGVy
YWwoImZhbHNlIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOwogICAgIGpzb24uYXBw
ZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZmllbGRzXCI6Iik7Ci0gICAg
anNvbi5hcHBlbmQoJ1snKTsKKyAgICBqc29uLmFwcGVuZCgiXCJmaWVsZHNcIjpbIik7CiAgICAg
Ym9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2ZpZWxkcy5iZWdp
bigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChh
dXRvJiBmaWVsZCA6IG1fZmllbGRzKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCiAgICAgICAg
ICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwogCi0gICAg
ICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCkuZ2V0KCkpOworICAgICAgICBTdHJpbmcgZmllbGRO
YW1lKGZpZWxkLmdldCgpKTsKICAgICAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGZp
ZWxkTmFtZSk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCddJyk7Ci0gICAganNvbi5hcHBlbmQo
JywnKTsKKyAgICBqc29uLmFwcGVuZCgiXSwiKTsKIAotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJvcHRpb25hbEZpZWxkc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCdbJyk7CisgICAganNvbi5h
cHBlbmQoIlwib3B0aW9uYWxGaWVsZHNcIjpbIik7CiAgICAgaGFzQW5JdGVtID0gZmFsc2U7Ci0g
ICAgZm9yIChhdXRvIGl0ID0gbV9vcHRpb25hbEZpZWxkcy5iZWdpbigpLCBlbmQgPSBtX29wdGlv
bmFsRmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8mIGZpZWxk
IDogbV9vcHRpb25hbEZpZWxkcykgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAgICAg
ICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKIAotICAgICAg
ICBTdHJpbmcgZmllbGROYW1lKCgqaXQpLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIGZpZWxkTmFt
ZShmaWVsZC5nZXQoKSk7CiAgICAgICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhmaWVs
ZE5hbWUpOwogICAgIH0KICAgICBqc29uLmFwcGVuZCgnXScpOwogICAgIGpzb24uYXBwZW5kKCcs
Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicHJvdG9cIjoiKTsKKyAgICBqc29uLmFw
cGVuZCgiXCJwcm90b1wiOiIpOwogICAgIGlmIChtX3Byb3RvKQogICAgICAgICBqc29uLmFwcGVu
ZChtX3Byb3RvLT50b0pTT05TdHJpbmcoKSk7CiAgICAgZWxzZQotICAgICAgICBqc29uLmFwcGVu
ZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIm51bGwiKTsKIAogICAgIGpz
b24uYXBwZW5kKCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggYWE4NmQ1YjEwYjcyZjE2
YjgyODNkNzhmNjkxYzkxZjliNDIxMWIwNS4uYzNmMTcwY2MyOGFiZWVjNDAyYTJjNzI4ZmQxNzFi
YWVjNjU4YmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTE0NywyNSArMTQ3LDE4IEBAIFN0
cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nKQogICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsK
IAotICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOwotICAgIFVDaGFyIGNoYXJhY3RlciA9IDA7
CisgICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIgPSAwOwogICAgIFVDaGFyIG5leHRDaGFyYWN0
ZXIgPSBpbnB1dFN0cmluZ1swXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgICAg
IGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAgIG5leHRDaGFyYWN0ZXIgPSBpICsg
MSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7Ci0KKyAgICAgICAgYXV0byBjaGFy
YWN0ZXIgPSBzdGQ6OmV4Y2hhbmdlKG5leHRDaGFyYWN0ZXIsIGkgKyAxIDwgbGVuZ3RoID8gaW5w
dXRTdHJpbmdbaSArIDFdIDogMCk7CiAgICAgICAgIGlmIChzaG91bGRFc2NhcGVVQ2hhcihjaGFy
YWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFjdGVyKSkgewotICAgICAgICAgICAg
aWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcl
Jyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaGFyYWN0ZXIgPj4gOCks
IDIpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjaGFyYWN0ZXIpLCAyKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoY2hhcmFjdGVyIDw9IDB4RkYpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJScs
IGhleChjaGFyYWN0ZXIsIDIpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCIlKyIsIGhleChzdGF0aWNfY2FzdDx1aW50OF90PihjaGFyYWN0ZXIgPj4g
OCksIDIpLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4oY2hhcmFjdGVyKSwgMikpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAg
cHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRleCA0Nzc2ODU0ODA4Mjk3ZWNkMjM5
OGYyYzUwN2U4YzZhMjhhZjZlNTAxLi4zZDI1NmJlZjJkYTkxMTQ4MzI5YTUwM2FmMmI0YjY3N2Vi
NTIxOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNTIzLDI1ICs1MjMsMjUgQEAgdm9pZCBW
YWx1ZTo6ZXNjYXBlU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIFN0cmluZ1ZpZXcgc3Ry
aW5nKQogICAgIGZvciAoVUNoYXIgY29kZVVuaXQgOiBzdHJpbmcuY29kZVVuaXRzKCkpIHsKICAg
ICAgICAgc3dpdGNoIChjb2RlVW5pdCkgewogICAgICAgICBjYXNlICdcYic6Ci0gICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcYiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIlxcYiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJ1xmJzoKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxmIik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiXFxmIik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY2FzZSAn
XG4nOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXG4iKTsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcXG4iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBjYXNlICdccic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcciIpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcciIpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGNhc2UgJ1x0JzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XFx0Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFx0Iik7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcXFxcIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxcXCIpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJyInOgotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJcXFwiIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxc
IiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZXNj
YXBlIDwgYW5kID4gdG8gcHJldmVudCBzY3JpcHQgZXhlY3V0aW9uLgpAQCAtNTk4LDEzICs1OTgs
MTMgQEAgdm9pZCBWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6TnVsbDoKLSAgICAgICAg
b3V0cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgibnVs
bCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJvb2xlYW46CiAgICAgICAgIGlm
IChtX3ZhbHVlLmJvb2xlYW4pCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgidHJ1
ZSIpOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgidHJ1ZSIpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6U3Ry
aW5nOgogICAgICAgICBhcHBlbmREb3VibGVRdW90ZWRTdHJpbmcob3V0cHV0LCBtX3ZhbHVlLnN0
cmluZyk7CkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1
aWxkZXImIG91dHB1dCkgY29uc3QKICAgICBjYXNlIFR5cGU6OkRvdWJsZToKICAgICBjYXNlIFR5
cGU6OkludGVnZXI6IHsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1fdmFsdWUubnVtYmVy
KSkKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFsKCJudWxsIik7CisgICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKCJudWxsIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dHB1
dC5hcHBlbmQobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKaW5kZXggNGY1
NDQ3ZGEzMTdlZWIxYjE4ZDZjNDk5NWMzZWQzOWE4NjMzNmJlNS4uNWJkYWY2NzZhMGI2ZDcwMzIy
ODMxYjg4MDdhNDQ5ZWFlNGM5OGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2Vy
LmgKKysrIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAgLTMwNyw3ICszMDcsNyBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50PgogICAgIHN0YXRpYyBpbmxp
bmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIGNv
bnN0IEFyZ3VtZW50Ji4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBTdHJpbmcgbG9nTWVz
c2FnZSA9IG1ha2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0b1N0cmluZyhhcmd1bWVu
dHMpLi4uKTsKKyAgICAgICAgYXV0byBsb2dNZXNzYWdlID0gbWFrZVN0cmluZyhMb2dBcmd1bWVu
dDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOwogCiAjaWYgUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICAgICAgV1RGTG9nKCZjaGFubmVsLCAiJXMiLCBsb2dNZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnQ+CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGxvZ1ZlcmJvc2UoV1RG
TG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGZpbGUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgbGluZSwgY29uc3QgQXJndW1lbnQmLi4uIGFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIFN0cmluZyBsb2dNZXNzYWdlID0gbWFrZVN0cmluZyhMb2dB
cmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOworICAgICAgICBhdXRv
IGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFyZ3VtZW50Pjo6dG9TdHJpbmco
YXJndW1lbnRzKS4uLik7CiAKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBXVEZM
b2dWZXJib3NlKGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCAmY2hhbm5lbCwgIiVzIiwgbG9nTWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDkzOTc3NTA4YjRjNTdlMTky
MTA3Y2JiMmM1NjJmZmJlYWU1ZjhhNjcuLjRiYmM5ODFkOGRiMDJiNTM2OWRhZmMxNDRlOGFkMjQ0
MzlmZGVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUg
PHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTU2NSwxNSArNTY0LDEwIEBAIHZvaWQgTWVkaWFUaW1lOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAKIFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ3snKTsKLSAgICBpZiAoIWhh
c0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGltZVZhbHVlLCAnLycs
IG1fdGltZVNjYWxlLCAiID0gIik7Ci0gICAgYnVpbGRlci5hcHBlbmQodG9Eb3VibGUoKSk7Ci0g
ICAgaWYgKGlzSW52YWxpZCgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaW52
YWxpZCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICBjb25zdCBjaGFyKiBpbnZhbGlkID0gaXNJbnZhbGlkKCkgPyAiLCBpbnZh
bGlkIiA6ICIiOworICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygneycsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoJ3snLCBtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2FsZSwgIiA9ICIsIHRvRG91Ymxl
KCksIGludmFsaWQsICd9Jyk7CiB9CiAKIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlhVGltZTo6dG9K
U09OT2JqZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmgKaW5kZXggMjJhY2VmY2M4YmJjZmZjMTMzMjA3NWE3ODZhYmM0YmUzZGI0
ZmNiMi4uMDNmNTg2MWMzM2NiZTJmMzlkNWMxMDNjOGE5MjBlNDFiZDAxZmVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTk2LDcg
Kzk2LDcgQEAgaW5saW5lIHZvaWQgd3JpdGVJbnRlZ2VyVG9CdWZmZXIoSW50ZWdlclR5cGUgaW50
ZWdlciwgQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGU+
Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmdJbXBsKFVuc2lnbmVkSW50
ZWdlclR5cGUgbnVtYmVyKQorY29uc3RleHByIHVuc2lnbmVkIGxlbmd0aE9mSW50ZWdlckFzU3Ry
aW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mSW50
ZWdlckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgSW50ZWdlclR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2Vy
QXNTdHJpbmcoSW50ZWdlclR5cGUgaW50ZWdlcikKK2NvbnN0ZXhwciB1bnNpZ25lZCBsZW5ndGhP
ZkludGVnZXJBc1N0cmluZyhJbnRlZ2VyVHlwZSBpbnRlZ2VyKQogewogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19pbnRlZ3JhbF92PEludGVnZXJUeXBlPik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX3NhbWVfdjxJbnRlZ2VyVHlwZSwgYm9vbD4pIHsKQEAgLTEyOCwzICsxMjgsNiBAQCBp
bmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoSW50ZWdlclR5cGUgaW50ZWdl
cikKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6bGVuZ3RoT2ZJbnRlZ2Vy
QXNTdHJpbmc7Cit1c2luZyBXVEY6OndyaXRlSW50ZWdlclRvQnVmZmVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1NGYyYjI0MjU5YzU4MGZmMzE0NWU4ZTdiZmYzYzg4YzYy
Zjk5N2EyLi42NjY4YWM2MjczMGUwODY5NjUwYjI5ODIwZjgzNmRmNzcxYTg0MWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtNjksOCArNjksNiBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IEFkZCBhIFN0cmluZ1R5cGVBZGFwdGVyIHNvIHdlIGNhbiBhcHBlbmQgb25lIHN0
cmluZyBidWlsZGVyIHRvIGFub3RoZXIgd2l0aCB2YXJpYWRpYyBhcHBlbmQuCiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nQnVpbGRlciYpOwogCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IHZvaWQgYXBwZW5kTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylb
Y2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVycywgY2hhcmFjdGVy
Q291bnQgLSAxKTsgfQotCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoVUNoYXIpID0gZGVsZXRl
OwogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyKExDaGFyKSA9IGRlbGV0ZTsKICAgICB2b2lkIGFw
cGVuZENoYXJhY3RlcihjaGFyKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAppbmRleCAyNjkwMmUwZmEyNDViZGFlMWVmZjFlYTBjNzE3YjZkMTliNzlmMTQ2
Li4yZTM4ZWY3Nzg5OWEzYzNlYmFmZWI1MWRhOTQwNmNmYWJkZGY3MzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0xNzAsMTUgKzE3MCwxNSBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgbV92ZWN0b3I7CiB9OwogCi10ZW1wbGF0ZTw+IGNs
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewordGVtcGxhdGU8PiBjbGFzcyBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4gewogcHVibGljOgotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIFN0cmluZ1R5cGVBZGFwdGVy
KFN0cmluZ0ltcGwqIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyB7IHN0cmluZyB9CiAgICAg
ewogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
Lmxlbmd0aCgpOyB9Ci0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
c051bGwoKSB8fCBtX3N0cmluZy5pczhCaXQoKTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nID8gbV9zdHJpbmctPmxlbmd0aCgpIDogMDsgfQorICAgIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gIW1fc3RyaW5nIHx8IG1fc3RyaW5nLT5pczhCaXQo
KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhD
aGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKICAgICB7CiAgICAgICAgIFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsK
QEAgLTE4Niw3ICsxODYsMjMgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25z
dCBTdHJpbmcmIG1fc3RyaW5nOworICAgIFN0cmluZ0ltcGwqIGNvbnN0IG1fc3RyaW5nOworfTsK
KwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5nSW1wbCosIHZv
aWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwqLCB2b2lkPiB7CitwdWJs
aWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQXRvbVN0cmluZ0ltcGwqIHN0cmluZykKKyAgICAg
ICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geyBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oc3RyaW5nKSB9CisgICAgeworICAgIH0KK307CisKK3RlbXBsYXRlPD4gY2xh
c3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nLCB2b2lkPiA6IHB1YmxpYyBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgICAgICA6IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z0ltcGwqLCB2b2lkPiB7IHN0cmluZy5pbXBsKCkgfQorICAgIHsKKyAgICB9CiB9OwogCiB0ZW1w
bGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEF0b21TdHJpbmcsIHZvaWQ+IDogcHVibGlj
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewpAQCAtMTk3LDYgKzIxMywzMyBAQCBw
dWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdJbXBsJiwgdm9pZD4geworcHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKFN0cmlu
Z0ltcGwmIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyB7IHN0cmluZyB9CisgICAgeworICAg
IH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0
aCgpOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pczhCaXQo
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhD
aGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsK
KyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElFRF9XVEZfU1RSSU5HKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFN0cmluZ0ltcGwmIG1fc3RyaW5nOworfTsKKwordGVtcGxhdGU8
PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5nSW1wbCYsIHZvaWQ+IDogcHVibGlj
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lkPiB7CitwdWJsaWM6CisgICAgU3Ry
aW5nVHlwZUFkYXB0ZXIoU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgICAgICA6IFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lkPiB7IHN0cmluZyB9CisgICAgeworICAgIH0KK307CisK
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxzdGQ6OnR1cGxlPFN0cmluZ1R5cGVzLi4uPiwgdm9pZD4gewogcHVibGljOgogICAgIFN0cmlu
Z1R5cGVBZGFwdGVyKHN0ZDo6dHVwbGU8U3RyaW5nVHlwZXMuLi4+IHR1cGxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAx
ZDE3MTU4ZDI4Y2UzOWU5ZTcwYzgzNDcwMzM5YTZmNzc0NzEzMDQ0Li41NWNmZGFhZDdkYmZjMTE1
ZDkyN2ZhZjlhNGU4MGEzMTZjM2Y1MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRp
YyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgYXV0byBmb3JtID0gRE9NRm9ybURhdGE6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5cGUoY29udGVu
dFR5cGUpOwogICAgIGlmIChhdXRvIG11bHRpcGFydEJvdW5kYXJ5ID0gcGFyc2VNdWx0aXBhcnRC
b3VuZGFyeShtaW1lVHlwZSkpIHsKLSAgICAgICAgU3RyaW5nIGJvdW5kYXJ5V2l0aERhc2hlcyA9
IG1ha2VTdHJpbmcoIi0tIiwgKm11bHRpcGFydEJvdW5kYXJ5KTsKKyAgICAgICAgYXV0byBib3Vu
ZGFyeVdpdGhEYXNoZXMgPSBtYWtlU3RyaW5nKCItLSIsICptdWx0aXBhcnRCb3VuZGFyeSk7CiAg
ICAgICAgIENTdHJpbmcgYm91bmRhcnkgPSBib3VuZGFyeVdpdGhEYXNoZXMudXRmOCgpOwogICAg
ICAgICBzaXplX3QgYm91bmRhcnlMZW5ndGggPSBib3VuZGFyeS5sZW5ndGgoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAppbmRleCBiNDFi
MmYwZTNiMzYxNmU1OGM1M2UwNzQwMzQ2MmVmMGI5ZmExMmQyLi44Zjc4YzRjN2ViZTg3NzQ5Y2My
MzhiNGNmNzUwNGY4MDRkY2EzNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtMzIzLDI0ICszMjMsMjQgQEAgU3RyaW5nIElEQktl
eURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gIjxpbnZhbGlkPiJf
czsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjxhcnJheT4g
LSB7ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiPGFycmF5PiAtIHsgIik7CiAgICAgICAg
IGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXlbaV0ubG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAg
ICAgIGlmIChpIDwgYXJyYXkuc2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7
CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgfSIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIH0iKTsKICAgICAgICAgcmVzdWx0ID0gYnVpbGRlci50b1N0cmlu
ZygpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6
OkJpbmFyeTogewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiPGJpbmFyeT4gLSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjxiaW5hcnk+IC0gIik7CiAKICAgICAgICAgYXV0byogZGF0YSA9IFdURjo6Z2V0PFRocmVhZFNh
ZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CiAgICAgICAgIGlmICghZGF0YSkgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCIobnVsbCkiKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIudG9T
dHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcg
QEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGRhdGEtPnNpemUoKSA+IDgpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIi4uLiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIi4uLiIpOwogCiAg
ICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNkMmNkMTM2YWQ0Mzc0NWFhY2MyMjc0
OTVkMDVmN2Q3YTJlM2M5ZGQuLmQ3ZmEzYmMyZWUxYzY4N2NlN2U0YTFiYmQ3YTRiMGFjNjA2MzQ4
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yMjIwLDcgKzIyMjAs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICB9CiAKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgYWxyZWFkeSBoYXZlIGEgZmlsZSBmb3IgdGhpcyBibG9iVVJMLCBzbyBjb21taXQgb3Vy
IGZpbGUgYXMgYSB1bmlxdWUgZmlsZW5hbWUKLSAgICAgICAgU3RyaW5nIHN0b3JlZEZpbGVuYW1l
ID0gbWFrZVN0cmluZyhwb3RlbnRpYWxGaWxlTmFtZUludGVnZXIsICIuYmxvYiIpOworICAgICAg
ICBhdXRvIHN0b3JlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhwb3RlbnRpYWxGaWxlTmFtZUludGVn
ZXIsICIuYmxvYiIpOwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0
YXRlbWVudChTUUw6OkFkZEJsb2JGaWxlbmFtZSwgIklOU0VSVCBJTlRPIEJsb2JGaWxlcyBWQUxV
RVMgKD8sID8pOyJfcyk7CiAgICAgICAgICAgICBpZiAoIXNxbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCA3MDMyYjIzOGNiYTZmMWI1NjcxMWE5ZmY5OGE2OTYxYWUzNjU0YWI5Li40Y2UyYmYy
NThhM2ViZTdmZDg0MjhhZjQ3N2JlNDIwOTQ4OTU1NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1
ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIElEQlNlcnZlciB7CkBAIC0xMzQsNzggKzEzMywzMiBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNv
cjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktl
eVBhdAogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0RpcmVj
dGlvbk5leHQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwgdmFsdWUgRlJPTSBJbmRleFJlY29yZHMg
V0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhUKSBBTkQgdmFsdWUgIik7
Ci0gICAgaWYgKGlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJz4nKTsK
LSAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc8Jyk7Ci0KLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkgdmFsdWUiKTsKLSAgICBpZiAo
IWlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgREVTQyIp
OwotCi0gICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlNFTEVDVCByb3dpZCwga2V5LCB2YWx1ZSBG
Uk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRF
WFQpIEFORCB2YWx1ZSAiLAorICAgICAgICBpc0RpcmVjdGlvbk5leHQgPyAnPicgOiAnPCcsICIg
Q0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIHZhbHVlIiwgaXNEaXJlY3Rpb25OZXh0ID8gIiIgOiAi
IERFU0MiLCAnOycpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkSW5kZXhTdGF0ZW1lbnQoY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
Y3Vyc29yRGlyZWN0aW9uKQogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVlIEZST00gSW5kZXhS
ZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgIik7Ci0gICAgaWYgKCFrZXlSYW5nZS5s
b3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJPcGVuKQotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIj49Iik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
PicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFTIFRFWFQpIEFORCBr
ZXkgIik7Ci0gICAgaWYgKCFrZXlSYW5nZS51cHBlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2Uu
dXBwZXJPcGVuKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjw9Iik7Ci0gICAgZWxz
ZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgnPCcpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIpOwotICAgIGlmIChjdXJzb3JEaXJl
Y3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgfHwgY3Vyc29yRGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVlKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiwgdmFsdWUiKTsKLSAgICBpZiAoY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uOjpQcmV2KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVND
Iik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZCgnOycpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVl
IEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgIiwKKyAgICAgICAg
IWtleVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5nZS5sb3dlck9wZW4gPyAiPj0i
IDogIj4iLAorICAgICAgICAiIENBU1QoPyBBUyBURVhUKSBBTkQga2V5ICIsCisgICAgICAgICFr
ZXlSYW5nZS51cHBlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UudXBwZXJPcGVuID8gIjw9IiA6
ICI8IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5IiwKKyAgICAgICAg
Y3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2IHx8IGN1
cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldnVuaXF1ZSA/
ICIgREVTQyIgOiAiIiwKKyAgICAgICAgIiwgdmFsdWUiLAorICAgICAgICBjdXJzb3JEaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgPyAiIERFU0MiIDogIiIsCisg
ICAgICAgICc7Jyk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRPYmplY3RTdG9yZVN0YXRlbWVu
dChjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBjdXJzb3JEaXJlY3Rpb24pCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwgdmFsdWUgRlJPTSBS
ZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgIik7Ci0KLSAgICBpZiAoIWtl
eVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5nZS5sb3dlck9wZW4pCi0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPj0iKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc+Jyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVY
VCkgQU5EIGtleSAiKTsKLQotICAgIGlmICgha2V5UmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgJiYg
IWtleVJhbmdlLnVwcGVyT3BlbikKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8PSIp
OwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzwnKTsKLQotICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXkiKTsKLQotICAgIGlm
IChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgfHwg
Y3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVl
KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0KLSAgICBidWlsZGVy
LmFwcGVuZCgnOycpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZygiU0VMRUNUIHJvd2lkLCBrZXksIHZhbHVlIEZST00gUmVjb3JkcyBXSEVS
RSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ICIsCisgICAgICAgICFrZXlSYW5nZS5sb3dlcktl
eS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJPcGVuID8gIj49IiA6ICI+IiwKKyAgICAgICAg
IiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSAiLAorICAgICAgICAha2V5UmFuZ2UudXBwZXJLZXku
aXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVyT3BlbiA/ICI8PSIgOiAiPCIsCisgICAgICAgICIg
Q0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIsCisgICAgICAgIGN1cnNvckRpcmVjdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldiB8fCBjdXJzb3JEaXJlY3Rpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWUgPyAiIERFU0MiIDogIiIsCisg
ICAgICAgICc7Jyk7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3RhYmxpc2hTdGF0ZW1l
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAppbmRleCBmZTgwZDQwMTAwNWU1MTRiOWM5ZjRkNDRjMDdlOTdjMDhkZDE1ODQ3Li5jZDljYTIy
NGMzOGJkYjRlNWMxYzUxNTE3YjE2OGExNTg0YTU1OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTA4LDExICsxMDgsMTAgQEAg
c3RhdGljIFN0cmluZyBlbmNvZGVQcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKHByb3RvY29sW2ldIDwg
MHgyMCB8fCBwcm90b2NvbFtpXSA+IDB4N0UpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiXFx1Iik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgocHJvdG9jb2xb
aV0sIDQpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm90b2NvbFtpXSA9PSAweDVjKQotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CisgICAgICAgIGlmIChwcm90b2Nv
bFtpXSA8IDB4MjAgfHwgcHJvdG9jb2xbaV0gPiAweDdFKQorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIlxcdSIsIGhleChwcm90b2NvbFtpXSwgNCkpOworICAgICAgICBlbHNlIGlmIChwcm90
b2NvbFtpXSA9PSAweDVjKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcXFwiKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocHJvdG9jb2xbaV0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAppbmRleCAwMDY2NjM4YzE3MWMz
OWQ2NjUzODZhNzQxYTAwY2NkZGIwY2RjNmJjLi43YWYyYzM3OTFhMGFlOGQ2ZWU5ZTkyOTk4MzU3
ZTg2MGFmYmI3NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCkBAIC03
MSw5ICs3MSw3IEBAIGNvbnN0IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpj
cmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0CiAKIHZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tl
biwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMpCiB7Ci0gICAg
aWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICBtX2Fj
Y2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICBtX2FjY2Vw
dGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKGV4dGVuc2lvblRva2VuKTsKKyAgICBtX2FjY2Vw
dGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5p
c0VtcHR5KCkgPyAiIiA6ICIsICIsIGV4dGVuc2lvblRva2VuKTsKICAgICAvLyBGSVhNRTogU2hv
dWxkIHVzZSBMaXN0SGFzaFNldCB0byBrZWVwIHRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVycy4K
ICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGV4dGVuc2lvblBhcmFtZXRlcnMpIHsKICAgICAg
ICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZCgiOyAiLCBwYXJhbWV0ZXIua2V5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZTQ5MGFkYTM3YmQxMzY4NGM1Y2FmNmFiY2I0MjcxNTQ0
ZDg3YzNlNS4uODQ5Y2Y1ZjYyNGJjYzI3MmVlNWU3YmM2MjZkYTdlNTAzYWQ0NDkyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTY2LDg1ICsxNjUs
NTMgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRpb24oKSBjb25zdAog
CiBDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNv
bnN0CiB7Ci0gICAgLy8gS2VlcCB0aGUgZm9sbG93aW5nIGNvbnNpc3RlbnQgd2l0aCBjbGllbnRI
YW5kc2hha2VSZXF1ZXN0KCkuCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIC8vIEtl
ZXAgdGhlIGZvbGxvd2luZyBjb25zaXN0ZW50IHdpdGggY2xpZW50SGFuZHNoYWtlUmVxdWVzdCBq
dXN0IGJlbG93LgogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJHRVQgIik7Ci0gICAgYnVp
bGRlci5hcHBlbmQocmVzb3VyY2VOYW1lKG1fdXJsKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgSFRUUC8xLjFcclxuIik7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBmaWVsZHM7Ci0gICAg
ZmllbGRzLmFwcGVuZCgiVXBncmFkZTogd2Vic29ja2V0Iik7Ci0gICAgZmllbGRzLmFwcGVuZCgi
Q29ubmVjdGlvbjogVXBncmFkZSIpOwotICAgIGZpZWxkcy5hcHBlbmQoIkhvc3Q6ICIgKyBob3N0
TmFtZShtX3VybCwgbV9zZWN1cmUpKTsKLSAgICBmaWVsZHMuYXBwZW5kKCJPcmlnaW46ICIgKyBt
X2NsaWVudE9yaWdpbik7Ci0gICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkKLSAg
ICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogIiArIG1fY2xpZW50
UHJvdG9jb2wpOwotCi0gICAgLy8gTm90ZTogQ29va2llcyBhcmUgbm90IHJldHJpZXZlZCBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLiBJbnN0ZWFkLCBhIHByb3h5IG9iamVjdCBpcworICAgIC8v
IENvb2tpZXMgYXJlIG5vdCByZXRyaWV2ZWQgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4gSW5z
dGVhZCwgYSBwcm94eSBvYmplY3QgaXMKICAgICAvLyBhZGRlZCBpbiB0aGUgaGFuZHNoYWtlLCBh
bmQgaXMgZXhjaGFuZ2VkIGZvciBhY3R1YWwgY29va2llcyBpbiB0aGUgTmV0d29yayBwcm9jZXNz
LgogCi0gICAgLy8gQWRkIG5vLWNhY2hlIGhlYWRlcnMgdG8gYXZvaWQgY29tcGF0aWJpbGl0eSBp
c3N1ZS4KLSAgICAvLyBUaGVyZSBhcmUgc29tZSBwcm94aWVzIHRoYXQgcmV3cml0ZSAiQ29ubmVj
dGlvbjogdXBncmFkZSIKLSAgICAvLyB0byAiQ29ubmVjdGlvbjogY2xvc2UiIGluIHRoZSByZXNw
b25zZSBpZiBhIHJlcXVlc3QgZG9lc24ndCBjb250YWluCi0gICAgLy8gdGhlc2UgaGVhZGVycy4K
LSAgICBmaWVsZHMuYXBwZW5kKCJQcmFnbWE6IG5vLWNhY2hlIik7Ci0gICAgZmllbGRzLmFwcGVu
ZCgiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUiKTsKLQotICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1X
ZWJTb2NrZXQtS2V5OiAiICsgbV9zZWNXZWJTb2NrZXRLZXkpOwotICAgIGZpZWxkcy5hcHBlbmQo
IlNlYy1XZWJTb2NrZXQtVmVyc2lvbjogMTMiKTsKLSAgICBjb25zdCBTdHJpbmcgZXh0ZW5zaW9u
VmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKLSAgICBp
ZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9uczogIiArIGV4dGVuc2lvblZhbHVlKTsKLQotICAgIC8vIEFkZCBh
IFVzZXItQWdlbnQgaGVhZGVyLgotICAgIGZpZWxkcy5hcHBlbmQobWFrZVN0cmluZygiVXNlci1B
Z2VudDogIiwgbV91c2VyQWdlbnQpKTsKLQotICAgIC8vIEZpZWxkcyBpbiB0aGUgaGFuZHNoYWtl
IGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7IHRoZQotICAgIC8vIG9y
ZGVyIGlzIG5vdCBtZWFuaW5nZnVsLiAgVGh1cywgaXQncyBvayB0byBzZW5kIHRoZSBvcmRlciB3
ZSBjb25zdHJ1Y3RlZAotICAgIC8vIHRoZSBmaWVsZHMuCi0KLSAgICBmb3IgKGF1dG8mIGZpZWxk
IDogZmllbGRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZpZWxkKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcclxuIik7Ci0gICAgfQotCi0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcclxuIik7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsK
KyAgICAvLyBBZGQgbm8tY2FjaGUgaGVhZGVycyB0byBhdm9pZCBhIGNvbXBhdGliaWxpdHkgaXNz
dWUuIFRoZXJlIGFyZSBzb21lIHByb3hpZXMgdGhhdAorICAgIC8vIHJld3JpdGUgIkNvbm5lY3Rp
b246IHVwZ3JhZGUiIHRvICJDb25uZWN0aW9uOiBjbG9zZSIgaW4gdGhlIHJlc3BvbnNlIGlmIGEg
cmVxdWVzdAorICAgIC8vIGRvZXNuJ3QgY29udGFpbiB0aGVzZSBoZWFkZXJzLgorCisgICAgYXV0
byBleHRlbnNpb25zID0gbV9leHRlbnNpb25EaXNwYXRjaGVyLmNyZWF0ZUhlYWRlclZhbHVlKCk7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkdFVCAiLCByZXNvdXJjZU5hbWUobV91cmwpLCAiIEhU
VFAvMS4xXHJcbiIKKyAgICAgICAgIlVwZ3JhZGU6IHdlYnNvY2tldFxyXG4iCisgICAgICAgICJD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbiIKKyAgICAgICAgIkhvc3Q6ICIsIGhvc3ROYW1lKG1fdXJs
LCBtX3NlY3VyZSksICJcclxuIgorICAgICAgICAiT3JpZ2luOiAiLCBtX2NsaWVudE9yaWdpbiwg
IlxyXG4iLAorICAgICAgICBtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSA/ICIiIDogIlNlYy1X
ZWJTb2NrZXQtUHJvdG9jb2w6ICIsIG1fY2xpZW50UHJvdG9jb2wsIG1fY2xpZW50UHJvdG9jb2wu
aXNFbXB0eSgpID8gIiIgOiAiXHJcbiIsCisgICAgICAgICJQcmFnbWE6IG5vLWNhY2hlXHJcbiIK
KyAgICAgICAgIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXHJcbiIKKyAgICAgICAgIlNlYy1XZWJT
b2NrZXQtS2V5OiAiLCBtX3NlY1dlYlNvY2tldEtleSwgIlxyXG4iCisgICAgICAgICJTZWMtV2Vi
U29ja2V0LVZlcnNpb246IDEzXHJcbiIsCisgICAgICAgIGV4dGVuc2lvbnMuaXNFbXB0eSgpID8g
IiIgOiAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAiLCBleHRlbnNpb25zLCBleHRlbnNpb25z
LmlzRW1wdHkoKSA/ICIiIDogIlxyXG4iLAorICAgICAgICAiVXNlci1BZ2VudDogIiwgbV91c2Vy
QWdlbnQsICJcclxuIgorICAgICAgICAiXHJcbiIpLnV0ZjgoKTsKIH0KIAogUmVzb3VyY2VSZXF1
ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChjb25zdCBGdW5j
dGlvbjxTdHJpbmcoY29uc3QgVVJMJik+JiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkg
Y29uc3QKIHsKLSAgICAvLyBLZWVwIHRoZSBmb2xsb3dpbmcgY29uc2lzdGVudCB3aXRoIGNsaWVu
dEhhbmRzaGFrZU1lc3NhZ2UoKS4KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybCk7
Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAvLyBLZWVwIHRoZSBmb2xs
b3dpbmcgY29uc2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UganVzdCBhYm92ZS4K
IAotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0
aW9uLCAiVXBncmFkZSIpOworICAgIGF1dG8gY29va2llID0gbV9hbGxvd0Nvb2tpZXMgPyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29r
aWVzKCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIGV4dGVuc2lvbnMgPSBtX2V4dGVuc2lv
bkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCB7IG1fdXJsIH07CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOworICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAi
VXBncmFkZSJfcyk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6Okhvc3QsIGhvc3ROYW1lKG1fdXJsLCBtX3NlY3VyZSkpOwogICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG1fY2xpZW50T3JpZ2luKTsKICAg
ICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0UHJvdG9jb2wsIG1fY2xp
ZW50UHJvdG9jb2wpOwotCi0gICAgVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFu
ZENvb2tpZXMoKTsKLSAgICBpZiAobV9hbGxvd0Nvb2tpZXMpIHsKLSAgICAgICAgU3RyaW5nIGNv
b2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVybCk7Ci0gICAgICAgIGlmICgh
Y29va2llLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZSk7Ci0gICAgfQotCisgICAgaWYgKCFjb29r
aWUuaXNFbXB0eSgpKQorICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29va2llLCBjb29raWUpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7CiAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJv
bCwgSFRUUEhlYWRlclZhbHVlczo6bm9DYWNoZSgpKTsKLQogICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRLZXksIG1fc2VjV2ViU29ja2V0
S2V5KTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6U2Vj
V2ViU29ja2V0VmVyc2lvbiwgIjEzIik7Ci0gICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVl
ID0gbV9leHRlbnNpb25EaXNwYXRjaGVyLmNyZWF0ZUhlYWRlclZhbHVlKCk7Ci0gICAgaWYgKGV4
dGVuc2lvblZhbHVlLmxlbmd0aCgpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0RXh0ZW5zaW9ucywgZXh0ZW5zaW9uVmFsdWUp
OwotCi0gICAgLy8gQWRkIGEgVXNlci1BZ2VudCBoZWFkZXIuCisgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldFZlcnNpb24sICIxMyJfcyk7
CisgICAgaWYgKCFleHRlbnNpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldEV4dGVuc2lvbnMsIGV4dGVu
c2lvbnMpOwogICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Ci0KICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQppbmRleCA3NTI3NDE1YmEzOTM0ZDU3YWUxMzU3YjNhZWQzMWIxN2Y0YzhmNzNhLi5jYjM1
OTIxZGRkNGU2MDc5OTczMTUwMmJlZGZmMWFiM2YxMzc2Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODEsMTAgKzgxLDYgQEAKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KIAotI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLSNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Ly8gQ2VsbCBUYWJsZXMKQEAgLTM1NDksMTQgKzM1NDUsNyBAQCAtICh2b2lkKXNob3dOb2RlVHJl
ZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZil0ZXh0TWFya2VyCiAKIHN0YXRpYyB2b2lk
IGZvcm1hdEZvckRlYnVnZ2VyKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSwgY2hh
ciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
Ci0gICAgCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20gIik7Ci0gICAgcmVzdWx0LmFw
cGVuZChyYW5nZS5zdGFydC5kZWJ1Z0Rlc2NyaXB0aW9uKCkpOwotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgdG8gIik7Ci0gICAgcmVzdWx0LmFwcGVuZChyYW5nZS5lbmQuZGVidWdEZXNjcmlw
dGlvbigpKTsKLSAgICAKLSAgICBzdHJsY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBzdHJsY3B5KGJ1ZmZlciwgbWFrZVN0cmluZygiZnJv
bSAiLCByYW5nZS5zdGFydC5kZWJ1Z0Rlc2NyaXB0aW9uKCksICIgdG8gIiwgcmFuZ2UuZW5kLmRl
YnVnRGVzY3JpcHRpb24oKSkudXRmOCgpLmRhdGEoKSwgbGVuZ3RoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZp
bHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxG
aWx0ZXJzLmNwcAppbmRleCA2ODVlNzk2ZjM3YWQ2NWUwYmNkMDJjZTM2M2IzZTlhZTdjMjBmMDBm
Li4wMWNmMTk0N2QzMTQ4ZjFhMGQ3ZDlkMzEyNzA4ZTJkMGIzMzRjZTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5j
cHAKQEAgLTk4LDggKzk4LDggQEAgc3RhdGljIFN0cmluZyBwcmVmaXhUcmVlVmVydGV4VG9TdHJp
bmcoY29uc3QgUHJlZml4VHJlZVZlcnRleCYgdmVydGV4LCBjb25zdCBIYXMKIHsKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgd2hpbGUgKGRlcHRoLS0pCi0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInZlcnRleCBh
Y3Rpb25zOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAgIik7CisgICAgYnVpbGRlci5h
cHBlbmQoInZlcnRleCBhY3Rpb25zOiAiKTsKIAogICAgIGF1dG8gYWN0aW9uc1Nsb3QgPSBhY3Rp
b25zLmZpbmQoJnZlcnRleCk7CiAgICAgaWYgKGFjdGlvbnNTbG90ICE9IGFjdGlvbnMuZW5kKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IDdlZThhZWQxYWMzMjI0
ZDdiN2NjNWQwNzdjYzYyNmRlMTc0YjA1MmEuLjI1NjI2NzI4MjJjMWZmZmY4ZjU2MDdlMTc3NDQ5
NmZjM2E1NDk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtODcs
NyArODcsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KENTU1ByaW1pdGl2ZVZhbHVlKgogc3RhdGljIFN0cmluZyBidWlsZENp
cmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBj
b25zdCBTdHJpbmcmIGNlbnRlclkpCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoImNpcmNsZSgiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJjaXJj
bGUoIik7CiAgICAgaWYgKCFyYWRpdXMuaXNOdWxsKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cmFkaXVzKTsKICAgICBpZiAoIWNlbnRlclguaXNOdWxsKCkgfHwgIWNlbnRlclkuaXNOdWxsKCkp
IHsKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKIHN0YXRpYyBTdHJpbmcgYnVpbGRFbGxp
cHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29uc3QgU3RyaW5nJiByYWRpdXNZLCBj
b25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbnN0IFN0cmluZyYgY2VudGVyWSkKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZWxsaXBzZSgiKTsK
KyAgICByZXN1bHQuYXBwZW5kKCJlbGxpcHNlKCIpOwogICAgIGJvb2wgbmVlZHNTZXBhcmF0b3Ig
PSBmYWxzZTsKICAgICBpZiAoIXJhZGl1c1guaXNOdWxsKCkpIHsKICAgICAgICAgcmVzdWx0LmFw
cGVuZChyYWRpdXNYKTsKQEAgLTE5MCw5ICsxOTAsOSBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkUGF0
aFN0cmluZyhjb25zdCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
cwogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGlmICh3aW5kUnVsZSA9PSBXaW5k
UnVsZTo6RXZlbk9kZCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInBhdGgoZXZlbm9k
ZCwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoInBhdGgoZXZlbm9kZCwgIik7CiAgICAgZWxz
ZQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicGF0aCgiKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgicGF0aCgiKTsKIAogICAgIHNlcmlhbGl6ZVN0cmluZyhwYXRoLCByZXN1bHQpOwog
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKQEAgLTI0NCwxMyArMjQ0LDEzIEBAIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAgICAg
aWYgKHdpbmRSdWxlID09IFdpbmRSdWxlOjpFdmVuT2RkKQotICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbChldmVuT2RkT3BlbmluZyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZXZlbk9kZE9w
ZW5pbmcpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwobm9uWmVyb09w
ZW5pbmcpOworICAgICAgICByZXN1bHQuYXBwZW5kKG5vblplcm9PcGVuaW5nKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSArPSAyKSB7CiAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoY29tbWFTZXBhcmF0b3IpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjb21tYVNlcGFyYXRvcik7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocG9pbnRzW2ldLCAnICcsIHBvaW50c1tpICsgMV0pOwogICAgIH0KIApAQCAtMzIy
LDE0ICszMjIsMTQgQEAgc3RhdGljIFN0cmluZyBidWlsZEluc2V0U3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdG9wLCBjb25zdCBTdHJpbmcmIHJpZ2h0LCBjb25zdCBTdHIKICAgICAgICAgYXJlRGVmYXVs
dENvcm5lclJhZGlpICY9IGJ1aWxkSW5zZXRSYWRpaSh2ZXJ0aWNhbFJhZGlpLCB0b3BMZWZ0UmFk
aXVzSGVpZ2h0LCB0b3BSaWdodFJhZGl1c0hlaWdodCwgYm90dG9tUmlnaHRSYWRpdXNIZWlnaHQs
IGJvdHRvbUxlZnRSYWRpdXNIZWlnaHQpOwogCiAgICAgICAgIGlmICghYXJlRGVmYXVsdENvcm5l
clJhZGlpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHJvdW5kIik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgcm91bmQiKTsKIAogICAgICAgICAgICAgZm9yIChh
dXRvJiByYWRpdXMgOiBob3Jpem9udGFsUmFkaWkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcsIHJhZGl1cyk7CiAKICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbFJhZGlpLnNpemUo
KSAhPSBob3Jpem9udGFsUmFkaWkuc2l6ZSgpCiAgICAgICAgICAgICAgICAgfHwgIVdURjo6VmVj
dG9yQ29tcGFyZXI8ZmFsc2UsIFN0cmluZz46OmNvbXBhcmUodmVydGljYWxSYWRpaS5kYXRhKCks
IGhvcml6b250YWxSYWRpaS5kYXRhKCksIHZlcnRpY2FsUmFkaWkuc2l6ZSgpKSkgewotICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgLyIpOworICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIiAvIik7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiByYWRpdXMgOiB2
ZXJ0aWNhbFJhZGlpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgcmFk
aXVzKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cAppbmRleCA5YTU4MDExZjEzY2FhZTUyYTI0Y2Q5NmVhY2Y1ZjdkY2EwMjY1MzZjLi42ODY0OWE0
OWQxMDJhZDliYTQyZTg3ZTA1MTdhYWNjOWVjNGZmNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyYWRpZW50VmFsdWUuY3BwCkBAIC02OTYsOSArNjk2LDkgQEAgU3RyaW5nIENTU0xpbmVhckdy
YWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICBhcHBlbmRHcmFkaWVu
dFN0b3BzKHJlc3VsdCwgc3RvcHMoKSk7CiAgICAgfSBlbHNlIGlmIChncmFkaWVudFR5cGUoKSA9
PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KSB7CiAgICAgICAgIGlmIChpc1JlcGVhdGluZygp
KQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIi13ZWJraXQtcmVwZWF0aW5nLWxp
bmVhci1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtcmVw
ZWF0aW5nLWxpbmVhci1ncmFkaWVudCgiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCIpOworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIik7CiAKICAgICAgICAg
aWYgKG1fYW5nbGUpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fYW5nbGUtPmNzc1RleHQo
KSk7CkBAIC03MDYsMTQgKzcwNiwxNCBAQCBTdHJpbmcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBhcHBlbmRTcGFjZVNlcGFyYXRlZE9w
dGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7CiAKICAgICAgICAg
Zm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAg
ICAgd3JpdGVDb2xvclN0b3AocmVzdWx0LCBzdG9wKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmIChpc1JlcGVhdGluZygpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCIpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibGluZWFyLWdyYWRpZW50KCIpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgibGluZWFyLWdyYWRpZW50KCIpOwogCiAgICAgICAgIGJvb2wg
d3JvdGVTb21ldGhpbmcgPSBmYWxzZTsKIApAQCAtNzIxLDE0ICs3MjEsMTQgQEAgU3RyaW5nIENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgd3JvdGVTb21l
dGhpbmcgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGZpcnN0WCgpIHx8IChmaXJzdFkoKSAm
JiBmaXJzdFkoKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQm90dG9tKSkgewotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoInRvICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
dG8gIik7CiAgICAgICAgICAgICBhcHBlbmRTcGFjZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4
dChyZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7CiAgICAgICAgICAgICB3cm90ZVNvbWV0aGlu
ZyA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8mIHN0b3AgOiBzdG9wcygp
KSB7CiAgICAgICAgICAgICBpZiAod3JvdGVTb21ldGhpbmcpCi0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
LCAiKTsKICAgICAgICAgICAgIHdyb3RlU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIHdy
aXRlQ29sb3JTdG9wKHJlc3VsdCwgc3RvcCk7CiAgICAgICAgIH0KQEAgLTg5MSw0NCArODkxLDQ0
IEBAIFN0cmluZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QK
ICAgICAgICAgYXBwZW5kR3JhZGllbnRTdG9wcyhyZXN1bHQsIHN0b3BzKCkpOwogICAgIH0gZWxz
ZSBpZiAoZ3JhZGllbnRUeXBlKCkgPT0gQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCkgewogICAg
ICAgICBpZiAoaXNSZXBlYXRpbmcoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LXJhZGlhbC1n
cmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIi13ZWJraXQtcmFkaWFsLWdy
YWRpZW50KCIpOwogCiAgICAgICAgIGlmIChmaXJzdFgoKSB8fCBmaXJzdFkoKSkKICAgICAgICAg
ICAgIGFwcGVuZFNwYWNlU2VwYXJhdGVkT3B0aW9uYWxDU1NQdHJUZXh0KHJlc3VsdCwgZmlyc3RY
KCksIGZpcnN0WSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoImNlbnRlciIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiY2VudGVyIik7CiAK
ICAgICAgICAgaWYgKG1fc2hhcGUgfHwgbV9zaXppbmdCZWhhdmlvcikgewotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIs
ICIpOwogICAgICAgICAgICAgaWYgKG1fc2hhcGUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChtX3NoYXBlLT5jc3NUZXh0KCksICcgJyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImVsbGlwc2UgIik7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiZWxsaXBzZSAiKTsKICAgICAgICAgICAgIGlmIChtX3NpemluZ0Jl
aGF2aW9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9zaXppbmdCZWhhdmlvci0+
Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiY292ZXIiKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJjb3Zl
ciIpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZW5kSG9yaXpvbnRhbFNpemUgJiYgbV9lbmRWZXJ0
aWNhbFNpemUpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIsIG1fZW5kSG9yaXpvbnRh
bFNpemUtPmNzc1RleHQoKSwgJyAnLCBtX2VuZFZlcnRpY2FsU2l6ZS0+Y3NzVGV4dCgpKTsKIAog
ICAgICAgICBmb3IgKGF1dG8mIHN0b3AgOiBzdG9wcygpKSB7Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAg
ICAgICAgICAgICB3cml0ZUNvbG9yU3RvcChyZXN1bHQsIHN0b3ApOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKGlzUmVwZWF0aW5nKCkpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgiKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoInJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJyYWRpYWwtZ3JhZGllbnQoIik7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJyYWRpYWwtZ3JhZGllbnQoIik7CiAKICAgICAg
ICAgYm9vbCB3cm90ZVNvbWV0aGluZyA9IGZhbHNlOwogCiAgICAgICAgIC8vIFRoZSBvbmx5IGFt
YmlndW91cyBjYXNlIHRoYXQgbmVlZHMgYW4gZXhwbGljaXQgc2hhcGUgdG8gYmUgcHJvdmlkZWQK
ICAgICAgICAgLy8gaXMgd2hlbiBhIHNpemluZyBrZXl3b3JkIGlzIHVzZWQgKG9yIGFsbCBzaXpp
bmcgaXMgb21pdHRlZCkuCiAgICAgICAgIGlmIChtX3NoYXBlICYmIG1fc2hhcGUtPnZhbHVlSUQo
KSAhPSBDU1NWYWx1ZUVsbGlwc2UgJiYgKG1fc2l6aW5nQmVoYXZpb3IgfHwgKCFtX3NpemluZ0Jl
aGF2aW9yICYmICFtX2VuZEhvcml6b250YWxTaXplKSkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJjaXJjbGUiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImNpcmNs
ZSIpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9CiAKQEAg
LTk0OSwxOCArOTQ5LDE4IEBAIFN0cmluZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21D
U1NUZXh0KCkgY29uc3QKICAgICAgICAgaWYgKChmaXJzdFgoKSAmJiAhZmlyc3RYKCktPmlzQ2Vu
dGVyUG9zaXRpb24oKSkgfHwgKGZpcnN0WSgpICYmICFmaXJzdFkoKS0+aXNDZW50ZXJQb3NpdGlv
bigpKSkgewogICAgICAgICAgICAgaWYgKHdyb3RlU29tZXRoaW5nKQogICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJh
dCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImF0ICIpOwogICAgICAgICAgICAgYXBw
ZW5kU3BhY2VTZXBhcmF0ZWRPcHRpb25hbENTU1B0clRleHQocmVzdWx0LCBmaXJzdFgoKSwgZmly
c3RZKCkpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHdyb3RlU29tZXRoaW5nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogCiAgICAgICAg
IGJvb2wgd3JvdGVGaXJzdFN0b3AgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBzdG9wIDog
c3RvcHMoKSkgewogICAgICAgICAgICAgaWYgKHdyb3RlRmlyc3RTdG9wKQotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIiwgIik7CiAgICAgICAgICAgICB3cm90ZUZpcnN0U3RvcCA9IHRydWU7CiAgICAgICAg
ICAgICB3cml0ZUNvbG9yU3RvcChyZXN1bHQsIHN0b3ApOwogICAgICAgICB9CkBAIC0xMjE5LDEw
ICsxMjE5LDcgQEAgU3RyaW5nIENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAKLSAgICBpZiAoaXNSZXBlYXRp
bmcoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1jb25pYy1ncmFk
aWVudCgiKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb25pYy1n
cmFkaWVudCgiKTsKKyAgICByZXN1bHQuYXBwZW5kKGlzUmVwZWF0aW5nKCkgPyAicmVwZWF0aW5n
LWNvbmljLWdyYWRpZW50KCIgOiAiY29uaWMtZ3JhZGllbnQoIik7CiAKICAgICBib29sIHdyb3Rl
U29tZXRoaW5nID0gZmFsc2U7CiAKQEAgLTEyMzQsMTggKzEyMzEsMTggQEAgU3RyaW5nIENTU0Nv
bmljR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgaWYgKChmaXJzdFgo
KSAmJiAhZmlyc3RYKCktPmlzQ2VudGVyUG9zaXRpb24oKSkgfHwgKGZpcnN0WSgpICYmICFmaXJz
dFkoKS0+aXNDZW50ZXJQb3NpdGlvbigpKSkgewogICAgICAgICBpZiAod3JvdGVTb21ldGhpbmcp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCJhdCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiYXQgIik7CiAgICAgICAgIGFw
cGVuZFNwYWNlU2VwYXJhdGVkT3B0aW9uYWxDU1NQdHJUZXh0KHJlc3VsdCwgZmlyc3RYKCksIGZp
cnN0WSgpKTsKICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgIH0KIAogICAgIGlm
ICh3cm90ZVNvbWV0aGluZykKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAKICAgICBib29sIHdyb3RlRmlyc3RTdG9wID0g
ZmFsc2U7CiAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewogICAgICAgICBpZiAod3Jv
dGVGaXJzdFN0b3ApCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgIHdyb3RlRmlyc3RTdG9wID0g
dHJ1ZTsKICAgICAgICAgd3JpdGVDb2xvclN0b3AocmVzdWx0LCBzdG9wKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5jcHAKaW5kZXgg
ZmU1ODNjYTE3MTkwNmJkZjY4OGYxOTQyMGNmNjFiOTNjMmZlN2NjNy4uMGFiOTE0M2U3NGE3NGVk
ZTRhZWY0OWFiMjQwNThkZTY2ZGQ2N2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcApAQCAtMzEsMTkgKzMxLDExIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZS5oIgogCi0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFN0cmluZyBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29u
c3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKCJyZXBl
YXQoIik7Ci0gICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihyZXBldGl0aW9ucygpKSk7
Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKLSAgICByZXN1bHQuYXBwZW5kKENTU1ZhbHVlTGlz
dDo6Y3VzdG9tQ1NTVGV4dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZXBlYXQoIiwgcmVw
ZXRpdGlvbnMoKSwgIiwgIiwgQ1NTVmFsdWVMaXN0OjpjdXN0b21DU1NUZXh0KCksICcpJyk7CiB9
CiAKIGJvb2wgQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0dyaWRJ
bnRlZ2VyUmVwZWF0VmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
U2V0VmFsdWUuY3BwCmluZGV4IDJmN2IyYjU5ZDljNDQ4OWMyMzVkNGM2NWZhNGFiZDM2Zjk0YTM0
ZjIuLmE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2MTUyZTNiNTQ3ZWFkN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTEyOCwxNiArMTI4LDEzIEBAIFJlZjxD
U1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjppbWFnZVNldFdpdGhTdHlsZXNSZXNv
bHZlZChTdHlsZTo6QnVpbGRlCiBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoImltYWdlLXNldCgiKTsKLQorICAgIHJlc3VsdC5hcHBlbmQoImltYWdlLXNldCgi
KTsKICAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgKyAxIDwgbGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgaWYgKGkgPiAwKQotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0KKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIiwgIik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbShpKS0+Y3NzVGV4dCgp
LCAnICcsIGl0ZW0oaSArIDEpLT5jc3NUZXh0KCkpOwogICAgIH0KLQogICAgIHJlc3VsdC5hcHBl
bmQoJyknKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1wb3J0UnVsZS5jcHAKaW5kZXggNGM2NjYxM2NjMzU5MjQxNjMwNmY1MmJmNjhhNjM0NTlh
YTMwNTNhMy4uNmE0ODRmYWE1MmYxNGRjYjAyOWRhZmI0ZTUyNjZiZTlhOTViOTc2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNTgsMjggKzU4LDE3IEBAIE1lZGlhTGlz
dCYgQ1NTSW1wb3J0UnVsZTo6bWVkaWEoKSBjb25zdAogCiBTdHJpbmcgQ1NTSW1wb3J0UnVsZTo6
Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIkBpbXBvcnQgdXJsKFwiIik7Ci0gICAgcmVzdWx0LmFwcGVuZChtX2lt
cG9ydFJ1bGUuZ2V0KCkuaHJlZigpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXCIpIik7
Ci0KLSAgICBpZiAobV9pbXBvcnRSdWxlLmdldCgpLm1lZGlhUXVlcmllcygpKSB7Ci0gICAgICAg
IFN0cmluZyBtZWRpYVRleHQgPSBtX2ltcG9ydFJ1bGUuZ2V0KCkubWVkaWFRdWVyaWVzKCktPm1l
ZGlhVGV4dCgpOwotICAgICAgICBpZiAoIW1lZGlhVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobWVkaWFU
ZXh0KTsKLSAgICAgICAgfQorICAgIGlmIChhdXRvIHF1ZXJpZXMgPSBtX2ltcG9ydFJ1bGUuZ2V0
KCkubWVkaWFRdWVyaWVzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWVkaWFUZXh0ID0gcXVlcmll
cy0+bWVkaWFUZXh0KCk7ICFtZWRpYVRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIkBpbXBvcnQgdXJsKFwiIiwgbV9pbXBvcnRSdWxlLmdldCgpLmhyZWYoKSwg
IlwiKSAiLCBtZWRpYVRleHQsICc7Jyk7CiAgICAgfQotICAgIHJlc3VsdC5hcHBlbmQoJzsnKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIkBpbXBvcnQgdXJsKFwiIiwgbV9pbXBvcnRSdWxlLmdldCgpLmhyZWYoKSwgIlwiKTsiKTsK
IH0KIAogQ1NTU3R5bGVTaGVldCogQ1NTSW1wb3J0UnVsZTo6c3R5bGVTaGVldCgpIGNvbnN0CiB7
IAogICAgIGlmICghbV9pbXBvcnRSdWxlLmdldCgpLnN0eWxlU2hlZXQoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3N0eWxlU2hlZXRD
U1NPTVdyYXBwZXIpCiAgICAgICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlciA9IENTU1N0eWxl
U2hlZXQ6OmNyZWF0ZSgqbV9pbXBvcnRSdWxlLmdldCgpLnN0eWxlU2hlZXQoKSwgY29uc3RfY2Fz
dDxDU1NJbXBvcnRSdWxlKj4odGhpcykpOwogICAgIHJldHVybiBtX3N0eWxlU2hlZXRDU1NPTVdy
YXBwZXIuZ2V0KCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAppbmRleCBj
M2M3M2JkNDY5ZmRmODc4Njc1OTUzOWY5OTI2MzczYTY3MTBkMGNmLi41ODYwMWE4ZTJiYmE0YzRk
YTU0M2JiYzcxODhlYTViYjQ3ZWQ2ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTS2V5ZnJhbWVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVS
dWxlLmNwcApAQCAtODksMTkgKzg5LDEzIEBAIGJvb2wgU3R5bGVSdWxlS2V5ZnJhbWU6OnNldEtl
eVRleHQoY29uc3QgU3RyaW5nJiBrZXlUZXh0KQogCiBTdHJpbmcgU3R5bGVSdWxlS2V5ZnJhbWU6
OmNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3Vs
dC5hcHBlbmQoa2V5VGV4dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0g
ICAgU3RyaW5nIGRlY2xzID0gbV9wcm9wZXJ0aWVzLT5hc1RleHQoKTsKLSAgICByZXN1bHQuYXBw
ZW5kKGRlY2xzKTsKLSAgICBpZiAoIWRlY2xzLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcpOwotICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICByZXR1cm4gcmVzdWx0LnRv
U3RyaW5nKCk7CisgICAgaWYgKGF1dG8gZGVjbGFyYXRpb25zID0gbV9wcm9wZXJ0aWVzLT5hc1Rl
eHQoKTsgIWRlY2xhcmF0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KGtleVRleHQoKSwgIiB7ICIsIGRlY2xhcmF0aW9ucywgIiB9Iik7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoa2V5VGV4dCgpLCAiIHsgfSIpOwogfQogCiBDU1NLZXlmcmFtZVJ1bGU6OkNTU0tleWZy
YW1lUnVsZShTdHlsZVJ1bGVLZXlmcmFtZSYga2V5ZnJhbWUsIENTU0tleWZyYW1lc1J1bGUqIHBh
cmVudCkKLSAgICA6IENTU1J1bGUoMCkKKyAgICA6IENTU1J1bGUobnVsbHB0cikKICAgICAsIG1f
a2V5ZnJhbWUoa2V5ZnJhbWUpCiB7CiAgICAgc2V0UGFyZW50UnVsZShwYXJlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDk4MjgxN2FmZDU1ODQ0ZDU4YTdm
MzgwZDE5NzlkMjdjZGYzOGZiN2EuLjQ0NTQxNmE4ZmRjZjBkNTU2M2VhODNkMWU0ZGY2M2I1OWQw
NDY4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTE5OCwx
NiArMTk4LDkgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjpmaW5kUnVsZShj
b25zdCBTdHJpbmcmIHMpCiBTdHJpbmcgQ1NTS2V5ZnJhbWVzUnVsZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IkAtd2Via2l0LWtleWZyYW1lcyAiKTsKLSAgICByZXN1bHQuYXBwZW5kKG5hbWUoKSk7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7Ci0KLSAgICB1bnNpZ25lZCBzaXplID0gbGVu
Z3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiICAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX2tl
eWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2ldLT5jc3NUZXh0KCkpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbicpOwotICAgIH0KKyAgICByZXN1bHQuYXBwZW5kKCJALXdlYmtpdC1rZXlmcmFt
ZXMgIiwgbmFtZSgpLCAiIHsgXG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0g
bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgIiwgbV9r
ZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpXS0+Y3NzVGV4dCgpLCAnXG4nKTsKICAgICByZXN1
bHQuYXBwZW5kKCd9Jyk7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwCmluZGV4IDcxNDVkNjNj
YzNlYTY5NWY2YjFjMjA2OWMyNjAzYjdmMTc0NTlhNDQuLjI5N2U2N2NiMzRhMDcyMGViYWNiMWU1
ZmJiZTRhYjRmYWQ4YmQ0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5jcHAKQEAgLTM5LDQxICszOSwyMCBAQCBDU1NMaW5lQm94Q29udGFpblZhbHVl
OjpDU1NMaW5lQm94Q29udGFpblZhbHVlKE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gdmFsdWUp
CiBTdHJpbmcgQ1NTTGluZUJveENvbnRhaW5WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7
CiAgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwotCiAgICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGlu
ZUJveENvbnRhaW46OkJsb2NrKSkKLSAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJibG9jayIp
OwotCi0gICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZSkpIHsK
LSAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiaW5saW5lIik7Ci0gICAgfQotICAgIGlm
IChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpGb250KSkgewotICAgICAgICBpZiAo
IXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
dGV4dC5hcHBlbmRMaXRlcmFsKCJmb250Iik7Ci0gICAgfQotICAgIGlmIChtX3ZhbHVlLmNvbnRh
aW5zKExpbmVCb3hDb250YWluOjpHbHlwaHMpKSB7Ci0gICAgICAgIGlmICghdGV4dC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExp
dGVyYWwoImdseXBocyIpOwotICAgIH0KLSAgICBpZiAobV92YWx1ZS5jb250YWlucyhMaW5lQm94
Q29udGFpbjo6UmVwbGFjZWQpKSB7Ci0gICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoInJl
cGxhY2VkIik7Ci0gICAgfQotICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWlu
OjpJbmxpbmVCb3gpKSB7Ci0gICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoImlubGluZS1i
b3giKTsKLSAgICB9Ci0gICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46Oklu
aXRpYWxMZXR0ZXIpKSB7Ci0gICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoImluaXRpYWwt
bGV0dGVyIik7Ci0gICAgfQotCisgICAgICAgIHRleHQuYXBwZW5kKCJibG9jayIpOworICAgIGlm
IChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJbmxpbmUpKQorICAgICAgICB0ZXh0
LmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiaW5saW5lIik7CisgICAgaWYgKG1f
dmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OkZvbnQpKQorICAgICAgICB0ZXh0LmFwcGVu
ZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiZm9udCIpOworICAgIGlmIChtX3ZhbHVlLmNv
bnRhaW5zKExpbmVCb3hDb250YWluOjpHbHlwaHMpKQorICAgICAgICB0ZXh0LmFwcGVuZCh0ZXh0
LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiZ2x5cGhzIik7CisgICAgaWYgKG1fdmFsdWUuY29udGFp
bnMoTGluZUJveENvbnRhaW46OlJlcGxhY2VkKSkKKyAgICAgICAgdGV4dC5hcHBlbmQodGV4dC5p
c0VtcHR5KCkgPyAiIiA6ICIgIiwgInJlcGxhY2VkIik7CisgICAgaWYgKG1fdmFsdWUuY29udGFp
bnMoTGluZUJveENvbnRhaW46OklubGluZUJveCkpCisgICAgICAgIHRleHQuYXBwZW5kKHRleHQu
aXNFbXB0eSgpID8gIiIgOiAiICIsICJpbmxpbmUtYm94Iik7CisgICAgaWYgKG1fdmFsdWUuY29u
dGFpbnMoTGluZUJveENvbnRhaW46OkluaXRpYWxMZXR0ZXIpKQorICAgICAgICB0ZXh0LmFwcGVu
ZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiaW5pdGlhbC1sZXR0ZXIiKTsKICAgICByZXR1
cm4gdGV4dC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTmFtZXNwYWNlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVs
ZS5jcHAKaW5kZXggNzgzYzJlOGMxZjRmMDEyMTZmOGE4NTlhY2MyNzNiOTg0MzkzYThhNi4uMmI5
NjgxNmUxZGE2NGNmOTZjNzQwZGY2OTkwNDdmMGY5NTM3M2M2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NOYW1lc3BhY2VSdWxlLmNwcApAQCAtNTIsMTIgKzUyLDExIEBAIEF0b21TdHJpbmcgQ1NT
TmFtZXNwYWNlUnVsZTo6cHJlZml4KCkgY29uc3QKIAogU3RyaW5nIENTU05hbWVzcGFjZVJ1bGU6
OmNzc1RleHQoKSBjb25zdAogeworICAgIGF1dG8gcHJlZml4ID0gdGhpcy0+cHJlZml4KCk7CiAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkBuYW1l
c3BhY2UgIik7Ci0gICAgc2VyaWFsaXplSWRlbnRpZmllcihwcmVmaXgoKSwgcmVzdWx0KTsKLSAg
ICBpZiAoIXByZWZpeCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwot
ICAgIHJlc3VsdC5hcHBlbmQoInVybCgiLCBzZXJpYWxpemVTdHJpbmcobmFtZXNwYWNlVVJJKCkp
LCAiKTsiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJAbmFtZXNwYWNlICIpOworICAgIHNlcmlhbGl6
ZUlkZW50aWZpZXIocHJlZml4LCByZXN1bHQpOworICAgIHJlc3VsdC5hcHBlbmQocHJlZml4Lmlz
RW1wdHkoKSA/ICIiIDogIiAiLCAidXJsKCIsIHNlcmlhbGl6ZVN0cmluZyhuYW1lc3BhY2VVUkko
KSksICIpOyIpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWdlUnVsZS5jcHAKaW5kZXggNmE2MTdjMjEyNWFiZGE3YzQxM2M1MWIzZDhmYmQ4MDNl
MDY3MTZmZS4uZDFmNmQwYTUxNWE1ZGI5ZGI3NTBjYmYxZTJmNzlkNGE5ZjBmMmY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVz
LmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc2LDE1ICs3NSw5IEBAIHZvaWQg
Q1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkK
IAogU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKHNlbGVjdG9yVGV4dCgpKTsKLSAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0gICAgU3RyaW5nIGRlY2xzID0gbV9wYWdlUnVsZS0+
cHJvcGVydGllcygpLmFzVGV4dCgpOwotICAgIHJlc3VsdC5hcHBlbmQoZGVjbHMpOwotICAgIGlm
ICghZGVjbHMuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgcmVz
dWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICBpZiAo
YXV0byBkZWNsYXJhdGlvbnMgPSBtX3BhZ2VSdWxlLT5wcm9wZXJ0aWVzKCkuYXNUZXh0KCk7ICFk
ZWNsYXJhdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhzZWxlY3Rv
clRleHQoKSwgIiB7ICIsIGRlY2xhcmF0aW9ucywgIiB9Iik7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoc2VsZWN0b3JUZXh0KCksICIgeyB9Iik7CiB9CiAKIHZvaWQgQ1NTUGFnZVJ1bGU6OnJlYXR0
YWNoKFN0eWxlUnVsZUJhc2UmIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdl
VmFsdWUuY3BwCmluZGV4IGNlMTVlYWNjYWRkMzJiZDAxOGIxNDUzYzMwNTMxNGM5MDcyOWFmN2Iu
LjJhYjFiMmFmZjc4MjZkN2U5YTRhM2M3N2M4ZDhmMjQyY2UzNzJlZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCkBAIC0zOSwxMiArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NQYWludEltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCJwYWludCgiKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fbmFtZSk7Ci0gICAgLy8gRklY
TUU6IHByaW50IGFyZ3MuCi0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXJn
dW1lbnRzIHRvby4KKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFpbnQoIiwgbV9uYW1lLCAnKScp
OwogfQogCiBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYXRTaXplJiBzaXplKQpAQCAtNzEsOCArNjcs
NyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgICAgICAgICAgICAgIGxvY2FsUmFuZ2Uu
Y29uc3VtZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobG9jYWxSYW5nZS5wZWVrKCkuZ2V0Qmxv
Y2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQpIHsKICAgICAgICAgICAgICAg
ICBsb2NhbFJhbmdlLnBlZWsoKS5zZXJpYWxpemUoYnVpbGRlcik7Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQobG9jYWxSYW5nZS5jb25zdW1lQmxvY2soKS5zZXJpYWxpemUoKSk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChsb2NhbFJhbmdlLmNvbnN1bWVCbG9jaygpLnNlcmlhbGl6ZSgpLCAnKScpOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbG9jYWxSYW5nZS5jb25zdW1lKCku
c2VyaWFsaXplKGJ1aWxkZXIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAppbmRleCAxZjZiNDRkNWI4YWMxNjBmYjQ2NzhkZWU5MmYwMWI4ZjYwOTg2
Yjg0Li5mMGRiNGNhNWIxNTNjMTk1MmU5YWNiYTQ0MzRmZTE4NGVkODlkODk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEwOTcsMjIgKzEwOTcsMTIgQEAg
QUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1
c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gImNvdW50ZXIoIiArIFN0cmluZyht
X3ZhbHVlLnN0cmluZykgKyAnKSc7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVI6
IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgICAgIFN0cmluZyBzZXBhcmF0
b3IgPSBtX3ZhbHVlLmNvdW50ZXItPnNlcGFyYXRvcigpOwotICAgICAgICBpZiAoc2VwYXJhdG9y
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb3VudGVyKCIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY291bnRl
cnMoIik7Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLmNvdW50ZXItPmlkZW50aWZp
ZXIoKSk7Ci0gICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGF1dG8gc2VwYXJhdG9yID0gbV92
YWx1ZS5jb3VudGVyLT5zZXBhcmF0b3IoKTsKKyAgICAgICAgYXV0byBsaXN0U3R5bGUgPSBtX3Zh
bHVlLmNvdW50ZXItPmxpc3RTdHlsZSgpOworICAgICAgICByZXN1bHQuYXBwZW5kKHNlcGFyYXRv
ci5pc0VtcHR5KCkgPyAiY291bnRlcigiIDogImNvdW50ZXJzKCIsIG1fdmFsdWUuY291bnRlci0+
aWRlbnRpZmllcigpLCBzZXBhcmF0b3IuaXNFbXB0eSgpID8gIiIgOiAiLCAiKTsKKyAgICAgICAg
aWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKQogICAgICAgICAgICAgc2VyaWFsaXplU3RyaW5nKHNl
cGFyYXRvciwgcmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmcgbGlzdFN0eWxlID0g
bV92YWx1ZS5jb3VudGVyLT5saXN0U3R5bGUoKTsKLSAgICAgICAgaWYgKCFsaXN0U3R5bGUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiLCBsaXN0U3R5bGUpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KKyAgICAgICAgcmVzdWx0LmFwcGVuZChsaXN0U3R5
bGUuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCBsaXN0U3R5bGUsICcpJyk7CiAgICAgICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JF
Q1Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBlYzVmYjExMDA2NWVkNzZkZTg3
MTg0ZDBmZTlkMjIzZWFiOTEyMmVmLi4wZTcwOTEyOWUxNjE0NGY1YjNlZTFjOGFiMmQ0YjljNzlh
ZWViY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTMzNSwxNCArMzM1LDgg
QEAgc3RhdGljIHZvaWQgYXBwZW5kUHNldWRvQ2xhc3NGdW5jdGlvblRhaWwoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgY29uc3QgQ1NTU2VsZWMKIAogc3RhdGljIHZvaWQgYXBwZW5kTGFuZ0FyZ3Vt
ZW50TGlzdChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4m
IGFyZ3VtZW50TGlzdCkKIHsKLSAgICB1bnNpZ25lZCBhcmd1bWVudExpc3RTaXplID0gYXJndW1l
bnRMaXN0LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRMaXN0
U2l6ZTsgKytpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGFyZ3VtZW50TGlzdFtpXSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7
Ci0gICAgICAgIGlmIChpICE9IGFyZ3VtZW50TGlzdFNpemUgLSAxKQotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBzaXplID0gYXJndW1lbnRMaXN0LnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyInLCBhcmd1bWVudExpc3RbaV0sICciJywgaSAhPSBzaXplIC0gMSA/ICIs
ICIgOiAiIik7CiB9CiAKIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI3Nl
cmlhbGl6aW5nLWFuYgpAQCAtMzg4LDExICszODIsOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNl
bGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICBpZiAobWF0Y2go
KSA9PSBDU1NTZWxlY3Rvcjo6VGFnICYmICFtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSkgewogICAg
ICAgICBpZiAodGFnUU5hbWUoKS5wcmVmaXgoKS5pc051bGwoKSkKICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkucHJlZml4KCkuc3RyaW5nKCkpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3wnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkpOwotICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkucHJlZml4KCkuc3RyaW5nKCksICd8Jywg
dGFnUU5hbWUoKS5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IGNzID0gdGhpczsKQEAgLTQwNywyNjggKzM5OCwyNjggQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpz
ZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICBz
d2l0Y2ggKGNzLT5wc2V1ZG9DbGFzc1R5cGUoKSkgewogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQW5pbWF0aW5nRnVs
bFNjcmVlblRyYW5zaXRpb246Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6LXdlYmtpdC1hbmltYXRpbmctZnVsbC1zY3JlZW4tdHJhbnNpdGlvbiIpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hbmltYXRpbmctZnVsbC1zY3JlZW4tdHJh
bnNpdGlvbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueTogewotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtYW55KCIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6LXdlYmtpdC1hbnkoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9y
TGlzdCgpLT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQW55TGluazoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjphbnktbGluayIpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6YW55LWxpbmsiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQW55TGlua0RlcHJl
Y2F0ZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1h
bnktbGluayIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hbnkt
bGluayIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIjotd2Via2l0LWF1dG9maWxsIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIjotd2Via2l0LWF1dG9maWxsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0F1dG9maWxsU3Ryb25nUGFzc3dv
cmQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1hdXRv
ZmlsbC1zdHJvbmctcGFzc3dvcmQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
Oi13ZWJraXQtYXV0b2ZpbGwtc3Ryb25nLXBhc3N3b3JkIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0F1dG9maWxsU3Ry
b25nUGFzc3dvcmRWaWV3YWJsZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjotd2Via2l0LWF1dG9maWxsLXN0cm9uZy1wYXNzd29yZC12aWV3YWJsZSIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hdXRvZmlsbC1zdHJvbmctcGFzc3dv
cmQtdmlld2FibGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyZWN0Rm9jdXM6Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1kaXJlY3QtZm9jdXMiKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZGlyZWN0LWZvY3VzIik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Ry
YWc6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1kcmFn
Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWRyYWciKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzRnVsbFBhZ2VNZWRpYToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW46Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxsLXNjcmVlbiIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6LXdlYmtpdC1mdWxsLXNjcmVlbiIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdWxsU2NyZWVuQW5j
ZXN0b3I6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1m
dWxsLXNjcmVlbi1hbmNlc3RvciIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
LXdlYmtpdC1mdWxsLXNjcmVlbi1hbmNlc3RvciIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdWxsU2NyZWVuRG9jdW1l
bnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxs
LXNjcmVlbi1kb2N1bWVudCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdl
YmtpdC1mdWxsLXNjcmVlbi1kb2N1bWVudCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdWxsU2NyZWVuQ29udHJvbHNI
aWRkZW46Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1m
dWxsLXNjcmVlbi1jb250cm9scy1oaWRkZW4iKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOi13ZWJraXQtZnVsbC1zY3JlZW4tY29udHJvbHMtaGlkZGVuIik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUGljdHVyZUluUGljdHVy
ZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpwaWN0dXJlLWluLXBp
Y3R1cmUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnBpY3R1cmUtaW4tcGlj
dHVyZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZToKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjphY3RpdmUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOmFjdGl2ZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOmNoZWNrZWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOmNoZWNrZWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQ29ybmVyUHJlc2VudDoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjpjb3JuZXItcHJlc2VudCIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6Y29ybmVyLXByZXNlbnQiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGVjcmVtZW50Ogot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmRlY3JlbWVudCIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGVjcmVtZW50Iik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZGVmYXVsdCIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGVmYXVsdCIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyOgotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOmRpcigiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOmRpcigiKTsKICAgICAgICAgICAgICAgICBhcHBlbmRQc2V1ZG9DbGFzc0Z1bmN0aW9uVGFp
bChidWlsZGVyLCBjcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlzYWJsZWQ6Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOmRpc2FibGVkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RvdWJsZUJ1dHRvbjoKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpkb3VibGUtYnV0dG9uIik7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpkb3VibGUtYnV0dG9uIik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Vt
cHR5OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmVtcHR5Iik7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjplbXB0eSIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVk
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmVuYWJsZWQiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmVuYWJsZWQiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5kOgot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmVuZCIpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZW5kIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZpcnN0Q2hpbGQ6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Zmlyc3QtY2hpbGQiKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZpcnN0LWNoaWxkIik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZpcnN0
T2ZUeXBlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZpcnN0LW9m
LXR5cGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZpcnN0LW9mLXR5cGUi
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRm9jdXM6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6Zm9jdXMiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZvY3VzIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0ZvY3VzVmlzaWJsZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjpmb2N1cy12aXNpYmxlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpm
b2N1cy12aXNpYmxlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzV2l0aGluOgotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZvY3VzLXdpdGhpbiIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCI6Zm9jdXMtd2l0aGluIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAj
aWYgRU5BQkxFKFZJREVPKQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NGdXR1cmU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZnV0dXJl
Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpmdXR1cmUiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hhc0F0dGFjaG1lbnQ6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6aGFzLWF0dGFjaG1lbnQiKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmhhcy1hdHRhY2htZW50Iik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzSG9yaXpvbnRhbDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjpob3Jpem9udGFsIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpo
b3Jpem9udGFsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOmhvdmVyIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpo
b3ZlciIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NJblJhbmdlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmluLXJhbmdlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpp
bi1yYW5nZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbmNyZW1lbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6aW5jcmVtZW50Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjppbmNyZW1lbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW5kZXRlcm1pbmF0ZToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjppbmRldGVybWluYXRlIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjppbmRldGVybWluYXRlIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQ6Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6aW52YWxpZCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aW52YWxpZCIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nOgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxhbmcoIik7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjpsYW5nKCIpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoY3MtPmFyZ3VtZW50TGlzdCgpICYmICFjcy0+YXJndW1lbnRMaXN0KCktPmlz
RW1wdHkoKSwgIkFuIGVtcHR5IDpsYW5nKCkgaXMgaW52YWxpZCBhbmQgc2hvdWxkIG5ldmVyIGJl
IGdlbmVyYXRlZCBieSB0aGUgcGFyc2VyLiIpOwogICAgICAgICAgICAgICAgIGFwcGVuZExhbmdB
cmd1bWVudExpc3QoYnVpbGRlciwgKmNzLT5hcmd1bWVudExpc3QoKSk7CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFzdENoaWxkOgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxhc3QtY2hpbGQiKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOmxhc3QtY2hpbGQiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFzdE9mVHlwZToKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpsYXN0LW9mLXR5cGUiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxhc3Qtb2YtdHlwZSIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NM
aW5rOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxpbmsiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxpbmsiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTm9CdXR0b246
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6bm8tYnV0dG9uIik7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpuby1idXR0b24iKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTm90
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm5vdCgiKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm5vdCgiKTsKICAgICAgICAgICAgICAgICBjcy0+
c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOdGhDaGlsZDoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtY2hpbGQoIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpudGgtY2hpbGQoIik7CiAgICAgICAgICAgICAgICAgb3V0cHV0
TnRoQ2hpbGRBblBsdXNCKCpjcywgYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0
IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gY3MtPnNlbGVjdG9yTGlzdCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIG9mICIpOwogICAgICAgICAgICAgICAgICAg
ICBzZWxlY3Rvckxpc3QtPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTnRo
TGFzdENoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm50aC1s
YXN0LWNoaWxkKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bnRoLWxhc3Qt
Y2hpbGQoIik7CiAgICAgICAgICAgICAgICAgb3V0cHV0TnRoQ2hpbGRBblBsdXNCKCpjcywgYnVp
bGRlcik7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0
b3JMaXN0ID0gY3MtPnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiIG9mICIpOwogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvckxpc3QtPmJ1aWxkU2Vs
ZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTnRoTGFzdE9mVHlwZToKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtbGFzdC1vZi10eXBlKCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bnRoLWxhc3Qtb2YtdHlwZSgiKTsKICAgICAgICAg
ICAgICAgICBhcHBlbmRQc2V1ZG9DbGFzc0Z1bmN0aW9uVGFpbChidWlsZGVyLCBjcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc050aE9mVHlwZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpu
dGgtb2YtdHlwZSgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm50aC1vZi10
eXBlKCIpOwogICAgICAgICAgICAgICAgIGFwcGVuZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKGJ1
aWxkZXIsIGNzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzT25seUNoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOm9ubHktY2hpbGQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOm9ubHktY2hpbGQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT25seU9mVHlwZToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpvbmx5LW9mLXR5cGUiKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOm9ubHktb2YtdHlwZSIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NPcHRpb25hbDoKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpvcHRpb25hbCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6b3B0aW9uYWwiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSXM6IHsKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjppcygiKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOmlzKCIpOwogICAgICAgICAgICAgICAgIGNzLT5zZWxlY3Rv
ckxpc3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc01hdGNoZXM6IHsKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjptYXRjaGVzKCIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bWF0Y2hlcygiKTsKICAgICAgICAgICAgICAgICBj
cy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NXaGVy
ZTogewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOndoZXJlKCIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6d2hlcmUoIik7CiAgICAgICAgICAgICAg
ICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
UGxhY2Vob2xkZXJTaG93bjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpwbGFjZWhvbGRlci1zaG93biIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
cGxhY2Vob2xkZXItc2hvd24iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT3V0T2ZSYW5nZToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpvdXQtb2YtcmFuZ2UiKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOm91dC1vZi1yYW5nZSIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzUGFzdDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpwYXN0
Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpwYXN0Iik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzUmVhZE9ubHk6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
cmVhZC1vbmx5Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpyZWFkLW9ubHki
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzUmVhZFdyaXRlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOnJlYWQtd3JpdGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnJl
YWQtd3JpdGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6cmVxdWlyZWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOnJlcXVpcmVkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19T
RUxFQ1RPUlNfTEVWRUw0KQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NSb2xlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnJvbGUoIik7
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpyb2xlKCIpOwogICAgICAgICAgICAg
ICAgIGFwcGVuZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKGJ1aWxkZXIsIGNzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NSb290OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnJv
b3QiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnJvb3QiKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
U2NvcGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6c2NvcGUiKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnNjb3BlIik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Npbmds
ZUJ1dHRvbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpzaW5nbGUt
YnV0dG9uIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpzaW5nbGUtYnV0dG9u
Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1N0YXJ0OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOnN0YXJ0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpzdGFydCIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUYXJnZXQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
dGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjp0YXJnZXQiKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVmFsaWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6dmFs
aWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnZhbGlkIik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1ZlcnRpY2FsOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnZlcnRp
Y2FsIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjp2ZXJ0aWNhbCIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NWaXNpdGVkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnZp
c2l0ZWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnZpc2l0ZWQiKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzV2luZG93SW5hY3RpdmU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6d2luZG93LWluYWN0aXZlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ijp3aW5kb3ctaW5hY3RpdmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdDoKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIjpob3N0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjpob3N0Iik7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHNlbGVjdG9yTGlzdCA9IGNz
LT5zZWxlY3Rvckxpc3QoKSkgewogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
KCcpOwogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvckxpc3QtPmJ1aWxkU2VsZWN0b3JzVGV4
dChidWlsZGVyKTsKQEAgLTY3Niw3ICs2NjcsNyBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVj
dG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0RlZmluZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6ZGVmaW5lZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGVmaW5lZCIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NVbmtub3duOgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjg0LDEyICs2NzUsMTIgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQo
Y29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1h
dGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIHN3aXRj
aCAoY3MtPnBzZXVkb0VsZW1lbnRUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOjpzbG90dGVkKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
OnNsb3R0ZWQoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5idWlsZFNl
bGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0VsZW1lbnRQYXJ0OiB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6OnBhcnQoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjo6cGFydCgi
KTsKICAgICAgICAgICAgICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgcGFydE5hbWUgOiAqY3MtPmFyZ3VtZW50TGlzdCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaXNGaXJzdCkKQEAgLTcwMiwzMiArNjkzLDI4IEBAIFN0cmluZyBDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFdl
YktpdEN1c3RvbUxlZ2FjeVByZWZpeGVkOgogICAgICAgICAgICAgICAgIGlmIChjcy0+dmFsdWUo
KSA9PSAicGxhY2Vob2xkZXIiKQotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOworICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7CiAgICAgICAg
ICAgICAgICAgaWYgKGNzLT52YWx1ZSgpID09ICJmaWxlLXNlbGVjdG9yLWJ1dHRvbiIpCi0gICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjotd2Via2l0LWZpbGUtdXBs
b2FkLWJ1dHRvbiIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjotd2Vi
a2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShWSURFTykKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRD
dWU6IHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogc2VsZWN0b3JMaXN0ID0gY3MtPnNlbGVj
dG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
OjpjdWUoIik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6OmN1ZSgiKTsK
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5idWlsZFNlbGVjdG9yc1RleHQoYnVp
bGRlcik7CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOjpjdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjo6Y3VlIik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OiIp
OwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNzLT5zZXJpYWxpemluZ1ZhbHVlKCkp
OworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6OiIsIGNzLT5zZXJpYWxpemluZ1Zh
bHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNzLT5pc0F0dHJpYnV0
ZVNlbGVjdG9yKCkpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7Ci0gICAgICAg
ICAgICBjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXggPSBjcy0+YXR0cmlidXRlKCkucHJlZml4KCk7
Ci0gICAgICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcmVmaXgpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCd8
Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byYgcHJlZml4ID0gY3MtPmF0
dHJpYnV0ZSgpLnByZWZpeCgpOyAhcHJlZml4LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcmVmaXgsICd8Jyk7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChj
cy0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgc3dpdGNoIChjcy0+bWF0
Y2goKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgpAQCAtNzM4
LDE5ICs3MjUsMTkgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3Ry
aW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCddJyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6Okxpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgifj0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIn49Iik7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6Okh5cGhlbjoKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ8
PSIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgifD0iKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6QmVn
aW46Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXj0iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl49Iik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKLSAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIkPSIpOworICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiJD0iKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q29udGFpbjoKLSAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIqPSIpOworICAgICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiKj0iKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NTgs
MjAgKzc0NSwyMCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJp
bmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgIGlmIChjcy0+bWF0Y2goKSAhPSBDU1NT
ZWxlY3Rvcjo6U2V0KSB7CiAgICAgICAgICAgICAgICAgc2VyaWFsaXplU3RyaW5nKGNzLT5zZXJp
YWxpemluZ1ZhbHVlKCksIGJ1aWxkZXIpOwogICAgICAgICAgICAgICAgIGlmIChjcy0+YXR0cmli
dXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGldIik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgaV0iKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoY3MtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykgewogICAgICAg
ICAgICAgc3dpdGNoIChjcy0+cGFnZVBzZXVkb0NsYXNzVHlwZSgpKSB7CiAgICAgICAgICAgICBj
YXNlIFBhZ2VQc2V1ZG9DbGFzc0ZpcnN0OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmZpcnN0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpmaXJz
dCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlUHNldWRv
Q2xhc3NMZWZ0OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxlZnQi
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxlZnQiKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZVBzZXVkb0NsYXNzUmlnaHQ6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cmlnaHQiKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOnJpZ2h0Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc5NywxMCArNzg0LDEyIEBAIFN0cmluZyBDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
U2hhZG93RGVzY2VuZGFudDoKLSAgICAgICAgICAgIHJldHVybiB0YWdIaXN0b3J5LT5zZWxlY3Rv
clRleHQoYnVpbGRlci50b1N0cmluZygpICsgcmlnaHRTaWRlKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHJpZ2h0U2lkZSk7CisgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9yeS0+c2Vs
ZWN0b3JUZXh0KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKSArIHJpZ2h0U2lkZTsKKyAgICBidWlsZGVyLmFwcGVuZChy
aWdodFNpZGUpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgQ1NT
U2VsZWN0b3I6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSwgYm9vbCBj
b252ZXJ0VG9Mb3dlcmNhc2UsIEF0dHJpYnV0ZU1hdGNoVHlwZSBtYXRjaFR5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IGUxNTkwYjliNTNiZmU2YWY2NjIwNWI3
MjMzNDNkMDdhN2JjMDdjMTcuLmNjMDczYjRiMTFjMjVjZGMwNTBlNzNmNzNiMzY1YjhjNjE2ZDNk
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmJ1aWxkU2VsZWN0b3JzVGV4dChTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyKSBjb25zdAogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBmaXJzdFN1
YnNlbGVjdG9yID0gZmlyc3QoKTsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzdWJTZWxl
Y3RvciA9IGZpcnN0U3Vic2VsZWN0b3I7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENTU1Nl
bGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKICAgICAgICAgaWYgKHN1YlNlbGVjdG9y
ICE9IGZpcnN0U3Vic2VsZWN0b3IpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc3ViU2VsZWN0b3ItPnNlbGVjdG9yVGV4dCgpKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMDU3MWNmOTZj
ZTA4MTJiNWU4Mjc1OTc5MGU1ZTAwZDkxNmE1NDlmNi4uNTE5M2MzMmMyZWY1YTFiNDQ0MjljNGYz
MzVmM2Q3YWE3Mjk5NTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
MzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2Nv
cGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODYsMTIgKzg1
LDcgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LAogCiBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNo
ZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93
bmVyUnVsZSkKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShjb250ZW50cykpCi0gICAgLCBtX2lz
SW5saW5lU3R5bGVzaGVldChmYWxzZSkKLSAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKLSAgICAs
IG1fbXV0YXRlZFJ1bGVzKGZhbHNlKQotICAgICwgbV9vd25lck5vZGUoMCkKICAgICAsIG1fb3du
ZXJSdWxlKG93bmVyUnVsZSkKLSAgICAsIG1fc3RhcnRQb3NpdGlvbigpCiB7CiAgICAgbV9jb250
ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhpcyk7CiB9CkBAIC05OSwxMSArOTMsOCBAQCBDU1NTdHls
ZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMs
IENTU0ltcG9ydFJ1bGUqCiBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNo
ZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCwgY29uc3QgT3B0aW9u
YWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCiAgICAgOiBtX2NvbnRlbnRzKFdURk1vdmUoY29udGVu
dHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJbmxpbmVTdHlsZXNoZWV0KQotICAg
ICwgbV9pc0Rpc2FibGVkKGZhbHNlKQotICAgICwgbV9tdXRhdGVkUnVsZXMoZmFsc2UpCiAgICAg
LCBtX2lzT3JpZ2luQ2xlYW4oaXNPcmlnaW5DbGVhbikKICAgICAsIG1fb3duZXJOb2RlKCZvd25l
ck5vZGUpCi0gICAgLCBtX293bmVyUnVsZSgwKQogICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0
UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQo
Jm93bmVyTm9kZSkpOwpAQCAtMjk3LDE3ICsyODgsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ1NT
U3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCkKIAogRXhjZXB0aW9uT3I8aW50
PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0
cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIHRleHQ7Ci0gICAgdGV4dC5hcHBlbmQoc2VsZWN0b3IpOwotICAgIHRleHQuYXBwZW5kTGl0
ZXJhbCgiIHsgIik7Ci0gICAgdGV4dC5hcHBlbmQoc3R5bGUpOwotICAgIGlmICghc3R5bGUuaXNF
bXB0eSgpKQotICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgIHRleHQuYXBwZW5kKCd9Jyk7
Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCks
IGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRvIHRleHQgPSBtYWtlU3RyaW5nKHNl
bGVjdG9yLCAiIHsgIiwgc3R5bGUsICFzdHlsZS5pc0VtcHR5KCkgPyAiICIgOiAiIiwgJ30nKTsK
KyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVl
T3IobGVuZ3RoKCkpKTsKICAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAg
IAogICAgIC8vIEFzIHBlciBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiwgYWx3YXlzIHJldHVybiAt
MS4KICAgICByZXR1cm4gLTE7CiB9CkBAIC0zNDgsNyArMzMyLDYgQEAgTWVkaWFMaXN0KiBDU1NT
dHlsZVNoZWV0OjptZWRpYSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21lZGlhUXVlcmllcykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBpZiAoIW1fbWVkaWFDU1NPTVdyYXBwZXIpCiAg
ICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIgPSBNZWRpYUxpc3Q6OmNyZWF0ZShtX21lZGlhUXVl
cmllcy5nZXQoKSwgY29uc3RfY2FzdDxDU1NTdHlsZVNoZWV0Kj4odGhpcykpOwogICAgIHJldHVy
biBtX21lZGlhQ1NTT01XcmFwcGVyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
aW5kZXggNWY4Nzc0ODcwNmNkNGZhODY1ZGFiNGQ2MjRiMTU4MmQ2OWE3MWQzZC4uOTk3MTVjZTI4
YTdmNjA5ZGEwMDdiZDI0MjlhMGViNjg1YmNlYWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCkBAIC0xMzgsMTUgKzEzOCwxNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyB0eXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CiAKICAgICBSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiBtX2NvbnRlbnRzOwotICAgIGJvb2wgbV9pc0lubGluZVN0eWxlc2hlZXQ7Ci0g
ICAgYm9vbCBtX2lzRGlzYWJsZWQ7Ci0gICAgYm9vbCBtX211dGF0ZWRSdWxlczsKKyAgICBib29s
IG1faXNJbmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNhYmxlZCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX211dGF0ZWRSdWxlcyB7IGZhbHNlIH07CiAgICAgT3B0aW9u
YWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIAotICAgIE5vZGUqIG1fb3duZXJOb2Rl
OwotICAgIENTU0ltcG9ydFJ1bGUqIG1fb3duZXJSdWxlOworICAgIE5vZGUqIG1fb3duZXJOb2Rl
IHsgbnVsbHB0ciB9OworICAgIENTU0ltcG9ydFJ1bGUqIG1fb3duZXJSdWxlIHsgbnVsbHB0ciB9
OwogCiAgICAgVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGU2MGM4NWE3MmQ5YzQ5M2Nm
NDE2NmVjY2RjMmQ0ZDg5YzJhZmU1NzguLmFlYWNiYmRlZWViYjMxOGQ2NTJiYTgwNjhlNTM5M2Jl
MjBhODVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1
ZS5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU0N1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CkBAIC00MiwzMyArNDAsMjcg
QEAgYm9vbCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBD
U1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW8KIAogU3RyaW5nIENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJzdGVwcygiLCBtX3N0ZXBzKTsKKyAgICBjb25zdCBj
aGFyKiBwb3NpdGlvbiA9ICIiOwogICAgIGlmIChtX3N0ZXBQb3NpdGlvbikgewogICAgICAgICBz
d2l0Y2ggKG1fc3RlcFBvc2l0aW9uLnZhbHVlKCkpIHsKICAgICAgICAgY2FzZSBTdGVwc1RpbWlu
Z0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBTdGFydDoKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCBqdW1wLXN0YXJ0Iik7CisgICAgICAgICAgICBwb3NpdGlvbiA9ICIs
IGp1bXAtc3RhcnQiOwogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBOb25lOgotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGp1bXAtbm9uZSIpOworICAgICAgICAgICAgcG9zaXRpb24gPSAi
LCBqdW1wLW5vbmUiOwogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBCb3RoOgotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGp1bXAtYm90aCIpOworICAgICAgICAgICAgcG9zaXRpb24gPSAi
LCBqdW1wLWJvdGgiOwogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OlN0YXJ0OgotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIHN0YXJ0Iik7CisgICAgICAgICAgICBwb3NpdGlvbiA9ICIsIHN0YXJ0
IjsKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlv
bjo6U3RlcFBvc2l0aW9uOjpKdW1wRW5kOgogICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rp
b246OlN0ZXBQb3NpdGlvbjo6RW5kOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJzdGVwcygiLCBtX3N0ZXBzLCBwb3NpdGlvbiwg
JyknKTsKIH0KIAogYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25z
dCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdApAQCAtNzgsMTcgKzcw
LDcgQEAgYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NT
dGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGUKIAogU3RyaW5nIENTU1NwcmluZ1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInNwcmluZygiKTsKLSAgICBidWls
ZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fbWFzcykpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihtX3N0aWZmbmVzcykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2Rh
bXBpbmcpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBwZW5kKEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9pbml0aWFsVmVsb2NpdHkpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoInNwcmluZygiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKG1fbWFzcyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3N0aWZm
bmVzcyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX2RhbXBpbmcpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9pbml0aWFsVmVsb2NpdHkpLCAn
KScpOwogfQogCiBib29sIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25z
dCBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTk2LDUgKzc4
LDQgQEAgYm9vbCBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
U3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3QKICAgICByZXR1cm4gbV9tYXNzID09IG90aGVy
Lm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBvdGhlci5tX3N0aWZmbmVzcyAmJiBtX2RhbXBpbmcg
PT0gb3RoZXIubV9kYW1waW5nICYmIG1faW5pdGlhbFZlbG9jaXR5ID09IG90aGVyLm1faW5pdGlh
bFZlbG9jaXR5OwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
TGlzdC5jcHAKaW5kZXggYWM3NGZlODdmYjMxNTcyZmEyNjk1MWJlYWRjNTNiMjNiN2Y0ZjY4Yy4u
OWRmM2M2Mzc4Njk0ZmU4MzQxMGVmZWYxM2U2OWFjNGY3MWQ0OTY0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTdHJpbmcgTWVkaWFRdWVyeVNldDo6bWVk
aWFUZXh0KCkgY29uc3QKICAgICBib29sIG5lZWRDb21tYSA9IGZhbHNlOwogICAgIGZvciAoYXV0
byYgcXVlcnkgOiBtX3F1ZXJpZXMpIHsKICAgICAgICAgaWYgKG5lZWRDb21tYSkKLSAgICAgICAg
ICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCIs
ICIpOwogICAgICAgICB0ZXh0LmFwcGVuZChxdWVyeS5jc3NUZXh0KCkpOwogICAgICAgICBuZWVk
Q29tbWEgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAppbmRleCAxNjYy
NDIwYzkyNTY0ZGU0MDEyMDVmMjE0OWI0Nzc4NmY2YWM3ZmJhLi40OTc5MGQzNmExZWEwZDZkM2M3
NmEwYjZiMzY2YmViMmJhOGFhY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCkBAIC00
NiwxMCArNDYsMTAgQEAgU3RyaW5nIE1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0CiAgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsKICAgICBj
YXNlIE1lZGlhUXVlcnk6Ok9ubHk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJvbmx5
ICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJvbmx5ICIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhUXVlcnk6Ok5vdDoKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIm5v
dCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgibm90ICIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhUXVlcnk6Ok5vbmU6CiAgICAgICAgIHNob3VsZE9taXRNZWRpYVR5cGUgPSAh
bV9leHByZXNzaW9ucy5pc0VtcHR5KCkgJiYgbV9tZWRpYVR5cGUgPT0gImFsbCI7CkBAIC02Miw3
ICs2Miw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5OjpzZXJpYWxpemUoKSBjb25zdAogICAgIH0KICAg
ICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBtX2V4cHJlc3Npb25zKSB7CiAgICAgICAgIGlmIChu
ZWVkc0FuZCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgYW5kICIpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChl
eHByZXNzaW9uLnNlcmlhbGl6ZSgpKTsKICAgICAgICAgbmVlZHNBbmQgPSB0cnVlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwCmluZGV4IGIwOTlm
YzRkMWQ3MGRlYTQyNjg3MDUyMzYyYTE5MDIyMWYzZjc2NTIuLjhiODU3ZWEzZjBiZTgxYWRkODEw
OGU0MTc3NjRiZTk4M2JiMTJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
eHByZXNzaW9uLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5h
bWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3NCwxOSArMjczLDggQEAgTWVkaWFRdWVy
eUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwg
Q1NTUGFyc2VyVG9rZW4KIAogU3RyaW5nIE1lZGlhUXVlcnlFeHByZXNzaW9uOjpzZXJpYWxpemUo
KSBjb25zdAogewotICAgIGlmICghbV9zZXJpYWxpemF0aW9uQ2FjaGUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwotICAgIHJlc3VsdC5hcHBlbmQoJygnKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fbWVkaWFG
ZWF0dXJlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwotICAgIGlmIChtX3ZhbHVlKSB7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICByZXN1bHQuYXBwZW5k
KG1fdmFsdWUtPmNzc1RleHQoKSk7Ci0gICAgfQotICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLQot
ICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgaWYgKG1f
c2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQorICAgICAgICBtX3NlcmlhbGl6YXRpb25DYWNo
ZSA9IG1ha2VTdHJpbmcoJygnLCBtX21lZGlhRmVhdHVyZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpLCBtX3ZhbHVlID8gIjogIiA6ICIiLCBtX3ZhbHVlID8gbV92YWx1ZS0+Y3NzVGV4dCgpIDog
IiIsICcpJyk7CiAgICAgcmV0dXJuIG1fc2VyaWFsaXphdGlvbkNhY2hlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IGZkNjM2OGQwN2ViYTI2OWVkNmNhNjBk
Y2UzZWQxNjJmYjk5M2RiNjMuLjQ1YWRlMjJhMjg5ZjMxMjQ2NTE5MjYwZGI0MWU5ZDAyZDcyY2Jm
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC01OTMsNyArNTkz
LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHMKICAgICAgICAgICAgICAgICBpZiAocHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRQb3NpdGlv
bllDU1NQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmRMaXRlcmFsKCIvICIpOworICAgICAgICAg
ICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmQoIi8gIik7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgaWYgKHVzZVJlcGVhdFhTaG9ydGhhbmQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKaW5kZXggZGM2OTIzMmViZjU0MTc5
YTg3MDYzZTFmZjE5MzRkZDVmMzU1ODY5Mi4uOWE3YjcyNGFkZTI5ZWNmNjFkMWRhODhhYTM1MzIy
N2M4ZDE2ODk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHAKQEAgLTQxNCwxNDYgKzQxNCwxMjcgQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFs
aXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENTU1BhcnNlclRva2VuKiBuZXgKIAog
ICAgICAgICBDU1NQYXJzZXJUb2tlblR5cGUgbmV4dFR5cGUgPSBuZXh0VG9rZW4tPnR5cGUoKTsK
ICAgICAgICAgaWYgKHRva2Vuc05lZWRpbmdDb21tZW50LmJ1ZmZlcltuZXh0VHlwZV0pIHsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLyoqLyIpOworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIi8qKi8iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChuZXh0VHlwZSA9PSBEZWxpbWl0ZXJUb2tlbiAmJiAoKGRlbGltaXRlcnNOZWVk
aW5nQ29tbWVudCA9PSBuZXh0VG9rZW4tPmRlbGltaXRlcigpKSB8fCAuLi4gfHwgZmFsc2UpKSB7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8qKi8iKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIvKiovIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9OwogCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIElkZW50VG9rZW46IHsK
KyAgICBjYXNlIElkZW50VG9rZW46CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUo
KS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsg
SWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2VuLCBOdW1iZXJU
b2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiwgQ0RDVG9rZW4sIExlZnRQYXJl
bnRoZXNpc1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZ1
bmN0aW9uVG9rZW46IHsKKyAgICBjYXNlIEZ1bmN0aW9uVG9rZW46CiAgICAgICAgIHNlcmlhbGl6
ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJygnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQXRLZXl3b3Jk
VG9rZW46IHsKKyAgICBjYXNlIEF0S2V5d29yZFRva2VuOgogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnQCcpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwg
YnVpbGRlcik7CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1
bmN0aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRh
Z2VUb2tlbiwgRGltZW5zaW9uVG9rZW4sIENEQ1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIEhhc2hUb2tlbjogeworICAgIGNhc2UgSGFzaFRva2VuOgogICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnIycpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZh
bHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlciwgKGdldEhhc2hUb2tlblR5cGUoKSA9PSBIYXNoVG9r
ZW5VbnJlc3RyaWN0ZWQpKTsKICAgICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsgSWRlbnRU
b2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2VuLCBOdW1iZXJUb2tlbiwg
UGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiwgQ0RDVG9rZW4gfSwgJy0nKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVXJsVG9rZW46IHsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJ1cmwoIik7CisgICAgY2FzZSBVcmxUb2tlbjoKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInVybCgiKTsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRv
U3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjogeworICAgIGNhc2UgRGVs
aW1pdGVyVG9rZW46CiAgICAgICAgIHN3aXRjaCAoZGVsaW1pdGVyKCkpIHsKLSAgICAgICAgY2Fz
ZSAnXFwnOiB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcXG4iKTsKKyAg
ICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcXG4iKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisKICAgICAgICAgY2FzZSAnIyc6Ci0gICAgICAg
IGNhc2UgJy0nOiB7CisgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoZGVsaW1pdGVyKCkpOwogICAgICAgICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsgSWRl
bnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVybFRva2VuLCBOdW1iZXJUb2tl
biwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiB9LCAnLScpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KIAotICAgICAgICBjYXNlICdAJzogeworICAgICAgICBjYXNlICdA
JzoKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7CiAgICAgICAgICAgICBhcHBlbmRD
b21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBGdW5jdGlvblRva2VuLCBVcmxUb2tlbiwgQmFk
VXJsVG9rZW4gfSwgJy0nKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSAnLic6Ci0gICAgICAgIGNhc2UgJysnOiB7CisgICAgICAgIGNhc2UgJysnOgogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkpOwogICAgICAgICAgICAgYXBwZW5k
Q29tbWVudElmTmVlZGVkKHsgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tlbiwgRGltZW5zaW9u
VG9rZW4gfSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogCi0gICAgICAgIGNhc2Ug
Jy8nOiB7CisgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8n
KTsKICAgICAgICAgICAgIC8vIFdlaXJkbHkgQ2xhbmcgZXJyb3JzIGlmIHlvdSB0cnkgdG8gdXNl
IHRoZSBmb2xkIGV4cHJlc3Npb24gaW4gYnVpbGROZXh0VG9rZW5OZWVkc0NvbW1lbnRUYWJsZSgp
IGJlY2F1c2UgdGhlIHRydWUgdmFsdWUgaXMgdW51c2VkLgogICAgICAgICAgICAgLy8gU28gd2Ug
anVzdCBidWlsZCB0aGUgdGFibGUgYnkgaGFuZCBoZXJlIGluc3RlYWQuIFNlZTogcmRhcjovLzY5
NzEwNjYxCiAgICAgICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyB9LCAnKicpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLQogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBOdW1iZXJUb2tlbjogewot
ICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVzZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVl
VHlwZSBmbGFnCisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAgICAgICAgLy8gVGhlc2Ugd29uJ3Qg
cHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZy4KICAgICAgICAgaWYg
KG1fbnVtZXJpY1NpZ24gPT0gUGx1c1NpZ24pCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
KycpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChudW1lcmljVmFsdWUoKSk7CiAgICAgICAgIGFw
cGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9uVG9rZW4sIFVybFRva2Vu
LCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tlbiwgRGltZW5zaW9uVG9r
ZW4gfSwgJyUnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgUGVyY2VudGFnZVRv
a2VuOiB7CisgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG51bWVyaWNWYWx1ZSgpLCAnJScpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBE
aW1lbnNpb25Ub2tlbjogewotICAgICAgICAvLyBUaGlzIHdpbGwgaW5jb3JyZWN0bHkgc2VyaWFs
aXplIGUuZy4gNGUzZTIgYXMgNDAwMGUyCisgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAgICAg
ICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2UyIGFzIDQwMDBl
Mi4KICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtZXJpY1ZhbHVlKCkpOwogICAgICAgICBzZXJp
YWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CiAgICAgICAgIGFw
cGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9uVG9rZW4sIFVybFRva2Vu
LCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tlbiwgRGltZW5zaW9uVG9r
ZW4sIENEQ1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFVu
aWNvZGVSYW5nZVRva2VuOiB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVSsiKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHVuaWNvZGVSYW5nZVN0YXJ0KCkpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHVuaWNv
ZGVSYW5nZUVuZCgpKSk7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlUrIiwgaGV4KHVuaWNvZGVSYW5nZVN0YXJ0KCkpLCAnLScsIGhleCh1bmlj
b2RlUmFuZ2VFbmQoKSkpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBTdHJpbmdU
b2tlbjogeworICAgIGNhc2UgU3RyaW5nVG9rZW46CiAgICAgICAgIHNlcmlhbGl6ZVN0cmluZyh2
YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBicmVhazsKLSAgICB9CiAKICAg
ICBjYXNlIEluY2x1ZGVNYXRjaFRva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
In49Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIERhc2hNYXRjaFRva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInw9
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ8PSIpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFByZWZpeE1hdGNoVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXj0i
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIl49Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3VmZml4TWF0Y2hUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIkPSIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgiJD0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdWJzdHJpbmdNYXRjaFRva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIio9
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIqPSIpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbHVtblRva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInx8Iik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ8fCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENE
T1Rva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjwhLS0iKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjwhLS0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDRENUb2tl
bjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCItLT4iKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIi0tPiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJhZFN0cmluZ1Rva2Vu
OgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIidcbiIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiJ1xuIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmFkVXJsVG9rZW46Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidXJsKCgpIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJ1cmwoKCkiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGl0ZXNwYWNlVG9r
ZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAwNDdiZWRiZDM1NDM3MzQ4OTlkMmI4OWMwZWQ5YzBkMmJhNTYwODcwLi43YzFkN2YwMTg5
YTIwYzJiZTBhOTIyZTY3YmY0YTczNTk4MjVjNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTYxODEsNyArNjE4MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQo
KQogI2VuZGlmCiAKICAgICBpZiAoc2hvdWxkRW5mb3JjZUhUVFAwOVNhbmRib3goKSkgewotICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNhbmRib3hpbmcgJyIsIG1fdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhU
VFAvMC45LiIpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJTYW5kYm94aW5n
ICciLCBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIicgYmVjYXVzZSBp
dCBpcyB1c2luZyBIVFRQLzAuOS4iKTsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgICAg
ICBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hTY3JpcHRzIHwgU2FuZGJveFBsdWdpbnMpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1MDRmZjU0ZTZmOGE2YWE1ZDNkMDNlZTgw
MmE3ZmIwNmVmZjBmZmRiLi4yM2YxMzQ5NWZmYThhMDA0NDgzMGNlNTY2YzFlMDBkMjA3NDUyMjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNzI5LDcgKzI3MjksNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRBdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaWQ9XCciLCBlbGVtZW50LmdldElk
QXR0cmlidXRlKCksICdcJycpOwogCiAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSkgewotICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjbGFzcz1cJyIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiIGNsYXNzPVwnIik7CiAgICAgICAgIHNpemVfdCBjbGFzc05hbWVzVG9EdW1wID0g
ZWxlbWVudC5jbGFzc05hbWVzKCkuc2l6ZSgpOwogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IG1h
eE51bUNsYXNzTmFtZXMgPSA3OwogICAgICAgICBib29sIGFkZEVsbGlwc2lzID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCmluZGV4IGY1NzgzOGE2MjAxZDVlZWIx
Y2M5NzA1ZjJkYjEyZjk4NjY0OTliZWIuLjRlNTI4OGU3NjM2NjFkYTY5YjlmODAwYTU5MWYwMTlj
MWMxNzMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCkBAIC0xMzYs
MTEgKzEzNiwxMCBAQCBTYW5kYm94RmxhZ3MgU2VjdXJpdHlDb250ZXh0OjpwYXJzZVNhbmRib3hQ
b2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ksIFN0cmluZyYgaQogICAgICAgICAgICAgZmxhZ3Mg
Jj0gflNhbmRib3hTdG9yYWdlQWNjZXNzQnlVc2VyQWN0aXZhdGlvbjsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9ycykKLSAgICAgICAgICAgICAgICB0
b2tlbkVycm9ycy5hcHBlbmRMaXRlcmFsKCIsICciKTsKKyAgICAgICAgICAgICAgICB0b2tlbkVy
cm9ycy5hcHBlbmQoIiwgJyIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRv
a2VuRXJyb3JzLmFwcGVuZCgnXCcnKTsKLSAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZChz
YW5kYm94VG9rZW4pOwotICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKCdcJycpOworICAg
ICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKHNhbmRib3hUb2tlbiwgJ1wnJyk7CiAgICAgICAg
ICAgICBudW1iZXJPZlRva2VuRXJyb3JzKys7CiAgICAgICAgIH0KIApAQCAtMTQ5LDkgKzE0OCw5
IEBAIFNhbmRib3hGbGFncyBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGljeShjb25z
dCBTdHJpbmcmIHBvbGljeSwgU3RyaW5nJiBpCiAKICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9y
cykgewogICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9ycyA+IDEpCi0gICAgICAgICAgICB0
b2tlbkVycm9ycy5hcHBlbmRMaXRlcmFsKCIgYXJlIGludmFsaWQgc2FuZGJveCBmbGFncy4iKTsK
KyAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgiIGFyZSBpbnZhbGlkIHNhbmRib3ggZmxh
Z3MuIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZExpdGVy
YWwoIiBpcyBhbiBpbnZhbGlkIHNhbmRib3ggZmxhZy4iKTsKKyAgICAgICAgICAgIHRva2VuRXJy
b3JzLmFwcGVuZCgiIGlzIGFuIGludmFsaWQgc2FuZGJveCBmbGFnLiIpOwogICAgICAgICBpbnZh
bGlkVG9rZW5zRXJyb3JNZXNzYWdlID0gdG9rZW5FcnJvcnMudG9TdHJpbmcoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAppbmRleCA0Yjg0ZmM3
NTY5ZWQxYTMwZjEzMjhiYWU0MjdhNTE4MmFjOGNlYWE5Li43M2QxYzNmMmM2YmZkMzgxYmZiOTNh
MWFiNDVlM2Q3ZGRkNDc2N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hU
TUxJbnRlcmNoYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJj
aGFuZ2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFN0cmluZyBjb252ZXJ0SFRNTFRleHRUb0ludGVy
Y2hhbmdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW4sIGNvbnN0IFRleHQqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBpICsgMSA9PSBpbi5sZW5ndGgoKSkg
Ly8gYXQgc3RhcnQgb3IgZW5kIG9mIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy5hcHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcg
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAppbmRleCA5Mzc4NmQzY2NkYzFmMjlmNDA3ZjQ5OTIwYWJiYTUyY2Jm
YjMyOTk3Li45NGI0MmY5NzU5ZTc1MDc4ZTMwNzk5MjAyNzQ3MTdkY2Q0ZjAxYzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNjI5LDcgKzE2MjksNyBAQCBz
dGF0aWMgVVN0cmluZ1NlYXJjaCogY3JlYXRlU2VhcmNoZXIoKQogICAgIC8vIGJ1dCBpdCBkb2Vz
bid0IG1hdHRlciBleGFjdGx5IHdoYXQgaXQgaXMsIHNpbmNlIHdlIGRvbid0IHBlcmZvcm0gYW55
IHNlYXJjaGVzCiAgICAgLy8gd2l0aG91dCBzZXR0aW5nIGJvdGggdGhlIHBhdHRlcm4gYW5kIHRo
ZSB0ZXh0LgogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFN0cmlu
ZyBzZWFyY2hDb2xsYXRvck5hbWUgPSBtYWtlU3RyaW5nKGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgp
LCAiQGNvbGxhdGlvbj1zZWFyY2giKTsKKyAgICBhdXRvIHNlYXJjaENvbGxhdG9yTmFtZSA9IG1h
a2VTdHJpbmcoY3VycmVudFNlYXJjaExvY2FsZUlEKCksICJAY29sbGF0aW9uPXNlYXJjaCIpOwog
ICAgIFVTdHJpbmdTZWFyY2gqIHNlYXJjaGVyID0gdXNlYXJjaF9vcGVuKCZuZXdsaW5lQ2hhcmFj
dGVyLCAxLCAmbmV3bGluZUNoYXJhY3RlciwgMSwgc2VhcmNoQ29sbGF0b3JOYW1lLnV0ZjgoKS5k
YXRhKCksIDAsICZzdGF0dXMpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SIHx8
IHN0YXR1cyA9PSBVX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcgfHwgc3RhdHVzID09IFVfVVNJTkdf
REVGQVVMVF9XQVJOSU5HKTsKICAgICByZXR1cm4gc2VhcmNoZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggMTljYjBkOWE4ZTJkNDRkNzczMzM4OGVjZWExMjQwYzJhNDFlY2E5ZC4u
ZmI1ZTI2MTM3NTUyZjk0OTI5ODg0ODkxY2RlNTFmMmFhZmMxYjY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtMzg2LDExICszODYsMTEgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhTdHJpbmdCdWlsZGVyJiBvdXQsIFN0eWxl
UHIKICAgICAvLyB3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbiBzaG91bGQgaGF2ZSByZW1v
dmVkIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QKICAgICBBU1NFUlQocHJvcGVy
dHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCkpOwogICAgIGlmIChpc0Jsb2NrKQotICAgICAgICBvdXQuYXBwZW5kTGl0
ZXJhbCgiPGRpdiBzdHlsZT1cIiIpOworICAgICAgICBvdXQuYXBwZW5kKCI8ZGl2IHN0eWxlPVwi
Iik7CiAgICAgZWxzZQotICAgICAgICBvdXQuYXBwZW5kTGl0ZXJhbCgiPHNwYW4gc3R5bGU9XCIi
KTsKKyAgICAgICAgb3V0LmFwcGVuZCgiPHNwYW4gc3R5bGU9XCIiKTsKICAgICBhcHBlbmRBdHRy
aWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5hc1RleHQoKSwgZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQo
KSk7Ci0gICAgb3V0LmFwcGVuZExpdGVyYWwoIlwiPiIpOworICAgIG91dC5hcHBlbmQoIlwiPiIp
OwogfQogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVD
bG9zZVRhZyhib29sIGlzQmxvY2spCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRUYWcoU3RyaW5nQnVpbGRlciYgb3V0LCBjb25zdCBF
bGVtZW50JgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+aXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXQuYXBwZW5kTGl0ZXJhbCgiIHN0eWxlPVwiIik7CisgICAg
ICAgICAgICBvdXQuYXBwZW5kKCIgc3R5bGU9XCIiKTsKICAgICAgICAgICAgIGFwcGVuZEF0dHJp
YnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmFzVGV4dCgpLCBkb2N1bWVu
dElzSFRNTCk7CiAgICAgICAgICAgICBvdXQuYXBwZW5kKCciJyk7CiAgICAgICAgIH0KQEAgLTEy
NDIsMTEgKzEyNDIsOSBAQCBTdHJpbmcgZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIFN0cmluZyB1cmxUb01hcmt1cChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG1hcmt1cDsKLSAgICBtYXJrdXAuYXBw
ZW5kTGl0ZXJhbCgiPGEgaHJlZj1cIiIpOwotICAgIG1hcmt1cC5hcHBlbmQodXJsLnN0cmluZygp
KTsKLSAgICBtYXJrdXAuYXBwZW5kTGl0ZXJhbCgiXCI+Iik7CisgICAgbWFya3VwLmFwcGVuZCgi
PGEgaHJlZj1cIiIsIHVybC5zdHJpbmcoKSwgIlwiPiIpOwogICAgIE1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMobWFya3VwLCB0aXRsZSwgMCwgdGl0
bGUubGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7Ci0gICAgbWFya3VwLmFwcGVuZExpdGVy
YWwoIjwvYT4iKTsKKyAgICBtYXJrdXAuYXBwZW5kKCI8L2E+Iik7CiAgICAgcmV0dXJuIG1hcmt1
cC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDZhNDRkNzI3MjZhOTg3NTg0MjY5MTRmOWM3NzNjMTFmZDViNzA4YmMuLjdhZWQ2MTE5NjRk
YjM3ZjA1MDMxZDM1ZWFlYTg5OTA1NTYzNjIxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29y
ZEZvcm1TdHJ1Y3R1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtLCBTdHJpbmdCdWlsZGUK
ICAgICAvLyAyIGlzIGVub3VnaCB0byBkaXN0aW5ndWlzaCBmb3JtcyBpbiB3ZWJraXQub3JnL2Iv
OTEyMDkjYzAKICAgICBjb25zdCBzaXplX3QgbmFtZWRDb250cm9sc1RvQmVSZWNvcmRlZCA9IDI7
CiAgICAgYXV0byYgY29udHJvbHMgPSBmb3JtLnVuc2FmZUFzc29jaWF0ZWRFbGVtZW50cygpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFsiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiIFsi
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgbmFtZWRDb250cm9scyA9IDA7IGkgPCBjb250cm9s
cy5zaXplKCkgJiYgbmFtZWRDb250cm9scyA8IG5hbWVkQ29udHJvbHNUb0JlUmVjb3JkZWQ7ICsr
aSkgewogICAgICAgICBhdXRvKiBmb3JtQXNzb2NpYXRlZEVsZW1lbnQgPSBjb250cm9sc1tpXS0+
YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFmb3JtQXNzb2NpYXRlZEVs
ZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkpCkBAIC0yOTYsOCArMjk2LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZEZvcm1TdHJ1Y3R1cmUoY29uc3QgSFRNTEZvcm1F
bGVtZW50JiBmb3JtLCBTdHJpbmdCdWlsZGUKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG5hbWVkQ29udHJvbHMrKzsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUsICcgJyk7CiAgICAgfQogICAgIGJ1aWxkZXIuYXBwZW5k
KCddJyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCA3YTc3OTk3NmFkMDM5ZDliMmRkZTA2NWE5NTAwMDYyZjM3MjQ1ODQ1Li4wNGY3
OGVkNzEwMzFmZjMzM2MyODk2YzE5MTA4ZTNkZDk1ZWZlM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcG9ydFZhbGlkaXR5KCkKICAgICB9CiAKICAg
ICBpZiAoZG9jdW1lbnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFr
ZVN0cmluZygiQW4gaW52YWxpZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPSciLCBuYW1lKCksICIn
IGlzIG5vdCBmb2N1c2FibGUuIik7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmco
IkFuIGludmFsaWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0nIiwgbmFtZSgpLCAiJyBpcyBub3Qg
Zm9jdXNhYmxlLiIpOwogICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggODg1ZWVlZjVj
MWExMmY2ZDMzNmI3NjY0NmIzMjRjNDc2MmRkOWRhOS4uNTU1ZjE1NDFjMDA4YWI2ZjFhYThmYzRj
ZWQ3NDJlZjBlZjUwZDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVy
YWN0aXZlbHkoKQogICAgICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiB1bmhhbmRsZWRJbnZhbGlk
Q29udHJvbHMpIHsKICAgICAgICAgICAgIGlmIChjb250cm9sLT5pc0Nvbm5lY3RlZCgpICYmIGNv
bnRyb2wtPmlzRm9jdXNhYmxlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkFuIGludmFsaWQgZm9ybSBjb250cm9s
IHdpdGggbmFtZT0nIiwgY29udHJvbC0+bmFtZSgpLCAiJyBpcyBub3QgZm9jdXNhYmxlLiIpOwor
ICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52YWxpZCBmb3JtIGNv
bnRyb2wgd2l0aCBuYW1lPSciLCBjb250cm9sLT5uYW1lKCksICInIGlzIG5vdCBmb2N1c2FibGUu
Iik7CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkMDZh
MDA4ZTkxNGNlZTA5MjQ4NmY2MzgxYzViOWZjNGIwOTQzODU4Li5mYjRhY2Q2ZTVkNmZjNTIyNjlk
NWIwMTY0MDhmZDYzMThiZDRhMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29t
cGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAg
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYW5k
aWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgIGlmICgmY2FuZGlkYXRlICE9
ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiwgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNhbmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSku
c3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlh
bGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCBjYW5k
aWRhdGUuZGVuc2l0eSwgJ3gnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCmluZGV4IDg2NzEwNDRjY2Q2MTdkNmViZWVkYzI5YTRjZmFkZDc4OTAwZGZjMGQu
LjZmYjNmNmNhM2M5N2NhMzYyZTg2NWFmNGUyMzNlZDZkM2VhNzRlOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNzgsMTMgKzc4LDE0IEBAIHN0
YXRpYyBib29sIGlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYsIE1lZGlhU2VzCiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRNYWluQ29udGVudEZv
clB1cnBvc2VzT2ZBdXRvcGxheShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCBzaG91bGRI
aXRUZXN0TWFpbkZyYW1lKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorCiBzdGF0aWMg
U3RyaW5nIHJlc3RyaWN0aW9uTmFtZXMoTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb24pCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN0cmljdGlvbkJ1
aWxkZXI7CiAjZGVmaW5lIENBU0UocmVzdHJpY3Rpb25UeXBlKSBcCiAgICAgaWYgKHJlc3RyaWN0
aW9uICYgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzdHJpY3Rpb25UeXBlKSB7IFwKICAgICAgICAg
aWYgKCFyZXN0cmljdGlvbkJ1aWxkZXIuaXNFbXB0eSgpKSBcCi0gICAgICAgICAgICByZXN0cmlj
dGlvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsgXAorICAgICAgICAgICAgcmVzdHJpY3Rp
b25CdWlsZGVyLmFwcGVuZCgiLCAiKTsgXAogICAgICAgICByZXN0cmljdGlvbkJ1aWxkZXIuYXBw
ZW5kKCNyZXN0cmljdGlvblR5cGUpOyBcCiAgICAgfSBcCiAKQEAgLTEwNyw2ICsxMDgsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZXMoTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZp
b3JSZXN0cmljdGlvbnMgcmVzdHJpYwogCiAgICAgcmV0dXJuIHJlc3RyaWN0aW9uQnVpbGRlci50
b1N0cmluZygpOwogfQorCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgcGFnZUV4cGxpY2l0bHlBbGxv
d3NFbGVtZW50VG9BdXRvcGxheUlubGluZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCA1MTU1NDg4ZDdlZDFkYTk1MGQ1YWY2NzhkNDZkMjM0MGI4
YmE5Y2VlLi4zMmRjNmU1NTBiNjk3MzIwNDBjZDkxYmVjMTAzZGUzNTc2ZWE5NzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtMzY5Nyw3ICszNjk3LDcgQEAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0
aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0wK
ICAgICAgICAgICAgIGluZm8ubmFtZSA9IGluZm8ubmFtZS5sZWZ0KGluZm8ubmFtZS5sZW5ndGgo
KSAtIDMpOwogICAgICAgICAvLyBJZiBpdCdzIGFuIGFycmF5LCB3ZSBuZWVkIHRvIGl0ZXJhdGUg
dGhyb3VnaCBlYWNoIGVsZW1lbnQsIGFwcGVuZGluZyAiW2luZGV4XSIgdG8gdGhlIG5hbWUuCiAg
ICAgICAgIGZvciAoR0NHTGludCBpbmRleCA9IDA7IGluZGV4IDwgaW5mby5zaXplOyArK2luZGV4
KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdW5pZm9ybU5hbWUgPSBtYWtlU3RyaW5nKGluZm8ubmFt
ZSwgJ1snLCBpbmRleCwgJ10nKTsKKyAgICAgICAgICAgIGF1dG8gdW5pZm9ybU5hbWUgPSBtYWtl
U3RyaW5nKGluZm8ubmFtZSwgJ1snLCBpbmRleCwgJ10nKTsKIAogICAgICAgICAgICAgaWYgKG5h
bWUgPT0gdW5pZm9ybU5hbWUgfHwgbmFtZSA9PSBpbmZvLm5hbWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpjcmVhdGUoJnByb2dyYW0sIHVuaWZvcm1Mb2Nh
dGlvbiwgaW5mby50eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwCmluZGV4IDkyZjI3NmYzOGI3NDRkNTFlYzUxYzhmY2Y5YWI0NmZlNzJkMmVk
NGIuLmI0NTg1YzE0NWQ1MmUyMGJhODMyMTEwZTkzZTE0NzBjY2FjYmM1YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMTkxLDcgKzE5
MSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0YWtlUmVtYWluaW5nKCkKICAgICB7Ci0gICAg
ICAgIFN0cmluZyByZXN1bHQgPSBtYWtlU3RyaW5nKG1fdGV4dCk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVN0cmluZyhtX3RleHQpOwogICAgICAgICBtX3RleHQgPSBTdHJpbmdWaWV3KCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXggODBiNDIxMzY2OWJhMzFlODFh
MDI3NTUxYmNjNzhhYjFhMzFjYzEwOC4uYzJlMzA3ZmEwYTNiMTQxODZiMTJhMTA0MDJmZTZjZmFm
OTE1MDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuY3BwCkBAIC0zNywxMSArMzcsMTAgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTUyLDIxICs1MSwxMyBAQCBYU1NBdWRpdG9yRGVsZWdh
dGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGJ1aWxkQ29uc29sZUVycm9yKGNvbnN0IFhTU0luZm8mIHhzc0luZm8pCiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiVGhl
IFhTUyBBdWRpdG9yICIpOwotICAgIG1lc3NhZ2UuYXBwZW5kKHhzc0luZm8ubV9kaWRCbG9ja0Vu
dGlyZVBhZ2UgPyAiYmxvY2tlZCBhY2Nlc3MgdG8iIDogInJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNj
cmlwdCBpbiIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiICciKTsKLSAgICBtZXNzYWdl
LmFwcGVuZCh4c3NJbmZvLm1fb3JpZ2luYWxVUkwpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJh
bCgiJyBiZWNhdXNlICIpOwotICAgIG1lc3NhZ2UuYXBwZW5kKHhzc0luZm8ubV9kaWRCbG9ja0Vu
dGlyZVBhZ2UgPyAidGhlIHNvdXJjZSBjb2RlIG9mIGEgc2NyaXB0IiA6ICJpdHMgc291cmNlIGNv
ZGUiKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIiB3YXMgZm91bmQgd2l0aGluIHRoZSBy
ZXF1ZXN0LiIpOwotCi0gICAgaWYgKHhzc0luZm8ubV9kaWRTZW5kWFNTUHJvdGVjdGlvbkhlYWRl
cikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIgVGhlIHNlcnZlciBzZW50IGFuICdY
LVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIgcmVxdWVzdGluZyB0aGlzIGJlaGF2aW9yLiIpOwotICAg
IGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIgVGhlIGF1ZGl0b3Igd2FzIGVu
YWJsZWQgYmVjYXVzZSB0aGUgc2VydmVyIGRpZCBub3Qgc2VuZCBhbiAnWC1YU1MtUHJvdGVjdGlv
bicgaGVhZGVyLiIpOwotCi0gICAgcmV0dXJuIG1lc3NhZ2UudG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZygiVGhlIFhTUyBBdWRpdG9yICIsCisgICAgICAgIHhzc0luZm8ubV9kaWRC
bG9ja0VudGlyZVBhZ2UgPyAiYmxvY2tlZCBhY2Nlc3MgdG8iIDogInJlZnVzZWQgdG8gZXhlY3V0
ZSBhIHNjcmlwdCBpbiIsICIgJyIsCisgICAgICAgIHhzc0luZm8ubV9vcmlnaW5hbFVSTCwgIicg
YmVjYXVzZSAiLAorICAgICAgICB4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlID8gInRoZSBz
b3VyY2UgY29kZSBvZiBhIHNjcmlwdCIgOiAiaXRzIHNvdXJjZSBjb2RlIiwKKyAgICAgICAgIiB3
YXMgZm91bmQgd2l0aGluIHRoZSByZXF1ZXN0LiIsCisgICAgICAgIHhzc0luZm8ubV9kaWRTZW5k
WFNTUHJvdGVjdGlvbkhlYWRlciA/ICIgVGhlIHNlcnZlciBzZW50IGFuICdYLVhTUy1Qcm90ZWN0
aW9uJyBoZWFkZXIgcmVxdWVzdGluZyB0aGlzIGJlaGF2aW9yLiIKKyAgICAgICAgICAgIDogIiBU
aGUgYXVkaXRvciB3YXMgZW5hYmxlZCBiZWNhdXNlIHRoZSBzZXJ2ZXIgZGlkIG5vdCBzZW5kIGFu
ICdYLVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIuIik7CiB9CiAKIFJlZjxGb3JtRGF0YT4gWFNTQXVk
aXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZpb2xhdGlvblJlcG9ydChjb25zdCBYU1NJbmZvJiB4c3NJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDNl
ZWZkYmI5MTZiMDc4ODRhMWFkZDAyNDMxYjU2MDM1ODE3MzVhYjMuLmQ0YjZiZWIzZWE1YzM4NjU0
MTFmM2QzNzIzMWUyMTg3NWVjZmRlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKQEAgLTUwOSwyMiArNTA5LDEzIEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpy
ZWJ1aWxkRGlzcGxheVRyZWUoKQogICAgIG1fY3VlTm9kZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25l
ZEZyYWdtZW50KTsKICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChjbG9uZWRGcmFnbWVu
dCk7CiAKLSAgICBpZiAobV9mb250U2l6ZSAmJiBvd25lckRvY3VtZW50KCkucGFnZSgpKSB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQob3du
ZXJEb2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIDo6Iik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0
cmluZyhDU1NQcm9wZXJ0eUZvbnRTaXplKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9mb250U2l6ZSwgInB4IikpOwot
ICAgICAgICBpZiAobV9mb250U2l6ZUlzSW1wb3J0YW50KQotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjsgfSIpOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7Ci0gICAgICAg
IHN0eWxlLT5zZXRUZXh0Q29udGVudChidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICAgICBtX2Rp
c3BsYXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgaWYgKG1fZm9udFNpemUpIHsKKyAg
ICAgICAgaWYgKGF1dG8gcGFnZSA9IG93bmVyRG9jdW1lbnQoKS5wYWdlKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHls
ZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0VGV4
dENvbnRlbnQobWFrZVN0cmluZyhwYWdlLT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVl
dCgpLAorICAgICAgICAgICAgICAgICIgOjoiLCBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVk
b0lkKCksICJ7Zm9udC1zaXplOiIsIG1fZm9udFNpemUsIG1fZm9udFNpemVJc0ltcG9ydGFudCA/
ICJweCAhaW1wb3J0YW50fSIgOiAicHh9IikpOworICAgICAgICAgICAgbV9kaXNwbGF5VHJlZS0+
YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHRyYWNrKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggYmI5ODNjNTI5YjU5ZTZkNDIxNzQzYTRmMTU0
ZmI1NDk2M2Y4NDMzMC4uNjI4Y2RlY2NhYjFkYjk1NmEzMjY1MjU1YTY5YTczMjA5NWQyMjA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTExNCwxNyArMTE0LDEyIEBAIEpTRE9NR2xvYmFs
T2JqZWN0KiBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmZyb250ZW5kR2xvYmFsT2Jq
ZWN0KCkKIHN0YXRpYyBTdHJpbmcgZXhwcmVzc2lvbkZvckV2YWx1YXRpbmdDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+JiYgYXJndW1lbnRzKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgZXhwcmVzc2lvbjsKLSAgICBleHByZXNzaW9uLmFwcGVuZExp
dGVyYWwoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIpOwotICAgIGV4cHJlc3Np
b24uYXBwZW5kKGNvbW1hbmQpOwotICAgIGV4cHJlc3Npb24uYXBwZW5kKCciJyk7Ci0KKyAgICBl
eHByZXNzaW9uLmFwcGVuZCgiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29t
bWFuZCwgJyInKTsKICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogYXJndW1lbnRzKSB7Ci0gICAg
ICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgZXhwcmVzc2lvbi5h
cHBlbmQoIiwgIik7CiAgICAgICAgIGFyZ3VtZW50LT53cml0ZUpTT04oZXhwcmVzc2lvbik7CiAg
ICAgfQotCi0gICAgZXhwcmVzc2lvbi5hcHBlbmQoJ10nKTsKLSAgICBleHByZXNzaW9uLmFwcGVu
ZCgnKScpOworICAgIGV4cHJlc3Npb24uYXBwZW5kKCJdKSIpOwogICAgIHJldHVybiBleHByZXNz
aW9uLnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAppbmRleCA2MTEzNDhiZjc3OGY5NTIwNTBmYWZjMTE1YTcxZGM5MGYwMThl
YmMzLi5hMTY5MzE2MmJjZjdhZmJlZjI3MzdlNWRlYzRhOGFiYmFiZWM0MjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0xMDQ3LDggKzEw
NDcsOCBAQCBQYXRoIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBOb2RlJiBub2RlLCBjbwogICAgIGJvb2wgaGFzU2Vjb25kTGluZSA9
ICFlbGVtZW50Um9sZS5pc0VtcHR5KCk7CiAKICAgICB7Ci0gICAgICAgIFN0cmluZyBmaXJzdExp
bmUgPSBtYWtlU3RyaW5nKGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SURWYWx1ZSwgZWxlbWVudENs
YXNzVmFsdWUsIGVsZW1lbnRQc2V1ZG9UeXBlLCAnICcsIGVsZW1lbnRXaWR0aCwgInB4IiwgJyAn
LCBtdWx0aXBsaWNhdGlvblNpZ24sICcgJywgZWxlbWVudEhlaWdodCwgInB4Iik7Ci0gICAgICAg
IFN0cmluZyBzZWNvbmRMaW5lID0gbWFrZVN0cmluZygiUm9sZSAiLCBlbGVtZW50Um9sZSk7Cisg
ICAgICAgIGF1dG8gZmlyc3RMaW5lID0gbWFrZVN0cmluZyhlbGVtZW50VGFnTmFtZSwgZWxlbWVu
dElEVmFsdWUsIGVsZW1lbnRDbGFzc1ZhbHVlLCBlbGVtZW50UHNldWRvVHlwZSwgJyAnLCBlbGVt
ZW50V2lkdGgsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25TaWduLCAnICcsIGVsZW1lbnRIZWln
aHQsICJweCIpOworICAgICAgICBhdXRvIHNlY29uZExpbmUgPSBtYWtlU3RyaW5nKCJSb2xlICIs
IGVsZW1lbnRSb2xlKTsKIAogICAgICAgICBmbG9hdCBmaXJzdExpbmVXaWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bihmaXJzdExpbmUpKTsKICAgICAgICAgZmxvYXQgc2Vjb25kTGluZVdpZHRoID0g
Zm9udC53aWR0aChUZXh0UnVuKHNlY29uZExpbmUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA3YTdjMmQ3YmU5NDYzNzM1MDUw
ZDM3OTc1MzhiZWRiNjRjYmJmZmM0Li44YzcyMTU3YjhjOWMyYTUyNTQyZDQ1ODYzYmU2YzgzNmUz
YWVlM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC05NDUsOCArOTQ1LDcgQEAgRXhjZXB0aW9uT3I8Q1NTU3R5bGVSdWxlKj4g
SW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogICAg
IGlmICghc3R5bGVTaGVldFRleHQuaXNFbXB0eSgpKQogICAgICAgICBzdHlsZVNoZWV0VGV4dC5h
cHBlbmQoJ1xuJyk7CiAKLSAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQoc2VsZWN0b3IpOwotICAg
IHN0eWxlU2hlZXRUZXh0LmFwcGVuZExpdGVyYWwoIiB7fSIpOworICAgIHN0eWxlU2hlZXRUZXh0
LmFwcGVuZChzZWxlY3RvciwgIiB7fSIpOwogCiAgICAgLy8gVXNpbmcgc2V0VGV4dCgpIGFzIHRo
aXMgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHN0eWxlc2hlZXQgcnVsZSBzZXQuCiAgICAgc2V0VGV4
dChzdHlsZVNoZWV0VGV4dC50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCBhZjY3Mzc4YTZkZGNkMWFlNzcyNDRlODk5NTM2NzczYTcwMjdiMDNjLi5h
NDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRjZTFhNTg1MTZlYWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTE5MiwyNyArMTkxLDE1IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0
CiAKIFJlZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm8mIHJlc291cmNlSW5mbykKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHR5cGVzOwotCi0gICAgaWYg
KHJlc291cmNlSW5mby5pc01hc3RlcikKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgiTWFz
dGVyICIpOwotCi0gICAgaWYgKHJlc291cmNlSW5mby5pc01hbmlmZXN0KQotICAgICAgICB0eXBl
cy5hcHBlbmRMaXRlcmFsKCJNYW5pZmVzdCAiKTsKLQotICAgIGlmIChyZXNvdXJjZUluZm8uaXNG
YWxsYmFjaykKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgiRmFsbGJhY2sgIik7Ci0KLSAg
ICBpZiAocmVzb3VyY2VJbmZvLmlzRm9yZWlnbikKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJh
bCgiRm9yZWlnbiAiKTsKLQotICAgIGlmIChyZXNvdXJjZUluZm8uaXNFeHBsaWNpdCkKLSAgICAg
ICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgiRXhwbGljaXQgIik7Ci0KKyAgICBhdXRvIHR5cGVzID0g
bWFrZVN0cmluZyhyZXNvdXJjZUluZm8uaXNNYXN0ZXIgPyAiTWFzdGVyICIgOiAiIiwKKyAgICAg
ICAgcmVzb3VyY2VJbmZvLmlzTWFuaWZlc3QgPyAiTWFuaWZlc3QgIiA6ICIiLAorICAgICAgICBy
ZXNvdXJjZUluZm8uaXNGYWxsYmFjayA/ICJGYWxsYmFjayAiIDogIiIsCisgICAgICAgIHJlc291
cmNlSW5mby5pc0ZvcmVpZ24gPyAiRm9yZWlnbiAiIDogIiIsCisgICAgICAgIHJlc291cmNlSW5m
by5pc0V4cGxpY2l0ID8gIkV4cGxpY2l0ICIgOiAiIik7CiAgICAgcmV0dXJuIFByb3RvY29sOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRVcmwocmVzb3VyY2VJbmZvLnJlc291cmNlLnN0cmluZygpKQogICAgICAgICAuc2V0
U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlSW5mby5zaXplKSkKLSAgICAgICAgLnNldFR5
cGUodHlwZXMudG9TdHJpbmcoKSkKKyAgICAgICAgLnNldFR5cGUodHlwZXMpCiAgICAgICAgIC5y
ZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
V2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA5MmMzZWVkYTNkZjY2MmJjOWI4MTU1YzU0ZGQyMjMy
OTVkNGM4MzQ2Li40OGI5YTcxODUzZjQ0OTRmYmY0N2UzODM4YTg2MzY0NzllNjdkZWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rp
c2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPj0gNDAwKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVk
IHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2Yg
IiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVu
Y2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpLCAn
KScpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCBy
ZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5n
Rm9yQ29uc29sZU1lc3NhZ2UocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSksICcpJyk7CiAgICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwg
bWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJ
ZGVudGlmaWVyKSk7CiAgICAgfQogfQpAQCAtNzksMTQgKzc5LDggQEAgdm9pZCBXZWJDb25zb2xl
QWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFJlc28KICAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJh
bCgiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiKTsKLSAgICBpZiAoIWVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
OiAiKTsKLSAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7Ci0gICAgfQotCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJp
bmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSIsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpID8gIiIgOiAiOiAiLCBlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgMCwgMCwg
bnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4
IGZkYTkyODZhZmYwYmQ5YmExNTAzYmFhNTNlMzdmNWNiYjA4OWM4NDkuLjViMTc3Yzc4MTE3MGMz
NDczZWVmM2FiNDQxZWVhZGViYjk5MjMxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBNaXhlZENvbnRl
bnRDaGVja2VyOjppc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFUKIHN0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29uc3QgRnJhbWUmIGZyYW1lLCBib29s
IGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwmIHRhcmdldCkKIHsKICAg
ICBjb25zdCBjaGFyKiBlcnJvclN0cmluZyA9IGFsbG93ZWQgPyAiIHdhcyBhbGxvd2VkIHRvICIg
OiAiIHdhcyBub3QgYWxsb3dlZCB0byAiOwotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygoYWxsb3dlZCA/IFN0cmluZygpIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIGZy
YW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCBl
cnJvclN0cmluZywgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKChhbGxvd2VkID8gU3RyaW5nKCkgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBh
Z2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCksIGVycm9yU3RyaW5nLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIs
IHRhcmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIGZy
YW1lLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQogCkBAIC0xMTEsNyArMTExLDcg
QEAgdm9pZCBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQoRnJh
bWUmIGZyYW1lLCBTZWN1cml0eU9yaWdpbiYKICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KHNlY3Vy
aXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgbWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGNvbnRhaW5zIGEgZm9ybSB3aGljaCB0YXJn
ZXRzIGFuIGluc2VjdXJlIFVSTCAiLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAi
LCBmcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
KSwgIiBjb250YWlucyBhIGZvcm0gd2hpY2ggdGFyZ2V0cyBhbiBpbnNlY3VyZSBVUkwgIiwgdXJs
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAKICAgICBmcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCAwMzNhOWQ0NjVhNzU0ZGY5ZTM5
ZjZmNjcwMmJmY2Y4YWIzMmQ5MGZkLi41M2VmNGMwMTcxMDcwNmQyYWI0OGEzYzllMjE1NTZhMjRk
YjBiYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5o
PgogCkBAIC0xMjksMTggKzEyOCwxNSBAQCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpo
YXNIaWdoZXJQcmlvcml0eVRoYW4oY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgIHJl
dHVybiBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEtPnByaW9yaXR5ID4gb3RoZXIubV9hdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLT5wcmlvcml0eTsKIH0KIAotc3RhdGljIFVSTCBhdHRyaWJ1dGlvblJl
cG9ydFVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCitzdGF0
aWMgVVJMIG1ha2VWYWxpZFVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25z
dCBjaGFyKiBwYXRoKQogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoImh0dHBzOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVnaXN0cmFi
bGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbChwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9uUGF0aCk7Ci0KLSAgICBVUkwgdXJsIHsgVVJM
KCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OwotICAgIGlmICh1cmwuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gdXJsOworICAgIFVSTCB2YWxpZFVSTCB7IHsgfSwgbWFrZVN0cmluZygiaHR0cHM6
Ly8iLCBkb21haW4uc3RyaW5nKCksIHBhdGgpIH07CisgICAgcmV0dXJuIHZhbGlkVVJMLmlzVmFs
aWQoKSA/IHZhbGlkVVJMIDogVVJMIHsgfTsKK30KIAotICAgIHJldHVybiBVUkwoKTsKK3N0YXRp
YyBVUkwgYXR0cmlidXRpb25SZXBvcnRVUkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bikKK3sKKyAgICByZXR1cm4gbWFrZVZhbGlkVVJMKGRvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRSZXBvcnRBdHRyaWJ1dGlvblBhdGgpOwogfQogCiBVUkwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmF0dHJpYnV0aW9uUmVwb3J0U291cmNlVVJMKCkgY29uc3QKQEAgLTIwNywzMCArMjAz
LDEyIEBAIFVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKSBj
b25zdAogICAgIGlmICghbV9lcGhlbWVyYWxTb3VyY2VOb25jZSB8fCAhbV9lcGhlbWVyYWxTb3Vy
Y2VOb25jZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJodHRwczovLyIpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmco
KSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9r
ZW5TaWduYXR1cmVQYXRoKTsKLQotICAgIFVSTCB1cmwgeyBVUkwoKSwgYnVpbGRlci50b1N0cmlu
ZygpIH07Ci0gICAgaWYgKHVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB1cmw7Ci0KLSAg
ICByZXR1cm4gVVJMKCk7CisgICAgcmV0dXJuIG1ha2VWYWxpZFVSTChtX3NvdXJjZVNpdGUucmVn
aXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVQYXRo
KTsKIH0KIAogVVJMIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCgp
IGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3NvdXJjZVNpdGUucmVn
aXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbChwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0aCk7Ci0KLSAgICBVUkwgdXJsIHsg
VVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OwotICAgIGlmICh1cmwuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gdXJsOwotCi0gICAgcmV0dXJuIFVSTCgpOworICAgIHJldHVybiBtYWtlVmFs
aWRVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFRva2VuUHVibGljS2V5UGF0aCk7CiB9CiAKIFJlZjxKU09OOjpPYmplY3Q+IFByaXZhdGVD
bGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmluZGV4IDg3YjdlM2Qw
NGYyMjg3NDVmYjcwOGIxYTE2YWQ3MzNiYTAyZTlhYjAuLjRmMjI4ODMzNjNhMGNlMzVhZjUyYTRi
NWI3ZmUxZjAxZjM1ZTM3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM1MSwxMCArMzUxLDcgQEAgYm9vbCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBtb2Rl
bFZlcnNpb24KIAogc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIGZsYWcpCiB7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobGFiZWwpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChmbGFnID8gIlllcyIg
OiAiTm8iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAiOiAiLCBmbGFnID8g
IlllcyIgOiAiTm8iKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kSGFzaFNldChTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYgaGFzaFNldCkKQEAgLTM2MiwxNSArMzU5LDkgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kSGFzaFNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBIYXMKICAgICBpZiAoaGFzaFNldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChsYWJlbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6XG4iKTsKLSAgICAKLSAgICBm
b3IgKGF1dG8mIGVudHJ5IDogaGFzaFNldCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAgICAgICAgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVudHJ5LnN0cmluZygpKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5k
KCIgICAgIiwgbGFiZWwsICI6XG4iKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogaGFzaFNldCkK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAgICAgIiwgZW50cnkuc3RyaW5nKCksICdcbicp
OwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKQEAgLTM3OSwxNSArMzcwLDkg
QEAgc3RhdGljIHZvaWQgYXBwZW5kSGFzaFNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXMKICAgICBpZiAoaGFzaFNldC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAiKTsK
LSAgICBidWlsZGVyLmFwcGVuZChsYWJlbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
XG4iKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogaGFzaFNldCkgewotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICAgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGVudHJ5KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgfQorICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgICAgIiwgbGFiZWwsICI6XG4iKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
aGFzaFNldCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAgICAgIiwgZW50cnksICdcbicp
OwogfQogCiBzdGF0aWMgQVNDSUlMaXRlcmFsIG5hdmlnYXRvckFQSUVudW1Ub1N0cmluZyhSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkgbmF2aWdhdG9yRW51bSkKQEAgLTQzOCwy
MyArNDIzLDE4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hdmlnYXRvckFQSU9wdGlvblNldChTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBPcHRpb25TZXQ8CiB7CiAgICAgaWYgKG9wdGlvblNl
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAgICBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZDpcbiIpOwotICAgIGZvciAoYXV0byBuYXZp
Z2F0b3JBUEkgOiBvcHRpb25TZXQpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
ICAgICAgICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChuYXZpZ2F0b3JBUElFbnVtVG9TdHJp
bmcobmF2aWdhdG9yQVBJKS5jaGFyYWN0ZXJzKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBuYXZpZ2F0b3JGdW5jdGlvbnNB
Y2Nlc3NlZDpcbiIpOworICAgIGZvciAoYXV0byBuYXZpZ2F0b3JBUEkgOiBvcHRpb25TZXQpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgICAgICIsIG5hdmlnYXRvckFQSUVudW1Ub1N0cmlu
ZyhuYXZpZ2F0b3JBUEkpLCAnXG4nKTsKIH0KICAgICAKIHN0YXRpYyB2b2lkIGFwcGVuZFNjcmVl
bkFQSU9wdGlvblNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBPcHRpb25TZXQ8UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJPiYgb3B0aW9uU2V0KQogewogICAgIGlmIChv
cHRpb25TZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgICAgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQ6XG4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiICAgIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkOlxuIik7CiAgICAgZm9yIChhdXRvIHNj
cmVlbkFQSSA6IG9wdGlvblNldCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAg
ICAgICAgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNjcmVlbkFQSUVudW1Ub1N0cmluZyhz
Y3JlZW5BUEkpLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiICAgICAgICAiLCBzY3JlZW5BUElFbnVtVG9TdHJpbmco
c2NyZWVuQVBJKSwgJ1xuJyk7CiAgICAgfQogfQogI2VuZGlmCkBAIC00NjcsMTggKzQ0NywxMiBA
QCBzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oV1RGOjpTZWNvbmRzIGlu
dGVyYWN0aW9uVGltZVNlY29uZHMpCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9T
dHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBkb21haW46ICIsIHJlZ2lzdHJhYmxl
RG9tYWluLnN0cmluZygpLCAnXG4nKTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJh
Y3Rpb24pOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwotICAgIGlmIChoYXNIYWRS
ZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKSkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2l0aGluIDI0
IGhvdXJzIik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0xIik7
CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAiLCBo
YXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUu
c2Vjb25kc1NpbmNlRXBvY2goKSkgPyAid2l0aGluIDI0IGhvdXJzIiA6ICItMSIpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xlYW4oYnVpbGRlciwgImdyYW5kZmF0
aGVyZWQiLCBncmFuZGZhdGhlcmVkKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBh
MTkwZDY5MGM2ZmU2OGMxOTlmM2Q1YTExZTA1MTUzN2MzMzUxYTYyLi4xNTgxNWQzNTQ0ZGVhNmUy
ZjE4MzFmMTk2MzFmZmQ0YjNiMzdhYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wCiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICAv
LyBDcmVhdGUgYSB1bmlxdWUgbW9kZSBqdXN0IGZvciB0aGlzIHN5bmNocm9ub3VzIHJlc291cmNl
IGxvYWQuCi0gICAgU3RyaW5nIG1vZGUgPSBtYWtlU3RyaW5nKCJsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5TW9kZSIsIHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7CisgICAgYXV0byBtb2RlID0g
bWFrZVN0cmluZygibG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUiLCBydW5Mb29wLmNyZWF0
ZVVuaXF1ZUlkKCkpOwogCiAgICAgYXV0byBsb2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIGNsaWVudCwgbW9kZSwgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1
bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IGQxNDU1YjU0ZGEwZDliZjMyNTlhMDg3OTJkMDhiOWE3YjgzYTA4ODYu
LmY4MjJhN2NiYjZkMjJlZjVjYzAyMzUyMmMwZGE0NWE5OTk5MDY1MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01X
aW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
YwogICAgICAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdpbiBub3cgc2luY2UgdGhlIHRhcmdl
dCBkb2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB0aW1lciB3YXMgc2NoZWR1bGVk
LgogICAgICAgICAgICAgaWYgKCF0YXJnZXRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHBhZ2VDb25zb2xlID0gY29uc29sZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiLCB0YXJnZXRP
cmlnaW4tPnRvU3RyaW5nKCksICIuIFJlY2lwaWVudCBoYXMgb3JpZ2luICIsIGRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgIi5cbiIpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvICIs
IHRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKSwgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiwgZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCAiLlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdGFja1RyYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNv
bnNvbGUtPmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIG1lc3NhZ2UsICpzdGFja1RyYWNlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzY2E4NjdhNjJmYjljNDFhYzYxMGU2NmMzNzg2NTJjOTYy
MDZmZjlkLi4yNGVhZWIzZjI1Yzg0MzhjYmNlNzdmYmQ3MWY3NzZiNGE0YWJiZmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMzc3LDI4ICszNzcsMTkgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
PiB3b3JkUmVnRXhwKCJcXHciKTsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0
dGVybi5hcHBlbmQoJygnKTsKLSAgICB1bnNpZ25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNp
emUoKTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtTGFiZWxz
OyBpKyspIHsKLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbGFiZWxzW2ldOworICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7IGkgPCBudW1MYWJlbHM7IGkr
KykgeworICAgICAgICBhdXRvJiBsYWJlbCA9IGxhYmVsc1tpXTsKIAotICAgICAgICBib29sIHN0
YXJ0c1dpdGhXb3JkQ2hhciA9IGZhbHNlOwotICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXIg
PSBmYWxzZTsKKyAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwor
ICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAgICBpZiAo
bGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRS
ZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAg
ICAgZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3Ry
aW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBzdGFydHNXaXRo
V29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAs
IDEpKSA+PSAwOworICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4
cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0g
MDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgcGF0dGVybi5hcHBl
bmQoJ3wnKTsKICAgICAgICAgLy8gU2VhcmNoIGZvciB3b3JkIGJvdW5kYXJpZXMgb25seSBpZiBs
YWJlbCBzdGFydHMvZW5kcyB3aXRoICJ3b3JkIGNoYXJhY3RlcnMiLgotICAgICAgICAvLyBJZiB3
ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRhcmllcywgdGhpcyB3b3VsZG4ndCB3b3Jr
IGZvciBsYW5ndWFnZXMKLSAgICAgICAgLy8gc3VjaCBhcyBKYXBhbmVzZS4KLSAgICAgICAgaWYg
KHN0YXJ0c1dpdGhXb3JkQ2hhcikKLSAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgi
XFxiIik7Ci0gICAgICAgIHBhdHRlcm4uYXBwZW5kKGxhYmVsKTsKLSAgICAgICAgaWYgKGVuZHNX
aXRoV29yZENoYXIpCi0gICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwor
ICAgICAgICAvLyBJZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRhcmllcywgdGhp
cyB3b3VsZG4ndCB3b3JrIGZvciBsYW5ndWFnZXMgc3VjaCBhcyBKYXBhbmVzZS4KKyAgICAgICAg
cGF0dGVybi5hcHBlbmQoaSA/ICJ8IiA6ICIiLCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA/ICJc
XGIiIDogIiIsIGxhYmVsLCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPyAiXFxiIiA6ICIiKTsKICAg
ICB9CiAgICAgcGF0dGVybi5hcHBlbmQoJyknKTsKICAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNl
bnNpdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNjU4M2MzNjlmZGExYzA2
ZDk0Mzc1Y2NkYzIzZmM4YjcyMjMwYmY1YS4uM2ZmM2M2OTlmZWYzZjQ2Y2U0ZmM3ZTk1NmUzM2Fk
MzYwYWZhNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTQ1MSwxNCArMTQ1
MSwxMSBAQCBib29sIEZyYW1lVmlldzo6dXNlc01vY2tTY3JvbGxBbmltYXRvcigpIGNvbnN0CiAK
IHZvaWQgRnJhbWVWaWV3Ojpsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgY29uc3QKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgYXV0byBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiTWFpbiIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJGcmFtZVZpZXc6ICIsIG1lc3Nh
Z2UpOwotICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhl
ciwgTWVzc2FnZUxldmVsOjpEZWJ1ZywgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6
RGVidWcsCisgICAgICAgIG1ha2VTdHJpbmcoZnJhbWUoKS5pc01haW5GcmFtZSgpID8gIk1haW4i
IDogIiIsICJGcmFtZVZpZXc6ICIsIG1lc3NhZ2UpKTsKIH0KIAogU3RyaW5nIEZyYW1lVmlldzo6
ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCmluZGV4IDNmNmVkODRkMDZkNDVjM2M3MDA3OGQ3Nzc4MDc2NTZkZDQ1OGRhYTkuLjkxZTg4
MjQwZmNkNjk3YWVjODRhNGE1YWQxNTRlMzM0ODgwYmU0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xMzAsMTEgKzEzMCw4IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRUYWcoU3RyaW5nQnVp
bGRlciYKICAgICBpZiAoIXNob3VsZElnbm9yZUVsZW1lbnQoZWxlbWVudCkpCiAgICAgICAgIE1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyhvdXQsIGVsZW1lbnQsIG5hbWVzcGFjZXMp
OwogCi0gICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRUYWcpKSB7Ci0g
ICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFyc2V0PVwiIik7Ci0gICAgICAgIG91
dC5hcHBlbmQobV9kb2N1bWVudC5jaGFyc2V0KCkpOwotICAgICAgICBvdXQuYXBwZW5kTGl0ZXJh
bCgiXCI+Iik7Ci0gICAgfQorICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpo
ZWFkVGFnKSkKKyAgICAgICAgb3V0LmFwcGVuZCgiPG1ldGEgY2hhcnNldD1cIiIsIG1fZG9jdW1l
bnQuY2hhcnNldCgpLCAiXCI+Iik7CiAKICAgICAvLyBGSVhNRTogRm9yIG9iamVjdCAocGx1Z2lu
cykgdGFncyBhbmQgdmlkZW8gdGFnIHdlIGNvdWxkIHJlcGxhY2UgdGhlbSBieSBhbiBpbWFnZSBv
ZiB0aGVpciBjdXJyZW50IGNvbnRlbnRzLgogfQpAQCAtMjQyLDcgKzIzOSw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCwgY29uc3QgVVJMCiAgICAgICAgIGlmICghaXRlbVRleHQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBjc3NUZXh0LmFwcGVuZChpdGVtVGV4dCk7CiAgICAgICAgICAgICBpZiAoaSA8IHN0
eWxlU2hlZXQtPmxlbmd0aCgpIC0gMSkKLSAgICAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZExp
dGVyYWwoIlxuXG4iKTsKKyAgICAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZCgiXG5cbiIpOwog
ICAgICAgICB9CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxlU2hlZXQtPm93bmVy
RG9jdW1lbnQoKTsKICAgICAgICAgLy8gU29tZSBydWxlcyBoYXZlIHJlc291cmNlcyBhc3NvY2lh
dGVkIHdpdGggdGhlbSB0aGF0IHdlIG5lZWQgdG8gcmV0cmlldmUuCkBAIC0zMTgsMTEgKzMxNSwx
MCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMo
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZQogCiBVUkwgUGFnZVNlcmlhbGl6ZXI6OnVybEZv
ckJsYW5rRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIGF1dG8gaXRlciA9IG1fYmxhbmtGcmFt
ZVVSTHMuZmluZChmcmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotICAgIFN0cmluZyB1cmwgPSBtYWtlU3Ry
aW5nKCJ3eWNpd3lnOi8vZnJhbWUvIiwgbV9ibGFua0ZyYW1lQ291bnRlcisrKTsKLSAgICBVUkwg
ZmFrZVVSTCh7IH0sIHVybCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fYmxhbmtGcmFtZVVSTHMu
ZmluZChmcmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fYmxhbmtGcmFtZVVSTHMuZW5kKCkp
CisgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CisgICAgVVJMIGZha2VVUkwgeyB7IH0s
IG1ha2VTdHJpbmcoInd5Y2l3eWc6Ly9mcmFtZS8iLCBtX2JsYW5rRnJhbWVDb3VudGVyKyspIH07
CiAgICAgbV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZha2VVUkwpOwogICAgIHJldHVybiBm
YWtlVVJMOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuY3BwCmluZGV4IGY5ZDkxMTk4NWEyMDY0ZGZkYzQ4MDJjZjEyZjgxZjBkYWZmOGVkOGQu
LjRhNTBjZjgyMjJmNGU0NTI4YTBlYzA0MTI1YWNmNjg2NjE2Mjk3MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAKQEAgLTI2LDMwICsy
NiwyMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudC5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ6OnN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzU3RyaW5nKE9wdGlvblNldDxTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbj4gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKQorU3RyaW5nIFBlcmZvcm1h
bmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNTdHJpbmcoT3B0
aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiByZWFzb25zKQogewotICAgIGlmIChz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMuaXNFbXB0eSgpKQorICAgIGlmIChyZWFzb25zLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdHJpbmdCdWls
ZGVyIHJlYXNvbnM7Ci0KLSAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb246OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgcmVh
c29ucy5hcHBlbmRMaXRlcmFsKCJmb3JjZWQsIik7Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNTbG93UmVwYWludE9i
amVjdHMpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJhbCgic2xvdy1yZXBhaW50IG9iamVj
dHMsIik7Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29uOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBw
b3J0aW5nRml4ZWRMYXllcnMpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJhbCgidmlld3Bv
cnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc05vbkxheWVyVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJhbCgibm9uLWxh
eWVyIHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsIik7Ci0gICAgaWYgKHN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpJc0ltYWdlRG9j
dW1lbnQpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJhbCgiaW1hZ2UgZG9jdW1lbnQsIik7
CisgICAgYXV0byBzdHJpbmcgPSBtYWtlU3RyaW5nKHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb246OkZvcmNlZE9uTWFpblRocmVhZCkgPyAiZm9yY2VkLCIgOiAiIiwK
KyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFz
U2xvd1JlcGFpbnRPYmplY3RzKSA/ICJzbG93LXJlcGFpbnQgb2JqZWN0cywiIDogIiIsCisgICAg
ICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykgPyAidmll
d3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiIDogIiIsCisgICAgICAgIHJlYXNvbnMuY29udGFp
bnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc05vbkxheWVyVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMpID8gIm5vbi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCIg
OiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bjo6SXNJbWFnZURvY3VtZW50KSA/ICJpbWFnZSBkb2N1bWVudCwiIDogIiIpOwogCiAgICAgLy8g
U3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgotICAgIHJldHVybiByZWFzb25zLnRvU3RyaW5nKCku
bGVmdChyZWFzb25zLmxlbmd0aCgpIC0gMSk7CisgICAgcmV0dXJuIHN0cmluZy5sZWZ0KHN0cmlu
Zy5sZW5ndGgoKSAtIDEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0K
aW5kZXggNTA5ZjIzYmFjZTFlZTVmYTYxN2Q4NWNiZGExNTY4ZDk5MzhiODU4ZS4uZTUxOWJlN2E4
NGIwMTQ1NGI0NjNmNmRjMzU4NDM3MDA3MjhmYzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtRHJhdyhDR0NvbnRl
eHRSZWYgY29udGV4dCkKICAgICAgICAgc2l6ZV90IHJlY2xhaW1hYmxlID0gY2F0ZWdvcnkucmVj
bGFpbWFibGVTaXplLmxhc3QoKTsKICAgICAgICAgc2l6ZV90IGV4dGVybmFsID0gY2F0ZWdvcnku
ZXh0ZXJuYWxTaXplLmxhc3QoKTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBsYWJlbCA9IG1h
a2VTdHJpbmcocGFkKCcgJywgMTEsIGNhdGVnb3J5Lm5hbWUpLCAiOiAiLCBmb3JtYXRCeXRlTnVt
YmVyKGRpcnR5KSk7CisgICAgICAgIGF1dG8gbGFiZWwgPSBtYWtlU3RyaW5nKHBhZCgnICcsIDEx
LCBjYXRlZ29yeS5uYW1lKSwgIjogIiwgZm9ybWF0Qnl0ZU51bWJlcihkaXJ0eSkpOwogICAgICAg
ICBpZiAoZXh0ZXJuYWwpCiAgICAgICAgICAgICBsYWJlbCA9IGxhYmVsICsgbWFrZVN0cmluZygi
ICsgIiwgZm9ybWF0Qnl0ZU51bWJlcihleHRlcm5hbCkpOwogICAgICAgICBpZiAocmVjbGFpbWFi
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAppbmRleCBjZjBiYTgwMWZmMjVlMjNjNzhjZTFjMDAxODcxOTNmZjA5Y2RhYWIyLi5mNDFh
YjBlNDI0MzFjZTIxZDM4M2NjYzc1ZmE3ZTFiOGI3Mjc0ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTY4LDI2ICs2OCwx
MSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZl
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciog
c3ViamVjdCA9ICJpdCIpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgaWYgKHZp
b2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIltSZXBvcnQgT25seV0gIik7Ci0gICAgcmVzdWx0LmFwcGVu
ZChwcmVmaXgpOwotICAgIGlmICghYmxvY2tlZFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrZWRVUkwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgIH0KLSAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiIGJlY2F1c2UgIik7Ci0gICAgcmVzdWx0LmFwcGVuZChzdWJqZWN0KTsKLSAgICBpZiAo
dmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIiBhcHBlYXJzIGluIG5laXRoZXIgdGhlICIpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3RpdmUgb2YgdGhlIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSA/ICJb
UmVwb3J0IE9ubHldICIgOiAiIiwKKyAgICAgICAgcHJlZml4LCBibG9ja2VkVVJMLmlzRW1wdHko
KSA/ICIiIDogIiAiLCBibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiIGJlY2F1c2UgIiwgc3ViamVjdCwKKyAgICAgICAgdmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZh
dWx0U3JjKCkgPyAiIGFwcGVhcnMgaW4gbmVpdGhlciB0aGUgIiA6ICIgZG9lcyBub3QgYXBwZWFy
IGluIHRoZSAiLAorICAgICAgICBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwKKyAgICAgICAg
dmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkgPyAiIGRpcmVjdGl2ZSBub3IgdGhlIGRl
ZmF1bHQtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIiA6ICIg
ZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKTsKIH0KIAogQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpDb250ZW50U2VjdXJpdHlQb2xpY3koVVJMJiYgcHJvdGVjdGVkVVJM
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQqIGNsaWVudCkKQEAgLTEzOCwyMiArMTIzLDE0
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpjb3B5VXBncmFkZUluc2VjdXJlUmVxdWVz
dFN0YXRlRnJvbShjb25zdCBDb250ZW50U2VjCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dSdW5uaW5nT3JEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50KGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGJvb2wgYWxsb3cgPSB0cnVlOwotICAgIGJvb2wgaXNSZXBvcnRPbmx5ID0gZmFsc2U7
CiAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKSB7CiAgICAgICAgIGlmICghcG9s
aWN5LT5oYXNCbG9ja0FsbE1peGVkQ29udGVudERpcmVjdGl2ZSgpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgaXNSZXBvcnRPbmx5ID0gcG9saWN5LT5pc1JlcG9ydE9ubHkoKTsK
LQotICAgICAgICBTdHJpbmdCdWlsZGVyIGNvbnNvbGVNZXNzYWdlOwotICAgICAgICBpZiAoaXNS
ZXBvcnRPbmx5KQotICAgICAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiW1Jl
cG9ydCBPbmx5XSAiKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kKCJCbG9ja2VkIG1p
eGVkIGNvbnRlbnQgIik7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVuZCh1cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBl
bmRMaXRlcmFsKCIgYmVjYXVzZSAiKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UuYXBwZW5kKCIn
YmxvY2stYWxsLW1peGVkLWNvbnRlbnQnIGFwcGVhcnMgaW4gdGhlIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5LiIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmJsb2NrQWxsTWl4ZWRDb250ZW50LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6YmxvY2tBbGxNaXhlZENvbnRlbnQsICpwb2xpY3ksIHVybCwgY29u
c29sZU1lc3NhZ2UudG9TdHJpbmcoKSk7Ci0KKyAgICAgICAgYm9vbCBpc1JlcG9ydE9ubHkgPSBw
b2xpY3ktPmlzUmVwb3J0T25seSgpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KGlzUmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHldICIgOiAiIiwgIkJsb2NrZWQgbWl4ZWQgY29u
dGVudCAiLAorICAgICAgICAgICAgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiIGJlY2F1c2UgJ2Jsb2NrLWFsbC1taXhlZC1jb250ZW50JyBhcHBlYXJzIGluIHRoZSBDb250
ZW50IFNlY3VyaXR5IFBvbGljeS4iKTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpibG9ja0FsbE1peGVkQ29udGVudCwKKyAgICAg
ICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpibG9ja0FsbE1peGVk
Q29udGVudCwgKnBvbGljeSwgdXJsLCBtZXNzYWdlKTsKICAgICAgICAgaWYgKCFpc1JlcG9ydE9u
bHkpCiAgICAgICAgICAgICBhbGxvdyA9IGZhbHNlOwogICAgIH0KQEAgLTgzOSwzMCArODE2LDI1
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkRGlyZWN0aXZlSW5I
VFRQRXF1aXZNZXRhKGNvbnN0IFN0cmluZyYKIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydEludmFsaWREaXJlY3RpdmVWYWx1ZUNoYXJhY3Rlcihjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJUaGUgdmFsdWUgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRp
cmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0
ZXI6ICciLCB2YWx1ZSwgIicuIE5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgb3V0c2lkZSBBU0NJ
SSAweDIxLTB4N0UgbXVzdCBiZSBwZXJjZW50LWVuY29kZWQsIGFzIGRlc2NyaWJlZCBpbiBSRkMg
Mzk4Niwgc2VjdGlvbiAyLjE6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2Vj
dGlvbi0yLjEuIik7Ci0gICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOworICAgIGxvZ1RvQ29uc29s
ZShtYWtlU3RyaW5nKCJUaGUgdmFsdWUgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXI6
ICciLCB2YWx1ZSwgIicuIE5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgb3V0c2lkZSBBU0NJSSAw
eDIxLTB4N0UgbXVzdCBiZSBwZXJjZW50LWVuY29kZWQsIGFzIGRlc2NyaWJlZCBpbiBSRkMgMzk4
Niwgc2VjdGlvbiAyLjE6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlv
bi0yLjEuIikpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxp
ZFBhdGhDaGFyYWN0ZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVOYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBjaGFyIGludmFsaWRDaGFyKSBjb25zdAogewogICAgIEFTU0VSVChpbnZh
bGlkQ2hhciA9PSAnIycgfHwgaW52YWxpZENoYXIgPT0gJz8nKTsKIAotICAgIFN0cmluZyBpZ25v
cmluZzsKKyAgICBjb25zdCBjaGFyKiBpZ25vcmluZzsKICAgICBpZiAoaW52YWxpZENoYXIgPT0g
Jz8nKQogICAgICAgICBpZ25vcmluZyA9ICJUaGUgcXVlcnkgY29tcG9uZW50LCBpbmNsdWRpbmcg
dGhlICc/Jywgd2lsbCBiZSBpZ25vcmVkLiI7CiAgICAgZWxzZQogICAgICAgICBpZ25vcmluZyA9
ICJUaGUgZnJhZ21lbnQgaWRlbnRpZmllciwgaW5jbHVkaW5nIHRoZSAnIycsIHdpbGwgYmUgaWdu
b3JlZC4iOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgc291cmNlIGxp
c3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFt
ZSwgIicgY29udGFpbnMgYSBzb3VyY2Ugd2l0aCBhbiBpbnZhbGlkIHBhdGg6ICciLCB2YWx1ZSwg
IicuICIsIGlnbm9yaW5nKTsKLSAgICBsb2dUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgbG9nVG9D
b25zb2xlKG1ha2VTdHJpbmcoIlRoZSBzb3VyY2UgbGlzdCBmb3IgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgZGlyZWN0aXZlICciLCBkaXJlY3RpdmVOYW1lLCAiJyBjb250YWlucyBhIHNvdXJjZSB3
aXRoIGFuIGludmFsaWQgcGF0aDogJyIsIHZhbHVlLCAiJy4gIiwgaWdub3JpbmcpKTsKIH0KIAog
dm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWRTb3VyY2VFeHByZXNzaW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIGNvbnN0
CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgc291cmNlIGxpc3QgZm9y
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicg
Y29udGFpbnMgYW4gaW52YWxpZCBzb3VyY2U6ICciLCBzb3VyY2UsICInLiBJdCB3aWxsIGJlIGln
bm9yZWQuIik7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwg
Iidub25lJyIpKQotICAgICAgICBtZXNzYWdlID0gbWFrZVN0cmluZyhtZXNzYWdlLCAiIE5vdGUg
dGhhdCAnbm9uZScgaGFzIG5vIGVmZmVjdCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZXhwcmVzc2lv
biBpbiB0aGUgc291cmNlIGxpc3QuIik7Ci0gICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOworICAg
IGxvZ1RvQ29uc29sZShtYWtlU3RyaW5nKCJUaGUgc291cmNlIGxpc3QgZm9yIENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYW4g
aW52YWxpZCBzb3VyY2U6ICciLCBzb3VyY2UsICInLiBJdCB3aWxsIGJlIGlnbm9yZWQuIiwKKyAg
ICAgICAgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLCAiJ25vbmUnIikgPyAi
IE5vdGUgdGhhdCAnbm9uZScgaGFzIG5vIGVmZmVjdCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZXhw
cmVzc2lvbiBpbiB0aGUgc291cmNlIGxpc3QuIiA6ICIiKSk7CiB9CiAKIHZvaWQgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpyZXBvcnRNaXNzaW5nUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYgcG9saWN5
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBiY2Q3MDZjOTY0ZjlmZGIx
Njk3NDc5ZGY5OWYzODVmZmYyYzBjZjUxLi5kN2I3MDY2ZDIxNGRhOTE3YTllNDczNDg0OTEwNDVi
ZDk3NWNhODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTI4LDEwICsxMjgs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4g
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aQogICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRl
ciwgZnJvbSk7CiAKICAgICBpZiAoIWNoZWNrRXZhbChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJl
Y3RpdmUoZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpKSkgewotICAgICAgICBTdHJpbmcg
ZXZhbERpc2FibGVkTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXZhbHVhdGUgYSBz
dHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNhdXNlICd1bnNhZmUtZXZhbCcgaXMgbm90IGFuIGFsbG93
ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogXCIiLCBkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0
aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpLT50ZXh0KCksICJcIi5cbiIpOwotICAgICAgICBkaXJl
Y3RpdmVzLT5zZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoZXZhbERpc2FibGVkTWVzc2FnZSk7
Ci0gICAgICAgIFN0cmluZyB3ZWJBc3NlbWJseURpc2FibGVkTWVzc2FnZSA9IG1ha2VTdHJpbmco
IlJlZnVzZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHkgb2JqZWN0IGJlY2F1c2UgJ3Vuc2FmZS1l
dmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIsIGRpcmVjdGl2ZXMtPm9wZXJh
dGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSktPnRleHQoKSwgIlwi
LlxuIik7Ci0gICAgICAgIGRpcmVjdGl2ZXMtPnNldFdlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1l
c3NhZ2Uod2ViQXNzZW1ibHlEaXNhYmxlZE1lc3NhZ2UpOworICAgICAgICBkaXJlY3RpdmVzLT5z
ZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UobWFrZVN0cmluZygiUmVmdXNlZCB0byBldmFsdWF0
ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4g
YWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIsIGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShk
aXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSktPnRleHQoKSwgIlwiLlxuIikpOworICAgICAg
ICBkaXJlY3RpdmVzLT5zZXRXZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlKG1ha2VTdHJp
bmcoIlJlZnVzZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHkgb2JqZWN0IGJlY2F1c2UgJ3Vuc2Fm
ZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xsb3dp
bmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIsIGRpcmVjdGl2ZXMtPm9w
ZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSktPnRleHQoKSwg
IlwiLlxuIikpOwogICAgIH0KIAogICAgIGlmIChkaXJlY3RpdmVzLT5pc1JlcG9ydE9ubHkoKSAm
JiBkaXJlY3RpdmVzLT5yZXBvcnRVUklzKCkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDli
NjI5ZDBlNTkzMTg5YmQ5M2Q1OWZlNzMwNjdhODRlOTc3NTMzODAuLjE4NzJlNDJlZGZlZWUxODAz
MDA3ZTlkZWRlNzgwYmE4NzhmMWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zODMsMjkgKzM4MiwxMyBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNj
cm9sbGluZ1RyZWVBc1RleHQoU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpbwogCiBTdHJp
bmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dChPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb24+IHJlYXNvbnMpCiB7Ci0gICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotCi0gICAgaWYgKHJlYXNvbnMgJiBTeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbjo6Rm9yY2VkT25NYWluVGhyZWFkKQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIik7Ci0KLSAgICBp
ZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNTbG93UmVwYWludE9i
amVjdHMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSGFzIHNsb3cgcmVw
YWludCBvYmplY3RzLCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb246Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdG
aXhlZExheWVycykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJIYXMgdmll
d3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJz
LCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhh
c05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiSGFzIG5vbi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmpl
Y3RzLCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246
OklzSW1hZ2VEb2N1bWVudCkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJJ
cyBpbWFnZSBkb2N1bWVudCwgIik7Ci0KLSAgICBpZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uOjpEZXNjZW5kYW50U2Nyb2xsZXJzSGF2ZVN5bmNocm9ub3VzU2Nyb2xsaW5n
KQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkhhcyBzbG93IHJlcGFpbnQg
ZGVzY2VuZGFudCBzY3JvbGxlcnMsICIpOwotCi0gICAgaWYgKHN0cmluZ0J1aWxkZXIubGVuZ3Ro
KCkpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuc2hyaW5rKHN0cmluZ0J1aWxkZXIubGVuZ3RoKCkg
LSAyKTsKLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAgIGF1dG8gc3Ry
aW5nID0gbWFrZVN0cmluZyhyZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29uOjpGb3JjZWRPbk1haW5UaHJlYWQpID8gIkZvcmNlZCBvbiBtYWluIHRocmVhZCwgIiA6ICIi
LAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpI
YXNTbG93UmVwYWludE9iamVjdHMpID8gIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIiA6ICIi
LAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpI
YXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMp
ID8gIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3VwcG9ydGluZyBm
aXhlZCBsYXllcnMsICIgOiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbjo6SGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykg
PyAiSGFzIG5vbi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCAiIDogIiIsCisg
ICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OklzSW1h
Z2VEb2N1bWVudCkgPyAiSXMgaW1hZ2UgZG9jdW1lbnQsICIgOiAiIiwKKyAgICAgICAgcmVhc29u
cy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6RGVzY2VuZGFudFNjcm9sbGVy
c0hhdmVTeW5jaHJvbm91c1Njcm9sbGluZykgPyAiSGFzIHNsb3cgcmVwYWludCBkZXNjZW5kYW50
IHNjcm9sbGVycywgIiA6ICIiKTsKKyAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IHN0cmlu
ZyA6IHN0cmluZy5sZWZ0KHN0cmluZy5sZW5ndGgoKSAtIDIpOwogfQogCiBTdHJpbmcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDVjMWJiZjRlMTVlYThkZjk0NjA4
YjBjYzI2OWExNzcxMDQ4NDFiNDYuLjllYzAxNzJhMjFhOThkYzgwN2E0YzE2Nzc1N2U3MzVhYmUy
MzU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0xMDA5LDEyICsxMDA5
LDExIEBAIFN0cmluZyBEZWNpbWFsOjp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIwLiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiMC4iKTsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGFkanVzdGVkRXhwb25lbnQgKyAxOyBpIDwgMDsgKytpKQogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZChkaWdpdHMp
OwotCiAgICAgfSBlbHNlIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlnaXRzWzBdKTsKICAg
ICAgICAgd2hpbGUgKGNvZWZmaWNpZW50TGVuZ3RoID49IDIgJiYgZGlnaXRzW2NvZWZmaWNpZW50
TGVuZ3RoIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggYmFlYjE0YmRmNDE3MTNlNGQ4YWYxYjc3
OTVkZjYwZTdkZDRhOWNmNi4uYmRhZGE1NGUwYzBhM2U0ZmFlMGVkNjFhMTcxMTVhNjA2NjgyMDM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5n
RnVuY3Rpb24uY3BwCkBAIC0xNDUsMTggKzE0NSwxMiBAQCBkb3VibGUgVGltaW5nRnVuY3Rpb246
OnRyYW5zZm9ybVRpbWUoZG91YmxlIGlucHV0VGltZSwgZG91YmxlIGR1cmF0aW9uLCBib29sIGJl
ZgogCiBFeGNlcHRpb25PcjxSZWZQdHI8VGltaW5nRnVuY3Rpb24+PiBUaW1pbmdGdW5jdGlvbjo6
Y3JlYXRlRnJvbUNTU1RleHQoY29uc3QgU3RyaW5nJiBjc3NUZXh0KQogewotICAgIFN0cmluZ0J1
aWxkZXIgY3NzU3RyaW5nOwotICAgIGNzc1N0cmluZy5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3Ry
aW5nKENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pKTsKLSAgICBjc3NTdHJpbmcu
YXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBjc3NTdHJpbmcuYXBwZW5kKGNzc1RleHQpOwotICAg
IGF1dG8gc3R5bGVQcm9wZXJ0aWVzID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7
Ci0gICAgc3R5bGVQcm9wZXJ0aWVzLT5wYXJzZURlY2xhcmF0aW9uKGNzc1N0cmluZy50b1N0cmlu
ZygpLCBDU1NQYXJzZXJDb250ZXh0KEhUTUxTdGFuZGFyZE1vZGUpKTsKLQotICAgIGlmIChhdXRv
IGNzc1ZhbHVlID0gc3R5bGVQcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pKSB7Ci0gICAgICAgIGlmIChhdXRvIHRpbWluZ0Z1
bmN0aW9uID0gY3JlYXRlRnJvbUNTU1ZhbHVlKCpjc3NWYWx1ZS5nZXQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGltaW5nRnVuY3Rpb247CisgICAgYXV0byBwcm9wZXJ0aWVzID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgcHJvcGVydGllcy0+cGFyc2VEZWNsYXJhdGlv
bihtYWtlU3RyaW5nKCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiIsIGNzc1RleHQpLCBDU1NQ
YXJzZXJDb250ZXh0KEhUTUxTdGFuZGFyZE1vZGUpKTsKKyAgICBpZiAoYXV0byB2YWx1ZSA9IHBy
b3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdG
dW5jdGlvbikpIHsKKyAgICAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBjcmVhdGVGcm9tQ1NTVmFs
dWUoKnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZ1bmN0aW9uKTsKICAgICB9
Ci0gICAgCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IDkzODJh
YjM1OGU3NDIyMGQ5OTM2MzYwNzRlZDZjOWFkZGY2NjBhMzguLmZjMWZmZmE5NmE1NGVmOThkOGQy
NDBkZDZhYTU2MTVmMDgxOGRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOSArMTcxLDkgQEAgYm9vbCBIUlRGRWxldmF0
aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50
IGVsZXZhdGkKICAgICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNw
b25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCog
cmlnaHRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hh
bm5lbFJpZ2h0KTsKICNlbHNlCi0gICAgU3RyaW5nIHJlc291cmNlTmFtZSA9IG1ha2VTdHJpbmco
IklSQ18iLCBzdWJqZWN0TmFtZSwgIl9DX1IwMTk1X1QiLCBwYWQoJzAnLCAzLCBhemltdXRoKSwg
Il9QIiwgcGFkKCcwJywgMywgcG9zaXRpdmVFbGV2YXRpb24pKTsKKyAgICBhdXRvIHJlc291cmNl
TmFtZSA9IG1ha2VTdHJpbmcoIklSQ18iLCBzdWJqZWN0TmFtZSwgIl9DX1IwMTk1X1QiLCBwYWQo
JzAnLCAzLCBhemltdXRoKSwgIl9QIiwgcGFkKCcwJywgMywgcG9zaXRpdmVFbGV2YXRpb24pKS51
dGY4KCk7CiAKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGltcHVsc2VSZXNwb25zZShBdWRpb0J1czo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lLnV0ZjgoKS5kYXRhKCksIHNhbXBsZVJh
dGUpKTsKKyAgICBSZWZQdHI8QXVkaW9CdXM+IGltcHVsc2VSZXNwb25zZShBdWRpb0J1czo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lLmRhdGEoKSwgc2FtcGxlUmF0ZSkpOwogCiAg
ICAgQVNTRVJUKGltcHVsc2VSZXNwb25zZS5nZXQoKSk7CiAgICAgaWYgKCFpbXB1bHNlUmVzcG9u
c2UuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJB
Z2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGli
LmNwcAppbmRleCAxNzZlM2M5ODRiY2NkNzExNWEwOTc0NDExNTViYTc0MTc4OTBlNjI5Li5iOTA0
NTI3N2E0ZWU2OWE0Mjc2MWEyODMxMjgyMDBiNjkxZDY4OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKQEAgLTc4LDE2ICs3OCwxNCBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHN0YXRpYyBT
dHJpbmcgYnVpbGRVc2VyQWdlbnRTdHJpbmcoY29uc3QgVXNlckFnZW50UXVpcmtzJiBxdWlya3Mp
CiB7CiAgICAgU3RyaW5nQnVpbGRlciB1YVN0cmluZzsKLSAgICB1YVN0cmluZy5hcHBlbmRMaXRl
cmFsKCJNb3ppbGxhLzUuMCAiKTsKLSAgICB1YVN0cmluZy5hcHBlbmQoJygnKTsKKyAgICB1YVN0
cmluZy5hcHBlbmQoIk1vemlsbGEvNS4wICgiKTsKIAogICAgIGlmIChxdWlya3MuY29udGFpbnMo
VXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRmb3JtKSkKICAgICAgICAgdWFTdHJp
bmcuYXBwZW5kKFVzZXJBZ2VudFF1aXJrczo6c3RyaW5nRm9yUXVpcmsoVXNlckFnZW50UXVpcmtz
OjpOZWVkc01hY2ludG9zaFBsYXRmb3JtKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVhU3RyaW5n
LmFwcGVuZChwbGF0Zm9ybUZvclVBU3RyaW5nKCkpOwotICAgICAgICB1YVN0cmluZy5hcHBlbmRM
aXRlcmFsKCI7ICIpOworICAgICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1Gb3JVQVN0cmlu
ZygpLCAiOyAiKTsKICNpZiBkZWZpbmVkKFVTRVJfQUdFTlRfQlJBTkRJTkcpCi0gICAgICAgIHVh
U3RyaW5nLmFwcGVuZExpdGVyYWwoVVNFUl9BR0VOVF9CUkFORElORyAiOyAiKTsKKyAgICAgICAg
dWFTdHJpbmcuYXBwZW5kKFVTRVJfQUdFTlRfQlJBTkRJTkcgIjsgIik7CiAjZW5kaWYKICAgICAg
ICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkpOwogICAgIH0K
QEAgLTk3LDIxICs5NSwyMCBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkVXNlckFnZW50U3RyaW5nKGNv
bnN0IFVzZXJBZ2VudFF1aXJrcyYgcXVpcmtzKQogICAgICAgICByZXR1cm4gdWFTdHJpbmcudG9T
dHJpbmcoKTsKICAgICB9CiAKLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxlV2Vi
S2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgIik7CisgICAgdWFTdHJpbmcuYXBwZW5k
KCIpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgIik7CiAKICAgICAv
LyBOb3RlIHRoYXQgQ2hyb21lIFVBcyBhZHZlcnRpc2UgKmJvdGgqIENocm9tZS9YIGFuZCBTYWZh
cmkvWCwgYnV0IGl0IGRvZXMKICAgICAvLyBub3QgYWR2ZXJ0aXNlIFZlcnNpb24vWC4KICAgICBp
ZiAocXVpcmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKSkg
ewotICAgICAgICB1YVN0cmluZy5hcHBlbmQoVXNlckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWly
ayhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3NlcikpOwotICAgICAgICB1YVN0cmlu
Zy5hcHBlbmRMaXRlcmFsKCIgIik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChVc2VyQWdlbnRR
dWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2Vy
KSwgJyAnKTsKICAgICAvLyBWZXJzaW9uL1ggaXMgbWFuZGF0b3J5ICpiZWZvcmUqIFNhZmFyaS9Y
IHRvIGJlIGEgdmFsaWQgU2FmYXJpIFVBLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDAzIGZvciBkZXRhaWxzLgogICAgIH0gZWxzZQotICAg
ICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJWZXJzaW9uLzE0LjAgIik7CisgICAgICAgIHVh
U3RyaW5nLmFwcGVuZCgiVmVyc2lvbi8xNC4wICIpOwogCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkg
PT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRl
cmFsKCJNb2JpbGUgIik7Ci0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiU2FmYXJpLzYwNS4x
LjE1Iik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZCgiTW9iaWxlICIpOworICAgIHVhU3RyaW5n
LmFwcGVuZCgiU2FmYXJpLzYwNS4xLjE1Iik7CiAKICAgICByZXR1cm4gdWFTdHJpbmcudG9TdHJp
bmcoKTsKIH0KQEAgLTE2OSw0ICsxNjYsMyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JV
UkwoY29uc3QgVVJMJiB1cmwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IGY3MDNk
MDQ1Yjc4NjZiYTk3ODhhMTc2MjRiOGNjZjY5YjJmN2Y0NjIuLmVmYjE0ZjRmM2Q4YjhkM2QyYzUz
MmNlNmNhNDFmMzUwOWIwOTRlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBSZWY8SW5iYW5kR2VuZXJp
Y0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZh
bHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8Yj4iKTsKKyAgICAgICAg
ICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9
ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFu
VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0
YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8aT4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFydC5h
cHBlbmQoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L2k+IiArIHRhZ0VuZDsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2OSw3ICsxNjks
NyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRl
cmFsKCI8dT4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjx1PiIpOwogICAg
ICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDc4Yzc5Y2Q3ZTg5ZTky
YzI2YzRmZTZjNDdkZTk1N2ZmZDhmZjk2YzQuLjE3OTRjMDY3YjFiYjYwZmU0OWQ0ZThhMzYyMDBk
NzcyYTMzMmU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTY0OSw4ICsxNjQ5LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1p
dFN0YXRlLCBjb25zdCBUcmEKICAgICAgICAgY29uc3RleHByIGF1dG8gd2FzaEJvcmRlckNvbG9y
ID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUoMTAwKTsKICAgICAgICAgCiAgICAgICAg
IG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7Ci0gICAgICAgIFN0cmluZyBuYW1lID0gbWFr
ZVN0cmluZygiVmlzaWJsZSBUaWxlIFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExv
d2VyY2FzZSkpOwotICAgICAgICBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5zZXROYW1lKG5hbWUp
OworICAgICAgICBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5zZXROYW1lKG1ha2VTdHJpbmcoIlZp
c2libGUgVGlsZSBXYXNoIExheWVyIDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX3Zpc2libGVUaWxlV2FzaExheWVyLT5wbGF0Zm9ybUxheWVyKCkpLCBMb3dlcmNhc2UpKSk7
CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQzRCgwLCAwLCAwKSk7CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldEJvcmRl
ckNvbG9yKHdhc2hCb3JkZXJDb2xvcik7CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIt
PnNldEJvcmRlcldpZHRoKDgpOwpAQCAtMzM4Nyw3ICszMzg2LDcgQEAgYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWwKICAgICBmb3IgKGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXggPSAwOyBp
bnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXggPCBudW1BbmltYXRlZFByb3BlcnRpZXM7ICsraW50
ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSB7CiAgICAgICAgIGJvb2wgdmFsdWVzT0s7CiAgICAg
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKLSAgICAgICAgU3Ry
aW5nIGtleVBhdGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZpbHRlcl8iLCBhbmltYXRpb25JbmRl
eCwgJy4nLCBQbGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmls
dGVyT3AsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkpOworICAgICAgICBhdXRvIGtleVBh
dGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZpbHRlcl8iLCBhbmltYXRpb25JbmRleCwgJy4nLCBQ
bGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRGaWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyT3AsIGlu
dGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzS2V5
ZnJhbWUodmFsdWVMaXN0KSkgewogICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlm
cmFtZUFuaW1hdGlvbihhbmltYXRpb24sIGtleVBhdGgsIGZhbHNlLCBrZXlmcmFtZXNTaG91bGRV
c2VBbmltYXRpb25XaWRlVGltaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDg0MjdmOWNi
YjQyZDRjN2ExNzU3Y2EwMWNiNmU2YWIxY2U5ZjM4M2MuLjRmYmFhN2ZiZGFhMTQ3NDQ2M2MzZTg4
ZDZmZGM4NWFmNTNlNWMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTYxNSw5ICs2MTUsOSBAQCB2b2lk
IFRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCgpCiAgICAgLy8gSWYg
d2UgYXJlIG5vdCB2aXNpYmxlIGdldCByaWQgb2YgdGhlIHpvb21lZC1vdXQgdGlsZXMuCiAgICAg
Y2xlYXJab29tZWRPdXRUaWxlR3JpZCgpOwogCi0gICAgVGlsZUdyaWQ6OlRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kgPSAoc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMo
KSA/IDAgOiBUaWxlR3JpZDo6UHJ1bmVTZWNvbmRhcnlUaWxlcykgfCBUaWxlR3JpZDo6VW5wYXJl
bnRBbGxUaWxlczsKLQotICAgIHRpbGVHcmlkKCkucmV2YWxpZGF0ZVRpbGVzKHZhbGlkYXRpb25Q
b2xpY3kpOworICAgIHRpbGVHcmlkKCkucmV2YWxpZGF0ZVRpbGVzKHNob3VsZEFnZ3Jlc3NpdmVs
eVJldGFpblRpbGVzKCkKKyAgICAgICAgPyBPcHRpb25TZXQgeyBUaWxlR3JpZDo6UHJ1bmVTZWNv
bmRhcnlUaWxlcywgVGlsZUdyaWQ6OlVucGFyZW50QWxsVGlsZXMgfQorICAgICAgICA6IE9wdGlv
blNldCB7IFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzIH0pOwogfQogCiB2b2lkIFRpbGVDb250
cm9sbGVyOjpkaWRSZXZhbGlkYXRlVGlsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCmluZGV4IDAzYjAwYmZiY2Q1Y2E5ZjY5NDE5ZWM1
YjExZTkzMWFjYjgxYmQzYWEuLjlkOGZiYjFhMGYwZGUzNDcyYTVjYWNlZjdmYzdlNTk3ZWI2YTI2
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3Jp
ZC5jcHAKQEAgLTQ1LDIyICs0NSwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxP
R19ESVNBQkxFRAotc3RhdGljIFN0cmluZyB2YWxpZGF0aW9uUG9saWN5QXNTdHJpbmcoVGlsZUdy
aWQ6OlRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCi17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyIpOwotICAgIGlm
ICh2YWxpZGF0aW9uUG9saWN5ICYgVGlsZUdyaWQ6OlBydW5lU2Vjb25kYXJ5VGlsZXMpCi0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicHJ1bmUgc2Vjb25kYXJ5Iik7Ci0KLSAgICBpZiAo
dmFsaWRhdGlvblBvbGljeSAmIFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzKSB7Ci0gICAgICAg
IGlmIChidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1bnBhcmVudCBhbGwiKTsK
LSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJdIik7CiAKLSAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworc3RhdGljIFN0cmluZyB2YWxpZGF0aW9uUG9saWN5QXNTdHJpbmco
T3B0aW9uU2V0PFRpbGVHcmlkOjpWYWxpZGF0aW9uUG9saWN5RmxhZz4gcG9saWN5KQoreworICAg
IHJldHVybiBtYWtlU3RyaW5nKCdbJywKKyAgICAgICAgcG9saWN5LmNvbnRhaW5zKFRpbGVHcmlk
OjpQcnVuZVNlY29uZGFyeVRpbGVzKSA/ICJwcnVuZSBzZWNvbmRhcnkiIDogIiIsCisgICAgICAg
IHBvbGljeS5jb250YWluc0FsbCh7IFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzLCBUaWxl
R3JpZDo6VW5wYXJlbnRBbGxUaWxlcyB9KSA/ICIsICIgOiAiIiwKKyAgICAgICAgcG9saWN5LmNv
bnRhaW5zKFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzKSA/ICJ1bnBhcmVudCBhbGwiIDog
IiIsCisgICAgICAgICddJyk7CiB9CisKICNlbmRpZgogCiBUaWxlR3JpZDo6VGlsZUdyaWQoVGls
ZUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCkBAIC0xMzcsOCArMTMxLDcgQEAgdm9pZCBUaWxlR3Jp
ZDo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICBmb3IgKGludCB5ID0gdG9wTGVmdC55KCk7IHkgPD0gYm90dG9tUmlnaHQueSgpOyArK3kpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gdG9wTGVmdC54KCk7IHggPD0gYm90dG9tUmln
aHQueCgpOyArK3gpIHsKICAgICAgICAgICAgICAgICAgICAgVGlsZUluZGV4IHRpbGVJbmRleCh4
LCB5KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIFRpbGVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKHRpbGVJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaXQgPSBtX3RpbGVzLmZpbmQodGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0ICE9IG1fdGlsZXMuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
aWxlTmVlZHNEaXNwbGF5SW5SZWN0KHRpbGVJbmRleCwgaXQtPnZhbHVlLCByZXBhaW50UmVjdElu
VGlsZUNvb3JkcywgbV9wcmltYXJ5VGlsZUNvdmVyYWdlUmVjdCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ3LDggKzE0MCw4IEBAIHZvaWQgVGlsZUdyaWQ6OnNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9y
IChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0
KGl0LT5rZXksIGl0LT52YWx1ZSwgcmVwYWludFJlY3RJblRpbGVDb29yZHMsIG1fcHJpbWFyeVRp
bGVDb3ZlcmFnZVJlY3QpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3RpbGVzKQorICAgICAg
ICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0KGVudHJ5LmtleSwgZW50cnkudmFsdWUsIHJlcGFp
bnRSZWN0SW5UaWxlQ29vcmRzLCBtX3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0KTsKIH0KIAogdm9p
ZCBUaWxlR3JpZDo6ZHJvcFRpbGVzSW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0yMDMs
OSArMTk2LDcgQEAgdm9pZCBUaWxlR3JpZDo6dXBkYXRlVGlsZUxheWVyUHJvcGVydGllcygpCiAg
ICAgYm9vbCBvcGFxdWUgPSBtX2NvbnRyb2xsZXIudGlsZXNBcmVPcGFxdWUoKTsKICAgICBDb2xv
ciB0aWxlRGVidWdCb3JkZXJDb2xvciA9IG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xv
cigpOwogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRoID0gbV9jb250cm9sbGVyLnRpbGVE
ZWJ1Z0JvcmRlcldpZHRoKCk7Ci0KLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgY29uc3QgVGlsZUluZm8mIHRpbGVJbmZvID0gaXQtPnZhbHVlOworICAgIGZv
ciAoYXV0byYgdGlsZUluZm8gOiBtX3RpbGVzLnZhbHVlcygpKSB7CiAgICAgICAgIHRpbGVJbmZv
LmxheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcoYWNjZWxlcmF0ZXNEcmF3aW5nKTsKICAgICAg
ICAgdGlsZUluZm8ubGF5ZXItPnNldFdhbnRzRGVlcENvbG9yQmFja2luZ1N0b3JlKGRlZXBDb2xv
cik7CiAgICAgICAgIHRpbGVJbmZvLmxheWVyLT5zZXRTdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFz
ZWRUZXh0KHN1YnBpeGVsQW50aWFsaWFzZWRUZXh0KTsKQEAgLTI5MiwxMiArMjgzLDEwIEBAIGJv
b2wgVGlsZUdyaWQ6OmdldFRpbGVJbmRleFJhbmdlRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
LCBUaWxlSW5kZXgmIHRvcExlZnQsCiB1bnNpZ25lZCBUaWxlR3JpZDo6YmxhbmtQaXhlbENvdW50
KCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybUxheWVyTGlzdCB0aWxlcyhtX3RpbGVzLnNpemUoKSk7
Ci0KLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigp
LCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKFBs
YXRmb3JtTGF5ZXIgKmxheWVyID0gaXQtPnZhbHVlLmxheWVyLT5wbGF0Zm9ybUxheWVyKCkpCisg
ICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoYXV0
byBsYXllciA9IHRpbGUubGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKICAgICAgICAgICAgIHRpbGVz
LmFwcGVuZChsYXllcik7CiAgICAgfQotCiAgICAgcmV0dXJuIFRpbGVDb250cm9sbGVyOjpibGFu
a1BpeGVsQ291bnRGb3JUaWxlcyh0aWxlcywgbV9jb250cm9sbGVyLnZpc2libGVSZWN0KCksIElu
dFBvaW50KDAsIDApKTsKIH0KIApAQCAtMzA2LDcgKzI5NSw3IEBAIHZvaWQgVGlsZUdyaWQ6OnJl
bW92ZVRpbGVzKFZlY3RvcjxUaWxlR3JpZDo6VGlsZUluZGV4PiYgdG9SZW1vdmUpCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0b1JlbW92ZS5zaXplKCk7ICsraSkgewogICAgICAgICBUaWxl
SW5mbyB0aWxlSW5mbyA9IG1fdGlsZXMudGFrZSh0b1JlbW92ZVtpXSk7CiAgICAgICAgIHRpbGVJ
bmZvLmxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBtX3RpbGVSZXBhaW50
Q291bnRzLnJlbW92ZSh0aWxlSW5mby5sYXllci5nZXQoKSk7CisgICAgICAgIG1fdGlsZVJlcGFp
bnRDb3VudHMucmVtb3ZlQWxsKHRpbGVJbmZvLmxheWVyLmdldCgpKTsKICAgICAgICAgdGlsZUlu
Zm8ubGF5ZXItPm1vdmVUb0xheWVyUG9vbCgpOwogICAgIH0KIH0KQEAgLTMyOCw3ICszMTcsNyBA
QCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVBbGxTZWNvbmRhcnlUaWxlcygpCiAKICAgICBmb3IgKGF1
dG8mIGVudHJ5IDogbV90aWxlcykgewogICAgICAgICBjb25zdCBUaWxlSW5mbyYgdGlsZUluZm8g
PSBlbnRyeS52YWx1ZTsKLSAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSBWaXNpYmxlVGls
ZUNvaG9ydCkKKyAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSB2aXNpYmxlVGlsZUNvaG9y
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0aWxlc1RvUmVtb3ZlLmFwcGVuZChl
bnRyeS5rZXkpOwogICAgIH0KQEAgLTMzOCw3ICszMjcsNyBAQCB2b2lkIFRpbGVHcmlkOjpyZW1v
dmVBbGxTZWNvbmRhcnlUaWxlcygpCiAKIHZvaWQgVGlsZUdyaWQ6OnJlbW92ZVRpbGVzSW5Db2hv
cnQoVGlsZUNvaG9ydCBjb2hvcnQpCiB7Ci0gICAgQVNTRVJUKGNvaG9ydCAhPSBWaXNpYmxlVGls
ZUNvaG9ydCk7CisgICAgQVNTRVJUKGNvaG9ydCAhPSB2aXNpYmxlVGlsZUNvaG9ydCk7CiAgICAg
VmVjdG9yPFRpbGVJbmRleD4gdGlsZXNUb1JlbW92ZTsKIAogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX3RpbGVzKSB7CkBAIC0zNTEsNyArMzQwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVGls
ZXNJbkNvaG9ydChUaWxlQ29ob3J0IGNvaG9ydCkKICAgICByZW1vdmVUaWxlcyh0aWxlc1RvUmVt
b3ZlKTsKIH0KIAotdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCit2b2lkIFRpbGVHcmlkOjpyZXZhbGlkYXRlVGlsZXMo
T3B0aW9uU2V0PFZhbGlkYXRpb25Qb2xpY3lGbGFnPiB2YWxpZGF0aW9uUG9saWN5KQogewogICAg
IEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QgPSBtX2NvbnRyb2xsZXIuY292ZXJhZ2VSZWN0KCk7CiAg
ICAgSW50UmVjdCBib3VuZHMgPSBtX2NvbnRyb2xsZXIuYm91bmRzKCk7CkBAIC0zODMsNyArMzcy
LDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5
IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSByZWN0Rm9yVGls
ZUluZGV4KHRpbGVJbmRleCk7CiAKICAgICAgICAgaWYgKHRpbGVSZWN0LmludGVyc2VjdHMoY292
ZXJhZ2VSZWN0SW5UaWxlQ29vcmRzKSkgewotICAgICAgICAgICAgdGlsZUluZm8uY29ob3J0ID0g
VmlzaWJsZVRpbGVDb2hvcnQ7CisgICAgICAgICAgICB0aWxlSW5mby5jb2hvcnQgPSB2aXNpYmxl
VGlsZUNvaG9ydDsKICAgICAgICAgICAgIGlmICh0aWxlSW5mby5oYXNTdGFsZUNvbnRlbnQpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogc3RvcmUgYSBkaXJ0eSByZWdpb24gcGVyIGxheWVy
PwogICAgICAgICAgICAgICAgIHRpbGVMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CkBAIC0zOTEs
NyArMzgwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBBZGQgdG8gdGhlIGN1cnJlbnRDb2hvcnQgaWYgbm90IGFscmVhZHkg
aW4gb25lLgotICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSBWaXNpYmxlVGlsZUNv
aG9ydCkgeworICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCA9PSB2aXNpYmxlVGlsZUNv
aG9ydCkgewogICAgICAgICAgICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IGN1cnJDb2hvcnQ7CiAg
ICAgICAgICAgICAgICAgKyt0aWxlc0luQ29ob3J0OwogICAgICAgICAgICAgICAgIHRpbGVMYXll
ci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKQEAgLTYzMCwxNiArNjE5LDEzIEBAIEludFJlY3Qg
VGlsZUdyaWQ6OmV4dGVudCgpIGNvbnN0CiBkb3VibGUgVGlsZUdyaWQ6OnJldGFpbmVkVGlsZUJh
Y2tpbmdTdG9yZU1lbW9yeSgpIGNvbnN0CiB7CiAgICAgZG91YmxlIHRvdGFsQnl0ZXMgPSAwOwot
ICAgIAotICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2lu
KCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25z
dCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+dmFsdWU7CisgICAgZm9yIChhdXRvJiB0aWxlSW5m
byA6IG1fdGlsZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKHRpbGVJbmZvLmxheWVyLT5zdXBl
cmxheWVyKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZHMgPSB0aWxlSW5mby5sYXll
ci0+Ym91bmRzKCk7CiAgICAgICAgICAgICBkb3VibGUgY29udGVudHNTY2FsZSA9IHRpbGVJbmZv
LmxheWVyLT5jb250ZW50c1NjYWxlKCk7CiAgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IDQgKiBi
b3VuZHMud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUgKiBib3VuZHMuaGVpZ2h0KCkgKiBjb250ZW50
c1NjYWxlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIHRvdGFsQnl0ZXM7CiB9CiAK
QEAgLTY2MSw4ICs2NDcsNyBAQCB2b2lkIFRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENH
Q29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpIGNvbgogICAgIENHRmxvYXQg
Y29udGV4dFNjYWxlID0gc2NhbGVGYWN0b3IgLyBtX3NjYWxlOwogICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIGNvbnRleHRTY2FsZSwgY29udGV4dFNjYWxlKTsKICAgICAKLSAgICBmb3Ig
KFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3Rp
bGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgVGlsZUluZm8mIHRp
bGVJbmZvID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgdGlsZUluZm8gOiBtX3RpbGVzLnZh
bHVlcygpKSB7CiAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogdGlsZUxheWVyID0gdGlsZUluZm8u
bGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgQ0dGbG9hdCByZWQgPSAxOwpAQCAtNjczLDcgKzY1OCw3
IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgICAgICAgICByZWQgPSAwLjI1OwogICAg
ICAgICAgICAgZ3JlZW4gPSAwLjEyNTsKICAgICAgICAgICAgIGJsdWUgPSAwOwotICAgICAgICB9
IGVsc2UgaWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYm
IHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCkgeworICAgICAgICB9IGVsc2Ug
aWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYmIHRpbGVJ
bmZvLmNvaG9ydCAhPSB2aXNpYmxlVGlsZUNvaG9ydCkgewogICAgICAgICAgICAgcmVkID0gMC44
OwogICAgICAgICAgICAgZ3JlZW4gPSAwLjg7CiAgICAgICAgICAgICBibHVlID0gMC44OwpAQCAt
NjgyLDcgKzY2Nyw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgICAgIFRpbGVDb2hv
cnQgbmV3ZXN0Q29ob3J0ID0gbmV3ZXN0VGlsZUNvaG9ydCgpOwogICAgICAgICBUaWxlQ29ob3J0
IG9sZGVzdENvaG9ydCA9IG9sZGVzdFRpbGVDb2hvcnQoKTsKIAotICAgICAgICBpZiAoIW1fY29u
dHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcygpICYmIHRpbGVJbmZvLmNvaG9y
dCAhPSBWaXNpYmxlVGlsZUNvaG9ydCAmJiBuZXdlc3RDb2hvcnQgPiBvbGRlc3RDb2hvcnQpCisg
ICAgICAgIGlmICghbV9jb250cm9sbGVyLnNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkg
JiYgdGlsZUluZm8uY29ob3J0ICE9IHZpc2libGVUaWxlQ29ob3J0ICYmIG5ld2VzdENvaG9ydCA+
IG9sZGVzdENvaG9ydCkKICAgICAgICAgICAgIGFscGhhID0gMSAtIChzdGF0aWNfY2FzdDxmbG9h
dD4oKG5ld2VzdENvaG9ydCAtIHRpbGVJbmZvLmNvaG9ydCkpIC8gKG5ld2VzdENvaG9ydCAtIG9s
ZGVzdENvaG9ydCkpOwogCiAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CkBAIC03MDEsMTIgKzY4NiwxMyBAQCB2b2lkIFRp
bGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
bGF5ZXJCb3VuZHMpIGNvbgogCiAgICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAwLCAwLCAwLCAwLjUpOwogCi0gICAgICAgIFN0cmluZyByZXBhaW50Q291bnQgPSBTdHJp
bmc6Om51bWJlcihtX3RpbGVSZXBhaW50Q291bnRzLmdldCh0aWxlTGF5ZXIpKTsKLQogICAgICAg
ICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCisgICAgICAgIGF1dG8gcmVwYWludENv
dW50ID0gbV90aWxlUmVwYWludENvdW50cy5jb3VudCh0aWxlTGF5ZXIpOworICAgICAgICBjaGFy
IHJlcGFpbnRDb3VudENoYXJhY3RlcnNbbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoc3RkOjpudW1l
cmljX2xpbWl0czxkZWNsdHlwZShyZXBhaW50Q291bnQpPjo6bWF4KCkpXTsKKyAgICAgICAgd3Jp
dGVJbnRlZ2VyVG9CdWZmZXIocmVwYWludENvdW50LCByZXBhaW50Q291bnRDaGFyYWN0ZXJzKTsK
ICAgICAgICAgdGlsZUxheWVyLT5kcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZnJhbWUub3JpZ2lu
LnggKyA2NCwgZnJhbWUub3JpZ2luLnkgKyAxOTIsIENHU2l6ZU1ha2UoMywgLTMpLCA1OCwKLSAg
ICAgICAgICAgIHJlcGFpbnRDb3VudC5hc2NpaSgpLmRhdGEoKSwgcmVwYWludENvdW50Lmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIHJlcGFpbnRDb3VudENoYXJhY3RlcnMsIGxlbmd0aE9mSW50ZWdl
ckFzU3RyaW5nKHJlcGFpbnRDb3VudCkpOwogCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7CiAgICAgfQpAQCAtNzgxLDI5ICs3NjcsMTkgQEAgYm9vbCBUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdAogCiBpbnQgVGlsZUdyaWQ6OnBs
YXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXll
cikgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvIGl0ID0gbV90aWxlUmVwYWludENvdW50cy5maW5k
KHBsYXRmb3JtQ0FMYXllcik7Ci0gICAgcmV0dXJuIGl0ICE9IG1fdGlsZVJlcGFpbnRDb3VudHMu
ZW5kKCkgPyBpdC0+dmFsdWUgOiAwOworICAgIHJldHVybiBtX3RpbGVSZXBhaW50Q291bnRzLmNv
dW50KHBsYXRmb3JtQ0FMYXllcik7CiB9CiAKIGludCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVy
SW5jcmVtZW50UmVwYWludENvdW50KFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQog
ewotICAgIGludCByZXBhaW50Q291bnQgPSAwOwotCi0gICAgaWYgKG1fdGlsZVJlcGFpbnRDb3Vu
dHMuY29udGFpbnMocGxhdGZvcm1DQUxheWVyKSkKLSAgICAgICAgcmVwYWludENvdW50ID0gbV90
aWxlUmVwYWludENvdW50cy5nZXQocGxhdGZvcm1DQUxheWVyKTsKLQotICAgIG1fdGlsZVJlcGFp
bnRDb3VudHMuc2V0KHBsYXRmb3JtQ0FMYXllciwgKytyZXBhaW50Q291bnQpOwotCi0gICAgcmV0
dXJuIHJlcGFpbnRDb3VudDsKKyAgICByZXR1cm4gbV90aWxlUmVwYWludENvdW50cy5hZGQocGxh
dGZvcm1DQUxheWVyKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCkKIHsKLSAgICB3
aGlsZSAoIW1fY29ob3J0TGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVGlsZUNvaG9ydEluZm8g
Zmlyc3RDb2hvcnQgPSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7Ci0gICAgICAgIHJlbW92ZVRp
bGVzSW5Db2hvcnQoZmlyc3RDb2hvcnQuY29ob3J0KTsKLSAgICB9CisgICAgd2hpbGUgKCFtX2Nv
aG9ydExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVUaWxlc0luQ29ob3J0KG1fY29ob3J0
TGlzdC50YWtlRmlyc3QoKS5jb2hvcnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCmluZGV4IDQ4MGZkMGE5N2RjZTMwNWFh
ZGNmOWM3NTU1OGNlNGU4NWM3YjJjYWUuLjI1N2JhNTk4MzRhY2Q2ZGNhN2ViM2JkZWNmNmNkMTAx
ZDM1M2ViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUdyaWQuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKICNpZiBVU0Uo
Q0cpCkBAIC00NSw5ICs0NSwxMCBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBUaWxl
Q29udHJvbGxlcjsKIAogY2xhc3MgVGlsZUdyaWQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxlR3JpZCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGVHcmlkKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBUaWxlR3JpZChUaWxlQ29udHJvbGxl
ciYpOworICAgIGV4cGxpY2l0IFRpbGVHcmlkKFRpbGVDb250cm9sbGVyJik7CiAgICAgflRpbGVH
cmlkKCk7CiAKICNpZiBVU0UoQ0EpCkBAIC02NywxMiArNjgsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBwcmVwb3B1bGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBlbnVtIFRpbGVW
YWxpZGF0aW9uUG9saWN5RmxhZ3MgeworICAgIGVudW0gVmFsaWRhdGlvblBvbGljeUZsYWcgOiB1
aW50OF90IHsKICAgICAgICAgUHJ1bmVTZWNvbmRhcnlUaWxlcyA9IDEgPDwgMCwKICAgICAgICAg
VW5wYXJlbnRBbGxUaWxlcyAgICA9IDEgPDwgMQogICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBUaWxlVmFsaWRhdGlvblBvbGljeTsKLSAgICB2b2lkIHJldmFsaWRhdGVUaWxlcyhUaWxlVmFs
aWRhdGlvblBvbGljeSA9IDApOworICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKE9wdGlvblNldDxW
YWxpZGF0aW9uUG9saWN5RmxhZz4gPSB7IH0pOwogCiAgICAgYm9vbCB0aWxlc1dvdWxkQ2hhbmdl
Rm9yQ292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCkBAIC05MywyMCArOTMs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCk7CiAjZW5k
aWYKIAotICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OworICAgIHVzaW5nIFRpbGVJbmRl
eCA9IEludFBvaW50OwogCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBUaWxlQ29ob3J0OwotICAgIHN0
YXRpYyBjb25zdCBUaWxlQ29ob3J0IFZpc2libGVUaWxlQ29ob3J0ID0gVUlOVF9NQVg7CisgICAg
dXNpbmcgVGlsZUNvaG9ydCA9IHVuc2lnbmVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgVGlsZUNv
aG9ydCB2aXNpYmxlVGlsZUNvaG9ydCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGlsZUNvaG9ydD46
Om1heCgpOwogCiAgICAgc3RydWN0IFRpbGVJbmZvIHsKICAgICAgICAgUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gbGF5ZXI7Ci0gICAgICAgIFRpbGVDb2hvcnQgY29ob3J0OyAvLyBWaXNpYmxlVGls
ZUNvaG9ydCBpcyB2aXNpYmxlLgotICAgICAgICBib29sIGhhc1N0YWxlQ29udGVudDsKLQotICAg
ICAgICBUaWxlSW5mbygpCi0gICAgICAgICAgICA6IGNvaG9ydChWaXNpYmxlVGlsZUNvaG9ydCkK
LSAgICAgICAgICAgICwgaGFzU3RhbGVDb250ZW50KGZhbHNlKQotICAgICAgICB7IH0KKyAgICAg
ICAgVGlsZUNvaG9ydCBjb2hvcnQgeyB2aXNpYmxlVGlsZUNvaG9ydCB9OworICAgICAgICBib29s
IGhhc1N0YWxlQ29udGVudCB7IGZhbHNlIH07CiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTE1OCwx
OSArMTUzLDE2IEBAIHByaXZhdGU6CiAgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gbV9jb250YWlu
ZXJMYXllcjsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFRpbGVJbmRleCwgVGlsZUlu
Zm8+IFRpbGVNYXA7Ci0gICAgVGlsZU1hcCBtX3RpbGVzOworICAgIEhhc2hNYXA8VGlsZUluZGV4
LCBUaWxlSW5mbz4gbV90aWxlczsKIAogICAgIEludFJlY3QgbV9wcmltYXJ5VGlsZUNvdmVyYWdl
UmVjdDsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX3NlY29uZGFyeVRpbGVDb3ZlcmFnZVJlY3Rz
OwogCi0gICAgdHlwZWRlZiBEZXF1ZTxUaWxlQ29ob3J0SW5mbz4gVGlsZUNvaG9ydExpc3Q7Ci0g
ICAgVGlsZUNvaG9ydExpc3QgbV9jb2hvcnRMaXN0OworICAgIERlcXVlPFRpbGVDb2hvcnRJbmZv
PiBtX2NvaG9ydExpc3Q7CiAKICAgICBUaW1lciBtX2NvaG9ydFJlbW92YWxUaW1lcjsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQ+IFJlcGFpbnRDb3VudE1hcDsK
LSAgICBSZXBhaW50Q291bnRNYXAgbV90aWxlUmVwYWludENvdW50czsKKyAgICBIYXNoQ291bnRl
ZFNldDxQbGF0Zm9ybUNBTGF5ZXIqPiBtX3RpbGVSZXBhaW50Q291bnRzOwogICAgIAogICAgIElu
dFNpemUgbV90aWxlU2l6ZTsKIApAQCAtMTc4LDQgKzE3MCwzIEBAIHByaXZhdGU6CiB9OwogCiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCmluZGV4IDAwMGQ5MzcwMzc0
YmJhOWI0NWFhZjVkYjM3ZWUzNjliYjc1MDczNDcuLmQ0ZmEzYzRiZmFkMzRhYWYzMDkzYTlmMDI0
ODZiYjcyN2Y5OGQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQpA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRGaWx0ZXJzT25MYXll
cihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3BlcgogCiAgICAgdW5zaWduZWQg
aSA9IDA7CiAgICAgYXV0byBhcnJheSA9IGNyZWF0ZU5TQXJyYXkoZmlsdGVycy5vcGVyYXRpb25z
KCksIFsmXSAoYXV0byYgb3BlcmF0aW9uUHRyKSAtPiBpZCB7Ci0gICAgICAgIFN0cmluZyBmaWx0
ZXJOYW1lID0gbWFrZVN0cmluZygiZmlsdGVyXyIsIGkrKyk7CisgICAgICAgIGF1dG8gZmlsdGVy
TmFtZSA9IG1ha2VTdHJpbmcoImZpbHRlcl8iLCBpKyspOwogICAgICAgICBhdXRvJiBmaWx0ZXJP
cGVyYXRpb24gPSAqb3BlcmF0aW9uUHRyOwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlv
bi50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRFRkFVTFQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCmluZGV4IDllZTY4ODE1ODJlNzViNGJkNjUzMmI5MjVmN2VmYzA1ODNkNDMwYTYu
LjM3ZDFhNDQ5OWE4NzZjNjYwZWZjMjM1MTRlMWJjMWU0ODNhMzNkNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEZsb2F0UG9pbnQgdGltZUxvY2F0
aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuMDUsIGNhcHR1cmVTaXplLmhlaWdodCgpICogLjE1
KTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwogICAgIGNvbnRleHQu
c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7Ci0gICAgU3RyaW5nIHN0
cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1p
bnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxp
c2Vjb25kcyAlIDEwMDApKTsKKyAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNl
Y29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKICAgICBjb250
ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGlt
ZUxvY2F0aW9uKTsKIAogICAgIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgNiwgbV9mcmFt
ZU51bWJlcisrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nj
cm9sbEFuaW1hdG9yTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bEFuaW1hdG9yTW9jay5jcHAKaW5kZXggZDRlZTBkNDEzOWNmM2M5ODMyYzBlMDZkYzQ4ODU2MWI3
MGFjNDc2OC4uMjI2MTU4Y2ZjZDQ5YzU5YjBmOGJkMDcwNDViZTU5YjQ4NTliZmJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmNw
cApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yTW9jay5oIgogCiAj
aW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODYsNTMgKzg1LDI2IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkKICAgICBTY3JvbGxB
bmltYXRvcjo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpOwogfQogCitjb25zdCBjaGFyKiBTY3Jv
bGxBbmltYXRvck1vY2s6OnNjcm9sbGJhclByZWZpeChTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29u
c3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyID09IG1fdmVydGljYWxTY3JvbGxiYXIgPyAiVmVy
dGljYWwiIDogc2Nyb2xsYmFyID09IG1faG9yaXpvbnRhbFNjcm9sbGJhciA/ICJIb3Jpem9udGFs
IiA6ICJVbmtub3duIjsKK30KKwogdm9pZCBTY3JvbGxBbmltYXRvck1vY2s6Om1vdXNlRW50ZXJl
ZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUVudGVyZWQiKTsK
LSAgICBpZiAoc2Nyb2xsYmFyID09IG1fdmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiVmVydGljYWwiKTsKLSAgICBlbHNlIGlmIChzY3JvbGxiYXIgPT0g
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIkhv
cml6b250YWwiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiVW5r
bm93biIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiU2Nyb2xsYmFyIik7Ci0gICAgbV9s
b2dnZXIobWVzc2FnZS50b1N0cmluZygpKTsKKyAgICBtX2xvZ2dlcihtYWtlU3RyaW5nKCJtb3Vz
ZUVudGVyZWQiLCBzY3JvbGxiYXJQcmVmaXgoc2Nyb2xsYmFyKSwgIlNjcm9sbGJhciIpKTsKICAg
ICBTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiB9CiAK
IHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUV4aXRlZCIpOwotICAgIGlmIChzY3JvbGxiYXIgPT0g
bV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJWZXJ0
aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBtX2hvcml6b250YWxTY3JvbGxiYXIp
Ci0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9yaXpvbnRhbCIpOwotICAgIGVsc2UK
LSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtub3duIik7Ci0gICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xvZ2dlcihtZXNzYWdlLnRvU3RyaW5n
KCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoIm1vdXNlRXhpdGVkIiwgc2Nyb2xsYmFyUHJl
Zml4KHNjcm9sbGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAgU2Nyb2xsQW5pbWF0b3I6Om1vdXNl
RXhpdGVkU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2Nr
Ojptb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIGlzUHJl
c3NlZCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJtb3VzZUlzIik7Ci0gICAgaWYgKGlzUHJlc3NlZCkKLSAgICAgICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJEb3duIik7Ci0gICAgZWxzZQotICAgICAgICBtZXNzYWdlLmFw
cGVuZExpdGVyYWwoIlVwIik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJJbiIpOwotICAg
IGlmIChzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJWZXJ0aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBtX2hv
cml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9yaXpv
bnRhbCIpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtub3du
Iik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xvZ2dl
cihtZXNzYWdlLnRvU3RyaW5nKCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoaXNQcmVzc2Vk
ID8gIm1vdXNlSXNEb3duSW4iIDogIm1vdXNlSXNVcEluIiwgc2Nyb2xsYmFyUHJlZml4KHNjcm9s
bGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAgU2Nyb2xsQW5pbWF0b3I6Om1vdXNlSXNEb3duSW5T
Y3JvbGxiYXIoc2Nyb2xsYmFyLCBpc1ByZXNzZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suaAppbmRleCA0NmNlYTA2M2RkNzY0
MDI5NjViOGQ1MzVmYmQwMmFhMGQzMzU5OGU3Li5mOTcyMWE4ZjYyMmM4OWU1NDZkOWViYmFjZDk4
MjEwZjgzMTFiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nj
cm9sbEFuaW1hdG9yTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsQW5pbWF0b3JNb2NrLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1v
dXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IG1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgbW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBjb25zdCBjaGFyKiBzY3JvbGxiYXJQcmVmaXgoU2Nyb2xsYmFyKikgY29uc3Q7CiAK
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fbG9nZ2VyOwogICAgIFNj
cm9sbGJhciogbV92ZXJ0aWNhbFNjcm9sbGJhciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKaW5kZXggYWI5ZWRkOWI0NzQ3
MDE1ZmVkMzZhODlmMWQzYjA1YjM3ZjEwNTEzYS4uMzZhZGYwNWQ5Njg2ZjA4Y2VlY2U3NDZiNTYx
ODMyYWRhZDgwMzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5jcHAKQEAgLTM3LDE3ICszNywxNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcm94
eVNlcnZlclN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYg
cAogCiAgICAgc3dpdGNoIChwcm94eVNlcnZlci50eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2Vy
dmVyOjpEaXJlY3Q6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRElSRUNUIik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIkRJUkVDVCIpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFByb3h5U2VydmVyOjpIVFRQOgogICAgIGNhc2UgUHJveHlTZXJ2
ZXI6OkhUVFBTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlBST1hZIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJQUk9YWSAiLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOics
IHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJveHlTZXJ2
ZXI6OlNPQ0tTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNPQ0tTIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJTT0NLUyAiLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOics
IHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0gICAgCi0gICAgYnVp
bGRlci5hcHBlbmQoJyAnLCBwcm94eVNlcnZlci5ob3N0TmFtZSgpLCAnOicsIHByb3h5U2VydmVy
LnBvcnQoKSk7CisgICAgfQogfQogCiBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFByb3h5
U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpAQCAtNTgsMTMgKzU3LDEwIEBAIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMpCiAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJveHlTZXJ2
ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI7ICIpOwotCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiOyAiKTsKICAgICAgICAgYXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcoc3RyaW5nQnVpbGRl
ciwgcHJveHlTZXJ2ZXJzW2ldKTsKICAgICB9Ci0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
aW5kZXggMWYwOTJkOGQ1OGRjOWNmZDBkYmNiNDcyMjQ3YjQyODlhNjE5MGM5YS4uYWE5MTYyZTQ5
MGZlZjYxMDY5MWRlMjQ2OTQzZDMxZDgyYTFlMmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTMw
NywxMSArMzA3LDEwIEBAIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdn
ZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpCiAgICAgaWYgKHN1Z2dlc3Rl
ZEZpbGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN1Z2dlc3RlZEZpbGVuYW1lOwog
Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIpLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlIHsgeyB7IH0sICJodHRwOi8vZXhhbXBsZS5jb20vIl9zIH0sIHsgfSwgLTEsIHsgfSB9
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgU3RyaW5nIGVzY2Fw
ZWRTdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgn
XFwnLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAiXFxcIiIpOwotICAgIFN0cmluZyB2YWx1ZSA9IG1h
a2VTdHJpbmcoImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dlc3RlZEZpbGVu
YW1lLCAnIicpOwotICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudERpc3Bvc2l0aW9uLCB2YWx1ZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24sIG1ha2VTdHJpbmcoImF0
dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1lLCAnIicpKTsK
ICAgICByZXR1cm4gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vVXNlckFnZW50UGxh
eVN0YXRpb24uY3BwCmluZGV4IDQ5YmRhZDcwNDEzNmFlZTg2M2QwMjk5MjJhNDIzY2JlNGNjYzc2
OTcuLmEyMjMzMjAwYzcwMWEzNmY5NTMzNTY1ODEyZjU1YWU0ZGUyMDBjMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9Vc2VyQWdlbnRQ
bGF5U3RhdGlvbi5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQWdlbnQuaCIK
IAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogLy8gV0FSTklORyEgV0FSTklORyEgV0FSTklORyEKIC8v
CkBAIC01OSw1MSArNTgsMTcgQEAgc3RhdGljIFN0cmluZyBnZXRTeXN0ZW1Tb2Z0d2FyZVZlcnNp
b24oKQogICAgIHJldHVybiAiMC4wMCI7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZv
cm1Gb3JVQVN0cmluZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmlu
Zz4gdWFTeXN0ZW1Tb2Z0d2FyZU5hbWUoZ2V0U3lzdGVtU29mdHdhcmVOYW1lKCkpOwotICAgIHJl
dHVybiB1YVN5c3RlbVNvZnR3YXJlTmFtZTsKLX0KLQotc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0
Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0cmluZz4gdWFTeXN0ZW1Tb2Z0d2FyZVZlcnNpb24oZ2V0U3lzdGVtU29mdHdhcmVWZXJz
aW9uKCkpOwotICAgIHJldHVybiB1YVN5c3RlbVNvZnR3YXJlVmVyc2lvbjsKLX0KLQogc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiB2ZXJzaW9uRm9yVUFTdHJpbmcoKQogewogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzNjUKICAgICByZXR1cm4g
IjYwNS4xLjE1IjsKIH0KIAotc3RhdGljIFN0cmluZyBidWlsZFVzZXJBZ2VudFN0cmluZygpCitz
dGF0aWMgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIHVhU3RyaW5nOwotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1vemlsbGEvNS4wICIp
OwotICAgIHVhU3RyaW5nLmFwcGVuZCgnKCcpOwotCi0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiUGxheVN0YXRpb247ICIpOwotCi0gICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtRm9yVUFT
dHJpbmcoKSk7Ci0gICAgdWFTdHJpbmcuYXBwZW5kKCcvJyk7Ci0gICAgdWFTdHJpbmcuYXBwZW5k
KHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkpOwotCi0gICAgdWFTdHJpbmcuYXBwZW5kTGl0
ZXJhbCgiKSBBcHBsZVdlYktpdC8iKTsKLSAgICB1YVN0cmluZy5hcHBlbmQodmVyc2lvbkZvclVB
U3RyaW5nKCkpOwotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAoS0hUTUwsIGxpa2UgR2Vj
a28pICIpOwotCiAgICAgLy8gVmVyc2lvbi9YIGlzIG1hbmRhdG9yeSAqYmVmb3JlKiBTYWZhcmkv
WCB0byBiZSBhIHZhbGlkIFNhZmFyaSBVQS4gU2VlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzQwMyBmb3IgZGV0YWlscy4KLSAgICB1YVN0cmluZy5h
cHBlbmRMaXRlcmFsKCJWZXJzaW9uLzE0LjAgU2FmYXJpLyIpOwotICAgIHVhU3RyaW5nLmFwcGVu
ZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0KLSAgICByZXR1cm4gdWFTdHJpbmcudG9TdHJpbmco
KTsKLX0KLQotc3RhdGljIGNvbnN0IFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFTdGF0aWMoYnVpbGRV
c2VyQWdlbnRTdHJpbmcoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdWFT
dGF0aWMobWFrZVN0cmluZygiTW96aWxsYS81LjAgKFBsYXlTdGF0aW9uOyAiLCBnZXRTeXN0ZW1T
b2Z0d2FyZU5hbWUoKSwgJy8nLCBnZXRTeXN0ZW1Tb2Z0d2FyZVZlcnNpb24oKSwgIikgQXBwbGVX
ZWJLaXQvIiwgdmVyc2lvbkZvclVBU3RyaW5nKCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSAiLCAi
VmVyc2lvbi8xNC4wIFNhZmFyaS8iLCB2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7CiAgICAgcmV0dXJu
IHVhU3RhdGljOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcAppbmRleCAxNTc3YWE2MWIyZjU2OWIyZDE2NzJjYjI3MTczYzJhODZkZTRlMDFh
Li4zN2I2NzAxNTZkMDU4ZDAyNDk1NmIyZWZkNzRjMmY3ZDRlZDEzYTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTE1MCw3ICsxNTAs
NyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9w
ZW5Nb2RlIG9wZW5Nb2RlKQogICAgIGlmIChvcGVuTW9kZSAhPSBPcGVuTW9kZTo6UmVhZE9ubHkp
CiAgICAgICAgIHVzZVdBTEpvdXJuYWxNb2RlKCk7CiAKLSAgICBTdHJpbmcgc2htRmlsZU5hbWUg
PSBtYWtlU3RyaW5nKGZpbGVuYW1lLCAiLXNobSJfcyk7CisgICAgYXV0byBzaG1GaWxlTmFtZSA9
IG1ha2VTdHJpbmcoZmlsZW5hbWUsICItc2htIl9zKTsKICAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhzaG1GaWxlTmFtZSkpIHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc1NhZmVU
b1VzZU1lbW9yeU1hcEZvclBhdGgoc2htRmlsZU5hbWUpKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0xPR19GQVVMVChTUUxEYXRhYmFzZSwgIk9wZW5lZCBhbiBTUUxpdGUgZGF0YWJhc2Ugd2l0aCBh
IENsYXNzIEEgLXNobSBmaWxlLiBUaGlzIG1heSB0cmlnZ2VyIGEgY3Jhc2ggd2hlbiB0aGUgdXNl
ciBsb2NrcyB0aGUgZGV2aWNlLiAoJXMpIiwgc2htRmlsZU5hbWUubGF0aW4xKCkuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApp
bmRleCBhN2EyMDIxZDY4OWVhNDEwY2Y3YWIwMjFmZjljNmM0ZmU0NzQzMzFkLi42YzNkM2E4ZGY2
MDgwZWEzOWViNzJmNTFjYzdlYTc0MzQwYWM1YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCkBAIC03OSw4ICs3OSw4IEBAIGJvb2wg
U1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgpCiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgU3RyaW5nIHdhbEZpbGVOYW1lID0gbWFrZVN0
cmluZyhmaWxlTmFtZSwgIi13YWwiX3MpOwotICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VT
dHJpbmcoZmlsZU5hbWUsICItc2htIl9zKTsKKyAgICBhdXRvIHdhbEZpbGVOYW1lID0gbWFrZVN0
cmluZyhmaWxlTmFtZSwgIi13YWwiX3MpOworICAgIGF1dG8gc2htRmlsZU5hbWUgPSBtYWtlU3Ry
aW5nKGZpbGVOYW1lLCAiLXNobSJfcyk7CiAKICAgICAvLyBUcnkgdG8gZGVsZXRlIGFsbCB0aHJl
ZSBmaWxlcyB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSB0aGVyZS4KICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9E
YXRlVGltZUZvcm1hdC5jcHAKaW5kZXggYzc1ZDMzZDZmZjg0NzZlZmEzMmRiODQ0ZTZhZjkyMjQ0
Njc2Y2U3OS4uNDNhMThiY2VhMDE3OTYzMGI5MGVlZGM2MjY0MmIzZGE3N2UwYjE2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAKQEAgLTI1
NSwyMyArMjU1LDE3IEBAIHZvaWQgRGF0ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJh
bChjb25zdCBTdHJpbmcmIGxpdGVyYWwsIFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGJ1ZmZlci5h
cHBlbmQobGl0ZXJhbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
bGl0ZXJhbC5maW5kKCdcJycpID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQo
J1wnJyk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQobGl0ZXJhbCk7Ci0gICAgICAgIGJ1ZmZlci5h
cHBlbmQoJ1wnJyk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgbGl0ZXJhbCwgJ1wnJyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGl0ZXJhbC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycp
Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kTGl0ZXJhbCgiJyciKTsKKyAgICAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoIicnIik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIGVz
Y2FwZWQgPSBsaXRlcmFsLnN1YnN0cmluZyhpKTsKLSAgICAgICAgICAgIGVzY2FwZWQucmVwbGFj
ZSgnXCcnLCAiJyciKTsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJyk7Ci0gICAgICAg
ICAgICBidWZmZXIuYXBwZW5kKGVzY2FwZWQpOwotICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgn
XCcnKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJywgU3RyaW5nIHsgbGl0ZXJhbC5z
dWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyIpLCAnXCcnKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjQ0pLLmNwcAppbmRleCBlZTFmZjhlYjNkNzllYjc2MDI5NTBkYTk2MjQ2OTQ2NTU5
NGQyMGI1Li5mYzJhOTIxMTAwMjBkNTllNDNhODMwYWUzNDU0MTAyYjc3OTcyNDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwCkBAIC0xMDUyLDkg
KzEwNTIsOSBAQCBjb25zdGV4cHIgc2l6ZV90IG1heFVDaGFyMzJEaWdpdHMgPSAxMDsKIAogc3Rh
dGljIHZvaWQgYXBwZW5kRGVjaW1hbChVQ2hhcjMyIGMsIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0
KQogewotICAgIHVpbnQ4X3QgYnVmZmVyWzEwXTsKLSAgICBXVEY6OndyaXRlSW50ZWdlclRvQnVm
ZmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSwgYnVmZmVyKTsKLSAgICByZXN1bHQuYXBwZW5k
KGJ1ZmZlciwgV1RGOjpsZW5ndGhPZkludGVnZXJBc1N0cmluZyhjKSk7CisgICAgdWludDhfdCBi
dWZmZXJbbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlw
ZShjKT46Om1heCgpKV07CisgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIoYywgYnVmZmVyKTsKKyAg
ICByZXN1bHQuYXBwZW5kKGJ1ZmZlciwgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoYykpOwogfQog
CiBzdGF0aWMgdm9pZCB1cmxFbmNvZGVkRW50aXR5VW5lbmNvZGFibGVIYW5kbGVyKFVDaGFyMzIg
YywgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDg3ODlmMTFjMzY0Mzk5
OWMzMGRmZGIxYzliOTM5YWU0NWJiMGE1MWYuLjNlOTdlODA0ZTExNWUwZTM3ODE0ZGRmNjcwZTll
M2JhNGIzYmJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCByZXBsYWNl
TmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3RyaW5nJiBzdHIpCiAgICAgICAgIGlm
IChzdHJbaW5kZXhdICE9ICdcbicgfHwgKGluZGV4ID4gMCAmJiBzdHJbaW5kZXggLSAxXSA9PSAn
XHInKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyW2luZGV4XSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcclxuIik7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCJcclxuIik7CiAgICAgfQogICAgIHN0ciA9IHJlc3VsdC50b1N0cmlu
ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1VzZXJBZ2Vu
dFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcApp
bmRleCBmYzQ1ZmYwMmJhMWNkZGJlYmVlNGViYzNmYmQyNjMzNGEzM2JiMjgzLi5mYjIzNjFjYWZi
YTRjMGE0ZGI0OTMzMDM5OTZiNjQ3YThiZDNlNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcApAQCAtMjcsMjYgKzI3LDE1IEBACiAjaW5jbHVkZSAi
VXNlckFnZW50LmgiCiAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVy
c2lvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHVhU3RyaW5nOwotICAgIHVhU3RyaW5nLmFwcGVu
ZExpdGVyYWwoIk1vemlsbGEvNS4wICgiKTsKLSAgICB1YVN0cmluZy5hcHBlbmQod2luZG93c1Zl
cnNpb25Gb3JVQVN0cmluZygpKTsKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzY1Ci0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKSBBcHBsZVdl
YktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIik7Ci0gICAgaWYgKCFhcHBsaWNhdGlv
bk5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAiKTsK
LSAgICAgICAgdWFTdHJpbmcuYXBwZW5kKGFwcGxpY2F0aW9uTmFtZSk7Ci0gICAgICAgIGlmICgh
YXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdWFTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgiLyIpOwotICAgICAgICAgICAgdWFTdHJpbmcuYXBwZW5kKGFwcGxpY2F0aW9u
VmVyc2lvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHVhU3RyaW5nLnRvU3RyaW5n
KCk7CisgICAgYXV0byB2ZXJzaW9uID0gYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/IGVtcHR5
U3RyaW5nKCkgOiBhcHBsaWNhdGlvblZlcnNpb247CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1v
emlsbGEvNS4wICgiLCB3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5nKCksICIpIEFwcGxlV2ViS2l0
LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLAorICAgICAgICBhcHBsaWNhdGlvbk5hbWUu
aXNFbXB0eSgpID8gIiIgOiAiICIsIGFwcGxpY2F0aW9uTmFtZSwgdmVyc2lvbi5pc0VtcHR5KCkg
PyAiIiA6ICIvIiwgdmVyc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDE3YjJjODM0ZDBlY2VhMmRj
MjIyNTIwMDk4MGNhMDRiNzlhMDhhZjAuLmU4MGQ1ZTcwMzJjY2FlMmZmMjQwYTRkMWIxOTYzZDRl
NTdhM2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
ODEzLDEzICs4MTMsOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVk
ZWQoKQogCiBTdHJpbmcgUmVuZGVyTGF5ZXI6Om5hbWUoKSBjb25zdAogewotICAgIFN0cmluZ0J1
aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZChyZW5kZXJlcigpLmRlc2NyaXB0aW9uKCkpOwot
Ci0gICAgaWYgKGlzUmVmbGVjdGlvbigpKQotICAgICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIiAo
cmVmbGVjdGlvbikiKTsKLQotICAgIHJldHVybiBuYW1lLnRvU3RyaW5nKCk7CisgICAgaWYgKCFp
c1JlZmxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkuZGVidWdEZXNjcmlwdGlv
bigpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHJlbmRlcmVyKCkuZGVidWdEZXNjcmlwdGlvbigp
LCAiIChyZWZsZWN0aW9uKSIpOwogfQogCiBSZW5kZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlckxh
eWVyOjpjb21wb3NpdG9yKCkgY29uc3QKQEAgLTI3NTMsMzIgKzI3NDksMjEgQEAgUmVuZGVyTGF5
ZXI6Ok92ZXJmbG93Q29udHJvbFJlY3RzIFJlbmRlckxheWVyOjpvdmVyZmxvd0NvbnRyb2xzUmVj
dHMoKSBjb25zdAogCiBTdHJpbmcgUmVuZGVyTGF5ZXI6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25z
dAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiUmVu
ZGVyTGF5ZXIgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExv
d2VyY2FzZSksICcgJywgc2l6ZSgpLndpZHRoKCksICd4Jywgc2l6ZSgpLmhlaWdodCgpKTsKLQot
ICAgIGlmICh0cmFuc2Zvcm0oKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBoYXMgdHJhbnNm
b3JtIl9zKTsKLQotICAgIGlmIChoYXNGaWx0ZXIoKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
IiBoYXMgZmlsdGVyIl9zKTsKLQotICAgIGlmIChoYXNCYWNrZHJvcEZpbHRlcigpKQotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiIGhhcyBiYWNrZHJvcCBmaWx0ZXIiX3MpOwotCi0gICAgaWYgKGhh
c0JsZW5kTW9kZSgpKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGhhcyBibGVuZCBtb2RlIl9z
KTsKLQotICAgIGlmIChpc29sYXRlc0JsZW5kaW5nKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIgaXNvbGF0ZXMgYmxlbmRpbmciX3MpOwotCisgICAgU3RyaW5nIGNvbXBvc2l0ZWREZXNjcmlw
dGlvbjsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKLSAgICAgICAgLy8gT2ggZm9yIGJldHRl
ciBTdHJpbmdCdWlsZGVyL1RleHRTdHJlYW0gaW50ZWdyYXRpb24uCiAgICAgICAgIFRleHRTdHJl
YW0gc3RyZWFtOwogICAgICAgICBzdHJlYW0gPDwgIiAiIDw8ICpiYWNraW5nKCk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHN0cmVhbS5yZWxlYXNlKCkpOworICAgICAgICBjb21wb3NpdGVkRGVz
Y3JpcHRpb24gPSBzdHJlYW0ucmVsZWFzZSgpOwogICAgIH0KIAotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlJlbmRlckxheWVyIDB4IiwgaGV4
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgTG93ZXJjYXNlKSwKKyAgICAgICAg
JyAnLCBzaXplKCkud2lkdGgoKSwgJ3gnLCBzaXplKCkuaGVpZ2h0KCksCisgICAgICAgIHRyYW5z
Zm9ybSgpID8gIiBoYXMgdHJhbnNmb3JtIiA6ICIiLAorICAgICAgICBoYXNGaWx0ZXIoKSA/ICIg
aGFzIGZpbHRlciIgOiAiIiwKKyAgICAgICAgaGFzQmFja2Ryb3BGaWx0ZXIoKSA/ICIgaGFzIGJh
Y2tkcm9wIGZpbHRlciIgOiAiIiwKKyAgICAgICAgaGFzQmxlbmRNb2RlKCkgPyAiIGhhcyBibGVu
ZCBtb2RlIiA6ICIiLAorICAgICAgICBpc29sYXRlc0JsZW5kaW5nKCkgPyAiIGlzb2xhdGVzIGJs
ZW5kaW5nIiA6ICIiLAorICAgICAgICBjb21wb3NpdGVkRGVzY3JpcHRpb24pOwogfQogCiBJbnRT
aXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50JiBs
b2NhbFBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0ZTc3ODQ1OTkyMzE0MmE4OTZhOTk3ZWI3ZWNiYzk1
YmI4YmU4ZDhlLi4zMzY4MTZhMTA4NzQyOTY0OGZhNzI4OTk4YjM3MjUzYTU3MGE0NDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtMTU0MSw0NyArMTU0MSwzOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9n
TGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgY2hhciogcAogCiAgICAg
aWYgKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+Y29udGVudHNPcGFxdWUoKSB8fCBiYWNraW5n
LT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkgfHwgYmFja2luZy0+Zm9yZWdyb3VuZExh
eWVyKCkgfHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKICAgICAgICAgbG9nU3RyaW5n
LmFwcGVuZCgnWycpOwotICAgICAgICBib29sIHByZXBlbmRTcGFjZSA9IGZhbHNlOworCisgICAg
ICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiOwogICAgICAgICBpZiAoYmFja2luZy0+Z3JhcGhp
Y3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgib3BhcXVlIik7Ci0gICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOwor
ICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgib3BhcXVlIik7CisgICAgICAgICAgICBwcmVm
aXggPSAiLCAiOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJhY2tpbmctPnBhaW50c0ludG9D
b21wb3NpdGVkQW5jZXN0b3IoKSkgewotICAgICAgICAgICAgaWYgKHByZXBlbmRTcGFjZSkKLSAg
ICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAg
IGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJwYWludHMgaW50byBhbmNlc3RvciIpOwotICAgICAg
ICAgICAgcHJlcGVuZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQo
cHJlZml4LCAicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKKyAgICAgICAgICAgIHByZWZpeCA9ICIs
ICI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkg
fHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKLSAgICAgICAgICAgIGlmIChwcmVwZW5k
U3BhY2UpCi0gICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgICAgICBpZiAoYmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkgJiYgYmFja2luZy0+YmFj
a2dyb3VuZExheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiK2ZvcmVncm91bmQrYmFja2dyb3VuZCIpOwotICAgICAgICAgICAgICAgIHByZXBlbmRTcGFj
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZChwcmVmaXgsICIrZm9y
ZWdyb3VuZCtiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICAgICAgcHJlZml4ID0gIiwgIjsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkpIHsKLSAgICAg
ICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiK2ZvcmVncm91bmQiKTsKLSAgICAg
ICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGxvZ1N0cmlu
Zy5hcHBlbmQocHJlZml4LCAiK2ZvcmVncm91bmQiKTsKKyAgICAgICAgICAgICAgICBwcmVmaXgg
PSAiLCAiOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcu
YXBwZW5kTGl0ZXJhbCgiK2JhY2tncm91bmQiKTsKLSAgICAgICAgICAgICAgICBwcmVwZW5kU3Bh
Y2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQocHJlZml4LCAiK2Jh
Y2tncm91bmQiKTsKKyAgICAgICAgICAgICAgICBwcmVmaXggPSAiLCAiOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYmFja2luZy0+cGFpbnRzU3VicGl4
ZWxBbnRpYWxpYXNlZFRleHQoKSkgewotICAgICAgICAgICAgaWYgKHByZXBlbmRTcGFjZSkKLSAg
ICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAg
IGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJ0ZXh0eSIpOwotICAgICAgICB9CisgICAgICAgIGlm
IChiYWNraW5nLT5wYWludHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpKQorICAgICAgICAgICAg
bG9nU3RyaW5nLmFwcGVuZChwcmVmaXgsICJ0ZXh0eSIpOwogCi0gICAgICAgIGxvZ1N0cmluZy5h
cHBlbmRMaXRlcmFsKCJdICIpOworICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCJdICIpOwogICAg
IH0KIAotICAgIGxvZ1N0cmluZy5hcHBlbmQobGF5ZXIubmFtZSgpKTsKLQotICAgIGxvZ1N0cmlu
Zy5hcHBlbmRMaXRlcmFsKCIgLSAiKTsKLSAgICBsb2dTdHJpbmcuYXBwZW5kKHBoYXNlKTsKKyAg
ICBsb2dTdHJpbmcuYXBwZW5kKGxheWVyLm5hbWUoKSwgIiAtICIsIHBoYXNlKTsKIAogICAgIExP
RyhDb21wb3NpdGluZywgIiVzIiwgbG9nU3RyaW5nLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5k
ZXggNzI0Nzc0YWYzYWFiYzA3M2MxMDliNmJkODQxMDBlMjY1ODFmMWM2Yy4uODE3MDJmNDVkNGMx
NmMwOWI2YjU3NTQ1YjhmOTFkMWRiNmY1ZWVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTU1LDE5ICsxNTUsMTYgQEAgU3RyaW5nIHF1
b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhTdHJpbmdWaWV3IHMpCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSAhPSBzLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHNbaV07
CiAgICAgICAgIGlmIChjID09ICdcXCcpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJcXFxcIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcXFxcIik7CiAgICAgICAg
IH0gZWxzZSBpZiAoYyA9PSAnIicpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJcXFwiIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcXFwiIik7CiAgICAgICAgIH0g
ZWxzZSBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gbm9CcmVha1NwYWNlKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICcpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChjID49IDB4
MjAgJiYgYyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsKLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcXHh7
Iik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoYykpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcXHh7IiwgaGV4KGMpLCAnfScpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJlc3VsdC5hcHBlbmQoJyInKTsKQEAgLTgyNCwxMSArODIxLDEx
IEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAgZm9yIChOb2Rl
KiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewogICAgICAgICBwYXJlbnQgPSBuLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIGlmIChuICE9IG5vZGUpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
IG9mICIpOwogICAgICAgICBpZiAocGFyZW50KSB7CiAgICAgICAgICAgICBpZiAoYm9keSAmJiBu
ID09IGJvZHkpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBjYXJlIHdoYXQgb2Zmc2V0
IGJvZHkgbWF5IGJlIGluIHRoZSBkb2N1bWVudC4KLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiYm9keSIpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImJvZHki
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChuLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTgzNiw3ICs4MzMsNyBAQCBzdGF0aWMgU3RyaW5nIG5v
ZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImNoaWxkICIsIG4tPmNvbXB1dGVOb2RlSW5kZXgoKSwgIiB7IiwgZ2V0
VGFnTmFtZShuKSwgJ30nKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImRvY3Vt
ZW50Iik7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAKaW5kZXggNDgzYmY2OWVlZTI4Y2Vj
MTFjYzViYmMwYzFhZjlmZmYwNmI1YWQ3My4uN2FhNzJiZDhhZjZjZWZkZWNlMDBjZGMzODIyYmRh
N2Y5ZDQzNmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
Y3BwCkBAIC02OSw5ICs2OSw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFBvaW50KFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogdm9pZCBTVkdQYXRo
U3RyaW5nQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBib29s
LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNv
b3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTSAiKTsK
KyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiTSAiKTsKICAgICBlbHNlCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtICIpOworICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCJtICIpOwogCiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCB0
YXJnZXRQb2ludCk7CiB9CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxk
ZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCwgUGF0aENvb3Jk
CiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFi
c29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJMICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJMICIpOwogICAgIGVsc2UK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImwgIik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoImwgIik7CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1
aWxkZXIsIHRhcmdldFBvaW50KTsKIH0KQEAgLTg5LDkgKzg5LDkgQEAgdm9pZCBTVkdQYXRoU3Ry
aW5nQnVpbGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29v
cmRpbmF0ZU0KIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb0hvcml6b250YWwoZmxv
YXQgeCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkgg
Iik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIkggIik7CiAgICAgZWxzZQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaCAiKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiaCAiKTsKIAogICAgIGFwcGVuZE51bWJlcihtX3N0cmluZ0J1aWxk
ZXIsIHgpOwogfQpAQCAtOTksOSArOTksOSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjps
aW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogdm9pZCBT
VkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvVmVydGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5h
dGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlYgIik7CisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIlYgIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgidiAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
diAiKTsKIAogICAgIGFwcGVuZE51bWJlcihtX3N0cmluZ0J1aWxkZXIsIHkpOwogfQpAQCAtMTA5
LDkgKzEwOSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZs
b2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRl
cjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVN
b2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkMgIik7CisgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoIkMgIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiYyAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiYyAi
KTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgcG9pbnQxKTsKICAgICBhcHBl
bmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHBvaW50Mik7CkBAIC0xMjEsOSArMTIxLDkgQEAgdm9p
ZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50MSwgY29uc3QgRmxvYXRQb2kKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9D
dWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHRh
cmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBB
YnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiUyAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiUyAiKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzICIpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzICIpOwogCiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdC
dWlsZGVyLCBwb2ludDIpOwogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRlciwgdGFyZ2V0
UG9pbnQpOwpAQCAtMTMyLDkgKzEzMiw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1
cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsCiB2b2lk
IFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9k
ZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJRICIpOworICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKCJRICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoInEgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInEgIik7
CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHBvaW50MSk7CiAgICAgYXBwZW5k
UG9pbnQobV9zdHJpbmdCdWlsZGVyLCB0YXJnZXRQb2ludCk7CkBAIC0xNDMsOSArMTQzLDkgQEAg
dm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBv
aW50JiBwb2ludDEsIGNvbnN0IEZsb2EKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZl
VG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJUICIpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJUICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoInQgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoInQgIik7CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHRhcmdldFBvaW50
KTsKIH0KQEAgLTE1Myw5ICsxNTMsOSBAQCB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2
ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LAogdm9pZCBT
VkdQYXRoU3RyaW5nQnVpbGRlcjo6YXJjVG8oZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmds
ZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0g
QWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkEgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIkEgIik7CiAgICAgZWxz
ZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYSAiKTsKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiYSAiKTsKIAogICAgIGFwcGVuZE51bWJlcihtX3N0cmlu
Z0J1aWxkZXIsIHIxKTsKICAgICBhcHBlbmROdW1iZXIobV9zdHJpbmdCdWlsZGVyLCByMik7CkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6YXJjVG8oZmxvYXQg
cjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0YKIAogdm9pZCBTVkdQYXRo
U3RyaW5nQnVpbGRlcjo6Y2xvc2VQYXRoKCkKIHsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiWiAiKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJaICIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNDIyY2U1NWQ4MTUyNjhlYWM2N2ZiMjA1ZWZkYjIyNWRhMDVhOGVlZi4uM2M3NTY3YzgxYmJh
ODIyYzQ4YWIwNmVkMjRkZTI5NjQ5ODMwMThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMTc1OSw3ICsxNzU5LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5h
bHM6OmR1bXBNYXJrZXJSZWN0cyhjb25zdCBTdHJpbmcmIG1hcmtlclR5cGVTdHJpbmcpCiAKICAg
ICAvLyBGSVhNRTogVXNpbmcgZml4ZWQgcHJlY2lzaW9uIGhlcmUgZm9yIHdpZHRoIGJlY2F1c2Ug
b2YgdGVzdCByZXN1bHRzIHRoYXQgY29udGFpbiBudW1iZXJzIHdpdGggc3BlY2lmaWMgcHJlY2lz
aW9uLiBXb3VsZCBiZSBuaWNlIHRvIHVwZGF0ZSB0aGUgdGVzdCByZXN1bHRzIGFuZCBtb3ZlIHRv
IGRlZmF1bHQgZm9ybWF0dGluZy4KICAgICBTdHJpbmdCdWlsZGVyIHJlY3RTdHJpbmc7Ci0gICAg
cmVjdFN0cmluZy5hcHBlbmRMaXRlcmFsKCJtYXJrZXIgcmVjdHM6ICIpOworICAgIHJlY3RTdHJp
bmcuYXBwZW5kKCJtYXJrZXIgcmVjdHM6ICIpOwogICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IHJlY3RzKQogICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgnKCcsIHJlY3QueCgpLCAiLCAiLCBy
ZWN0LnkoKSwgIiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihyZWN0LndpZHRo
KCkpLCAiLCAiLCByZWN0LmhlaWdodCgpLCAiKSAiKTsKICAgICByZXR1cm4gcmVjdFN0cmluZy50
b1N0cmluZygpOwpAQCAtNDcwMSwxOCArNDcwMSwxOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRPZmZz
ZXRzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91
dAogewogICAgIGJvb2wganVzdFN0YXJ0aW5nID0gdHJ1ZTsKIAotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgieyAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgieyAiKTsKICAgICBmb3IgKGF1dG8m
IGNvb3JkaW5hdGUgOiBzbmFwT2Zmc2V0cykgewogICAgICAgICBpZiAoIWp1c3RTdGFydGluZykK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBqdXN0U3RhcnRp
bmcgPSBmYWxzZTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoY29vcmRpbmF0ZS5vZmZzZXQudG9V
bnNpZ25lZCgpKTsKICAgICAgICAgaWYgKGNvb3JkaW5hdGUuc3RvcCA9PSBTY3JvbGxTbmFwU3Rv
cDo6QWx3YXlzKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKGFsd2F5cyki
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGFsd2F5cykiKTsKIAogICAgIH0KLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9Iik7CisgICAgYnVpbGRlci5hcHBlbmQoIiB9Iik7
CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNDczMywxNSArNDczMywxNCBAQCBFeGNlcHRp
b25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCYgZWxlbWVu
dCkKICAgICBhdXRvKiBvZmZzZXRJbmZvID0gc2Nyb2xsYWJsZUFyZWEtPnNuYXBPZmZzZXRJbmZv
KCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgaWYgKG9mZnNldEluZm8gJiYgIW9m
ZnNldEluZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoImhvcml6b250YWwgPSAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiaG9yaXpvbnRhbCA9ICIpOwogICAgICAgICBhcHBlbmRPZmZzZXRzKHJlc3VsdCwgb2Zmc2V0
SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKICAgICB9CiAKICAgICBpZiAob2Zmc2V0SW5m
byAmJiAhb2Zmc2V0SW5mby0+dmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCIsICIpOwotCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ2ZXJ0aWNhbCA9ICIpOwor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgi
dmVydGljYWwgPSAiKTsKICAgICAgICAgYXBwZW5kT2Zmc2V0cyhyZXN1bHQsIG9mZnNldEluZm8t
PnZlcnRpY2FsU25hcE9mZnNldHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDdkYmZjY2I0MGFhZDE3M2NkZDQ5NmFlNzhh
MDExZDVhZGJhMWRmMjYuLjhiZTgwODFhNzdhNzMxM2QwMWU5NzUwMTc0OGMwZWQ4NjVlNDEyMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAg
LTE2MiwxNiArMTYyLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtl
clNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0CiBSZXNvdXJjZUVycm9y
IFdvcmtlclNjcmlwdExvYWRlcjo6dmFsaWRhdGVXb3JrZXJSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlv
bikKIHsKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyICYmIHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25zZSBp
cyBub3QgMnh4Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgICAgIHJl
dHVybiB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiUmVz
cG9uc2UgaXMgbm90IDJ4eCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OwogCiAg
ICAgaWYgKCFpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYocmVzcG9uc2UpKSB7Ci0gICAgICAgIFN0
cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBleGVjdXRlICIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNh
dXNlIFwiWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlmZlwiIHdhcyBnaXZlbiBhbmQgaXRz
IENvbnRlbnQtVHlwZSBpcyBub3QgYSBzY3JpcHQgTUlNRSB0eXBlLiIpOwotICAgICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNl
LnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07
CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAi
LCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBz
Y3JpcHQgYmVjYXVzZSBcIlgtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmZcIiB3YXMgZ2l2
ZW4gYW5kIGl0cyBDb250ZW50LVR5cGUgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsKKyAg
ICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJs
KCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkQmxvY2tSZXNwb25zZUR1ZVRvTUlNRVR5cGUocmVzcG9uc2Us
IGRlc3RpbmF0aW9uKSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJl
ZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSAiLCByZXNwb25zZS5taW1lVHlwZSgpLCAi
IGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIFdURk1v
dmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICAgICAgYXV0
byBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBleGVjdXRlICIsIHJlc3BvbnNlLnVy
bCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNl
ICIsIHJlc3BvbnNlLm1pbWVUeXBlKCksICIgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsK
KyAgICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2Uu
dXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsK
ICAgICB9CiAKICAgICByZXR1cm4geyB9OwpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpub3RpZnlFcnJvcigpCiB7CiAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAg
IGlmIChtX2Vycm9yLmlzTnVsbCgpKQotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvciB7
IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCAiRmFpbGVkIHRvIGxvYWQgc2Ny
aXB0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OworICAgICAgICBtX2Vycm9yID0g
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZhaWxlZCB0byBsb2FkIHNj
cmlwdCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKICAgICBub3RpZnlGaW5pc2hl
ZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAppbmRleCAzOTZmNWM3NzUyMmQ1MmU3YTUxMDJiZjJlYzY5MzMwYTFlMjM3
ZWM5Li41NTdkN2YyNjkzOTcxN2Y2MTY4NWFiNTMzNDFlNmRlYmMxNTk5MzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAg
LTEwMzAsMjAgKzEwMzAsMTEgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWIKIFN0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3Qo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbkxpc3QpCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIAogICAgIGZvciAoYXV0byYgdG9wRnJhbWVSZXNvdXJj
ZSA6IGRvbWFpbkxpc3QpIHsKLSAgICAgICAgCiAgICAgICAgIC8vIEluc2VydCBxdWVyeSB3aWxs
IGZhaWwgaWYgdG9wIGZyYW1lIGRvbWFpbiBpcyBub3QgYWxyZWFkeSBpbiB0aGUgZGF0YWJhc2UK
LSAgICAgICAgYXV0byByZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbih0b3BGcmFtZVJlc291cmNlKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQp
IHsKLSAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyInKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRvcEZyYW1lUmVzb3VyY2Uuc3RyaW5n
KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9wRnJh
bWVSZXNvdXJjZSkuc2Vjb25kKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlci5p
c0VtcHR5KCkgPyAiIiA6ICIsICIsICciJywgdG9wRnJhbWVSZXNvdXJjZS5zdHJpbmcoKSwgJyIn
KTsKICAgICB9Ci0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkBAIC0xMjYw
LDE0ICsxMjUxLDggQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQKIHN0YXRpYyBTdHJpbmcgZG9t
YWluc1RvU3RyaW5nKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGRvbWFp
bk5hbWUgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCciJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbk5hbWUuc3RyaW5nKCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgIH0KLQorICAgIGZvciAoY29uc3QgYXV0
byYgZG9tYWluTmFtZSA6IGRvbWFpbnMpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIu
aXNFbXB0eSgpID8gIiIgOiAiLCAiLCAnIicsIGRvbWFpbk5hbWUuc3RyaW5nKCksICciJyk7CiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtMTMzNiwxMSArMTMyMSw4IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiBzdGF0aWMgU3RyaW5nIGJ1aWxkTGlz
dChjb25zdCBXVEY6Okl0ZXJhdG9yUmFuZ2U8SXRlcmF0b3JUeXBlPiYgdmFsdWVzKQogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8gZG9tYWluSUQgOiB2YWx1ZXMp
IHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluSUQpOwot
ICAgIH0KKyAgICBmb3IgKGF1dG8gZG9tYWluSUQgOiB2YWx1ZXMpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCBkb21haW5JRCk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtMTM4NSwxMiArMTM2Nyw4IEBAIEhhc2hN
YXA8dW5zaWduZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5
UHJldmFsZW50UmVzb3VyY2VzCiAgICAgfQogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGZvciAoYXV0byB2YWx1ZSA6IHJlc3VsdHMua2V5cygpKSB7Ci0gICAgICAgIGlmICghYnVp
bGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKLSAgICB9Ci0KKyAgICBmb3IgKGF1dG8g
dmFsdWUgOiByZXN1bHRzLmtleXMoKSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlci5p
c0VtcHR5KCkgPyAiIiA6ICIsICIsIHZhbHVlKTsKICAgICBhdXRvIGRvbWFpbklEc09mSW50ZXJl
c3QgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKICAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnNTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1h
a2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFp
bklEKSBGUk9NIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3Vy
Y2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVz
b3VyY2VEb21haW5JRCIpKTsKQEAgLTE5NTIsMTcgKzE5MzAsMTUgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29t
cGxldGlvbkgKICAgICBzdGQ6OnNvcnQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpLCBX
VEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOlxu
XG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCJSZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3M6XG5cbiIp
OwogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKICAgICAgICAgcmVzb3VyY2VUb1N0
cmluZyhyZXN1bHQsIGRvbWFpbik7CiAKICAgICBhdXRvIHRoaXJkUGFydHlEYXRhID0gYWdncmVn
YXRlZFRoaXJkUGFydHlEYXRhKCk7CiAgICAgaWYgKCF0aGlyZFBhcnR5RGF0YS5pc0VtcHR5KCkp
IHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG5JVFAgRGF0YTpcbiIpOwotICAgICAgICBmb3Ig
KGF1dG8gdGhpcmRQYXJ0eSA6IHRoaXJkUGFydHlEYXRhKSB7Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHRoaXJkUGFydHkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCdcbicpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byB0aGlyZFBhcnR5IDogdGhpcmRQ
YXJ0eURhdGEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRoaXJkUGFydHkudG9TdHJpbmco
KSwgJ1xuJyk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC50b1N0cmluZygp
KTsKIH0KQEAgLTI3NDgsMTcgKzI3MjQsMTIgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGljc0NvdW50KGNvbnN0IFJlZ2kKIAog
c3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBib29sIGZsYWcpCiB7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
ICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobGFiZWwpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChmbGFnID8gIlllcyIgOiAiTm8iKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8i
KTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kTmV4dEVudHJ5KFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIFN0cmluZyBlbnRyeSkKK3N0YXRpYyB2b2lkIGFwcGVuZE5leHRFbnRyeShTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGVudHJ5KQogewotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiICAgICAgICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChlbnRyeSk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICAgICAgIiwgZW50cnks
ICdcbicpOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCBkb21haW5JRCkgY29uc3QKQEAg
LTI4MjEsOSArMjc5Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYKICAgICBpZiAoZGF0YS0+
c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiAgICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZCh0YWJsZU5hbWUpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOlxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICAiLCB0YWJsZU5hbWUsICI6XG4iKTsKICAgICAKICAgICBhdXRvIHJlc3VsdCA9IGdldERvbWFp
blN0cmluZ0Zyb21Eb21haW5JRChkYXRhLT5jb2x1bW5JbnQoMCkpOwogICAgIGFwcGVuZE5leHRF
bnRyeShidWlsZGVyLCByZXN1bHQpOwpAQCAtMjg1MCwxOCArMjgxOSwxNiBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGRv
bWFpbik7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQoIlJl
Z2lzdHJhYmxlIGRvbWFpbjogIiwgZG9tYWluLCAnXG4nKTsKICAgICAKICAgICAvLyBVc2VyIGlu
dGVyYWN0aW9uCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaGFkVXNlckludGVyYWN0aW9u
IiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChIYWRV
c2VySW50ZXJhY3Rpb25JbmRleCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246ICIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogIik7CiAg
ICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKG1fZ2V0UmVzb3VyY2VE
YXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWVJbmRleCkpKSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ3aXRo
aW4gMjQgaG91cnMiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIndpdGhpbiAyNCBob3VycyIp
OwogICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCItMSIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiLTEiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICBh
cHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVkIiwgbV9nZXRSZXNvdXJjZURhdGFC
eURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpKTsKICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKQEAgLTM0MTQsMTUgKzMzODEsMTUgQEAgU3RyaW5nIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphdHRyaWJ1dGlvblRvU3RyaW5nKFdl
YkNvcmU6OlNRTGl0ZVMKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEp
IHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0
YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgIlxuQXR0cmlidXRpb24gcHJpb3JpdHk6ICIs
IHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBlYXJsaWVzdCB0aW1lIHRvIHNlbmQ6ICIpOwogICAg
ICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRvU2VuZCA9PSAtMSkKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIk5vdCBzZXQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiTm90IHNldCIpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
YXV0byBzZWNvbmRzVW50aWxTZW5kID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGVhcmxpZXN0
VGltZVRvU2VuZCkgLSBXYWxsVGltZTo6bm93KCk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoKHNlY29uZHNVbnRpbFNlbmQgPj0gMjRfaCAmJiBzZWNvbmRzVW50aWxTZW5kIDw9IDQ4
X2gpID8gIldpdGhpbiAyNC00OCBob3VycyIgOiAiT3V0c2lkZSAyNC00OCBob3VycyIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGEuIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbk5vIGF0dHJpYnV0aW9uIHRyaWdn
ZXIgZGF0YS4iKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CkBAIC0zNDUwLDkgKzM0MTcsOCBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmco
KQogICAgIHVuc2lnbmVkIHVuYXR0cmlidXRlZE51bWJlciA9IDA7CiAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgIHdoaWxlICh1bmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGlmICghdW5hdHRyaWJ1dGVkTnVtYmVyKQotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudHM6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbldlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAorICAg
ICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0ZWROdW1iZXIgPyAiIiA6ICJVbmF0
dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6IjsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAiLCArK3Vu
YXR0cmlidXRlZE51bWJlciwgJ1xuJywKICAgICAgICAgICAgIGF0dHJpYnV0aW9uVG9TdHJpbmco
dW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKSk7CiAgICAgfQogCkBAIC0zNDY1LDEzICsz
NDMxLDkgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZWRO
dW1iZXIgPSAwOwogICAgIHdoaWxlIChhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVykgewotICAgICAgICBpZiAoIWF0dHJpYnV0ZWROdW1iZXIpIHsKLSAgICAg
ICAgICAgIGlmICh1bmF0dHJpYnV0ZWROdW1iZXIpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkF0dHJpYnV0
ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6XG4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIldl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrYXR0cmlidXRlZE51bWJlciArIHVu
YXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVkTnVtYmVyKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1dGVkTnVtYmVyID8gIlxuIiA6ICIi
LCAiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgIiwgKythdHRy
aWJ1dGVkTnVtYmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAnXG4nLAogICAgICAgICAgICAgYXR0
cmlidXRpb25Ub1N0cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCkpOwogICAgIH0KICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwMTg0ZDJjOGVmMThhY2I3ODlhODBk
NmM0OTcxNzgxMzQ0YjRhNTExLi42MGM2NjI0ZTI5NTRhNzhjOTRiOTk1MTU4YmMyNWVlMmRhOTll
ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuCiAgICAg
fQogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IlJlc291cmNlIGxvYWQgc3RhdGlzdGljczpcblxuIik7CisgICAgcmVzdWx0LmFwcGVuZCgiUmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzOlxuXG4iKTsKICAgICBWZWN0b3I8U3RyaW5nPiBzb3J0ZWRN
YXBFbnRyaWVzOwogICAgIGZvciAoYXV0byYgbWFwRW50cnkgOiBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC52YWx1ZXMoKSkKICAgICAgICAgc29ydGVkTWFwRW50cmllcy5hcHBlbmQobWFwRW50cnkt
PnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCBjYjMxY2ZjZjQ1YTA3ZjZiYmI0ZDMxZmJmM2I5NWI0OGE0ZjUzNzRiLi40NTAwYjg1
YjZmOTY5MmYyOGEwMTVlYTFkYWNkYzRhMTc1ZTRhOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTQsMzUgKzU0LDIwIEBAIGNvbnN0ZXhwciBT
ZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNzUHJvY2Vzc2luZ0ludGVydmFsIHsgNV9zIH07CiBzdGF0
aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiBkb21haW5zKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IGRvbWFpbnMpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIiIDog
IiwgIiwgZG9tYWluLnN0cmluZygpKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwog
fQogCiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
bnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYgZG9tYWluc1RvUmVtb3ZlT3JSZXN0
cmljdFdlYnNpdGVEYXRhRm9yKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBm
b3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ci5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKGFsbCBkYXRhKSIpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6
IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVB
bGxCdXRIdHRwT25seUNvb2tpZXNGb3IpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIoYWxsIGJ1dCBIdHRwT25seSBjb29raWVzKSIpOwotICAgIH0KLSAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikgewotICAgICAgICBpZiAoIWJ1aWxk
ZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5nKCkpOwotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IGNvb2tpZXMpIik7Ci0gICAgfQorICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yLmRvbWFp
bnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIu
aXNFbXB0eSgpID8gIiIgOiAiLCAiLCBkb21haW4uc3RyaW5nKCksICIoYWxsIGRhdGEpIik7Cisg
ICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9SZW1vdmVPclJlc3RyaWN0V2Vic2l0ZURh
dGFGb3IuZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yKQorICAgICAgICBi
dWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgZG9tYWluLnN0cmlu
ZygpLCAiKGFsbCBidXQgSHR0cE9ubHkgY29va2llcykiKTsKKyAgICBmb3IgKGF1dG8mIGRvbWFp
biA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVp
bGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbi5zdHJpbmcoKSwgIihhbGwgYnV0IGNv
b2tpZXMpIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtOTMsNyAr
NzgsNiBAQCBPcGVyYXRpbmdEYXRlIE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGlt
ZSB0aW1lKQogICAgIGludCB5ZWFyRGF5ID0gZGF5SW5ZZWFyKG1zLCB5ZWFyKTsKICAgICBpbnQg
bW9udGggPSBtb250aEZyb21EYXlJblllYXIoeWVhckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7CiAg
ICAgaW50IG1vbnRoRGF5ID0gZGF5SW5Nb250aEZyb21EYXlJblllYXIoeWVhckRheSwgaXNMZWFw
WWVhcih5ZWFyKSk7Ci0KICAgICByZXR1cm4gT3BlcmF0aW5nRGF0ZSB7IHllYXIsIG1vbnRoLCBt
b250aERheSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IGU0M2NlNDIyYmMxYzJlYjMxOTY1N2IyZjkxZGRhZGFiZTVmOWNlYzUu
LmQ0MWFiNDgzMzg5ZmZjMGZhMmFiZWFkZWE2NDZmNzc5Yjg2NzZkYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xODgsNiArMTg4LDEx
IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGlzdGljc1N0b3JlKTsKIH0K
IAorUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKG5ldHdvcmtTZXNzaW9uLCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBpc0Vw
aGVtZXJhbCkpOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlk
RGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTY3Niw2
ICsxNjgxLDc5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwCiAgICAgfSk7CiB9CiAKK1N0cmlu
ZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5Ojp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
IkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFp
bi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPyAnMScgOiAnMCcsICI7IEhh
cyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIiBpbiB0aGUg
bGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0
aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAnKTsKK30KKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
Zmlyc3RQYXJ0eURvbWFpbjsKKyAgICBlbmNvZGVyIDw8IHN0b3JhZ2VBY2Nlc3NHcmFudGVkOwor
ICAgIGVuY29kZXIgPDwgdGltZUxhc3RVcGRhdGVkOworfQorCithdXRvIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5PgoreworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkZWNvZGVkRG9tYWluOworICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKKyAg
ICBpZiAoIWRlY29kZWREb21haW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKKyAgICBkZWNvZGVyID4+IGRl
Y29kZWRTdG9yYWdlQWNjZXNzOworICAgIGlmICghZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBkZWNvZGVk
VGltZUxhc3RVcGRhdGVkOworICAgIGRlY29kZXIgPj4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsK
KyAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1vdmUo
KmRlY29kZWRTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZSgqZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkg
fX07Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6b3BlcmF0b3I9PShjb25zdCBUaGlyZFBhcnR5RGF0
YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpcnN0
UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0eURvbWFpbiAmJiBzdG9yYWdlQWNjZXNzR3Jh
bnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3JhbnRlZDsKK30KKworU3RyaW5nIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OnRvU3RyaW5nKCkgY29uc3QK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIlRoaXJkIFBhcnR5IFJlZ2lzdHJhYmxlIERvbWFpbjogIiwgdGhpcmRQYXJ0eURvbWFp
bi5zdHJpbmcoKSwgIlxuICAgIHsiKTsKKyAgICBmb3IgKGF1dG8gZmlyc3RQYXJ0eSA6IHVuZGVy
Rmlyc3RQYXJ0aWVzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgieyAiLCBmaXJzdFBh
cnR5LnRvU3RyaW5nKCksICIgfSwiKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnfScpOwor
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlEb21haW47Cisg
ICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsKK30KKworYXV0byBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4KK3sKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKKyAgICBkZWNvZGVyID4+IGRl
Y29kZWREb21haW47CisgICAgaWYgKCFkZWNvZGVkRG9tYWluKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lm
aWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKKyAgICBkZWNvZGVyID4+IGRlY29k
ZWRGaXJzdFBhcnRpZXM7CisgICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0aWVzKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21h
aW4pLCBXVEZNb3ZlKCpkZWNvZGVkRmlyc3RQYXJ0aWVzKSB9fTsKK30KKworYm9vbCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpvcGVyYXRvcjwoY29uc3Qg
VGhpcmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiB1bmRlckZpcnN0UGFy
dGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0UGFydGllcy5zaXplKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCA5NjNlYTQ3M2QzMjg4OTc2NjVhZjJlODk5OTdlYmNkMmFi
NmI1ZDI0Li43YWExYTA3YWZjMzIxNzczMWNhOTk0MTBhMjkwM2E0NmQ0YjI5ZjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xMTEsMTAxICsx
MTEsMzQgQEAgcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NTY29wZSA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NTY29wZTsKICAgICB1c2luZyBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3Vs
dCA9IFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0OwogCi0gICAgc3RhdGljIFJl
ZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgaXNFcGhlbWVyYWwpKTsKLSAgICB9CisgICAgc3RhdGlj
IFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwog
CiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCi1zdHJ1Y3QgVGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgewotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIGZpcnN0UGFydHlEb21haW47Ci0gICAgYm9vbCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsK
LSAgICBTZWNvbmRzIHRpbWVMYXN0VXBkYXRlZDsKLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSGFzIGJlZW4gZ3JhbnRlZCBz
dG9yYWdlIGFjY2VzcyB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiOiAiLCBz
dG9yYWdlQWNjZXNzR3JhbnRlZCA/ICcxJyA6ICcwJywgIjsgSGFzIGJlZW4gc2VlbiB1bmRlciAi
LCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiIGluIHRoZSBsYXN0IDI0IGhvdXJzOiAiLCBX
YWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSAtIHRpbWVMYXN0VXBkYXRlZCA8IDI0
X2ggPyAnMScgOiAnMCcpOwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eURvbWFp
bjsKLSAgICAgICAgZW5jb2RlciA8PCBzdG9yYWdlQWNjZXNzR3JhbnRlZDsKLSAgICAgICAgZW5j
b2RlciA8PCB0aW1lTGFzdFVwZGF0ZWQ7Ci0gICAgfQotCi0gICAgc3RhdGljIE9wdGlvbmFsPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQotICAgIHsKLSAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IGRlY29kZWREb21haW47Ci0gICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKLSAg
ICAgICAgaWYgKCFkZWNvZGVkRG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgICAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKLSAgICAg
ICAgZGVjb2RlciA+PiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKLSAgICAgICAgaWYgKCFkZWNvZGVk
U3RvcmFnZUFjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAg
IAotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOwotICAg
ICAgICBkZWNvZGVyID4+IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7Ci0gICAgICAgIGlmICghZGVj
b2RlZFRpbWVMYXN0VXBkYXRlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1v
dmUoKmRlY29kZWRTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZSgqZGVjb2RlZFRpbWVMYXN0VXBkYXRl
ZCkgfX07Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KFRoaXJkUGFydHlEYXRhRm9yU3Bl
Y2lmaWNGaXJzdFBhcnR5IGNvbnN0IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0eURvbWFpbiAmJiBzdG9yYWdlQWNj
ZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3JhbnRlZDsKLSAgICB9Ci19OworICAg
IHN0cnVjdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7CisgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW47CisgICAgICAgIGJvb2wg
c3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CisgICAgICAgIFNlY29uZHMgdGltZUxhc3RVcGRhdGVkOwog
Ci1zdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRoaXJkUGFydHlEb21haW47Ci0gICAgVmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5PiB1bmRlckZpcnN0UGFydGllczsKLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0Ci0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJUaGlyZCBQYXJ0eSBSZWdpc3RyYWJsZSBEb21haW46ICIs
IHRoaXJkUGFydHlEb21haW4uc3RyaW5nKCksICJcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiAgICB7Iik7Ci0KLSAgICAgICAgZm9yIChhdXRvIGZpcnN0UGFydHkg
OiB1bmRlckZpcnN0UGFydGllcykgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJ7ICIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZmlyc3RQYXJ0
eS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IH0sIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ9
Iik7Ci0gICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5RG9tYWluOwotICAgICAgICBlbmNvZGVyIDw8IHVuZGVy
Rmlyc3RQYXJ0aWVzOwotICAgIH0KLQotICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0
YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKLSAgICB7Ci0gICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwotICAgICAgICBkZWNv
ZGVyID4+IGRlY29kZWREb21haW47Ci0gICAgICAgIGlmICghZGVjb2RlZERvbWFpbikKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsK
LSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOwotICAgICAgICBpZiAoIWRl
Y29kZWRGaXJzdFBhcnRpZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgqZGVjb2Rl
ZEZpcnN0UGFydGllcykgfX07Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGhp
cmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuZGVyRmly
c3RQYXJ0aWVzLnNpemUoKSA8IG90aGVyLnVuZGVyRmlyc3RQYXJ0aWVzLnNpemUoKTsKLSAgICB9
Ci19OworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICAgICAgdm9pZCBlbmNv
ZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHN0YXRpYyBPcHRpb25hbDxUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisg
ICAgICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGlnbm9yZXMgZGlmZmVyZW5jZXMgaW4gZGVjb2Rl
ZFRpbWVMYXN0VXBkYXRlZCBpdCBwcm9iYWJseSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlvbiwg
bm90IG9wZXJhdG9yPT0uCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaGlyZFBhcnR5
RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3Qg
VGhpcmRQYXJ0eURhdGEgeworICAgICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGly
ZFBhcnR5RG9tYWluOworICAgICAgICBWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHk+IHVuZGVyRmlyc3RQYXJ0aWVzOworCisgICAgICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OworICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICAg
ICAgc3RhdGljIE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7
CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc29ydHMgYnkgbnVtYmVyIG9mIHVuZGVyRmlyc3RQ
YXJ0aWVzLCBzbyBpdCBwcm9iYWJseSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlvbiwgbm90IG9w
ZXJhdG9yPC4KKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGhpcmRQYXJ0eURhdGEmKSBj
b25zdDsKKyAgICB9OwogCiAgICAgdm9pZCBkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGJjYjkxNzFkOGY5MjFiYTIyNDMz
ZGZiN2EyMzg3Mzg2YWE0ZjI0ODcuLjZhMTlhYzQ1ODFkNDY5Zjk0MmQ5NDk3NjA3NmI2OTIwMGM1
M2ZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAKQEAgLTMwNSw4ICszMDUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tl
cjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVmFs
aQogICAgIH0KIAogICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6
OlNhbWVPcmlnaW4pIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbnNh
ZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiLCByZXF1ZXN0LnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpLCAiIGZyb20gb3JpZ2luICIsIG1fb3JpZ2luLT50b1N0cmluZygpLCAi
LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iKTsKLSAgICAgICAg
aGFuZGxlcihhY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihXVEZNb3ZlKG1l
c3NhZ2UpKSk7CisgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlv
bkhhbmRsZXIobWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBmcm9tIG9yaWdpbiAi
LCBtX29yaWdpbi0+dG9TdHJpbmcoKSwgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLlxuIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBjMmM1M2FiZjVl
ZWIwYjc0YTFlMTUzNjU3OGMwNzdjMmIzZjE1OTljLi4zNjRjMjM2MThiM2NlMjVlMGM0M2I1NGJm
NTM4NTgyYWRhYjgzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtNDU1LDE3ICs0NTUsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rlc3RpbmdT
ZXNzaW8KIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxk
IGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRl
ciB0aGUgbGltaXQsIG90aGVyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRh
cjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KLSAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3Ry
aW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwotCi0gICAgYXV0byBz
ZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCisgICAgYXV0byBzZXNzaW9uID0gV2ViQ29yZTo6
Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKG1ha2VTdHJpbmcoIldlYktpdCBUZXN0LSIsIGdl
dEN1cnJlbnRQcm9jZXNzSUQoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CiAg
ICAgICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICAgICAgaWYgKHNlc3Npb24pCiAgICAgICAgICAgICBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9Ci0KICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwg
V1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VS
TCkgfHwgVVNFKFNPVVApCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDZkYzMyOGVmMzc3YzQ1Y2UxMDJh
ZmYxNWU4MDYxZGE3N2RiMDY5YWYuLmY3N2ZkMTEyYTJkYTBiMmRkOGQ0NjdiM2Q1ZTM4NGZlOTRm
MDhkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVu
dHNUb0ZpbGUoKQogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIganNvbjsKICAgICAgICAgZW50cnkt
PmFzSlNPTihqc29uLCBpbmZvKTsKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsK
KyAgICAgICAganNvbi5hcHBlbmQoIixcbiIpOwogICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGpz
b24udG9TdHJpbmcoKS51dGY4KCk7CiAgICAgICAgIHdyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEu
ZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRl
eCAwYTRhYjI1NjYwYjk5MzNiNjBlYjVhMmFjNDJlMmQ0YWY5YjgxNTNlLi43NThlNDVjNDY4ZDc0
ZmNmZmZlOWE1MTk2MDkyZjA2MWNhMDQ3YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMjI0LDcg
KzIyNCw3IEBAIHZvaWQgRW50cnk6OnNldE5lZWRzVmFsaWRhdGlvbihib29sIHZhbHVlKQogCiB2
b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgY29uc3QgU3RvcmFnZTo6UmVj
b3JkSW5mbyYgaW5mbykgY29uc3QKIHsKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIntcbiIKKyAg
ICBqc29uLmFwcGVuZCgie1xuIgogICAgICAgICAiXCJoYXNoXCI6ICIpOwogICAgIGpzb24uYXBw
ZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5oYXNoQXNTdHJpbmcoKSk7CiAgICAganNvbi5hcHBl
bmQoIixcbiIKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVp
bGRlciYganNvbiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgaW5mbykgY29uc3QKICAgICAg
ICAgIlwidGltZXN0YW1wXCI6ICIsIG1fdGltZVN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWls
bGlzZWNvbmRzKCksICIsXG4iCiAgICAgICAgICJcIlVSTFwiOiAiKTsKICAgICBqc29uLmFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcobV9yZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7Ci0gICAganNvbi5h
cHBlbmRMaXRlcmFsKCIsXG4iCisgICAganNvbi5hcHBlbmQoIixcbiIKICAgICAgICAgIlwiYm9k
eUhhc2hcIjogIik7CiAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGluZm8uYm9keUhh
c2gpOwogICAgIGpzb24uYXBwZW5kKCIsXG4iCkBAIC0yNDQsMTUgKzI0NCwxMiBAQCB2b2lkIEVu
dHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5m
byYgaW5mbykgY29uc3QKICAgICAgICAgIlwiaGVhZGVyc1wiOiB7XG4iKTsKICAgICBib29sIGZp
cnN0SGVhZGVyID0gdHJ1ZTsKICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkcygpKSB7Ci0gICAgICAgIGlmICghZmlyc3RIZWFkZXIpCi0gICAgICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwotICAgICAgICBmaXJzdEhlYWRlciA9IGZhbHNl
OwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIiAgICAiKTsKKyAgICAgICAganNvbi5hcHBl
bmQoc3RkOjpleGNoYW5nZShmaXJzdEhlYWRlciwgZmFsc2UpID8gIiIgOiAiLFxuIiwgIiAgICAi
KTsKICAgICAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGhlYWRlci5rZXkpOwotICAg
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIjogIik7CisgICAgICAgIGpzb24uYXBwZW5kKCI6ICIp
OwogICAgICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoaGVhZGVyLnZhbHVlKTsKICAg
ICB9Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcbiIKKyAgICBqc29uLmFwcGVuZCgiXG4iCiAg
ICAgICAgICJ9XG4iCiAgICAgICAgICJ9Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBm
NTg3NDUyNTdmMjgzZTM2ZjgwN2ZmODU4ZGQ0Yjg4ODNhNTViM2FjLi5hODA3ZmJmMDEyNWUzY2Rm
NzUwZGE2MmVmNzI0ZjZjMWE0NWE1ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTE3OSw4
ICsxNzksNyBAQCBzdGF0aWMgU3RyaW5nIG1ha2VDYWNoZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNl
Q2FjaGVQYXRoKQogCiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgU3RyaW5nIHZlcnNpb25TdWJk
aXJlY3RvcnkgPSBtYWtlU3RyaW5nKHZlcnNpb25EaXJlY3RvcnlQcmVmaXgsIFN0b3JhZ2U6OnZl
cnNpb24pOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
YmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIG1ha2VT
dHJpbmcodmVyc2lvbkRpcmVjdG9yeVByZWZpeCwgU3RvcmFnZTo6dmVyc2lvbikpOwogfQogCiBz
dGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJhc2VE
aXJlY3RvcnlQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAwMGZmOGIyZmU1MDM4ZWNkNDM0ZmM0
NjczOGYzYTA1ZWU4ZDQ4MzNkLi5mN2Y1NjgzMWQxZDc3YTJiNzE2ZDYwN2UzNDBiNjk4NzdlN2E3
OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtNzgsMTYgKzc4LDE1IEBAIHN0YXRpYyBDU3RyaW5n
IGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwiKTsK
IAogICAgICAgICBidWlsZGVyLmFwcGVuZChsYW5ndWFnZXNbaV0pOwogCiAgICAgICAgIGludCBx
dWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwogICAgICAgICBpZiAocXVhbGl0eSA+IDAgJiYgcXVh
bGl0eSA8IDEwMCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI7cT0iKTsK
ICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzhdOwogICAgICAgICAgICAgZ19hc2NpaV9mb3JtYXRk
KGJ1ZmZlciwgOCwgIiUuMmYiLCBxdWFsaXR5IC8gMTAwLjApOwotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI7cT0iLCBidWZm
ZXIpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCAxYWNhZTAwMDBjNDY1
NmY1NDYzMzA1OWMxM2YzYWQyNWJjNGUyNDlkLi5hNmU1MDgzYmQ5MWFmNTAxZTUwZDQwN2RhZTU2
M2ZjZmQ1YjJjOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHJpbmcg
V2ViU29ja2V0VGFzazo6YWNjZXB0ZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICAgICAgYXV0byog
ZXh0ZW5zaW9uID0gU09VUF9XRUJTT0NLRVRfRVhURU5TSU9OKGl0LT5kYXRhKTsKIAogICAgICAg
ICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChTT1VQX1dFQlNPQ0tFVF9FWFRFTlNJT05fR0VUX0NM
QVNTKGV4dGVuc2lvbiktPm5hbWUpKTsKIAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHBhcmFt
cyhzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZ2V0X3Jlc3BvbnNlX3BhcmFtcyhleHRlbnNpb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggNDNhMGNkMTNjZTgzMjNmY2RlNjBmMGFmYzZj
M2ZjOTgxYTE2NzVhNi4uMDgyNTg4MzdhZWQ4YTZlZmM3YzBhMDM2YzA4MDg2ZWI5ZTEwNWQ1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01E
TlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIE5ldHdvcmtN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1
ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBzZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVl
OwogCi0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSwgIi5sb2NhbCIpOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CiAKICAgICBhdXRvIGlwID0gaW5ldF9hZGRyKGlw
QWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcAppbmRleCA1Yzg4MTdlNzRiYTYwMTNmYWMyYzcxM2JmMzdhYjdlZDkzM2QwY2Zl
Li4zYTU4MTRlYjM2ZTU5NjBjZjFmNzc5ZDEwMDA0Mjc3ZGJlZjNjNDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAtMTQzLDEwICsxNDMsOCBAQCB2b2lk
IFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVy
cygpCiB7Ci0gICAgU3RyaW5nIHByb2Nlc3NEZXRhaWxzID0gbWFrZVN0cmluZygiUHJvY2Vzczog
IiwgcHJvY2Vzc05hbWUoKSwgIiBQaWQ6ICIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgJ1xuJyk7
Ci0KLSAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwcm9jZXNzRGV0YWlscy51dGY4KCk7Ci0gICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEo
KSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgYXV0byBwcm9jZXNzRGV0YWlscyA9IG1ha2VT
dHJpbmcoIlByb2Nlc3M6ICIsIHByb2Nlc3NOYW1lKCksICIgUGlkOiAiLCBnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksICdcbicpLnV0ZjgoKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX3Nh
bXBsZUxvZ0ZpbGUsIHByb2Nlc3NEZXRhaWxzLmRhdGEoKSwgcHJvY2Vzc0RldGFpbHMubGVuZ3Ro
KCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVRpbWVyRmlyZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCBj
MjRjMWIzYzU3MjczZTZlMjEyOWE1MTYwYmFhN2ZjNjBmOGU4ODJlLi5kYWFmZDhkOGJkMzI3MWU0
OGE1OWMwNjA4Y2FjZGZlYWU2Nzc1NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtNTIsMTggKzUyLDE4IEBACiAjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgogI2ltcG9ydCA8
d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9T
eXN0ZW1UcmFjaW5nLmg+CiAjaW1wb3J0IDx3dGYvV2FsbFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2ltcG9ydCA8d3RmL3RleHQvY2YvU3Ry
aW5nQ29uY2F0ZW5hdGVDRi5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBv
cnQgPHJvb3RsZXNzLmg+CiAjZW5kaWYKIAotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0K
IFNPRlRfTElOS19TWVNURU1fTElCUkFSWShsaWJzeXN0ZW1faW5mbykKIFNPRlRfTElOS19PUFRJ
T05BTChsaWJzeXN0ZW1faW5mbywgbWJyX2Nsb3NlX2Nvbm5lY3Rpb25zLCBpbnQsICgpLCAoKSk7
CiAKQEAgLTY0Niw4ICs2NDYsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveFBhcmFt
ZXRlcnMoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYQogICAgICAgICAg
ICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXIgPSBjb2RlU2lnbmluZ0lkZW50aWZpZXIocGFyYW1l
dGVycy5jb25uZWN0aW9uSWRlbnRpZmllci54cGNDb25uZWN0aW9uLmdldCgpKTsKICAgICAgICAg
ICAgIGlmIChjbGllbnRJZGVudGlmaWVyLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIGNsaWVu
dElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZpZXI7Ci0gICAgICAgICAgICBT
dHJpbmcgZGVmYXVsdFVzZXJEaXJlY3RvcnlTdWZmaXggPSBtYWtlU3RyaW5nKFN0cmluZyhbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKSwgJysnLCBjbGllbnRJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIHNhbmRib3hQYXJhbWV0ZXJzLnNldFVzZXJEaXJlY3RvcnlTdWZm
aXgoZGVmYXVsdFVzZXJEaXJlY3RvcnlTdWZmaXgpOworICAgICAgICAgICAgc2FuZGJveFBhcmFt
ZXRlcnMuc2V0VXNlckRpcmVjdG9yeVN1ZmZpeChtYWtlU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0sICcrJywgY2xpZW50SWRlbnRpZmllcikpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViTWVt
b3J5U2FtcGxlci5tYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViTWVtb3J5U2Ft
cGxlci5tYWMubW0KaW5kZXggN2QzYTQwNDMwY2Q1MzlhNjI5ZDkyMzk5NmM1MDA0ZmVkM2RmYzE3
YS4uNmRhNzIwMWMyM2E0NDg2ZTU0ZDk0NmNhMDRiMDI4YjFjNjljNzhkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbQpAQCAtMTM4LDM3
ICsxMzgsMzcgQEAgV2ViTWVtb3J5U3RhdGlzdGljcyBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVX
ZWJLaXQoKSBjb25zdAogCiAgICAgV2FsbFRpbWUgbm93ID0gV2FsbFRpbWU6Om5vdygpOwogICAg
ICAgICAKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIlRpbWVzdGFt
cCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiVGltZXN0YW1wIl9zKTsK
ICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKG5vdy5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJUb3RhbCBCeXRlcyBvZiBNZW1vcnkgSW4gVXNlIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKCJUb3RhbCBCeXRlcyBvZiBNZW1vcnkgSW4gVXNlIl9zKTsKICAgICB3ZWJL
aXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7Ci0gICAgd2ViS2l0
TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikp
OworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJGYXN0IE1hbGxvYyBab25lIEJ5
dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGZhc3RNYWxsb2NC
eXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRl
ZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0
YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVsdE1hbGxvY1pvbmVCeXRlc0luVXNlKTsKLSAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRpc3BhdGNoIENvbnRpbnVhdGlvbiBN
YWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgi
RGlzcGF0Y2ggQ29udGludWF0aW9uIE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGRpc3BhdGNoQ29udGludWF0aW9uTWFsbG9jWm9uZUJ5
dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiUHVy
Z2VhYmxlIE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMu
YXBwZW5kKCJQdXJnZWFibGUgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQocHVyZ2VhYmxlTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwotICAg
IHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5
dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJKYXZhU2NyaXB0IEhl
YXAgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVh
cEJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygi
VG90YWwgQnl0ZXMgb2YgQ29tbWl0dGVkIE1lbW9yeSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0
cy5rZXlzLmFwcGVuZCgiVG90YWwgQnl0ZXMgb2YgQ29tbWl0dGVkIE1lbW9yeSJfcyk7CiAgICAg
d2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0b3RhbEJ5dGVzQ29tbWl0dGVkKTsKLSAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUg
Qnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkZhc3QgTWFsbG9j
IFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFz
dE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5
U3RhdHMua2V5cy5hcHBlbmQoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdl
YktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVsdE1hbGxvY1pvbmVCeXRlc0NvbW1p
dHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEaXNwYXRj
aCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoIkRpc3BhdGNoIENvbnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyJf
cyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChkaXNwYXRjaENvbnRpbnVh
dGlvbk1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5
cy5hcHBlbmQoU3RyaW5nKCJQdXJnZWFibGUgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIlB1cmdlYWJsZSBNYWxsb2MgWm9uZSBCeXRlcyJf
cyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChwdXJnZWFibGVNYWxsb2Na
b25lQnl0ZXNDb21taXR0ZWQpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0
cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0
YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1v
cnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7Cisg
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkphdmFTY3JpcHQgU3RhY2sgQnl0ZXMi
X3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3Rh
dHMuc3RhY2tCeXRlcyk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5n
KCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZCgiSmF2YVNjcmlwdCBKSVQgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZh
bHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOwotICAgIHdlYktpdE1lbW9y
eVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiUmVzaWRlbnQgU2l6ZSIpKTsKKyAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiUmVzaWRlbnQgU2l6ZSJfcyk7CiAgICAgd2ViS2l0TWVt
b3J5U3RhdHMudmFsdWVzLmFwcGVuZChyZXNpZGVudFNpemUpOwogICAgIAogICAgIHJldHVybiB3
ZWJLaXRNZW1vcnlTdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggN2IyOWQ3ZGJjYjlhYmUyYmViYTA2ZjI0MmZmZGQx
YjJjNzRhNTBlMS4uNzZlZTZkMjc5YjdhNzI2NTU2OTZiMWY4MTA0OGE1YWE5MTQ5N2RmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTM3ODMsNyArMzc4Myw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHdrU2VyCiAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonLCBleGNlcHRpb25EZXRhaWxzLmxpbmVOdW1iZXIp
OwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMuY29sdW1uTnVtYmVyID4gMCkKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGV4Y2VwdGlvbkRldGFpbHMuY29sdW1u
TnVtYmVyKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGV4Y2VwdGlvbkRldGFpbHMubWVzc2FnZSk7CiAgICAgICAgIGdfdGFza19yZXR1cm5f
bmV3X2Vycm9yKHRhc2ssIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQ
VF9FUlJPUl9TQ1JJUFRfRkFJTEVELApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAwNTRlYWU0
NmUwNzhlMDY4MDU3YWEzOTI0NDI5ZmRjYTBiMmUyNDM4Li40NGM4ZDc1MjNhYTE0ZDIyMjdjZTNk
MDE1NjQyMzhlNjY2ZmEwZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODg4LDcgKzg4
OCw3IEBAIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyCiAgICAgaWYgKGNvbXBvbmVudHMuc2l6ZSgp
ICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyB3aWxkY2FyZGVkTUlN
RVR5cGUgPSBtYWtlU3RyaW5nKGNvbXBvbmVudHNbMF0sICIvKiIpOworICAgIGF1dG8gd2lsZGNh
cmRlZE1JTUVUeXBlID0gbWFrZVN0cmluZyhjb21wb25lbnRzWzBdLCAiLyoiKTsKICAgICBpZiAo
YWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyh3aWxkY2FyZGVkTUlNRVR5cGUpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzAyYWU5NTFiNTBhZTJjYWQxYTk1MTcz
NDQ0NWM3MDkzODVkYjRkMi4uZjhjOWZhYjQ4Yjg5ZGQxN2E4NDI0NjZhMWM4NGRjMTEyNTU1MTQy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBXZQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgU3RyaW5nIG5hbWUg
PSBtYWtlU3RyaW5nKEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG9yaWdpbi50b3BPcmln
aW4uaG9zdCksICIgY29udGVudCIpOworICAgICAgICAgICAgYXV0byBuYW1lID0gbWFrZVN0cmlu
ZyhGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShvcmlnaW4udG9wT3JpZ2luLmhvc3QpLCAi
IGNvbnRlbnQiKTsKICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTdG9yYWdlU3BhY2UocGFnZS0+
bWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgb3JpZ2luLnRvcE9yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSwgbmFtZSwgbmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50U2l6ZSwgY3VycmVudFNpemUs
IHNwYWNlUmVxdWlyZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIHF1b3RhKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihxdW90YSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDhlN2FjN2ZjNjMzNGZlZDYzOWUxNGQx
YzhkODE0N2Q4MDYzNzg1YmIuLmU0OGY1OTkyMGZlNGEzYWIzOTExMjZhMzdjNjMyNzIxOThhMDQ0
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtNDkyLDEyICs0OTIsMTIgQEAgY29uc3QgY2hhciogV2ViQmFja0ZvcndhcmRMaXN0Ojps
b2dnaW5nU3RyaW5nKCkKICAgICBidWlsZGVyLmFwcGVuZCgiV2ViQmFja0ZvcndhcmRMaXN0IDB4
IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgLSAiLCBtX2VudHJp
ZXMuc2l6ZSgpLCAiIGVudHJpZXMsIGhhcyBjdXJyZW50IGluZGV4ICIsIG1fY3VycmVudEluZGV4
ID8gIllFUyIgOiAiTk8iLCAiICgiLCBtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6
IDAsICcpJyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7
ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgY29uc3QgY2hh
ciogcHJlZml4OwogICAgICAgICBpZiAobV9jdXJyZW50SW5kZXggJiYgKm1fY3VycmVudEluZGV4
ID09IGkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAqICIpOworICAgICAg
ICAgICAgcHJlZml4ID0gIiAqICI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cmllc1tp
XS0+bG9nZ2luZ1N0cmluZygpKTsKKyAgICAgICAgICAgIHByZWZpeCA9ICIgLSAiOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nLCBwcmVmaXgsIG1fZW50cmllc1tpXS0+bG9nZ2luZ1N0cmlu
ZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gZGVidWdTdHJpbmcoIlxuIiwgYnVpbGRlci50b1N0
cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCA5MGNmZmE1Y2NiNjAwYTE3ODkyMTVkOTQxMmJiZDNhYWE2YTZlZWE0Li5iYTkzMGZhNGU3Njcz
YjVkNTJlMmY0ZDVhYzM5YTVjYzRmYzNjMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAg
ICAgaWYgKG1fbWVtb3J5U2FtcGxlckVuYWJsZWQpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAgICAgICAKICAgICAgICAgV2FsbFRp
bWUgbm93ID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICBTdHJpbmcgc2FtcGxlTG9nRmlsZVBh
dGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpLCAicGlkIiwgcHJvY2Vzcy5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBzYW1wbGVMb2dGaWxlUGF0aCA9IG1h
a2VTdHJpbmcoIldlYlByb2Nlc3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5v
dy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSksICJwaWQiLCBwcm9jZXNzLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CiAg
ICAgICAgIAogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0
TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwg
bV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKQEAgLTE0NzksNyArMTQ3OSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBkb3VibGUgaW50ZXJ2YWwp
CiAgICAgLy8gRm9yIFdlYlByb2Nlc3MKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Ft
cGxlTG9nU2FuZGJveEhhbmRsZTsgICAgCiAgICAgV2FsbFRpbWUgbm93ID0gV2FsbFRpbWU6Om5v
dygpOwotICAgIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCA9IG1ha2VTdHJpbmcoIldlYlByb2Nl
c3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdy5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSkpOworICAgIGF1dG8gc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5n
KCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpKTsKICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBh
dGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJveEhh
bmRsZSk7CiAgICAgCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9nRmls
ZVBhdGgsIGludGVydmFsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5k
ZXggMDdiMDdiODM1NWRmZGJjZjQ4NWNiMzNmYWIzNjk1ZTc4N2RkMTk3ZS4uMThiMDY0M2IzMzEy
NjRjZjc1YjllODFiZjJlYzMzMmNiZWVlYzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJQYWdlLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzA2LDEzICsz
MDUsOSBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFBvc3Qgb24gdGhlIGNvbnNvbGUgYXMgd2Vs
bCB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGluc3BlY3Rvci4KICAgICAgICAgaWYgKCFlcnJv
ci5pc0NhbmNlbGxhdGlvbigpKSB7Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGVycm9yTWVz
c2FnZTsKLSAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJGYWlsZWQgdG8g
bG9hZCByZXNvdXJjZSIpOwotICAgICAgICAgICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRM
aXRlcmFsKCI6ICIpOwotICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmQoZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3ZWJr
aXRXZWJQYWdlRGlkU2VuZENvbnNvbGVNZXNzYWdlKG1fd2ViUGFnZSwgTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLnRvU3RyaW5nKCksIDAs
IGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBhdXRvIGVycm9yRGVz
Y3JpcHRpb24gPSBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOworICAgICAgICAgICAgYXV0
byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSIsIGVy
cm9yRGVzY3JpcHRpb24uaXNFbXB0eSgpID8gIiIgOiAiOiAiLCBlcnJvckRlc2NyaXB0aW9uKTsK
KyAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdl
LCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3Nh
Z2UsIDAsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjE3
YTc0YTQzNmFlM2RlNGZiNTJmOGY1NTNjZjgxMTU4MDdkMDkwNy4uNWIwY2YwNGEzZDY1MmE3ZGRi
YmIwMjhlN2IyMTQ1Y2QwZjA3ZjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiBzdGF0aWMgdm9pZCBkdW1wSGlzdG9y
eUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIHNpemVfdCBpbmRlbnQsIGJvb2wgaXNDdXJyZW50SXRl
bSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlO
YW1lKQogewogICAgIGlmIChpc0N1cnJlbnRJdGVtKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoImN1cnItPiAgIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJj
dXJyLT4gICIpOwogICAgIGVsc2UgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
ZGVudDsgKytpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyAnKTsKQEAgLTIw
ODUsMjMgKzIwODUsMTkgQEAgc3RhdGljIHZvaWQgZHVtcEhpc3RvcnlJdGVtKEhpc3RvcnlJdGVt
JiBpdGVtLCBzaXplX3QgaW5kZW50LCBib29sIGlzQ3VycmVudEl0ZW0KICAgICAgICAgICAgIHN0
YXJ0ID0gMDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhcnQgKz0gZGlyZWN0b3J5TmFt
ZS5sZW5ndGgoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoZmlsZSB0
ZXN0KToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodXJsLnN0cmluZygpLnN1YnN0
cmluZyhzdGFydCkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKGZpbGUgdGVzdCk6
IiwgU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZyhzdGFydCkpOwogICAgIH0g
ZWxzZQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1cmwuc3RyaW5nKCkpOwotICAgIAor
CiAgICAgYXV0byYgdGFyZ2V0ID0gaXRlbS50YXJnZXQoKTsKLSAgICBpZiAodGFyZ2V0Lmxlbmd0
aCgpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChpbiBmcmFtZSBc
IiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0YXJnZXQpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiKSIpOwotICAgIH0KLSAgICAKKyAgICBpZiAodGFy
Z2V0Lmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIChpbiBmcmFtZSBc
IiIsIHRhcmdldCwgIlwiKSIpOworCiAgICAgaWYgKGl0ZW0uaXNUYXJnZXRJdGVtKCkpCi0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAqKm5hdiB0YXJnZXQqKiIpOwotICAg
IAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAqKm5hdiB0YXJnZXQqKiIpOworCiAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgCisKICAgICBWZWN0b3I8UmVmPEhp
c3RvcnlJdGVtPj4gY2hpbGRyZW47CiAgICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShpdGVtLmNoaWxkcmVuKCkuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogaXRlbS5j
aGlsZHJlbigpKQpAQCAtMzczMCwyNiArMzcyNiwxOCBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFt
ZQogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1
ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWxkRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogICAgIHN3aXRjaCAoaW5jbHVkZUNoaWxk
RnJhbWVzKSB7Ci0gICAgY2FzZSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpO
bzogewotICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRz
QXNTdHJpbmcoKTsKLSAgICAgICAgY2FsbGJhY2socmVzdWx0U3RyaW5nKTsKKyAgICBjYXNlIENv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5vOgorICAgICAgICBjYWxsYmFjayht
X21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lczo6WWVzOiB7CisgICAg
Y2FzZSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzOjpZZXM6CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgZm9yIChSZWZQdHI8RnJhbWU+IGZyYW1lID0g
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dFJlbmRlcmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3ZWJGcmFtZSA9
IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIlxuXG4iKTsKLQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlYkZyYW1l
LT5jb250ZW50c0FzU3RyaW5nKCkpOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0UmVuZGVyZWQoKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpKQorICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiXG5c
biIsIHdlYkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCkpOwogICAgICAgICB9Ci0KICAgICAgICAg
Y2FsbGJhY2soYnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IH0KIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM3NzAsOCArMzc1OCw3IEBAIHN0YXRpYyBG
cmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgICAgIGlmIChmcmFtZS0+
c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIH0K
LQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggOTVlZjIyOTRhOTc2Zjg0NGVjM2E0OTVlYmJiZTNiM2Zk
OTZhNzRkNy4uZWY5ZDFjZTZmZTIwYjk3NzY1NDA5ZjY2MDA3N2MwNjg5YWY4OTZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNjMsMTAgKzYzLDggQEAgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVD
VElPTikKLSAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hh
cmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90ZWhyd2lzZSBz
YW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4K
LSAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRD
dXJyZW50UHJvY2Vzc0lEKCkpOwotCi0gICAgYXV0byBzZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgIC8vIFNlc3Npb24gbmFtZSBzaG91bGQgYmUgc2hvcnQgZW5vdWdoIGZvciBzaGFyZWQg
bWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVuZGVyIHRoZSBsaW1pdCwgb3RoZXJ3aXNlIHNhbmRi
b3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxyZGFyOi8vcHJvYmxlbS8xMzY0Mjg1Mj4pLgorICAg
IGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihtYWtl
U3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNv
b2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJv
Y2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBAIC04NiwxMyArODQsMTMgQEAgdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNl
c3Npb25JRCwgY28KICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IG1ha2VTdHJp
bmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtl
U3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247CiAgICAgaWYgKHNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBzdG9yYWdlU2Vz
c2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihpZGVudGlmaWVyLmdl
dCgpKTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihjZklk
ZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoaWRl
bnRpZmllci5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
Y29va2llU3RvcmFnZTsKICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpw
cm9jZXNzTWF5VXNlQ29va2llQVBJKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggMmVlZWY3MDJl
ZGMzNjMxNmY0NWI2MDEzYTEwNWY3NjA0M2QzMzQwNS4uOGVhMjFiNDQ0MzYyYjlkNDM5NjI5M2Fh
MTBhYTU5ZTBiYTY0MWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTM3MiwyMyArMzcyLDE2IEBA
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVs
cykKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUxhYmVsczsgaSsrKSB7CiAgICAgICAgICAg
ICBTdHJpbmcgbGFiZWwgPSBbbGFiZWxzIG9iamVjdEF0SW5kZXg6aV07CiAKLSAgICAgICAgICAg
IGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIGVuZHNX
aXRoV29yZENoYXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgoKSAhPSAw
KSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyID0gd29yZFJlZ0V4cC5nZXQo
KS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Ci0gICAgICAgICAgICAgICAgZW5k
c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxh
YmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhX
b3JkQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJh
Y3RlciA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7CisgICAgICAg
ICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNo
KGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAgICAgICAgICAgICAgICBlbmRzV2l0aFdv
cmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJl
bC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoaSAhPSAwKQotICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCd8
Jyk7CiAgICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHdvcmQgYm91bmRhcmllcyBvbmx5IGlmIGxh
YmVsIHN0YXJ0cy9lbmRzIHdpdGggIndvcmQgY2hhcmFjdGVycyIuCi0gICAgICAgICAgICAvLyBJ
ZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRhcmllcywgdGhpcyB3b3VsZG4ndCB3
b3JrIGZvciBsYW5ndWFnZXMKLSAgICAgICAgICAgIC8vIHN1Y2ggYXMgSmFwYW5lc2UuCi0gICAg
ICAgICAgICBpZiAoc3RhcnRzV2l0aFdvcmRDaGFyKQotICAgICAgICAgICAgICAgIHBhdHRlcm4u
YXBwZW5kTGl0ZXJhbCgiXFxiIik7Ci0gICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZChsYWJlbCk7
Ci0gICAgICAgICAgICBpZiAoZW5kc1dpdGhXb3JkQ2hhcikKLSAgICAgICAgICAgICAgICBwYXR0
ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOworICAgICAgICAgICAgLy8gSWYgd2UgYWx3YXlzIHNl
YXJjaGVkIGZvciB3b3JkIGJvdW5kYXJpZXMsIHRoaXMgd291bGRuJ3Qgd29yayBmb3IgbGFuZ3Vh
Z2VzIHN1Y2ggYXMgSmFwYW5lc2UuCisgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZChpID8gInwi
IDogIiIsIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID8gIlxcYiIgOiAiIiwgbGFiZWwsIGVuZHNX
aXRoV29yZENoYXJhY3RlciA/ICJcXGIiIDogIiIpOwogICAgICAgICB9CiAgICAgICAgIHBhdHRl
cm4uYXBwZW5kKCcpJyk7CiAgICAgICAgIHJlc3VsdCA9IG5ldyBSZWd1bGFyRXhwcmVzc2lvbihw
YXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggZmZjMDgzM2ZiYzUx
ODY3YTlmNzRmYmI2NGFhMWI5YmVkMGIyMjRkZS4uZWQzNzc2YjBjMDFiNjM4MWZjNWM2NzI5Yzkx
Njc5ZWY3OTEzZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNz
aWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNl
LmNwcApAQCAtNjA2LDEzICs2MDYsMTMgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2Fj
Y0tleWJvYXJkU2hvcnRjdXQoVkFSSUFOVCB2Q2hpbGQsIF9fZGVyZWZfb3B0X291dAogICAgICAg
ICAvLyBDdHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNETiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBz
aG9ydGN1dCBzdHJpbmdzCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgbG9jYWxpemVkIGFuZCBk
ZWZpbmVzIHRoZSBzZXBhcmF0b3IgYXMgIisiLgogICAgICAgICBpZiAobW9kaWZpZXJzLmNvbnRh
aW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDb250cm9sS2V5KSkKLSAgICAgICAgICAgIGFj
Y2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ3RybCsiKTsKKyAgICAgICAg
ICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kKCJDdHJsKyIpOwogICAgICAgICBp
ZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpKQot
ICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBbHQr
Iik7CisgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnNCdWlsZGVyLmFwcGVuZCgiQWx0KyIp
OwogICAgICAgICBpZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVy
OjpTaGlmdEtleSkpCi0gICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnNCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIlNoaWZ0KyIpOworICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRl
ci5hcHBlbmQoIlNoaWZ0KyIpOwogICAgICAgICBpZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBsYXRm
b3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KSkKLSAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlm
aWVyc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2luKyIpOworICAgICAgICAgICAgYWNjZXNzS2V5
TW9kaWZpZXJzQnVpbGRlci5hcHBlbmQoIldpbisiKTsKICAgICAgICAgYWNjZXNzS2V5TW9kaWZp
ZXJzID0gYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KICAgICAq
c2hvcnRjdXQgPSBCU3RyaW5nKFN0cmluZyhhY2Nlc3NLZXlNb2RpZmllcnMgKyBhY2Nlc3NLZXkp
KS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDAwYTAyMmQ0
YzEzODk0YjZhYjQwYjcwMjBjYTlmYjU2MzNlODM2ZDcuLmMxMWFjOWQ5N2RiYWZlMmEzZjI4NDc3
Y2NlMDQ0MWQ5Yjk3NzAzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02
MjgwLDggKzYyODAsOCBAQCBzdGF0aWMgdm9pZCBjb21wb3NpdGlvblRvVW5kZXJsaW5lcyhjb25z
dCBWZWN0b3I8RFdPUkQ+JiBjbGF1c2VzLCBjb25zdCBWZWN0b3I8QgogI2RlZmluZSBBUFBFTkRf
QVJHVU1FTlRfTkFNRShuYW1lKSBcCiAgICAgaWYgKGxwYXJhbSAmIG5hbWUpIHsgXAogICAgICAg
ICBpZiAobmVlZHNDb21tYSkgXAotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwg
Iik7IFwKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoI25hbWUpOyBcCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCIsICIpOyBcCisgICAgICAgIHJlc3VsdC5hcHBlbmQoI25hbWUpOyBc
CiAgICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlOyBcCiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWFiMDgzZjFlMDdkNDVlODhhZGIx
NDAxZGJiNGMyMTViNTM3ODU0YS4uMWNmZjA1MmRhMzQzNzFkOTVjOGZiODc1ZTc3OTJkMDAwNWI1
YjRlYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFk
IG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUNvbW1hbmQp
OiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKTogTWFkZSBsb3RzIG9mIGZpeGVzIHRvIGNvZGUgaW5zaWRlICNpZiBURVNU
X09VVFBVVCwKKyAgICAgICAgd2hpY2ggaGFzbid0IGNvbXBpbGVkIGluIGEgbG9uZyB0aW1lLiBT
dGlsbCBub3QgMTAwJSB0aGVyZSwgYnV0IGNsb3Nlci4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVGV4dENvZGVjLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3REZWNvZGUpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRl
eHQgY29uc3QpOiBEaXR0by4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2Nh
bCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ0J1aWxkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVp
bGRlci5jcHAKaW5kZXggZDZlMDVlYzMzN2ZkNDA2M2RlYTVhOWM0YmI1NGI3ZGQ1MjIwMTg5Yi4u
NjVkNWZkZDVlYTVhYzZhMGMwMjkzMTRmNGUwOGVjMDlhZDBhNDA0YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKQEAgLTQxNCw3ICs0MTQs
NyBAQCBURVNUKFN0cmluZ0J1aWxkZXJUZXN0LCBUb0F0b21TdHJpbmdPbkVtcHR5KQogICAgIH0K
ICAgICB7IC8vIENsZWFyZWQgU3RyaW5nQnVpbGRlci4KICAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIldlYktpdCIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiV2ViS2l0Iik7CiAgICAgICAgIGJ1aWxkZXIuY2xlYXIoKTsKICAg
ICAgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gYnVpbGRlci50b0F0b21TdHJpbmcoKTsKICAg
ICAgICAgRVhQRUNUX0VRKGVtcHR5QXRvbSgpLCBhdG9tU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDU4NDhjMmE5
MzNmNTk3Njk3NzQ1N2Q2YmE4MmIyNTAxN2YxZTRhMjkuLjA4MzFhYmM5MzY0YWQ3N2FjN2UzN2Ez
MDBmYzViNThhMDhlNTBlNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMTAxLDEzICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBy
ZXNldFRlc3RTdGF0ZSgpCiAKIHN0YXRpYyBTdHJpbmcgY3JlYXRlQ29tbWFuZChjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcGF5bG9hZCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGNv
bW1hbmQ7Ci0gICAgY29tbWFuZC5hcHBlbmRMaXRlcmFsKCJlY2hvIFwiIik7Ci0gICAgY29tbWFu
ZC5hcHBlbmQocGF5bG9hZCk7Ci0gICAgY29tbWFuZC5hcHBlbmRMaXRlcmFsKCJcIiA+ICIpOwot
ICAgIGNvbW1hbmQuYXBwZW5kKHBhdGgpOwotCi0gICAgcmV0dXJuIGNvbW1hbmQudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiZWNobyBcIiIsIHBheWxvYWQsICJcIiA+ICIsIHBh
dGgpOwogfQogCiBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCkBAIC0yNjMsMTEgKzI1Nyw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dERlbGV0aW9uKQogICAgIH0pOwogCiAgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgY29tbWFuZDsKLSAgICAgICAgY29tbWFu
ZC5hcHBlbmRMaXRlcmFsKCJybSAtZiAiKTsKLSAgICAgICAgY29tbWFuZC5hcHBlbmQodGVtcEZp
bGVQYXRoKCkpOwotCi0gICAgICAgIGF1dG8gcmMgPSBzeXN0ZW0oY29tbWFuZC50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBhdXRvIHJjID0gc3lzdGVtKG1ha2VTdHJpbmcoInJt
IC1mICIsIHRlbXBGaWxlUGF0aCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05F
KHJjLCAtMSk7CiAgICAgICAgIGlmIChyYyA9PSAtMSkKICAgICAgICAgICAgIGRpZEZpbmlzaCA9
IHRydWU7CkBAIC0zMjAsMTEgKzMxMCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dENoYW5nZUFuZFRoZW5EZWxldGUpCiAgICAgcmVzZXRUZXN0U3RhdGUoKTsKIAogICAgIHRlc3RR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAgICAgICBTdHJpbmdCdWlsZGVy
IGNvbW1hbmQ7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgicm0gLWYgIik7Ci0gICAg
ICAgIGNvbW1hbmQuYXBwZW5kKHRlbXBGaWxlUGF0aCgpKTsKLQotICAgICAgICBhdXRvIHJjID0g
c3lzdGVtKGNvbW1hbmQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgYXV0byBy
YyA9IHN5c3RlbShtYWtlU3RyaW5nKCJybSAtZiAiLCB0ZW1wRmlsZVBhdGgoKSkudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAgICAgICBpZiAocmMgPT0gLTEp
CiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpAQCAtMzU5LDExICszNDUsNyBAQCBURVNU
X0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQog
ICAgIH0pOwogCiAgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFN0cmluZ0J1aWxkZXIgY29tbWFuZDsKLSAgICAgICAgY29tbWFuZC5hcHBlbmRMaXRl
cmFsKCJybSAtZiAiKTsKLSAgICAgICAgY29tbWFuZC5hcHBlbmQodGVtcEZpbGVQYXRoKCkpOwot
Ci0gICAgICAgIGF1dG8gcmMgPSBzeXN0ZW0oY29tbWFuZC50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBhdXRvIHJjID0gc3lzdGVtKG1ha2VTdHJpbmcoInJtIC1mICIsIHRlbXBG
aWxlUGF0aCgpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05FKHJjLCAtMSk7CiAg
ICAgICAgIGlmIChyYyA9PSAtMSkKICAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAKaW5kZXggNjU1ZjZj
YjFlZGIxZTU2NTMwOWIzZDU2OGYyYjNjMWFiOTM2YTk3Ni4uOGRjOWFhNjA0MDViMjYzYmVmMzRi
N2E2ZWQ4OGM3MThlZjY2NWEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0xvZ2dpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Mb2dnaW5nLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFRFU1RfRihMb2dnaW5nVGVzdCwg
SW5pdGlhbGl6YXRpb24pCiAgICAgV1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3Ry
aW5nKHRlc3RMb2dDaGFubmVscywgbG9nQ2hhbm5lbENvdW50LCAiQ2hhbm5lbDE9Zm9vIik7CiAg
ICAgRVhQRUNUX0VRKFRlc3RDaGFubmVsMS5sZXZlbCwgV1RGTG9nTGV2ZWw6OkVycm9yKTsKICNp
ZiBURVNUX09VVFBVVAotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJVbmtub3du
IGxvZ2dpbmcgbGV2ZWw6IGZvbyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCku
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiVW5rbm93biBsb2dnaW5nIGxldmVsOiBmb28iKSk7
CiAjZW5kaWYKIAogICAgIFdURkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyh0
ZXN0TG9nQ2hhbm5lbHMsIGxvZ0NoYW5uZWxDb3VudCwgIkNoYW5uZWwxPXdhcm5pbmciKTsKQEAg
LTE5Niw0MCArMTk2LDQwIEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgV1RGV2lsbExvZ1dpdGhMZXZl
bCkKIFRFU1RfRihMb2dnaW5nVGVzdCwgTE9HKQogewogICAgIExPRyhDaGFubmVsMSwgIkxvZyBt
ZXNzYWdlLiIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJMb2cgTWVzc2Fn
ZS4iLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2UoIkxvZyBNZXNzYWdlLiIpKTsKIH0KIAogVEVTVF9GKExvZ2dpbmdUZXN0LCBMT0df
V0lUSF9MRVZFTCkKIHsKICAgICBMT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9nTGV2ZWw6
OkVycm9yLCAiR28gYW5kIGJvaWwgeW91ciBib3R0b21zLCB5b3Ugc29ucyBvZiBhIHNpbGx5IHBl
cnNvbi4iKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygic29ucyBvZiBhIHNp
bGx5IHBlcnNvbi4iLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5z
SWdub3JpbmdBU0NJSUNhc2UoInNvbnMgb2YgYSBzaWxseSBwZXJzb24uIikpOwogCiAgICAgTE9H
X1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpXYXJuaW5nLCAiWW91IGRvbid0IGZy
aWdodGVuIHVzLCBFbmdsaXNoIHBpZyBkb2dzLiIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0
KCkubGVuZ3RoKCkpOwogCiAgICAgV1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEs
IFdURkxvZ0xldmVsOjpJbmZvKTsKICAgICBMT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9n
TGV2ZWw6Oldhcm5pbmcsICJJJ20gRnJlbmNoLiBXaHkgZG8geW91IHRoaW5rIEkgaGF2ZSB0aGlz
IG91dHJhZ2VvdXMgYWNjZW50LCB5b3Ugc2lsbHkga2luZz8iKTsKLSAgICBFWFBFQ1RfVFJVRShv
dXRwdXQoKS5jb250YWlucygib3V0cmFnZW91cyBhY2NlbnQiLCBmYWxzZSkpOworICAgIEVYUEVD
VF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIm91dHJhZ2VvdXMgYWNj
ZW50IikpOwogCiAgICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1
ZywgIllvdSBkb24ndCBmcmlnaHRlbiB1cyB3aXRoIHlvdXIgc2lsbHkga25lZXMtYmVudCBydW5u
aW5nIGFyb3VuZCBhZHZhbmNpbmcgYmVoYXZpb3IhIik7CiAgICAgRVhQRUNUX0VRKDB1LCBvdXRw
dXQoKS5sZW5ndGgoKSk7CiAKICAgICBXVEZTZXRMb2dDaGFubmVsTGV2ZWwoJlRlc3RDaGFubmVs
MSwgV1RGTG9nTGV2ZWw6OkRlYnVnKTsKICAgICBMT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RG
TG9nTGV2ZWw6OkRlYnVnLCAiR28gYW5kIHRlbGwgeW91ciBtYXN0ZXIgdGhhdCB3ZSBoYXZlIGJl
ZW4gY2hhcmdlZCBieSBHb2Qgd2l0aCBhIHNhY3JlZCBxdWVzdC4iKTsKLSAgICBFWFBFQ1RfVFJV
RShvdXRwdXQoKS5jb250YWlucygic2FjcmVkIHF1ZXN0IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzYWNyZWQgcXVlc3QiKSk7
CiB9CiAKIFRFU1RfRihMb2dnaW5nVGVzdCwgUkVMRUFTRV9MT0cpCiB7CiAgICAgUkVMRUFTRV9M
T0coQ2hhbm5lbDEsICJMb2cgbWVzc2FnZS4iKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5j
b250YWlucygiTG9nIE1lc3NhZ2UuIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQo
KS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJMb2cgTWVzc2FnZS4iKSk7CiB9CiAKIFRFU1Rf
RihMb2dnaW5nVGVzdCwgUkVMRUFTRV9MT0dfSUYpCiB7CiAgICAgYm9vbCBlbmFibGVkID0gdHJ1
ZTsKICAgICBSRUxFQVNFX0xPR19JRihlbmFibGVkLCBDaGFubmVsMSwgIllvdXIgbW90aGVyIHdh
cyBhIGhhbXN0ZXIsIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoImhhbXN0
ZXIsIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKCJoYW1zdGVyLCIpKTsKIAogICAgIGVuYWJsZWQgPSBmYWxzZTsKICAgICBSRUxF
QVNFX0xPR19JRihlbmFibGVkLCBDaGFubmVsMSwgImFuZCB5b3VyIGZhdGhlciBzbWVsdCBvZiBl
bGRlcmJlcnJpZXMgLi4uIik7CkBAIC0yMzksMjggKzIzOSwyOCBAQCBURVNUX0YoTG9nZ2luZ1Rl
c3QsIFJFTEVBU0VfTE9HX0lGKQogVEVTVF9GKExvZ2dpbmdUZXN0LCBSRUxFQVNFX0xPR19XSVRI
X0xFVkVMKQogewogICAgIFJFTEVBU0VfTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xl
dmVsOjpFcnJvciwgIllvdSBkb24ndCBmcmlnaHRlbiB1cywgRW5nbGlzaCBwaWcgZG9ncy4iKTsK
LSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygicGlnIGRvZ3MuIiwgZmFsc2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJwaWcg
ZG9ncy4iKSk7CiAKICAgICBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dM
ZXZlbDo6V2FybmluZywgIkdvIGFuZCBib2lsIHlvdXIgYm90dG9tcywgeW91IHNvbnMgb2YgYSBz
aWxseSBwZXJzb24uIik7CiAgICAgRVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAK
ICAgICBXVEZTZXRMb2dDaGFubmVsTGV2ZWwoJlRlc3RDaGFubmVsMSwgV1RGTG9nTGV2ZWw6Oklu
Zm8pOwogICAgIFJFTEVBU0VfTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpX
YXJuaW5nLCAiSSdtIEZyZW5jaC4gV2h5IGRvIHlvdSB0aGluayBJIGhhdmUgdGhpcyBvdXRyYWdl
b3VzIGFjY2VudCwgeW91IHNpbGx5IGtpbmc/Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCku
Y29udGFpbnMoIm91dHJhZ2VvdXMgYWNjZW50IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShv
dXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJvdXRyYWdlb3VzIGFjY2VudCIpKTsK
IAogICAgIFJFTEVBU0VfTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1
ZywgIllvdSBkb24ndCBmcmlnaHRlbiB1cyB3aXRoIHlvdXIgc2lsbHkga25lZXMtYmVudCBydW5u
aW5nIGFyb3VuZCBhZHZhbmNpbmcgYmVoYXZpb3IhIik7CiAgICAgRVhQRUNUX0VRKDB1LCBvdXRw
dXQoKS5sZW5ndGgoKSk7CiAKICAgICBXVEZTZXRMb2dDaGFubmVsTGV2ZWwoJlRlc3RDaGFubmVs
MSwgV1RGTG9nTGV2ZWw6OkRlYnVnKTsKICAgICBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKENoYW5u
ZWwxLCBXVEZMb2dMZXZlbDo6RGVidWcsICJHbyBhbmQgdGVsbCB5b3VyIG1hc3RlciB0aGF0IHdl
IGhhdmUgYmVlbiBjaGFyZ2VkIGJ5IEdvZCB3aXRoIGEgc2FjcmVkIHF1ZXN0LiIpOwotICAgIEVY
UEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJzYWNyZWQgcXVlc3QiLCBmYWxzZSkpOworICAg
IEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInNhY3JlZCBx
dWVzdCIpKTsKIH0KIAogVEVTVF9GKExvZ2dpbmdUZXN0LCBSRUxFQVNFX0xPR19XSVRIX0xFVkVM
X0lGKQogewogICAgIGJvb2wgZW5hYmxlZCA9IHRydWU7CiAgICAgUkVMRUFTRV9MT0dfV0lUSF9M
RVZFTF9JRihlbmFibGVkLCBDaGFubmVsMSwgV1RGTG9nTGV2ZWw6OkVycm9yLCAiSXMgdGhlcmUg
c29tZW9uZSBlbHNlIHVwIHRoZXJlIHRoYXQgd2UgY2FuIHRhbGsgdG8/Iik7Ci0gICAgRVhQRUNU
X1RSVUUob3V0cHV0KCkuY29udGFpbnMoInNvbWVvbmUgZWxzZSIsIGZhbHNlKSk7CisgICAgRVhQ
RUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic29tZW9uZSBlbHNl
IikpOwogCiAgICAgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTF9JRihlbmFibGVkLCBDaGFubmVsMSwg
V1RGTG9nTGV2ZWw6OkRlYnVnLCAiTm8sIG5vdyBnbyBhd2F5Iik7CiAgICAgRVhQRUNUX0VRKDB1
LCBvdXRwdXQoKS5sZW5ndGgoKSk7CkBAIC0yNzgsNyArMjc4LDcgQEAgVEVTVF9GKExvZ2dpbmdU
ZXN0LCBMb2dnZXIpCiAgICAgV1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdU
RkxvZ0xldmVsOjpFcnJvcik7CiAgICAgRVhQRUNUX1RSVUUobG9nZ2VyLT53aWxsTG9nKFRlc3RD
aGFubmVsMSwgV1RGTG9nTGV2ZWw6OkVycm9yKSk7CiAgICAgbG9nZ2VyLT5lcnJvcihUZXN0Q2hh
bm5lbDEsICJZb3UncmUgdXNpbmcgY29jb251dHMhIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0
KCkuY29udGFpbnMoIllvdSdyZSB1c2luZyBjb2NvbnV0cyEiLCBmYWxzZSkpOworICAgIEVYUEVD
VF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIllvdSdyZSB1c2luZyBj
b2NvbnV0cyEiKSk7CiAgICAgbG9nZ2VyLT53YXJuaW5nKFRlc3RDaGFubmVsMSwgIllvdSdyZSB1
c2luZyBjb2NvbnV0cyEiKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsK
ICAgICBsb2dnZXItPmluZm8oVGVzdENoYW5uZWwxLCAiWW91J3JlIHVzaW5nIGNvY29udXRzISIp
OwpAQCAtMjg3LDEzICsyODcsMTMgQEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dnZXIpCiAgICAg
RVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAKICAgICBsb2dnZXItPmVycm9yKFRl
c3RDaGFubmVsMSwgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTG9nZ2luZ1Rlc3Q6OkxvZ2dl
ciIsIHRoaXMpICwgIjogdGVzdCBvdXRwdXQiKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5j
b250YWlucygiTG9nZ2luZ1Rlc3Q6OkxvZ2dlcigiLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVF
KG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIkxvZ2dpbmdUZXN0OjpMb2dnZXIo
IikpOwogCiAgICAgbG9nZ2VyLT5lcnJvcihUZXN0Q2hhbm5lbDEsICJXaGF0IGlzICIsIDEsICIg
KyAiICwgMTIuNUYsICI/Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIldo
YXQgaXMgMSArIDEyLjU/IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJXaGF0IGlzIDEgKyAxMi41PyIpKTsKIAogICAgIGxvZ2dl
ci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiV2hhdCwgIiwgInJpZGRlbiBvbiBhIGhvcnNlPyIpOwot
ICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJXaGF0LCByaWRkZW4gb24gYSBob3Jz
ZT8iLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2UoIldoYXQsIHJpZGRlbiBvbiBhIGhvcnNlPyIpKTsKIAogICAgIGxvZ2dlci0+c2V0
RW5hYmxlZCh0aGlzLCBmYWxzZSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxvZ2dlci0+ZW5hYmxlZCgp
KTsKQEAgLTMwMywxMSArMzAzLDExIEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VyKQogICAg
IGxvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCB0cnVlKTsKICAgICBFWFBFQ1RfVFJVRShsb2dnZXIt
PmVuYWJsZWQoKSk7CiAgICAgbG9nZ2VyLT5lcnJvcihUZXN0Q2hhbm5lbDEsICJZb3UndmUgZ290
ICIsIDIsICIgZW1wdHkgaGFsdmVzIG9mICIsICJjb2NvbnV0cyEiKTsKLSAgICBFWFBFQ1RfVFJV
RShvdXRwdXQoKS5jb250YWlucygiWW91J3ZlIGdvdCAyIGVtcHR5IGhhbHZlcyBvZiBjb2NvbnV0
cyEiLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2UoIllvdSd2ZSBnb3QgMiBlbXB0eSBoYWx2ZXMgb2YgY29jb251dHMhIikpOwogCiAg
ICAgV1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJv
cik7CiAgICAgbG9nZ2VyLT5sb2dBbHdheXMoVGVzdENoYW5uZWwxLCAiSSBzaGFsbCB0YXVudCB5
b3UgYSBzZWNvbmQgdGltZSEiKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygi
SSBzaGFsbCB0YXVudCB5b3UgYSBzZWNvbmQgdGltZSEiLCBmYWxzZSkpOworICAgIEVYUEVDVF9U
UlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIkkgc2hhbGwgdGF1bnQgeW91
IGEgc2Vjb25kIHRpbWUhIikpOwogCiAgICAgbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNl
KTsKICAgICBFWFBFQ1RfRkFMU0UobG9nZ2VyLT53aWxsTG9nKFRlc3RDaGFubmVsMSwgV1RGTG9n
TGV2ZWw6OkVycm9yKSk7CkBAIC0zMjIsMTIgKzMyMiwxMiBAQCBURVNUX0YoTG9nZ2luZ1Rlc3Qs
IExvZ2dlcikKICAgICBBdG9tU3RyaW5nIHN0cmluZzEoIkF0b21TdHJpbmciLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgY29uc3QgQXRvbVN0cmluZyBzdHJpbmcyKCJj
b25zdCBBdG9tU3RyaW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IGxvZ2dlci0+bG9nQWx3YXlzKFRlc3RDaGFubmVsMSwgc3RyaW5nMSwgIiBhbmQgIiwgc3RyaW5n
Mik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkF0b21TdHJpbmcgYW5kIGNv
bnN0IEF0b21TdHJpbmciLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoIkF0b21TdHJpbmcgYW5kIGNvbnN0IEF0b21TdHJpbmciKSk7
CiAKICAgICBTdHJpbmcgc3RyaW5nMygiU3RyaW5nIik7CiAgICAgY29uc3QgU3RyaW5nIHN0cmlu
ZzQoImNvbnN0IFN0cmluZyIpOwogICAgIGxvZ2dlci0+bG9nQWx3YXlzKFRlc3RDaGFubmVsMSwg
c3RyaW5nMywgIiBhbmQgIiwgc3RyaW5nNCk7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29u
dGFpbnMoIlN0cmluZyBhbmQgY29uc3QgU3RyaW5nIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJV
RShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJTdHJpbmcgYW5kIGNvbnN0IFN0
cmluZyIpKTsKIH0KIAogVEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dnZXJIZWxwZXIpCkBAIC0zMzUs
MjYgKzMzNSwyNiBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ2dlckhlbHBlcikKICAgICBFWFBF
Q1RfVFJVRShsb2dnZXIoKS5lbmFibGVkKCkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTG9nZ2luZ1Rlc3Q6OlRlc3RCb2R5KCIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJMb2dnaW5nVGVzdDo6VGVzdEJvZHkoIik7CiAgICAgYXBwZW5k
VW5zaWduZWQ2NEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dJZGVudGlmaWVy
KCkpLCBidWlsZGVyKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikiKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgiKSIpOwogICAgIFN0cmluZyBzaWduYXR1cmUgPSBidWlsZGVyLnRvU3RyaW5n
KCk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwotICAgIEVYUEVDVF9UUlVFKHRo
aXMtPm91dHB1dCgpLmNvbnRhaW5zKHNpZ25hdHVyZSwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJV
RSh0aGlzLT5vdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHNpZ25hdHVyZSkpOwog
CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiV2VsY29tZSBiYWNrIiwgIiBteSBmcmll
bmRzIiwgIiB0byB0aGUgc2hvdyIsICIgdGhhdCBuZXZlciBlbmRzIik7CiAgICAgU3RyaW5nIHJl
c3VsdCA9IHRoaXMtPm91dHB1dCgpOwotICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5jb250YWlucyhz
aWduYXR1cmUsIGZhbHNlKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zKCJ0byB0
aGUgc2hvdyB0aGF0IG5ldmVyIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShzaWduYXR1cmUpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgidG8gdGhlIHNob3cgdGhhdCBuZXZlciIpKTsK
IAogICAgIFdURlNldExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6
V2FybmluZyk7CiAKICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIldlJ3JlIHNvIGdsYWQg
eW91IGNvdWxkIGF0dGVuZCIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJX
ZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVF
KG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIldlJ3JlIHNvIGdsYWQgeW91IGNv
dWxkIGF0dGVuZCIpKTsKIAogICAgIFdBUk5JTkdfTE9HKExPR0lERU5USUZJRVIsICJDb21lIGlu
c2lkZSEgIiwgIkNvbWUgaW5zaWRlISIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRh
aW5zKCJDb21lIGluc2lkZSEgQ29tZSBpbnNpZGUhIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJV
RShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJDb21lIGluc2lkZSEgQ29tZSBp
bnNpZGUhIikpOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImJlIGNhcmVmdWwgYXMg
eW91IHBhc3MuIik7CiAgICAgRVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CkBAIC0z
NzksMTMgKzM3OSwxMiBAQCBwdWJsaWM6CiAgICAgV1RGTG9nTGV2ZWwgbGV2ZWwoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RMZXZlbDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkTG9nTWVzc2Fn
ZShjb25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBsb2dNZXNzYWdlKSBmaW5hbAorICAgIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBX
VEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmVjdG9yPEpTT05Mb2dW
YWx1ZT4mJiBsb2dNZXNzYWdlKSBmaW5hbAogICAgIHsKICAgICAgICAgbV9sb2dCdWZmZXIuYXBw
ZW5kKGxvZ01lc3NhZ2UpOwogICAgICAgICBtX2xhc3RDaGFubmVsID0gY2hhbm5lbDsKICAgICAg
ICAgbV9sYXN0TGV2ZWwgPSBsZXZlbDsKICAgICB9Ci0KICAgICBTdHJpbmdCdWlsZGVyIG1fbG9n
QnVmZmVyOwogICAgIFdURkxvZ0NoYW5uZWwgbV9sYXN0Q2hhbm5lbDsKICAgICBXVEZMb2dMZXZl
bCBtX2xhc3RMZXZlbCB7IFdURkxvZ0xldmVsOjpFcnJvciB9OwpAQCAtNDAwLDE0ICszOTksMTQg
QEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dPYnNlcnZlcikKIAogICAgIGxvZ2dlcigpLmFkZE9i
c2VydmVyKG9ic2VydmVyKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0ZXN0aW5n
IDEsIDIsIDMiKTsKLSAgICBFWFBFQ1RfVFJVRSh0aGlzLT5vdXRwdXQoKS5jb250YWlucygidGVz
dGluZyAxLCAyLCAzIiwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfVFJVRShvYnNlcnZlci5sb2coKS5j
b250YWlucygidGVzdGluZyAxLCAyLCAzIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aGlz
LT5vdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJ0ZXN0aW5nIDEsIDIsIDMiKSk7
CisgICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXIubG9nKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSgidGVzdGluZyAxLCAyLCAzIikpOwogICAgIEVYUEVDVF9TVFJFUShvYnNlcnZlci5jaGFubmVs
KCkubmFtZSwgbG9nQ2hhbm5lbCgpLm5hbWUpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxp
bnQ+KFdURkxvZ0xldmVsOjpBbHdheXMpLCBzdGF0aWNfY2FzdDxpbnQ+KG9ic2VydmVyLmxldmVs
KCkpKTsKIAogICAgIGxvZ2dlcigpLnJlbW92ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICBBTFdB
WVNfTE9HKCJ0ZXN0aW5nICIsIDEsICIsICIsIDIsICIsIDMiKTsKLSAgICBFWFBFQ1RfVFJVRSh0
aGlzLT5vdXRwdXQoKS5jb250YWlucygidGVzdGluZyAxLCAyLCAzIiwgZmFsc2UpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0aGlzLT5vdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJ0ZXN0
aW5nIDEsIDIsIDMiKSk7CiAgICAgRVhQRUNUX0VRKDB1LCBvYnNlcnZlci5sb2coKS5sZW5ndGgo
KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9UZXh0Q29kZWMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Rl
eHRDb2RlYy5jcHAKaW5kZXggZmQwNTA1MGFjMDA4MjdiZGVkYmYyY2U4NjU2MjA5M2M2MWJhZjA2
MS4uYThjZTUxOWEwOTBjNWExZmIzODQwYmRlNWU4MGJlZmViNTFiM2I0YiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RleHRDb2RlYy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RleHRDb2RlYy5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHRlc3REZWNvZGUoY29uc3QgY2hhciogZW5jb2RpbmdO
YW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y28KICAgICAgICAgYm9vbCBzYXdFcnJvciA9IGZh
bHNlOwogICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVuZChlc2NhcGVOb25BU0NJSVByaW50YWJs
ZUNoYXJhY3RlcnMoY29kZWMtPmRlY29kZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpLCBs
YXN0LCBmYWxzZSwgc2F3RXJyb3IpKSk7CiAgICAgICAgIGlmIChzYXdFcnJvcikKLSAgICAgICAg
ICAgIHJlc3VsdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIEVSUk9SIik7CisgICAgICAgICAgICBy
ZXN1bHRCdWlsZGVyLmFwcGVuZCgiIEVSUk9SIik7CiAgICAgfQogICAgIHJldHVybiBlc2NhcGVO
b25BU0NJSVByaW50YWJsZUNoYXJhY3RlcnMocmVzdWx0QnVpbGRlci50b1N0cmluZygpKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMDI5NDY1
YTExOTc3NTUxMzI3YzgwZjdhNTUzYjA5MGY0ZmZhOWI2My4uNjVhM2EwNGU2MzNkYzc4NzJhN2Qw
NWM5YjRlYTEyYTBmMzBlYTU4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBTdHJpbmcgYXR0cmlidXRlc09mRWxlbWVu
dChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogICAgIGJ1aWxkZXIuYXBwZW5kKGVs
ZW1lbnQtPnJvbGUoKS0+c3RyaW5nKCksICdcbicpOwogCiAgICAgLy8gRm9yIHRoZSBwYXJlbnQg
d2UgcHJpbnQgaXRzIHJvbGUgYW5kIGl0cyBuYW1lLCBpZiBhdmFpbGFibGUuCi0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJBWFBhcmVudDogIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYUGFy
ZW50OiAiKTsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gcGFyZW50ID0gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgIEF0a09iamVjdCogYXRrUGFyZW50ID0gcGFyZW50
ID8gcGFyZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpLmdldCgpIDogbnVsbHB0cjsKICAgICBpZiAo
YXRrUGFyZW50KSB7CkBAIC01NzUsNyArNTc1LDcgQEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1l
bnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgaWYgKHBhcmVudE5h
bWUgJiYgcGFyZW50TmFtZVswXSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIsIHBh
cmVudE5hbWUpOwogICAgIH0gZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihu
dWxsKSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG51bGwpIik7CiAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7CiAKICAgICBidWlsZGVyLmFwcGVuZCgiQVhDaGlsZHJlbjogIiwgZWxlbWVu
dC0+Y2hpbGRyZW5Db3VudCgpLCAnXG4nKTsKQEAgLTEzOTQsNyArMTM5NCw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0
CiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhI
ZWxwOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhIZWxwOiAiKTsKIAogICAgIGZvciAoZ3Vp
bnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJnZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFyZ2V0
Q291bnQrKykgewogICAgICAgICBpZiAoQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2FzdDxB
dGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkpKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429501</attachid>
            <date>2021-05-23 22:06:22 -0700</date>
            <delta_ts>2021-05-24 14:52:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226137-20210523220621.patch</filename>
            <type>text/plain</type>
            <size>358223</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTc2NTA4OThmOGVhODMyZGU2YzdlNjM0YzNlODFhZTdiYjkzMzQ2Li4xM2NmYmVmNzdlYWNmNzc5
Y2FkOGUwODY2MTUyNGFlYTc3YmEyZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MCBAQAorMjAyMS0wNS0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL3Rlc3RzL1BpbmdQb25n
U3RhY2tPdmVyZmxvd1Rlc3QuY3BwOgorICAgICAgICAoUGluZ1BvbmdTdGFja092ZXJmbG93T2Jq
ZWN0X2hhc0luc3RhbmNlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVw
cmVjYXRlZDo6U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQpOiBSZW1v
dmUgdW5uZWNlc3NhcnkgY2FzdAorICAgICAgICBmcm9tIGNvbnN0IGNoYXIqIHRvIFN0cmluZywg
d2hpY2ggZGVmZWF0cyBvcHRpbWl6YXRpb24gYW5kIGhhcyBubyBiZW5lZml0LgorCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nIGNvbnN0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgIChKU0M6OlJlc3RQYXJhbWV0ZXJOb2RlOjp0b1N0cmluZyBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6IFVzZSBhcHBlbmQgaW5zdGVhZCBv
ZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICBSZW1vdmVkIHVubmVjZXNhcnkgdXNlIG9mIGFwcGVu
ZFF1b3RlZEpTT05TdHJpbmcgdG8gYXBwZW5kIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc25hcHNo
b3RUeXBlVG9TdHJpbmcgYW5kIGVkZ2VUeXBlVG9TdHJpbmcsIHdoaWNoIHJldHVybiBhIGNvbnN0
IGNoYXIqIHRoYXQKKyAgICAgICAgbmV2ZXIgY29udGFpbnMgY2hhcmFjdGVycyB0aGF0IHJlcXVp
cmUgc3BlY2lhbCBxdW90aW5nIGNvbnNpZGVyYXRpb24sIHNvCisgICAgICAgIGNhbiBiZSBhcHBl
bmRlZCBlZmZpY2llbnRseSB3aXRoIHRoZSBub3JtYWwgYXBwZW5kIGZ1bmN0aW9uLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3Ry
aW5nLgorCisgICAgICAgICoganNjLmNwcDogVXNlIGFwcG5lZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcik6IFVzZSBhdXRvIGZvciB0
aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdl
KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIEFsc28gdXNl
IHZhcmlhZGljIGFwcGVuZCB3aGVuIHByYWN0aWNhbCBmb3IgYmV0dGVyIGVmZmljaWVuY3kuCisg
ICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2VXaXRoQXJndW1l
bnRzKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChKU0M6OmZvcm1hdERhdGVUaW1lKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRU
b1N0cmluZyk6IFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6Om5vdEFG
dW5jdGlvblNvdXJjZUFwcGVuZGVyKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVy
YWwuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOiBEaXR0by4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSBhdXRvIGFuZCBjdXQgZG93biBv
biByZWZlcmVuY2UgY291bnQKKyAgICAgICAgY2h1cm4gYnkgdXNpbmcgcGFzc2luZyB0aGUgU3Ry
aW5nSW1wbCB0byBtYWtlU3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0
ZSk6IERpdHRvLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHA6IFVzZSBtb3JlIGNvbnN0IGFuZCB1c2UgdmFyaWFkaWMKKyAgICAgICAgYXBwZW5kIGZvciBi
ZXR0ZXIgZWZmaWNpZW5jeS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKTogVXNlIGFw
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZ0pvaW5lci5oOiBEZWxldGVkIHVudXNlZCBhcHBlbmRMaXRlcmFsIGZ1bmN0aW9u
LgorICAgICAgICBVbnJlbGF0ZWQgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbCwgYnV0
IGRlYWQgY29kZS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0
ZXJhbC4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OmFwcGVuZExpbmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPik6IERpdHRvLgorCisgICAgICAg
ICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQ
cm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQgb2Yg
bWFrZVN0cmluZy4KKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0
ZWNvZGVzKTogRGl0dG8uCisKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0
T2Zmc2V0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisgICAgICAgIGFwcGVuZExpdGVyYWwuCisK
KyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0Ojpk
dW1wVHlwZXMgY29uc3QpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAg
ICAgICAgKEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU2hhcGU6OnRvSlNPTlN0cmluZyBjb25zdCk6IERpdHRvLgorCiAyMDIxLTA1
LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29t
ZSBub3cgaW52YWxpZCB0ZXN0cyBpbiB0ZXN0bWFzbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNWIxMTM5OWFmZDlkOTczNmU1
OGY1MGE5YzE1ZTdhY2E0ZWU4MzM0Yy4uYjlmNzkxZmIwMGQ1NzVjZTRjOGFkODJkMmIzNzAzMmI3
NzZkNThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMS0wNS0yMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZExp
dGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBvcHRpbWl6YXRpb24gZG9uZSBieSBhcHBlbmRMaXRlcmFsIGhhcyBtaW5pbWFsIHZhbHVlIGFu
ZCBpcyBzb21ldGhpbmcgd2UKKyAgICAgICAgY2FuIGRvIHdpdGhvdXQuIEl0IGRvZXMgbm90IGN1
dCBkb3duIHRoZSBudW1iZXIgb2YgYWxsb2NhdGlvbnMsIHdoaWNoIGlzIHRoZQorICAgICAgICBt
YWluIGNvc3Qgb2YgdGhlIFN0cmluZ0J1aWxkZXIgY2xhc3MuIEdldHRpbmcgcmlkIG9mIHRoZSBk
aWZmZXJlbnRseSBuYW1lZAorICAgICAgICBhcHBlbmRMaXRlcmFsIGltcHJvdmVzIHRoZSBkZXNp
Z24gb2YgdGhlIFN0cmluZ0J1aWxkZXIgY2xhc3MgZm9yIGNhbGxlcnMuCisgICAgICAgIE91ciBn
b2FsIGlzIHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byBhIHNpbmdsZSBhcHBlbmQgZnVu
Y3Rpb24uCisKKyAgICAgICAgSWYgd2UgZGVjaWRlIHdlIG5lZWQgYW4gb3B0aW1pemF0aW9uIGZv
ciBsaXRlcmFscywgd2UgY2FuIGNvbWUgdXAgd2l0aCBhCisgICAgICAgIGRpZmZlcmVudCB3YXkg
dGhhdCBpcyBjb21wYXRpYmxlIHdpdGggYXBwZW5kLiBGb3IgZXhhbXBsZSwgd2UgY291bGQgYXNz
dW1lCisgICAgICAgIHRoYXQgYW55IGNoYXIgYXJyYXkgaXMgYSBsaXRlcmFsIGFuZCBjaGVjayB0
aGF0IGF0IGNvbXBpbGUgdGltZSBpbgorICAgICAgICBTdHJpbmdDb25jYXRlbmF0ZTsgdGhhdCBv
cHRpbWl6YXRpb24gd291bGQgd29yayBmb3IgYm90aCBtYWtlU3RyaW5nIGFuZAorICAgICAgICBT
dHJpbmdCdWlsZGVyLiBPciB3ZSBjb3VsZCB1c2UgYSBzdHJhdGVneSBsaWtlIEFTQ0lJTGl0ZXJh
bC4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5
c3RlbUltcGw6OmVuY29kZUZvckZpbGVOYW1lKTogU3RyZWFtbGluZSBsb2dpYywKKyAgICAgICAg
YW5kIHVzZSB2YXJpYWRpYyBhcHBlbmQgdG8gbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50LgorCisg
ICAgICAgICogd3RmL0pTT05WYWx1ZXMuY3BwOgorICAgICAgICAoV1RGOjpKU09OSW1wbDo6VmFs
dWU6OmVzY2FwZVN0cmluZyk6IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRM
aXRlcmFsLgorICAgICAgICAoV1RGOjpKU09OSW1wbDo6VmFsdWU6OndyaXRlSlNPTiBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogd3RmL0xvZ2dlci5oOgorICAgICAgICAoV1RGOjpMb2dnZXI6
OmxvZyk6IFVzZSBhdXRvIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdURjo6
TG9nZ2VyOjpsb2dWZXJib3NlKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvTWVkaWFUaW1lLmNw
cDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b1N0cmluZyBjb25zdCk6IFVzZSBtYWtlU3Ry
aW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L0ludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaDoKKyAgICAgICAgTWFkZSBsZW5ndGhPZkludGVnZXJBc1N0
cmluZyBhIGNvbnN0ZXhwciBmdW5jdGlvbiBzbyB3ZSBjYW4gdXNlIGl0IHRvCisgICAgICAgIGNv
bXB1dGUgdGhlIHJlcXVpcmVkIHNpemUgb2YgYXJyYXlzIGZvciBjb252ZXJzaW9uLiBBZGRlZCB1
c2luZyBmb3IgYm90aAorICAgICAgICBsZW5ndGhPZkludGVnZXJBc1N0cmluZyBhbmQgd3JpdGVJ
bnRlZ2VyVG9CdWZmZXIgc28gd2UgY2FuIHVzZSB0aGVtIHdpdGhvdXQKKyAgICAgICAgdGhlIFdU
RiBwcmVmaXggYXMgaXMgY3VzdG9tYXJ5IGZvciBmdW5jdGlvbnMgaW4gV1RGLgorCisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjphcHBlbmRMaXRlcmFsKTogRGVsZXRlZC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg6IEFkZGVkIHN1cHBvcnQgZm9yIGFwcGVuZGluZyBTdHJpbmdJbXBsJiwKKyAg
ICAgICAgU3RyaW5nSW1wbCosIEF0b21TdHJpbmdJbXBsJiwgYW5kIEF0b21TdHJpbmdJbXBsKi4K
KwogMjAyMS0wNS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIEVOQUJMRShNQVNNX1BST0JFKSBmbGFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNDViMTQ0YmE1
OGUwNjM5OTY4ZjZmY2RhYzY2N2VmNWNhM2NlZTAuLmYxYzc3NTNmYzJjZjQzNDY5NjJmOWQzM2Y5
NGZkZDEwMjg5MGI5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNzkgQEAKKzIwMjEtMDUtMjMg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBTdHJpbmdC
dWlsZGVyOjphcHBlbmRMaXRlcmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFja2FnZUZvcm1EYXRhKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQg
b2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZyBjb25zdCk6
IFVzZSBhcHBlbmQgaW5zdGVhZAorICAgICAgICBvZiBhcHBlbmRMaXRlcmFsLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVj
b3JkKTogVXNlIGF1dG8KKyAgICAgICAgZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpidWlsZFByZUluZGV4U3RhdGVtZW50KTogVXNl
IG1ha2VTdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpidWlsZEluZGV4U3RhdGVtZW50KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OmJ1aWxkT2JqZWN0U3RvcmVTdGF0ZW1lbnQpOiBEaXR0by4K
KworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZW5jb2RlUHJvdG9jb2xTdHJpbmcpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBw
ZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjphcHBlbmRBY2NlcHRlZEV4dGVuc2lvbik6IERpdHRvLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UgY29uc3QpOiBV
c2UKKyAgICAgICAgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QgY29u
c3QpOiBUd2VhaworICAgICAgICB0byBtYXRjaCB0aGUgZnVuY3Rpb24gYWJvdmUgbW9yZSBjbG9z
ZWx5LCBhbmQgdXNlIEFTQ0lJTGl0ZXJhbC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoZm9ybWF0Rm9y
RGVidWdnZXIpOiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6
IFVzZQorICAgICAgICBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZENpcmNsZVN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRFbGxpcHNlU3RyaW5nKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsZFBhdGhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkUG9seWdvblN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRJbnNldFN0cmluZyk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NvbmljR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAg
ICAgICogY3NzL0NTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAg
ICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAgICAq
IGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0
VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOiBVc2UgYXBwZW5kCisgICAgICAgIGluc3RlYWQg
b2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OmNzc1RleHQgY29uc3QpOiBVc2UgbWFrZVN0
cmluZyBpbnN0ZWFkCisgICAgICAgIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgICogY3NzL0NT
U0tleWZyYW1lUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZTo6
Y3NzVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6Y3NzVGV4dCBjb25zdCk6
IFVzZSB2YXJpYWRpYyBhcHBlbmQuCisKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENvbnRhaW5W
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpjdXN0
b21DU1NUZXh0IGNvbnN0KTogVXNlCisgICAgICAgIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgICogY3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTmFtZXNwYWNlUnVsZTo6Y3NzVGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogY3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpj
c3NUZXh0IGNvbnN0KTogVXNlIG1ha2VTdHJpbmcgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmdC
dWlsZGVyLgorICAgICAgICAqIGNzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFpbnRJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQgY29uc3Qp
OgorICAgICAgICBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRMYW5nQXJn
dW1lbnRMaXN0KTogVXNlIHZhcmlhZGljIGFwcGVuZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZWxlY3RvclRleHQgY29uc3QpOiBEaXR0by4gQWxzbyB1c2UKKyAgICAgICAgYXBw
ZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbCBhbmQgbWFrZSBzb21lIGltcHJvdmVtZW50cyB0
bworICAgICAgICBjdXQgZG93biBvbiBhbGxvY2F0aW9ucyBhIGxpdHRsZS4KKworICAgICAgICAq
IGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JM
aXN0OjpidWlsZFNlbGVjdG9yc1RleHQgY29uc3QpOiBVc2UKKyAgICAgICAgYXBwZW5kIGluc3Rl
YWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQpOiBNb3ZlZCBt
b3JlIG9mIHRoZQorICAgICAgICBkYXRhIG1lbWJlciBpbml0aWFsaXphdGlvbiB0byB0aGUgY2xh
c3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUp
OiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ0J1aWxkZXIuCisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDogTW92ZWQgaW5pdGlhbGl6YXRpb24gaGVyZS4KKwor
ICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6Cisg
ICAgICAgIFVzZSBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQgY29u
c3QpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6bWVkaWFUZXh0IGNvbnN0KTogVXNlIGFwcGVu
ZCBpbnN0ZWFkCisgICAgICAgIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICogY3NzL01lZGlh
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6c2VyaWFsaXplIGNvbnN0
KTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cHJlc3Npb246OnNlcmlhbGl6ZSBjb25zdCk6IFVz
ZSBtYWtlU3RyaW5nCisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAg
ICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUgY29uc3QpOgorICAgICAgICBVc2UgYXBw
ZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSBjb25zdCk6IFJlbW92ZWQgYSBsb3Qgb2YKKyAgICAgICAgdW5uZWNlc3NhcnkgYnJhY2Vz
LiBVc2UgdmFyaWFkaWMgYXBwZW5kIGFuZCBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFs
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KTogVXNlIGF1dG8gZm9yIHRoZSByZXN1bHQKKyAgICAg
ICAgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZEF0dHJpYnV0ZXMpOiBVc2UgdmFyaWFkaWMgYXBwZW5kIGFuZCBhcHBl
bmQKKyAgICAgICAgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAqIGRvbS9TZWN1
cml0eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpwYXJz
ZVNhbmRib3hQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9y
bWF0KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVTZWFyY2hlcik6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9m
IG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3BlblRhZyk6
CisgICAgICAgIFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0VGFnKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjp1cmxUb01hcmt1cCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3JkRm9ybVN0cnVjdHVy
ZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcG9ydFZhbGlkaXR5
KTogVXNlIGF1dG8gZm9yCisgICAgICAgIHRoZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSk6IERpdHRvLgorCisgICAgICAgICogaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICBVc2UgYXBw
ZW5kIGluc3RlYWVkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBodG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdHJpY3Rpb25OYW1lcyk6IFVz
ZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24pOiBEaXR0by4KKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOjp0YWtlUmVtYWlu
aW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRDb25zb2xlRXJyb3IpOiBVc2UgbWFrZVN0cmlu
ZyBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxh
eVRyZWUpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhwcmVzc2lvbkZvckV2YWx1YXRp
bmdDb21tYW5kKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKTogVXNlIGF1dG8gZm9yIHRoZSByZXN1
bHQgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUp
OiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFk
IG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNv
bGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6IFVzZSBhdXRvIGZvciB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9nV2FybmluZyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVj
a2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQpOiBEaXR0bworCisgICAgICAgICogbG9hZGVy
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWYWxp
ZFVSTCk6IEFkZGVkLiBVc2VkIGZvciB2YXJpb3VzIGNhc2VzIGJlbG93IHRoYXQgYWxsIGNvbnN0
cnVjdAorICAgICAgICBVUkxzIGluIHRoZSBzYW1lIHdheSB3aXRoIHRoZSBzYW1lIGtpbmRzIG9m
IGNoZWNrcy4gVXNlIG1ha2VTdHJpbmcgaGVyZSBpbnN0ZWFkCisgICAgICAgIG9mIFN0cmluZ0J1
aWxkZXIuCisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGlvblJlcG9ydFVSTCk6IENhbGwgbWFr
ZVZhbGlkVVJMLgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRv
a2VuU2lnbmF0dXJlVVJMIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwgY29uc3QpOiBEaXR0by4KKworICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEJvb2xlYW4pOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4K
KyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEhhc2hTZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZE5hdmlnYXRvckFQSU9wdGlvblNldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kU2NyZWVuQVBJT3B0aW9uU2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6IFVzZSBh
dXRvIGZvcgorICAgICAgICB0aGUgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2Fn
ZSk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0
ZXJhbC4KKyAgICAgICAgQWxzbyB0d2VhayBjb2Rpbmcgc3R5bGUgYSBiaXQuCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxvZ01v
Y2tTY3JvbGxBbmltYXRvck1lc3NhZ2UgY29uc3QpOiBVc2UgbWFrZVN0cmluZworICAgICAgICBp
bnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpTZXJpYWxpemVyTWFya3Vw
QWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0VGFnKToKKyAgICAgICAgVXNlIGFwcGVuZCBpbnN0ZWFk
IG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2Vy
aWFsaXplQ1NTU3R5bGVTaGVldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnVybEZvckJsYW5rRnJhbWUpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZgorICAg
ICAgICBtYWtlU3RyaW5nLgorCisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50OjpzeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1N0cmluZyk6CisgICAgICAgIFVzZSBtYWtlU3RyaW5n
IGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VP
dmVybGF5OjpwbGF0Zm9ybURyYXcpOiBVc2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZgorICAgICAg
ICBtYWtlU3RyaW5nLgorCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKTogVXNl
IG1ha2VTdHJpbmcgaW5zdHNlYWQgb2YgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dSdW5uaW5nT3JEaXNwbGF5aW5nSW5zZWN1cmVD
b250ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydEludmFsaWREaXJlY3RpdmVWYWx1ZUNoYXJhY3RlciBjb25zdCk6CisgICAgICAgIEdl
dCByaWQgb2YgbG9jYWwgdmFyaWFibGUgZm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRJbnZhbGlkUGF0aENoYXJh
Y3RlciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjpyZXBvcnRJbnZhbGlkU291cmNlRXhwcmVzc2lvbiBjb25zdCk6IERpdHRvLgorCisgICAg
ICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVh
dGUpOiBHZXQgcmlkIG9mIGxvY2FsCisgICAgICAgIHZhcmlhYmxlIGZvciByZXN1bHQgb2YgbWFr
ZVN0cmluZy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICBVc2UgbWFrZVN0cmluZyBpbnN0ZWFk
IG9mIFN0cmluZ0J1bGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL0RlY2ltYWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVjaW1hbDo6dG9TdHJpbmcgY29uc3QpOiBVc2UgYXBwZW5kIGluc3Rl
YWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
RnJvbUNTU1RleHQpOiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkCisgICAgICAgIG9mIFN0cmluZ0J1
aWxkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRo
RWxldmF0aW9uKTogVXNlIGF1dG8KKyAgICAgICAgZm9yIHRoZSByZXN1bHQgb2YgbWFrZVN0cmlu
Zy4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZFVzZXJBZ2VudFN0cmluZyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBh
cHBlbmRMaXRlcmFsLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOiBVc2UKKyAgICAgICAg
YXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOiBHb3QgcmlkIG9mIGxvY2FsCisgICAg
ICAgIHZhcmlhYmxlIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMpOiBVc2UgYXV0
bworICAgICAgICBmb3IgcmVzdWx0IG9mIG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpOiBVcGRhdGUgdG8KKyAgICAg
ICAgdXNlIE9wdGlvblNldC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25Qb2xpY3lBc1N0cmluZyk6IFVz
ZSBPcHRpb25TZXQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KTogVXNlIGF1dG8gZm9yIGl0ZXJhdG9yCisgICAgICAgIGFuZCByYW5nZS1iYXNlZCBm
b3IgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjp1cGRhdGVUaWxlTGF5ZXJQcm9w
ZXJ0aWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6YmxhbmtQaXhlbENv
dW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cmVtb3ZlVGls
ZXMpOiBVc2UgSGFzaENvdW50ZWRTZXQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6cmV2
YWxpZGF0ZVRpbGVzKTogVXNlIE9wdGlvblNldC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlk
OjpyZXRhaW5lZFRpbGVCYWNraW5nU3RvcmVNZW1vcnkgY29uc3QpOiBVc2UKKyAgICAgICAgcmFu
Z2VkLWJhc2VkIGZvciBsb29wLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmRyYXdUaWxl
TWFwQ29udGVudHMgY29uc3QpOiBVc2UgcmFuZ2UtYmFzZWQKKyAgICAgICAgZm9yIGxvb3AgYW5k
IHVzZSB3cml0ZUludGVnZXJUb0J1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZzo6bnVtYmVyLgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudCBjb25z
dCk6IFVzZQorICAgICAgICBIYXNoQ291bnRlZFNldC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVH
cmlkOjpwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQpOiBEaXR0by4KKyAgICAg
ICAgVGhpcyBjdXRzIHVzIGRvd24gZnJvbSAzIGhhc2ggdGFibGUgbG9va3VwcyB0byAxLgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OnJlbW92ZVVucGFyZW50ZWRUaWxlc05vdyk6IFJlbW92
ZWQgbG9jYWwKKyAgICAgICAgdmFyaWFibGUgdG8gbWFrZSBjb2RlIGEgbGl0dGxlIHRpZ2h0ZXIu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaDogVXNlIE9wdGlvblNl
dCBhbmQgSGFzaENvdW50ZWRTZXQuCisgICAgICAgIFJlbW92ZWQgc29tZSB0eXBlIG5hbWVzLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnND
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRGaWx0ZXJz
T25MYXllcik6IFVzZSBhdXRvIGZvcgorICAgICAgICByZXVzbHQgb2YgbWFrZVN0cmluZy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dCk6IERpdHRvLgor
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjpzY3JvbGxiYXJQcmVmaXggY29uc3QpOiBB
ZGRlZAorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gZm9yIHVzZSBiZWxvdy4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTW9jazo6bW91c2VFbnRlcmVkU2Nyb2xsYmFyIGNvbnN0KTog
VXNlCisgICAgICAgIG1ha2VTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmdCdWlsZGVyLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZFNjcm9sbGJhciBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUlz
RG93bkluU2Nyb2xsYmFyIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9T
Y3JvbGxBbmltYXRvck1vY2suaDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFByb3h5U2VydmVyU3Ry
aW5nKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgIChXZWJD
b3JlOjp0b1N0cmluZyk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZSk6IEdldCByaWQKKyAgICAgICAgb2YgbG9j
YWwgdmFyaWFibGUgd2l0aCByZXN1bHQgb2YgbWFla1N0cmluZyBpbiBpdC4KKworICAgICAgICAq
IHBsYXRmb3JtL3BsYXlzdGF0aW9uL1VzZXJBZ2VudFBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtRm9yVUFTdHJpbmcpOiBEZWxldGVkLiBObyBuZWVkIGZvciBhIGds
b2JhbCB2YXJpYWJsZQorICAgICAgICB0byBob2xkIHRoZSByZXN1bHQgb2Ygc29tZXRoaW5nIGNh
bGxlZCBvbmx5IG9uY2UuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRVc2VyQWdlbnRTdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMpOiBNb3Zl
ZCB0aGUgbG9naWMgZnJvbSBidWlsZFVzZXJBZ2VudFN0cmluZworICAgICAgICBoZXJlLCB1c2lu
ZyBtYWtlU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nQnVpbGRlci4KKworICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZTo6b3Blbik6IFVzZSBhdXRvIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbCk6IFVzZSBhcHBlbmQgaW5zdGVhZAor
ICAgICAgICBvZiBhcHBlbmRMaXRlcmFsIGFuZCBTdHJpbmdWaWV3OjpzdWJzdHJpbmcgaW5zdGVh
ZCBvZiBTdHJpbmc6OnN1YnN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZU5ld2xpbmVzV2l0
aFdpbmRvd3NTdHlsZU5ld2xpbmVzKTogVXNlIGFwcGVuZAorICAgICAgICBpbnN0ZWFkIG9mIGFw
cGVuZExpdGVyYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KTogVXNlIG1ha2VTdHJpbmcgaW5z
dGVhZCBvZiBTdHJpbmdCdWlsZGVlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om5hbWUgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KTog
RGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKTog
VXNlIGFwcGVuZCBpbnN0ZWFkIG9mCisgICAgICAgIGFwcGVuZExpdGVyYWwuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVB
bmRFc2NhcGVOb25QcmludGFibGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpub2RlUG9z
aXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUbyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb0hvcml6b250YWwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9W
ZXJ0aWNhbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6
OmN1cnZlVG9DdWJpYyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1
aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6YXJjVG8pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgpOiBE
aXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmR1bXBNYXJrZXJSZWN0cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNjcm9sbFNuYXBP
ZmZzZXRzKTogRGl0dG8uCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlV29ya2Vy
UmVzcG9uc2UpOiBVc2UgYXV0bworICAgICAgICBmb3IgcmV1c2x0IG9mIG1ha2VTdHJpbmcuCisK
IDIwMjEtMDUtMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGlu
ZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBl
dGMuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MDM4YWE5NWU1NzQ1MTVjMzQwNDJmNjQxOTgzMjUwNWM2YzIyNjZl
Li41MzI0NzcwNzU1ZmUyZjU1MDFhZTFiMTEzOWNhYjVhM2E5YzE4MDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk5IEBACisyMDIxLTA1LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFu
ZE1ha2VEb21haW5MaXN0KTogVXNlIGFwcGVuZAorICAgICAgICBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwuCisgICAgICAgIChXZWJLaXQ6OmRvbWFpbnNUb1N0cmluZyk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpidWlsZExpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjphcHBlbmRCb29sZWFuKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmFwcGVuZE5leHRF
bnRyeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVzb3VyY2VU
b1N0cmluZyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXR0cmlidXRpb25Ub1N0cmluZyk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpkdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OmRvbWFpbnNUb1N0cmluZyk6IERpdHRvLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6IE1vdmVk
IHRoaXMgaGVyZSBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6
OnRvU3RyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6OmVu
Y29kZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6b3BlcmF0b3I9PSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhOjp0b1N0cmluZyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjplbmNvZGUg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6Om9wZXJhdG9y
PCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6IE1vdmVkIG1lbWJlcgorICAgICAgICBmdW5j
dGlvbnMgb2YgdGhlIG5lc3RlZCBzdHJ1Y3R1cmVzIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGZp
bGUgYW5kIGZpeGVkCisgICAgICAgIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgc3RydWN0dXJlcyB0
byBpbmRpY2F0ZSB0aGUgbmVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y29udGludWVDaGVja2luZ1JlcXVlc3QpOiBEbyBub3QgdXNlIGEgbG9jYWwKKyAgICAgICAgdmFy
aWFibGUgZm9yIHRoZSByZXVzbHQgb2YgbWFrZVN0cmluZy4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpuZXdUZXN0aW5nU2Vzc2lvbik6IERpdHRvLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExp
dGVyYWwKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmFzSlNPTiBjb25zdCk6
IERpdHRvLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgpOiBEbyBub3QgdXNlIGEgbG9jYWwgdmFyaWFibGUgZm9yCisgICAgICAgIHRo
ZSByZXN1bHQgb2YgbWFrZVN0cmluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YnVpbGRBY2NlcHRMYW5n
dWFnZXMpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0VGFzazo6YWNjZXB0ZWRFeHRlbnNpb25zIGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOiBV
c2UgYXV0byBmb3IgdGhlIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAqIFNoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6
d3JpdGVIZWFkZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94UGFyYW1ldGVy
cyk6IERvIG5vdCB1c2UgYSBsb2NhbCB2YXJpYWJsZSBmb3IgdGhlIHJlc3VsdCBvZgorICAgICAg
ICBtYWtlU3RyaW5nLiBBbHNvLCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgc3VwcG9ydCBmb3IgY29u
Y2F0ZW5hdGluZyBhbiBOU1N0cmluZyBpbnN0ZWFkCisgICAgICAgIG9mIGNvbnZlcnRpbmcgaXQg
dG8gYSBXVEY6OlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxl
ci5tYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVdlYktp
dCBjb25zdCk6IFVzZSBBU0NJSUxpdGVyYWwgYW5kIHJlbW92ZSBleHBsaWNpdAorICAgICAgICBj
b252ZXJzaW9uIHRvIFN0cmluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJh
Y2spOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6ZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQpOiBVc2UgYXV0byBmb3IgcmVzdWx0IG9m
IG1ha2VTdHJpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdFdlYlBhZ2UuY3BwOiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAg
IFN0cmluZ0J1aWxkZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VTcGFjZSk6IFVzZSBhdXRvIGZvciByZXN1bHQgb2YgbWFrZVN0cmluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOiBVc2UgYXBwZW5kIGluc3Rl
YWQgb2YgYXBwZW5kTGl0ZXJhbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNo
TGF1bmNoaW5nKTogVXNlIGF1dG8gZm9yIHJlc3VsdCBvZiBtYWtlU3RyaW5nLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnRNZW1vcnlTYW1wbGVyKTogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmR1bXBIaXN0b3J5SXRlbSk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFsLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKTogRGl0dG8uCisK
IDIwMjEtMDUtMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGlu
ZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBl
dGMuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA3MzZjZTdiMzMzZWIyZmZlMTMxNDc5MTBkNGVk
ODQ2NjJkNDEzOGVkLi5lZjM5NzYyMTkzYjg3YjMyZjY3NTBjOWNhOTZjMTliYTk2ZTZjYTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAg
ICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KTogRG8gbm90IHVzZSBsb2NhbAorICAgICAgICBmb3IgcmV0dXJuIHZhbHVlIG9mIG1ha2VTdHJp
bmcuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmY2YmI3MzM4MmNkMmU1N2M3ZDk0ZTdkMTE4
MGRhMzFlOTQ3YjkyOC4uOWExNjM3NTIyZWIxZDg0MzkxMTNkOTNjZWYwM2I0NDVkZmZkZGY0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5n
QnVpbGRlcjo6YXBwZW5kTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAg
ICAgKHJlZ0V4cEZvckxhYmVscyk6IFVzZSBhcHBlbmQgaW5zdGVhZCBvZiBhcHBlbmRMaXRlcmFs
LgorICAgICAgICBBbHNvIGltcnBvdmUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYSBiaXQuCisKIDIw
MjEtMDUtMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZl
cnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBh
IHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDcwYTIxNWIzNTVjNTZlMDc4ZTdmNWFk
YTAyY2RiN2JmMThjOWI0ODcuLjMxNzhjNjZlMWQyNmZlYjczM2NmM2FjMzEyNzdkZDkwMTdkYzc1
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0w
NS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFN0
cmluZ0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNz
aWJsZUJhc2U6OmdldF9hY2NLZXlib2FyZFNob3J0Y3V0KTogVXNlIGFwcGVuZCBpbnN0ZWFkIG9m
IGFwcG5lZExpdGVyYWwuCisgICAgICAgICogV2ViVmlldy5jcHA6IERpdHRvLgorCiAyMDIxLTA1
LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBM
b2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93
VGVzdC5jcHAKaW5kZXggODExZDRkZWJkYWIyOTFkOTA0Zjk2YmJmZTQ2N2I3OWMwMjczZDExOS4u
MzZlZGJkOWE3MzBhZmVjYTVmMmYwYjQwNDIxMTQ3NDI5NjRhZmI1MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVy
Zmxvd1Rlc3QuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAgc3RhdGljIGJvb2wgUGluZ1BvbmdTdGFj
a092ZXJmbG93T2JqZWN0X2hhc0luc3RhbmNlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUK
ICAgICAgICAgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlv
biwgY29uc3RydWN0b3IsIDEsICZwb3NzaWJsZVZhbHVlLCBleGNlcHRpb24pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJkdW1teS52YWx1ZU9mKFswXSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgi
ZHVtbXkudmFsdWVPZihbMF0iKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzNTAwMDsg
aSsrKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgWyIsIGksICddJyk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKTsiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIik7
Iik7CiAgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmVzdWx0
ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEs
IGV4Y2VwdGlvbik7CiAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApp
bmRleCBhMDMyOTIwZTQwMzhiYzBiNWE5ZDU3YzM5YmFlZGQ5YmExZDQwYWJlLi43ZmYzZTYxZTQy
NTIzNmE4ZTY1NjU1YWI5MGUzYTlkNDc5ZTlhZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtNTEsNyArNTEs
NyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0
IGNoYXIqIGFyZ3VtZW50KQogewogICAgIFZNJiB2bSA9IG1fZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJp
bmcodm0sIFN0cmluZyhhcmd1bWVudCkpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNTdHJp
bmcodm0sIGFyZ3VtZW50KSk7CiB9CiAKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQoSlNWYWx1ZSBhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2YmQzMDFmMDg4MDRm
Njc3OWE4ZGFhMDBmYWNjODEyMmNiNzBiMDcxLi5hNDljYTcwNzQ1NjlmY2E1ZGU2YzllZGEyZjBh
NmJmYmZkNWYzZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIEFycmF5UGF0
dGVybk5vZGU6OnRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudDoKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLi4uIik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiLi4uIik7CiAgICAgICAgICAgICB0YXJnZXQucGF0dGVybi0+dG9TdHJpbmco
YnVpbGRlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTgyMCw3ICs1ODIw
LDcgQEAgdm9pZCBSZXN0UGFyYW1ldGVyTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVj
dG9yPElkZW50aWZpZXI+JiBpZGVudGlmaWVycykKIAogdm9pZCBSZXN0UGFyYW1ldGVyTm9kZTo6
dG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi4uLiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIuLi4iKTsKICAgICBtX3Bh
dHRlcm4tPnRvU3RyaW5nKGJ1aWxkZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IGMzNmQxZDAyMTJmOTJlNjNk
NjgzNzRmZTFkZjZmMGJlYzVlZmRiM2MuLjYxNGY3MTg5YmI4YjNiNjg3YzRmYjAyMTEwNDEzNzMw
YjcyMjJjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwCkBAIC00NTUsMTkgKzQ1NSwxOCBAQCBTdHJpbmcgSGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFs
bG93TgogICAgIH07CiAKICAgICAvLyB2ZXJzaW9uCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJ7
XCJ2ZXJzaW9uXCI6MiIpOworICAgIGpzb24uYXBwZW5kKCJ7XCJ2ZXJzaW9uXCI6MiIpOwogCiAg
ICAgLy8gdHlwZQotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwidHlwZVwiOiIpOwotICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhzbmFwc2hvdFR5cGVUb1N0cmluZyhtX3NuYXBzaG90
VHlwZSkpOworICAgIGpzb24uYXBwZW5kKCIsXCJ0eXBlXCI6XCIiLCBzbmFwc2hvdFR5cGVUb1N0
cmluZyhtX3NuYXBzaG90VHlwZSksICciJyk7CiAKICAgICAvLyBub2RlcwotICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiLFwibm9kZXNcIjpbIik7CisgICAganNvbi5hcHBlbmQoIixcIm5vZGVzXCI6
WyIpOwogICAgIC8vIDxyb290PgogICAgIGlmIChtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5
cGU6OkdDRGVidWdnaW5nU25hcHNob3QpCi0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiMCww
LDAsMCwwLFwiMHgwXCIsXCIweDBcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiMCwwLDAsMCww
LFwiMHgwXCIsXCIweDBcIiIpOwogICAgIGVsc2UKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFs
KCIwLDAsMCwwIik7CisgICAgICAgIGpzb24uYXBwZW5kKCIwLDAsMCwwIik7CiAKICAgICBmb3Ig
KEhlYXBTbmFwc2hvdCogc25hcHNob3QgPSBtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgp
OyBzbmFwc2hvdDsgc25hcHNob3QgPSBzbmFwc2hvdC0+cHJldmlvdXMoKSkgewogICAgICAgICBm
b3IgKGF1dG8mIG5vZGUgOiBzbmFwc2hvdC0+bV9ub2RlcykKQEAgLTQ3Niw3ICs0NzUsNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICAvLyBu
b2RlIGNsYXNzIG5hbWVzCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXCJub2RlQ2xhc3NOYW1l
c1wiOlsiKTsKKyAgICBqc29uLmFwcGVuZCgiLFwibm9kZUNsYXNzTmFtZXNcIjpbIik7CiAgICAg
VmVjdG9yPFN0cmluZz4gb3JkZXJlZENsYXNzTmFtZXMoY2xhc3NOYW1lSW5kZXhlcy5zaXplKCkp
OwogICAgIGZvciAoYXV0byYgZW50cnkgOiBjbGFzc05hbWVJbmRleGVzKQogICAgICAgICBvcmRl
cmVkQ2xhc3NOYW1lc1tlbnRyeS52YWx1ZV0gPSBlbnRyeS5rZXk7CkBAIC01MzIsMjQgKzUzMSwx
NiBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25z
dCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogICAgIH0pOwogCiAgICAgLy8gZWRnZXMKLSAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIixcImVkZ2VzXCI6WyIpOworICAgIGpzb24uYXBwZW5kKCIs
XCJlZGdlc1wiOlsiKTsKICAgICBmb3IgKGF1dG8mIGVkZ2UgOiBtX2VkZ2VzKQogICAgICAgICBh
cHBlbmRFZGdlSlNPTihlZGdlKTsKICAgICBqc29uLmFwcGVuZCgnXScpOwogCiAgICAgLy8gZWRn
ZSB0eXBlcwotICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwiZWRnZVR5cGVzXCI6WyIpOwotICAg
IGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpJ
bnRlcm5hbCkpOwotICAgIGpzb24uYXBwZW5kKCcsJyk7Ci0gICAganNvbi5hcHBlbmRRdW90ZWRK
U09OU3RyaW5nKGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OlByb3BlcnR5KSk7Ci0gICAganNv
bi5hcHBlbmQoJywnKTsKLSAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcoZWRnZVR5cGVU
b1N0cmluZyhFZGdlVHlwZTo6SW5kZXgpKTsKLSAgICBqc29uLmFwcGVuZCgnLCcpOwotICAgIGpz
b24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhlZGdlVHlwZVRvU3RyaW5nKEVkZ2VUeXBlOjpWYXJp
YWJsZSkpOwotICAgIGpzb24uYXBwZW5kKCddJyk7CisgICAganNvbi5hcHBlbmQoIixcImVkZ2VU
eXBlc1wiOltcIiIsIGVkZ2VUeXBlVG9TdHJpbmcoRWRnZVR5cGU6OkludGVybmFsKSwgIlwiLFwi
IiwgZWRnZVR5cGVUb1N0cmluZyhFZGdlVHlwZTo6UHJvcGVydHkpLCAiXCIsXCIiLCBlZGdlVHlw
ZVRvU3RyaW5nKEVkZ2VUeXBlOjpJbmRleCksICJcIixcIiIsIGVkZ2VUeXBlVG9TdHJpbmcoRWRn
ZVR5cGU6OlZhcmlhYmxlKSwgIlwiXSIpOwogCiAgICAgLy8gZWRnZSBuYW1lcwotICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiLFwiZWRnZU5hbWVzXCI6WyIpOworICAgIGpzb24uYXBwZW5kKCIsXCJl
ZGdlTmFtZXNcIjpbIik7CiAgICAgVmVjdG9yPFVuaXF1ZWRTdHJpbmdJbXBsKj4gb3JkZXJlZEVk
Z2VOYW1lcyhlZGdlTmFtZUluZGV4ZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZWRnZU5hbWVJbmRleGVzKQogICAgICAgICBvcmRlcmVkRWRnZU5hbWVzW2VudHJ5LnZhbHVlXSA9
IGVudHJ5LmtleTsKQEAgLTU2NSw3ICs1NTYsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRl
cjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93Tgog
ICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNo
b3RUeXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90KSB7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJh
bCgiLFwicm9vdHNcIjpbIik7CisgICAgICAgIGpzb24uYXBwZW5kKCIsXCJyb290c1wiOlsiKTsK
IAogICAgICAgICBIZWFwU25hcHNob3QqIHNuYXBzaG90ID0gbV9wcm9maWxlci5tb3N0UmVjZW50
U25hcHNob3QoKTsKIApAQCAtNjA1LDcgKzU5Niw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWls
ZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dO
CiAKICAgICBpZiAobV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1Nu
YXBzaG90KSB7CiAgICAgICAgIC8vIGludGVybmFsIG5vZGUgZGVzY3JpcHRpb25zCi0gICAgICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwibGFiZWxzXCI6WyIpOworICAgICAgICBqc29uLmFwcGVu
ZCgiLFwibGFiZWxzXCI6WyIpOwogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG9yZGVyZWRMYWJl
bHMobGFiZWxJbmRleGVzLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsYWJl
bEluZGV4ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IDJmOWY4ZjA1OWNiMTM5
MTNhZmEzMGY2NDk3N2UwMzNiNTM0Yzk0OTMuLmM3NmYxZjIwNjNjYjVlOTAwY2RiMzI0Nzk1MDAx
M2ZkMDljZTY2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CkBAIC05MywxMCArOTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAg
IGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChlcnJvclN0cmluZyk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIGZ1bmN0aW9uU3RyaW5n
OwotICAgIGZ1bmN0aW9uU3RyaW5nLmFwcGVuZExpdGVyYWwoIihmdW5jdGlvbihXZWJJbnNwZWN0
b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiKTsKLSAgICBmdW5jdGlv
blN0cmluZy5hcHBlbmQodGVzdC5pc29sYXRlZENvcHkoKS5yZXBsYWNlKCdgJywgIlxcYCIpKTsK
LSAgICBmdW5jdGlvblN0cmluZy5hcHBlbmRMaXRlcmFsKCIpYCkoV2ViSW5zcGVjdG9yQXVkaXQp
OyB9KSIpOworICAgIGF1dG8gZnVuY3Rpb25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24o
V2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3Ry
aW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2AnLCAiXFxgIiksICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQp
OyB9KSIpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQ6OkV4ZWN1dGVPcHRpb25zIG9wdGlvbnM7CiAg
ICAgb3B0aW9ucy5vYmplY3RHcm91cCA9ICJhdWRpdCJfczsKQEAgLTExMiw3ICsxMDgsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogCiAgICAgbXV0ZUNvbnNvbGUoKTsKIAotICAgIGluamVj
dGVkU2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uU3RyaW5nLnRvU3RyaW5nKCks
IFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsK
KyAgICBpbmplY3RlZFNjcmlwdC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZywg
V1RGTW92ZShvcHRpb25zKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwog
CiAgICAgdW5tdXRlQ29uc29sZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApp
bmRleCBmZGY1ZTU0NWU0YzY5YWU0ZTQ3MWI4MGIyNWVmMzEyMWM3Njk4OWJlLi4yNWI3MjMxYTI1
ZTdhMTZjMmEwNDk4MGYxYWU5NzcxN2FjODVhMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
c3RhcnRUaW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdAogCiAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBl
bnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICBTdHJpbmcgd2Fy
bmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0
cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGFscmVhZHkgZXhpc3RzIik7CisgICAg
ICAgIGF1dG8gd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgU2NyaXB0QXJndW1lbnRz
Ojp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGFscmVhZHkgZXhp
c3RzIik7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGdsb2JhbE9iamVjdCwgMSkpKTsKICAgICB9CiB9CkBAIC0xNTQsMTQgKzE1NCwxNCBAQCB2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgUwogICAgIGF1dG8gaXQgPSBtX3RpbWVzLmZpbmQobGFiZWwp
OwogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5k
IGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/Ci0gICAgICAgIFN0cmlu
ZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5j
YXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsK
KyAgICAgICAgYXV0byB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1
bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBp
dC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBz
dGFydFRpbWU7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50
czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICI6ICIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Cisg
ICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3Ry
aW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwogICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwg
V1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIApAQCAtMTc2LDE0
ICsxNzYsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdAogICAgIGF1dG8gaXQgPSBtX3RpbWVz
LmZpbmQobGFiZWwpOwogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/Ci0g
ICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBTY3JpcHRBcmd1
bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKKyAgICAgICAgYXV0byB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIi
LCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwp
LCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2Fs
bFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9ub3RvbmljVGltZSBz
dGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBzdGFydFRpbWU7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNj
cmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICI6
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAz
KSwgIm1zIik7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZyhTY3JpcHRBcmd1bWVudHM6
OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UobGFiZWwpLCAiOiAiLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwogICAg
IGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1
ZywgbWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShp
dCk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW4KIAogICAgIC8v
IEZJWE1FOiBXZWIgSW5zcGVjdG9yIHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVy
cywgYnV0IGZvciBub3cgd2UganVzdCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCi0g
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVT
dHJpbmdGb3JDb25zb2xlTWVzc2FnZShsYWJlbCksICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoU2NyaXB0QXJndW1lbnRzOjp0cnVu
Y2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIjogIiwgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSk7CiAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGds
b2JhbE9iamVjdCwgMSkpKTsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QKICAgICBhdXRvIGl0ID0gbV9jb3VudHMuZmluZChsYWJlbCk7CiAgICAgaWYgKGl0
ID09IG1fY291bnRzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/Ci0gICAgICAgIFN0cmluZyB3YXJuaW5nID0g
bWFrZVN0cmluZygiQ291bnRlciBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdG
b3JDb25zb2xlTWVzc2FnZShsYWJlbCksICJcIiBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICBh
dXRvIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwiIiwgU2NyaXB0QXJndW1lbnRzOjp0
cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKGxhYmVsKSwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGds
b2JhbE9iamVjdCwgMSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKaW5kZXggZDNhMjgxMTI3MDgwNTgxZjBlZDE1YjRmMzg1ODg1NTBjZjNlZTZlZS4uYmE4Njhm
Yjk3OWQyZDY2NTM4MTRjOTg4NTg2ZDE5OWY3MTVmZmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
QEAgLTEzNjYsNyArMTM2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkpT
Q1N0YWNrLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFN0cmluZ0J1aWxkZXIgdHJhY2U7Ci0gICAg
dHJhY2UuYXBwZW5kTGl0ZXJhbCgiLS0+IFN0YWNrIHRyYWNlOlxuIik7CisgICAgdHJhY2UuYXBw
ZW5kKCItLT4gU3RhY2sgdHJhY2U6XG4iKTsKIAogICAgIEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9y
IGZ1bmN0b3IodHJhY2UpOwogICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IDMzOGY5
ZDg5ODE1ODlhM2U2NDAxZTE5MzQ3NjFjZTU3NDgxYTk2ZTguLjEzYzVjYjk0NjFiNWZhZGI4YjU3
YjMyODYxYmRjZTU3ZGNiM2EwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgY29uc3QgSWRlbnRpZmllciYgSWRl
bnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJ
ZGUKIAogY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50
aWZpZXIoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcHJlZml4LCB1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewotICAgIFN0cmluZyBzeW1ib2xOYW1lID0gbWFrZVN0cmluZyhwcmVmaXgsIGlkZW50aWZpZXIp
OworICAgIGF1dG8gc3ltYm9sTmFtZSA9IG1ha2VTdHJpbmcocHJlZml4LCBpZGVudGlmaWVyKTsK
ICAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktl
eShzeW1ib2xOYW1lKTsKICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9t
VWlkKHN5bWJvbCkpOwogICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKaW5kZXggODU3NmJh
YjZmYTQxNWFjYTJkNzljYWQ0MjNiZTEyMDgwODE1MTc2My4uMTEzOTllYjA5YjJiY2M4NTljN2Vk
MzZhOWNlZTRkMjMzYzljZDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc29sZUNsaWVudC5jcHAKQEAgLTE5NCwxMiArMTk0LDExIEBAIHZvaWQgQ29uc29sZUNs
aWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwKIAogICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRVUkxB
bmRQb3NpdGlvbihidWlsZGVyLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjogIik7CiAgICAgfQogCiAgICAgYXBwZW5kTWVzc2FnZVByZWZpeChidWlsZGVyLCBzb3VyY2Us
IHR5cGUsIGxldmVsKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKG1lc3NhZ2UpOworICAgIGJ1aWxkZXIuYXBwZW5kKCcgJywgbWVzc2FnZSk7CiAKICAgICBX
VEZMb2dBbHdheXMoIiVzIiwgYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpA
QCAtMjE1LDcgKzIxNCw3IEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2Fn
ZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhCiAKICAgICBpZiAoIWxh
c3RDYWxsZXIuc291cmNlVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFwcGVuZFVSTEFuZFBv
c2l0aW9uKGJ1aWxkZXIsIGxhc3RDYWxsZXIuc291cmNlVVJMKCksIGxhc3RDYWxsZXIubGluZU51
bWJlcigpLCBsYXN0Q2FsbGVyLmNvbHVtbk51bWJlcigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiAiKTsKICAgICB9CiAK
ICAgICBhcHBlbmRNZXNzYWdlUHJlZml4KGJ1aWxkZXIsIHNvdXJjZSwgdHlwZSwgbGV2ZWwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCmlu
ZGV4IDk1NTc1NmJhNDA1ZjQwMDk3MDYxMGY5YTY4YzdlZDQyYTY3Y2IwMTUuLjJkZWNmOGE4M2M4
MGU4MGNhODY3N2Y0Yzc4N2JmNzljNmMyOTk1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTY5LDE0ICs2OSwxMSBAQCBTdHJp
bmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9y
bWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICBidWlsZGVyLmFwcGVuZChXVEY6OndlZWtkYXlO
YW1lWyh0LndlZWtEYXkoKSArIDYpICUgN10pOwogCiAgICAgICAgIGlmIChhc1VUQ1ZhcmlhbnQp
IHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxk
ZXIsIHQubW9udGhEYXkoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGOjptb250aE5hbWVbdC5tb250aCgpXSk7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcsIFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURjo6bW9udGhOYW1lW3QubW9udGgoKV0pOwotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
JywgV1RGOjptb250aE5hbWVbdC5tb250aCgpXSwgJyAnKTsKICAgICAgICAgICAgIGFwcGVuZE51
bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CkBAIC05Miw3ICs4OSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFz
CiAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQu
c2Vjb25kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBHTVQiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIiBHTVQiKTsKIAogICAgICAgICBpZiAoIWFzVVRDVmFyaWFudCkg
ewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldEluTWludXRlKCkpOwpA
QCAtMTEwLDExICsxMDcsOCBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFu
RGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogICAgICAgICAgICAg
Y2hhciB0aW1lWm9uZU5hbWVbNzBdOwogICAgICAgICAgICAgc3RyZnRpbWUodGltZVpvbmVOYW1l
LCBzaXplb2YodGltZVpvbmVOYW1lKSwgIiVaIiwgJmd0bSk7CiAjZW5kaWYKLSAgICAgICAgICAg
IGlmICh0aW1lWm9uZU5hbWVbMF0pIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiAoIik7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGltZVpvbmVOYW1l
KTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICgiLCB0aW1lWm9uZU5hbWUsICcpJyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXgg
ZDJjZDM2ZWU1YTlmYjEzNTIwNzI2NWQxYjQ4MzYzYmQ5MGMwNmQ4Ny4uZGZiOTMxODhjMDhmZDhk
YmFkM2JmN2Y4NWUxODUyYjUyNDA2YjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlICJTdGFja0ZyYW1l
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMjA5LDE3ICsyMDgsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVk
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBTdHJpbmcgbWVzc2Fn
ZVN0cmluZyA9IHNhbml0aXplZE1lc3NhZ2VTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTdHJpbmcoKSk7CiAKLSAgICBpZiAoIW5hbWVTdHJpbmcu
bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBtZXNzYWdlU3RyaW5nOwotCi0gICAgaWYgKCFtZXNz
YWdlU3RyaW5nLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbmFtZVN0cmluZzsKLQotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChuYW1lU3RyaW5nKTsKLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobWVzc2Fn
ZVN0cmluZyk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhuYW1lU3RyaW5nLCBuYW1lU3RyaW5nLmlzRW1wdHkoKSB8fCBtZXNzYWdlU3RyaW5n
LmlzRW1wdHkoKSA/ICIiIDogIjogIiwgbWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgRXJyb3JJ
bnN0YW5jZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkNGFkNTgx
OWEwOGY5YWE2YmIyZmZkMTA1ZDk5OGI5OTI5MjdjOGQ1Li5iNTk1YTMwMjgzNzY5M2Q0Yjc0ODVm
ZDUxNWViYTE2N2JlZmY5Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAgc3RhdGljIFN0
cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVz
c2FnZSwgY29uc3QgU3QKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoU3RyaW5nQnVpbGRlcjo6
T3ZlcmZsb3dIYW5kbGVyOjpSZWNvcmRPdmVyZmxvdyk7CiAgICAgYnVpbGRlci5hcHBlbmQoYmFz
ZSwgIiBpcyBub3QgYSBmdW5jdGlvbi4gKEluICciLCBzb3VyY2VUZXh0LCAiJywgJyIsIGJhc2Us
ICInIGlzICIpOwogICAgIGlmICh0eXBlID09IFR5cGVTeW1ib2wpCi0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiYSBTeW1ib2wiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoImEgU3lt
Ym9sIik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGVPYmplY3QpCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIGluc3RhbmNlIG9mICIpOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoImFuIGluc3RhbmNlIG9mICIpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZChkaXNwbGF5VmFsdWUpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKaW5kZXggZjg5ODA2YzU2YjI2MDUyMmZjN2M3Yjk4YWY4NTJjZjczM2Y4OTg1Zi4uZDc4
Y2MyZWFlMjIyNTk2NjdiZTZkZjBjMzI4Y2I4MjU3MTBhODliOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC02MDks
MTMgKzYwOSwxMyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBjYXNlIFdl
ZWtkYXk6Ok5hcnJvdzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVF
RUVFIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkVFRUVFIik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2Vla2RheTo6U2hvcnQ6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJFRUUiKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgi
RUVFIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Vla2RheTo6TG9uZzoKLSAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkVFRUUiKTsKKyAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZCgiRUVFRSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlZWtkYXk6
Ok5vbmU6CiAgICAgICAgIGJyZWFrOwpAQCAtNjI1LDEzICs2MjUsMTMgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
c3dpdGNoIChlcmEpIHsKICAgICBjYXNlIEVyYTo6TmFycm93OgotICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiR0dHR0ciKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgiR0dHR0ciKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFcmE6OlNob3J0OgotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiR0dHIik7CisgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIkdHRyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVyYTo6
TG9uZzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkdHR0ciKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiR0dHRyIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEVyYTo6Tm9uZToKICAgICAgICAgYnJlYWs7CkBAIC02NDEsNyArNjQxLDcgQEAgdm9p
ZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgc3dpdGNoICh5ZWFyKSB7CiAgICAgY2FzZSBZZWFyOjpUd29EaWdpdDoKLSAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInl5Iik7CisgICAgICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoInl5Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWVhcjo6TnVt
ZXJpYzoKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgneScpOwpAQCAtNjU0LDE5ICs2
NTQsMTkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAgICAgc3dpdGNoIChtb250aCkgewogICAgIGNhc2UgTW9udGg6OlR3
b0RpZ2l0OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTU0iKTsKKyAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNb250aDo6TnVtZXJpYzoKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnTScp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1vbnRoOjpOYXJyb3c6Ci0gICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJNTU1NTSIpOworICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCJNTU1NTSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1vbnRoOjpTaG9y
dDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIk1NTSIpOworICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCJNTU0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNb250aDo6TG9uZzoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIk1N
TU0iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiTU1NTSIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1vbnRoOjpOb25lOgogICAgICAgICBicmVhazsKQEAgLTY3Niw3ICs2
NzYsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBzd2l0Y2ggKGRheSkgewogICAgIGNhc2UgRGF5OjpUd29EaWdp
dDoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImRkIik7CisgICAgICAg
IHNrZWxldG9uQnVpbGRlci5hcHBlbmQoImRkIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RGF5OjpOdW1lcmljOgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdkJyk7CkBAIC03
NDUsMTMgKzc0NSwxMyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIC8vIGh0dHBz
Oi8vdW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIwNzMxCiAgICAgICAgIHN3
aXRjaCAoZGF5UGVyaW9kKSB7CiAgICAgICAgIGNhc2UgRGF5UGVyaW9kOjpOYXJyb3c6Ci0gICAg
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQkJCQkIiKTsKKyAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkJCQkJCIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEYXlQZXJpb2Q6OlNob3J0OgogICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZCgnQicpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGF5UGVy
aW9kOjpMb25nOgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkJC
QkIiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIkJCQkIiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERheVBlcmlvZDo6Tm9uZToKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHN3aXRjaCAobWludXRlKSB7
CiAgICAgY2FzZSBNaW51dGU6OlR3b0RpZ2l0OgotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgibW0iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgibW0iKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNaW51dGU6Ok51bWVyaWM6CiAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ20nKTsKQEAgLTc3NSw3ICs3NzUsNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBz
d2l0Y2ggKHNlY29uZCkgewogICAgIGNhc2UgU2Vjb25kOjpUd29EaWdpdDoKLSAgICAgICAgc2tl
bGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoInNzIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmQoInNzIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2Vjb25kOjpOdW1lcmlj
OgogICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdzJyk7CkBAIC03OTYsNyArNzk2LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KCd6Jyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpMb25nOgotICAg
ICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgienp6eiIpOworICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCJ6enp6Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGlt
ZVpvbmVOYW1lOjpOb25lOgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggZjAzNTBjODQzOGQ3N2Vi
ZTdhNWY5Mjc0OTA3ZTNjYjQyYTM3ZTVkMi4uNTZlN2YxODRkNjJlMjQwYjI3MzYzYjkxZjRmMmEy
NTYyZmQ2MDcxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKQEAgLTM4MCwzMiArMzgwLDMxIEBAIHZvaWQgSW50bE51bWJlckZv
cm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21h
c3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQKIAog
ICAgIFN0cmluZ0J1aWxkZXIgc2tlbGV0b25CdWlsZGVyOwotICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKKyAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCJyb3VuZGluZy1tb2RlLWhhbGYtdXAiKTsKIAogICAgIHN3aXRjaCAobV9zdHls
ZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CiAgICAgICAgIC8vIE5vIHNrZWxldG9uIGlz
IG5lZWRlZC4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHlsZTo6UGVyY2VudDoKLSAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBwZXJjZW50IHNjYWxlLzEwMCIpOwor
ICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgcGVyY2VudCBzY2FsZS8xMDAiKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHlsZTo6Q3VycmVuY3k6IHsKLSAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjdXJyZW5jeS8iKTsKLSAgICAgICAgc2tlbGV0b25C
dWlsZGVyLmFwcGVuZChjdXJyZW5jeSk7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
IiBjdXJyZW5jeS8iLCBjdXJyZW5jeSk7CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2Uv
bnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0aAogICAgICAgICBzd2l0Y2ggKG1fY3VycmVu
Y3lEaXNwbGF5KSB7CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5OjpDb2RlOgotICAgICAg
ICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1bml0LXdpZHRoLWlzby1jb2Rl
Iik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0aC1pc28t
Y29kZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3VycmVuY3lEaXNwbGF5
OjpTeW1ib2w6CiAgICAgICAgICAgICAvLyBEZWZhdWx0IG9wdGlvbi4gRG8gbm90IHNwZWNpZnkg
dW5pdC13aWR0aC4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEN1cnJlbmN5RGlz
cGxheTo6TmFycm93U3ltYm9sOgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6Ok5hbWU6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiIHVuaXQtd2lkdGgtZnVsbC1uYW1lIik7CisgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNDE0LDI1ICs0MTMsMjQg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgLy8gVGhlIG1lYXN1cmUtdW5pdCBz
dGVtIHRha2VzIG9uZSByZXF1aXJlZCBvcHRpb246IHRoZSB1bml0IGlkZW50aWZpZXIgb2YgdGhl
IHVuaXQgdG8gYmUgZm9ybWF0dGVkLgogICAgICAgICAvLyBUaGUgZnVsbCB1bml0IGlkZW50aWZp
ZXIgaXMgcmVxdWlyZWQ6IGJvdGggdGhlIHR5cGUgYW5kIHRoZSBzdWJ0eXBlIChmb3IgZXhhbXBs
ZSwgbGVuZ3RoLW1ldGVyKS4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUt
b3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9z
a2VsZXRvbnMubWQjdW5pdAotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IG1lYXN1cmUtdW5pdC8iKTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIG1lYXN1
cmUtdW5pdC8iKTsKICAgICAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gd2VsbEZvcm1lZFVuaXQt
Pm51bWVyYXRvcjsKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChudW1lcmF0b3JVbml0
LnR5cGUsICctJywgbnVtZXJhdG9yVW5pdC5zdWJUeXBlKTsKICAgICAgICAgaWYgKGF1dG8gZGVu
b21pbmF0b3JVbml0VmFsdWUgPSB3ZWxsRm9ybWVkVW5pdC0+ZGVub21pbmF0b3IpIHsKICAgICAg
ICAgICAgIGF1dG8gZGVub21pbmF0b3JVbml0ID0gZGVub21pbmF0b3JVbml0VmFsdWUudmFsdWUo
KTsKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgcGVyLW1lYXN1
cmUtdW5pdC8iKTsKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoZGVub21pbmF0
b3JVbml0LnR5cGUsICctJywgZGVub21pbmF0b3JVbml0LnN1YlR5cGUpOworICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIHBlci1tZWFzdXJlLXVuaXQvIiwgZGVub21pbmF0b3JV
bml0LnR5cGUsICctJywgZGVub21pbmF0b3JVbml0LnN1YlR5cGUpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9k
b2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjdW5pdC13aWR0
aAogICAgICAgICBzd2l0Y2ggKG1fdW5pdERpc3BsYXkpIHsKICAgICAgICAgY2FzZSBVbml0RGlz
cGxheTo6U2hvcnQ6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IHVuaXQtd2lkdGgtc2hvcnQiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQo
IiB1bml0LXdpZHRoLXNob3J0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBV
bml0RGlzcGxheTo6TmFycm93OgotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiB1bml0LXdpZHRoLW5hcnJvdyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIHVuaXQtd2lkdGgtbmFycm93Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBVbml0RGlzcGxheTo6TG9uZzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgdW5pdC13aWR0aC1mdWxsLW5hbWUiKTsKKyAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoIiB1bml0LXdpZHRoLWZ1bGwtbmFtZSIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC00NDAsOCArNDM4LDcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB9CiAKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
dW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9u
dW1iZXJzL3NrZWxldG9ucy5tZCNpbnRlZ2VyLXdpZHRoCi0gICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBpbnRlZ2VyLXdpZHRoLyIpOwotICAgIHNrZWxldG9uQnVpbGRlci5hcHBl
bmQoKFdURjo6SUNVOjptYWpvclZlcnNpb24oKSA+PSA2NykgPyAnKicgOiAnKycpOyAvLyBQcmlv
ciB0byBJQ1UgNjcsIHVzZSB0aGUgc3ltYm9sICsgaW5zdGVhZCBvZiAqLgorICAgIHNrZWxldG9u
QnVpbGRlci5hcHBlbmQoIiBpbnRlZ2VyLXdpZHRoLyIsIFdURjo6SUNVOjptYWpvclZlcnNpb24o
KSA+PSA2NyA/ICcqJyA6ICcrJyk7IC8vIFByaW9yIHRvIElDVSA2NywgdXNlIHRoZSBzeW1ib2wg
KyBpbnN0ZWFkIG9mICouCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWluaW11bUlu
dGVnZXJEaWdpdHM7ICsraSkKICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnMCcpOwog
CkBAIC00NzQsMTggKzQ3MSwxOCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVO
dW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIGNhc2Ug
SW50bE5vdGF0aW9uOjpTdGFuZGFyZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRsTm90
YXRpb246OlNjaWVudGlmaWM6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgc2NpZW50aWZpYyIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2NpZW50
aWZpYyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEludGxOb3RhdGlvbjo6RW5naW5lZXJp
bmc6Ci0gICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW5naW5lZXJpbmci
KTsKKyAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgiIGVuZ2luZWVyaW5nIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSW50bE5vdGF0aW9uOjpDb21wYWN0OgogICAgICAgICBzd2l0
Y2ggKG1fY29tcGFjdERpc3BsYXkpIHsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6U2hv
cnQ6Ci0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGNvbXBhY3Qt
c2hvcnQiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBjb21wYWN0LXNo
b3J0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb21wYWN0RGlzcGxheTo6
TG9uZzoKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgY29tcGFj
dC1sb25nIik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgY29tcGFjdC1s
b25nIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTQ5NywyOSArNDk0LDI5IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgc3dpdGNoICht
X3NpZ25EaXNwbGF5KSB7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKICAgICAgICAgaWYg
KHVzZUFjY291bnRpbmcpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiIHNpZ24tYWNjb3VudGluZyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIHNpZ24tYWNjb3VudGluZyIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBza2VsZXRv
bkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHNpZ24tYXV0byIpOworICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZCgiIHNpZ24tYXV0byIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNpZ25EaXNwbGF5OjpOZXZlcjoKLSAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBzaWduLW5ldmVyIik7CisgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWdu
LW5ldmVyIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2lnbkRpc3BsYXk6OkFsd2F5czoK
ICAgICAgICAgaWYgKHVzZUFjY291bnRpbmcpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIHNpZ24tYWNjb3VudGluZy1hbHdheXMiKTsKKyAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFjY291bnRpbmctYWx3YXlzIik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgc2lnbi1h
bHdheXMiKTsKKyAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoIiBzaWduLWFsd2F5
cyIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNpZ25EaXNwbGF5OjpFeGNlcHRaZXJvOgog
ICAgICAgICBpZiAodXNlQWNjb3VudGluZykKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7CisgICAgICAgICAg
ICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvIik7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgc2lnbi1leGNlcHQtemVybyIpOworICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZCgiIHNpZ24tZXhjZXB0LXplcm8iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYg
KCFtX3VzZUdyb3VwaW5nKQotICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IGdyb3VwLW9mZiIpOworICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCIgZ3JvdXAtb2Zm
Iik7CiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICBkYXRhTG9nTG5JZihJbnRsTnVtYmVyRm9ybWF0SW50ZXJuYWw6OnZlcmJvc2UsIHNrZWxl
dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggZGEyYWJjM2RmMWIzNzFjZjczNjIxYTNkYWJiMjQ2
YjVlY2UwZjMzZC4uNDVhOWVmZmZkNjliM2FhN2Q1Mzk4MDEzMGFmOTE5OTFiZWJkNTM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiog
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBnZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7CiAKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1
cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdD
IGFsbG9jYXRpb24uCi0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKCJnZXQgIiwgU3RyaW5n
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5n
KCJnZXQgIiwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgZnVuY3Rpb24tPmZpbmlz
aENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAwLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IGVjNTQ0Yzc4NDg3ZmQ1NDM1YTAwZGE2ZjNmYWRmZTAw
MWUzNWMyMzUuLmQwNDc1MjRiNWI0MTUwYWM5ZGVlYTEyMTRiZWQwYjViZDI4NDQ1MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVy
RnVuY3Rpb24uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAg
ICAgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgc2V0dGVyKTsKIAogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0
aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAg
ICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJpbmcoInNldCAiLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSkpOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoInNldCAiLCBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4
ZWN1dGFibGUsIDEsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAppbmRleCBmNzFmMDc3NGJjMjkzMjgyODRhOTFjNjg4NzNmNTQzYTUxYjJlZmY5Li5lNjZh
MDg5ZTk5MTg5YmUxMTg0NmM0ZDUzMjdlODNiOTdkYzJmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CkBAIC01NDAsNyArNTQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQ
YXJzZUZsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAogSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNEZWNvZGVVUkksIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgc3RhdGljIEJpdG1hcDwy
NTY+IGRvTm90VW5lc2NhcGVXaGVuRGVjb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0bWFwKAor
ICAgIHN0YXRpYyBjb25zdCBCaXRtYXA8MjU2PiBkb05vdFVuZXNjYXBlV2hlbkRlY29kaW5nVVJJ
ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAgIiMkJissLzo7PT9AIgogICAgICk7CiAK
QEAgLTU0OSw0NCArNTQ5LDQyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5j
RGVjb2RlVVJJLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRp
YyBCaXRtYXA8MjU2PiBlbXB0eUJpdG1hcDsKKyAgICBzdGF0aWMgY29uc3QgQml0bWFwPDI1Nj4g
ZW1wdHlCaXRtYXA7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWNvZGUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBlbXB0eUJpdG1hcCwgdHJ1ZSkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY0VuY29kZVVSSSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBzdGF0aWMg
Qml0bWFwPDI1Nj4gZG9Ob3RFc2NhcGVXaGVuRW5jb2RpbmdVUkkgPSBtYWtlQ2hhcmFjdGVyQml0
bWFwKAorICAgIHN0YXRpYyBjb25zdCBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGlu
Z1VSSSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCiAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWiIKICAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgogICAgICAgICAi
MDEyMzQ1Njc4OSIKICAgICAgICAgIiEjJCYnKCkqKywtLi86Oz0/QF9+IgogICAgICk7Ci0KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50LCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIHN0YXRp
YyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZVdoZW5FbmNvZGluZ1VSSUNvbXBvbmVudCA9IG1ha2VD
aGFyYWN0ZXJCaXRtYXAoCisgICAgc3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBl
V2hlbkVuY29kaW5nVVJJQ29tcG9uZW50ID0gbWFrZUNoYXJhY3RlckJpdG1hcCgKICAgICAgICAg
IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgogICAgICAgICAiYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXoiCiAgICAgICAgICIwMTIzNDU2Nzg5IgogICAgICAgICAiIScoKSotLl9+IgogICAg
ICk7Ci0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVuY29kZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGRvTm90RXNjYXBlV2hlbkVuY29kaW5nVVJJQ29tcG9uZW50
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAg
IHN0YXRpYyBCaXRtYXA8MjU2PiBkb05vdEVzY2FwZSA9IG1ha2VDaGFyYWN0ZXJCaXRtYXAoCi0g
ICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgImFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAiMDEyMzQ1Njc4OSIKLSAgICAgICAgIiorLS4vQF8i
Ci0gICAgKTsKLQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9TdHJpbmdWaWV3KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IEJpdG1hcDwyNTY+IGRvTm90RXNjYXBlID0gbWFrZUNoYXJh
Y3RlckJpdG1hcCgKKyAgICAgICAgICAgICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKyAg
ICAgICAgICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKKyAgICAgICAgICAgICIwMTIz
NDU2Nzg5IgorICAgICAgICAgICAgIiorLS4vQF8iCisgICAgICAgICk7CisKICAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7CkBAIC01OTUsMTAgKzU5Myw4IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgICAgICAgICAgaW50IHUgPSBjWzBdOwogICAgICAg
ICAgICAgICAgIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgodSwgMikpOwotICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCclJywgaGV4KHUsIDIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBqc1N0
cmluZyh2bSwgYnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgfQpAQCAtNjA2LDE2ICs2MDIs
MTIgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNFc2NhcGUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICAgICAgY29uc3QgVUNoYXIqIGMgPSB2
aWV3LmNoYXJhY3RlcnMxNigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgdmll
dy5sZW5ndGgoKTsgaysrLCBjKyspIHsKICAgICAgICAgICAgIFVDaGFyIHUgPSBjWzBdOwotICAg
ICAgICAgICAgaWYgKHUgPj0gZG9Ob3RFc2NhcGUuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIldSIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1ID4+IDgpLCAyKSk7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHUg
JiAweEZGKSwgMikpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3Rh
dGljX2Nhc3Q8TENoYXI+KHUpKSkKKyAgICAgICAgICAgIGlmICh1ID49IGRvTm90RXNjYXBlLnNp
emUoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiJXUiLCBoZXgoc3RhdGljX2Nh
c3Q8dWludDhfdD4odSA+PiA4KSwgMiksIGhleChzdGF0aWNfY2FzdDx1aW50OF90Pih1KSwgMikp
OworICAgICAgICAgICAgZWxzZSBpZiAoZG9Ob3RFc2NhcGUuZ2V0KHN0YXRpY19jYXN0PExDaGFy
Pih1KSkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKmMpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odSksIDIp
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnJScsIGhleCh1LCAyKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
anNTdHJpbmcodm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDYxMGYzNmNmZWJjZGI0NzdhOTI0NGRlOGQ4
YjA4M2E4NGNkNjc1NmIuLmRjMDJlODhiYzhjYWU0NzE0YjNkOWU5ZGJiNjk1YzRjNGFiY2I5NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0z
MzgsNyArMzM4LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3Ry
aW5naWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRPclN5bWJvbFZhbHVlOwogCiAgICAgaWYgKHZhbHVl
LmlzTnVsbCgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3Vj
Y2VlZGVkOwogICAgIH0KIApAQCAtMzQ4LDkgKzM0OCw5IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdp
ZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRl
ciYKIAogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewogICAgICAgICBpZiAodmFsdWUuaXNU
cnVlKCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInRydWUiKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ0cnVlIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJmYWxzZSIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0K
IApAQCAtMzY3LDcgKzM2Nyw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5n
aWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShudW1iZXIpKQotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJudWxsIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQobnVtYmVyKTsKICAgICAgICAgfQpAQCAtMzg1LDcgKzM4NSw3IEBAIFN0cmluZ2lmaWVyOjpT
dHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5n
QnVpbGRlciYKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlm
IChvYmplY3QtPmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIGlmIChob2xkZXIuaXNBcnJheSgp
KSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJudWxsIik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5
U3VjY2VlZGVkOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWREdWVU
b1VuZGVmaW5lZE9yU3ltYm9sVmFsdWU7CkBAIC01NjcsNyArNTY3LDcgQEAgYm9vbCBTdHJpbmdp
Zmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVy
LCBTdHJpbmdCdWkKIAogICAgIHN3aXRjaCAoc3RyaW5naWZ5UmVzdWx0KSB7CiAgICAgICAgIGNh
c2UgU3RyaW5naWZ5RmFpbGVkOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJu
dWxsIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5naWZ5U3VjY2VlZGVkOgogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pv
aW5lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaApp
bmRleCA1NDA5MWQ3MGQ4YTczNjQ3ZGRmY2ZiNmIyOWY4ZGVhYjQ3ODc0YTM1Li4wMzI3YzMwMGNl
NTdlMDY5YTNmY2FmMzc5NzExMDE3MjZkZDI2NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcm
Jik7CiAgICAgdm9pZCBhcHBlbmQ4Qml0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5k
TGl0ZXJhbChjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdW5zaWduZWQgam9pbmVkTGVuZ3RoKEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBMQ2hhciBtX3NpbmdsZUNoYXJhY3RlclNlcGFy
YXRvcjsKQEAgLTkyLDEzICs5MSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5l
cjo6YXBwZW5kOEJpdChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX3N0cmluZ3MudW5jaGVj
a2VkQXBwZW5kKHsgc3RyaW5nLCBzdHJpbmcgfSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBK
U1N0cmluZ0pvaW5lcjo6YXBwZW5kTGl0ZXJhbChjb25zdCBJZGVudGlmaWVyJiBsaXRlcmFsKQot
ewotICAgIG1fYWNjdW11bGF0ZWRTdHJpbmdzTGVuZ3RoICs9IGxpdGVyYWwubGVuZ3RoKCk7Ci0g
ICAgQVNTRVJUKGxpdGVyYWwuc3RyaW5nKCkuaXM4Qml0KCkpOwotICAgIG1fc3RyaW5ncy51bmNo
ZWNrZWRBcHBlbmQoeyBsaXRlcmFsLnN0cmluZygpLCB7IH0gfSk7Ci19Ci0KIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kRW1wdHlTdHJpbmcoKQogewogICAgIG1fc3Ry
aW5ncy51bmNoZWNrZWRBcHBlbmQoeyB7IH0sIHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggYTdiMmRiMzhiZmM2MjA3ZTUwZTQyNmJhNjJhYTlj
MjA1ZWMyZWYzOC4uYTAxMTgzZjdkZmJiZjdkNTVlZGQ1MzAxNjAxZThiNDg5ZmIyY2E2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTEwMDksOSArMTAw
OSw5IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBE
dW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkCiAKICAgICBpZiAod2FzT3ZlcnJpZGRlbiAm
JiAoZHVtcERlZmF1bHRzT3B0aW9uID09IER1bXBEZWZhdWx0cykpIHsKICAgICAgICAgYXV0byBk
ZWZhdWx0T3B0aW9uID0gT3B0aW9uUmVhZGVyOjpkZWZhdWx0Rm9yKGlkKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgKGRlZmF1bHQ6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiIChkZWZhdWx0OiAiKTsKICAgICAgICAgZGVmYXVsdE9wdGlvbi5kdW1wKGJ1aWxkZXIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIikiKTsKICAgICB9CiAKICAgICBpZiAobmVlZHNEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDMwODBm
OTA2Njk3M2M2MDdlODhiNTkwZTczNjY3NjQyODU0YmIwNmEuLjA4Mjg3ODA3MjI1NWQ4OTczNzA4
MjU5ODJjZmU3ZTJlNTA0OThiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMzg0LDkgKzM4NCw5IEBAIGlubGluZSB2b2lk
IGFwcGVuZExpbmVUZXJtaW5hdG9yRXNjYXBlPFVDaGFyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBVQ2hhciBsaW5lCiAgICAgZWxzZSBpZiAobGluZVRlcm1pbmF0b3IgPT0gJ1xyJykKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJ3InKTsKICAgICBlbHNlIGlmIChsaW5lVGVybWluYXRvciA9PSAw
eDIwMjgpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidTIwMjgiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoInUyMDI4Iik7CiAgICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoInUyMDI5Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1MjAyOSIpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggZDcxZjNlYzE5ZmYz
Njc0Njc3MDdmZTUyYjg4MDI0YzU2MjdhMTRhZC4uMTZhM2I0NjJhNDdmMzY3YzIyMzY5YTIxMGY4
NGQ3YmI0YmMwZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTEwNDksNyArMTA0OSw3IEBAIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgICAg
ICBoYXNoID0gc3RyZWFtLnRvU3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
aGFzaCA9ICI8bmlsPiJfczsKLSAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBtYWtl
U3RyaW5nKGZyYW1lLmRpc3BsYXlOYW1lKG1fdm0pLCAnIycsIGhhc2gsICc6JywgZnJhbWUuc291
cmNlSUQoKSk7CisgICAgICAgIGF1dG8gZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJh
bWUuZGlzcGxheU5hbWUobV92bSksICcjJywgaGFzaCwgJzonLCBmcmFtZS5zb3VyY2VJRCgpKTsK
ICAgICAgICAgZnVuY3Rpb25Db3VudHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9y
LT52YWx1ZSsrOwogICAgICAgICB0b3RhbFNhbXBsZXMrKzsKICAgICB9CkBAIC0xMTUzLDcgKzEx
NTMsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0
cmVhbSYgb3V0KQogICAgICAgICB9OwogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3Rh
Y2tUcmFjZS5mcmFtZXMuZmlyc3QoKTsKLSAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24g
PSBtYWtlU3RyaW5nKGZyYW1lLmRpc3BsYXlOYW1lKG1fdm0pLCBkZXNjcmlwdGlvbkZvckxvY2F0
aW9uKGZyYW1lLnNlbWFudGljTG9jYXRpb24sIGZyYW1lLndhc21Db21waWxhdGlvbk1vZGUpKTsK
KyAgICAgICAgYXV0byBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5
TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFtZS5zZW1hbnRpY0xvY2F0aW9u
LCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7CiAgICAgICAgIGlmIChPcHRpb25hbDxzdGQ6
OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0
aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7CiAgICAgICAgICAgICBmcmFtZURlc2NyaXB0
aW9uID0gbWFrZVN0cmluZyhmcmFtZURlc2NyaXB0aW9uLCAiIDwtLSAiLAogICAgICAgICAgICAg
ICAgIG1hY2hpbmVMb2NhdGlvbi0+c2Vjb25kLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2Ny
aXB0aW9uRm9yTG9jYXRpb24obWFjaGluZUxvY2F0aW9uLT5maXJzdCwgV1RGOjpudWxsb3B0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRl
eCBhZmJlMmIzOTYxNWYxN2RiMzVjOGM4NzEzYzk5M2Q0ZjZmMGRjYTQ0Li42MjIxMTM5NDliZTlh
NzU3ZWQ0MDBiNTJkYTUxMjk4YTMyM2RhYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKQEAgLTg1LDIwICs4NSwxNyBAQCBTdHJpbmcgVHlw
ZVByb2ZpbGVyOjp0eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNzaW9uQXRPZmZzZXQoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzYwogCiAgICAganNvbi5hcHBlbmQoJ3snKTsKIAotICAgIGpzb24uYXBwZW5k
TGl0ZXJhbCgiXCJnbG9iYWxUeXBlU2V0XCI6Iik7CisgICAganNvbi5hcHBlbmQoIlwiZ2xvYmFs
VHlwZVNldFwiOiIpOwogICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0
aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgIT0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0cykK
ICAgICAgICAganNvbi5hcHBlbmQobG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+dG9KU09OU3Ry
aW5nKCkpOwogICAgIGVsc2UKLSAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJudWxsIik7Cisg
ICAgICAgIGpzb24uYXBwZW5kKCJudWxsIik7CiAgICAganNvbi5hcHBlbmQoJywnKTsKIAogICAg
IGpzb24uYXBwZW5kKCJcImluc3RydWN0aW9uVHlwZVNldFwiOiIsIGxvY2F0aW9uLT5tX2luc3Ry
dWN0aW9uVHlwZVNldC0+dG9KU09OU3RyaW5nKCksICcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExp
dGVyYWwoIlwiaXNPdmVyZmxvd25cIjoiKTsKLSAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rp
b25UeXBlU2V0LT5pc092ZXJmbG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYm
IGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29u
LmFwcGVuZExpdGVyYWwoInRydWUiKTsKLSAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiZmFsc2UiKTsKKyAgICBib29sIGlzT3ZlcmZsb3duID0gbG9jYXRpb24tPm1faW5zdHJ1
Y3Rpb25UeXBlU2V0LT5pc092ZXJmbG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0
ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpOworICAgIGpzb24u
YXBwZW5kKCJcImlzT3ZlcmZsb3duXCI6IiwgaXNPdmVyZmxvd24gPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKIAogICAgIGpzb24uYXBwZW5kKCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKaW5kZXggNzIxNDEwYjEwZGI0MWFiOTgyYTk4OGY1OWM2MWI3NTA0MWM1
ODI0Zi4uZDg4YmEyOGMzZjMwOTI3MmUzZGEyZWM0MjZiOTM5ZWQxZTk5NTFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTk1LDQyICs5NSwzNiBAQCBT
dHJpbmcgVHlwZVNldDo6ZHVtcFR5cGVzKCkgY29uc3QKICAgICBTdHJpbmdCdWlsZGVyIHNlZW47
CiAKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlRnVuY3Rpb24pCi0gICAgICAgIHNlZW4uYXBw
ZW5kTGl0ZXJhbCgiRnVuY3Rpb24gIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCJGdW5jdGlvbiAi
KTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQotICAgICAgICBzZWVuLmFw
cGVuZExpdGVyYWwoIlVuZGVmaW5lZCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5l
ZCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkKLSAgICAgICAgc2Vlbi5hcHBl
bmRMaXRlcmFsKCJOdWxsICIpOworICAgICAgICBzZWVuLmFwcGVuZCgiTnVsbCAiKTsKICAgICBp
ZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKLSAgICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFs
KCJCb29sZWFuICIpOworICAgICAgICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAiKTsKICAgICBpZiAo
bV9zZWVuVHlwZXMgJiBUeXBlQW55SW50KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIkFu
eUludCAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIkFueUludCAiKTsKICAgICBpZiAobV9zZWVu
VHlwZXMgJiBUeXBlTnVtYmVyKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk51bWJlciAi
KTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIk51bWJlciAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMg
JiBUeXBlU3RyaW5nKQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlN0cmluZyAiKTsKKyAg
ICAgICAgc2Vlbi5hcHBlbmQoIlN0cmluZyAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBl
T2JqZWN0KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk9iamVjdCAiKTsKKyAgICAgICAg
c2Vlbi5hcHBlbmQoIk9iamVjdCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3ltYm9s
KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlN5bWJvbCAiKTsKKyAgICAgICAgc2Vlbi5h
cHBlbmQoIlN5bWJvbCAiKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVj
dHVyZUhpc3RvcnkpIHsKLSAgICAgICAgc2Vlbi5hcHBlbmQoc2hhcGUtPm1fY29uc3RydWN0b3JO
YW1lKTsKLSAgICAgICAgc2Vlbi5hcHBlbmQoJyAnKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBh
dXRvJiBzaGFwZSA6IG1fc3RydWN0dXJlSGlzdG9yeSkKKyAgICAgICAgc2Vlbi5hcHBlbmQoc2hh
cGUtPm1fY29uc3RydWN0b3JOYW1lLCAnICcpOwogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9y
eS5zaXplKCkpIAotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIlxuU3RydWN0dXJlczpbICIp
OwotICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3RvcnkpIHsKLSAg
ICAgICAgc2Vlbi5hcHBlbmQoc2hhcGUtPnN0cmluZ1JlcHJlc2VudGF0aW9uKCkpOwotICAgICAg
ICBzZWVuLmFwcGVuZCgnICcpOwotICAgIH0KKyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0
dXJlczpbICIpOworICAgIGZvciAoY29uc3QgYXV0byYgc2hhcGUgOiBtX3N0cnVjdHVyZUhpc3Rv
cnkpCisgICAgICAgIHNlZW4uYXBwZW5kKHNoYXBlLT5zdHJpbmdSZXByZXNlbnRhdGlvbigpLCAn
ICcpOwogICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKQogICAgICAgICBzZWVuLmFw
cGVuZCgnXScpOwogCi0gICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpIHsKLSAgICAg
ICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJcbkxlYXN0IENvbW1vbiBBbmNlc3RvcjogIik7Ci0gICAg
ICAgIHNlZW4uYXBwZW5kKGxlYXN0Q29tbW9uQW5jZXN0b3IoKSk7Ci0gICAgfQorICAgIGlmICht
X3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKQorICAgICAgICBzZWVuLmFwcGVuZCgiXG5MZWFzdCBD
b21tb24gQW5jZXN0b3I6ICIsIGxlYXN0Q29tbW9uQW5jZXN0b3IoKSk7CiAKICAgICByZXR1cm4g
c2Vlbi50b1N0cmluZygpOwogfQpAQCAtMjU4LDU5ICsyNTIsNTcgQEAgU3RyaW5nIFR5cGVTZXQ6
OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAgIGpzb24u
YXBwZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZGlzcGxheVR5cGVOYW1l
XCI6Iik7CisgICAganNvbi5hcHBlbmQoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7CiAgICAganNv
bi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKGRpc3BsYXlOYW1lKCkpOwogICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicHJpbWl0aXZlVHlwZU5hbWVzXCI6
Iik7Ci0gICAganNvbi5hcHBlbmQoJ1snKTsKKyAgICBqc29uLmFwcGVuZCgiXCJwcmltaXRpdmVU
eXBlTmFtZXNcIjpbIik7CiAgICAgYm9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKICAgICBpZiAobV9z
ZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKSB7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0g
ICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJVbmRlZmluZWRcIiIpOworICAgICAgICBqc29u
LmFwcGVuZCgiXCJVbmRlZmluZWRcIiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlTnVsbCkgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBl
bmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCJcIk51bGxcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiXCJOdWxsXCIiKTsKICAg
ICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pIHsKICAgICAgICAgaWYgKGhh
c0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRl
bSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJCb29sZWFuXCIiKTsKKyAg
ICAgICAganNvbi5hcHBlbmQoIlwiQm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVBbnlJbnQpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAg
IGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiXCJJbnRlZ2VyXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoIlwi
SW50ZWdlclwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpIHsK
ICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAg
ICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJO
dW1iZXJcIiIpOworICAgICAgICBqc29uLmFwcGVuZCgiXCJOdW1iZXJcIiIpOwogICAgIH0KICAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0p
CiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVl
OwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiU3RyaW5nXCIiKTsKKyAgICAgICAganNv
bi5hcHBlbmQoIlwiU3RyaW5nXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlw
ZVN5bWJvbCkgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBl
bmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCJcIlN5bWJvbFwiIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJcIlN5bWJvbFwiIik7
CiAgICAgfQogICAgIGpzb24uYXBwZW5kKCddJyk7CiAKICAgICBqc29uLmFwcGVuZCgnLCcpOwog
Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKLSAgICBqc29uLmFw
cGVuZCgnWycpOworICAgIGpzb24uYXBwZW5kKCJcInN0cnVjdHVyZXNcIjpbIik7CiAgICAgaGFz
QW5JdGVtID0gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhp
c3Rvcnkuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKQEAgLTM2MCwxMSAr
MzUyLDggQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgaWYgKG1fcHJvdG8pIHsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJfX3Byb3RvX18iKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9wcm90by0+cHJvcGVydHlI
YXNoKCkpOwotICAgIH0KKyAgICBpZiAobV9wcm90bykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjpfX3Byb3RvX18iLCBtX3Byb3RvLT5wcm9wZXJ0eUhhc2goKSk7CiAKICAgICBtX3Byb3BlcnR5
SGFzaCA9IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVy
biAqbV9wcm9wZXJ0eUhhc2g7CkBAIC00MzcsNTAgKzQyNiw0NyBAQCBTdHJpbmcgU3RydWN0dXJl
U2hhcGU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBqc29uOwogICAg
IGpzb24uYXBwZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0
b3JOYW1lXCI6Iik7CisgICAganNvbi5hcHBlbmQoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CiAg
ICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3RyaW5nKG1fY29uc3RydWN0b3JOYW1lKTsKICAgICBq
c29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImlzSW5EaWN0aW9u
YXJ5TW9kZVwiOiIpOworICAgIGpzb24uYXBwZW5kKCJcImlzSW5EaWN0aW9uYXJ5TW9kZVwiOiIp
OwogICAgIGlmIChtX2lzSW5EaWN0aW9uYXJ5TW9kZSkKLSAgICAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCJ0cnVlIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJ0cnVlIik7CiAgICAgZWxzZQotICAg
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoImZhbHNlIik7CisgICAgICAgIGpzb24uYXBwZW5kKCJm
YWxzZSIpOwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiZmllbGRzXCI6Iik7Ci0gICAganNvbi5hcHBlbmQoJ1snKTsKKyAgICBqc29uLmFwcGVuZCgi
XCJmaWVsZHNcIjpbIik7CiAgICAgYm9vbCBoYXNBbkl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1
dG8gaXQgPSBtX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgZm9yIChhdXRvJiBmaWVsZCA6IG1fZmllbGRzKSB7CiAgICAgICAgIGlm
IChoYXNBbkl0ZW0pCiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNB
bkl0ZW0gPSB0cnVlOwogCi0gICAgICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCkuZ2V0KCkpOwor
ICAgICAgICBTdHJpbmcgZmllbGROYW1lKGZpZWxkLmdldCgpKTsKICAgICAgICAganNvbi5hcHBl
bmRRdW90ZWRKU09OU3RyaW5nKGZpZWxkTmFtZSk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCdd
Jyk7Ci0gICAganNvbi5hcHBlbmQoJywnKTsKKyAgICBqc29uLmFwcGVuZCgiXSwiKTsKIAotICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJvcHRpb25hbEZpZWxkc1wiOiIpOwotICAgIGpzb24uYXBw
ZW5kKCdbJyk7CisgICAganNvbi5hcHBlbmQoIlwib3B0aW9uYWxGaWVsZHNcIjpbIik7CiAgICAg
aGFzQW5JdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9vcHRpb25hbEZpZWxkcy5i
ZWdpbigpLCBlbmQgPSBtX29wdGlvbmFsRmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICBmb3IgKGF1dG8mIGZpZWxkIDogbV9vcHRpb25hbEZpZWxkcykgewogICAgICAgICBpZiAo
aGFzQW5JdGVtKQogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5J
dGVtID0gdHJ1ZTsKIAotICAgICAgICBTdHJpbmcgZmllbGROYW1lKCgqaXQpLmdldCgpKTsKKyAg
ICAgICAgU3RyaW5nIGZpZWxkTmFtZShmaWVsZC5nZXQoKSk7CiAgICAgICAgIGpzb24uYXBwZW5k
UXVvdGVkSlNPTlN0cmluZyhmaWVsZE5hbWUpOwogICAgIH0KICAgICBqc29uLmFwcGVuZCgnXScp
OwogICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwicHJv
dG9cIjoiKTsKKyAgICBqc29uLmFwcGVuZCgiXCJwcm90b1wiOiIpOwogICAgIGlmIChtX3Byb3Rv
KQogICAgICAgICBqc29uLmFwcGVuZChtX3Byb3RvLT50b0pTT05TdHJpbmcoKSk7CiAgICAgZWxz
ZQotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAganNvbi5hcHBl
bmQoIm51bGwiKTsKIAogICAgIGpzb24uYXBwZW5kKCd9Jyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
aW5kZXggYWE4NmQ1YjEwYjcyZjE2YjgyODNkNzhmNjkxYzkxZjliNDIxMWIwNS4uYzNmMTcwY2My
OGFiZWVjNDAyYTJjNzI4ZmQxNzFiYWVjNjU4YmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAg
LTE0NywyNSArMTQ3LDE4IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcm
IGlucHV0U3RyaW5nKQogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAotICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyOwotICAg
IFVDaGFyIGNoYXJhY3RlciA9IDA7CisgICAgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIgPSAwOwog
ICAgIFVDaGFyIG5leHRDaGFyYWN0ZXIgPSBpbnB1dFN0cmluZ1swXTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIg
PSBjaGFyYWN0ZXI7Ci0gICAgICAgIGNoYXJhY3RlciA9IG5leHRDaGFyYWN0ZXI7Ci0gICAgICAg
IG5leHRDaGFyYWN0ZXIgPSBpICsgMSA8IGxlbmd0aCA/IGlucHV0U3RyaW5nW2kgKyAxXSA6IDA7
Ci0KKyAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSBzdGQ6OmV4Y2hhbmdlKG5leHRDaGFyYWN0ZXIs
IGkgKyAxIDwgbGVuZ3RoID8gaW5wdXRTdHJpbmdbaSArIDFdIDogMCk7CiAgICAgICAgIGlmIChz
aG91bGRFc2NhcGVVQ2hhcihjaGFyYWN0ZXIsIHByZXZpb3VzQ2hhcmFjdGVyLCBuZXh0Q2hhcmFj
dGVyKSkgewotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA8PSAyNTUpIHsKLSAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCho
ZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiJSsiKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjaGFyYWN0ZXIgPj4gOCksIDIpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGhleChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaGFyYWN0ZXIpLCAyKSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDB4RkYpCisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnJScsIGhleChjaGFyYWN0ZXIsIDIpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlKyIsIGhleChzdGF0aWNfY2FzdDx1
aW50OF90PihjaGFyYWN0ZXIgPj4gOCksIDIpLCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4oY2hh
cmFjdGVyKSwgMikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y2hhcmFjdGVyKTsKKyAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSlNPTlZhbHVlcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRl
eCA0Nzc2ODU0ODA4Mjk3ZWNkMjM5OGYyYzUwN2U4YzZhMjhhZjZlNTAxLi4zZDI1NmJlZjJkYTkx
MTQ4MzI5YTUwM2FmMmI0YjY3N2ViNTIxOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9K
U09OVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNTIz
LDI1ICs1MjMsMjUgQEAgdm9pZCBWYWx1ZTo6ZXNjYXBlU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIGZvciAoVUNoYXIgY29kZVVuaXQgOiBzdHJp
bmcuY29kZVVuaXRzKCkpIHsKICAgICAgICAgc3dpdGNoIChjb2RlVW5pdCkgewogICAgICAgICBj
YXNlICdcYic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcYiIpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcYiIpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGNhc2UgJ1xmJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxm
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxmIik7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJcXG4iKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcXG4iKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBjYXNlICdccic6Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlxcciIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcciIpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJ1x0JzoKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFx0Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XFx0Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY2FzZSAnXFwnOgotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiXFxcXCIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNhc2UgJyIn
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFwiIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXFxcIiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgLy8gV2UgZXNjYXBlIDwgYW5kID4gdG8gcHJldmVudCBzY3JpcHQgZXhlY3V0
aW9uLgpAQCAtNTk4LDEzICs1OTgsMTMgQEAgdm9pZCBWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1
aWxkZXImIG91dHB1dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
VHlwZTo6TnVsbDoKLSAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAg
ICAgb3V0cHV0LmFwcGVuZCgibnVsbCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6
OkJvb2xlYW46CiAgICAgICAgIGlmIChtX3ZhbHVlLmJvb2xlYW4pCi0gICAgICAgICAgICBvdXRw
dXQuYXBwZW5kTGl0ZXJhbCgidHJ1ZSIpOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgidHJ1
ZSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgiZmFs
c2UiKTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoImZhbHNlIik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVHlwZTo6U3RyaW5nOgogICAgICAgICBhcHBlbmREb3VibGVRdW90ZWRTdHJp
bmcob3V0cHV0LCBtX3ZhbHVlLnN0cmluZyk7CkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBWYWx1
ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKICAgICBjYXNlIFR5cGU6
OkRvdWJsZToKICAgICBjYXNlIFR5cGU6OkludGVnZXI6IHsKICAgICAgICAgaWYgKCFzdGQ6Omlz
ZmluaXRlKG1fdmFsdWUubnVtYmVyKSkKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFs
KCJudWxsIik7CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJudWxsIik7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobV92YWx1ZS5udW1iZXIpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93
dGYvTG9nZ2VyLmgKaW5kZXggNGY1NDQ3ZGEzMTdlZWIxYjE4ZDZjNDk5NWMzZWQzOWE4NjMzNmJl
NS4uNWJkYWY2NzZhMGI2ZDcwMzIyODMxYjg4MDdhNDQ5ZWFlNGM5OGQ5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTG9nZ2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAg
LTMwNyw3ICszMDcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50PgogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwg
V1RGTG9nTGV2ZWwgbGV2ZWwsIGNvbnN0IEFyZ3VtZW50Ji4uLiBhcmd1bWVudHMpCiAgICAgewot
ICAgICAgICBTdHJpbmcgbG9nTWVzc2FnZSA9IG1ha2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1l
bnQ+Ojp0b1N0cmluZyhhcmd1bWVudHMpLi4uKTsKKyAgICAgICAgYXV0byBsb2dNZXNzYWdlID0g
bWFrZVN0cmluZyhMb2dBcmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4p
OwogCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgV1RGTG9nKCZjaGFubmVsLCAi
JXMiLCBsb2dNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnQ+CiAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIGxvZ1ZlcmJvc2UoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2
ZWwsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgbGluZSwgY29u
c3QgQXJndW1lbnQmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIFN0cmluZyBsb2dNZXNz
YWdlID0gbWFrZVN0cmluZyhMb2dBcmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50
cykuLi4pOworICAgICAgICBhdXRvIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50
PEFyZ3VtZW50Pjo6dG9TdHJpbmcoYXJndW1lbnRzKS4uLik7CiAKICNpZiBSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgICAgICBXVEZMb2dWZXJib3NlKGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCAmY2hh
bm5lbCwgIiVzIiwgbG9nTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmlu
ZGV4IDkzOTc3NTA4YjRjNTdlMTkyMTA3Y2JiMmM1NjJmZmJlYWU1ZjhhNjcuLjRiYmM5ODFkOGRi
MDJiNTM2OWRhZmMxNDRlOGFkMjQ0MzlmZGVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtMzYs
NyArMzYsNiBAQAogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTU2NSwxNSArNTY0LDEwIEBAIHZvaWQgTWVkaWFUaW1lOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAKIFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5n
KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBl
bmQoJ3snKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fdGltZVZhbHVlLCAnLycsIG1fdGltZVNjYWxlLCAiID0gIik7Ci0gICAgYnVpbGRlci5h
cHBlbmQodG9Eb3VibGUoKSk7Ci0gICAgaWYgKGlzSW52YWxpZCgpKQotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgaW52YWxpZCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7Ci0g
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyKiBpbnZhbGlkID0g
aXNJbnZhbGlkKCkgPyAiLCBpbnZhbGlkIiA6ICIiOworICAgIGlmIChoYXNEb3VibGVWYWx1ZSgp
KQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZygneycsIHRvRG91YmxlKCksIGludmFsaWQsICd9
Jyk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVT
Y2FsZSwgIiA9ICIsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7CiB9CiAKIFJlZjxKU09OOjpP
YmplY3Q+IE1lZGlhVGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKaW5kZXggMjJhY2VmY2M4YmJjZmZj
MTMzMjA3NWE3ODZhYmM0YmUzZGI0ZmNiMi4uMDNmNTg2MWMzM2NiZTJmMzlkNWMxMDNjOGE5MjBl
NDFiZDAxZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmgKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIHZvaWQgd3JpdGVJbnRlZ2VyVG9C
dWZmZXIoSW50ZWdlclR5cGUgaW50ZWdlciwgQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24KIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0
aXZlTnVtYmVyIE51bWJlclR5cGU+Ci1zdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNT
dHJpbmdJbXBsKFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyKQorY29uc3RleHByIHVuc2lnbmVk
IGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
IHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwogCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGlj
IHVuc2lnbmVkIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBl
IG51bWJlcikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdlclR5cGU+Ci1pbmxpbmUgdW5z
aWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoSW50ZWdlclR5cGUgaW50ZWdlcikKK2NvbnN0
ZXhwciB1bnNpZ25lZCBsZW5ndGhPZkludGVnZXJBc1N0cmluZyhJbnRlZ2VyVHlwZSBpbnRlZ2Vy
KQogewogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbF92PEludGVnZXJUeXBlPik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxJbnRlZ2VyVHlwZSwgYm9vbD4pIHsK
QEAgLTEyOCwzICsxMjgsNiBAQCBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJp
bmcoSW50ZWdlclR5cGUgaW50ZWdlcikKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6bGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmc7Cit1c2luZyBXVEY6OndyaXRlSW50ZWdlclRv
QnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1NGYyYjI0MjU5YzU4
MGZmMzE0NWU4ZTdiZmYzYzg4YzYyZjk5N2EyLi42NjY4YWM2MjczMGUwODY5NjUwYjI5ODIwZjgz
NmRmNzcxYTg0MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtNjksOCAr
NjksNiBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEFkZCBhIFN0cmluZ1R5cGVBZGFwdGVyIHNv
IHdlIGNhbiBhcHBlbmQgb25lIHN0cmluZyBidWlsZGVyIHRvIGFub3RoZXIgd2l0aCB2YXJpYWRp
YyBhcHBlbmQuCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nQnVpbGRlciYpOwogCi0gICAg
dGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IHZvaWQgYXBwZW5kTGl0ZXJhbChjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSB7IGFwcGVuZENoYXJhY3RlcnMo
Y2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsgfQotCiAgICAgdm9pZCBhcHBlbmRDaGFy
YWN0ZXIoVUNoYXIpID0gZGVsZXRlOwogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyKExDaGFyKSA9
IGRlbGV0ZTsKICAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihjaGFyKSA9IGRlbGV0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAppbmRleCAyNjkwMmUwZmEyNDViZGFlMWVm
ZjFlYTBjNzE3YjZkMTliNzlmMTQ2Li4yZTM4ZWY3Nzg5OWEzYzNlYmFmZWI1MWRhOTQwNmNmYWJk
ZGY3MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0xNzAs
MTUgKzE3MCwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgbV92ZWN0b3I7
CiB9OwogCi10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4g
ewordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4g
ewogcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICAgICAgOiBtX3N0
cmluZyB7IHN0cmluZyB9CiAgICAgewogICAgIH0KIAotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9Ci0gICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKSB8fCBtX3N0cmluZy5pczhCaXQoKTsgfQorICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nID8gbV9zdHJpbmctPmxl
bmd0aCgpIDogMDsgfQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gIW1fc3RyaW5n
IHx8IG1fc3RyaW5nLT5pczhCaXQoKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKICAg
ICB7CiAgICAgICAgIFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGRlc3RpbmF0aW9uKTsKQEAgLTE4Niw3ICsxODYsMjMgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBjb25zdCBTdHJpbmcmIG1fc3RyaW5nOworICAgIFN0cmluZ0ltcGwq
IGNvbnN0IG1fc3RyaW5nOworfTsKKwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxBdG9tU3RyaW5nSW1wbCosIHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z0ltcGwqLCB2b2lkPiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQXRvbVN0cmlu
Z0ltcGwqIHN0cmluZykKKyAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwg
dm9pZD4geyBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSB9CisgICAgeworICAgIH0K
K307CisKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nLCB2b2lkPiA6
IHB1YmxpYyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsKiwgdm9pZD4geworcHVibGljOgor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgICAgICA6IFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwqLCB2b2lkPiB7IHN0cmluZy5pbXBsKCkgfQorICAg
IHsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEF0b21T
dHJpbmcsIHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gewpA
QCAtMTk3LDYgKzIxMywzMyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBjbGFz
cyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdJbXBsJiwgdm9pZD4geworcHVibGljOgorICAgIFN0
cmluZ1R5cGVBZGFwdGVyKFN0cmluZ0ltcGwmIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyB7
IHN0cmluZyB9CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pczhCaXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKKyAg
ICB7CisgICAgICAgIFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgV1RGX1NUUklOR1RZUEVBREFQVEVSX0NPUElF
RF9XVEZfU1RSSU5HKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZ0ltcGwmIG1fc3Ry
aW5nOworfTsKKwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBdG9tU3RyaW5n
SW1wbCYsIHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lk
PiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoU3RyaW5nSW1wbCYgc3RyaW5nKQor
ICAgICAgICA6IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0ltcGwmLCB2b2lkPiB7IHN0cmluZyB9
CisgICAgeworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBj
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxzdGQ6OnR1cGxlPFN0cmluZ1R5cGVzLi4uPiwgdm9pZD4g
ewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKHN0ZDo6dHVwbGU8U3RyaW5nVHlwZXMu
Li4+IHR1cGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAppbmRleCAxZDE3MTU4ZDI4Y2UzOWU5ZTcwYzgzNDcwMzM5YTZmNzc0NzEz
MDQ0Li41NWNmZGFhZDdkYmZjMTE1ZDkyN2ZhZjlhNGU4MGEzMTZjM2Y1MjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
MTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0
YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgYXV0byBmb3JtID0g
RE9NRm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKSk7CiAgICAgYXV0byBtaW1lVHlwZSA9
IHBhcnNlTUlNRVR5cGUoY29udGVudFR5cGUpOwogICAgIGlmIChhdXRvIG11bHRpcGFydEJvdW5k
YXJ5ID0gcGFyc2VNdWx0aXBhcnRCb3VuZGFyeShtaW1lVHlwZSkpIHsKLSAgICAgICAgU3RyaW5n
IGJvdW5kYXJ5V2l0aERhc2hlcyA9IG1ha2VTdHJpbmcoIi0tIiwgKm11bHRpcGFydEJvdW5kYXJ5
KTsKKyAgICAgICAgYXV0byBib3VuZGFyeVdpdGhEYXNoZXMgPSBtYWtlU3RyaW5nKCItLSIsICpt
dWx0aXBhcnRCb3VuZGFyeSk7CiAgICAgICAgIENTdHJpbmcgYm91bmRhcnkgPSBib3VuZGFyeVdp
dGhEYXNoZXMudXRmOCgpOwogICAgICAgICBzaXplX3QgYm91bmRhcnlMZW5ndGggPSBib3VuZGFy
eS5sZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcAppbmRleCBiNDFiMmYwZTNiMzYxNmU1OGM1M2UwNzQwMzQ2MmVmMGI5ZmExMmQy
Li44Zjc4YzRjN2ViZTg3NzQ5Y2MyMzhiNGNmNzUwNGY4MDRkY2EzNDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtMzIzLDI0ICsz
MjMsMjQgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAgICAg
ICByZXR1cm4gIjxpbnZhbGlkPiJfczsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJy
YXk6IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjxhcnJheT4gLSB7ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiPGFy
cmF5PiAtIHsgIik7CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8VmVjdG9yPElEQktl
eURhdGE+PihtX3ZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXlbaV0ubG9nZ2lu
Z1N0cmluZygpKTsKICAgICAgICAgICAgIGlmIChpIDwgYXJyYXkuc2l6ZSgpIC0gMSkKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgfSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIH0iKTsKICAgICAgICAgcmVz
dWx0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeTogewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPGJpbmFyeT4gLSAiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjxiaW5hcnk+IC0gIik7CiAKICAgICAgICAgYXV0byogZGF0
YSA9IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CiAgICAg
ICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVs
bCkiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobnVsbCkiKTsKICAgICAgICAgICAg
IHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmco
KSBjb25zdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGEtPnNpemUoKSA+IDgpCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi4uLiIpOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIi4uLiIpOwogCiAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNk
MmNkMTM2YWQ0Mzc0NWFhY2MyMjc0OTVkMDVmN2Q3YTJlM2M5ZGQuLmQ3ZmEzYmMyZWUxYzY4N2Nl
N2U0YTFiYmQ3YTRiMGFjNjA2MzQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gV2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgZmlsZSBmb3IgdGhpcyBi
bG9iVVJMLCBzbyBjb21taXQgb3VyIGZpbGUgYXMgYSB1bmlxdWUgZmlsZW5hbWUKLSAgICAgICAg
U3RyaW5nIHN0b3JlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhwb3RlbnRpYWxGaWxlTmFtZUludGVn
ZXIsICIuYmxvYiIpOworICAgICAgICBhdXRvIHN0b3JlZEZpbGVuYW1lID0gbWFrZVN0cmluZyhw
b3RlbnRpYWxGaWxlTmFtZUludGVnZXIsICIuYmxvYiIpOwogICAgICAgICB7CiAgICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OkFkZEJsb2JGaWxlbmFtZSwgIklOU0VS
VCBJTlRPIEJsb2JGaWxlcyBWQUxVRVMgKD8sID8pOyJfcyk7CiAgICAgICAgICAgICBpZiAoIXNx
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA3MDMyYjIzOGNiYTZmMWI1NjcxMWE5ZmY5OGE2
OTYxYWUzNjU0YWI5Li40Y2UyYmYyNThhM2ViZTdmZDg0MjhhZjQ3N2JlNDIwOTQ4OTU1NzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlNRTGl0
ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8
c3FsaXRlMy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC0xMzQsNzggKzEzMywzMiBA
QCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQs
IGNvbnN0IE9wdGlvbmFsPElEQktleVBhdAogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhT
dGF0ZW1lbnQoYm9vbCBpc0RpcmVjdGlvbk5leHQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwgdmFs
dWUgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBB
UyBURVhUKSBBTkQgdmFsdWUgIik7Ci0gICAgaWYgKGlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoJz4nKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc8
Jyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVYVCkgT1JERVIg
QlkgdmFsdWUiKTsKLSAgICBpZiAoIWlzRGlyZWN0aW9uTmV4dCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgREVTQyIpOwotCi0gICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKLQotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlNFTEVD
VCByb3dpZCwga2V5LCB2YWx1ZSBGUk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBB
TkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIEFORCB2YWx1ZSAiLAorICAgICAgICBpc0RpcmVjdGlv
bk5leHQgPyAnPicgOiAnPCcsICIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIHZhbHVlIiwgaXNE
aXJlY3Rpb25OZXh0ID8gIiIgOiAiIERFU0MiLCAnOycpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1
aWxkSW5kZXhTdGF0ZW1lbnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24gY3Vyc29yRGlyZWN0aW9uKQogewotICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU0VMRUNUIHJvd2lkLCBr
ZXksIHZhbHVlIEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgIik7
Ci0gICAgaWYgKCFrZXlSYW5nZS5sb3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJP
cGVuKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIj49Iik7Ci0gICAgZWxzZQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnPicpOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
Q0FTVCg/IEFTIFRFWFQpIEFORCBrZXkgIik7Ci0gICAgaWYgKCFrZXlSYW5nZS51cHBlcktleS5p
c051bGwoKSAmJiAha2V5UmFuZ2UudXBwZXJPcGVuKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjw9Iik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVyLmFwcGVuZCgnPCcpOwotCi0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIp
OwotICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246
OlByZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQ
cmV2dW5pcXVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0KLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgdmFsdWUiKTsKLSAgICBpZiAoY3Vyc29yRGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2KQotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiBERVNDIik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZCgnOycpOwotCi0g
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiU0VM
RUNUIHJvd2lkLCBrZXksIHZhbHVlIEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/
IEFORCBrZXkgIiwKKyAgICAgICAgIWtleVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlS
YW5nZS5sb3dlck9wZW4gPyAiPj0iIDogIj4iLAorICAgICAgICAiIENBU1QoPyBBUyBURVhUKSBB
TkQga2V5ICIsCisgICAgICAgICFrZXlSYW5nZS51cHBlcktleS5pc051bGwoKSAmJiAha2V5UmFu
Z2UudXBwZXJPcGVuID8gIjw9IiA6ICI8IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgT1JE
RVIgQlkga2V5IiwKKyAgICAgICAgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uOjpQcmV2IHx8IGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbjo6UHJldnVuaXF1ZSA/ICIgREVTQyIgOiAiIiwKKyAgICAgICAgIiwgdmFsdWUiLAor
ICAgICAgICBjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlBy
ZXYgPyAiIERFU0MiIDogIiIsCisgICAgICAgICc7Jyk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVp
bGRPYmplY3RTdG9yZVN0YXRlbWVudChjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24pCiB7Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93
aWQsIGtleSwgdmFsdWUgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBr
ZXkgIik7Ci0KLSAgICBpZiAoIWtleVJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpICYmICFrZXlSYW5n
ZS5sb3dlck9wZW4pCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiPj0iKTsKLSAgICBl
bHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc+Jyk7Ci0KLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSAiKTsKLQotICAgIGlmICgha2V5UmFuZ2Uu
dXBwZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVyT3BlbikKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI8PSIpOwotICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
JzwnKTsKLQotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRF
UiBCWSBrZXkiKTsKLQotICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb246OlByZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uOjpQcmV2dW5pcXVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBE
RVNDIik7Ci0KLSAgICBidWlsZGVyLmFwcGVuZCgnOycpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiU0VMRUNUIHJvd2lkLCBrZXksIHZh
bHVlIEZST00gUmVjb3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ICIsCisgICAg
ICAgICFrZXlSYW5nZS5sb3dlcktleS5pc051bGwoKSAmJiAha2V5UmFuZ2UubG93ZXJPcGVuID8g
Ij49IiA6ICI+IiwKKyAgICAgICAgIiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSAiLAorICAgICAg
ICAha2V5UmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLnVwcGVyT3BlbiA/ICI8
PSIgOiAiPCIsCisgICAgICAgICIgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleSIsCisgICAg
ICAgIGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldiB8
fCBjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlx
dWUgPyAiIERFU0MiIDogIiIsCisgICAgICAgICc7Jyk7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vy
c29yOjplc3RhYmxpc2hTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBmZTgwZDQwMTAwNWU1MTRiOWM5ZjRkNDRjMDdl
OTdjMDhkZDE1ODQ3Li5jZDljYTIyNGMzOGJkYjRlNWMxYzUxNTE3YjE2OGExNTg0YTU1OThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApA
QCAtMTA4LDExICsxMDgsMTAgQEAgc3RhdGljIFN0cmluZyBlbmNvZGVQcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKLSAgICAg
ICAgaWYgKHByb3RvY29sW2ldIDwgMHgyMCB8fCBwcm90b2NvbFtpXSA+IDB4N0UpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFx1Iik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChoZXgocHJvdG9jb2xbaV0sIDQpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm90b2Nv
bFtpXSA9PSAweDVjKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXFxcIik7
CisgICAgICAgIGlmIChwcm90b2NvbFtpXSA8IDB4MjAgfHwgcHJvdG9jb2xbaV0gPiAweDdFKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcdSIsIGhleChwcm90b2NvbFtpXSwgNCkpOwor
ICAgICAgICBlbHNlIGlmIChwcm90b2NvbFtpXSA9PSAweDVjKQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxcXFwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQocHJvdG9jb2xbaV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNw
cAppbmRleCAwMDY2NjM4YzE3MWMzOWQ2NjUzODZhNzQxYTAwY2NkZGIwY2RjNmJjLi43YWYyYzM3
OTFhMGFlOGQ2ZWU5ZTkyOTk4MzU3ZTg2MGFmYmI3NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXIuY3BwCkBAIC03MSw5ICs3MSw3IEBAIGNvbnN0IFN0cmluZyBXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyOjpjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0CiAKIHZvaWQgV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25Ub2tlbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lv
blBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNF
bXB0eSgpKQotICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKGV4dGVuc2lv
blRva2VuKTsKKyAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKG1fYWNjZXB0
ZWRFeHRlbnNpb25zQnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGV4dGVuc2lvblRva2Vu
KTsKICAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBMaXN0SGFzaFNldCB0byBrZWVwIHRoZSBvcmRl
ciBvZiB0aGUgcGFyYW1ldGVycy4KICAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IGV4dGVuc2lv
blBhcmFtZXRlcnMpIHsKICAgICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVu
ZCgiOyAiLCBwYXJhbWV0ZXIua2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZTQ5MGFkYTM3YmQx
MzY4NGM1Y2FmNmFiY2I0MjcxNTQ0ZDg3YzNlNS4uODQ5Y2Y1ZjYyNGJjYzI3MmVlNWU3YmM2MjZk
YTdlNTAzYWQ0NDkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtMTY2LDg1ICsxNjUsNTMgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xp
ZW50TG9jYXRpb24oKSBjb25zdAogCiBDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgLy8gS2VlcCB0aGUgZm9sbG93aW5nIGNv
bnNpc3RlbnQgd2l0aCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkuCi0gICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIC8vIEtlZXAgdGhlIGZvbGxvd2luZyBjb25zaXN0ZW50IHdpdGggY2xp
ZW50SGFuZHNoYWtlUmVxdWVzdCBqdXN0IGJlbG93LgogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJHRVQgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2VOYW1lKG1fdXJsKSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgSFRUUC8xLjFcclxuIik7Ci0KLSAgICBWZWN0b3I8
U3RyaW5nPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFwcGVuZCgiVXBncmFkZTogd2Vic29ja2V0Iik7
Ci0gICAgZmllbGRzLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZSIpOwotICAgIGZpZWxkcy5h
cHBlbmQoIkhvc3Q6ICIgKyBob3N0TmFtZShtX3VybCwgbV9zZWN1cmUpKTsKLSAgICBmaWVsZHMu
YXBwZW5kKCJPcmlnaW46ICIgKyBtX2NsaWVudE9yaWdpbik7Ci0gICAgaWYgKCFtX2NsaWVudFBy
b3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1Q
cm90b2NvbDogIiArIG1fY2xpZW50UHJvdG9jb2wpOwotCi0gICAgLy8gTm90ZTogQ29va2llcyBh
cmUgbm90IHJldHJpZXZlZCBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLiBJbnN0ZWFkLCBhIHBy
b3h5IG9iamVjdCBpcworICAgIC8vIENvb2tpZXMgYXJlIG5vdCByZXRyaWV2ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4gSW5zdGVhZCwgYSBwcm94eSBvYmplY3QgaXMKICAgICAvLyBhZGRl
ZCBpbiB0aGUgaGFuZHNoYWtlLCBhbmQgaXMgZXhjaGFuZ2VkIGZvciBhY3R1YWwgY29va2llcyBp
biB0aGUgTmV0d29yayBwcm9jZXNzLgogCi0gICAgLy8gQWRkIG5vLWNhY2hlIGhlYWRlcnMgdG8g
YXZvaWQgY29tcGF0aWJpbGl0eSBpc3N1ZS4KLSAgICAvLyBUaGVyZSBhcmUgc29tZSBwcm94aWVz
IHRoYXQgcmV3cml0ZSAiQ29ubmVjdGlvbjogdXBncmFkZSIKLSAgICAvLyB0byAiQ29ubmVjdGlv
bjogY2xvc2UiIGluIHRoZSByZXNwb25zZSBpZiBhIHJlcXVlc3QgZG9lc24ndCBjb250YWluCi0g
ICAgLy8gdGhlc2UgaGVhZGVycy4KLSAgICBmaWVsZHMuYXBwZW5kKCJQcmFnbWE6IG5vLWNhY2hl
Iik7Ci0gICAgZmllbGRzLmFwcGVuZCgiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUiKTsKLQotICAg
IGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtS2V5OiAiICsgbV9zZWNXZWJTb2NrZXRLZXkp
OwotICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtVmVyc2lvbjogMTMiKTsKLSAgICBj
b25zdCBTdHJpbmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRl
SGVhZGVyVmFsdWUoKTsKLSAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCi0gICAgICAg
IGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogIiArIGV4dGVuc2lvblZh
bHVlKTsKLQotICAgIC8vIEFkZCBhIFVzZXItQWdlbnQgaGVhZGVyLgotICAgIGZpZWxkcy5hcHBl
bmQobWFrZVN0cmluZygiVXNlci1BZ2VudDogIiwgbV91c2VyQWdlbnQpKTsKLQotICAgIC8vIEZp
ZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5kb20g
b3JkZXI7IHRoZQotICAgIC8vIG9yZGVyIGlzIG5vdCBtZWFuaW5nZnVsLiAgVGh1cywgaXQncyBv
ayB0byBzZW5kIHRoZSBvcmRlciB3ZSBjb25zdHJ1Y3RlZAotICAgIC8vIHRoZSBmaWVsZHMuCi0K
LSAgICBmb3IgKGF1dG8mIGZpZWxkIDogZmllbGRzKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGZpZWxkKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcclxuIik7Ci0gICAgfQot
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcclxuIik7Ci0KLSAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKTsKKyAgICAvLyBBZGQgbm8tY2FjaGUgaGVhZGVycyB0byBhdm9p
ZCBhIGNvbXBhdGliaWxpdHkgaXNzdWUuIFRoZXJlIGFyZSBzb21lIHByb3hpZXMgdGhhdAorICAg
IC8vIHJld3JpdGUgIkNvbm5lY3Rpb246IHVwZ3JhZGUiIHRvICJDb25uZWN0aW9uOiBjbG9zZSIg
aW4gdGhlIHJlc3BvbnNlIGlmIGEgcmVxdWVzdAorICAgIC8vIGRvZXNuJ3QgY29udGFpbiB0aGVz
ZSBoZWFkZXJzLgorCisgICAgYXV0byBleHRlbnNpb25zID0gbV9leHRlbnNpb25EaXNwYXRjaGVy
LmNyZWF0ZUhlYWRlclZhbHVlKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkdFVCAiLCByZXNv
dXJjZU5hbWUobV91cmwpLCAiIEhUVFAvMS4xXHJcbiIKKyAgICAgICAgIlVwZ3JhZGU6IHdlYnNv
Y2tldFxyXG4iCisgICAgICAgICJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiIKKyAgICAgICAgIkhv
c3Q6ICIsIGhvc3ROYW1lKG1fdXJsLCBtX3NlY3VyZSksICJcclxuIgorICAgICAgICAiT3JpZ2lu
OiAiLCBtX2NsaWVudE9yaWdpbiwgIlxyXG4iLAorICAgICAgICBtX2NsaWVudFByb3RvY29sLmlz
RW1wdHkoKSA/ICIiIDogIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6ICIsIG1fY2xpZW50UHJvdG9j
b2wsIG1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpID8gIiIgOiAiXHJcbiIsCisgICAgICAgICJQ
cmFnbWE6IG5vLWNhY2hlXHJcbiIKKyAgICAgICAgIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXHJc
biIKKyAgICAgICAgIlNlYy1XZWJTb2NrZXQtS2V5OiAiLCBtX3NlY1dlYlNvY2tldEtleSwgIlxy
XG4iCisgICAgICAgICJTZWMtV2ViU29ja2V0LVZlcnNpb246IDEzXHJcbiIsCisgICAgICAgIGV4
dGVuc2lvbnMuaXNFbXB0eSgpID8gIiIgOiAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAiLCBl
eHRlbnNpb25zLCBleHRlbnNpb25zLmlzRW1wdHkoKSA/ICIiIDogIlxyXG4iLAorICAgICAgICAi
VXNlci1BZ2VudDogIiwgbV91c2VyQWdlbnQsICJcclxuIgorICAgICAgICAiXHJcbiIpLnV0Zjgo
KTsKIH0KIAogUmVzb3VyY2VSZXF1ZXN0IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNo
YWtlUmVxdWVzdChjb25zdCBGdW5jdGlvbjxTdHJpbmcoY29uc3QgVVJMJik+JiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSkgY29uc3QKIHsKLSAgICAvLyBLZWVwIHRoZSBmb2xsb3dpbmcg
Y29uc2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKS4KLSAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChtX3VybCk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAvLyBLZWVwIHRoZSBmb2xsb3dpbmcgY29uc2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFr
ZU1lc3NhZ2UganVzdCBhYm92ZS4KIAotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiVXBncmFkZSIpOworICAgIGF1dG8gY29va2llID0g
bV9hbGxvd0Nvb2tpZXMgPyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCkpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIGV4
dGVuc2lvbnMgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKKyAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IG1fdXJsIH07CisgICAgcmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJHRVQiX3MpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpDb25uZWN0aW9uLCAiVXBncmFkZSJfcyk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Okhvc3QsIGhvc3ROYW1lKG1fdXJsLCBtX3NlY3VyZSkp
OwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4s
IG1fY2xpZW50T3JpZ2luKTsKICAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQog
ICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6U2VjV2Vi
U29ja2V0UHJvdG9jb2wsIG1fY2xpZW50UHJvdG9jb2wpOwotCi0gICAgVVJMIHVybCA9IGh0dHBV
UkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKLSAgICBpZiAobV9hbGxvd0Nvb2tpZXMp
IHsKLSAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHVybCk7Ci0gICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNvb2tpZSk7Ci0g
ICAgfQotCisgICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKQorICAgICAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29va2llLCBjb29raWUpOwogICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEhUVFBIZWFkZXJW
YWx1ZXM6Om5vQ2FjaGUoKSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRlclZhbHVlczo6bm9DYWNoZSgpKTsKLQog
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2Nr
ZXRLZXksIG1fc2VjV2ViU29ja2V0S2V5KTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0VmVyc2lvbiwgIjEzIik7Ci0gICAgY29uc3Qg
U3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25EaXNwYXRjaGVyLmNyZWF0ZUhlYWRl
clZhbHVlKCk7Ci0gICAgaWYgKGV4dGVuc2lvblZhbHVlLmxlbmd0aCgpKQotICAgICAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0RXh0ZW5z
aW9ucywgZXh0ZW5zaW9uVmFsdWUpOwotCi0gICAgLy8gQWRkIGEgVXNlci1BZ2VudCBoZWFkZXIu
CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNv
Y2tldFZlcnNpb24sICIxMyJfcyk7CisgICAgaWYgKCFleHRlbnNpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNv
Y2tldEV4dGVuc2lvbnMsIGV4dGVuc2lvbnMpOwogICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2Vu
dChtX3VzZXJBZ2VudCk7Ci0KICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA3NTI3NDE1YmEzOTM0ZDU3YWUxMzU3YjNh
ZWQzMWIxN2Y0YzhmNzNhLi5jYjM1OTIxZGRkNGU2MDc5OTczMTUwMmJlZGZmMWFiM2YxMzc2Y2E1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODEsMTAgKzgx
LDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAotI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lO
RykKLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNlbmRpZgotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gQ2VsbCBUYWJsZXMKQEAgLTM1NDksMTQgKzM1NDUsNyBA
QCAtICh2b2lkKXNob3dOb2RlVHJlZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZil0ZXh0
TWFya2VyCiAKIHN0YXRpYyB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJiByYW5nZSwgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZy
b20gIik7Ci0gICAgcmVzdWx0LmFwcGVuZChyYW5nZS5zdGFydC5kZWJ1Z0Rlc2NyaXB0aW9uKCkp
OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgdG8gIik7Ci0gICAgcmVzdWx0LmFwcGVuZChy
YW5nZS5lbmQuZGVidWdEZXNjcmlwdGlvbigpKTsKLSAgICAKLSAgICBzdHJsY3B5KGJ1ZmZlciwg
cmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBzdHJsY3B5KGJ1
ZmZlciwgbWFrZVN0cmluZygiZnJvbSAiLCByYW5nZS5zdGFydC5kZWJ1Z0Rlc2NyaXB0aW9uKCks
ICIgdG8gIiwgcmFuZ2UuZW5kLmRlYnVnRGVzY3JpcHRpb24oKSkudXRmOCgpLmRhdGEoKSwgbGVu
Z3RoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCA2ODVlNzk2ZjM3YWQ2NWUwYmNk
MDJjZTM2M2IzZTlhZTdjMjBmMDBmLi4wMWNmMTk0N2QzMTQ4ZjFhMGQ3ZDlkMzEyNzA4ZTJkMGIz
MzRjZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21i
aW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTk4LDggKzk4LDggQEAgc3RhdGljIFN0cmluZyBw
cmVmaXhUcmVlVmVydGV4VG9TdHJpbmcoY29uc3QgUHJlZml4VHJlZVZlcnRleCYgdmVydGV4LCBj
b25zdCBIYXMKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgd2hpbGUgKGRlcHRo
LS0pCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoInZlcnRleCBhY3Rpb25zOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
IiAgIik7CisgICAgYnVpbGRlci5hcHBlbmQoInZlcnRleCBhY3Rpb25zOiAiKTsKIAogICAgIGF1
dG8gYWN0aW9uc1Nsb3QgPSBhY3Rpb25zLmZpbmQoJnZlcnRleCk7CiAgICAgaWYgKGFjdGlvbnNT
bG90ICE9IGFjdGlvbnMuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3Bw
CmluZGV4IDdlZThhZWQxYWMzMjI0ZDdiN2NjNWQwNzdjYzYyNmRlMTc0YjA1MmEuLjI1NjI2NzI4
MjJjMWZmZmY4ZjU2MDdlMTc3NDQ5NmZjM2E1NDk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jh
c2ljU2hhcGVzLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KENTU1ByaW1pdGl2ZVZhbHVlKgog
c3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJpbmcmIHJhZGl1cywgY29u
c3QgU3RyaW5nJiBjZW50ZXJYLCBjb25zdCBTdHJpbmcmIGNlbnRlclkpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNpcmNsZSgiKTsKKyAg
ICByZXN1bHQuYXBwZW5kKCJjaXJjbGUoIik7CiAgICAgaWYgKCFyYWRpdXMuaXNOdWxsKCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQocmFkaXVzKTsKICAgICBpZiAoIWNlbnRlclguaXNOdWxsKCkg
fHwgIWNlbnRlclkuaXNOdWxsKCkpIHsKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIENTU0Jhc2lj
U2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKIHN0
YXRpYyBTdHJpbmcgYnVpbGRFbGxpcHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29u
c3QgU3RyaW5nJiByYWRpdXNZLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbnN0IFN0cmluZyYg
Y2VudGVyWSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiZWxsaXBzZSgiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJlbGxpcHNlKCIpOwogICAg
IGJvb2wgbmVlZHNTZXBhcmF0b3IgPSBmYWxzZTsKICAgICBpZiAoIXJhZGl1c1guaXNOdWxsKCkp
IHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyYWRpdXNYKTsKQEAgLTE5MCw5ICsxOTAsOSBAQCBz
dGF0aWMgU3RyaW5nIGJ1aWxkUGF0aFN0cmluZyhjb25zdCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29ucwogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAg
IGlmICh3aW5kUnVsZSA9PSBXaW5kUnVsZTo6RXZlbk9kZCkKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoInBhdGgoZXZlbm9kZCwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoInBhdGgo
ZXZlbm9kZCwgIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicGF0
aCgiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgicGF0aCgiKTsKIAogICAgIHNlcmlhbGl6ZVN0
cmluZyhwYXRoLCByZXN1bHQpOwogICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKQEAgLTI0NCwxMyAr
MjQ0LDEzIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxl
JiB3aW5kUnVsZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgcmVzdWx0LnJlc2VydmVDYXBh
Y2l0eShsZW5ndGgpOwogCiAgICAgaWYgKHdpbmRSdWxlID09IFdpbmRSdWxlOjpFdmVuT2RkKQot
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbChldmVuT2RkT3BlbmluZyk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoZXZlbk9kZE9wZW5pbmcpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwobm9uWmVyb09wZW5pbmcpOworICAgICAgICByZXN1bHQuYXBwZW5kKG5vblpl
cm9PcGVuaW5nKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsg
aSArPSAyKSB7CiAgICAgICAgIGlmIChpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoY29tbWFTZXBhcmF0b3IpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjb21tYVNlcGFy
YXRvcik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocG9pbnRzW2ldLCAnICcsIHBvaW50c1tpICsg
MV0pOwogICAgIH0KIApAQCAtMzIyLDE0ICszMjIsMTQgQEAgc3RhdGljIFN0cmluZyBidWlsZElu
c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgdG9wLCBjb25zdCBTdHJpbmcmIHJpZ2h0LCBjb25zdCBT
dHIKICAgICAgICAgYXJlRGVmYXVsdENvcm5lclJhZGlpICY9IGJ1aWxkSW5zZXRSYWRpaSh2ZXJ0
aWNhbFJhZGlpLCB0b3BMZWZ0UmFkaXVzSGVpZ2h0LCB0b3BSaWdodFJhZGl1c0hlaWdodCwgYm90
dG9tUmlnaHRSYWRpdXNIZWlnaHQsIGJvdHRvbUxlZnRSYWRpdXNIZWlnaHQpOwogCiAgICAgICAg
IGlmICghYXJlRGVmYXVsdENvcm5lclJhZGlpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiIHJvdW5kIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgcm91bmQiKTsK
IAogICAgICAgICAgICAgZm9yIChhdXRvJiByYWRpdXMgOiBob3Jpem9udGFsUmFkaWkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIHJhZGl1cyk7CiAKICAgICAgICAgICAgIGlm
ICh2ZXJ0aWNhbFJhZGlpLnNpemUoKSAhPSBob3Jpem9udGFsUmFkaWkuc2l6ZSgpCiAgICAgICAg
ICAgICAgICAgfHwgIVdURjo6VmVjdG9yQ29tcGFyZXI8ZmFsc2UsIFN0cmluZz46OmNvbXBhcmUo
dmVydGljYWxSYWRpaS5kYXRhKCksIGhvcml6b250YWxSYWRpaS5kYXRhKCksIHZlcnRpY2FsUmFk
aWkuc2l6ZSgpKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgLyIp
OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAvIik7CiAgICAgICAgICAgICAgICAg
Zm9yIChhdXRvJiByYWRpdXMgOiB2ZXJ0aWNhbFJhZGlpKQogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgJywgcmFkaXVzKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA5YTU4MDExZjEzY2FhZTUyYTI0Y2Q5NmVhY2Y1
ZjdkY2EwMjY1MzZjLi42ODY0OWE0OWQxMDJhZDliYTQyZTg3ZTA1MTdhYWNjOWVjNGZmNmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC02OTYsOSArNjk2LDkg
QEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAog
ICAgICAgICBhcHBlbmRHcmFkaWVudFN0b3BzKHJlc3VsdCwgc3RvcHMoKSk7CiAgICAgfSBlbHNl
IGlmIChncmFkaWVudFR5cGUoKSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KSB7CiAgICAg
ICAgIGlmIChpc1JlcGVhdGluZygpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
Ii13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIi13ZWJraXQtcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIi13ZWJraXQtbGluZWFyLWdy
YWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLXdlYmtpdC1saW5lYXItZ3Jh
ZGllbnQoIik7CiAKICAgICAgICAgaWYgKG1fYW5nbGUpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKG1fYW5nbGUtPmNzc1RleHQoKSk7CkBAIC03MDYsMTQgKzcwNiwxNCBAQCBTdHJpbmcgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBh
cHBlbmRTcGFjZVNlcGFyYXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgpLCBm
aXJzdFkoKSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCIsICIpOwogICAgICAgICAgICAgd3JpdGVDb2xvclN0b3AocmVzdWx0LCBzdG9wKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc1JlcGVhdGluZygpKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoIik7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCIp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgibGluZWFy
LWdyYWRpZW50KCIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgibGluZWFyLWdyYWRpZW50
KCIpOwogCiAgICAgICAgIGJvb2wgd3JvdGVTb21ldGhpbmcgPSBmYWxzZTsKIApAQCAtNzIxLDE0
ICs3MjEsMTQgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwog
ICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGZp
cnN0WCgpIHx8IChmaXJzdFkoKSAmJiBmaXJzdFkoKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQm90
dG9tKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInRvICIpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgidG8gIik7CiAgICAgICAgICAgICBhcHBlbmRTcGFjZVNlcGFy
YXRlZE9wdGlvbmFsQ1NTUHRyVGV4dChyZXN1bHQsIGZpcnN0WCgpLCBmaXJzdFkoKSk7CiAgICAg
ICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGF1dG8mIHN0b3AgOiBzdG9wcygpKSB7CiAgICAgICAgICAgICBpZiAod3JvdGVTb21ldGhpbmcp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKICAgICAgICAgICAgIHdyb3RlU29tZXRoaW5nID0g
dHJ1ZTsKICAgICAgICAgICAgIHdyaXRlQ29sb3JTdG9wKHJlc3VsdCwgc3RvcCk7CiAgICAgICAg
IH0KQEAgLTg5MSw0NCArODkxLDQ0IEBAIFN0cmluZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgYXBwZW5kR3JhZGllbnRTdG9wcyhyZXN1bHQs
IHN0b3BzKCkpOwogICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlKCkgPT0gQ1NTUHJlZml4ZWRS
YWRpYWxHcmFkaWVudCkgewogICAgICAgICBpZiAoaXNSZXBlYXRpbmcoKSkKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQo
Iik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwt
Z3JhZGllbnQoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCItd2Via2l0LXJhZGlhbC1ncmFkaWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIi13ZWJraXQtcmFkaWFsLWdyYWRpZW50KCIpOwogCiAgICAgICAgIGlmIChmaXJzdFgoKSB8
fCBmaXJzdFkoKSkKICAgICAgICAgICAgIGFwcGVuZFNwYWNlU2VwYXJhdGVkT3B0aW9uYWxDU1NQ
dHJUZXh0KHJlc3VsdCwgZmlyc3RYKCksIGZpcnN0WSgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNlbnRlciIpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiY2VudGVyIik7CiAKICAgICAgICAgaWYgKG1fc2hhcGUgfHwgbV9zaXppbmdCZWhh
dmlvcikgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwogICAgICAgICAgICAgaWYgKG1fc2hhcGUpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3NoYXBlLT5jc3NUZXh0KCksICcgJyk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImVsbGlw
c2UgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiZWxsaXBzZSAiKTsKICAgICAg
ICAgICAgIGlmIChtX3NpemluZ0JlaGF2aW9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobV9zaXppbmdCZWhhdmlvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY292ZXIiKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCJjb3ZlciIpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZW5kSG9yaXpv
bnRhbFNpemUgJiYgbV9lbmRWZXJ0aWNhbFNpemUpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCIsICIsIG1fZW5kSG9yaXpvbnRhbFNpemUtPmNzc1RleHQoKSwgJyAnLCBtX2VuZFZlcnRpY2Fs
U2l6ZS0+Y3NzVGV4dCgpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHN0b3AgOiBzdG9wcygpKSB7
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgICAgICB3cml0ZUNvbG9yU3RvcChyZXN1bHQsIHN0
b3ApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGlzUmVwZWF0aW5nKCkp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgicmVwZWF0aW5nLXJhZGlhbC1ncmFk
aWVudCgiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInJlcGVhdGluZy1yYWRpYWwtZ3Jh
ZGllbnQoIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJyYWRpYWwtZ3JhZGllbnQoIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJyYWRpYWwt
Z3JhZGllbnQoIik7CiAKICAgICAgICAgYm9vbCB3cm90ZVNvbWV0aGluZyA9IGZhbHNlOwogCiAg
ICAgICAgIC8vIFRoZSBvbmx5IGFtYmlndW91cyBjYXNlIHRoYXQgbmVlZHMgYW4gZXhwbGljaXQg
c2hhcGUgdG8gYmUgcHJvdmlkZWQKICAgICAgICAgLy8gaXMgd2hlbiBhIHNpemluZyBrZXl3b3Jk
IGlzIHVzZWQgKG9yIGFsbCBzaXppbmcgaXMgb21pdHRlZCkuCiAgICAgICAgIGlmIChtX3NoYXBl
ICYmIG1fc2hhcGUtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUVsbGlwc2UgJiYgKG1fc2l6aW5nQmVo
YXZpb3IgfHwgKCFtX3NpemluZ0JlaGF2aW9yICYmICFtX2VuZEhvcml6b250YWxTaXplKSkpIHsK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaXJjbGUiKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImNpcmNsZSIpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0
cnVlOwogICAgICAgICB9CiAKQEAgLTk0OSwxOCArOTQ5LDE4IEBAIFN0cmluZyBDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgaWYgKChmaXJzdFgo
KSAmJiAhZmlyc3RYKCktPmlzQ2VudGVyUG9zaXRpb24oKSkgfHwgKGZpcnN0WSgpICYmICFmaXJz
dFkoKS0+aXNDZW50ZXJQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgaWYgKHdyb3RlU29tZXRo
aW5nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJhdCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImF0
ICIpOwogICAgICAgICAgICAgYXBwZW5kU3BhY2VTZXBhcmF0ZWRPcHRpb25hbENTU1B0clRleHQo
cmVzdWx0LCBmaXJzdFgoKSwgZmlyc3RZKCkpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcg
PSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdyb3RlU29tZXRoaW5nKQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCIsICIpOwogCiAgICAgICAgIGJvb2wgd3JvdGVGaXJzdFN0b3AgPSBmYWxzZTsKICAgICAg
ICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMoKSkgewogICAgICAgICAgICAgaWYgKHdyb3RlRmly
c3RTdG9wKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgICAgICB3cm90ZUZpcnN0
U3RvcCA9IHRydWU7CiAgICAgICAgICAgICB3cml0ZUNvbG9yU3RvcChyZXN1bHQsIHN0b3ApOwog
ICAgICAgICB9CkBAIC0xMjE5LDEwICsxMjE5LDcgQEAgU3RyaW5nIENTU0NvbmljR3JhZGllbnRW
YWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CiAKLSAgICBpZiAoaXNSZXBlYXRpbmcoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
InJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgiKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJjb25pYy1ncmFkaWVudCgiKTsKKyAgICByZXN1bHQuYXBwZW5kKGlzUmVw
ZWF0aW5nKCkgPyAicmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KCIgOiAiY29uaWMtZ3JhZGllbnQo
Iik7CiAKICAgICBib29sIHdyb3RlU29tZXRoaW5nID0gZmFsc2U7CiAKQEAgLTEyMzQsMTggKzEy
MzEsMTggQEAgU3RyaW5nIENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNv
bnN0CiAgICAgaWYgKChmaXJzdFgoKSAmJiAhZmlyc3RYKCktPmlzQ2VudGVyUG9zaXRpb24oKSkg
fHwgKGZpcnN0WSgpICYmICFmaXJzdFkoKS0+aXNDZW50ZXJQb3NpdGlvbigpKSkgewogICAgICAg
ICBpZiAod3JvdGVTb21ldGhpbmcpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJhdCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiYXQgIik7CiAgICAgICAgIGFwcGVuZFNwYWNlU2VwYXJhdGVkT3B0aW9uYWxDU1NQdHJUZXh0
KHJlc3VsdCwgZmlyc3RYKCksIGZpcnN0WSgpKTsKICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0
cnVlOwogICAgIH0KIAogICAgIGlmICh3cm90ZVNvbWV0aGluZykKLSAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAKICAgICBi
b29sIHdyb3RlRmlyc3RTdG9wID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBzdG9wIDogc3RvcHMo
KSkgewogICAgICAgICBpZiAod3JvdGVGaXJzdFN0b3ApCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAg
ICAgIHdyb3RlRmlyc3RTdG9wID0gdHJ1ZTsKICAgICAgICAgd3JpdGVDb2xvclN0b3AocmVzdWx0
LCBzdG9wKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZElu
dGVnZXJSZXBlYXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZEludGVnZXJS
ZXBlYXRWYWx1ZS5jcHAKaW5kZXggZmU1ODNjYTE3MTkwNmJkZjY4OGYxOTQyMGNmNjFiOTNjMmZl
N2NjNy4uMGFiOTE0M2U3NGE3NGVkZTRhZWY0OWFiMjQwNThkZTY2ZGQ2N2ZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlLmNwcApAQCAtMzEs
MTkgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTR3JpZEludGVn
ZXJSZXBlYXRWYWx1ZS5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVl
OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAg
ICByZXN1bHQuYXBwZW5kKCJyZXBlYXQoIik7Ci0gICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51
bWJlcihyZXBldGl0aW9ucygpKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKLSAgICByZXN1
bHQuYXBwZW5kKENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpKTsKLSAgICByZXN1bHQuYXBw
ZW5kKCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKCJyZXBlYXQoIiwgcmVwZXRpdGlvbnMoKSwgIiwgIiwgQ1NTVmFsdWVMaXN0OjpjdXN0
b21DU1NUZXh0KCksICcpJyk7CiB9CiAKIGJvb2wgQ1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZTo6
ZXF1YWxzKGNvbnN0IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUmIG90aGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDJmN2IyYjU5ZDljNDQ4OWMy
MzVkNGM2NWZhNGFiZDM2Zjk0YTM0ZjIuLmE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2MTUyZTNi
NTQ3ZWFkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTEy
OCwxNiArMTI4LDEzIEBAIFJlZjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjpp
bWFnZVNldFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlCiBTdHJpbmcgQ1NTSW1hZ2VT
ZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImltYWdlLXNldCgiKTsKLQorICAgIHJlc3Vs
dC5hcHBlbmQoImltYWdlLXNldCgiKTsKICAgICBzaXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3Ro
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgKyAxIDwgbGVuZ3RoOyBpICs9IDIpIHsKICAg
ICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7
Ci0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoaXRlbShpKS0+Y3NzVGV4dCgpLCAnICcsIGl0ZW0oaSArIDEpLT5jc3NUZXh0KCkpOwogICAg
IH0KLQogICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKaW5kZXggNGM2NjYxM2NjMzU5
MjQxNjMwNmY1MmJmNjhhNjM0NTlhYTMwNTNhMy4uNmE0ODRmYWE1MmYxNGRjYjAyOWRhZmI0ZTUy
NjZiZTlhOTViOTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNTgs
MjggKzU4LDE3IEBAIE1lZGlhTGlzdCYgQ1NTSW1wb3J0UnVsZTo6bWVkaWEoKSBjb25zdAogCiBT
dHJpbmcgQ1NTSW1wb3J0UnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkBpbXBvcnQgdXJsKFwiIik7Ci0g
ICAgcmVzdWx0LmFwcGVuZChtX2ltcG9ydFJ1bGUuZ2V0KCkuaHJlZigpKTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiXCIpIik7Ci0KLSAgICBpZiAobV9pbXBvcnRSdWxlLmdldCgpLm1lZGlh
UXVlcmllcygpKSB7Ci0gICAgICAgIFN0cmluZyBtZWRpYVRleHQgPSBtX2ltcG9ydFJ1bGUuZ2V0
KCkubWVkaWFRdWVyaWVzKCktPm1lZGlhVGV4dCgpOwotICAgICAgICBpZiAoIW1lZGlhVGV4dC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQobWVkaWFUZXh0KTsKLSAgICAgICAgfQorICAgIGlmIChhdXRvIHF1ZXJp
ZXMgPSBtX2ltcG9ydFJ1bGUuZ2V0KCkubWVkaWFRdWVyaWVzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8gbWVkaWFUZXh0ID0gcXVlcmllcy0+bWVkaWFUZXh0KCk7ICFtZWRpYVRleHQuaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkBpbXBvcnQgdXJsKFwiIiwgbV9pbXBv
cnRSdWxlLmdldCgpLmhyZWYoKSwgIlwiKSAiLCBtZWRpYVRleHQsICc7Jyk7CiAgICAgfQotICAg
IHJlc3VsdC5hcHBlbmQoJzsnKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkBpbXBvcnQgdXJsKFwiIiwgbV9pbXBvcnRSdWxlLmdl
dCgpLmhyZWYoKSwgIlwiKTsiKTsKIH0KIAogQ1NTU3R5bGVTaGVldCogQ1NTSW1wb3J0UnVsZTo6
c3R5bGVTaGVldCgpIGNvbnN0CiB7IAogICAgIGlmICghbV9pbXBvcnRSdWxlLmdldCgpLnN0eWxl
U2hlZXQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgaWYgKCFtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fc3R5bGVTaGVldENT
U09NV3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSgqbV9pbXBvcnRSdWxlLmdldCgpLnN0
eWxlU2hlZXQoKSwgY29uc3RfY2FzdDxDU1NJbXBvcnRSdWxlKj4odGhpcykpOwogICAgIHJldHVy
biBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXIuZ2V0KCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5
ZnJhbWVSdWxlLmNwcAppbmRleCBjM2M3M2JkNDY5ZmRmODc4Njc1OTUzOWY5OTI2MzczYTY3MTBk
MGNmLi41ODYwMWE4ZTJiYmE0YzRkYTU0M2JiYzcxODhlYTViYjQ3ZWQ2ZDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcApAQCAtODksMTkgKzg5LDEzIEBAIGJvb2wgU3R5
bGVSdWxlS2V5ZnJhbWU6OnNldEtleVRleHQoY29uc3QgU3RyaW5nJiBrZXlUZXh0KQogCiBTdHJp
bmcgU3R5bGVSdWxlS2V5ZnJhbWU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoa2V5VGV4dCgpKTsKLSAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiIHsgIik7Ci0gICAgU3RyaW5nIGRlY2xzID0gbV9wcm9wZXJ0aWVzLT5hc1Rl
eHQoKTsKLSAgICByZXN1bHQuYXBwZW5kKGRlY2xzKTsKLSAgICBpZiAoIWRlY2xzLmlzRW1wdHko
KSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsK
LSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgaWYgKGF1dG8gZGVjbGFyYXRpb25z
ID0gbV9wcm9wZXJ0aWVzLT5hc1RleHQoKTsgIWRlY2xhcmF0aW9ucy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGtleVRleHQoKSwgIiB7ICIsIGRlY2xhcmF0aW9ucywgIiB9
Iik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoa2V5VGV4dCgpLCAiIHsgfSIpOwogfQogCiBDU1NL
ZXlmcmFtZVJ1bGU6OkNTU0tleWZyYW1lUnVsZShTdHlsZVJ1bGVLZXlmcmFtZSYga2V5ZnJhbWUs
IENTU0tleWZyYW1lc1J1bGUqIHBhcmVudCkKLSAgICA6IENTU1J1bGUoMCkKKyAgICA6IENTU1J1
bGUobnVsbHB0cikKICAgICAsIG1fa2V5ZnJhbWUoa2V5ZnJhbWUpCiB7CiAgICAgc2V0UGFyZW50
UnVsZShwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
c1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4
IDk4MjgxN2FmZDU1ODQ0ZDU4YTdmMzgwZDE5NzlkMjdjZGYzOGZiN2EuLjQ0NTQxNmE4ZmRjZjBk
NTU2M2VhODNkMWU0ZGY2M2I1OWQwNDY4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKQEAgLTE5OCwxNiArMTk4LDkgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlm
cmFtZXNSdWxlOjpmaW5kUnVsZShjb25zdCBTdHJpbmcmIHMpCiBTdHJpbmcgQ1NTS2V5ZnJhbWVz
UnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIkAtd2Via2l0LWtleWZyYW1lcyAiKTsKLSAgICByZXN1bHQu
YXBwZW5kKG5hbWUoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7Ci0KLSAg
ICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiICAiKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX2tleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpW2ldLT5jc3NUZXh0
KCkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwotICAgIH0KKyAgICByZXN1bHQuYXBw
ZW5kKCJALXdlYmtpdC1rZXlmcmFtZXMgIiwgbmFtZSgpLCAiIHsgXG4iKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBzaXplID0gbGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoIiAgIiwgbV9rZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMoKVtpXS0+Y3NzVGV4
dCgpLCAnXG4nKTsKICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hD
b250YWluVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFs
dWUuY3BwCmluZGV4IDcxNDVkNjNjYzNlYTY5NWY2YjFjMjA2OWMyNjAzYjdmMTc0NTlhNDQuLjI5
N2U2N2NiMzRhMDcyMGViYWNiMWU1ZmJiZTRhYjRmYWQ4YmQ0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAKQEAgLTM5LDQxICszOSwyMCBAQCBD
U1NMaW5lQm94Q29udGFpblZhbHVlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlKE9wdGlvblNldDxM
aW5lQm94Q29udGFpbj4gdmFsdWUpCiBTdHJpbmcgQ1NTTGluZUJveENvbnRhaW5WYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwotCiAgICAgaWYg
KG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OkJsb2NrKSkKLSAgICAgICAgdGV4dC5h
cHBlbmRMaXRlcmFsKCJibG9jayIpOwotCi0gICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJv
eENvbnRhaW46OklubGluZSkpIHsKLSAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiaW5s
aW5lIik7Ci0gICAgfQotICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpG
b250KSkgewotICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGV4dC5h
cHBlbmQoJyAnKTsKLSAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJmb250Iik7Ci0gICAgfQot
ICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpHbHlwaHMpKSB7Ci0gICAg
ICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwot
ICAgICAgICB0ZXh0LmFwcGVuZExpdGVyYWwoImdseXBocyIpOwotICAgIH0KLSAgICBpZiAobV92
YWx1ZS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6UmVwbGFjZWQpKSB7Ci0gICAgICAgIGlmICgh
dGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0
ZXh0LmFwcGVuZExpdGVyYWwoInJlcGxhY2VkIik7Ci0gICAgfQotICAgIGlmIChtX3ZhbHVlLmNv
bnRhaW5zKExpbmVCb3hDb250YWluOjpJbmxpbmVCb3gpKSB7Ci0gICAgICAgIGlmICghdGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFw
cGVuZExpdGVyYWwoImlubGluZS1ib3giKTsKLSAgICB9Ci0gICAgaWYgKG1fdmFsdWUuY29udGFp
bnMoTGluZUJveENvbnRhaW46OkluaXRpYWxMZXR0ZXIpKSB7Ci0gICAgICAgIGlmICghdGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICB0ZXh0LmFw
cGVuZExpdGVyYWwoImluaXRpYWwtbGV0dGVyIik7Ci0gICAgfQotCisgICAgICAgIHRleHQuYXBw
ZW5kKCJibG9jayIpOworICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJ
bmxpbmUpKQorICAgICAgICB0ZXh0LmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAi
aW5saW5lIik7CisgICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OkZvbnQp
KQorICAgICAgICB0ZXh0LmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiZm9udCIp
OworICAgIGlmIChtX3ZhbHVlLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpHbHlwaHMpKQorICAg
ICAgICB0ZXh0LmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiZ2x5cGhzIik7Cisg
ICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OlJlcGxhY2VkKSkKKyAgICAg
ICAgdGV4dC5hcHBlbmQodGV4dC5pc0VtcHR5KCkgPyAiIiA6ICIgIiwgInJlcGxhY2VkIik7Cisg
ICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZUJveCkpCisgICAg
ICAgIHRleHQuYXBwZW5kKHRleHQuaXNFbXB0eSgpID8gIiIgOiAiICIsICJpbmxpbmUtYm94Iik7
CisgICAgaWYgKG1fdmFsdWUuY29udGFpbnMoTGluZUJveENvbnRhaW46OkluaXRpYWxMZXR0ZXIp
KQorICAgICAgICB0ZXh0LmFwcGVuZCh0ZXh0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAiaW5pdGlh
bC1sZXR0ZXIiKTsKICAgICByZXR1cm4gdGV4dC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTmFtZXNwYWNlUnVsZS5jcHAKaW5kZXggNzgzYzJlOGMxZjRmMDEyMTZmOGE4NTlh
Y2MyNzNiOTg0MzkzYThhNi4uMmI5NjgxNmUxZGE2NGNmOTZjNzQwZGY2OTkwNDdmMGY5NTM3M2M2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU05hbWVzcGFjZVJ1bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NOYW1lc3BhY2VSdWxlLmNwcApAQCAtNTIsMTIgKzUy
LDExIEBAIEF0b21TdHJpbmcgQ1NTTmFtZXNwYWNlUnVsZTo6cHJlZml4KCkgY29uc3QKIAogU3Ry
aW5nIENTU05hbWVzcGFjZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogeworICAgIGF1dG8gcHJlZml4
ID0gdGhpcy0+cHJlZml4KCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIkBuYW1lc3BhY2UgIik7Ci0gICAgc2VyaWFsaXplSWRlbnRpZmllcihw
cmVmaXgoKSwgcmVzdWx0KTsKLSAgICBpZiAoIXByZWZpeCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwotICAgIHJlc3VsdC5hcHBlbmQoInVybCgiLCBzZXJpYWxpemVT
dHJpbmcobmFtZXNwYWNlVVJJKCkpLCAiKTsiKTsKKyAgICByZXN1bHQuYXBwZW5kKCJAbmFtZXNw
YWNlICIpOworICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIocHJlZml4LCByZXN1bHQpOworICAgIHJl
c3VsdC5hcHBlbmQocHJlZml4LmlzRW1wdHkoKSA/ICIiIDogIiAiLCAidXJsKCIsIHNlcmlhbGl6
ZVN0cmluZyhuYW1lc3BhY2VVUkkoKSksICIpOyIpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKaW5kZXggNmE2MTdjMjEyNWFi
ZGE3YzQxM2M1MWIzZDhmYmQ4MDNlMDY3MTZmZS4uZDFmNmQwYTUxNWE1ZGI5ZGI3NTBjYmYxZTJm
NzlkNGE5ZjBmMmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTc2LDE1ICs3NSw5IEBAIHZvaWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBT
dHJpbmcmIHNlbGVjdG9yVGV4dCkKIAogU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29u
c3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKHNlbGVj
dG9yVGV4dCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0gICAgU3RyaW5n
IGRlY2xzID0gbV9wYWdlUnVsZS0+cHJvcGVydGllcygpLmFzVGV4dCgpOwotICAgIHJlc3VsdC5h
cHBlbmQoZGVjbHMpOwotICAgIGlmICghZGVjbHMuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJyk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKKyAgICBpZiAoYXV0byBkZWNsYXJhdGlvbnMgPSBtX3BhZ2VSdWxlLT5wcm9w
ZXJ0aWVzKCkuYXNUZXh0KCk7ICFkZWNsYXJhdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbWFrZVN0cmluZyhzZWxlY3RvclRleHQoKSwgIiB7ICIsIGRlY2xhcmF0aW9ucywgIiB9Iik7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoc2VsZWN0b3JUZXh0KCksICIgeyB9Iik7CiB9CiAKIHZv
aWQgQ1NTUGFnZVJ1bGU6OnJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmIHJ1bGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IGNlMTVlYWNjYWRkMzJiZDAxOGIx
NDUzYzMwNTMxNGM5MDcyOWFmN2IuLjJhYjFiMmFmZjc4MjZkN2U5YTRhM2M3N2M4ZDhmMjQyY2Uz
NzJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCkBAIC0z
OSwxMiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NQYWludEltYWdl
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJwYWludCgiKTsKLSAgICByZXN1bHQuYXBwZW5k
KG1fbmFtZSk7Ci0gICAgLy8gRklYTUU6IHByaW50IGFyZ3MuCi0gICAgcmVzdWx0LmFwcGVuZCgn
KScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgaW5jbHVkZSB0aGUgYXJndW1lbnRzIHRvby4KKyAgICByZXR1cm4gbWFrZVN0cmluZygi
cGFpbnQoIiwgbV9uYW1lLCAnKScpOwogfQogCiBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VW
YWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYXRTaXpl
JiBzaXplKQpAQCAtNzEsOCArNjcsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgICAg
ICAgICAgICAgIGxvY2FsUmFuZ2UuY29uc3VtZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobG9j
YWxSYW5nZS5wZWVrKCkuZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3Rh
cnQpIHsKICAgICAgICAgICAgICAgICBsb2NhbFJhbmdlLnBlZWsoKS5zZXJpYWxpemUoYnVpbGRl
cik7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxSYW5nZS5jb25zdW1lQmxv
Y2soKS5zZXJpYWxpemUoKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbFJhbmdlLmNvbnN1bWVCbG9jaygp
LnNlcmlhbGl6ZSgpLCAnKScpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
bG9jYWxSYW5nZS5jb25zdW1lKCkuc2VyaWFsaXplKGJ1aWxkZXIpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAxZjZiNDRkNWI4YWMxNjBm
YjQ2NzhkZWU5MmYwMWI4ZjYwOTg2Yjg0Li5mMGRiNGNhNWIxNTNjMTk1MmU5YWNiYTQ0MzRmZTE4
NGVkODlkODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAg
LTEwOTcsMjIgKzEwOTcsMTIgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFs
dWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4g
ImNvdW50ZXIoIiArIFN0cmluZyhtX3ZhbHVlLnN0cmluZykgKyAnKSc7CiAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0NPVU5URVI6IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0g
ICAgICAgIFN0cmluZyBzZXBhcmF0b3IgPSBtX3ZhbHVlLmNvdW50ZXItPnNlcGFyYXRvcigpOwot
ICAgICAgICBpZiAoc2VwYXJhdG9yLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCJjb3VudGVyKCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiY291bnRlcnMoIik7Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZChtX3Zh
bHVlLmNvdW50ZXItPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAg
IGF1dG8gc2VwYXJhdG9yID0gbV92YWx1ZS5jb3VudGVyLT5zZXBhcmF0b3IoKTsKKyAgICAgICAg
YXV0byBsaXN0U3R5bGUgPSBtX3ZhbHVlLmNvdW50ZXItPmxpc3RTdHlsZSgpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKHNlcGFyYXRvci5pc0VtcHR5KCkgPyAiY291bnRlcigiIDogImNvdW50ZXJz
KCIsIG1fdmFsdWUuY291bnRlci0+aWRlbnRpZmllcigpLCBzZXBhcmF0b3IuaXNFbXB0eSgpID8g
IiIgOiAiLCAiKTsKKyAgICAgICAgaWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgc2VyaWFsaXplU3RyaW5nKHNlcGFyYXRvciwgcmVzdWx0KTsKLSAgICAgICAgfQotICAgICAg
ICBTdHJpbmcgbGlzdFN0eWxlID0gbV92YWx1ZS5jb3VudGVyLT5saXN0U3R5bGUoKTsKLSAgICAg
ICAgaWYgKCFsaXN0U3R5bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
LCAiLCBsaXN0U3R5bGUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KKyAgICAgICAg
cmVzdWx0LmFwcGVuZChsaXN0U3R5bGUuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCBsaXN0U3R5bGUs
ICcpJyk7CiAgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9CiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1JFQ1Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRl
eCBlYzVmYjExMDA2NWVkNzZkZTg3MTg0ZDBmZTlkMjIzZWFiOTEyMmVmLi4wZTcwOTEyOWUxNjE0
NGY1YjNlZTFjOGFiMmQ0YjljNzlhZWViY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKQEAgLTMzNSwxNCArMzM1LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kUHNldWRvQ2xhc3NGdW5j
dGlvblRhaWwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ1NTU2VsZWMKIAogc3RhdGlj
IHZvaWQgYXBwZW5kTGFuZ0FyZ3VtZW50TGlzdChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBWZWN0b3I8QXRvbVN0cmluZz4mIGFyZ3VtZW50TGlzdCkKIHsKLSAgICB1bnNpZ25lZCBhcmd1
bWVudExpc3RTaXplID0gYXJndW1lbnRMaXN0LnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJndW1lbnRMaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCciJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3VtZW50TGlzdFtpXSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIGlmIChpICE9IGFyZ3VtZW50TGlzdFNpemUg
LSAxKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgIH0KKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gYXJndW1lbnRMaXN0LnNpemUoKTsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInLCBhcmd1bWVudExpc3RbaV0sICci
JywgaSAhPSBzaXplIC0gMSA/ICIsICIgOiAiIik7CiB9CiAKIC8vIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2Nzcy1zeW50YXgvI3NlcmlhbGl6aW5nLWFuYgpAQCAtMzg4LDExICszODIsOCBAQCBT
dHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkg
Y29uc3QKICAgICBpZiAobWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnICYmICFtX3RhZ0lzRm9y
TmFtZXNwYWNlUnVsZSkgewogICAgICAgICBpZiAodGFnUU5hbWUoKS5wcmVmaXgoKS5pc051bGwo
KSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkucHJl
Zml4KCkuc3RyaW5nKCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3wnKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkpOwotICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRhZ1FOYW1lKCkucHJl
Zml4KCkuc3RyaW5nKCksICd8JywgdGFnUU5hbWUoKS5sb2NhbE5hbWUoKSk7CiAgICAgfQogCiAg
ICAgY29uc3QgQ1NTU2VsZWN0b3IqIGNzID0gdGhpczsKQEAgLTQwNywyNjggKzM5OCwyNjggQEAg
U3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUp
IGNvbnN0CiAgICAgICAgICAgICBzd2l0Y2ggKGNzLT5wc2V1ZG9DbGFzc1R5cGUoKSkgewogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzQW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb246Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1hbmltYXRpbmctZnVsbC1zY3JlZW4tdHJh
bnNpdGlvbiIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hbmlt
YXRpbmctZnVsbC1zY3JlZW4tdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FueTogewot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOi13ZWJraXQtYW55KCIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1hbnkoIik7CiAgICAgICAg
ICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzQW55TGluazoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjph
bnktbGluayIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6YW55LWxpbmsiKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzQW55TGlua0RlcHJlY2F0ZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6LXdlYmtpdC1hbnktbGluayIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI6LXdlYmtpdC1hbnktbGluayIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBdXRvZmlsbDoKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWF1dG9maWxsIik7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjotd2Via2l0LWF1dG9maWxsIik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0F1dG9maWxsU3Ryb25nUGFzc3dvcmQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6LXdlYmtpdC1hdXRvZmlsbC1zdHJvbmctcGFzc3dvcmQiKTsKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtYXV0b2ZpbGwtc3Ryb25nLXBhc3N3b3JkIik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0F1dG9maWxsU3Ryb25nUGFzc3dvcmRWaWV3YWJsZToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWF1dG9maWxsLXN0cm9uZy1wYXNzd29y
ZC12aWV3YWJsZSIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1h
dXRvZmlsbC1zdHJvbmctcGFzc3dvcmQtdmlld2FibGUiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyZWN0Rm9jdXM6
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1kaXJlY3Qt
Zm9jdXMiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZGlyZWN0
LWZvY3VzIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0RyYWc6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6LXdlYmtpdC1kcmFnIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Ijotd2Via2l0LWRyYWciKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRnVsbFBhZ2VNZWRpYToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSIpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEiKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Z1bGxTY3JlZW46Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxsLXNjcmVlbiIpOwor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1mdWxsLXNjcmVlbiIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NGdWxsU2NyZWVuQW5jZXN0b3I6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxsLXNjcmVlbi1hbmNlc3RvciIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1mdWxsLXNjcmVlbi1hbmNlc3RvciIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NGdWxsU2NyZWVuRG9jdW1lbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6LXdlYmtpdC1mdWxsLXNjcmVlbi1kb2N1bWVudCIpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI6LXdlYmtpdC1mdWxsLXNjcmVlbi1kb2N1bWVudCIpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NGdWxsU2NyZWVuQ29udHJvbHNIaWRkZW46Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6LXdlYmtpdC1mdWxsLXNjcmVlbi1jb250cm9scy1oaWRkZW4iKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOi13ZWJraXQtZnVsbC1zY3JlZW4tY29udHJvbHMt
aGlkZGVuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoUElD
VFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzUGljdHVyZUluUGljdHVyZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIjpwaWN0dXJlLWluLXBpY3R1cmUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOnBpY3R1cmUtaW4tcGljdHVyZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZToKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjphY3RpdmUiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmFjdGl2ZSIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkOgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmNoZWNrZWQiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmNoZWNrZWQiKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQ29ybmVyUHJlc2Vu
dDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpjb3JuZXItcHJlc2Vu
dCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Y29ybmVyLXByZXNlbnQiKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzRGVjcmVtZW50OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOmRlY3JlbWVudCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGVjcmVt
ZW50Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0RlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCI6ZGVmYXVsdCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZGVm
YXVsdCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JT
X0xFVkVMNCkKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyOgot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmRpcigiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmRpcigiKTsKICAgICAgICAgICAgICAgICBhcHBlbmRQ
c2V1ZG9DbGFzc0Z1bmN0aW9uVGFpbChidWlsZGVyLCBjcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlz
YWJsZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZGlzYWJsZWQi
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmRpc2FibGVkIik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0RvdWJsZUJ1dHRvbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpk
b3VibGUtYnV0dG9uIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpkb3VibGUt
YnV0dG9uIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0VtcHR5OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmVtcHR5Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjplbXB0
eSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NFbmFibGVkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOmVuYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmVuYWJs
ZWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzRW5kOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOmVuZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ZW5kIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0ZpcnN0Q2hpbGQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
Zmlyc3QtY2hpbGQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmZpcnN0LWNo
aWxkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0ZpcnN0T2ZUeXBlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOmZpcnN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOmZpcnN0LW9mLXR5cGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXM6Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Zm9jdXMiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOmZvY3VzIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzVmlzaWJsZToKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpmb2N1cy12aXNpYmxlIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpmb2N1cy12aXNpYmxlIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzV2l0aGlu
OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZvY3VzLXdpdGhpbiIp
OworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Zm9jdXMtd2l0aGluIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGdXR1cmU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI6ZnV0dXJlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjpmdXR1cmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0hhc0F0dGFjaG1lbnQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6aGFzLWF0dGFjaG1lbnQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmhh
cy1hdHRhY2htZW50Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9yaXpvbnRhbDoKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpob3Jpem9udGFsIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpob3Jpem9udGFsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyOgotICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmhvdmVyIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjpob3ZlciIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJblJhbmdlOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmluLXJhbmdlIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjppbi1yYW5nZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbmNyZW1lbnQ6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6aW5jcmVtZW50Iik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjppbmNyZW1lbnQiKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW5kZXRlcm1p
bmF0ZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjppbmRldGVybWlu
YXRlIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjppbmRldGVybWluYXRlIik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0ludmFsaWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6aW52YWxpZCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6aW52YWxpZCIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NMYW5nOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
OmxhbmcoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpsYW5nKCIpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY3MtPmFyZ3VtZW50TGlzdCgpICYmICFj
cy0+YXJndW1lbnRMaXN0KCktPmlzRW1wdHkoKSwgIkFuIGVtcHR5IDpsYW5nKCkgaXMgaW52YWxp
ZCBhbmQgc2hvdWxkIG5ldmVyIGJlIGdlbmVyYXRlZCBieSB0aGUgcGFyc2VyLiIpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZExhbmdBcmd1bWVudExpc3QoYnVpbGRlciwgKmNzLT5hcmd1bWVudExp
c3QoKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFz
dENoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmxhc3QtY2hp
bGQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxhc3QtY2hpbGQiKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzTGFzdE9mVHlwZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpsYXN0LW9mLXR5cGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxhc3Qt
b2YtdHlwZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NMaW5rOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOmxpbmsiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmxpbmsi
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzTm9CdXR0b246Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6bm8tYnV0dG9uIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpuby1i
dXR0b24iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzTm90OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOm5vdCgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm5vdCgiKTsK
ICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4dChi
dWlsZGVyKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NO
dGhDaGlsZDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtY2hp
bGQoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpudGgtY2hpbGQoIik7CiAg
ICAgICAgICAgICAgICAgb3V0cHV0TnRoQ2hpbGRBblBsdXNCKCpjcywgYnVpbGRlcik7CiAgICAg
ICAgICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gY3Mt
PnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIG9mICIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIG9mICIp
OwogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvckxpc3QtPmJ1aWxkU2VsZWN0b3JzVGV4dChi
dWlsZGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzTnRoTGFzdENoaWxkOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOm50aC1sYXN0LWNoaWxkKCIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6bnRoLWxhc3QtY2hpbGQoIik7CiAgICAgICAgICAgICAgICAgb3V0cHV0TnRo
Q2hpbGRBblBsdXNCKCpjcywgYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IENT
U1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gY3MtPnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIG9mICIpOwogICAgICAgICAgICAgICAgICAgICBz
ZWxlY3Rvckxpc3QtPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTnRoTGFz
dE9mVHlwZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtbGFz
dC1vZi10eXBlKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bnRoLWxhc3Qt
b2YtdHlwZSgiKTsKICAgICAgICAgICAgICAgICBhcHBlbmRQc2V1ZG9DbGFzc0Z1bmN0aW9uVGFp
bChidWlsZGVyLCBjcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc050aE9mVHlwZToKLSAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIjpudGgtb2YtdHlwZSgiKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOm50aC1vZi10eXBlKCIpOwogICAgICAgICAgICAgICAgIGFwcGVuZFBzZXVk
b0NsYXNzRnVuY3Rpb25UYWlsKGJ1aWxkZXIsIGNzKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT25seUNoaWxkOgotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOm9ubHktY2hpbGQiKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm9ubHktY2hpbGQiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT25seU9m
VHlwZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpvbmx5LW9mLXR5
cGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm9ubHktb2YtdHlwZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NPcHRpb25hbDoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjpvcHRpb25hbCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6b3B0aW9uYWwi
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzSXM6IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjppcygiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOmlzKCIpOwogICAgICAg
ICAgICAgICAgIGNzLT5zZWxlY3Rvckxpc3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KGJ1aWxkZXIp
OwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc01hdGNoZXM6IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjptYXRjaGVzKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6bWF0Y2hlcygi
KTsKICAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4
dChidWlsZGVyKTsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NXaGVyZTogewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOndoZXJlKCIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6d2hl
cmUoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNlbGVjdG9yTGlzdCgpLT5idWlsZFNlbGVjdG9y
c1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzUGxhY2Vob2xkZXJTaG93bjoKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIjpwbGFjZWhvbGRlci1zaG93biIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6cGxhY2Vob2xkZXItc2hvd24iKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzT3V0T2ZS
YW5nZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpvdXQtb2YtcmFu
Z2UiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOm91dC1vZi1yYW5nZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUGFzdDoKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjpwYXN0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjpwYXN0Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVhZE9ubHk6Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6cmVhZC1vbmx5Iik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjpyZWFkLW9ubHkiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVhZFdyaXRlOgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnJlYWQtd3JpdGUiKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiOnJlYWQtd3JpdGUiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzUmVxdWlyZWQ6Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6cmVxdWlyZWQiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnJlcXVpcmVkIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUlNfTEVWRUw0KQogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NSb2xlOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOnJvbGUoIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpy
b2xlKCIpOwogICAgICAgICAgICAgICAgIGFwcGVuZFBzZXVkb0NsYXNzRnVuY3Rpb25UYWlsKGJ1
aWxkZXIsIGNzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NSb290OgotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOnJvb3QiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOnJvb3QiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzU2NvcGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6c2NvcGUiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnNj
b3BlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1NpbmdsZUJ1dHRvbjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjpzaW5nbGUtYnV0dG9uIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIjpzaW5nbGUtYnV0dG9uIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1N0YXJ0OgotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOnN0YXJ0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjpzdGFydCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUYXJnZXQ6Ci0gICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6dGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIjp0YXJnZXQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6dmFsaWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOnZhbGlkIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZlcnRpY2FsOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOnZlcnRpY2FsIik7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjp2ZXJ0aWNhbCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWaXNpdGVkOgotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiOnZpc2l0ZWQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiOnZpc2l0ZWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzV2luZG93SW5hY3RpdmU6Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6d2luZG93LWluYWN0aXZlIik7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjp3aW5kb3ctaW5hY3RpdmUiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdDoK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjpob3N0Iik7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjpob3N0Iik7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIHNlbGVjdG9yTGlzdCA9IGNzLT5zZWxlY3Rvckxpc3QoKSkgewogICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvckxp
c3QtPmJ1aWxkU2VsZWN0b3JzVGV4dChidWlsZGVyKTsKQEAgLTY3Niw3ICs2NjcsNyBAQCBTdHJp
bmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29u
c3QKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmluZWQ6Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ZGVmaW5lZCIpOworICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6ZGVmaW5lZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3duOgogICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjg0LDEyICs2NzUsMTIgQEAgU3RyaW5nIENTU1Nl
bGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAg
ICAgIH0gZWxzZSBpZiAoY3MtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQp
IHsKICAgICAgICAgICAgIHN3aXRjaCAoY3MtPnBzZXVkb0VsZW1lbnRUeXBlKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjpzbG90dGVkKCIpOworICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCI6OnNsb3R0ZWQoIik7CiAgICAgICAgICAgICAgICAgY3MtPnNl
bGVjdG9yTGlzdCgpLT5idWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRQYXJ0OiB7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OnBhcnQoIik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjo6cGFydCgiKTsKICAgICAgICAgICAgICAgICBib29sIGlzRmlyc3QgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcGFydE5hbWUgOiAqY3MtPmFyZ3VtZW50
TGlzdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNGaXJzdCkKQEAgLTcwMiwzMiAr
NjkzLDI4IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYg
cmlnaHRTaWRlKSBjb25zdAogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudFdlYktpdEN1c3RvbUxlZ2FjeVByZWZpeGVkOgogICAgICAgICAg
ICAgICAgIGlmIChjcy0+dmFsdWUoKSA9PSAicGxhY2Vob2xkZXIiKQotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIp
OworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOjotd2Via2l0LWlucHV0LXBs
YWNlaG9sZGVyIik7CiAgICAgICAgICAgICAgICAgaWYgKGNzLT52YWx1ZSgpID09ICJmaWxlLXNl
bGVjdG9yLWJ1dHRvbiIpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOworICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShWSURFTykKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnRDdWU6IHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogc2Vs
ZWN0b3JMaXN0ID0gY3MtPnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjpjdWUoIik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI6OmN1ZSgiKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JMaXN0LT5i
dWlsZFNlbGVjdG9yc1RleHQoYnVpbGRlcik7CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjpjdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjo6Y3VlIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI6OiIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNz
LT5zZXJpYWxpemluZ1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
OiIsIGNzLT5zZXJpYWxpemluZ1ZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKGNzLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdbJyk7Ci0gICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBwcmVmaXggPSBjcy0+
YXR0cmlidXRlKCkucHJlZml4KCk7Ci0gICAgICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOwotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCd8Jyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
YXV0byYgcHJlZml4ID0gY3MtPmF0dHJpYnV0ZSgpLnByZWZpeCgpOyAhcHJlZml4LmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgsICd8Jyk7CiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChjcy0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkpOwogICAgICAg
ICAgICAgc3dpdGNoIChjcy0+bWF0Y2goKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkV4YWN0OgpAQCAtNzM4LDE5ICs3MjUsMTkgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpz
ZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6Ci0gICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifj0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIn49Iik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okh5cGhlbjoKLSAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJ8PSIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgifD0iKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6QmVnaW46Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiXj0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIl49
Iik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OkVuZDoKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIkPSIpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiJD0iKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
Q29udGFpbjoKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIqPSIp
OworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKj0iKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC03NTgsMjAgKzc0NSwyMCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNl
bGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHJpZ2h0U2lkZSkgY29uc3QKICAgICAgICAgICAgIGlm
IChjcy0+bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6U2V0KSB7CiAgICAgICAgICAgICAgICAgc2Vy
aWFsaXplU3RyaW5nKGNzLT5zZXJpYWxpemluZ1ZhbHVlKCksIGJ1aWxkZXIpOwogICAgICAgICAg
ICAgICAgIGlmIChjcy0+YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGldIik7CisgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaV0iKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBhZ2VQ
c2V1ZG9DbGFzcykgewogICAgICAgICAgICAgc3dpdGNoIChjcy0+cGFnZVBzZXVkb0NsYXNzVHlw
ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VQc2V1ZG9DbGFzc0ZpcnN0OgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOmZpcnN0Iik7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjpmaXJzdCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBQYWdlUHNldWRvQ2xhc3NMZWZ0OgotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiOmxlZnQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
OmxlZnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZVBz
ZXVkb0NsYXNzUmlnaHQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
cmlnaHQiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOnJpZ2h0Iik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc5NywxMCAr
Nzg0LDEyIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYg
cmlnaHRTaWRlKSBjb25zdAogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKLSAgICAgICAgICAgIHJldHVy
biB0YWdIaXN0b3J5LT5zZWxlY3RvclRleHQoYnVpbGRlci50b1N0cmluZygpICsgcmlnaHRTaWRl
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJpZ2h0U2lkZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKSArIHJpZ2h0U2lkZTsK
KyAgICBidWlsZGVyLmFwcGVuZChyaWdodFNpZGUpOworICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB2YWx1ZSwgYm9vbCBjb252ZXJ0VG9Mb3dlcmNhc2UsIEF0dHJpYnV0ZU1hdGNoVHlw
ZSBtYXRjaFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCmluZGV4IGUx
NTkwYjliNTNiZmU2YWY2NjIwNWI3MjMzNDNkMDdhN2JjMDdjMTcuLmNjMDczYjRiMTFjMjVjZGMw
NTBlNzNmNzNiMzY1YjhjNjE2ZDNkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmJ1aWxkU2Vs
ZWN0b3JzVGV4dChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKSBjb25zdAogICAgIGNvbnN0
IENTU1NlbGVjdG9yKiBmaXJzdFN1YnNlbGVjdG9yID0gZmlyc3QoKTsKICAgICBmb3IgKGNvbnN0
IENTU1NlbGVjdG9yKiBzdWJTZWxlY3RvciA9IGZpcnN0U3Vic2VsZWN0b3I7IHN1YlNlbGVjdG9y
OyBzdWJTZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKICAg
ICAgICAgaWYgKHN1YlNlbGVjdG9yICE9IGZpcnN0U3Vic2VsZWN0b3IpCi0gICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc3ViU2VsZWN0
b3ItPnNlbGVjdG9yVGV4dCgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5jcHAKaW5kZXggMDU3MWNmOTZjZTA4MTJiNWU4Mjc1OTc5MGU1ZTAwZDkxNmE1NDlmNi4uNTE5
M2MzMmMyZWY1YTFiNDQ0MjljNGYzMzVmM2Q3YWE3Mjk5NTA0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZS5o
IgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODYsMTIgKzg1LDcgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LAogCiBDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVu
dHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKICAgICA6IG1fY29udGVudHMoV1RGTW92ZShj
b250ZW50cykpCi0gICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChmYWxzZSkKLSAgICAsIG1faXNE
aXNhYmxlZChmYWxzZSkKLSAgICAsIG1fbXV0YXRlZFJ1bGVzKGZhbHNlKQotICAgICwgbV9vd25l
ck5vZGUoMCkKICAgICAsIG1fb3duZXJSdWxlKG93bmVyUnVsZSkKLSAgICAsIG1fc3RhcnRQb3Np
dGlvbigpCiB7CiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhpcyk7CiB9CkBAIC05
OSwxMSArOTMsOCBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqCiBDU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5
bGVzaGVldCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCiAgICAgOiBtX2Nv
bnRlbnRzKFdURk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJ
bmxpbmVTdHlsZXNoZWV0KQotICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQotICAgICwgbV9tdXRh
dGVkUnVsZXMoZmFsc2UpCiAgICAgLCBtX2lzT3JpZ2luQ2xlYW4oaXNPcmlnaW5DbGVhbikKICAg
ICAsIG1fb3duZXJOb2RlKCZvd25lck5vZGUpCi0gICAgLCBtX293bmVyUnVsZSgwKQogICAgICwg
bV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKGlzQWNjZXB0YWJs
ZUNTU1N0eWxlU2hlZXRQYXJlbnQoJm93bmVyTm9kZSkpOwpAQCAtMjk3LDE3ICsyODgsMTAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRl
eCkKIAogRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRl
eCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHRleHQ7Ci0gICAgdGV4dC5hcHBlbmQoc2VsZWN0b3Ip
OwotICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiIHsgIik7Ci0gICAgdGV4dC5hcHBlbmQoc3R5bGUp
OwotICAgIGlmICghc3R5bGUuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwot
ICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0
UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRv
IHRleHQgPSBtYWtlU3RyaW5nKHNlbGVjdG9yLCAiIHsgIiwgc3R5bGUsICFzdHlsZS5pc0VtcHR5
KCkgPyAiICIgOiAiIiwgJ30nKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRS
dWxlKHRleHQsIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKICAgICBpZiAoaW5zZXJ0UnVsZVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOwotICAgIAogICAgIC8vIEFzIHBlciBNaWNyb3NvZnQgZG9jdW1lbnRh
dGlvbiwgYWx3YXlzIHJldHVybiAtMS4KICAgICByZXR1cm4gLTE7CiB9CkBAIC0zNDgsNyArMzMy
LDYgQEAgTWVkaWFMaXN0KiBDU1NTdHlsZVNoZWV0OjptZWRpYSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX21lZGlhUXVlcmllcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBpZiAoIW1f
bWVkaWFDU1NPTVdyYXBwZXIpCiAgICAgICAgIG1fbWVkaWFDU1NPTVdyYXBwZXIgPSBNZWRpYUxp
c3Q6OmNyZWF0ZShtX21lZGlhUXVlcmllcy5nZXQoKSwgY29uc3RfY2FzdDxDU1NTdHlsZVNoZWV0
Kj4odGhpcykpOwogICAgIHJldHVybiBtX21lZGlhQ1NTT01XcmFwcGVyLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggNWY4Nzc0ODcwNmNkNGZhODY1ZGFiNGQ2MjRiMTU4
MmQ2OWE3MWQzZC4uOTk3MTVjZTI4YTdmNjA5ZGEwMDdiZDI0MjlhMGViNjg1YmNlYWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0xMzgsMTUgKzEzOCwxNSBAQCBwcml2YXRl
OgogICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9
CiAKICAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBtX2NvbnRlbnRzOwotICAgIGJvb2wgbV9p
c0lubGluZVN0eWxlc2hlZXQ7Ci0gICAgYm9vbCBtX2lzRGlzYWJsZWQ7Ci0gICAgYm9vbCBtX211
dGF0ZWRSdWxlczsKKyAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNEaXNhYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX211dGF0ZWRSdWxlcyB7
IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmlu
ZyBtX3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIAot
ICAgIE5vZGUqIG1fb3duZXJOb2RlOwotICAgIENTU0ltcG9ydFJ1bGUqIG1fb3duZXJSdWxlOwor
ICAgIE5vZGUqIG1fb3duZXJOb2RlIHsgbnVsbHB0ciB9OworICAgIENTU0ltcG9ydFJ1bGUqIG1f
b3duZXJSdWxlIHsgbnVsbHB0ciB9OwogCiAgICAgVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlv
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmlu
ZGV4IGU2MGM4NWE3MmQ5YzQ5M2NmNDE2NmVjY2RjMmQ0ZDg5YzJhZmU1NzguLmFlYWNiYmRlZWVi
YjMxOGQ2NTJiYTgwNjhlNTM5M2JlMjBhODVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3Ry
aW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNv
bnN0CkBAIC00MiwzMyArNDAsMjcgQEAgYm9vbCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW8KIAogU3RyaW5n
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJzdGVwcygiLCBt
X3N0ZXBzKTsKKyAgICBjb25zdCBjaGFyKiBwb3NpdGlvbiA9ICIiOwogICAgIGlmIChtX3N0ZXBQ
b3NpdGlvbikgewogICAgICAgICBzd2l0Y2ggKG1fc3RlcFBvc2l0aW9uLnZhbHVlKCkpIHsKICAg
ICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBTdGFydDoK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBqdW1wLXN0YXJ0Iik7CisgICAg
ICAgICAgICBwb3NpdGlvbiA9ICIsIGp1bXAtc3RhcnQiOwogICAgICAgICAgICAgYnJlYWs7Ci0K
ICAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBOb25l
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGp1bXAtbm9uZSIpOworICAg
ICAgICAgICAgcG9zaXRpb24gPSAiLCBqdW1wLW5vbmUiOwogICAgICAgICAgICAgYnJlYWs7Ci0K
ICAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246Okp1bXBCb3Ro
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGp1bXAtYm90aCIpOworICAg
ICAgICAgICAgcG9zaXRpb24gPSAiLCBqdW1wLWJvdGgiOwogICAgICAgICAgICAgYnJlYWs7Ci0K
ICAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OlN0YXJ0Ogot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHN0YXJ0Iik7CisgICAgICAgICAg
ICBwb3NpdGlvbiA9ICIsIHN0YXJ0IjsKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNh
c2UgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpKdW1wRW5kOgogICAgICAgICBj
YXNlIFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6RW5kOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJzdGVwcygi
LCBtX3N0ZXBzLCBwb3NpdGlvbiwgJyknKTsKIH0KIAogYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVy
KSBjb25zdApAQCAtNzgsMTcgKzcwLDcgQEAgYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OmVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGUKIAogU3Ry
aW5nIENTU1NwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAog
ewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
InNwcmluZygiKTsKLSAgICBidWlsZGVyLmFwcGVuZChGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKG1fbWFzcykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3N0aWZmbmVzcykpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbihtX2RhbXBpbmcpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV9pbml0
aWFsVmVsb2NpdHkpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNwcmluZygiLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fbWFzcyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihtX3N0aWZmbmVzcyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbihtX2RhbXBpbmcpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
bV9pbml0aWFsVmVsb2NpdHkpLCAnKScpOwogfQogCiBib29sIENTU1NwcmluZ1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmVxdWFscyhjb25zdCBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlJiBvdGhl
cikgY29uc3QKQEAgLTk2LDUgKzc4LDQgQEAgYm9vbCBDU1NTcHJpbmdUaW1pbmdGdW5jdGlvblZh
bHVlOjplcXVhbHMoY29uc3QgQ1NTU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3QKICAgICBy
ZXR1cm4gbV9tYXNzID09IG90aGVyLm1fbWFzcyAmJiBtX3N0aWZmbmVzcyA9PSBvdGhlci5tX3N0
aWZmbmVzcyAmJiBtX2RhbXBpbmcgPT0gb3RoZXIubV9kYW1waW5nICYmIG1faW5pdGlhbFZlbG9j
aXR5ID09IG90aGVyLm1faW5pdGlhbFZlbG9jaXR5OwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggYWM3NGZlODdmYjMxNTcyZmEyNjk1
MWJlYWRjNTNiMjNiN2Y0ZjY4Yy4uOWRmM2M2Mzc4Njk0ZmU4MzQxMGVmZWYxM2U2OWFjNGY3MWQ0
OTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTdHJp
bmcgTWVkaWFRdWVyeVNldDo6bWVkaWFUZXh0KCkgY29uc3QKICAgICBib29sIG5lZWRDb21tYSA9
IGZhbHNlOwogICAgIGZvciAoYXV0byYgcXVlcnkgOiBtX3F1ZXJpZXMpIHsKICAgICAgICAgaWYg
KG5lZWRDb21tYSkKLSAgICAgICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCIsICIpOwogICAgICAgICB0ZXh0LmFwcGVuZChxdWVyeS5jc3NU
ZXh0KCkpOwogICAgICAgICBuZWVkQ29tbWEgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5LmNwcAppbmRleCAxNjYyNDIwYzkyNTY0ZGU0MDEyMDVmMjE0OWI0Nzc4NmY2YWM3ZmJh
Li40OTc5MGQzNmExZWEwZDZkM2M3NmEwYjZiMzY2YmViMmJhOGFhY2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnkuY3BwCkBAIC00NiwxMCArNDYsMTAgQEAgU3RyaW5nIE1lZGlhUXVlcnk6OnNl
cmlhbGl6ZSgpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgc3dpdGNoICht
X3Jlc3RyaWN0b3IpIHsKICAgICBjYXNlIE1lZGlhUXVlcnk6Ok9ubHk6Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJvbmx5ICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJvbmx5ICIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhUXVlcnk6Ok5vdDoKLSAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIm5vdCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgibm90ICIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhUXVlcnk6Ok5vbmU6CiAgICAgICAgIHNo
b3VsZE9taXRNZWRpYVR5cGUgPSAhbV9leHByZXNzaW9ucy5pc0VtcHR5KCkgJiYgbV9tZWRpYVR5
cGUgPT0gImFsbCI7CkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZyBNZWRpYVF1ZXJ5OjpzZXJpYWxp
emUoKSBjb25zdAogICAgIH0KICAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBtX2V4cHJlc3Np
b25zKSB7CiAgICAgICAgIGlmIChuZWVkc0FuZCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgYW5kICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChleHByZXNzaW9uLnNlcmlhbGl6ZSgpKTsKICAgICAgICAgbmVl
ZHNBbmQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cHJl
c3Npb24uY3BwCmluZGV4IGIwOTlmYzRkMWQ3MGRlYTQyNjg3MDUyMzYyYTE5MDIyMWYzZjc2NTIu
LjhiODU3ZWEzZjBiZTgxYWRkODEwOGU0MTc3NjRiZTk4M2JiMTJlNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3NCwx
OSArMjczLDggQEAgTWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaW9uKGNv
bnN0IFN0cmluZyYgZmVhdHVyZSwgQ1NTUGFyc2VyVG9rZW4KIAogU3RyaW5nIE1lZGlhUXVlcnlF
eHByZXNzaW9uOjpzZXJpYWxpemUoKSBjb25zdAogewotICAgIGlmICghbV9zZXJpYWxpemF0aW9u
Q2FjaGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoJygnKTsKLSAgICBy
ZXN1bHQuYXBwZW5kKG1fbWVkaWFGZWF0dXJlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwot
ICAgIGlmIChtX3ZhbHVlKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6ICIpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUtPmNzc1RleHQoKSk7Ci0gICAgfQotICAgIHJl
c3VsdC5hcHBlbmQoJyknKTsKLQotICAgIG1fc2VyaWFsaXphdGlvbkNhY2hlID0gcmVzdWx0LnRv
U3RyaW5nKCk7CisgICAgaWYgKG1fc2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQorICAgICAg
ICBtX3NlcmlhbGl6YXRpb25DYWNoZSA9IG1ha2VTdHJpbmcoJygnLCBtX21lZGlhRmVhdHVyZS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBtX3ZhbHVlID8gIjogIiA6ICIiLCBtX3ZhbHVlID8g
bV92YWx1ZS0+Y3NzVGV4dCgpIDogIiIsICcpJyk7CiAgICAgcmV0dXJuIG1fc2VyaWFsaXphdGlv
bkNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IGZk
NjM2OGQwN2ViYTI2OWVkNmNhNjBkY2UzZWQxNjJmYjk5M2RiNjMuLjQ1YWRlMjJhMjg5ZjMxMjQ2
NTE5MjYwZGI0MWU5ZDAyZDcyY2JmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Z2V0TGF5
ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHMKICAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZm91bmRQb3NpdGlvbllDU1NQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIvICIpOworICAgICAgICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmQoIi8gIik7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHVzZVJlcGVhdFhTaG9y
dGhhbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAK
aW5kZXggZGM2OTIzMmViZjU0MTc5YTg3MDYzZTFmZjE5MzRkZDVmMzU1ODY5Mi4uOWE3YjcyNGFk
ZTI5ZWNmNjFkMWRhODhhYTM1MzIyN2M4ZDE2ODk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKQEAgLTQxNCwxNDYgKzQxNCwxMjcgQEAgdm9pZCBD
U1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENT
U1BhcnNlclRva2VuKiBuZXgKIAogICAgICAgICBDU1NQYXJzZXJUb2tlblR5cGUgbmV4dFR5cGUg
PSBuZXh0VG9rZW4tPnR5cGUoKTsKICAgICAgICAgaWYgKHRva2Vuc05lZWRpbmdDb21tZW50LmJ1
ZmZlcltuZXh0VHlwZV0pIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLyoq
LyIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIi8qKi8iKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuZXh0VHlwZSA9PSBEZWxpbWl0ZXJUb2tl
biAmJiAoKGRlbGltaXRlcnNOZWVkaW5nQ29tbWVudCA9PSBuZXh0VG9rZW4tPmRlbGltaXRlcigp
KSB8fCAuLi4gfHwgZmFsc2UpKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ii8qKi8iKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIvKiovIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAg
ICBjYXNlIElkZW50VG9rZW46IHsKKyAgICBjYXNlIElkZW50VG9rZW46CiAgICAgICAgIHNlcmlh
bGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKICAgICAgICAgYXBw
ZW5kQ29tbWVudElmTmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4s
IEJhZFVybFRva2VuLCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tl
biwgQ0RDVG9rZW4sIExlZnRQYXJlbnRoZXNpc1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIEZ1bmN0aW9uVG9rZW46IHsKKyAgICBjYXNlIEZ1bmN0aW9uVG9r
ZW46CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWls
ZGVyKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgQXRLZXl3b3JkVG9rZW46IHsKKyAgICBjYXNlIEF0S2V5d29yZFRva2VuOgog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnQCcpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVy
KHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5l
ZWRlZCh7IElkZW50VG9rZW4sIEZ1bmN0aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwg
TnVtYmVyVG9rZW4sIFBlcmNlbnRhZ2VUb2tlbiwgRGltZW5zaW9uVG9rZW4sIENEQ1Rva2VuIH0s
ICctJyk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEhhc2hUb2tlbjogeworICAg
IGNhc2UgSGFzaFRva2VuOgogICAgICAgICBidWlsZGVyLmFwcGVuZCgnIycpOwogICAgICAgICBz
ZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlciwgKGdldEhhc2hU
b2tlblR5cGUoKSA9PSBIYXNoVG9rZW5VbnJlc3RyaWN0ZWQpKTsKICAgICAgICAgYXBwZW5kQ29t
bWVudElmTmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJhZFVy
bFRva2VuLCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiwgQ0RD
VG9rZW4gfSwgJy0nKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVXJsVG9rZW46
IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1cmwoIik7CisgICAgY2FzZSBVcmxU
b2tlbjoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInVybCgiKTsKICAgICAgICAgc2VyaWFsaXpl
SWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZCgnKScpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBEZWxpbWl0ZXJU
b2tlbjogeworICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46CiAgICAgICAgIHN3aXRjaCAoZGVsaW1p
dGVyKCkpIHsKLSAgICAgICAgY2FzZSAnXFwnOiB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIlxcXG4iKTsKKyAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxcXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisKICAgICAg
ICAgY2FzZSAnIyc6Ci0gICAgICAgIGNhc2UgJy0nOiB7CisgICAgICAgIGNhc2UgJy0nOgogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkpOwogICAgICAgICAgICAgYXBwZW5k
Q29tbWVudElmTmVlZGVkKHsgSWRlbnRUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgVXJsVG9rZW4sIEJh
ZFVybFRva2VuLCBOdW1iZXJUb2tlbiwgUGVyY2VudGFnZVRva2VuLCBEaW1lbnNpb25Ub2tlbiB9
LCAnLScpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KIAotICAgICAgICBjYXNlICdA
JzogeworICAgICAgICBjYXNlICdAJzoKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7
CiAgICAgICAgICAgICBhcHBlbmRDb21tZW50SWZOZWVkZWQoeyBJZGVudFRva2VuLCBGdW5jdGlv
blRva2VuLCBVcmxUb2tlbiwgQmFkVXJsVG9rZW4gfSwgJy0nKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CiAKICAgICAgICAgY2FzZSAnLic6Ci0gICAgICAgIGNhc2UgJysnOiB7Cisg
ICAgICAgIGNhc2UgJysnOgogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkp
OwogICAgICAgICAgICAgYXBwZW5kQ29tbWVudElmTmVlZGVkKHsgTnVtYmVyVG9rZW4sIFBlcmNl
bnRhZ2VUb2tlbiwgRGltZW5zaW9uVG9rZW4gfSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgJy8nOiB7CisgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKICAgICAgICAgICAgIC8vIFdlaXJkbHkgQ2xhbmcgZXJy
b3JzIGlmIHlvdSB0cnkgdG8gdXNlIHRoZSBmb2xkIGV4cHJlc3Npb24gaW4gYnVpbGROZXh0VG9r
ZW5OZWVkc0NvbW1lbnRUYWJsZSgpIGJlY2F1c2UgdGhlIHRydWUgdmFsdWUgaXMgdW51c2VkLgog
ICAgICAgICAgICAgLy8gU28gd2UganVzdCBidWlsZCB0aGUgdGFibGUgYnkgaGFuZCBoZXJlIGlu
c3RlYWQuIFNlZTogcmRhcjovLzY5NzEwNjYxCiAgICAgICAgICAgICBhcHBlbmRDb21tZW50SWZO
ZWVkZWQoeyB9LCAnKicpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBOdW1iZXJUb2tlbjogewotICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVz
ZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnCisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAg
ICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5
cGUgZmxhZy4KICAgICAgICAgaWYgKG1fbnVtZXJpY1NpZ24gPT0gUGx1c1NpZ24pCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnKycpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChudW1lcmlj
VmFsdWUoKSk7CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1
bmN0aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRh
Z2VUb2tlbiwgRGltZW5zaW9uVG9rZW4gfSwgJyUnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOiB7CisgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG51bWVyaWNWYWx1ZSgpLCAnJScpOwogICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBEaW1lbnNpb25Ub2tlbjogewotICAgICAgICAvLyBUaGlzIHdp
bGwgaW5jb3JyZWN0bHkgc2VyaWFsaXplIGUuZy4gNGUzZTIgYXMgNDAwMGUyCisgICAgY2FzZSBE
aW1lbnNpb25Ub2tlbjoKKyAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6
ZSBlLmcuIDRlM2UyIGFzIDQwMDBlMi4KICAgICAgICAgYnVpbGRlci5hcHBlbmQobnVtZXJpY1Zh
bHVlKCkpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwg
YnVpbGRlcik7CiAgICAgICAgIGFwcGVuZENvbW1lbnRJZk5lZWRlZCh7IElkZW50VG9rZW4sIEZ1
bmN0aW9uVG9rZW4sIFVybFRva2VuLCBCYWRVcmxUb2tlbiwgTnVtYmVyVG9rZW4sIFBlcmNlbnRh
Z2VUb2tlbiwgRGltZW5zaW9uVG9rZW4sIENEQ1Rva2VuIH0sICctJyk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIFVuaWNvZGVSYW5nZVRva2VuOiB7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiVSsiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHVuaWNvZGVS
YW5nZVN0YXJ0KCkpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoaGV4KHVuaWNvZGVSYW5nZUVuZCgpKSk7CisgICAgY2FzZSBVbmljb2RlUmFu
Z2VUb2tlbjoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlUrIiwgaGV4KHVuaWNvZGVSYW5nZVN0
YXJ0KCkpLCAnLScsIGhleCh1bmljb2RlUmFuZ2VFbmQoKSkpOwogICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBTdHJpbmdUb2tlbjogeworICAgIGNhc2UgU3RyaW5nVG9rZW46CiAgICAg
ICAgIHNlcmlhbGl6ZVN0cmluZyh2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwogICAgICAg
ICBicmVhazsKLSAgICB9CiAKICAgICBjYXNlIEluY2x1ZGVNYXRjaFRva2VuOgotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIn49Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ+PSIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIERhc2hNYXRjaFRva2VuOgotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoInw9Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ8PSIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFByZWZpeE1hdGNoVG9rZW46Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiXj0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIl49Iik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VmZml4TWF0Y2hUb2tlbjoKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIkPSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiJD0iKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdWJzdHJpbmdNYXRjaFRva2VuOgotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIio9Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIqPSIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbHVtblRva2VuOgotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoInx8Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ8fCIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENET1Rva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIjwhLS0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIjwhLS0iKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDRENUb2tlbjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIt
LT4iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIi0tPiIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEJhZFN0cmluZ1Rva2VuOgotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIidc
biIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiJ1xuIik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQmFkVXJsVG9rZW46Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidXJsKCgp
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1cmwoKCkiKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXaGl0ZXNwYWNlVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNDdiZWRiZDM1NDM3MzQ4OTlkMmI4OWMwZWQ5YzBk
MmJhNTYwODcwLi43YzFkN2YwMTg5YTIwYzJiZTBhOTIyZTY3YmY0YTczNTk4MjVjNzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYxODEsNyArNjE4MSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQoKQogI2VuZGlmCiAKICAgICBpZiAoc2hvdWxkRW5mb3JjZUhU
VFAwOVNhbmRib3goKSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNh
bmRib3hpbmcgJyIsIG1fdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBi
ZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiIpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJTYW5kYm94aW5nICciLCBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKSwgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iKTsKICAgICAgICAgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UpOwogICAgICAgICBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hTY3JpcHRz
IHwgU2FuZGJveFBsdWdpbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1MDRm
ZjU0ZTZmOGE2YWE1ZDNkMDNlZTgwMmE3ZmIwNmVmZjBmZmRiLi4yM2YxMzQ5NWZmYThhMDA0NDgz
MGNlNTY2YzFlMDBkMjA3NDUyMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNzI5LDcg
KzI3MjksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIg
aWQ9XCciLCBlbGVtZW50LmdldElkQXR0cmlidXRlKCksICdcJycpOwogCiAgICAgaWYgKGVsZW1l
bnQuaGFzQ2xhc3MoKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBjbGFzcz1c
JyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGNsYXNzPVwnIik7CiAgICAgICAgIHNpemVf
dCBjbGFzc05hbWVzVG9EdW1wID0gZWxlbWVudC5jbGFzc05hbWVzKCkuc2l6ZSgpOwogICAgICAg
ICBjb25zdGV4cHIgc2l6ZV90IG1heE51bUNsYXNzTmFtZXMgPSA3OwogICAgICAgICBib29sIGFk
ZEVsbGlwc2lzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJp
dHlDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCmlu
ZGV4IGY1NzgzOGE2MjAxZDVlZWIxY2M5NzA1ZjJkYjEyZjk4NjY0OTliZWIuLjRlNTI4OGU3NjM2
NjFkYTY5YjlmODAwYTU5MWYwMTljMWMxNzMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMCBAQCBTYW5kYm94RmxhZ3MgU2VjdXJpdHlD
b250ZXh0OjpwYXJzZVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3ksIFN0cmluZyYg
aQogICAgICAgICAgICAgZmxhZ3MgJj0gflNhbmRib3hTdG9yYWdlQWNjZXNzQnlVc2VyQWN0aXZh
dGlvbjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9y
cykKLSAgICAgICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmRMaXRlcmFsKCIsICciKTsKKyAg
ICAgICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmQoIiwgJyIpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgnXCcnKTsKLSAgICAgICAgICAg
IHRva2VuRXJyb3JzLmFwcGVuZChzYW5kYm94VG9rZW4pOwotICAgICAgICAgICAgdG9rZW5FcnJv
cnMuYXBwZW5kKCdcJycpOworICAgICAgICAgICAgdG9rZW5FcnJvcnMuYXBwZW5kKHNhbmRib3hU
b2tlbiwgJ1wnJyk7CiAgICAgICAgICAgICBudW1iZXJPZlRva2VuRXJyb3JzKys7CiAgICAgICAg
IH0KIApAQCAtMTQ5LDkgKzE0OCw5IEBAIFNhbmRib3hGbGFncyBTZWN1cml0eUNvbnRleHQ6OnBh
cnNlU2FuZGJveFBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSwgU3RyaW5nJiBpCiAKICAgICBp
ZiAobnVtYmVyT2ZUb2tlbkVycm9ycykgewogICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9y
cyA+IDEpCi0gICAgICAgICAgICB0b2tlbkVycm9ycy5hcHBlbmRMaXRlcmFsKCIgYXJlIGludmFs
aWQgc2FuZGJveCBmbGFncy4iKTsKKyAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgiIGFy
ZSBpbnZhbGlkIHNhbmRib3ggZmxhZ3MuIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRv
a2VuRXJyb3JzLmFwcGVuZExpdGVyYWwoIiBpcyBhbiBpbnZhbGlkIHNhbmRib3ggZmxhZy4iKTsK
KyAgICAgICAgICAgIHRva2VuRXJyb3JzLmFwcGVuZCgiIGlzIGFuIGludmFsaWQgc2FuZGJveCBm
bGFnLiIpOwogICAgICAgICBpbnZhbGlkVG9rZW5zRXJyb3JNZXNzYWdlID0gdG9rZW5FcnJvcnMu
dG9TdHJpbmcoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmNwcAppbmRleCA0Yjg0ZmM3NTY5ZWQxYTMwZjEzMjhiYWU0MjdhNTE4MmFjOGNlYWE5Li43
M2QxYzNmMmM2YmZkMzgxYmZiOTNhMWFiNDVlM2Q3ZGRkNDc2N2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFN0cmluZyBj
b252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW4sIGNvbnN0
IFRleHQqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBp
ICsgMSA9PSBpbi5sZW5ndGgoKSkgLy8gYXQgc3RhcnQgb3IgZW5kIG9mIHN0cmluZwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmlu
Zyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoY29udmVydGVkU3BhY2VT
dHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA5Mzc4NmQzY2NkYzFm
MjlmNDA3ZjQ5OTIwYWJiYTUyY2JmYjMyOTk3Li45NGI0MmY5NzU5ZTc1MDc4ZTMwNzk5MjAyNzQ3
MTdkY2Q0ZjAxYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBA
IC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgVVN0cmluZ1NlYXJjaCogY3JlYXRlU2VhcmNoZXIo
KQogICAgIC8vIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciBleGFjdGx5IHdoYXQgaXQgaXMsIHNpbmNl
IHdlIGRvbid0IHBlcmZvcm0gYW55IHNlYXJjaGVzCiAgICAgLy8gd2l0aG91dCBzZXR0aW5nIGJv
dGggdGhlIHBhdHRlcm4gYW5kIHRoZSB0ZXh0LgogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgIFN0cmluZyBzZWFyY2hDb2xsYXRvck5hbWUgPSBtYWtlU3RyaW5nKGN1
cnJlbnRTZWFyY2hMb2NhbGVJRCgpLCAiQGNvbGxhdGlvbj1zZWFyY2giKTsKKyAgICBhdXRvIHNl
YXJjaENvbGxhdG9yTmFtZSA9IG1ha2VTdHJpbmcoY3VycmVudFNlYXJjaExvY2FsZUlEKCksICJA
Y29sbGF0aW9uPXNlYXJjaCIpOwogICAgIFVTdHJpbmdTZWFyY2gqIHNlYXJjaGVyID0gdXNlYXJj
aF9vcGVuKCZuZXdsaW5lQ2hhcmFjdGVyLCAxLCAmbmV3bGluZUNoYXJhY3RlciwgMSwgc2VhcmNo
Q29sbGF0b3JOYW1lLnV0ZjgoKS5kYXRhKCksIDAsICZzdGF0dXMpOwogICAgIEFTU0VSVChzdGF0
dXMgPT0gVV9aRVJPX0VSUk9SIHx8IHN0YXR1cyA9PSBVX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcg
fHwgc3RhdHVzID09IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HKTsKICAgICByZXR1cm4gc2VhcmNo
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTljYjBkOWE4ZTJkNDRkNzczMzM4
OGVjZWExMjQwYzJhNDFlY2E5ZC4uZmI1ZTI2MTM3NTUyZjk0OTI5ODg0ODkxY2RlNTFmMmFhZmMx
YjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzg2LDExICszODYsMTEgQEAg
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhTdHJp
bmdCdWlsZGVyJiBvdXQsIFN0eWxlUHIKICAgICAvLyB3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXph
dGlvbiBzaG91bGQgaGF2ZSByZW1vdmVkIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZl
Y3QKICAgICBBU1NFUlQocHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogICAgIGlmIChpc0Jsb2NrKQot
ICAgICAgICBvdXQuYXBwZW5kTGl0ZXJhbCgiPGRpdiBzdHlsZT1cIiIpOworICAgICAgICBvdXQu
YXBwZW5kKCI8ZGl2IHN0eWxlPVwiIik7CiAgICAgZWxzZQotICAgICAgICBvdXQuYXBwZW5kTGl0
ZXJhbCgiPHNwYW4gc3R5bGU9XCIiKTsKKyAgICAgICAgb3V0LmFwcGVuZCgiPHNwYW4gc3R5bGU9
XCIiKTsKICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5hc1RleHQoKSwgZG9j
dW1lbnQuaXNIVE1MRG9jdW1lbnQoKSk7Ci0gICAgb3V0LmFwcGVuZExpdGVyYWwoIlwiPiIpOwor
ICAgIG91dC5hcHBlbmQoIlwiPiIpOwogfQogCiBjb25zdCBTdHJpbmcmIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCkBAIC02MDQsNyArNjA0
LDcgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRUYWcoU3RyaW5n
QnVpbGRlciYgb3V0LCBjb25zdCBFbGVtZW50JgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFu
ZXdJbmxpbmVTdHlsZS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBvdXQuYXBwZW5kTGl0ZXJh
bCgiIHN0eWxlPVwiIik7CisgICAgICAgICAgICBvdXQuYXBwZW5kKCIgc3R5bGU9XCIiKTsKICAg
ICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxl
KCktPmFzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAgICAgICBvdXQuYXBwZW5kKCci
Jyk7CiAgICAgICAgIH0KQEAgLTEyNDIsMTEgKzEyNDIsOSBAQCBTdHJpbmcgZG9jdW1lbnRUeXBl
U3RyaW5nKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIFN0cmluZyB1cmxUb01hcmt1cChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG1h
cmt1cDsKLSAgICBtYXJrdXAuYXBwZW5kTGl0ZXJhbCgiPGEgaHJlZj1cIiIpOwotICAgIG1hcmt1
cC5hcHBlbmQodXJsLnN0cmluZygpKTsKLSAgICBtYXJrdXAuYXBwZW5kTGl0ZXJhbCgiXCI+Iik7
CisgICAgbWFya3VwLmFwcGVuZCgiPGEgaHJlZj1cIiIsIHVybC5zdHJpbmcoKSwgIlwiPiIpOwog
ICAgIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMo
bWFya3VwLCB0aXRsZSwgMCwgdGl0bGUubGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7Ci0g
ICAgbWFya3VwLmFwcGVuZExpdGVyYWwoIjwvYT4iKTsKKyAgICBtYXJrdXAuYXBwZW5kKCI8L2E+
Iik7CiAgICAgcmV0dXJuIG1hcmt1cC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDZhNDRkNzI3MjZhOTg3NTg0MjY5MTRmOWM3NzNjMTFm
ZDViNzA4YmMuLjdhZWQ2MTE5NjRkYjM3ZjA1MDMxZDM1ZWFlYTg5OTA1NTYzNjIxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIHJlY29yZEZvcm1TdHJ1Y3R1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50
JiBmb3JtLCBTdHJpbmdCdWlsZGUKICAgICAvLyAyIGlzIGVub3VnaCB0byBkaXN0aW5ndWlzaCBm
b3JtcyBpbiB3ZWJraXQub3JnL2IvOTEyMDkjYzAKICAgICBjb25zdCBzaXplX3QgbmFtZWRDb250
cm9sc1RvQmVSZWNvcmRlZCA9IDI7CiAgICAgYXV0byYgY29udHJvbHMgPSBmb3JtLnVuc2FmZUFz
c29jaWF0ZWRFbGVtZW50cygpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFsiKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiIFsiKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgbmFtZWRDb250
cm9scyA9IDA7IGkgPCBjb250cm9scy5zaXplKCkgJiYgbmFtZWRDb250cm9scyA8IG5hbWVkQ29u
dHJvbHNUb0JlUmVjb3JkZWQ7ICsraSkgewogICAgICAgICBhdXRvKiBmb3JtQXNzb2NpYXRlZEVs
ZW1lbnQgPSBjb250cm9sc1tpXS0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAg
aWYgKCFmb3JtQXNzb2NpYXRlZEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
KCkpCkBAIC0yOTYsOCArMjk2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZEZvcm1TdHJ1
Y3R1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtLCBTdHJpbmdCdWlsZGUKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG5hbWVk
Q29udHJvbHMrKzsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUsICcgJyk7CiAgICAg
fQogICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3YTc3OTk3NmFkMDM5ZDliMmRkZTA2NWE5
NTAwMDYyZjM3MjQ1ODQ1Li4wNGY3OGVkNzEwMzFmZjMzM2MyODk2YzE5MTA4ZTNkZDk1ZWZlM2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlcG9ydFZh
bGlkaXR5KCkKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQoKS5mcmFtZSgpKSB7Ci0gICAgICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52YWxpZCBmb3JtIGNvbnRyb2wgd2l0
aCBuYW1lPSciLCBuYW1lKCksICInIGlzIG5vdCBmb2N1c2FibGUuIik7CisgICAgICAgIGF1dG8g
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIkFuIGludmFsaWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0n
IiwgbmFtZSgpLCAiJyBpcyBub3QgZm9jdXNhYmxlLiIpOwogICAgICAgICBkb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpF
cnJvciwgbWVzc2FnZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKaW5kZXggODg1ZWVlZjVjMWExMmY2ZDMzNmI3NjY0NmIzMjRjNDc2MmRkOWRhOS4uNTU1
ZjE1NDFjMDA4YWI2ZjFhYThmYzRjZWQ3NDJlZjBlZjUwZDFmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIGJvb2wgSFRNTEZvcm1F
bGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoKQogICAgICAgICBmb3IgKGF1dG8mIGNvbnRy
b2wgOiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpIHsKICAgICAgICAgICAgIGlmIChjb250cm9s
LT5pc0Nvbm5lY3RlZCgpICYmIGNvbnRyb2wtPmlzRm9jdXNhYmxlKCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkFu
IGludmFsaWQgZm9ybSBjb250cm9sIHdpdGggbmFtZT0nIiwgY29udHJvbC0+bmFtZSgpLCAiJyBp
cyBub3QgZm9jdXNhYmxlLiIpOworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiQW4gaW52YWxpZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPSciLCBjb250cm9sLT5uYW1lKCks
ICInIGlzIG5vdCBmb2N1c2FibGUuIik7CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwg
bWVzc2FnZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAppbmRleCBkMDZhMDA4ZTkxNGNlZTA5MjQ4NmY2MzgxYzViOWZjNGIwOTQzODU4
Li5mYjRhY2Q2ZTVkNmZjNTIyNjlkNWIwMTY0MDhmZDYzMThiZDRhMWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCBTdHJpbmcg
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IEF0dAogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAg
ICAgIGlmICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiLCAiKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNhbmRpZGF0
ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDg2NzEwNDRjY2Q2MTdkNmViZWVk
YzI5YTRjZmFkZDc4OTAwZGZjMGQuLjZmYjNmNmNhM2M5N2NhMzYyZTg2NWFmNGUyMzNlZDZkM2Vh
NzRlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApA
QCAtNzgsMTMgKzc4LDE0IEBAIHN0YXRpYyBib29sIGlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIE1lZGlhU2VzCiBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdXRvcGxheShjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiwgYm9vbCBzaG91bGRIaXRUZXN0TWFpbkZyYW1lKTsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorCiBzdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZXMoTWVkaWFFbGVtZW50
U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCiB7CiAgICAgU3RyaW5n
QnVpbGRlciByZXN0cmljdGlvbkJ1aWxkZXI7CiAjZGVmaW5lIENBU0UocmVzdHJpY3Rpb25UeXBl
KSBcCiAgICAgaWYgKHJlc3RyaWN0aW9uICYgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzdHJpY3Rp
b25UeXBlKSB7IFwKICAgICAgICAgaWYgKCFyZXN0cmljdGlvbkJ1aWxkZXIuaXNFbXB0eSgpKSBc
Ci0gICAgICAgICAgICByZXN0cmljdGlvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsgXAor
ICAgICAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgiLCAiKTsgXAogICAgICAgICBy
ZXN0cmljdGlvbkJ1aWxkZXIuYXBwZW5kKCNyZXN0cmljdGlvblR5cGUpOyBcCiAgICAgfSBcCiAK
QEAgLTEwNyw2ICsxMDgsNyBAQCBzdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZXMoTWVkaWFF
bGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpYwogCiAgICAgcmV0dXJu
IHJlc3RyaWN0aW9uQnVpbGRlci50b1N0cmluZygpOwogfQorCiAjZW5kaWYKIAogc3RhdGljIGJv
b2wgcGFnZUV4cGxpY2l0bHlBbGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZShjb25zdCBIVE1M
TWVkaWFFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwYTE0OTI5OTdkNzhh
NWIxOWEyMzU1YmM4NTY5Mjk4NDhhODE4Nzg2Li5iY2JjODkyNGE5ZjQ4MmVjYzA1ZTE0NDIwOTNm
N2QxNjdiM2M3OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzY5Nyw3ICszNjk3LDcgQEAgUmVm
UHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRV
bmlmb3JtTG9jYXRpb24oV2ViR0wKICAgICAgICAgICAgIGluZm8ubmFtZSA9IGluZm8ubmFtZS5s
ZWZ0KGluZm8ubmFtZS5sZW5ndGgoKSAtIDMpOwogICAgICAgICAvLyBJZiBpdCdzIGFuIGFycmF5
LCB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIGVsZW1lbnQsIGFwcGVuZGluZyAiW2lu
ZGV4XSIgdG8gdGhlIG5hbWUuCiAgICAgICAgIGZvciAoR0NHTGludCBpbmRleCA9IDA7IGluZGV4
IDwgaW5mby5zaXplOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdW5pZm9ybU5hbWUg
PSBtYWtlU3RyaW5nKGluZm8ubmFtZSwgJ1snLCBpbmRleCwgJ10nKTsKKyAgICAgICAgICAgIGF1
dG8gdW5pZm9ybU5hbWUgPSBtYWtlU3RyaW5nKGluZm8ubmFtZSwgJ1snLCBpbmRleCwgJ10nKTsK
IAogICAgICAgICAgICAgaWYgKG5hbWUgPT0gdW5pZm9ybU5hbWUgfHwgbmFtZSA9PSBpbmZvLm5h
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpjcmVhdGUo
JnByb2dyYW0sIHVuaWZvcm1Mb2NhdGlvbiwgaW5mby50eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDkyZjI3NmYzOGI3NDRkNTFl
YzUxYzhmY2Y5YWI0NmZlNzJkMmVkNGIuLmI0NTg1YzE0NWQ1MmUyMGJhODMyMTEwZTkzZTE0NzBj
Y2FjYmM1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0YWtlUmVt
YWluaW5nKCkKICAgICB7Ci0gICAgICAgIFN0cmluZyByZXN1bHQgPSBtYWtlU3RyaW5nKG1fdGV4
dCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVN0cmluZyhtX3RleHQpOwogICAgICAgICBt
X3RleHQgPSBTdHJpbmdWaWV3KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5k
ZXggODBiNDIxMzY2OWJhMzFlODFhMDI3NTUxYmNjNzhhYjFhMzFjYzEwOC4uYzJlMzA3ZmEwYTNi
MTQxODZiMTJhMTA0MDJmZTZjZmFmOTE1MDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC0zNywxMSArMzcsMTAgQEAKICNp
bmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFhTU0F1ZGl0b3JEZWxlZ2F0
ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTUyLDIxICs1MSwx
MyBAQCBYU1NBdWRpdG9yRGVsZWdhdGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGJ1aWxkQ29uc29sZUVycm9yKGNvbnN0IFhT
U0luZm8mIHhzc0luZm8pCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiVGhlIFhTUyBBdWRpdG9yICIpOwotICAgIG1lc3NhZ2UuYXBwZW5k
KHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UgPyAiYmxvY2tlZCBhY2Nlc3MgdG8iIDogInJl
ZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCBpbiIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJh
bCgiICciKTsKLSAgICBtZXNzYWdlLmFwcGVuZCh4c3NJbmZvLm1fb3JpZ2luYWxVUkwpOwotICAg
IG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiJyBiZWNhdXNlICIpOwotICAgIG1lc3NhZ2UuYXBwZW5k
KHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UgPyAidGhlIHNvdXJjZSBjb2RlIG9mIGEgc2Ny
aXB0IiA6ICJpdHMgc291cmNlIGNvZGUiKTsKLSAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIiB3
YXMgZm91bmQgd2l0aGluIHRoZSByZXF1ZXN0LiIpOwotCi0gICAgaWYgKHhzc0luZm8ubV9kaWRT
ZW5kWFNTUHJvdGVjdGlvbkhlYWRlcikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIg
VGhlIHNlcnZlciBzZW50IGFuICdYLVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIgcmVxdWVzdGluZyB0
aGlzIGJlaGF2aW9yLiIpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFs
KCIgVGhlIGF1ZGl0b3Igd2FzIGVuYWJsZWQgYmVjYXVzZSB0aGUgc2VydmVyIGRpZCBub3Qgc2Vu
ZCBhbiAnWC1YU1MtUHJvdGVjdGlvbicgaGVhZGVyLiIpOwotCi0gICAgcmV0dXJuIG1lc3NhZ2Uu
dG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiVGhlIFhTUyBBdWRpdG9yICIsCisg
ICAgICAgIHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UgPyAiYmxvY2tlZCBhY2Nlc3MgdG8i
IDogInJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCBpbiIsICIgJyIsCisgICAgICAgIHhzc0lu
Zm8ubV9vcmlnaW5hbFVSTCwgIicgYmVjYXVzZSAiLAorICAgICAgICB4c3NJbmZvLm1fZGlkQmxv
Y2tFbnRpcmVQYWdlID8gInRoZSBzb3VyY2UgY29kZSBvZiBhIHNjcmlwdCIgOiAiaXRzIHNvdXJj
ZSBjb2RlIiwKKyAgICAgICAgIiB3YXMgZm91bmQgd2l0aGluIHRoZSByZXF1ZXN0LiIsCisgICAg
ICAgIHhzc0luZm8ubV9kaWRTZW5kWFNTUHJvdGVjdGlvbkhlYWRlciA/ICIgVGhlIHNlcnZlciBz
ZW50IGFuICdYLVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIgcmVxdWVzdGluZyB0aGlzIGJlaGF2aW9y
LiIKKyAgICAgICAgICAgIDogIiBUaGUgYXVkaXRvciB3YXMgZW5hYmxlZCBiZWNhdXNlIHRoZSBz
ZXJ2ZXIgZGlkIG5vdCBzZW5kIGFuICdYLVhTUy1Qcm90ZWN0aW9uJyBoZWFkZXIuIik7CiB9CiAK
IFJlZjxGb3JtRGF0YT4gWFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZpb2xhdGlvblJlcG9y
dChjb25zdCBYU1NJbmZvJiB4c3NJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCmluZGV4IDNlZWZkYmI5MTZiMDc4ODRhMWFkZDAyNDMxYjU2MDM1ODE3MzVh
YjMuLmQ0YjZiZWIzZWE1YzM4NjU0MTFmM2QzNzIzMWUyMTg3NWVjZmRlYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUwOSwyMiArNTA5LDEzIEBA
IHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxheVRyZWUoKQogICAgIG1fY3VlTm9kZS0+
Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50KTsKICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBl
bmRDaGlsZChjbG9uZWRGcmFnbWVudCk7CiAKLSAgICBpZiAobV9mb250U2l6ZSAmJiBvd25lckRv
Y3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQob3duZXJEb2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVm
ZXJlbmNlc1N0eWxlU2hlZXQoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIDo6
Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRv
SWQoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCd7Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRTaXplKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bV9mb250U2l6ZSwgInB4IikpOwotICAgICAgICBpZiAobV9mb250U2l6ZUlzSW1wb3J0YW50KQot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjsgfSIpOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBI
VE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVu
dCgpLCBmYWxzZSk7Ci0gICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChidWlsZGVyLnRvU3Ry
aW5nKCkpOwotICAgICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAg
aWYgKG1fZm9udFNpemUpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFnZSA9IG93bmVyRG9jdW1lbnQo
KS5wYWdlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7CisgICAg
ICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQobWFrZVN0cmluZyhwYWdlLT5jYXB0aW9uVXNl
clByZWZlcmVuY2VzU3R5bGVTaGVldCgpLAorICAgICAgICAgICAgICAgICIgOjoiLCBUZXh0VHJh
Y2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCksICJ7Zm9udC1zaXplOiIsIG1fZm9udFNpemUsIG1f
Zm9udFNpemVJc0ltcG9ydGFudCA/ICJweCAhaW1wb3J0YW50fSIgOiAicHh9IikpOworICAgICAg
ICAgICAgbV9kaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKHRyYWNrKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggYmI5ODNj
NTI5YjU5ZTZkNDIxNzQzYTRmMTU0ZmI1NDk2M2Y4NDMzMC4uNjI4Y2RlY2NhYjFkYjk1NmEzMjY1
MjU1YTY5YTczMjA5NWQyMjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTExNCwxNyAr
MTE0LDEyIEBAIEpTRE9NR2xvYmFsT2JqZWN0KiBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI6OmZyb250ZW5kR2xvYmFsT2JqZWN0KCkKIHN0YXRpYyBTdHJpbmcgZXhwcmVzc2lvbkZvckV2
YWx1YXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpW
YWx1ZT4+JiYgYXJndW1lbnRzKQogewogICAgIFN0cmluZ0J1aWxkZXIgZXhwcmVzc2lvbjsKLSAg
ICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNo
KFtcIiIpOwotICAgIGV4cHJlc3Npb24uYXBwZW5kKGNvbW1hbmQpOwotICAgIGV4cHJlc3Npb24u
YXBwZW5kKCciJyk7Ci0KKyAgICBleHByZXNzaW9uLmFwcGVuZCgiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgJyInKTsKICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogYXJndW1lbnRzKSB7Ci0gICAgICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
KyAgICAgICAgZXhwcmVzc2lvbi5hcHBlbmQoIiwgIik7CiAgICAgICAgIGFyZ3VtZW50LT53cml0
ZUpTT04oZXhwcmVzc2lvbik7CiAgICAgfQotCi0gICAgZXhwcmVzc2lvbi5hcHBlbmQoJ10nKTsK
LSAgICBleHByZXNzaW9uLmFwcGVuZCgnKScpOworICAgIGV4cHJlc3Npb24uYXBwZW5kKCJdKSIp
OwogICAgIHJldHVybiBleHByZXNzaW9uLnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCA2MTEzNDhiZjc3OGY5NTIw
NTBmYWZjMTE1YTcxZGM5MGYwMThlYmMzLi5hMTY5MzE2MmJjZjdhZmJlZjI3MzdlNWRlYzRhOGFi
YmFiZWM0MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCkBAIC0xMDQ3LDggKzEwNDcsOCBAQCBQYXRoIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdF
bGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlJiBub2RlLCBjbwogICAg
IGJvb2wgaGFzU2Vjb25kTGluZSA9ICFlbGVtZW50Um9sZS5pc0VtcHR5KCk7CiAKICAgICB7Ci0g
ICAgICAgIFN0cmluZyBmaXJzdExpbmUgPSBtYWtlU3RyaW5nKGVsZW1lbnRUYWdOYW1lLCBlbGVt
ZW50SURWYWx1ZSwgZWxlbWVudENsYXNzVmFsdWUsIGVsZW1lbnRQc2V1ZG9UeXBlLCAnICcsIGVs
ZW1lbnRXaWR0aCwgInB4IiwgJyAnLCBtdWx0aXBsaWNhdGlvblNpZ24sICcgJywgZWxlbWVudEhl
aWdodCwgInB4Iik7Ci0gICAgICAgIFN0cmluZyBzZWNvbmRMaW5lID0gbWFrZVN0cmluZygiUm9s
ZSAiLCBlbGVtZW50Um9sZSk7CisgICAgICAgIGF1dG8gZmlyc3RMaW5lID0gbWFrZVN0cmluZyhl
bGVtZW50VGFnTmFtZSwgZWxlbWVudElEVmFsdWUsIGVsZW1lbnRDbGFzc1ZhbHVlLCBlbGVtZW50
UHNldWRvVHlwZSwgJyAnLCBlbGVtZW50V2lkdGgsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25T
aWduLCAnICcsIGVsZW1lbnRIZWlnaHQsICJweCIpOworICAgICAgICBhdXRvIHNlY29uZExpbmUg
PSBtYWtlU3RyaW5nKCJSb2xlICIsIGVsZW1lbnRSb2xlKTsKIAogICAgICAgICBmbG9hdCBmaXJz
dExpbmVXaWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihmaXJzdExpbmUpKTsKICAgICAgICAgZmxv
YXQgc2Vjb25kTGluZVdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKHNlY29uZExpbmUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA3YTdjMmQ3YmU5NDYzNzM1MDUwZDM3OTc1MzhiZWRiNjRjYmJmZmM0Li44YzcyMTU3YjhjOWMy
YTUyNTQyZDQ1ODYzYmU2YzgzNmUzYWVlM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05NDUsOCArOTQ1LDcgQEAgRXhjZXB0
aW9uT3I8Q1NTU3R5bGVSdWxlKj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBT
dHJpbmcmIHNlbGVjdG9yKQogICAgIGlmICghc3R5bGVTaGVldFRleHQuaXNFbXB0eSgpKQogICAg
ICAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQoJ1xuJyk7CiAKLSAgICBzdHlsZVNoZWV0VGV4dC5h
cHBlbmQoc2VsZWN0b3IpOwotICAgIHN0eWxlU2hlZXRUZXh0LmFwcGVuZExpdGVyYWwoIiB7fSIp
OworICAgIHN0eWxlU2hlZXRUZXh0LmFwcGVuZChzZWxlY3RvciwgIiB7fSIpOwogCiAgICAgLy8g
VXNpbmcgc2V0VGV4dCgpIGFzIHRoaXMgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHN0eWxlc2hlZXQg
cnVsZSBzZXQuCiAgICAgc2V0VGV4dChzdHlsZVNoZWV0VGV4dC50b1N0cmluZygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhZjY3Mzc4YTZkZGNkMWFlNzcyNDRl
ODk5NTM2NzczYTcwMjdiMDNjLi5hNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRjZTFhNTg1MTZl
YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5MiwyNyArMTkxLDE1IEBAIFJl
ZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+PiBJbnNwZWN0CiAKIFJlZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIHR5cGVzOwotCi0gICAgaWYgKHJlc291cmNlSW5mby5pc01hc3RlcikKLSAgICAgICAgdHlw
ZXMuYXBwZW5kTGl0ZXJhbCgiTWFzdGVyICIpOwotCi0gICAgaWYgKHJlc291cmNlSW5mby5pc01h
bmlmZXN0KQotICAgICAgICB0eXBlcy5hcHBlbmRMaXRlcmFsKCJNYW5pZmVzdCAiKTsKLQotICAg
IGlmIChyZXNvdXJjZUluZm8uaXNGYWxsYmFjaykKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJh
bCgiRmFsbGJhY2sgIik7Ci0KLSAgICBpZiAocmVzb3VyY2VJbmZvLmlzRm9yZWlnbikKLSAgICAg
ICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgiRm9yZWlnbiAiKTsKLQotICAgIGlmIChyZXNvdXJjZUlu
Zm8uaXNFeHBsaWNpdCkKLSAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJhbCgiRXhwbGljaXQgIik7
Ci0KKyAgICBhdXRvIHR5cGVzID0gbWFrZVN0cmluZyhyZXNvdXJjZUluZm8uaXNNYXN0ZXIgPyAi
TWFzdGVyICIgOiAiIiwKKyAgICAgICAgcmVzb3VyY2VJbmZvLmlzTWFuaWZlc3QgPyAiTWFuaWZl
c3QgIiA6ICIiLAorICAgICAgICByZXNvdXJjZUluZm8uaXNGYWxsYmFjayA/ICJGYWxsYmFjayAi
IDogIiIsCisgICAgICAgIHJlc291cmNlSW5mby5pc0ZvcmVpZ24gPyAiRm9yZWlnbiAiIDogIiIs
CisgICAgICAgIHJlc291cmNlSW5mby5pc0V4cGxpY2l0ID8gIkV4cGxpY2l0ICIgOiAiIik7CiAg
ICAgcmV0dXJuIFByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzb3VyY2VJbmZvLnJlc291cmNlLnN0
cmluZygpKQogICAgICAgICAuc2V0U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlSW5mby5z
aXplKSkKLSAgICAgICAgLnNldFR5cGUodHlwZXMudG9TdHJpbmcoKSkKKyAgICAgICAgLnNldFR5
cGUodHlwZXMpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCA5MmMzZWVkYTNk
ZjY2MmJjOWI4MTU1YzU0ZGQyMjMyOTVkNGM4MzQ2Li40OGI5YTcxODUzZjQ0OTRmYmY0N2UzODM4
YTg2MzY0NzllNjdkZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViQ29uc29s
ZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKIHZvaWQgV2Vi
Q29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdl
ID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9u
ZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwg
U2NyaXB0QXJndW1lbnRzOjp0cnVuY2F0ZVN0cmluZ0ZvckNvbnNvbGVNZXNzYWdlKHJlc3BvbnNl
Lmh0dHBTdGF0dXNUZXh0KCkpLCAnKScpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBh
IHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCBTY3JpcHRBcmd1
bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UocmVzcG9uc2UuaHR0cFN0YXR1
c1RleHQoKSksICcpJyk7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAs
IDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiAgICAgfQogfQpAQCAtNzksMTQgKzc5
LDggQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAg
IG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiKTsKLSAgICBp
ZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1l
c3NhZ2UuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgfQotCi0gICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZp
ZXIpKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNv
dXJjZSIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpID8gIiIgOiAiOiAi
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdV
UkwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01peGVkQ29udGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCmluZGV4IGZkYTkyODZhZmYwYmQ5YmExNTAzYmFhNTNlMzdmNWNiYjA4
OWM4NDkuLjViMTc3Yzc4MTE3MGMzNDczZWVmM2FiNDQxZWVhZGViYjk5MjMxYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjppc01peGVkQ29udGVudChTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFUKIHN0YXRpYyB2b2lkIGxvZ1dhcm5pbmcoY29u
c3QgRnJhbWUmIGZyYW1lLCBib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25z
dCBVUkwmIHRhcmdldCkKIHsKICAgICBjb25zdCBjaGFyKiBlcnJvclN0cmluZyA9IGFsbG93ZWQg
PyAiIHdhcyBhbGxvd2VkIHRvICIgOiAiIHdhcyBub3QgYWxsb3dlZCB0byAiOwotICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/IFN0cmluZygpIDogIltibG9ja2VkXSAi
KSwgIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCBlcnJvclN0cmluZywgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRl
bnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4i
KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8gU3RyaW5nKCkgOiAi
W2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksIGVycm9yU3RyaW5nLCBhY3Rpb24sICIgaW5z
ZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSwgIi5cbiIpOwogICAgIGZyYW1lLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwog
fQogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zv
cm1Gb3JNaXhlZENvbnRlbnQoRnJhbWUmIGZyYW1lLCBTZWN1cml0eU9yaWdpbiYKICAgICBpZiAo
IWlzTWl4ZWRDb250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIGZyYW1lLmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGNvbnRh
aW5zIGEgZm9ybSB3aGljaCB0YXJnZXRzIGFuIGluc2VjdXJlIFVSTCAiLCB1cmwuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBmcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBjb250YWlucyBhIGZvcm0gd2hpY2ggdGFyZ2V0cyBh
biBpbnNlY3VyZSBVUkwgIiwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
LlxuIik7CiAgICAgZnJhbWUuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAKICAgICBm
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRl
eCAwMzNhOWQ0NjVhNzU0ZGY5ZTM5ZjZmNjcwMmJmY2Y4YWIzMmQ5MGZkLi41M2VmNGMwMTcxMDcw
NmQyYWI0OGEzYzllMjE1NTZhMjRkYjBiYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCkBAIC0xMjksMTggKzEyOCwxNSBAQCBib29sIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpoYXNIaWdoZXJQcmlvcml0eVRoYW4oY29uc3QgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbgogICAgIHJldHVybiBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEtPnByaW9y
aXR5ID4gb3RoZXIubV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhLT5wcmlvcml0eTsKIH0KIAotc3Rh
dGljIFVSTCBhdHRyaWJ1dGlvblJlcG9ydFVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pCitzdGF0aWMgVVJMIG1ha2VWYWxpZFVSTChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBjb25zdCBjaGFyKiBwYXRoKQogewotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImh0dHBzOi8vIik7Ci0gICAgYnVp
bGRlci5hcHBlbmQocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9uUGF0aCk7
Ci0KLSAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OwotICAgIGlmICh1
cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdXJsOworICAgIFVSTCB2YWxpZFVSTCB7IHsg
fSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBkb21haW4uc3RyaW5nKCksIHBhdGgpIH07CisgICAg
cmV0dXJuIHZhbGlkVVJMLmlzVmFsaWQoKSA/IHZhbGlkVVJMIDogVVJMIHsgfTsKK30KIAotICAg
IHJldHVybiBVUkwoKTsKK3N0YXRpYyBVUkwgYXR0cmlidXRpb25SZXBvcnRVUkwoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICByZXR1cm4gbWFrZVZhbGlkVVJMKGRvbWFp
biwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRSZXBvcnRBdHRyaWJ1dGlvblBhdGgpOwogfQogCiBV
UkwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmF0dHJpYnV0aW9uUmVwb3J0U291cmNlVVJMKCkg
Y29uc3QKQEAgLTIwNywzMCArMjAzLDEyIEBAIFVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
dG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdAogICAgIGlmICghbV9lcGhlbWVyYWxTb3VyY2VOb25j
ZSB8fCAhbV9lcGhlbWVyYWxTb3VyY2VOb25jZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4g
VVJMKCk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJodHRwczovLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc291cmNlU2l0ZS5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKHByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVQYXRoKTsKLQotICAgIFVSTCB1cmwgeyBV
UkwoKSwgYnVpbGRlci50b1N0cmluZygpIH07Ci0gICAgaWYgKHVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiB1cmw7Ci0KLSAgICByZXR1cm4gVVJMKCk7CisgICAgcmV0dXJuIG1ha2VWYWxp
ZFVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVt
ZW50VG9rZW5TaWduYXR1cmVQYXRoKTsKIH0KIAogVVJMIFByaXZhdGVDbGlja01lYXN1cmVtZW50
Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiaHR0cHM6Ly8iKTsKLSAgICBidWlsZGVyLmFw
cGVuZChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbChwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0
aCk7Ci0KLSAgICBVUkwgdXJsIHsgVVJMKCksIGJ1aWxkZXIudG9TdHJpbmcoKSB9OwotICAgIGlm
ICh1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdXJsOwotCi0gICAgcmV0dXJuIFVSTCgp
OworICAgIHJldHVybiBtYWtlVmFsaWRVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWlu
LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0aCk7CiB9CiAKIFJlZjxK
U09OOjpPYmplY3Q+IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZUpTT04o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCmluZGV4IDg3YjdlM2QwNGYyMjg3NDVmYjcwOGIxYTE2YWQ3MzNiYTAyZTlhYjAuLjRm
MjI4ODMzNjNhMGNlMzVhZjUyYTRiNWI3ZmUxZjAxZjM1ZTM3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM1MSwxMCArMzUx
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBk
ZWNvZGVyLCB1bnNpZ25lZCBtb2RlbFZlcnNpb24KIAogc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVh
bihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIGZsYWcp
CiB7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQobGFiZWwpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBidWlsZGVy
LmFwcGVuZChmbGFnID8gIlllcyIgOiAiTm8iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICIs
IGxhYmVsLCAiOiAiLCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0KIAogc3RhdGljIHZvaWQgYXBw
ZW5kSGFzaFNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaFNldCkKQEAgLTM2MiwxNSArMzU5
LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kSGFzaFNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXMKICAgICBpZiAoaGFzaFNldC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAi
KTsKLSAgICBidWlsZGVyLmFwcGVuZChsYWJlbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCI6XG4iKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogaGFzaFNldCkgewotICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICAgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGVudHJ5LnN0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
fQorICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgIiwgbGFiZWwsICI6XG4iKTsKKyAgICBmb3IgKGF1
dG8mIGVudHJ5IDogaGFzaFNldCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAgICAgICAgIiwg
ZW50cnkuc3RyaW5nKCksICdcbicpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElD
UykKQEAgLTM3OSwxNSArMzcwLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kSGFzaFNldChTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXMKICAgICBpZiAo
aGFzaFNldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiAgICAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChsYWJlbCk7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCI6XG4iKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDog
aGFzaFNldCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICAgIik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVudHJ5KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7Ci0gICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgIiwgbGFiZWwsICI6XG4iKTsKKyAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogaGFzaFNldCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICAgICAgIiwgZW50cnksICdcbicpOwogfQogCiBzdGF0aWMgQVNDSUlMaXRlcmFsIG5hdmlnYXRv
ckFQSUVudW1Ub1N0cmluZyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkgbmF2
aWdhdG9yRW51bSkKQEAgLTQzOCwyMyArNDIzLDE4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hdmln
YXRvckFQSU9wdGlvblNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBPcHRpb25TZXQ8
CiB7CiAgICAgaWYgKG9wdGlvblNldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZDpcbiIp
OwotICAgIGZvciAoYXV0byBuYXZpZ2F0b3JBUEkgOiBvcHRpb25TZXQpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgICAgICAgICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChu
YXZpZ2F0b3JBUElFbnVtVG9TdHJpbmcobmF2aWdhdG9yQVBJKS5jaGFyYWN0ZXJzKCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiAg
ICBuYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZDpcbiIpOworICAgIGZvciAoYXV0byBuYXZpZ2F0
b3JBUEkgOiBvcHRpb25TZXQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgICAgICIsIG5h
dmlnYXRvckFQSUVudW1Ub1N0cmluZyhuYXZpZ2F0b3JBUEkpLCAnXG4nKTsKIH0KICAgICAKIHN0
YXRpYyB2b2lkIGFwcGVuZFNjcmVlbkFQSU9wdGlvblNldChTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBPcHRpb25TZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJPiYgb3B0
aW9uU2V0KQogewogICAgIGlmIChvcHRpb25TZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgICAgc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQ6
XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgIHNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkOlxu
Iik7CiAgICAgZm9yIChhdXRvIHNjcmVlbkFQSSA6IG9wdGlvblNldCkgewotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAgICAgICAgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNj
cmVlbkFQSUVudW1Ub1N0cmluZyhzY3JlZW5BUEkpLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiICAgICAgICAiLCBz
Y3JlZW5BUElFbnVtVG9TdHJpbmcoc2NyZWVuQVBJKSwgJ1xuJyk7CiAgICAgfQogfQogI2VuZGlm
CkBAIC00NjcsMTggKzQ0NywxMiBAQCBzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJh
Y3Rpb24oV1RGOjpTZWNvbmRzIGludGVyYWN0aW9uVGltZVNlY29uZHMpCiBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlJlZ2lzdHJhYmxlIGRvbWFpbjog
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJSZWdpc3RyYWJsZSBk
b21haW46ICIsIHJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLCAnXG4nKTsKIAogICAgIC8vIFVz
ZXIgaW50ZXJhY3Rpb24KICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJoYWRVc2VySW50ZXJh
Y3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb246
ICIpOwotICAgIGlmIChoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKSkpCi0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgid2l0aGluIDI0IGhvdXJzIik7Ci0gICAgZWxzZQotICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIi0xIik7CisgICAgYnVpbGRlci5hcHBlbmQoIiAgICBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uOiAiLCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKSkgPyAid2l0aGluIDI0IGhv
dXJzIiA6ICItMSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIGFwcGVuZEJvb2xl
YW4oYnVpbGRlciwgImdyYW5kZmF0aGVyZWQiLCBncmFuZGZhdGhlcmVkKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBhMTkwZDY5MGM2ZmU2OGMxOTlmM2Q1YTExZTA1MTUzN2MzMzUx
YTYyLi4xNTgxNWQzNTQ0ZGVhNmUyZjE4MzFmMTk2MzFmZmQ0YjNiMzdhYTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wCiAgICAgV29ya2VyUnVuTG9vcCYgcnVu
TG9vcCA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgp
LT5ydW5Mb29wKCk7CiAKICAgICAvLyBDcmVhdGUgYSB1bmlxdWUgbW9kZSBqdXN0IGZvciB0aGlz
IHN5bmNocm9ub3VzIHJlc291cmNlIGxvYWQuCi0gICAgU3RyaW5nIG1vZGUgPSBtYWtlU3RyaW5n
KCJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZSIsIHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQo
KSk7CisgICAgYXV0byBtb2RlID0gbWFrZVN0cmluZygibG9hZFJlc291cmNlU3luY2hyb25vdXNs
eU1vZGUiLCBydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpOwogCiAgICAgYXV0byBsb2FkZXIgPSBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGQxNDU1YjU0ZGEwZDliZjMyNTlh
MDg3OTJkMDhiOWE3YjgzYTA4ODYuLmY4MjJhN2NiYjZkMjJlZjVjYzAyMzUyMmMwZGE0NWE5OTk5
MDY1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplYwogICAgICAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdp
biBub3cgc2luY2UgdGhlIHRhcmdldCBkb2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRo
ZSB0aW1lciB3YXMgc2NoZWR1bGVkLgogICAgICAgICAgICAgaWYgKCF0YXJnZXRPcmlnaW4tPmlz
U2FtZVNjaGVtZUhvc3RQb3J0KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2VDb25zb2xlID0gY29uc29sZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3Qg
bWVzc2FnZSB0byAiLCB0YXJnZXRPcmlnaW4tPnRvU3RyaW5nKCksICIuIFJlY2lwaWVudCBoYXMg
b3JpZ2luICIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgIi5cbiIp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmFibGUg
dG8gcG9zdCBtZXNzYWdlIHRvICIsIHRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKSwgIi4gUmVjaXBp
ZW50IGhhcyBvcmlnaW4gIiwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygp
LCAiLlxuIik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFja1RyYWNlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcGFnZUNvbnNvbGUtPmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsICpzdGFja1RyYWNlKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzY2E4NjdhNjJmYjlj
NDFhYzYxMGU2NmMzNzg2NTJjOTYyMDZmZjlkLi4yNGVhZWIzZjI1Yzg0MzhjYmNlNzdmYmQ3MWY3
NzZiNGE0YWJiZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzc3LDI4ICszNzcsMTkgQEAg
c3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciKTsKICAgICBTdHJpbmdCdWls
ZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKLSAgICB1bnNpZ25lZCBpbnQg
bnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICBmb3Ig
KGkgPSAwOyBpIDwgbnVtTGFiZWxzOyBpKyspIHsKLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbGFi
ZWxzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bUxhYmVscyA9IGxhYmVscy5zaXpl
KCk7IGkgPCBudW1MYWJlbHM7IGkrKykgeworICAgICAgICBhdXRvJiBsYWJlbCA9IGxhYmVsc1tp
XTsKIAotICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IGZhbHNlOwotICAgICAgICBi
b29sIGVuZHNXaXRoV29yZENoYXIgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBzdGFydHNXaXRoV29y
ZENoYXJhY3RlciA9IGZhbHNlOworICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9
IGZhbHNlOwogICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0YXJ0
c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAs
IDEpKSA+PSAwOwotICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0
KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7Cisg
ICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0
Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOworICAgICAgICAgICAgZW5kc1dpdGhXb3Jk
Q2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwu
bGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpKQotICAg
ICAgICAgICAgcGF0dGVybi5hcHBlbmQoJ3wnKTsKICAgICAgICAgLy8gU2VhcmNoIGZvciB3b3Jk
IGJvdW5kYXJpZXMgb25seSBpZiBsYWJlbCBzdGFydHMvZW5kcyB3aXRoICJ3b3JkIGNoYXJhY3Rl
cnMiLgotICAgICAgICAvLyBJZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRhcmll
cywgdGhpcyB3b3VsZG4ndCB3b3JrIGZvciBsYW5ndWFnZXMKLSAgICAgICAgLy8gc3VjaCBhcyBK
YXBhbmVzZS4KLSAgICAgICAgaWYgKHN0YXJ0c1dpdGhXb3JkQ2hhcikKLSAgICAgICAgICAgIHBh
dHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7Ci0gICAgICAgIHBhdHRlcm4uYXBwZW5kKGxhYmVs
KTsKLSAgICAgICAgaWYgKGVuZHNXaXRoV29yZENoYXIpCi0gICAgICAgICAgICBwYXR0ZXJuLmFw
cGVuZExpdGVyYWwoIlxcYiIpOworICAgICAgICAvLyBJZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9y
IHdvcmQgYm91bmRhcmllcywgdGhpcyB3b3VsZG4ndCB3b3JrIGZvciBsYW5ndWFnZXMgc3VjaCBh
cyBKYXBhbmVzZS4KKyAgICAgICAgcGF0dGVybi5hcHBlbmQoaSA/ICJ8IiA6ICIiLCBzdGFydHNX
aXRoV29yZENoYXJhY3RlciA/ICJcXGIiIDogIiIsIGxhYmVsLCBlbmRzV2l0aFdvcmRDaGFyYWN0
ZXIgPyAiXFxiIiA6ICIiKTsKICAgICB9CiAgICAgcGF0dGVybi5hcHBlbmQoJyknKTsKICAgICBy
ZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpT
Qzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggNjU4M2MzNjlmZGExYzA2ZDk0Mzc1Y2NkYzIzZmM4YjcyMjMwYmY1YS4uM2ZmM2M2OTlm
ZWYzZjQ2Y2U0ZmM3ZTk1NmUzM2FkMzYwYWZhNzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTQ1MSwxNCArMTQ1MSwxMSBAQCBib29sIEZyYW1lVmlldzo6dXNlc01vY2tTY3Jv
bGxBbmltYXRvcigpIGNvbnN0CiAKIHZvaWQgRnJhbWVWaWV3Ojpsb2dNb2NrU2Nyb2xsQW5pbWF0
b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKIHsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgYXV0byBkb2N1bWVudCA9IGZyYW1l
KCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiTWFpbiIpOwotICAgIGJ1aWxkZXIuYXBwZW5k
KCJGcmFtZVZpZXc6ICIsIG1lc3NhZ2UpOwotICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpEZWJ1ZywgYnVpbGRlci50b1N0
cmluZygpKTsKKyAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RGVidWcsCisgICAgICAgIG1ha2VTdHJpbmcoZnJhbWUoKS5p
c01haW5GcmFtZSgpID8gIk1haW4iIDogIiIsICJGcmFtZVZpZXc6ICIsIG1lc3NhZ2UpKTsKIH0K
IAogU3RyaW5nIEZyYW1lVmlldzo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDNmNmVkODRkMDZkNDVjM2M3MDA3OGQ3Nzc4
MDc2NTZkZDQ1OGRhYTkuLjkxZTg4MjQwZmNkNjk3YWVjODRhNGE1YWQxNTRlMzM0ODgwYmU0MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xMzAsMTEgKzEzMCw4
IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kU3RhcnRUYWcoU3RyaW5nQnVpbGRlciYKICAgICBpZiAoIXNob3VsZElnbm9yZUVsZW1lbnQo
ZWxlbWVudCkpCiAgICAgICAgIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdGFydFRhZyhvdXQs
IGVsZW1lbnQsIG5hbWVzcGFjZXMpOwogCi0gICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmhlYWRUYWcpKSB7Ci0gICAgICAgIG91dC5hcHBlbmRMaXRlcmFsKCI8bWV0YSBjaGFy
c2V0PVwiIik7Ci0gICAgICAgIG91dC5hcHBlbmQobV9kb2N1bWVudC5jaGFyc2V0KCkpOwotICAg
ICAgICBvdXQuYXBwZW5kTGl0ZXJhbCgiXCI+Iik7Ci0gICAgfQorICAgIGlmIChlbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSkKKyAgICAgICAgb3V0LmFwcGVuZCgiPG1ldGEg
Y2hhcnNldD1cIiIsIG1fZG9jdW1lbnQuY2hhcnNldCgpLCAiXCI+Iik7CiAKICAgICAvLyBGSVhN
RTogRm9yIG9iamVjdCAocGx1Z2lucykgdGFncyBhbmQgdmlkZW8gdGFnIHdlIGNvdWxkIHJlcGxh
Y2UgdGhlbSBieSBhbiBpbWFnZSBvZiB0aGVpciBjdXJyZW50IGNvbnRlbnRzLgogfQpAQCAtMjQy
LDcgKzIzOSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQo
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIGlmICghaXRlbVRl
eHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChpdGVtVGV4dCk7CiAg
ICAgICAgICAgICBpZiAoaSA8IHN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMSkKLSAgICAgICAgICAg
ICAgICBjc3NUZXh0LmFwcGVuZExpdGVyYWwoIlxuXG4iKTsKKyAgICAgICAgICAgICAgICBjc3NU
ZXh0LmFwcGVuZCgiXG5cbiIpOwogICAgICAgICB9CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKICAgICAgICAgLy8gU29tZSBydWxlcyBo
YXZlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB0aGF0IHdlIG5lZWQgdG8gcmV0cmll
dmUuCkBAIC0zMTgsMTEgKzMxNSwxMCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJl
c291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZQogCiBVUkwg
UGFnZVNlcmlhbGl6ZXI6OnVybEZvckJsYW5rRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIGF1
dG8gaXRlciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0g
bV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotICAg
IFN0cmluZyB1cmwgPSBtYWtlU3RyaW5nKCJ3eWNpd3lnOi8vZnJhbWUvIiwgbV9ibGFua0ZyYW1l
Q291bnRlcisrKTsKLSAgICBVUkwgZmFrZVVSTCh7IH0sIHVybCk7CisgICAgYXV0byBpdGVyYXRv
ciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1f
YmxhbmtGcmFtZVVSTHMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Cisg
ICAgVVJMIGZha2VVUkwgeyB7IH0sIG1ha2VTdHJpbmcoInd5Y2l3eWc6Ly9mcmFtZS8iLCBtX2Js
YW5rRnJhbWVDb3VudGVyKyspIH07CiAgICAgbV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZh
a2VVUkwpOwogICAgIHJldHVybiBmYWtlVVJMOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwCmluZGV4IGY5ZDkxMTk4NWEyMDY0ZGZkYzQ4
MDJjZjEyZjgxZjBkYWZmOGVkOGQuLjRhNTBjZjgyMjJmNGU0NTI4YTBlYzA0MTI1YWNmNjg2NjE2
Mjk3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZ0Ns
aWVudC5jcHAKQEAgLTI2LDMwICsyNiwyMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQ6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzU3RyaW5nKE9wdGlv
blNldDxTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKQorU3RyaW5nIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6c3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zQXNTdHJpbmcoT3B0aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiBy
ZWFzb25zKQogewotICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMuaXNFbXB0eSgp
KQorICAgIGlmIChyZWFzb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHJlYXNvbnM7Ci0KLSAgICBpZiAoc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OkZvcmNlZE9uTWFp
blRocmVhZCkKLSAgICAgICAgcmVhc29ucy5hcHBlbmRMaXRlcmFsKCJmb3JjZWQsIik7Ci0gICAg
aWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29uOjpIYXNTbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJh
bCgic2xvdy1yZXBhaW50IG9iamVjdHMsIik7Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCi0gICAgICAgIHJlYXNvbnMu
YXBwZW5kTGl0ZXJhbCgidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICBpZiAo
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246
Okhhc05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIHJlYXNvbnMu
YXBwZW5kTGl0ZXJhbCgibm9uLWxheWVyIHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsIik7
Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uOjpJc0ltYWdlRG9jdW1lbnQpCi0gICAgICAgIHJlYXNvbnMuYXBwZW5kTGl0ZXJh
bCgiaW1hZ2UgZG9jdW1lbnQsIik7CisgICAgYXV0byBzdHJpbmcgPSBtYWtlU3RyaW5nKHJlYXNv
bnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246OkZvcmNlZE9uTWFpblRocmVh
ZCkgPyAiZm9yY2VkLCIgOiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbjo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKSA/ICJzbG93LXJlcGFpbnQg
b2JqZWN0cywiIDogIiIsCisgICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb246Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRp
bmdGaXhlZExheWVycykgPyAidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiIDogIiIsCisg
ICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc05v
bkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpID8gIm5vbi1sYXllciB2aWV3cG9ydC1j
b25zdHJhaW5lZCBvYmplY3RzLCIgOiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SXNJbWFnZURvY3VtZW50KSA/ICJpbWFnZSBkb2N1bWVu
dCwiIDogIiIpOwogCiAgICAgLy8gU3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgotICAgIHJldHVy
biByZWFzb25zLnRvU3RyaW5nKCkubGVmdChyZWFzb25zLmxlbmd0aCgpIC0gMSk7CisgICAgcmV0
dXJuIHN0cmluZy5sZWZ0KHN0cmluZy5sZW5ndGgoKSAtIDEpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNl
VXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggNTA5ZjIzYmFjZTFlZTVmYTYxN2Q4NWNiZGExNTY4
ZDk5MzhiODU4ZS4uZTUxOWJlN2E4NGIwMTQ1NGI0NjNmNmRjMzU4NDM3MDA3MjhmYzhiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJs
YXlDb2NvYS5tbQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6
OnBsYXRmb3JtRHJhdyhDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICAgICAgc2l6ZV90IHJlY2xh
aW1hYmxlID0gY2F0ZWdvcnkucmVjbGFpbWFibGVTaXplLmxhc3QoKTsKICAgICAgICAgc2l6ZV90
IGV4dGVybmFsID0gY2F0ZWdvcnkuZXh0ZXJuYWxTaXplLmxhc3QoKTsKICAgICAgICAgCi0gICAg
ICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcocGFkKCcgJywgMTEsIGNhdGVnb3J5Lm5hbWUp
LCAiOiAiLCBmb3JtYXRCeXRlTnVtYmVyKGRpcnR5KSk7CisgICAgICAgIGF1dG8gbGFiZWwgPSBt
YWtlU3RyaW5nKHBhZCgnICcsIDExLCBjYXRlZ29yeS5uYW1lKSwgIjogIiwgZm9ybWF0Qnl0ZU51
bWJlcihkaXJ0eSkpOwogICAgICAgICBpZiAoZXh0ZXJuYWwpCiAgICAgICAgICAgICBsYWJlbCA9
IGxhYmVsICsgbWFrZVN0cmluZygiICsgIiwgZm9ybWF0Qnl0ZU51bWJlcihleHRlcm5hbCkpOwog
ICAgICAgICBpZiAocmVjbGFpbWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBjZjBiYTgwMWZmMjVlMjNjNzhjZTFjMDAx
ODcxOTNmZjA5Y2RhYWIyLi5mNDFhYjBlNDI0MzFjZTIxZDM4M2NjYzc1ZmE3ZTFiOGI3Mjc0ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKQEAgLTY4LDI2ICs2OCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBz
dGF0aWMgU3RyaW5nIGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGVmZmVj
dGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IGNoYXIq
IHByZWZpeCwgY29uc3QgY2hhciogc3ViamVjdCA9ICJpdCIpCiB7Ci0gICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1Jl
cG9ydE9ubHkoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIltSZXBvcnQgT25seV0g
Iik7Ci0gICAgcmVzdWx0LmFwcGVuZChwcmVmaXgpOwotICAgIGlmICghYmxvY2tlZFVSTC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKGJsb2NrZWRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgIH0K
LSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGJlY2F1c2UgIik7Ci0gICAgcmVzdWx0LmFwcGVu
ZChzdWJqZWN0KTsKLSAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkpIHsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBhcHBlYXJzIGluIG5laXRoZXIgdGhlICIp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNy
YyBkaXJlY3RpdmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRo
ZSAiKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50
IFNlY3VyaXR5IFBvbGljeS4iKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3Qo
KS5pc1JlcG9ydE9ubHkoKSA/ICJbUmVwb3J0IE9ubHldICIgOiAiIiwKKyAgICAgICAgcHJlZml4
LCBibG9ja2VkVVJMLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBibG9ja2VkVVJMLnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGJlY2F1c2UgIiwgc3ViamVjdCwKKyAgICAgICAgdmlv
bGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkgPyAiIGFwcGVhcnMgaW4gbmVpdGhlciB0aGUg
IiA6ICIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiLAorICAgICAgICBlZmZlY3RpdmVWaW9sYXRl
ZERpcmVjdGl2ZSwKKyAgICAgICAgdmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkgPyAi
IGRpcmVjdGl2ZSBub3IgdGhlIGRlZmF1bHQtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBT
ZWN1cml0eSBQb2xpY3kuIiA6ICIgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBv
bGljeS4iKTsKIH0KIAogQ29udGVudFNlY3VyaXR5UG9saWN5OjpDb250ZW50U2VjdXJpdHlQb2xp
Y3koVVJMJiYgcHJvdGVjdGVkVVJMLCBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQqIGNsaWVu
dCkKQEAgLTEzOCwyMiArMTIzLDE0IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpjb3B5
VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbShjb25zdCBDb250ZW50U2VjCiBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dSdW5uaW5nT3JEaXNwbGF5aW5nSW5zZWN1cmVDb250
ZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGJvb2wgYWxsb3cgPSB0cnVlOwotICAgIGJvb2wg
aXNSZXBvcnRPbmx5ID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVz
KSB7CiAgICAgICAgIGlmICghcG9saWN5LT5oYXNCbG9ja0FsbE1peGVkQ29udGVudERpcmVjdGl2
ZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaXNSZXBvcnRPbmx5ID0gcG9s
aWN5LT5pc1JlcG9ydE9ubHkoKTsKLQotICAgICAgICBTdHJpbmdCdWlsZGVyIGNvbnNvbGVNZXNz
YWdlOwotICAgICAgICBpZiAoaXNSZXBvcnRPbmx5KQotICAgICAgICAgICAgY29uc29sZU1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiW1JlcG9ydCBPbmx5XSAiKTsKLSAgICAgICAgY29uc29sZU1lc3Nh
Z2UuYXBwZW5kKCJCbG9ja2VkIG1peGVkIGNvbnRlbnQgIik7Ci0gICAgICAgIGNvbnNvbGVNZXNz
YWdlLmFwcGVuZCh1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgICAg
ICBjb25zb2xlTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCIgYmVjYXVzZSAiKTsKLSAgICAgICAgY29u
c29sZU1lc3NhZ2UuYXBwZW5kKCInYmxvY2stYWxsLW1peGVkLWNvbnRlbnQnIGFwcGVhcnMgaW4g
dGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24o
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmJsb2NrQWxsTWl4ZWRDb250ZW50
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmxvY2tBbGxNaXhlZENvbnRl
bnQsICpwb2xpY3ksIHVybCwgY29uc29sZU1lc3NhZ2UudG9TdHJpbmcoKSk7Ci0KKyAgICAgICAg
Ym9vbCBpc1JlcG9ydE9ubHkgPSBwb2xpY3ktPmlzUmVwb3J0T25seSgpOworICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGlzUmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHldICIgOiAi
IiwgIkJsb2NrZWQgbWl4ZWQgY29udGVudCAiLAorICAgICAgICAgICAgdXJsLnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGJlY2F1c2UgJ2Jsb2NrLWFsbC1taXhlZC1jb250ZW50
JyBhcHBlYXJzIGluIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iKTsKKyAgICAgICAgcmVw
b3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpibG9ja0Fs
bE1peGVkQ29udGVudCwKKyAgICAgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpibG9ja0FsbE1peGVkQ29udGVudCwgKnBvbGljeSwgdXJsLCBtZXNzYWdlKTsKICAg
ICAgICAgaWYgKCFpc1JlcG9ydE9ubHkpCiAgICAgICAgICAgICBhbGxvdyA9IGZhbHNlOwogICAg
IH0KQEAgLTgzOSwzMCArODE2LDI1IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBv
cnRJbnZhbGlkRGlyZWN0aXZlSW5IVFRQRXF1aXZNZXRhKGNvbnN0IFN0cmluZyYKIAogdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWREaXJlY3RpdmVWYWx1ZUNoYXJhY3Rl
cihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdmFsdWUgZm9yIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFp
bnMgYW4gaW52YWxpZCBjaGFyYWN0ZXI6ICciLCB2YWx1ZSwgIicuIE5vbi13aGl0ZXNwYWNlIGNo
YXJhY3RlcnMgb3V0c2lkZSBBU0NJSSAweDIxLTB4N0UgbXVzdCBiZSBwZXJjZW50LWVuY29kZWQs
IGFzIGRlc2NyaWJlZCBpbiBSRkMgMzk4Niwgc2VjdGlvbiAyLjE6IGh0dHA6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjEuIik7Ci0gICAgbG9nVG9Db25zb2xlKG1lc3Nh
Z2UpOworICAgIGxvZ1RvQ29uc29sZShtYWtlU3RyaW5nKCJUaGUgdmFsdWUgZm9yIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMg
YW4gaW52YWxpZCBjaGFyYWN0ZXI6ICciLCB2YWx1ZSwgIicuIE5vbi13aGl0ZXNwYWNlIGNoYXJh
Y3RlcnMgb3V0c2lkZSBBU0NJSSAweDIxLTB4N0UgbXVzdCBiZSBwZXJjZW50LWVuY29kZWQsIGFz
IGRlc2NyaWJlZCBpbiBSRkMgMzk4Niwgc2VjdGlvbiAyLjE6IGh0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjEuIikpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0SW52YWxpZFBhdGhDaGFyYWN0ZXIoY29uc3QgU3RyaW5nJiBkaXJlY3Rp
dmVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBjaGFyIGludmFsaWRDaGFyKSBjb25z
dAogewogICAgIEFTU0VSVChpbnZhbGlkQ2hhciA9PSAnIycgfHwgaW52YWxpZENoYXIgPT0gJz8n
KTsKIAotICAgIFN0cmluZyBpZ25vcmluZzsKKyAgICBjb25zdCBjaGFyKiBpZ25vcmluZzsKICAg
ICBpZiAoaW52YWxpZENoYXIgPT0gJz8nKQogICAgICAgICBpZ25vcmluZyA9ICJUaGUgcXVlcnkg
Y29tcG9uZW50LCBpbmNsdWRpbmcgdGhlICc/Jywgd2lsbCBiZSBpZ25vcmVkLiI7CiAgICAgZWxz
ZQogICAgICAgICBpZ25vcmluZyA9ICJUaGUgZnJhZ21lbnQgaWRlbnRpZmllciwgaW5jbHVkaW5n
IHRoZSAnIycsIHdpbGwgYmUgaWdub3JlZC4iOwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJUaGUgc291cmNlIGxpc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYSBzb3VyY2Ugd2l0aCBhbiBpbnZh
bGlkIHBhdGg6ICciLCB2YWx1ZSwgIicuICIsIGlnbm9yaW5nKTsKLSAgICBsb2dUb0NvbnNvbGUo
bWVzc2FnZSk7CisgICAgbG9nVG9Db25zb2xlKG1ha2VTdHJpbmcoIlRoZSBzb3VyY2UgbGlzdCBm
b3IgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlICciLCBkaXJlY3RpdmVOYW1lLCAi
JyBjb250YWlucyBhIHNvdXJjZSB3aXRoIGFuIGludmFsaWQgcGF0aDogJyIsIHZhbHVlLCAiJy4g
IiwgaWdub3JpbmcpKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydElu
dmFsaWRTb3VyY2VFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJUaGUgc291cmNlIGxpc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAn
IiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYW4gaW52YWxpZCBzb3VyY2U6ICciLCBzb3Vy
Y2UsICInLiBJdCB3aWxsIGJlIGlnbm9yZWQuIik7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHNvdXJjZSwgIidub25lJyIpKQotICAgICAgICBtZXNzYWdlID0gbWFrZVN0
cmluZyhtZXNzYWdlLCAiIE5vdGUgdGhhdCAnbm9uZScgaGFzIG5vIGVmZmVjdCB1bmxlc3MgaXQg
aXMgdGhlIG9ubHkgZXhwcmVzc2lvbiBpbiB0aGUgc291cmNlIGxpc3QuIik7Ci0gICAgbG9nVG9D
b25zb2xlKG1lc3NhZ2UpOworICAgIGxvZ1RvQ29uc29sZShtYWtlU3RyaW5nKCJUaGUgc291cmNl
IGxpc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSAnIiwgZGlyZWN0aXZl
TmFtZSwgIicgY29udGFpbnMgYW4gaW52YWxpZCBzb3VyY2U6ICciLCBzb3VyY2UsICInLiBJdCB3
aWxsIGJlIGlnbm9yZWQuIiwKKyAgICAgICAgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c291cmNlLCAiJ25vbmUnIikgPyAiIE5vdGUgdGhhdCAnbm9uZScgaGFzIG5vIGVmZmVjdCB1bmxl
c3MgaXQgaXMgdGhlIG9ubHkgZXhwcmVzc2lvbiBpbiB0aGUgc291cmNlIGxpc3QuIiA6ICIiKSk7
CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRNaXNzaW5nUmVwb3J0VVJJ
KGNvbnN0IFN0cmluZyYgcG9saWN5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApp
bmRleCBiY2Q3MDZjOTY0ZjlmZGIxNjk3NDc5ZGY5OWYzODVmZmYyYzBjZjUxLi5kN2I3MDY2ZDIx
NGRhOTE3YTllNDczNDg0OTEwNDViZDk3NWNhODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmNwcApAQCAtMTI4LDEwICsxMjgsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aQogICAgIGRp
cmVjdGl2ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAKICAgICBpZiAoIWNoZWNrRXZhbChkaXJl
Y3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkp
KSkgewotICAgICAgICBTdHJpbmcgZXZhbERpc2FibGVkTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJl
ZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNhdXNlICd1bnNhZmUt
ZXZhbCcgaXMgbm90IGFuIGFsbG93ZWQgc291cmNlIG9mIHNjcmlwdCBpbiB0aGUgZm9sbG93aW5n
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogXCIiLCBkaXJlY3RpdmVzLT5vcGVy
YXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpLT50ZXh0KCksICJc
Ii5cbiIpOwotICAgICAgICBkaXJlY3RpdmVzLT5zZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2Uo
ZXZhbERpc2FibGVkTWVzc2FnZSk7Ci0gICAgICAgIFN0cmluZyB3ZWJBc3NlbWJseURpc2FibGVk
TWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHkgb2Jq
ZWN0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2Ny
aXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBc
IiIsIGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNy
Yy5nZXQoKSktPnRleHQoKSwgIlwiLlxuIik7Ci0gICAgICAgIGRpcmVjdGl2ZXMtPnNldFdlYkFz
c2VtYmx5RGlzYWJsZWRFcnJvck1lc3NhZ2Uod2ViQXNzZW1ibHlEaXNhYmxlZE1lc3NhZ2UpOwor
ICAgICAgICBkaXJlY3RpdmVzLT5zZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UobWFrZVN0cmlu
ZygiUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2UgJ3Vu
c2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Ygc2NyaXB0IGluIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIsIGRpcmVjdGl2ZXMt
Pm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSktPnRleHQo
KSwgIlwiLlxuIikpOworICAgICAgICBkaXJlY3RpdmVzLT5zZXRXZWJBc3NlbWJseURpc2FibGVk
RXJyb3JNZXNzYWdlKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHkg
b2JqZWN0IGJlY2F1c2UgJ3Vuc2FmZS1ldmFsJyBpcyBub3QgYW4gYWxsb3dlZCBzb3VyY2Ugb2Yg
c2NyaXB0IGluIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZl
OiBcIiIsIGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3Njcmlw
dFNyYy5nZXQoKSktPnRleHQoKSwgIlwiLlxuIikpOwogICAgIH0KIAogICAgIGlmIChkaXJlY3Rp
dmVzLT5pc1JlcG9ydE9ubHkoKSAmJiBkaXJlY3RpdmVzLT5yZXBvcnRVUklzKCkuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDliNjI5ZDBlNTkzMTg5YmQ5M2Q1OWZlNzMwNjdhODRlOTc3NTMz
ODAuLjE4NzJlNDJlZGZlZWUxODAzMDA3ZTlkZWRlNzgwYmE4NzhmMWUzYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zODMsMjkgKzM4MiwxMyBAQCBTdHJpbmcgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1RyZWVBc1RleHQoU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpbwogCiBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29uc0FzVGV4dChPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b24+IHJlYXNvbnMpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotCi0gICAg
aWYgKHJlYXNvbnMgJiBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6Rm9yY2VkT25NYWluVGhy
ZWFkKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkZvcmNlZCBvbiBtYWlu
IHRocmVhZCwgIik7Ci0KLSAgICBpZiAocmVhc29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29uOjpIYXNTbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiKTsKLQotICAgIGlmIChyZWFzb25z
ICYgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb246Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2JqZWN0cyB3aXRob3V0IHN1
cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb246Okhhc05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMp
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSGFzIG5vbi1sYXllciB2aWV3
cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCAiKTsKLQotICAgIGlmIChyZWFzb25zICYgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb246OklzSW1hZ2VEb2N1bWVudCkKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7Ci0KLSAgICBpZiAocmVh
c29ucyAmIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpEZXNjZW5kYW50U2Nyb2xsZXJzSGF2
ZVN5bmNocm9ub3VzU2Nyb2xsaW5nKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkhhcyBzbG93IHJlcGFpbnQgZGVzY2VuZGFudCBzY3JvbGxlcnMsICIpOwotCi0gICAgaWYg
KHN0cmluZ0J1aWxkZXIubGVuZ3RoKCkpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuc2hyaW5rKHN0
cmluZ0J1aWxkZXIubGVuZ3RoKCkgLSAyKTsKLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOworICAgIGF1dG8gc3RyaW5nID0gbWFrZVN0cmluZyhyZWFzb25zLmNvbnRhaW5zKFN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uOjpGb3JjZWRPbk1haW5UaHJlYWQpID8gIkZvcmNlZCBv
biBtYWluIHRocmVhZCwgIiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNTbG93UmVwYWludE9iamVjdHMpID8gIkhhcyBzbG93IHJl
cGFpbnQgb2JqZWN0cywgIiA6ICIiLAorICAgICAgICByZWFzb25zLmNvbnRhaW5zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29uOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRT
dXBwb3J0aW5nRml4ZWRMYXllcnMpID8gIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3Rz
IHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIgOiAiIiwKKyAgICAgICAgcmVhc29u
cy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbjo6SGFzTm9uTGF5ZXJWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cykgPyAiSGFzIG5vbi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5l
ZCBvYmplY3RzLCAiIDogIiIsCisgICAgICAgIHJlYXNvbnMuY29udGFpbnMoU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb246OklzSW1hZ2VEb2N1bWVudCkgPyAiSXMgaW1hZ2UgZG9jdW1lbnQsICIg
OiAiIiwKKyAgICAgICAgcmVhc29ucy5jb250YWlucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bjo6RGVzY2VuZGFudFNjcm9sbGVyc0hhdmVTeW5jaHJvbm91c1Njcm9sbGluZykgPyAiSGFzIHNs
b3cgcmVwYWludCBkZXNjZW5kYW50IHNjcm9sbGVycywgIiA6ICIiKTsKKyAgICByZXR1cm4gc3Ry
aW5nLmlzRW1wdHkoKSA/IHN0cmluZyA6IHN0cmluZy5sZWZ0KHN0cmluZy5sZW5ndGgoKSAtIDIp
OwogfQogCiBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29uc0FzVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4
IDVjMWJiZjRlMTVlYThkZjk0NjA4YjBjYzI2OWExNzcxMDQ4NDFiNDYuLjllYzAxNzJhMjFhOThk
YzgwN2E0YzE2Nzc1N2U3MzVhYmUyMzU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwu
Y3BwCkBAIC0xMDA5LDEyICsxMDA5LDExIEBAIFN0cmluZyBEZWNpbWFsOjp0b1N0cmluZygpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIwLiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgiMC4iKTsKICAgICAgICAgZm9yIChpbnQgaSA9IGFkanVzdGVkRXhwb25lbnQgKyAxOyBp
IDwgMDsgKytpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKIAogICAgICAgICBi
dWlsZGVyLmFwcGVuZChkaWdpdHMpOwotCiAgICAgfSBlbHNlIHsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoZGlnaXRzWzBdKTsKICAgICAgICAgd2hpbGUgKGNvZWZmaWNpZW50TGVuZ3RoID49IDIg
JiYgZGlnaXRzW2NvZWZmaWNpZW50TGVuZ3RoIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggYmFl
YjE0YmRmNDE3MTNlNGQ4YWYxYjc3OTVkZjYwZTdkZDRhOWNmNi4uYmRhZGE1NGUwYzBhM2U0ZmFl
MGVkNjFhMTcxMTVhNjA2NjgyMDM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCkBAIC0xNDUsMTggKzE0NSwxMiBAQCBk
b3VibGUgVGltaW5nRnVuY3Rpb246OnRyYW5zZm9ybVRpbWUoZG91YmxlIGlucHV0VGltZSwgZG91
YmxlIGR1cmF0aW9uLCBib29sIGJlZgogCiBFeGNlcHRpb25PcjxSZWZQdHI8VGltaW5nRnVuY3Rp
b24+PiBUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlRnJvbUNTU1RleHQoY29uc3QgU3RyaW5nJiBjc3NU
ZXh0KQogewotICAgIFN0cmluZ0J1aWxkZXIgY3NzU3RyaW5nOwotICAgIGNzc1N0cmluZy5hcHBl
bmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24pKTsKLSAgICBjc3NTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBjc3NTdHJpbmcu
YXBwZW5kKGNzc1RleHQpOwotICAgIGF1dG8gc3R5bGVQcm9wZXJ0aWVzID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7Ci0gICAgc3R5bGVQcm9wZXJ0aWVzLT5wYXJzZURlY2xhcmF0
aW9uKGNzc1N0cmluZy50b1N0cmluZygpLCBDU1NQYXJzZXJDb250ZXh0KEhUTUxTdGFuZGFyZE1v
ZGUpKTsKLQotICAgIGlmIChhdXRvIGNzc1ZhbHVlID0gc3R5bGVQcm9wZXJ0aWVzLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHRpbWluZ0Z1bmN0aW9uID0gY3JlYXRlRnJvbUNTU1ZhbHVlKCpjc3NWYWx1
ZS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdGltaW5nRnVuY3Rpb247CisgICAgYXV0byBw
cm9wZXJ0aWVzID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgcHJvcGVy
dGllcy0+cGFyc2VEZWNsYXJhdGlvbihtYWtlU3RyaW5nKCJhbmltYXRpb24tdGltaW5nLWZ1bmN0
aW9uOiIsIGNzc1RleHQpLCBDU1NQYXJzZXJDb250ZXh0KEhUTUxTdGFuZGFyZE1vZGUpKTsKKyAg
ICBpZiAoYXV0byB2YWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpIHsKKyAgICAgICAgaWYgKGF1dG8gZnVuY3Rp
b24gPSBjcmVhdGVGcm9tQ1NTVmFsdWUoKnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKGZ1bmN0aW9uKTsKICAgICB9Ci0gICAgCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uY3BwCmluZGV4IDkzODJhYjM1OGU3NDIyMGQ5OTM2MzYwNzRlZDZjOWFkZGY2NjBhMzgu
LmZjMWZmZmE5NmE1NGVmOThkOGQyNDBkZDZhYTU2MTVmMDgxOGRhZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOSArMTcx
LDkgQEAgYm9vbCBIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZh
dGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGkKICAgICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJ
bXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbExlZnQp
OwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+
Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsKICNlbHNlCi0gICAgU3RyaW5nIHJlc291
cmNlTmFtZSA9IG1ha2VTdHJpbmcoIklSQ18iLCBzdWJqZWN0TmFtZSwgIl9DX1IwMTk1X1QiLCBw
YWQoJzAnLCAzLCBhemltdXRoKSwgIl9QIiwgcGFkKCcwJywgMywgcG9zaXRpdmVFbGV2YXRpb24p
KTsKKyAgICBhdXRvIHJlc291cmNlTmFtZSA9IG1ha2VTdHJpbmcoIklSQ18iLCBzdWJqZWN0TmFt
ZSwgIl9DX1IwMTk1X1QiLCBwYWQoJzAnLCAzLCBhemltdXRoKSwgIl9QIiwgcGFkKCcwJywgMywg
cG9zaXRpdmVFbGV2YXRpb24pKS51dGY4KCk7CiAKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGltcHVs
c2VSZXNwb25zZShBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lLnV0
ZjgoKS5kYXRhKCksIHNhbXBsZVJhdGUpKTsKKyAgICBSZWZQdHI8QXVkaW9CdXM+IGltcHVsc2VS
ZXNwb25zZShBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lLmRhdGEo
KSwgc2FtcGxlUmF0ZSkpOwogCiAgICAgQVNTRVJUKGltcHVsc2VSZXNwb25zZS5nZXQoKSk7CiAg
ICAgaWYgKCFpbXB1bHNlUmVzcG9uc2UuZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAppbmRleCAxNzZlM2M5ODRiY2NkNzExNWEwOTc0NDEx
NTViYTc0MTc4OTBlNjI5Li5iOTA0NTI3N2E0ZWU2OWE0Mjc2MWEyODMxMjgyMDBiNjkxZDY4OTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAK
QEAgLTc4LDE2ICs3OCwxNCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtVmVyc2lvbkZv
clVBU3RyaW5nKCkKIHN0YXRpYyBTdHJpbmcgYnVpbGRVc2VyQWdlbnRTdHJpbmcoY29uc3QgVXNl
ckFnZW50UXVpcmtzJiBxdWlya3MpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB1YVN0cmluZzsKLSAg
ICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJNb3ppbGxhLzUuMCAiKTsKLSAgICB1YVN0cmluZy5h
cHBlbmQoJygnKTsKKyAgICB1YVN0cmluZy5hcHBlbmQoIk1vemlsbGEvNS4wICgiKTsKIAogICAg
IGlmIChxdWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRm
b3JtKSkKICAgICAgICAgdWFTdHJpbmcuYXBwZW5kKFVzZXJBZ2VudFF1aXJrczo6c3RyaW5nRm9y
UXVpcmsoVXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRmb3JtKSk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHVhU3RyaW5nLmFwcGVuZChwbGF0Zm9ybUZvclVBU3RyaW5nKCkpOwotICAg
ICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCI7ICIpOworICAgICAgICB1YVN0cmluZy5hcHBl
bmQocGxhdGZvcm1Gb3JVQVN0cmluZygpLCAiOyAiKTsKICNpZiBkZWZpbmVkKFVTRVJfQUdFTlRf
QlJBTkRJTkcpCi0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoVVNFUl9BR0VOVF9CUkFO
RElORyAiOyAiKTsKKyAgICAgICAgdWFTdHJpbmcuYXBwZW5kKFVTRVJfQUdFTlRfQlJBTkRJTkcg
IjsgIik7CiAjZW5kaWYKICAgICAgICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtVmVyc2lvbkZv
clVBU3RyaW5nKCkpOwogICAgIH0KQEAgLTk3LDIxICs5NSwyMCBAQCBzdGF0aWMgU3RyaW5nIGJ1
aWxkVXNlckFnZW50U3RyaW5nKGNvbnN0IFVzZXJBZ2VudFF1aXJrcyYgcXVpcmtzKQogICAgICAg
ICByZXR1cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKICAgICB9CiAKLSAgICB1YVN0cmluZy5hcHBl
bmRMaXRlcmFsKCIpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgIik7
CisgICAgdWFTdHJpbmcuYXBwZW5kKCIpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlr
ZSBHZWNrbykgIik7CiAKICAgICAvLyBOb3RlIHRoYXQgQ2hyb21lIFVBcyBhZHZlcnRpc2UgKmJv
dGgqIENocm9tZS9YIGFuZCBTYWZhcmkvWCwgYnV0IGl0IGRvZXMKICAgICAvLyBub3QgYWR2ZXJ0
aXNlIFZlcnNpb24vWC4KICAgICBpZiAocXVpcmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6
TmVlZHNDaHJvbWVCcm93c2VyKSkgewotICAgICAgICB1YVN0cmluZy5hcHBlbmQoVXNlckFnZW50
UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3Nl
cikpOwotICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIgIik7CisgICAgICAgIHVhU3Ry
aW5nLmFwcGVuZChVc2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJr
czo6TmVlZHNDaHJvbWVCcm93c2VyKSwgJyAnKTsKICAgICAvLyBWZXJzaW9uL1ggaXMgbWFuZGF0
b3J5ICpiZWZvcmUqIFNhZmFyaS9YIHRvIGJlIGEgdmFsaWQgU2FmYXJpIFVBLiBTZWUKICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDAzIGZvciBkZXRh
aWxzLgogICAgIH0gZWxzZQotICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJWZXJzaW9u
LzE0LjAgIik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZCgiVmVyc2lvbi8xNC4wICIpOwogCiAg
ICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAgICAg
ICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJNb2JpbGUgIik7Ci0gICAgdWFTdHJpbmcuYXBwZW5k
TGl0ZXJhbCgiU2FmYXJpLzYwNS4xLjE1Iik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZCgiTW9i
aWxlICIpOworICAgIHVhU3RyaW5nLmFwcGVuZCgiU2FmYXJpLzYwNS4xLjE1Iik7CiAKICAgICBy
ZXR1cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKIH0KQEAgLTE2OSw0ICsxNjYsMyBAQCBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuY3BwCmluZGV4IGY3MDNkMDQ1Yjc4NjZiYTk3ODhhMTc2MjRiOGNjZjY5YjJmN2Y0NjIu
LmVmYjE0ZjRmM2Q4YjhkM2QyYzUzMmNlNmNhNDFmMzUwOWIwOTRlNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1MSw3ICsxNTEs
NyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRl
cmFsKCI8Yj4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOwogICAg
ICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBSZWY8SW5iYW5kR2Vu
ZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMo
Q0ZBdHRyaWJ1dAogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+
KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8aT4iKTsKKyAgICAg
ICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0Vu
ZCA9ICI8L2k+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29s
ZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAg
ICB0YWdTdGFydC5hcHBlbmRMaXRlcmFsKCI8dT4iKTsKKyAgICAgICAgICAgICAgICB0YWdTdGFy
dC5hcHBlbmQoIjx1PiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0Vu
ZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CmluZGV4IDc4Yzc5Y2Q3ZTg5ZTkyYzI2YzRmZTZjNDdkZTk1N2ZmZDhmZjk2YzQuLjE3OTRjMDY3
YjFiYjYwZmU0OWQ0ZThhMzYyMDBkNzcyYTMzMmU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTY0
OSw4ICsxNjQ5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICAgICAgY29uc3RleHBy
IGF1dG8gd2FzaEJvcmRlckNvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUoMTAw
KTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIgPSBjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7Ci0gICAg
ICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBUaWxlIFdhc2ggTGF5ZXIgMHgi
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwotICAgICAgICBtX3Zpc2libGVUaWxlV2Fz
aExheWVyLT5zZXROYW1lKG5hbWUpOworICAgICAgICBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5z
ZXROYW1lKG1ha2VTdHJpbmcoIlZpc2libGUgVGlsZSBXYXNoIExheWVyIDB4IiwgaGV4KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3Zpc2libGVUaWxlV2FzaExheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpLCBMb3dlcmNhc2UpKSk7CiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNl
dEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CiAgICAgICAgIG1fdmlzaWJsZVRp
bGVXYXNoTGF5ZXItPnNldEJvcmRlckNvbG9yKHdhc2hCb3JkZXJDb2xvcik7CiAgICAgICAgIG1f
dmlzaWJsZVRpbGVXYXNoTGF5ZXItPnNldEJvcmRlcldpZHRoKDgpOwpAQCAtMzM4Nyw3ICszMzg2
LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25z
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICBmb3IgKGludCBpbnRlcm5hbEZpbHRl
clByb3BlcnR5SW5kZXggPSAwOyBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXggPCBudW1Bbmlt
YXRlZFByb3BlcnRpZXM7ICsraW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSB7CiAgICAgICAg
IGJvb2wgdmFsdWVzT0s7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFu
aW1hdGlvbjsKLSAgICAgICAgU3RyaW5nIGtleVBhdGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZp
bHRlcl8iLCBhbmltYXRpb25JbmRleCwgJy4nLCBQbGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRG
aWx0ZXJQcm9wZXJ0eU5hbWUoZmlsdGVyT3AsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkp
OworICAgICAgICBhdXRvIGtleVBhdGggPSBtYWtlU3RyaW5nKCJmaWx0ZXJzLmZpbHRlcl8iLCBh
bmltYXRpb25JbmRleCwgJy4nLCBQbGF0Zm9ybUNBRmlsdGVyczo6YW5pbWF0ZWRGaWx0ZXJQcm9w
ZXJ0eU5hbWUoZmlsdGVyT3AsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkpOwogICAgICAg
ICAKICAgICAgICAgaWYgKGlzS2V5ZnJhbWUodmFsdWVMaXN0KSkgewogICAgICAgICAgICAgY2FB
bmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIGtleVBhdGgsIGZh
bHNlLCBrZXlmcmFtZXNTaG91bGRVc2VBbmltYXRpb25XaWRlVGltaW5nRnVuY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwCmluZGV4IDg0MjdmOWNiYjQyZDRjN2ExNzU3Y2EwMWNiNmU2YWIxY2U5ZjM4M2MuLjRm
YmFhN2ZiZGFhMTQ3NDQ2M2MzZTg4ZDZmZGM4NWFmNTNlNWMxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAg
LTYxNSw5ICs2MTUsOSBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGlt
ZXJGaXJlZCgpCiAgICAgLy8gSWYgd2UgYXJlIG5vdCB2aXNpYmxlIGdldCByaWQgb2YgdGhlIHpv
b21lZC1vdXQgdGlsZXMuCiAgICAgY2xlYXJab29tZWRPdXRUaWxlR3JpZCgpOwogCi0gICAgVGls
ZUdyaWQ6OlRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kgPSAoc2hvdWxkQWdn
cmVzc2l2ZWx5UmV0YWluVGlsZXMoKSA/IDAgOiBUaWxlR3JpZDo6UHJ1bmVTZWNvbmRhcnlUaWxl
cykgfCBUaWxlR3JpZDo6VW5wYXJlbnRBbGxUaWxlczsKLQotICAgIHRpbGVHcmlkKCkucmV2YWxp
ZGF0ZVRpbGVzKHZhbGlkYXRpb25Qb2xpY3kpOworICAgIHRpbGVHcmlkKCkucmV2YWxpZGF0ZVRp
bGVzKHNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKCkKKyAgICAgICAgPyBPcHRpb25TZXQg
eyBUaWxlR3JpZDo6UHJ1bmVTZWNvbmRhcnlUaWxlcywgVGlsZUdyaWQ6OlVucGFyZW50QWxsVGls
ZXMgfQorICAgICAgICA6IE9wdGlvblNldCB7IFRpbGVHcmlkOjpVbnBhcmVudEFsbFRpbGVzIH0p
OwogfQogCiB2b2lkIFRpbGVDb250cm9sbGVyOjpkaWRSZXZhbGlkYXRlVGlsZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCmluZGV4IDAz
YjAwYmZiY2Q1Y2E5ZjY5NDE5ZWM1YjExZTkzMWFjYjgxYmQzYWEuLjlkOGZiYjFhMGYwZGUzNDcy
YTVjYWNlZjdmYzdlNTk3ZWI2YTI2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTQ1LDIyICs0NSwxNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIFN0cmluZyB2YWxpZGF0aW9u
UG9saWN5QXNTdHJpbmcoVGlsZUdyaWQ6OlRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Q
b2xpY3kpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiWyIpOwotICAgIGlmICh2YWxpZGF0aW9uUG9saWN5ICYgVGlsZUdyaWQ6OlBydW5l
U2Vjb25kYXJ5VGlsZXMpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgicHJ1bmUgc2Vj
b25kYXJ5Iik7Ci0KLSAgICBpZiAodmFsaWRhdGlvblBvbGljeSAmIFRpbGVHcmlkOjpVbnBhcmVu
dEFsbFRpbGVzKSB7Ci0gICAgICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ1bnBhcmVudCBhbGwiKTsKLSAgICB9Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJd
Iik7CiAKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworc3RhdGljIFN0cmluZyB2YWxp
ZGF0aW9uUG9saWN5QXNTdHJpbmcoT3B0aW9uU2V0PFRpbGVHcmlkOjpWYWxpZGF0aW9uUG9saWN5
RmxhZz4gcG9saWN5KQoreworICAgIHJldHVybiBtYWtlU3RyaW5nKCdbJywKKyAgICAgICAgcG9s
aWN5LmNvbnRhaW5zKFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVzKSA/ICJwcnVuZSBzZWNv
bmRhcnkiIDogIiIsCisgICAgICAgIHBvbGljeS5jb250YWluc0FsbCh7IFRpbGVHcmlkOjpQcnVu
ZVNlY29uZGFyeVRpbGVzLCBUaWxlR3JpZDo6VW5wYXJlbnRBbGxUaWxlcyB9KSA/ICIsICIgOiAi
IiwKKyAgICAgICAgcG9saWN5LmNvbnRhaW5zKFRpbGVHcmlkOjpQcnVuZVNlY29uZGFyeVRpbGVz
KSA/ICJ1bnBhcmVudCBhbGwiIDogIiIsCisgICAgICAgICddJyk7CiB9CisKICNlbmRpZgogCiBU
aWxlR3JpZDo6VGlsZUdyaWQoVGlsZUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCkBAIC0xMzcsOCAr
MTMxLDcgQEAgdm9pZCBUaWxlR3JpZDo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgICAgICAgICBmb3IgKGludCB5ID0gdG9wTGVmdC55KCk7IHkgPD0gYm90
dG9tUmlnaHQueSgpOyArK3kpIHsKICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gdG9wTGVm
dC54KCk7IHggPD0gYm90dG9tUmlnaHQueCgpOyArK3gpIHsKICAgICAgICAgICAgICAgICAgICAg
VGlsZUluZGV4IHRpbGVJbmRleCh4LCB5KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIFRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKHRpbGVJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBtX3RpbGVzLmZpbmQodGlsZUluZGV4
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IG1fdGlsZXMuZW5kKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0KHRpbGVJbmRleCwgaXQt
PnZhbHVlLCByZXBhaW50UmVjdEluVGlsZUNvb3JkcywgbV9wcmltYXJ5VGlsZUNvdmVyYWdlUmVj
dCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQ3LDggKzE0MCw4IEBAIHZvaWQgVGlsZUdyaWQ6
OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVn
aW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRU
aWxlTmVlZHNEaXNwbGF5SW5SZWN0KGl0LT5rZXksIGl0LT52YWx1ZSwgcmVwYWludFJlY3RJblRp
bGVDb29yZHMsIG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3QpOworICAgIGZvciAoYXV0byYgZW50
cnkgOiBtX3RpbGVzKQorICAgICAgICBzZXRUaWxlTmVlZHNEaXNwbGF5SW5SZWN0KGVudHJ5Lmtl
eSwgZW50cnkudmFsdWUsIHJlcGFpbnRSZWN0SW5UaWxlQ29vcmRzLCBtX3ByaW1hcnlUaWxlQ292
ZXJhZ2VSZWN0KTsKIH0KIAogdm9pZCBUaWxlR3JpZDo6ZHJvcFRpbGVzSW5SZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCkBAIC0yMDMsOSArMTk2LDcgQEAgdm9pZCBUaWxlR3JpZDo6dXBkYXRlVGls
ZUxheWVyUHJvcGVydGllcygpCiAgICAgYm9vbCBvcGFxdWUgPSBtX2NvbnRyb2xsZXIudGlsZXNB
cmVPcGFxdWUoKTsKICAgICBDb2xvciB0aWxlRGVidWdCb3JkZXJDb2xvciA9IG1fY29udHJvbGxl
ci50aWxlRGVidWdCb3JkZXJDb2xvcigpOwogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRo
ID0gbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlcldpZHRoKCk7Ci0KLSAgICBmb3IgKFRpbGVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgVGlsZUluZm8mIHRpbGVJbmZv
ID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgdGlsZUluZm8gOiBtX3RpbGVzLnZhbHVlcygp
KSB7CiAgICAgICAgIHRpbGVJbmZvLmxheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcoYWNjZWxl
cmF0ZXNEcmF3aW5nKTsKICAgICAgICAgdGlsZUluZm8ubGF5ZXItPnNldFdhbnRzRGVlcENvbG9y
QmFja2luZ1N0b3JlKGRlZXBDb2xvcik7CiAgICAgICAgIHRpbGVJbmZvLmxheWVyLT5zZXRTdXBw
b3J0c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0KHN1YnBpeGVsQW50aWFsaWFzZWRUZXh0KTsKQEAg
LTI5MiwxMiArMjgzLDEwIEBAIGJvb2wgVGlsZUdyaWQ6OmdldFRpbGVJbmRleFJhbmdlRm9yUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0LCBUaWxlSW5kZXgmIHRvcExlZnQsCiB1bnNpZ25lZCBUaWxl
R3JpZDo6YmxhbmtQaXhlbENvdW50KCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybUxheWVyTGlzdCB0
aWxlcyhtX3RpbGVzLnNpemUoKSk7Ci0KLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgaWYgKFBsYXRmb3JtTGF5ZXIgKmxheWVyID0gaXQtPnZhbHVlLmxheWVy
LT5wbGF0Zm9ybUxheWVyKCkpCisgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMo
KSkgeworICAgICAgICBpZiAoYXV0byBsYXllciA9IHRpbGUubGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSkKICAgICAgICAgICAgIHRpbGVzLmFwcGVuZChsYXllcik7CiAgICAgfQotCiAgICAgcmV0dXJu
IFRpbGVDb250cm9sbGVyOjpibGFua1BpeGVsQ291bnRGb3JUaWxlcyh0aWxlcywgbV9jb250cm9s
bGVyLnZpc2libGVSZWN0KCksIEludFBvaW50KDAsIDApKTsKIH0KIApAQCAtMzA2LDcgKzI5NSw3
IEBAIHZvaWQgVGlsZUdyaWQ6OnJlbW92ZVRpbGVzKFZlY3RvcjxUaWxlR3JpZDo6VGlsZUluZGV4
PiYgdG9SZW1vdmUpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b1JlbW92ZS5zaXplKCk7
ICsraSkgewogICAgICAgICBUaWxlSW5mbyB0aWxlSW5mbyA9IG1fdGlsZXMudGFrZSh0b1JlbW92
ZVtpXSk7CiAgICAgICAgIHRpbGVJbmZvLmxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwot
ICAgICAgICBtX3RpbGVSZXBhaW50Q291bnRzLnJlbW92ZSh0aWxlSW5mby5sYXllci5nZXQoKSk7
CisgICAgICAgIG1fdGlsZVJlcGFpbnRDb3VudHMucmVtb3ZlQWxsKHRpbGVJbmZvLmxheWVyLmdl
dCgpKTsKICAgICAgICAgdGlsZUluZm8ubGF5ZXItPm1vdmVUb0xheWVyUG9vbCgpOwogICAgIH0K
IH0KQEAgLTMyOCw3ICszMTcsNyBAQCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVBbGxTZWNvbmRhcnlU
aWxlcygpCiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV90aWxlcykgewogICAgICAgICBjb25z
dCBUaWxlSW5mbyYgdGlsZUluZm8gPSBlbnRyeS52YWx1ZTsKLSAgICAgICAgaWYgKHRpbGVJbmZv
LmNvaG9ydCA9PSBWaXNpYmxlVGlsZUNvaG9ydCkKKyAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9y
dCA9PSB2aXNpYmxlVGlsZUNvaG9ydCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0
aWxlc1RvUmVtb3ZlLmFwcGVuZChlbnRyeS5rZXkpOwogICAgIH0KQEAgLTMzOCw3ICszMjcsNyBA
QCB2b2lkIFRpbGVHcmlkOjpyZW1vdmVBbGxTZWNvbmRhcnlUaWxlcygpCiAKIHZvaWQgVGlsZUdy
aWQ6OnJlbW92ZVRpbGVzSW5Db2hvcnQoVGlsZUNvaG9ydCBjb2hvcnQpCiB7Ci0gICAgQVNTRVJU
KGNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCk7CisgICAgQVNTRVJUKGNvaG9ydCAhPSB2aXNp
YmxlVGlsZUNvaG9ydCk7CiAgICAgVmVjdG9yPFRpbGVJbmRleD4gdGlsZXNUb1JlbW92ZTsKIAog
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3RpbGVzKSB7CkBAIC0zNTEsNyArMzQwLDcgQEAgdm9p
ZCBUaWxlR3JpZDo6cmVtb3ZlVGlsZXNJbkNvaG9ydChUaWxlQ29ob3J0IGNvaG9ydCkKICAgICBy
ZW1vdmVUaWxlcyh0aWxlc1RvUmVtb3ZlKTsKIH0KIAotdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0
ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCit2b2lkIFRpbGVH
cmlkOjpyZXZhbGlkYXRlVGlsZXMoT3B0aW9uU2V0PFZhbGlkYXRpb25Qb2xpY3lGbGFnPiB2YWxp
ZGF0aW9uUG9saWN5KQogewogICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QgPSBtX2NvbnRyb2xs
ZXIuY292ZXJhZ2VSZWN0KCk7CiAgICAgSW50UmVjdCBib3VuZHMgPSBtX2NvbnRyb2xsZXIuYm91
bmRzKCk7CkBAIC0zODMsNyArMzcyLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0ZVRpbGVz
KFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgIEludFJlY3Qg
dGlsZVJlY3QgPSByZWN0Rm9yVGlsZUluZGV4KHRpbGVJbmRleCk7CiAKICAgICAgICAgaWYgKHRp
bGVSZWN0LmludGVyc2VjdHMoY292ZXJhZ2VSZWN0SW5UaWxlQ29vcmRzKSkgewotICAgICAgICAg
ICAgdGlsZUluZm8uY29ob3J0ID0gVmlzaWJsZVRpbGVDb2hvcnQ7CisgICAgICAgICAgICB0aWxl
SW5mby5jb2hvcnQgPSB2aXNpYmxlVGlsZUNvaG9ydDsKICAgICAgICAgICAgIGlmICh0aWxlSW5m
by5oYXNTdGFsZUNvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogc3RvcmUgYSBk
aXJ0eSByZWdpb24gcGVyIGxheWVyPwogICAgICAgICAgICAgICAgIHRpbGVMYXllci0+c2V0TmVl
ZHNEaXNwbGF5KCk7CkBAIC0zOTEsNyArMzgwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cmV2YWxpZGF0
ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBZGQgdG8gdGhlIGN1cnJlbnRD
b2hvcnQgaWYgbm90IGFscmVhZHkgaW4gb25lLgotICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNv
aG9ydCA9PSBWaXNpYmxlVGlsZUNvaG9ydCkgeworICAgICAgICAgICAgaWYgKHRpbGVJbmZvLmNv
aG9ydCA9PSB2aXNpYmxlVGlsZUNvaG9ydCkgewogICAgICAgICAgICAgICAgIHRpbGVJbmZvLmNv
aG9ydCA9IGN1cnJDb2hvcnQ7CiAgICAgICAgICAgICAgICAgKyt0aWxlc0luQ29ob3J0OwogICAg
ICAgICAgICAgICAgIHRpbGVMYXllci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKQEAgLTYzMCwx
NiArNjE5LDEzIEBAIEludFJlY3QgVGlsZUdyaWQ6OmV4dGVudCgpIGNvbnN0CiBkb3VibGUgVGls
ZUdyaWQ6OnJldGFpbmVkVGlsZUJhY2tpbmdTdG9yZU1lbW9yeSgpIGNvbnN0CiB7CiAgICAgZG91
YmxlIHRvdGFsQnl0ZXMgPSAwOwotICAgIAotICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBjb25zdCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+dmFsdWU7Cisg
ICAgZm9yIChhdXRvJiB0aWxlSW5mbyA6IG1fdGlsZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYg
KHRpbGVJbmZvLmxheWVyLT5zdXBlcmxheWVyKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBi
b3VuZHMgPSB0aWxlSW5mby5sYXllci0+Ym91bmRzKCk7CiAgICAgICAgICAgICBkb3VibGUgY29u
dGVudHNTY2FsZSA9IHRpbGVJbmZvLmxheWVyLT5jb250ZW50c1NjYWxlKCk7CiAgICAgICAgICAg
ICB0b3RhbEJ5dGVzICs9IDQgKiBib3VuZHMud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUgKiBib3Vu
ZHMuaGVpZ2h0KCkgKiBjb250ZW50c1NjYWxlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0
dXJuIHRvdGFsQnl0ZXM7CiB9CiAKQEAgLTY2MSw4ICs2NDcsNyBAQCB2b2lkIFRpbGVHcmlkOjpk
cmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3Vu
ZHMpIGNvbgogICAgIENHRmxvYXQgY29udGV4dFNjYWxlID0gc2NhbGVGYWN0b3IgLyBtX3NjYWxl
OwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIGNvbnRleHRTY2FsZSwgY29udGV4dFNj
YWxlKTsKICAgICAKLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxl
cy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgY29uc3QgVGlsZUluZm8mIHRpbGVJbmZvID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYg
dGlsZUluZm8gOiBtX3RpbGVzLnZhbHVlcygpKSB7CiAgICAgICAgIFBsYXRmb3JtQ0FMYXllciog
dGlsZUxheWVyID0gdGlsZUluZm8ubGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgQ0dGbG9hdCByZWQg
PSAxOwpAQCAtNjczLDcgKzY1OCw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdUaWxlTWFwQ29udGVu
dHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykgY29uCiAgICAgICAg
ICAgICByZWQgPSAwLjI1OwogICAgICAgICAgICAgZ3JlZW4gPSAwLjEyNTsKICAgICAgICAgICAg
IGJsdWUgPSAwOwotICAgICAgICB9IGVsc2UgaWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNz
aXZlbHlSZXRhaW5UaWxlcygpICYmIHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9y
dCkgeworICAgICAgICB9IGVsc2UgaWYgKG1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlS
ZXRhaW5UaWxlcygpICYmIHRpbGVJbmZvLmNvaG9ydCAhPSB2aXNpYmxlVGlsZUNvaG9ydCkgewog
ICAgICAgICAgICAgcmVkID0gMC44OwogICAgICAgICAgICAgZ3JlZW4gPSAwLjg7CiAgICAgICAg
ICAgICBibHVlID0gMC44OwpAQCAtNjgyLDcgKzY2Nyw3IEBAIHZvaWQgVGlsZUdyaWQ6OmRyYXdU
aWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBsYXllckJvdW5kcykg
Y29uCiAgICAgICAgIFRpbGVDb2hvcnQgbmV3ZXN0Q29ob3J0ID0gbmV3ZXN0VGlsZUNvaG9ydCgp
OwogICAgICAgICBUaWxlQ29ob3J0IG9sZGVzdENvaG9ydCA9IG9sZGVzdFRpbGVDb2hvcnQoKTsK
IAotICAgICAgICBpZiAoIW1fY29udHJvbGxlci5zaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxl
cygpICYmIHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCAmJiBuZXdlc3RDb2hv
cnQgPiBvbGRlc3RDb2hvcnQpCisgICAgICAgIGlmICghbV9jb250cm9sbGVyLnNob3VsZEFnZ3Jl
c3NpdmVseVJldGFpblRpbGVzKCkgJiYgdGlsZUluZm8uY29ob3J0ICE9IHZpc2libGVUaWxlQ29o
b3J0ICYmIG5ld2VzdENvaG9ydCA+IG9sZGVzdENvaG9ydCkKICAgICAgICAgICAgIGFscGhhID0g
MSAtIChzdGF0aWNfY2FzdDxmbG9hdD4oKG5ld2VzdENvaG9ydCAtIHRpbGVJbmZvLmNvaG9ydCkp
IC8gKG5ld2VzdENvaG9ydCAtIG9sZGVzdENvaG9ydCkpOwogCiAgICAgICAgIENHQ29udGV4dFNl
dFJHQkZpbGxDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CkBAIC03MDEs
MTIgKzY4NiwxMyBAQCB2b2lkIFRpbGVHcmlkOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpIGNvbgogCiAgICAgICAgIENHQ29udGV4
dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAwLCAwLCAwLCAwLjUpOwogCi0gICAgICAgIFN0cmlu
ZyByZXBhaW50Q291bnQgPSBTdHJpbmc6Om51bWJlcihtX3RpbGVSZXBhaW50Q291bnRzLmdldCh0
aWxlTGF5ZXIpKTsKLQogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCisg
ICAgICAgIGF1dG8gcmVwYWludENvdW50ID0gbV90aWxlUmVwYWludENvdW50cy5jb3VudCh0aWxl
TGF5ZXIpOworICAgICAgICBjaGFyIHJlcGFpbnRDb3VudENoYXJhY3RlcnNbbGVuZ3RoT2ZJbnRl
Z2VyQXNTdHJpbmcoc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZShyZXBhaW50Q291bnQpPjo6
bWF4KCkpXTsKKyAgICAgICAgd3JpdGVJbnRlZ2VyVG9CdWZmZXIocmVwYWludENvdW50LCByZXBh
aW50Q291bnRDaGFyYWN0ZXJzKTsKICAgICAgICAgdGlsZUxheWVyLT5kcmF3VGV4dEF0UG9pbnQo
Y29udGV4dCwgZnJhbWUub3JpZ2luLnggKyA2NCwgZnJhbWUub3JpZ2luLnkgKyAxOTIsIENHU2l6
ZU1ha2UoMywgLTMpLCA1OCwKLSAgICAgICAgICAgIHJlcGFpbnRDb3VudC5hc2NpaSgpLmRhdGEo
KSwgcmVwYWludENvdW50Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJlcGFpbnRDb3VudENoYXJh
Y3RlcnMsIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKHJlcGFpbnRDb3VudCkpOwogCiAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiAgICAgfQpAQCAtNzgxLDI5ICs3Njcs
MTkgQEAgYm9vbCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25z
dAogCiBpbnQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChQbGF0Zm9ybUNB
TGF5ZXIqIHBsYXRmb3JtQ0FMYXllcikgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvIGl0ID0gbV90
aWxlUmVwYWludENvdW50cy5maW5kKHBsYXRmb3JtQ0FMYXllcik7Ci0gICAgcmV0dXJuIGl0ICE9
IG1fdGlsZVJlcGFpbnRDb3VudHMuZW5kKCkgPyBpdC0+dmFsdWUgOiAwOworICAgIHJldHVybiBt
X3RpbGVSZXBhaW50Q291bnRzLmNvdW50KHBsYXRmb3JtQ0FMYXllcik7CiB9CiAKIGludCBUaWxl
R3JpZDo6cGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KFBsYXRmb3JtQ0FMYXll
ciogcGxhdGZvcm1DQUxheWVyKQogewotICAgIGludCByZXBhaW50Q291bnQgPSAwOwotCi0gICAg
aWYgKG1fdGlsZVJlcGFpbnRDb3VudHMuY29udGFpbnMocGxhdGZvcm1DQUxheWVyKSkKLSAgICAg
ICAgcmVwYWludENvdW50ID0gbV90aWxlUmVwYWludENvdW50cy5nZXQocGxhdGZvcm1DQUxheWVy
KTsKLQotICAgIG1fdGlsZVJlcGFpbnRDb3VudHMuc2V0KHBsYXRmb3JtQ0FMYXllciwgKytyZXBh
aW50Q291bnQpOwotCi0gICAgcmV0dXJuIHJlcGFpbnRDb3VudDsKKyAgICByZXR1cm4gbV90aWxl
UmVwYWludENvdW50cy5hZGQocGxhdGZvcm1DQUxheWVyKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBUaWxlR3JpZDo6cmVtb3ZlVW5wYXJlbnRl
ZFRpbGVzTm93KCkKIHsKLSAgICB3aGlsZSAoIW1fY29ob3J0TGlzdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgVGlsZUNvaG9ydEluZm8gZmlyc3RDb2hvcnQgPSBtX2NvaG9ydExpc3QudGFrZUZpcnN0
KCk7Ci0gICAgICAgIHJlbW92ZVRpbGVzSW5Db2hvcnQoZmlyc3RDb2hvcnQuY29ob3J0KTsKLSAg
ICB9CisgICAgd2hpbGUgKCFtX2NvaG9ydExpc3QuaXNFbXB0eSgpKQorICAgICAgICByZW1vdmVU
aWxlc0luQ29ob3J0KG1fY29ob3J0TGlzdC50YWtlRmlyc3QoKS5jb2hvcnQpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oCmlu
ZGV4IDQ4MGZkMGE5N2RjZTMwNWFhZGNmOWM3NTU1OGNlNGU4NWM3YjJjYWUuLjI1N2JhNTk4MzRh
Y2Q2ZGNhN2ViM2JkZWNmNmNkMTAxZDM1M2ViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC00NSw5ICs0NSwxMCBAQCBjbGFzcyBQbGF0Zm9y
bUNBTGF5ZXI7CiBjbGFzcyBUaWxlQ29udHJvbGxlcjsKIAogY2xhc3MgVGlsZUdyaWQgOiBwdWJs
aWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxl
R3JpZCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRpbGVHcmlkKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBU
aWxlR3JpZChUaWxlQ29udHJvbGxlciYpOworICAgIGV4cGxpY2l0IFRpbGVHcmlkKFRpbGVDb250
cm9sbGVyJik7CiAgICAgflRpbGVHcmlkKCk7CiAKICNpZiBVU0UoQ0EpCkBAIC02NywxMiArNjgs
MTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBwcmVwb3B1bGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICBlbnVtIFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3MgeworICAgIGVudW0gVmFs
aWRhdGlvblBvbGljeUZsYWcgOiB1aW50OF90IHsKICAgICAgICAgUHJ1bmVTZWNvbmRhcnlUaWxl
cyA9IDEgPDwgMCwKICAgICAgICAgVW5wYXJlbnRBbGxUaWxlcyAgICA9IDEgPDwgMQogICAgIH07
Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUaWxlVmFsaWRhdGlvblBvbGljeTsKLSAgICB2b2lkIHJl
dmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSA9IDApOworICAgIHZvaWQgcmV2YWxp
ZGF0ZVRpbGVzKE9wdGlvblNldDxWYWxpZGF0aW9uUG9saWN5RmxhZz4gPSB7IH0pOwogCiAgICAg
Ym9vbCB0aWxlc1dvdWxkQ2hhbmdlRm9yQ292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNv
bnN0OwogCkBAIC05MywyMCArOTMsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVW5wYXJl
bnRlZFRpbGVzTm93KCk7CiAjZW5kaWYKIAotICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4
OworICAgIHVzaW5nIFRpbGVJbmRleCA9IEludFBvaW50OwogCi0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBUaWxlQ29ob3J0OwotICAgIHN0YXRpYyBjb25zdCBUaWxlQ29ob3J0IFZpc2libGVUaWxlQ29o
b3J0ID0gVUlOVF9NQVg7CisgICAgdXNpbmcgVGlsZUNvaG9ydCA9IHVuc2lnbmVkOworICAgIHN0
YXRpYyBjb25zdGV4cHIgVGlsZUNvaG9ydCB2aXNpYmxlVGlsZUNvaG9ydCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8VGlsZUNvaG9ydD46Om1heCgpOwogCiAgICAgc3RydWN0IFRpbGVJbmZvIHsKICAg
ICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXI7Ci0gICAgICAgIFRpbGVDb2hvcnQg
Y29ob3J0OyAvLyBWaXNpYmxlVGlsZUNvaG9ydCBpcyB2aXNpYmxlLgotICAgICAgICBib29sIGhh
c1N0YWxlQ29udGVudDsKLQotICAgICAgICBUaWxlSW5mbygpCi0gICAgICAgICAgICA6IGNvaG9y
dChWaXNpYmxlVGlsZUNvaG9ydCkKLSAgICAgICAgICAgICwgaGFzU3RhbGVDb250ZW50KGZhbHNl
KQotICAgICAgICB7IH0KKyAgICAgICAgVGlsZUNvaG9ydCBjb2hvcnQgeyB2aXNpYmxlVGlsZUNv
aG9ydCB9OworICAgICAgICBib29sIGhhc1N0YWxlQ29udGVudCB7IGZhbHNlIH07CiAgICAgfTsK
IAogcHJpdmF0ZToKQEAgLTE1OCwxOSArMTUzLDE2IEBAIHByaXZhdGU6CiAgICAgUmVmPFBsYXRm
b3JtQ0FMYXllcj4gbV9jb250YWluZXJMYXllcjsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPFRpbGVJbmRleCwgVGlsZUluZm8+IFRpbGVNYXA7Ci0gICAgVGlsZU1hcCBtX3RpbGVzOwor
ICAgIEhhc2hNYXA8VGlsZUluZGV4LCBUaWxlSW5mbz4gbV90aWxlczsKIAogICAgIEludFJlY3Qg
bV9wcmltYXJ5VGlsZUNvdmVyYWdlUmVjdDsKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX3NlY29u
ZGFyeVRpbGVDb3ZlcmFnZVJlY3RzOwogCi0gICAgdHlwZWRlZiBEZXF1ZTxUaWxlQ29ob3J0SW5m
bz4gVGlsZUNvaG9ydExpc3Q7Ci0gICAgVGlsZUNvaG9ydExpc3QgbV9jb2hvcnRMaXN0OworICAg
IERlcXVlPFRpbGVDb2hvcnRJbmZvPiBtX2NvaG9ydExpc3Q7CiAKICAgICBUaW1lciBtX2NvaG9y
dFJlbW92YWxUaW1lcjsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybUNBTGF5ZXIqLCBp
bnQ+IFJlcGFpbnRDb3VudE1hcDsKLSAgICBSZXBhaW50Q291bnRNYXAgbV90aWxlUmVwYWludENv
dW50czsKKyAgICBIYXNoQ291bnRlZFNldDxQbGF0Zm9ybUNBTGF5ZXIqPiBtX3RpbGVSZXBhaW50
Q291bnRzOwogICAgIAogICAgIEludFNpemUgbV90aWxlU2l6ZTsKIApAQCAtMTc4LDQgKzE3MCwz
IEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29h
Lm1tCmluZGV4IDAwMGQ5MzcwMzc0YmJhOWI0NWFhZjVkYjM3ZWUzNjliYjc1MDczNDcuLmQ0ZmEz
YzRiZmFkMzRhYWYzMDkzYTlmMDI0ODZiYjcyN2Y5OGQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUZpbHRlcnNDb2NvYS5tbQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFBsYXRmb3JtQ0FGaWx0
ZXJzOjpzZXRGaWx0ZXJzT25MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVy
T3BlcgogCiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgYXV0byBhcnJheSA9IGNyZWF0ZU5TQXJy
YXkoZmlsdGVycy5vcGVyYXRpb25zKCksIFsmXSAoYXV0byYgb3BlcmF0aW9uUHRyKSAtPiBpZCB7
Ci0gICAgICAgIFN0cmluZyBmaWx0ZXJOYW1lID0gbWFrZVN0cmluZygiZmlsdGVyXyIsIGkrKyk7
CisgICAgICAgIGF1dG8gZmlsdGVyTmFtZSA9IG1ha2VTdHJpbmcoImZpbHRlcl8iLCBpKyspOwog
ICAgICAgICBhdXRvJiBmaWx0ZXJPcGVyYXRpb24gPSAqb3BlcmF0aW9uUHRyOwogICAgICAgICBz
d2l0Y2ggKGZpbHRlck9wZXJhdGlvbi50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkRFRkFVTFQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY5OTg4OTU4ODVlMTkzMGNiNmVh
MmRjMmZjMDc4MDgzODgxMGFmZGYuLjQ2ZWExNTFlZGI3MGE5NTA5OWEyZTE1OTA2MWU2NTJlYTA4
NzE1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAg
IEZsb2F0UG9pbnQgdGltZUxvY2F0aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuMDUsIGNhcHR1
cmVTaXplLmhlaWdodCgpICogLjE1KTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
d2hpdGUpOwogICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6
RmlsbCk7Ci0gICAgU3RyaW5nIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMp
LCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAn
LicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKKyAgICBhdXRvIHN0cmluZyA9
IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMp
LCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25k
cyAlIDEwMDApKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBUZXh0UnVuKChTdHJp
bmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9uKTsKIAogICAgIHN0cmluZyA9IG1ha2VTdHJp
bmcocGFkKCcwJywgNiwgbV9mcmFtZU51bWJlcisrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5jcHAKaW5kZXggZDRlZTBkNDEzOWNm
M2M5ODMyYzBlMDZkYzQ4ODU2MWI3MGFjNDc2OC4uMjI2MTU4Y2ZjZDQ5YzU5YjBmOGJkMDcwNDVi
ZTU5YjQ4NTliZmJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
Y3JvbGxBbmltYXRvck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsQW5pbWF0b3JNb2NrLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yTW9jay5oIgogCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
ODYsNTMgKzg1LDI2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRlZENvbnRl
bnRBcmVhKCkKICAgICBTY3JvbGxBbmltYXRvcjo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpOwog
fQogCitjb25zdCBjaGFyKiBTY3JvbGxBbmltYXRvck1vY2s6OnNjcm9sbGJhclByZWZpeChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyID09IG1fdmVy
dGljYWxTY3JvbGxiYXIgPyAiVmVydGljYWwiIDogc2Nyb2xsYmFyID09IG1faG9yaXpvbnRhbFNj
cm9sbGJhciA/ICJIb3Jpem9udGFsIiA6ICJVbmtub3duIjsKK30KKwogdm9pZCBTY3JvbGxBbmlt
YXRvck1vY2s6Om1vdXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29u
c3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRl
cmFsKCJtb3VzZUVudGVyZWQiKTsKLSAgICBpZiAoc2Nyb2xsYmFyID09IG1fdmVydGljYWxTY3Jv
bGxiYXIpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiVmVydGljYWwiKTsKLSAgICBl
bHNlIGlmIChzY3JvbGxiYXIgPT0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIkhvcml6b250YWwiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3Nh
Z2UuYXBwZW5kTGl0ZXJhbCgiVW5rbm93biIpOwotICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgi
U2Nyb2xsYmFyIik7Ci0gICAgbV9sb2dnZXIobWVzc2FnZS50b1N0cmluZygpKTsKKyAgICBtX2xv
Z2dlcihtYWtlU3RyaW5nKCJtb3VzZUVudGVyZWQiLCBzY3JvbGxiYXJQcmVmaXgoc2Nyb2xsYmFy
KSwgIlNjcm9sbGJhciIpKTsKICAgICBTY3JvbGxBbmltYXRvcjo6bW91c2VFbnRlcmVkU2Nyb2xs
YmFyKHNjcm9sbGJhcik7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUV4aXRl
ZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgY29uc3QKIHsKLSAgICBTdHJpbmdCdWls
ZGVyIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUV4aXRlZCIpOwot
ICAgIGlmIChzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbWVzc2Fn
ZS5hcHBlbmRMaXRlcmFsKCJWZXJ0aWNhbCIpOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9PSBt
X2hvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiSG9y
aXpvbnRhbCIpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJVbmtu
b3duIik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJTY3JvbGxiYXIiKTsKLSAgICBtX2xv
Z2dlcihtZXNzYWdlLnRvU3RyaW5nKCkpOworICAgIG1fbG9nZ2VyKG1ha2VTdHJpbmcoIm1vdXNl
RXhpdGVkIiwgc2Nyb2xsYmFyUHJlZml4KHNjcm9sbGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAg
U2Nyb2xsQW5pbWF0b3I6Om1vdXNlRXhpdGVkU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiB9CiAKIHZv
aWQgU2Nyb2xsQW5pbWF0b3JNb2NrOjptb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBib29sIGlzUHJlc3NlZCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIG1l
c3NhZ2U7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJtb3VzZUlzIik7Ci0gICAgaWYgKGlz
UHJlc3NlZCkKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJEb3duIik7Ci0gICAgZWxz
ZQotICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIlVwIik7Ci0gICAgbWVzc2FnZS5hcHBl
bmRMaXRlcmFsKCJJbiIpOwotICAgIGlmIChzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNjcm9sbGJh
cikKLSAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJWZXJ0aWNhbCIpOwotICAgIGVsc2Ug
aWYgKHNjcm9sbGJhciA9PSBtX2hvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIG1lc3NhZ2Uu
YXBwZW5kTGl0ZXJhbCgiSG9yaXpvbnRhbCIpOwotICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJVbmtub3duIik7Ci0gICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJTY3Jv
bGxiYXIiKTsKLSAgICBtX2xvZ2dlcihtZXNzYWdlLnRvU3RyaW5nKCkpOworICAgIG1fbG9nZ2Vy
KG1ha2VTdHJpbmcoaXNQcmVzc2VkID8gIm1vdXNlSXNEb3duSW4iIDogIm1vdXNlSXNVcEluIiwg
c2Nyb2xsYmFyUHJlZml4KHNjcm9sbGJhciksICJTY3JvbGxiYXIiKSk7CiAgICAgU2Nyb2xsQW5p
bWF0b3I6Om1vdXNlSXNEb3duSW5TY3JvbGxiYXIoc2Nyb2xsYmFyLCBpc1ByZXNzZWQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9y
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxBbmltYXRvck1vY2su
aAppbmRleCA0NmNlYTA2M2RkNzY0MDI5NjViOGQ1MzVmYmQwMmFhMGQzMzU5OGU3Li5mOTcyMWE4
ZjYyMmM4OWU1NDZkOWViYmFjZDk4MjEwZjgzMTFiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbEFuaW1hdG9yTW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsQW5pbWF0b3JNb2NrLmgKQEAgLTY4LDYgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG1vdXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIG1vdXNlRXhpdGVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIq
LCBib29sKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiBzY3JvbGxiYXJQcmVmaXgo
U2Nyb2xsYmFyKikgY29uc3Q7CiAKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+IG1fbG9nZ2VyOwogICAgIFNjcm9sbGJhciogbV92ZXJ0aWNhbFNjcm9sbGJhciB7IG51bGxw
dHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAKaW5kZXggYWI5ZWRkOWI0NzQ3MDE1ZmVkMzZhODlmMWQzYjA1YjM3ZjEwNTEzYS4uMzZhZGYw
NWQ5Njg2ZjA4Y2VlY2U3NDZiNTYxODMyYWRhZDgwMzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKQEAgLTM3LDE3ICszNywxNiBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBQcm94eVNlcnZlciYgcAogCiAgICAgc3dpdGNoIChwcm94eVNlcnZlci50eXBlKCkp
IHsKICAgICBjYXNlIFByb3h5U2VydmVyOjpEaXJlY3Q6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiRElSRUNUIik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIkRJUkVDVCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3h5U2VydmVyOjpIVFRQ
OgogICAgIGNhc2UgUHJveHlTZXJ2ZXI6OkhUVFBTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIlBST1hZIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJQUk9YWSAiLCBwcm94eVNl
cnZlci5ob3N0TmFtZSgpLCAnOicsIHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUHJveHlTZXJ2ZXI6OlNPQ0tTOgotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIlNPQ0tTIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJTT0NLUyAiLCBwcm94eVNl
cnZlci5ob3N0TmFtZSgpLCAnOicsIHByb3h5U2VydmVyLnBvcnQoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0gICAgCi0gICAgYnVpbGRlci5hcHBlbmQoJyAnLCBwcm94eVNlcnZlci5ob3N0TmFt
ZSgpLCAnOicsIHByb3h5U2VydmVyLnBvcnQoKSk7CisgICAgfQogfQogCiBTdHJpbmcgdG9TdHJp
bmcoY29uc3QgVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzKQpAQCAtNTgsMTMgKzU3
LDEwIEBAIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNl
cnZlcnMpCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJveHlTZXJ2ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI7ICIpOwotCisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiOyAiKTsKICAgICAgICAgYXBwZW5kUHJveHlTZXJ2
ZXJTdHJpbmcoc3RyaW5nQnVpbGRlciwgcHJveHlTZXJ2ZXJzW2ldKTsKICAgICB9Ci0KICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggMWYwOTJkOGQ1OGRjOWNmZDBkYmNiNDcyMjQ3YjQy
ODlhNjE5MGM5YS4uYWE5MTYyZTQ5MGZlZjYxMDY5MWRlMjQ2OTQzZDMxZDgyYTFlMmU1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKQEAgLTMwNywxMSArMzA3LDEwIEBAIFN0cmluZyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpCiAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwo
eyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKTsKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgeyB7IH0sICJodHRwOi8vZXhhbXBsZS5jb20v
Il9zIH0sIHsgfSwgLTEsIHsgfSB9OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIw
MCk7CiAgICAgU3RyaW5nIGVzY2FwZWRTdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmluZyhzdWdnZXN0
ZWRGaWxlbmFtZSkucmVwbGFjZSgnXFwnLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAiXFxcIiIpOwot
ICAgIFN0cmluZyB2YWx1ZSA9IG1ha2VTdHJpbmcoImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwg
ZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1lLCAnIicpOwotICAgIHJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9uLCB2YWx1ZSk7CisgICAg
cmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9z
aXRpb24sIG1ha2VTdHJpbmcoImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dl
c3RlZEZpbGVuYW1lLCAnIicpKTsKICAgICByZXR1cm4gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5h
bWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vVXNlckFnZW50UGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxh
eXN0YXRpb24vVXNlckFnZW50UGxheVN0YXRpb24uY3BwCmluZGV4IDQ5YmRhZDcwNDEzNmFlZTg2
M2QwMjk5MjJhNDIzY2JlNGNjYzc2OTcuLmEyMjMzMjAwYzcwMWEzNmY5NTMzNTY1ODEyZjU1YWU0
ZGUyMDBjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9u
L1VzZXJBZ2VudFBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
bGF5c3RhdGlvbi9Vc2VyQWdlbnRQbGF5U3RhdGlvbi5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNp
bmNsdWRlICJVc2VyQWdlbnQuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogLy8gV0FSTklORyEg
V0FSTklORyEgV0FSTklORyEKIC8vCkBAIC01OSw1MSArNTgsMTcgQEAgc3RhdGljIFN0cmluZyBn
ZXRTeXN0ZW1Tb2Z0d2FyZVZlcnNpb24oKQogICAgIHJldHVybiAiMC4wMCI7CiB9CiAKLXN0YXRp
YyBjb25zdCBTdHJpbmcgcGxhdGZvcm1Gb3JVQVN0cmluZygpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFTeXN0ZW1Tb2Z0d2FyZU5hbWUoZ2V0U3lzdGVtU29m
dHdhcmVOYW1lKCkpOwotICAgIHJldHVybiB1YVN5c3RlbVNvZnR3YXJlTmFtZTsKLX0KLQotc3Rh
dGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygpCi17Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFTeXN0ZW1Tb2Z0d2FyZVZlcnNpb24o
Z2V0U3lzdGVtU29mdHdhcmVWZXJzaW9uKCkpOwotICAgIHJldHVybiB1YVN5c3RlbVNvZnR3YXJl
VmVyc2lvbjsKLX0KLQogc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiB2ZXJzaW9uRm9yVUFT
dHJpbmcoKQogewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODAzNjUKICAgICByZXR1cm4gIjYwNS4xLjE1IjsKIH0KIAotc3RhdGljIFN0cmluZyBidWls
ZFVzZXJBZ2VudFN0cmluZygpCitzdGF0aWMgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50U3RhdGlj
KCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHVhU3RyaW5nOwotICAgIHVhU3RyaW5nLmFwcGVuZExp
dGVyYWwoIk1vemlsbGEvNS4wICIpOwotICAgIHVhU3RyaW5nLmFwcGVuZCgnKCcpOwotCi0gICAg
dWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiUGxheVN0YXRpb247ICIpOwotCi0gICAgdWFTdHJpbmcu
YXBwZW5kKHBsYXRmb3JtRm9yVUFTdHJpbmcoKSk7Ci0gICAgdWFTdHJpbmcuYXBwZW5kKCcvJyk7
Ci0gICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkpOwotCi0g
ICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKSBBcHBsZVdlYktpdC8iKTsKLSAgICB1YVN0cmlu
Zy5hcHBlbmQodmVyc2lvbkZvclVBU3RyaW5nKCkpOwotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVy
YWwoIiAoS0hUTUwsIGxpa2UgR2Vja28pICIpOwotCiAgICAgLy8gVmVyc2lvbi9YIGlzIG1hbmRh
dG9yeSAqYmVmb3JlKiBTYWZhcmkvWCB0byBiZSBhIHZhbGlkIFNhZmFyaSBVQS4gU2VlCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzQwMyBmb3IgZGV0
YWlscy4KLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJWZXJzaW9uLzE0LjAgU2FmYXJpLyIp
OwotICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0KLSAgICByZXR1
cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKLX0KLQotc3RhdGljIGNvbnN0IFN0cmluZyBzdGFuZGFy
ZFVzZXJBZ2VudFN0YXRpYygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gdWFTdGF0aWMoYnVpbGRVc2VyQWdlbnRTdHJpbmcoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gdWFTdGF0aWMobWFrZVN0cmluZygiTW96aWxsYS81LjAgKFBsYXlT
dGF0aW9uOyAiLCBnZXRTeXN0ZW1Tb2Z0d2FyZU5hbWUoKSwgJy8nLCBnZXRTeXN0ZW1Tb2Z0d2Fy
ZVZlcnNpb24oKSwgIikgQXBwbGVXZWJLaXQvIiwgdmVyc2lvbkZvclVBU3RyaW5nKCksICIgKEtI
VE1MLCBsaWtlIEdlY2tvKSAiLCAiVmVyc2lvbi8xNC4wIFNhZmFyaS8iLCB2ZXJzaW9uRm9yVUFT
dHJpbmcoKSk7CiAgICAgcmV0dXJuIHVhU3RhdGljOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCAxNTc3YWE2MWIyZjU2OWIyZDE2
NzJjYjI3MTczYzJhODZkZTRlMDFhLi4zN2I2NzAxNTZkMDU4ZDAyNDk1NmIyZWZkNzRjMmY3ZDRl
ZDEzYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAgIGlmIChvcGVuTW9kZSAh
PSBPcGVuTW9kZTo6UmVhZE9ubHkpCiAgICAgICAgIHVzZVdBTEpvdXJuYWxNb2RlKCk7CiAKLSAg
ICBTdHJpbmcgc2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVuYW1lLCAiLXNobSJfcyk7Cisg
ICAgYXV0byBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZW5hbWUsICItc2htIl9zKTsKICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSkpIHsKICAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjppc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoc2htRmlsZU5hbWUpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChTUUxEYXRhYmFzZSwgIk9wZW5lZCBhbiBT
UUxpdGUgZGF0YWJhc2Ugd2l0aCBhIENsYXNzIEEgLXNobSBmaWxlLiBUaGlzIG1heSB0cmlnZ2Vy
IGEgY3Jhc2ggd2hlbiB0aGUgdXNlciBsb2NrcyB0aGUgZGV2aWNlLiAoJXMpIiwgc2htRmlsZU5h
bWUubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCBhN2EyMDIxZDY4OWVhNDEwY2Y3YWIwMjFmZjljNmM0
ZmU0NzQzMzFkLi42YzNkM2E4ZGY2MDgwZWEzOWViNzJmNTFjYzdlYTc0MzQwYWM1YzY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCkBA
IC03OSw4ICs3OSw4IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFz
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgU3RyaW5n
IHdhbEZpbGVOYW1lID0gbWFrZVN0cmluZyhmaWxlTmFtZSwgIi13YWwiX3MpOwotICAgIFN0cmlu
ZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsICItc2htIl9zKTsKKyAgICBhdXRv
IHdhbEZpbGVOYW1lID0gbWFrZVN0cmluZyhmaWxlTmFtZSwgIi13YWwiX3MpOworICAgIGF1dG8g
c2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1lLCAiLXNobSJfcyk7CiAKICAgICAvLyBU
cnkgdG8gZGVsZXRlIGFsbCB0aHJlZSBmaWxlcyB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSB0aGVy
ZS4KICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggYzc1ZDMzZDZmZjg0
NzZlZmEzMmRiODQ0ZTZhZjkyMjQ0Njc2Y2U3OS4uNDNhMThiY2VhMDE3OTYzMGI5MGVlZGM2MjY0
MmIzZGE3N2UwYjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9E
YXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRl
VGltZUZvcm1hdC5jcHAKQEAgLTI1NSwyMyArMjU1LDE3IEBAIHZvaWQgRGF0ZVRpbWVGb3JtYXQ6
OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcmIGxpdGVyYWwsIFN0cmluZ0J1aWxk
ZXImCiAgICAgICAgIGJ1ZmZlci5hcHBlbmQobGl0ZXJhbCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAobGl0ZXJhbC5maW5kKCdcJycpID09IG5vdEZvdW5kKSB7Ci0g
ICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJyk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQobGl0ZXJh
bCk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wnJyk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQo
J1wnJywgbGl0ZXJhbCwgJ1wnJyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGl0ZXJhbC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlm
IChsaXRlcmFsW2ldID09ICdcJycpCi0gICAgICAgICAgICBidWZmZXIuYXBwZW5kTGl0ZXJhbCgi
JyciKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoIicnIik7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgU3RyaW5nIGVzY2FwZWQgPSBsaXRlcmFsLnN1YnN0cmluZyhpKTsKLSAgICAg
ICAgICAgIGVzY2FwZWQucmVwbGFjZSgnXCcnLCAiJyciKTsKLSAgICAgICAgICAgIGJ1ZmZlci5h
cHBlbmQoJ1wnJyk7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKGVzY2FwZWQpOwotICAgICAg
ICAgICAgYnVmZmVyLmFwcGVuZCgnXCcnKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wn
JywgU3RyaW5nIHsgbGl0ZXJhbC5zdWJzdHJpbmcoaSkgfS5yZXBsYWNlKCdcJycsICInJyIpLCAn
XCcnKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAppbmRleCBlZTFmZjhlYjNkNzll
Yjc2MDI5NTBkYTk2MjQ2OTQ2NTU5NGQyMGI1Li5mYzJhOTIxMTAwMjBkNTllNDNhODMwYWUzNDU0
MTAyYjc3OTcyNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0NKSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNDSksuY3BwCkBAIC0xMDUyLDkgKzEwNTIsOSBAQCBjb25zdGV4cHIgc2l6ZV90IG1heFVDaGFy
MzJEaWdpdHMgPSAxMDsKIAogc3RhdGljIHZvaWQgYXBwZW5kRGVjaW1hbChVQ2hhcjMyIGMsIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0KQogewotICAgIHVpbnQ4X3QgYnVmZmVyWzEwXTsKLSAgICBX
VEY6OndyaXRlSW50ZWdlclRvQnVmZmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSwgYnVmZmVy
KTsKLSAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlciwgV1RGOjpsZW5ndGhPZkludGVnZXJBc1N0cmlu
ZyhjKSk7CisgICAgdWludDhfdCBidWZmZXJbbGVuZ3RoT2ZJbnRlZ2VyQXNTdHJpbmcoc3RkOjpu
dW1lcmljX2xpbWl0czxkZWNsdHlwZShjKT46Om1heCgpKV07CisgICAgd3JpdGVJbnRlZ2VyVG9C
dWZmZXIoYywgYnVmZmVyKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlciwgbGVuZ3RoT2ZJbnRl
Z2VyQXNTdHJpbmcoYykpOwogfQogCiBzdGF0aWMgdm9pZCB1cmxFbmNvZGVkRW50aXR5VW5lbmNv
ZGFibGVIYW5kbGVyKFVDaGFyMzIgYywgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
CmluZGV4IDg3ODlmMTFjMzY0Mzk5OWMzMGRmZGIxYzliOTM5YWU0NWJiMGE1MWYuLjNlOTdlODA0
ZTExNWUwZTM3ODE0ZGRmNjcwZTllM2JhNGIzYmJjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0zMjQsNyAr
MzI0LDcgQEAgdm9pZCByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3Ry
aW5nJiBzdHIpCiAgICAgICAgIGlmIChzdHJbaW5kZXhdICE9ICdcbicgfHwgKGluZGV4ID4gMCAm
JiBzdHJbaW5kZXggLSAxXSA9PSAnXHInKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Ry
W2luZGV4XSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJcclxuIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcclxuIik7CiAgICAgfQogICAg
IHN0ciA9IHJlc3VsdC50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1VzZXJBZ2VudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vVXNlckFnZW50V2luLmNwcAppbmRleCBmYzQ1ZmYwMmJhMWNkZGJlYmVlNGViYzNmYmQyNjMz
NGEzM2JiMjgzLi5mYjIzNjFjYWZiYTRjMGE0ZGI0OTMzMDM5OTZiNjQ3YThiZDNlNDVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVXNlckFnZW50V2luLmNwcApAQCAtMjcsMjYg
KzI3LDE1IEBACiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKICNpbmNsdWRlICJTeXN0ZW1JbmZv
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5n
IHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHVhU3RyaW5n
OwotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1vemlsbGEvNS4wICgiKTsKLSAgICB1YVN0
cmluZy5hcHBlbmQod2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpKTsKLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzY1Ci0gICAgdWFTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgiKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIik7
Ci0gICAgaWYgKCFhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHVhU3RyaW5n
LmFwcGVuZExpdGVyYWwoIiAiKTsKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kKGFwcGxpY2F0aW9u
TmFtZSk7Ci0gICAgICAgIGlmICghYXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiLyIpOwotICAgICAgICAgICAgdWFTdHJp
bmcuYXBwZW5kKGFwcGxpY2F0aW9uVmVyc2lvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuIHVhU3RyaW5nLnRvU3RyaW5nKCk7CisgICAgYXV0byB2ZXJzaW9uID0gYXBwbGljYXRpb25O
YW1lLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcHBsaWNhdGlvblZlcnNpb247CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCB3aW5kb3dzVmVyc2lvbkZvclVBU3Ry
aW5nKCksICIpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLAorICAg
ICAgICBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiAiICIsIGFwcGxpY2F0aW9uTmFt
ZSwgdmVyc2lvbi5pc0VtcHR5KCkgPyAiIiA6ICIvIiwgdmVyc2lvbik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDE3YjJjODM0ZDBlY2VhMmRjMjIyNTIwMDk4MGNhMDRiNzlhMDhhZjAuLmU4MGQ1ZTcwMzJj
Y2FlMmZmMjQwYTRkMWIxOTYzZDRlNTdhM2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtODEzLDEzICs4MTMsOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogCiBTdHJpbmcgUmVuZGVyTGF5ZXI6Om5hbWUoKSBj
b25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKLSAgICBuYW1lLmFwcGVuZChyZW5kZXJl
cigpLmRlc2NyaXB0aW9uKCkpOwotCi0gICAgaWYgKGlzUmVmbGVjdGlvbigpKQotICAgICAgICBu
YW1lLmFwcGVuZExpdGVyYWwoIiAocmVmbGVjdGlvbikiKTsKLQotICAgIHJldHVybiBuYW1lLnRv
U3RyaW5nKCk7CisgICAgaWYgKCFpc1JlZmxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHJlbmRl
cmVyKCkuZGVidWdEZXNjcmlwdGlvbigpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHJlbmRlcmVy
KCkuZGVidWdEZXNjcmlwdGlvbigpLCAiIChyZWZsZWN0aW9uKSIpOwogfQogCiBSZW5kZXJMYXll
ckNvbXBvc2l0b3ImIFJlbmRlckxheWVyOjpjb21wb3NpdG9yKCkgY29uc3QKQEAgLTI3NTMsMzIg
KzI3NDksMjEgQEAgUmVuZGVyTGF5ZXI6Ok92ZXJmbG93Q29udHJvbFJlY3RzIFJlbmRlckxheWVy
OjpvdmVyZmxvd0NvbnRyb2xzUmVjdHMoKSBjb25zdAogCiBTdHJpbmcgUmVuZGVyTGF5ZXI6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAg
ICBidWlsZGVyLmFwcGVuZCgiUmVuZGVyTGF5ZXIgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4odGhpcyksIExvd2VyY2FzZSksICcgJywgc2l6ZSgpLndpZHRoKCksICd4Jywg
c2l6ZSgpLmhlaWdodCgpKTsKLQotICAgIGlmICh0cmFuc2Zvcm0oKSkKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiBoYXMgdHJhbnNmb3JtIl9zKTsKLQotICAgIGlmIChoYXNGaWx0ZXIoKSkKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiBoYXMgZmlsdGVyIl9zKTsKLQotICAgIGlmIChoYXNCYWNr
ZHJvcEZpbHRlcigpKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGhhcyBiYWNrZHJvcCBmaWx0
ZXIiX3MpOwotCi0gICAgaWYgKGhhc0JsZW5kTW9kZSgpKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiIGhhcyBibGVuZCBtb2RlIl9zKTsKLQotICAgIGlmIChpc29sYXRlc0JsZW5kaW5nKCkpCi0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgaXNvbGF0ZXMgYmxlbmRpbmciX3MpOwotCisgICAgU3Ry
aW5nIGNvbXBvc2l0ZWREZXNjcmlwdGlvbjsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKLSAg
ICAgICAgLy8gT2ggZm9yIGJldHRlciBTdHJpbmdCdWlsZGVyL1RleHRTdHJlYW0gaW50ZWdyYXRp
b24uCiAgICAgICAgIFRleHRTdHJlYW0gc3RyZWFtOwogICAgICAgICBzdHJlYW0gPDwgIiAiIDw8
ICpiYWNraW5nKCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cmVhbS5yZWxlYXNlKCkpOwor
ICAgICAgICBjb21wb3NpdGVkRGVzY3JpcHRpb24gPSBzdHJlYW0ucmVsZWFzZSgpOwogICAgIH0K
IAotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
IlJlbmRlckxheWVyIDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwg
TG93ZXJjYXNlKSwKKyAgICAgICAgJyAnLCBzaXplKCkud2lkdGgoKSwgJ3gnLCBzaXplKCkuaGVp
Z2h0KCksCisgICAgICAgIHRyYW5zZm9ybSgpID8gIiBoYXMgdHJhbnNmb3JtIiA6ICIiLAorICAg
ICAgICBoYXNGaWx0ZXIoKSA/ICIgaGFzIGZpbHRlciIgOiAiIiwKKyAgICAgICAgaGFzQmFja2Ry
b3BGaWx0ZXIoKSA/ICIgaGFzIGJhY2tkcm9wIGZpbHRlciIgOiAiIiwKKyAgICAgICAgaGFzQmxl
bmRNb2RlKCkgPyAiIGhhcyBibGVuZCBtb2RlIiA6ICIiLAorICAgICAgICBpc29sYXRlc0JsZW5k
aW5nKCkgPyAiIGlzb2xhdGVzIGJsZW5kaW5nIiA6ICIiLAorICAgICAgICBjb21wb3NpdGVkRGVz
Y3JpcHRpb24pOwogfQogCiBJbnRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tUmVzaXplQ29y
bmVyKGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0ZTc3ODQ1OTky
MzE0MmE4OTZhOTk3ZWI3ZWNiYzk1YmI4YmU4ZDhlLi4zMzY4MTZhMTA4NzQyOTY0OGZhNzI4OTk4
YjM3MjUzYTU3MGE0NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTU0MSw0NyArMTU0MSwzOCBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwg
Y29uc3QgY2hhciogcAogCiAgICAgaWYgKGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+Y29udGVu
dHNPcGFxdWUoKSB8fCBiYWNraW5nLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkgfHwg
YmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkgfHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkp
IHsKICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgnWycpOwotICAgICAgICBib29sIHByZXBlbmRT
cGFjZSA9IGZhbHNlOworCisgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiOwogICAgICAg
ICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpKSB7Ci0gICAg
ICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgib3BhcXVlIik7Ci0gICAgICAgICAgICBw
cmVwZW5kU3BhY2UgPSB0cnVlOworICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgib3BhcXVl
Iik7CisgICAgICAgICAgICBwcmVmaXggPSAiLCAiOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkgewotICAgICAgICAgICAg
aWYgKHByZXBlbmRTcGFjZSkKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJwYWludHMgaW50
byBhbmNlc3RvciIpOwotICAgICAgICAgICAgcHJlcGVuZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGxvZ1N0cmluZy5hcHBlbmQocHJlZml4LCAicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKKyAg
ICAgICAgICAgIHByZWZpeCA9ICIsICI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYmFja2lu
Zy0+Zm9yZWdyb3VuZExheWVyKCkgfHwgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKLSAg
ICAgICAgICAgIGlmIChwcmVwZW5kU3BhY2UpCi0gICAgICAgICAgICAgICAgbG9nU3RyaW5nLmFw
cGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgICAgICBpZiAoYmFja2luZy0+Zm9yZWdyb3VuZExh
eWVyKCkgJiYgYmFja2luZy0+YmFja2dyb3VuZExheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBs
b2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiK2ZvcmVncm91bmQrYmFja2dyb3VuZCIpOwotICAgICAg
ICAgICAgICAgIHByZXBlbmRTcGFjZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbG9nU3RyaW5n
LmFwcGVuZChwcmVmaXgsICIrZm9yZWdyb3VuZCtiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICAg
ICAgcHJlZml4ID0gIiwgIjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZy0+Zm9yZWdy
b3VuZExheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
K2ZvcmVncm91bmQiKTsKLSAgICAgICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQocHJlZml4LCAiK2ZvcmVncm91bmQiKTsKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSAiLCAiOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiK2JhY2tncm91bmQiKTsKLSAgICAg
ICAgICAgICAgICBwcmVwZW5kU3BhY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGxvZ1N0cmlu
Zy5hcHBlbmQocHJlZml4LCAiK2JhY2tncm91bmQiKTsKKyAgICAgICAgICAgICAgICBwcmVmaXgg
PSAiLCAiOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
YmFja2luZy0+cGFpbnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRleHQoKSkgewotICAgICAgICAgICAg
aWYgKHByZXBlbmRTcGFjZSkKLSAgICAgICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJ0ZXh0eSIpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChiYWNraW5nLT5wYWludHNTdWJwaXhlbEFudGlhbGlhc2Vk
VGV4dCgpKQorICAgICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZChwcmVmaXgsICJ0ZXh0eSIpOwog
Ci0gICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJdICIpOworICAgICAgICBsb2dTdHJp
bmcuYXBwZW5kKCJdICIpOwogICAgIH0KIAotICAgIGxvZ1N0cmluZy5hcHBlbmQobGF5ZXIubmFt
ZSgpKTsKLQotICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIgLSAiKTsKLSAgICBsb2dTdHJp
bmcuYXBwZW5kKHBoYXNlKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kKGxheWVyLm5hbWUoKSwgIiAt
ICIsIHBoYXNlKTsKIAogICAgIExPRyhDb21wb3NpdGluZywgIiVzIiwgbG9nU3RyaW5nLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggNzI0Nzc0YWYzYWFiYzA3M2MxMDliNmJkODQxMDBlMjY1
ODFmMWM2Yy4uODE3MDJmNDVkNGMxNmMwOWI2YjU3NTQ1YjhmOTFkMWRiNmY1ZWVkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTU1LDE5
ICsxNTUsMTYgQEAgU3RyaW5nIHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhTdHJpbmdWaWV3
IHMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBzLmxlbmd0aCgpOyArK2kpIHsKICAg
ICAgICAgVUNoYXIgYyA9IHNbaV07CiAgICAgICAgIGlmIChjID09ICdcXCcpIHsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCJcXFxcIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnIicpIHsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcXFwiIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCJcXFwiIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gbm9CcmVha1Nw
YWNlKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChjID49IDB4MjAgJiYgYyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCJcXHh7Iik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCho
ZXgoYykpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcXHh7
IiwgaGV4KGMpLCAnfScpOwogICAgICAgICB9CiAgICAgfQogICAgIHJlc3VsdC5hcHBlbmQoJyIn
KTsKQEAgLTgyNCwxMSArODIxLDExIEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUq
IG5vZGUpCiAgICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewogICAgICAg
ICBwYXJlbnQgPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIGlmIChuICE9
IG5vZGUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiIG9mICIpOwogICAgICAgICBpZiAocGFyZW50KSB7CiAgICAg
ICAgICAgICBpZiAoYm9keSAmJiBuID09IGJvZHkpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBk
b24ndCBjYXJlIHdoYXQgb2Zmc2V0IGJvZHkgbWF5IGJlIGluIHRoZSBkb2N1bWVudC4KLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiYm9keSIpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImJvZHkiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChuLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTgzNiw3ICs4MzMs
NyBAQCBzdGF0aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImNoaWxkICIsIG4tPmNvbXB1dGVO
b2RlSW5kZXgoKSwgIiB7IiwgZ2V0VGFnTmFtZShuKSwgJ30nKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZG9jdW1lbnQiKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoImRvY3VtZW50Iik7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAK
aW5kZXggNDgzYmY2OWVlZTI4Y2VjMTFjYzViYmMwYzFhZjlmZmYwNmI1YWQ3My4uN2FhNzJiZDhh
ZjZjZWZkZWNlMDBjZGMzODIyYmRhN2Y5ZDQzNmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCkBAIC02OSw5ICs2OSw5IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFBvaW50KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBp
ZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiTSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiTSAi
KTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJtICIp
OworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJtICIpOwogCiAgICAgYXBwZW5kUG9p
bnQobV9zdHJpbmdCdWlsZGVyLCB0YXJnZXRQb2ludCk7CiB9CkBAIC03OSw5ICs3OSw5IEBAIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQ
b2ludCwgYm9vbCwgUGF0aENvb3JkCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG8o
Y29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQog
ewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJMICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJMICIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoImwgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImwgIik7CiAKICAgICBh
cHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHRhcmdldFBvaW50KTsKIH0KQEAgLTg5LDkgKzg5
LDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU0KIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6
OmxpbmVUb0hvcml6b250YWwoZmxvYXQgeCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAg
ICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIkggIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
IkggIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
aCAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiaCAiKTsKIAogICAgIGFwcGVu
ZE51bWJlcihtX3N0cmluZ0J1aWxkZXIsIHgpOwogfQpAQCAtOTksOSArOTksOSBAQCB2b2lkIFNW
R1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29yZGlu
YXRlTW9kZSBtb2RlKQogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvVmVydGljYWwo
ZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJz
b2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IlYgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIlYgIik7CiAgICAgZWxzZQot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidiAiKTsKKyAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgidiAiKTsKIAogICAgIGFwcGVuZE51bWJlcihtX3N0cmluZ0J1
aWxkZXIsIHkpOwogfQpAQCAtMTA5LDkgKzEwOSw5IEBAIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxk
ZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogdm9p
ZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQ
b2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkMg
Iik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIkMgIik7CiAgICAgZWxzZQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYyAiKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiYyAiKTsKIAogICAgIGFwcGVuZFBvaW50KG1fc3RyaW5nQnVpbGRl
ciwgcG9pbnQxKTsKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIsIHBvaW50Mik7CkBA
IC0xMjEsOSArMTIxLDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb0N1Ymlj
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2kKIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludDIs
IGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkK
IHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUyAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZCgiUyAiKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJzICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJzICIpOwogCiAgICAg
YXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCBwb2ludDIpOwogICAgIGFwcGVuZFBvaW50KG1f
c3RyaW5nQnVpbGRlciwgdGFyZ2V0UG9pbnQpOwpAQCAtMTMyLDkgKzEzMiw5IEBAIHZvaWQgU1ZH
UGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBw
b2ludDIsIGNvbnN0IEZsCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9p
bnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJRICIp
OworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJRICIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInEgIik7CisgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoInEgIik7CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmluZ0J1aWxkZXIs
IHBvaW50MSk7CiAgICAgYXBwZW5kUG9pbnQobV9zdHJpbmdCdWlsZGVyLCB0YXJnZXRQb2ludCk7
CkBAIC0xNDMsOSArMTQzLDkgQEAgdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb1F1
YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2EKIHZvaWQgU1ZHUGF0
aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJUICIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJUICIpOwogICAgIGVs
c2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInQgIik7CisgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInQgIik7CiAKICAgICBhcHBlbmRQb2ludChtX3N0cmlu
Z0J1aWxkZXIsIHRhcmdldFBvaW50KTsKIH0KQEAgLTE1Myw5ICsxNTMsOSBAQCB2b2lkIFNWR1Bh
dGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LAogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6YXJjVG8oZmxvYXQgcjEs
IGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFn
LCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUp
CiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkEgIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIkEgIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiYSAiKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiYSAiKTsKIAogICAg
IGFwcGVuZE51bWJlcihtX3N0cmluZ0J1aWxkZXIsIHIxKTsKICAgICBhcHBlbmROdW1iZXIobV9z
dHJpbmdCdWlsZGVyLCByMik7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTVkdQYXRoU3RyaW5n
QnVpbGRlcjo6YXJjVG8oZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJn
ZUFyY0YKIAogdm9pZCBTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y2xvc2VQYXRoKCkKIHsKLSAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWiAiKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJaICIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDIyY2U1NWQ4MTUyNjhlYWM2N2ZiMjA1ZWZkYjIyNWRh
MDVhOGVlZi4uM2M3NTY3YzgxYmJhODIyYzQ4YWIwNmVkMjRkZTI5NjQ5ODMwMThmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTc1OSw3ICsxNzU5LDcgQEAgRXhjZXB0
aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmR1bXBNYXJrZXJSZWN0cyhjb25zdCBTdHJpbmcmIG1h
cmtlclR5cGVTdHJpbmcpCiAKICAgICAvLyBGSVhNRTogVXNpbmcgZml4ZWQgcHJlY2lzaW9uIGhl
cmUgZm9yIHdpZHRoIGJlY2F1c2Ugb2YgdGVzdCByZXN1bHRzIHRoYXQgY29udGFpbiBudW1iZXJz
IHdpdGggc3BlY2lmaWMgcHJlY2lzaW9uLiBXb3VsZCBiZSBuaWNlIHRvIHVwZGF0ZSB0aGUgdGVz
dCByZXN1bHRzIGFuZCBtb3ZlIHRvIGRlZmF1bHQgZm9ybWF0dGluZy4KICAgICBTdHJpbmdCdWls
ZGVyIHJlY3RTdHJpbmc7Ci0gICAgcmVjdFN0cmluZy5hcHBlbmRMaXRlcmFsKCJtYXJrZXIgcmVj
dHM6ICIpOworICAgIHJlY3RTdHJpbmcuYXBwZW5kKCJtYXJrZXIgcmVjdHM6ICIpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjdCA6IHJlY3RzKQogICAgICAgICByZWN0U3RyaW5nLmFwcGVuZCgn
KCcsIHJlY3QueCgpLCAiLCAiLCByZWN0LnkoKSwgIiwgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbihyZWN0LndpZHRoKCkpLCAiLCAiLCByZWN0LmhlaWdodCgpLCAiKSAiKTsKICAg
ICByZXR1cm4gcmVjdFN0cmluZy50b1N0cmluZygpOwpAQCAtNDcwMSwxOCArNDcwMSwxOCBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRPZmZzZXRzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFZl
Y3RvcjxTbmFwT2Zmc2V0PExheW91dAogewogICAgIGJvb2wganVzdFN0YXJ0aW5nID0gdHJ1ZTsK
IAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgieyAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
eyAiKTsKICAgICBmb3IgKGF1dG8mIGNvb3JkaW5hdGUgOiBzbmFwT2Zmc2V0cykgewogICAgICAg
ICBpZiAoIWp1c3RTdGFydGluZykKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBqdXN0U3RhcnRpbmcgPSBmYWxzZTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Y29vcmRpbmF0ZS5vZmZzZXQudG9VbnNpZ25lZCgpKTsKICAgICAgICAgaWYgKGNvb3JkaW5hdGUu
c3RvcCA9PSBTY3JvbGxTbmFwU3RvcDo6QWx3YXlzKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgKGFsd2F5cykiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKGFs
d2F5cykiKTsKIAogICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiB9Iik7CisgICAg
YnVpbGRlci5hcHBlbmQoIiB9Iik7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQbGF0Zm9ybU1v
bWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNDczMywx
NSArNDczMywxNCBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6c2Nyb2xsU25hcE9m
ZnNldHMoRWxlbWVudCYgZWxlbWVudCkKICAgICBhdXRvKiBvZmZzZXRJbmZvID0gc2Nyb2xsYWJs
ZUFyZWEtPnNuYXBPZmZzZXRJbmZvKCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAg
aWYgKG9mZnNldEluZm8gJiYgIW9mZnNldEluZm8tPmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImhvcml6b250YWwgPSAiKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgiaG9yaXpvbnRhbCA9ICIpOwogICAgICAgICBhcHBlbmRP
ZmZzZXRzKHJlc3VsdCwgb2Zmc2V0SW5mby0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKICAgICB9
CiAKICAgICBpZiAob2Zmc2V0SW5mbyAmJiAhb2Zmc2V0SW5mby0+dmVydGljYWxTbmFwT2Zmc2V0
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSkKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotCi0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJ2ZXJ0aWNhbCA9ICIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgidmVydGljYWwgPSAiKTsKICAgICAgICAgYXBwZW5kT2Zmc2V0
cyhyZXN1bHQsIG9mZnNldEluZm8tPnZlcnRpY2FsU25hcE9mZnNldHMpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDdkYmZj
Y2I0MGFhZDE3M2NkZDQ5NmFlNzhhMDExZDVhZGJhMWRmMjYuLjhiZTgwODFhNzdhNzMxM2QwMWU5
NzUwMTc0OGMwZWQ4NjVlNDEyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKQEAgLTE2MiwxNiArMTYyLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0CiBSZXNvdXJjZUVycm9yIFdvcmtlclNjcmlwdExvYWRlcjo6dmFsaWRhdGVXb3JrZXJS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSAvIDEwMCAhPSAyICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCi0gICAgICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9u
c2UudXJsKCksICJSZXNwb25zZSBpcyBub3QgMnh4Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsIH07CisgICAgICAgIHJldHVybiB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHJlc3BvbnNlLnVybCgpLCAiUmVzcG9uc2UgaXMgbm90IDJ4eCJfcywgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6R2VuZXJhbCB9OwogCiAgICAgaWYgKCFpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYocmVz
cG9uc2UpKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0
byBleGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNlIFwiWC1Db250ZW50LVR5cGUtT3B0aW9uczogbm9zbmlm
ZlwiIHdhcyBnaXZlbiBhbmQgaXRzIENvbnRlbnQtVHlwZSBpcyBub3QgYSBzY3JpcHQgTUlNRSB0
eXBlLiIpOwotICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmco
IlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSBcIlgtQ29udGVudC1UeXBlLU9wdGlv
bnM6IG5vc25pZmZcIiB3YXMgZ2l2ZW4gYW5kIGl0cyBDb250ZW50LVR5cGUgaXMgbm90IGEgc2Ny
aXB0IE1JTUUgdHlwZS4iKTsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6
OlR5cGU6OkdlbmVyYWwgfTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkQmxvY2tSZXNwb25zZUR1
ZVRvTUlNRVR5cGUocmVzcG9uc2UsIGRlc3RpbmF0aW9uKSkgewotICAgICAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSAiLCBy
ZXNwb25zZS5taW1lVHlwZSgpLCAiIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7Ci0gICAg
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
cmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5cGU6Okdl
bmVyYWwgfTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBl
eGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiIGFzIHNjcmlwdCBiZWNhdXNlICIsIHJlc3BvbnNlLm1pbWVUeXBlKCksICIgaXMgbm90IGEg
c2NyaXB0IE1JTUUgdHlwZS4iKTsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJy
b3I6OlR5cGU6OkdlbmVyYWwgfTsKICAgICB9CiAKICAgICByZXR1cm4geyB9OwpAQCAtMjQyLDcg
KzI0Miw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlFcnJvcigpCiB7CiAgICAg
bV9mYWlsZWQgPSB0cnVlOwogICAgIGlmIChtX2Vycm9yLmlzTnVsbCgpKQotICAgICAgICBtX2Vy
cm9yID0gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCgp
LCAiRmFpbGVkIHRvIGxvYWQgc2NyaXB0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9
OworICAgICAgICBtX2Vycm9yID0geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwo
KSwgIkZhaWxlZCB0byBsb2FkIHNjcmlwdCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwg
fTsKICAgICBub3RpZnlGaW5pc2hlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAzOTZmNWM3NzUyMmQ1MmU3
YTUxMDJiZjJlYzY5MzMwYTFlMjM3ZWM5Li41NTdkN2YyNjkzOTcxN2Y2MTY4NWFiNTMzNDFlNmRl
YmMxNTk5MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEwMzAsMjAgKzEwMzAsMTEgQEAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBS
ZWdpc3RyYWIKIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5z
dXJlQW5kTWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbkxpc3QpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIAogICAgIGZvciAo
YXV0byYgdG9wRnJhbWVSZXNvdXJjZSA6IGRvbWFpbkxpc3QpIHsKLSAgICAgICAgCiAgICAgICAg
IC8vIEluc2VydCBxdWVyeSB3aWxsIGZhaWwgaWYgdG9wIGZyYW1lIGRvbWFpbiBpcyBub3QgYWxy
ZWFkeSBpbiB0aGUgZGF0YWJhc2UKLSAgICAgICAgYXV0byByZXN1bHQgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0b3BGcmFtZVJlc291cmNlKTsKLSAgICAg
ICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRv
cEZyYW1lUmVzb3VyY2Uuc3RyaW5nKCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyIn
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4odG9wRnJhbWVSZXNvdXJjZSkuc2Vjb25kKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsICciJywgdG9wRnJhbWVS
ZXNvdXJjZS5zdHJpbmcoKSwgJyInKTsKICAgICB9Ci0KICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwogfQogCkBAIC0xMjYwLDE0ICsxMjUxLDggQEAgVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXQKIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiBkb21haW5zKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGRvbWFpbk5hbWUgOiBkb21haW5zKSB7Ci0gICAgICAgIGlmICghYnVp
bGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRv
bWFpbk5hbWUuc3RyaW5nKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwotICAgIH0K
LQorICAgIGZvciAoY29uc3QgYXV0byYgZG9tYWluTmFtZSA6IGRvbWFpbnMpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCAnIicsIGRvbWFpbk5h
bWUuc3RyaW5nKCksICciJyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApA
QCAtMTMzNiwxMSArMTMyMSw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiBz
dGF0aWMgU3RyaW5nIGJ1aWxkTGlzdChjb25zdCBXVEY6Okl0ZXJhdG9yUmFuZ2U8SXRlcmF0b3JU
eXBlPiYgdmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1
dG8gZG9tYWluSUQgOiB2YWx1ZXMpIHsKLSAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZG9tYWluSUQpOwotICAgIH0KKyAgICBmb3IgKGF1dG8gZG9tYWluSUQgOiB2YWx1
ZXMpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiLCAi
LCBkb21haW5JRCk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtMTM4
NSwxMiArMTM2Nyw4IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAgICAgfQogCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byB2YWx1ZSA6IHJlc3VsdHMua2V5cygp
KSB7Ci0gICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICBmb3IgKGF1dG8gdmFsdWUgOiByZXN1bHRzLmtleXMoKSkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIHZhbHVlKTsKICAgICBh
dXRvIGRvbWFpbklEc09mSW50ZXJlc3QgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKICAgICBhdXRv
IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklE
LCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVz
dCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKQEAgLTE5NTIsMTcgKzE5MzAs
MTUgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkgKICAgICBzdGQ6OnNvcnQoZG9tYWlucy5iZWdp
bigpLCBkb21haW5zLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiUmVzb3Vy
Y2UgbG9hZCBzdGF0aXN0aWNzOlxuXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCJSZXNvdXJjZSBs
b2FkIHN0YXRpc3RpY3M6XG5cbiIpOwogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykK
ICAgICAgICAgcmVzb3VyY2VUb1N0cmluZyhyZXN1bHQsIGRvbWFpbik7CiAKICAgICBhdXRvIHRo
aXJkUGFydHlEYXRhID0gYWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKCk7CiAgICAgaWYgKCF0aGly
ZFBhcnR5RGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG5JVFAgRGF0
YTpcbiIpOwotICAgICAgICBmb3IgKGF1dG8gdGhpcmRQYXJ0eSA6IHRoaXJkUGFydHlEYXRhKSB7
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRoaXJkUGFydHkudG9TdHJpbmcoKSk7Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0
byB0aGlyZFBhcnR5IDogdGhpcmRQYXJ0eURhdGEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHRoaXJkUGFydHkudG9TdHJpbmcoKSwgJ1xuJyk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdC50b1N0cmluZygpKTsKIH0KQEAgLTI3NDgsMTcgKzI3MjQsMTIgQEAgYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNDb3JyZWN0U3ViU3RhdGlzdGlj
c0NvdW50KGNvbnN0IFJlZ2kKIAogc3RhdGljIHZvaWQgYXBwZW5kQm9vbGVhbihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIGZsYWcpCiB7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgICAgIik7Ci0gICAgYnVpbGRlci5hcHBlbmQobGFiZWwpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICBidWlsZGVyLmFwcGVuZChmbGFn
ID8gIlllcyIgOiAiTm8iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiICAgICIsIGxhYmVsLCAiOiAi
LCBmbGFnID8gIlllcyIgOiAiTm8iKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kTmV4dEVudHJ5
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIFN0cmluZyBlbnRyeSkKK3N0YXRpYyB2b2lkIGFwcGVu
ZE5leHRFbnRyeShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIGVudHJ5KQog
ewotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgICAgICAiKTsKLSAgICBidWlsZGVyLmFw
cGVuZChlbnRyeSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBl
bmQoIiAgICAgICAgIiwgZW50cnksICdcbicpOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25l
ZCBkb21haW5JRCkgY29uc3QKQEAgLTI4MjEsOSArMjc5Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVp
bGRlciYKICAgICBpZiAoZGF0YS0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICAiKTsKLSAgICBidWlsZGVy
LmFwcGVuZCh0YWJsZU5hbWUpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOlxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIiAgICAiLCB0YWJsZU5hbWUsICI6XG4iKTsKICAgICAKICAgICBh
dXRvIHJlc3VsdCA9IGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRChkYXRhLT5jb2x1bW5JbnQo
MCkpOwogICAgIGFwcGVuZE5leHRFbnRyeShidWlsZGVyLCByZXN1bHQpOwpAQCAtMjg1MCwxOCAr
MjgxOSwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNv
dXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJSZWdpc3RyYWJsZSBkb21haW46ICIpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbik7Ci0gICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIlJlZ2lzdHJhYmxlIGRvbWFpbjogIiwgZG9tYWluLCAnXG4nKTsK
ICAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYXBwZW5kQm9vbGVhbihidWlsZGVy
LCAiaGFkVXNlckludGVyYWN0aW9uIiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0
ZW1lbnQtPmNvbHVtbkludChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCkpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAgIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb246ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIgICAgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbjogIik7CiAgICAgaWYgKGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihT
ZWNvbmRzKG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50LT5jb2x1bW5Eb3Vi
bGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCkpKSkKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJ3aXRoaW4gMjQgaG91cnMiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIndpdGhpbiAyNCBob3VycyIpOwogICAgIGVsc2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCItMSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiLTEiKTsKICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKICAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJncmFuZGZhdGhlcmVk
IiwgbV9nZXRSZXNvdXJjZURhdGFCeURvbWFpbk5hbWVTdGF0ZW1lbnQtPmNvbHVtbkludChHcmFu
ZGZhdGhlcmVkSW5kZXgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKQEAgLTM0MTQsMTUg
KzMzODEsMTUgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjph
dHRyaWJ1dGlvblRvU3RyaW5nKFdlYkNvcmU6OlNRTGl0ZVMKICAgICAgICAgaWYgKGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEgIT0gLTEpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbkF0
dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogIiwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgIlxuQXR0
cmlidXRpb24gcHJpb3JpdHk6ICIsIHByaW9yaXR5LCAiXG5BdHRyaWJ1dGlvbiBlYXJsaWVzdCB0
aW1lIHRvIHNlbmQ6ICIpOwogICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZVRvU2VuZCA9PSAt
MSkKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIk5vdCBzZXQiKTsKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiTm90IHNldCIpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50aWxTZW5kID0gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGVhcmxpZXN0VGltZVRvU2VuZCkgLSBXYWxsVGltZTo6bm93KCk7CiAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoKHNlY29uZHNVbnRpbFNlbmQgPj0gMjRfaCAmJiBz
ZWNvbmRzVW50aWxTZW5kIDw9IDQ4X2gpID8gIldpdGhpbiAyNC00OCBob3VycyIgOiAiT3V0c2lk
ZSAyNC00OCBob3VycyIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEu
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG5ObyBhdHRyaWJ1dGlvbiB0cmlnZ2Vy
IGRhdGEuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXG5O
byBhdHRyaWJ1dGlvbiB0cmlnZ2VyIGRhdGEuIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
bk5vIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YS4iKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0zNDUwLDkgKzM0MTcsOCBA
QCBTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmcoKQogICAgIHVuc2lnbmVkIHVuYXR0cmlidXRlZE51bWJlciA9
IDA7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIHdoaWxlICh1bmF0dHJpYnV0ZWRT
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGlmICghdW5h
dHRyaWJ1dGVkTnVtYmVyKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVbmF0
dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6Iik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJcbldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsrdW5hdHRyaWJ1
dGVkTnVtYmVyLCAnXG4nLAorICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSB1bmF0dHJpYnV0
ZWROdW1iZXIgPyAiIiA6ICJVbmF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6
IjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4LCAiXG5XZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCAiLCArK3VuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKICAgICAgICAgICAg
IGF0dHJpYnV0aW9uVG9TdHJpbmcodW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50LmdldCgpLCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6VW5hdHRyaWJ1dGVkKSk7CiAg
ICAgfQogCkBAIC0zNDY1LDEzICszNDMxLDkgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nKCkKIAogICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZWROdW1iZXIgPSAwOwogICAgIHdoaWxlIChhdHRyaWJ1dGVkU2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpZiAoIWF0dHJp
YnV0ZWROdW1iZXIpIHsKLSAgICAgICAgICAgIGlmICh1bmF0dHJpYnV0ZWROdW1iZXIpCi0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIkF0dHJpYnV0ZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHM6XG4iKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIldlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50ICIsICsr
YXR0cmlidXRlZE51bWJlciArIHVuYXR0cmlidXRlZE51bWJlciwgJ1xuJywKKyAgICAgICAgaWYg
KCFhdHRyaWJ1dGVkTnVtYmVyKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodW5hdHRyaWJ1
dGVkTnVtYmVyID8gIlxuIiA6ICIiLCAiQXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50czoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxuV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgIiwgKythdHRyaWJ1dGVkTnVtYmVyICsgdW5hdHRyaWJ1dGVkTnVtYmVyLCAn
XG4nLAogICAgICAgICAgICAgYXR0cmlidXRpb25Ub1N0cmluZyhhdHRyaWJ1dGVkU2NvcGVkU3Rh
dGVtZW50LmdldCgpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0
cmlidXRlZCkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAw
MTg0ZDJjOGVmMThhY2I3ODlhODBkNmM0OTcxNzgxMzQ0YjRhNTExLi42MGM2NjI0ZTI5NTRhNzhj
OTRiOTk1MTU4YmMyNWVlMmRhOTllZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhDb21wbGV0aW9uSGFuCiAgICAgfQogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIlJlc291cmNlIGxvYWQgc3RhdGlzdGljczpcblxuIik7Cisg
ICAgcmVzdWx0LmFwcGVuZCgiUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOlxuXG4iKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBzb3J0ZWRNYXBFbnRyaWVzOwogICAgIGZvciAoYXV0byYgbWFwRW50cnkg
OiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKICAgICAgICAgc29ydGVkTWFwRW50
cmllcy5hcHBlbmQobWFwRW50cnktPnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBjYjMxY2ZjZjQ1YTA3ZjZiYmI0ZDMxZmJmM2I5
NWI0OGE0ZjUzNzRiLi40NTAwYjg1YjZmOTY5MmYyOGEwMTVlYTFkYWNkYzRhMTc1ZTRhOTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTQsMzUg
KzU0LDIwIEBAIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNzUHJvY2Vzc2luZ0lu
dGVydmFsIHsgNV9zIH07CiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpIHsKLSAgICAgICAgaWYgKCFi
dWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWls
ZGVyLmlzRW1wdHkoKSA/ICIiIDogIiwgIiwgZG9tYWluLnN0cmluZygpKTsKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQogCiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYg
ZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKQogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9y
UmVzdHJpY3RXZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxDb29raWVzRm9yKSB7Ci0g
ICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRvbWFpbi5zdHJpbmcoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKGFsbCBkYXRhKSIpOwotICAgIH0KLSAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRlRGF0
YUZvci5kb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IpIHsKLSAgICAgICAg
aWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoZG9tYWluLnN0cmluZygpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoYWxsIGJ1dCBIdHRwT25seSBjb29raWVzKSIpOwot
ICAgIH0KLSAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikg
ewotICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChkb21haW4uc3RyaW5n
KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihhbGwgYnV0IGNvb2tpZXMpIik7
Ci0gICAgfQorICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvUmVtb3ZlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGJ1aWxkZXIuaXNFbXB0eSgpID8gIiIgOiAiLCAiLCBkb21haW4uc3RyaW5n
KCksICIoYWxsIGRhdGEpIik7CisgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9SZW1v
dmVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IuZG9tYWluc1RvRGVsZXRlQWxsQnV0SHR0cE9ubHlD
b29raWVzRm9yKQorICAgICAgICBidWlsZGVyLmFwcGVuZChidWlsZGVyLmlzRW1wdHkoKSA/ICIi
IDogIiwgIiwgZG9tYWluLnN0cmluZygpLCAiKGFsbCBidXQgSHR0cE9ubHkgY29va2llcykiKTsK
KyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvci5kb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcikKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICIsICIsIGRvbWFpbi5z
dHJpbmcoKSwgIihhbGwgYnV0IGNvb2tpZXMpIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIApAQCAtOTMsNyArNzgsNiBAQCBPcGVyYXRpbmdEYXRlIE9wZXJhdGluZ0RhdGU6
OmZyb21XYWxsVGltZShXYWxsVGltZSB0aW1lKQogICAgIGludCB5ZWFyRGF5ID0gZGF5SW5ZZWFy
KG1zLCB5ZWFyKTsKICAgICBpbnQgbW9udGggPSBtb250aEZyb21EYXlJblllYXIoeWVhckRheSwg
aXNMZWFwWWVhcih5ZWFyKSk7CiAgICAgaW50IG1vbnRoRGF5ID0gZGF5SW5Nb250aEZyb21EYXlJ
blllYXIoeWVhckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7Ci0KICAgICByZXR1cm4gT3BlcmF0aW5n
RGF0ZSB7IHllYXIsIG1vbnRoLCBtb250aERheSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGU0M2NlNDIyYmMxYzJlYjMxOTY1
N2IyZjkxZGRhZGFiZTVmOWNlYzUuLmQ0MWFiNDgzMzg5ZmZjMGZhMmFiZWFkZWE2NDZmNzc5Yjg2
NzZkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCkBAIC0xODgsNiArMTg4LDExIEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
c3RhdGlzdGljc1N0b3JlKTsKIH0KIAorUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KG5ldHdvcmtTZXNzaW9uLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0LCBpc0VwaGVtZXJhbCkpOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtMTY3Niw2ICsxNjgxLDc5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhw
CiAgICAgfSk7CiB9CiAKK1N0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Ojp0b1N0cmluZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIkhhcyBiZWVuIGdyYW50ZWQgc3RvcmFnZSBhY2Nlc3MgdW5k
ZXIgIiwgZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIjogIiwgc3RvcmFnZUFjY2Vzc0dyYW50
ZWQgPyAnMScgOiAnMCcsICI7IEhhcyBiZWVuIHNlZW4gdW5kZXIgIiwgZmlyc3RQYXJ0eURvbWFp
bi5zdHJpbmcoKSwgIiBpbiB0aGUgbGFzdCAyNCBob3VyczogIiwgV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkgLSB0aW1lTGFzdFVwZGF0ZWQgPCAyNF9oID8gJzEnIDogJzAnKTsK
K30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eURvbWFpbjsKKyAgICBlbmNvZGVyIDw8IHN0
b3JhZ2VBY2Nlc3NHcmFudGVkOworICAgIGVuY29kZXIgPDwgdGltZUxhc3RVcGRhdGVkOworfQor
CithdXRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlv
bmFsPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PgoreworICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOworICAgIGRlY29kZXIg
Pj4gZGVjb2RlZERvbWFpbjsKKyAgICBpZiAoIWRlY29kZWREb21haW4pCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2Vz
czsKKyAgICBkZWNvZGVyID4+IGRlY29kZWRTdG9yYWdlQWNjZXNzOworICAgIGlmICghZGVjb2Rl
ZFN0b3JhZ2VBY2Nlc3MpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxTZWNvbmRzPiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOworICAgIGRlY29kZXIgPj4gZGVj
b2RlZFRpbWVMYXN0VXBkYXRlZDsKKyAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVj
b2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZSgqZGVj
b2RlZFRpbWVMYXN0VXBkYXRlZCkgfX07Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eTo6b3BlcmF0b3I9
PShjb25zdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0eURvbWFp
biAmJiBzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3JhbnRlZDsK
K30KKworU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlRoaXJkIFBhcnR5IFJlZ2lzdHJhYmxlIERvbWFp
bjogIiwgdGhpcmRQYXJ0eURvbWFpbi5zdHJpbmcoKSwgIlxuICAgIHsiKTsKKyAgICBmb3IgKGF1
dG8gZmlyc3RQYXJ0eSA6IHVuZGVyRmlyc3RQYXJ0aWVzKQorICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgieyAiLCBmaXJzdFBhcnR5LnRvU3RyaW5nKCksICIgfSwiKTsKKyAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnfScpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHRoaXJkUGFydHlEb21haW47CisgICAgZW5jb2RlciA8PCB1bmRlckZpcnN0UGFydGllczsKK30K
KworYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4K
K3sKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFp
bjsKKyAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47CisgICAgaWYgKCFkZWNvZGVkRG9tYWlu
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VmVjdG9yPFRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsK
KyAgICBkZWNvZGVyID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CisgICAgaWYgKCFkZWNvZGVkRmly
c3RQYXJ0aWVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkRmlyc3RQYXJ0aWVzKSB9
fTsKK30KKworYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlE
YXRhOjpvcGVyYXRvcjwoY29uc3QgVGhpcmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAoreworICAg
IHJldHVybiB1bmRlckZpcnN0UGFydGllcy5zaXplKCkgPCBvdGhlci51bmRlckZpcnN0UGFydGll
cy5zaXplKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA5NjNlYTQ3M2QzMjg4
OTc2NjVhZjJlODk5OTdlYmNkMmFiNmI1ZDI0Li43YWExYTA3YWZjMzIxNzczMWNhOTk0MTBhMjkw
M2E0NmQ0YjI5ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0xMTEsMTAxICsxMTEsMzQgQEAgcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VB
Y2Nlc3NTY29wZSA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZTsKICAgICB1c2luZyBSZXF1
ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCA9IFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
dWx0OwogCi0gICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNy
ZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVt
ZXJhbCBpc0VwaGVtZXJhbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgaXNFcGhlbWVyYWwp
KTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWwpOwogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSgpOwogCi1zdHJ1Y3QgVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkgewotICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW47Ci0gICAgYm9vbCBz
dG9yYWdlQWNjZXNzR3JhbnRlZDsKLSAgICBTZWNvbmRzIHRpbWVMYXN0VXBkYXRlZDsKLQotICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZygiSGFzIGJlZW4gZ3JhbnRlZCBzdG9yYWdlIGFjY2VzcyB1bmRlciAiLCBmaXJzdFBhcnR5RG9t
YWluLnN0cmluZygpLCAiOiAiLCBzdG9yYWdlQWNjZXNzR3JhbnRlZCA/ICcxJyA6ICcwJywgIjsg
SGFzIGJlZW4gc2VlbiB1bmRlciAiLCBmaXJzdFBhcnR5RG9tYWluLnN0cmluZygpLCAiIGluIHRo
ZSBsYXN0IDI0IGhvdXJzOiAiLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKSAt
IHRpbWVMYXN0VXBkYXRlZCA8IDI0X2ggPyAnMScgOiAnMCcpOwotICAgIH0KLQotICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGVuY29k
ZXIgPDwgZmlyc3RQYXJ0eURvbWFpbjsKLSAgICAgICAgZW5jb2RlciA8PCBzdG9yYWdlQWNjZXNz
R3JhbnRlZDsKLSAgICAgICAgZW5jb2RlciA8PCB0aW1lTGFzdFVwZGF0ZWQ7Ci0gICAgfQotCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotICAgIHsKLSAgICAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlY29kZWREb21haW47Ci0gICAgICAgIGRlY29kZXIg
Pj4gZGVjb2RlZERvbWFpbjsKLSAgICAgICAgaWYgKCFkZWNvZGVkRG9tYWluKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBPcHRpb25hbDxib29sPiBkZWNvZGVk
U3RvcmFnZUFjY2VzczsKLSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkU3RvcmFnZUFjY2VzczsK
LSAgICAgICAgaWYgKCFkZWNvZGVkU3RvcmFnZUFjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgICAgIAotICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBkZWNvZGVk
VGltZUxhc3RVcGRhdGVkOwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRUaW1lTGFzdFVwZGF0
ZWQ7Ci0gICAgICAgIGlmICghZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZSgq
ZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkgfX07Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5IGNvbnN0IG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGZpcnN0UGFydHlEb21haW4gPT0gb3RoZXIuZmlyc3RQYXJ0
eURvbWFpbiAmJiBzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBvdGhlci5zdG9yYWdlQWNjZXNzR3Jh
bnRlZDsKLSAgICB9Ci19OworICAgIHN0cnVjdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eSB7CisgICAgICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlE
b21haW47CisgICAgICAgIGJvb2wgc3RvcmFnZUFjY2Vzc0dyYW50ZWQ7CisgICAgICAgIFNlY29u
ZHMgdGltZUxhc3RVcGRhdGVkOwogCi1zdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewotICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW47Ci0gICAgVmVjdG9yPFRoaXJk
UGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiB1bmRlckZpcnN0UGFydGllczsKLQotICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0
cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJUaGlyZCBQYXJ0eSBS
ZWdpc3RyYWJsZSBEb21haW46ICIsIHRoaXJkUGFydHlEb21haW4uc3RyaW5nKCksICJcbiIpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAgICB7Iik7Ci0KLSAgICAgICAg
Zm9yIChhdXRvIGZpcnN0UGFydHkgOiB1bmRlckZpcnN0UGFydGllcykgewotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ICIpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoZmlyc3RQYXJ0eS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIH0sIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJ9Iik7Ci0gICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5RG9tYWluOwotICAg
ICAgICBlbmNvZGVyIDw8IHVuZGVyRmlyc3RQYXJ0aWVzOwotICAgIH0KLQotICAgIHN0YXRpYyBP
cHRpb25hbDxUaGlyZFBhcnR5RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKLSAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVk
RG9tYWluOwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47Ci0gICAgICAgIGlmICgh
ZGVjb2RlZERvbWFpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAg
ICAgT3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4g
ZGVjb2RlZEZpcnN0UGFydGllczsKLSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkRmlyc3RQYXJ0
aWVzOwotICAgICAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkRG9t
YWluKSwgV1RGTW92ZSgqZGVjb2RlZEZpcnN0UGFydGllcykgfX07Ci0gICAgfQotCi0gICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVGhpcmRQYXJ0eURhdGEgJm90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHVuZGVyRmlyc3RQYXJ0aWVzLnNpemUoKSA8IG90aGVyLnVuZGVyRmlyc3RQ
YXJ0aWVzLnNpemUoKTsKLSAgICB9Ci19OworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHN0
YXRpYyBPcHRpb25hbDxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZGVjb2Rl
KElQQzo6RGVjb2RlciYpOworCisgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGlnbm9yZXMg
ZGlmZmVyZW5jZXMgaW4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCBpdCBwcm9iYWJseSBzaG91bGQg
YmUgYSBuYW1lZCBmdW5jdGlvbiwgbm90IG9wZXJhdG9yPT0uCisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYpIGNvbnN0Owor
ICAgIH07CisKKyAgICBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgeworICAgICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWluOworICAgICAgICBWZWN0b3I8VGhpcmRQ
YXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IHVuZGVyRmlyc3RQYXJ0aWVzOworCisgICAg
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKKyAgICAgICAgc3RhdGljIE9wdGlvbmFsPFRoaXJkUGFydHlEYXRhPiBk
ZWNvZGUoSVBDOjpEZWNvZGVyJik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc29ydHMgYnkg
bnVtYmVyIG9mIHVuZGVyRmlyc3RQYXJ0aWVzLCBzbyBpdCBwcm9iYWJseSBzaG91bGQgYmUgYSBu
YW1lZCBmdW5jdGlvbiwgbm90IG9wZXJhdG9yPC4KKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVGhpcmRQYXJ0eURhdGEmKSBjb25zdDsKKyAgICB9OwogCiAgICAgdm9pZCBkaWREZXN0cm95
TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4
IGJjYjkxNzFkOGY5MjFiYTIyNDMzZGZiN2EyMzg3Mzg2YWE0ZjI0ODcuLjZhMTlhYzQ1ODFkNDY5
Zjk0MmQ5NDk3NjA3NmI2OTIwMGM1M2ZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTMwNSw4ICszMDUsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVmFsaQogICAgIH0KIAogICAgIGlmIChtX29wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4pIHsKLSAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiLCByZXF1ZXN0LnVy
bCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGZyb20gb3JpZ2luICIsIG1f
b3JpZ2luLT50b1N0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guXG4iKTsKLSAgICAgICAgaGFuZGxlcihhY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0
aW9uSGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2UpKSk7CisgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29u
dHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIobWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQg
dG8gbG9hZCBVUkwgIiwgcmVxdWVzdC51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSwgIiBmcm9tIG9yaWdpbiAiLCBtX29yaWdpbi0+dG9TdHJpbmcoKSwgIi4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIikpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCBjMmM1M2FiZjVlZWIwYjc0YTFlMTUzNjU3OGMwNzdjMmIzZjE1OTljLi4zNjRj
MjM2MThiM2NlMjVlMGM0M2I1NGJmNTM4NTgyYWRhYjgzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDU1LDE3ICs0NTUsMTMg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29y
a1Byb2Nlc3M6Om5ld1Rlc3RpbmdTZXNzaW8KIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAv
LyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJlIHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSBy
ZWdpb24gbmFtZSB0byBiZSB1bmRlciB0aGUgbGltaXQsIG90aGVyd2lzZSBzYW5kYm94IHJ1bGVz
IHdvbid0IHdvcmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vMTM2NDI4NTI+KS4KLSAgICBTdHJpbmcg
c2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vz
c0lEKCkpOwotCi0gICAgYXV0byBzZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCisgICAgYXV0
byBzZXNzaW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKG1ha2VTdHJp
bmcoIldlYktpdCBUZXN0LSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0
b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01h
eVVzZUNvb2tpZUFQSSgpKSB7CiAgICAgICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICAgICAgaWYgKHNlc3Np
b24pCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vz
c2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkp
KTsKICAgICB9Ci0KICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9y
YWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4
IDZkYzMyOGVmMzc3YzQ1Y2UxMDJhZmYxNWU4MDYxZGE3N2RiMDY5YWYuLmY3N2ZkMTEyYTJkYTBi
MmRkOGQ0NjdiM2Q1ZTM4NGZlOTRmMDhkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2
b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
anNvbjsKICAgICAgICAgZW50cnktPmFzSlNPTihqc29uLCBpbmZvKTsKLSAgICAgICAganNvbi5h
cHBlbmRMaXRlcmFsKCIsXG4iKTsKKyAgICAgICAganNvbi5hcHBlbmQoIixcbiIpOwogICAgICAg
ICBhdXRvIHdyaXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7CiAgICAgICAgIHdyaXRl
VG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCAwYTRhYjI1NjYwYjk5MzNiNjBlYjVhMmFjNDJlMmQ0YWY5
YjgxNTNlLi43NThlNDVjNDY4ZDc0ZmNmZmZlOWE1MTk2MDkyZjA2MWNhMDQ3YWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRW50cnk6OnNldE5lZWRzVmFsaWRh
dGlvbihib29sIHZhbHVlKQogCiB2b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNv
biwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgaW5mbykgY29uc3QKIHsKLSAgICBqc29uLmFw
cGVuZExpdGVyYWwoIntcbiIKKyAgICBqc29uLmFwcGVuZCgie1xuIgogICAgICAgICAiXCJoYXNo
XCI6ICIpOwogICAgIGpzb24uYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhtX2tleS5oYXNoQXNTdHJp
bmcoKSk7CiAgICAganNvbi5hcHBlbmQoIixcbiIKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEVu
dHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5m
byYgaW5mbykgY29uc3QKICAgICAgICAgIlwidGltZXN0YW1wXCI6ICIsIG1fdGltZVN0YW1wLnNl
Y29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCksICIsXG4iCiAgICAgICAgICJcIlVSTFwi
OiAiKTsKICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJpbmcobV9yZXNwb25zZS51cmwoKS5z
dHJpbmcoKSk7Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iCisgICAganNvbi5hcHBlbmQo
IixcbiIKICAgICAgICAgIlwiYm9keUhhc2hcIjogIik7CiAgICAganNvbi5hcHBlbmRRdW90ZWRK
U09OU3RyaW5nKGluZm8uYm9keUhhc2gpOwogICAgIGpzb24uYXBwZW5kKCIsXG4iCkBAIC0yNDQs
MTUgKzI0NCwxMiBAQCB2b2lkIEVudHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgY29u
c3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgaW5mbykgY29uc3QKICAgICAgICAgIlwiaGVhZGVyc1wi
OiB7XG4iKTsKICAgICBib29sIGZpcnN0SGVhZGVyID0gdHJ1ZTsKICAgICBmb3IgKGF1dG8mIGhl
YWRlciA6IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSB7Ci0gICAgICAgIGlmICghZmly
c3RIZWFkZXIpCi0gICAgICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwotICAgICAg
ICBmaXJzdEhlYWRlciA9IGZhbHNlOwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIiAgICAi
KTsKKyAgICAgICAganNvbi5hcHBlbmQoc3RkOjpleGNoYW5nZShmaXJzdEhlYWRlciwgZmFsc2Up
ID8gIiIgOiAiLFxuIiwgIiAgICAiKTsKICAgICAgICAganNvbi5hcHBlbmRRdW90ZWRKU09OU3Ry
aW5nKGhlYWRlci5rZXkpOwotICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIjogIik7CisgICAg
ICAgIGpzb24uYXBwZW5kKCI6ICIpOwogICAgICAgICBqc29uLmFwcGVuZFF1b3RlZEpTT05TdHJp
bmcoaGVhZGVyLnZhbHVlKTsKICAgICB9Ci0gICAganNvbi5hcHBlbmRMaXRlcmFsKCJcbiIKKyAg
ICBqc29uLmFwcGVuZCgiXG4iCiAgICAgICAgICJ9XG4iCiAgICAgICAgICJ9Iik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCBmNTg3NDUyNTdmMjgzZTM2ZjgwN2ZmODU4ZGQ0Yjg4ODNhNTVi
M2FjLi5hODA3ZmJmMDEyNWUzY2RmNzUwZGE2MmVmNzI0ZjZjMWE0NWE1ZGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgU3RyaW5nIG1ha2VDYWNoZVBh
dGgoY29uc3QgU3RyaW5nJiBiYXNlQ2FjaGVQYXRoKQogCiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJz
aW9uZWREaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0g
ICAgU3RyaW5nIHZlcnNpb25TdWJkaXJlY3RvcnkgPSBtYWtlU3RyaW5nKHZlcnNpb25EaXJlY3Rv
cnlQcmVmaXgsIFN0b3JhZ2U6OnZlcnNpb24pOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25TdWJkaXJlY3Rv
cnkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFz
ZURpcmVjdG9yeVBhdGgsIG1ha2VTdHJpbmcodmVyc2lvbkRpcmVjdG9yeVByZWZpeCwgU3RvcmFn
ZTo6dmVyc2lvbikpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0b3J5UGF0
aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAw
MGZmOGIyZmU1MDM4ZWNkNDM0ZmM0NjczOGYzYTA1ZWU4ZDQ4MzNkLi5mN2Y1NjgzMWQxZDc3YTJi
NzE2ZDYwN2UzNDBiNjk4NzdlN2E3OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtNzgsMTYgKzc4
LDE1IEBAIHN0YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsYW5ndWFnZXMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAo
aSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCIpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIiwiKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZChsYW5ndWFnZXNb
aV0pOwogCiAgICAgICAgIGludCBxdWFsaXR5ID0gMTAwIC0gaSAqIGRlbHRhOwogICAgICAgICBp
ZiAocXVhbGl0eSA+IDAgJiYgcXVhbGl0eSA8IDEwMCkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI7cT0iKTsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzhdOwogICAgICAg
ICAgICAgZ19hc2NpaV9mb3JtYXRkKGJ1ZmZlciwgOCwgIiUuMmYiLCBxdWFsaXR5IC8gMTAwLjAp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCI7cT0iLCBidWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAppbmRleCAxYWNhZTAwMDBjNDY1NmY1NDYzMzA1OWMxM2YzYWQyNWJjNGUyNDlkLi5hNmU1MDgz
YmQ5MWFmNTAxZTUwZDQwN2RhZTU2M2ZjZmQ1YjJjOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBTdHJpbmcgV2ViU29ja2V0VGFzazo6YWNjZXB0ZWRFeHRlbnNpb25zKCkg
Y29uc3QKICAgICAgICAgYXV0byogZXh0ZW5zaW9uID0gU09VUF9XRUJTT0NLRVRfRVhURU5TSU9O
KGl0LT5kYXRhKTsKIAogICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IiwgIik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChTT1VQX1dFQlNP
Q0tFVF9FWFRFTlNJT05fR0VUX0NMQVNTKGV4dGVuc2lvbiktPm5hbWUpKTsKIAogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IHBhcmFtcyhzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZ2V0X3Jlc3Bv
bnNlX3BhcmFtcyhleHRlbnNpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggNDNhMGNk
MTNjZTgzMjNmY2RlNjBmMGFmYzZjM2ZjOTgxYTE2NzVhNi4uMDgyNTg4MzdhZWQ4YTZlZmM3YzBh
MDM2YzA4MDg2ZWI5ZTEwNWQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEyNiw3ICsx
MjYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1Jl
Z2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBzZXJ2
aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworICAgIGF1dG8gbmFtZSA9IG1h
a2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CiAKICAgICBh
dXRvIGlwID0gaW5ldF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAppbmRleCA1Yzg4MTdlNzRiYTYwMTNmYWMy
YzcxM2JmMzdhYjdlZDkzM2QwY2ZlLi4zYTU4MTRlYjM2ZTU5NjBjZjFmNzc5ZDEwMDA0Mjc3ZGJl
ZjNjNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAt
MTQzLDEwICsxNDMsOCBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVTYW5kYm94
ZWRMb2dGaWxlKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbQogCiB2b2lkIFdlYk1lbW9y
eVNhbXBsZXI6OndyaXRlSGVhZGVycygpCiB7Ci0gICAgU3RyaW5nIHByb2Nlc3NEZXRhaWxzID0g
bWFrZVN0cmluZygiUHJvY2VzczogIiwgcHJvY2Vzc05hbWUoKSwgIiBQaWQ6ICIsIGdldEN1cnJl
bnRQcm9jZXNzSUQoKSwgJ1xuJyk7Ci0KLSAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwcm9jZXNz
RGV0YWlscy51dGY4KCk7Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dG
aWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgYXV0byBw
cm9jZXNzRGV0YWlscyA9IG1ha2VTdHJpbmcoIlByb2Nlc3M6ICIsIHByb2Nlc3NOYW1lKCksICIg
UGlkOiAiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksICdcbicpLnV0ZjgoKTsKKyAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHByb2Nlc3NEZXRhaWxzLmRhdGEoKSwg
cHJvY2Vzc0RldGFpbHMubGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNh
bXBsZVRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1
eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5
UHJvY2Vzc01hYy5tbQppbmRleCBjMjRjMWIzYzU3MjczZTZlMjEyOWE1MTYwYmFhN2ZjNjBmOGU4
ODJlLi5kYWFmZDhkOGJkMzI3MWU0OGE1OWMwNjA4Y2FjZGZlYWU2Nzc1NmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtNTIsMTgg
KzUyLDE4IEBACiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRv
bU51bWJlci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW1wb3J0IDx3dGYvV2FsbFRp
bWUuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lt
cG9ydCA8d3RmL3RleHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oPgogCiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKICNpbXBvcnQgPHJvb3RsZXNzLmg+CiAjZW5kaWYKIAotI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+Ci0KIFNPRlRfTElOS19TWVNURU1fTElCUkFSWShsaWJzeXN0ZW1f
aW5mbykKIFNPRlRfTElOS19PUFRJT05BTChsaWJzeXN0ZW1faW5mbywgbWJyX2Nsb3NlX2Nvbm5l
Y3Rpb25zLCBpbnQsICgpLCAoKSk7CiAKQEAgLTY0Niw4ICs2NDYsNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYQogICAgICAgICAgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXIgPSBjb2RlU2ln
bmluZ0lkZW50aWZpZXIocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllci54cGNDb25uZWN0
aW9uLmdldCgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRJZGVudGlmaWVyLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLmNsaWVudElkZW50
aWZpZXI7Ci0gICAgICAgICAgICBTdHJpbmcgZGVmYXVsdFVzZXJEaXJlY3RvcnlTdWZmaXggPSBt
YWtlU3RyaW5nKFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
KSwgJysnLCBjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHNhbmRib3hQYXJhbWV0ZXJz
LnNldFVzZXJEaXJlY3RvcnlTdWZmaXgoZGVmYXVsdFVzZXJEaXJlY3RvcnlTdWZmaXgpOworICAg
ICAgICAgICAgc2FuZGJveFBhcmFtZXRlcnMuc2V0VXNlckRpcmVjdG9yeVN1ZmZpeChtYWtlU3Ry
aW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0sICcrJywgY2xpZW50
SWRlbnRpZmllcikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KaW5kZXggN2QzYTQwNDMwY2Q1MzlhNjI5
ZDkyMzk5NmM1MDA0ZmVkM2RmYzE3YS4uNmRhNzIwMWMyM2E0NDg2ZTU0ZDk0NmNhMDRiMDI4YjFj
NjljNzhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYk1lbW9yeVNh
bXBsZXIubWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJNZW1vcnlTYW1w
bGVyLm1hYy5tbQpAQCAtMTM4LDM3ICsxMzgsMzcgQEAgV2ViTWVtb3J5U3RhdGlzdGljcyBXZWJN
ZW1vcnlTYW1wbGVyOjpzYW1wbGVXZWJLaXQoKSBjb25zdAogCiAgICAgV2FsbFRpbWUgbm93ID0g
V2FsbFRpbWU6Om5vdygpOwogICAgICAgICAKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZChTdHJpbmcoIlRpbWVzdGFtcCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFw
cGVuZCgiVGltZXN0YW1wIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5k
KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSk7Ci0gICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoU3RyaW5nKCJUb3RhbCBCeXRlcyBvZiBNZW1vcnkgSW4gVXNlIikpOwor
ICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJUb3RhbCBCeXRlcyBvZiBNZW1vcnkg
SW4gVXNlIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0
ZXNJblVzZSk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0
IE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5k
KCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5r
ZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiX3Mp
OwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVsdE1hbGxvY1pvbmVC
eXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRp
c3BhdGNoIENvbnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1v
cnlTdGF0cy5rZXlzLmFwcGVuZCgiRGlzcGF0Y2ggQ29udGludWF0aW9uIE1hbGxvYyBab25lIEJ5
dGVzIl9zKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKGRpc3BhdGNoQ29u
dGludWF0aW9uTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKFN0cmluZygiUHVyZ2VhYmxlIE1hbGxvYyBab25lIEJ5dGVzIikpOworICAgIHdl
YktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJQdXJnZWFibGUgTWFsbG9jIFpvbmUgQnl0ZXMi
X3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQocHVyZ2VhYmxlTWFsbG9j
Wm9uZUJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmlu
ZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMu
YXBwZW5kKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRz
LnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKFN0cmluZygiVG90YWwgQnl0ZXMgb2YgQ29tbWl0dGVkIE1lbW9yeSIpKTsK
KyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiVG90YWwgQnl0ZXMgb2YgQ29tbWl0
dGVkIE1lbW9yeSJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0b3Rh
bEJ5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJp
bmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5
cy5hcHBlbmQoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0
YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRN
ZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMi
KSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRlZmF1bHQgTWFsbG9jIFpv
bmUgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVs
dE1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoU3RyaW5nKCJEaXNwYXRjaCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUgQnl0ZXMiKSk7
CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkRpc3BhdGNoIENvbnRpbnVhdGlv
biBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChkaXNwYXRjaENvbnRpbnVhdGlvbk1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0gICAg
d2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJQdXJnZWFibGUgTWFsbG9jIFpv
bmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIlB1cmdlYWJs
ZSBNYWxsb2MgWm9uZSBCeXRlcyJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFw
cGVuZChwdXJnZWFibGVNYWxsb2Nab25lQnl0ZXNDb21taXR0ZWQpOwotICAgIHdlYktpdE1lbW9y
eVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAg
IHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKCJKYXZhU2NyaXB0IEhlYXAgQnl0ZXMiX3Mp
OwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVzQ29tbWl0
dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkphdmFTY3Jp
cHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoIkph
dmFTY3JpcHQgU3RhY2sgQnl0ZXMiX3MpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7Ci0gICAgd2ViS2l0TWVtb3J5U3Rh
dHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBCeXRlcyIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiSmF2YVNjcmlwdCBKSVQgQnl0ZXMiX3MpOwogICAg
IHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0
ZXMpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiUmVzaWRlbnQg
U2l6ZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZCgiUmVzaWRlbnQgU2l6
ZSJfcyk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChyZXNpZGVudFNpemUp
OwogICAgIAogICAgIHJldHVybiB3ZWJLaXRNZW1vcnlTdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggN2IyOWQ3ZGJj
YjlhYmUyYmViYTA2ZjI0MmZmZGQxYjJjNzRhNTBlMS4uNzZlZTZkMjc5YjdhNzI2NTU2OTZiMWY4
MTA0OGE1YWE5MTQ5N2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM3ODMsNyArMzc4Myw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHdrU2VyCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonLCBleGNlcHRp
b25EZXRhaWxzLmxpbmVOdW1iZXIpOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMu
Y29sdW1uTnVtYmVyID4gMCkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicsIGV4
Y2VwdGlvbkRldGFpbHMuY29sdW1uTnVtYmVyKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiOiAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIpOwogICAgICAg
ICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGV4Y2VwdGlvbkRldGFpbHMubWVzc2FnZSk7CiAg
ICAgICAgIGdfdGFza19yZXR1cm5fbmV3X2Vycm9yKHRhc2ssIFdFQktJVF9KQVZBU0NSSVBUX0VS
Uk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVELApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAppbmRleCAwNTRlYWU0NmUwNzhlMDY4MDU3YWEzOTI0NDI5ZmRjYTBiMmUyNDM4Li40
NGM4ZDc1MjNhYTE0ZDIyMjdjZTNkMDE1NjQyMzhlNjY2ZmEwZGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtODg4LDcgKzg4OCw3IEBAIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVk
Rm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyCiAgICAg
aWYgKGNvbXBvbmVudHMuc2l6ZSgpICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFN0cmluZyB3aWxkY2FyZGVkTUlNRVR5cGUgPSBtYWtlU3RyaW5nKGNvbXBvbmVudHNbMF0sICIv
KiIpOworICAgIGF1dG8gd2lsZGNhcmRlZE1JTUVUeXBlID0gbWFrZVN0cmluZyhjb21wb25lbnRz
WzBdLCAiLyoiKTsKICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyh3aWxkY2FyZGVk
TUlNRVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzAy
YWU5NTFiNTBhZTJjYWQxYTk1MTczNDQ0NWM3MDkzODVkYjRkMi4uZjhjOWZhYjQ4Yjg5ZGQxN2E4
NDI0NjZhMWM4NGRjMTEyNTU1MTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzk2LDcgKzEzOTYs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKEZpbGVTeXN0ZW06OmVuY29kZUZvckZp
bGVOYW1lKG9yaWdpbi50b3BPcmlnaW4uaG9zdCksICIgY29udGVudCIpOworICAgICAgICAgICAg
YXV0byBuYW1lID0gbWFrZVN0cmluZyhGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShvcmln
aW4udG9wT3JpZ2luLmhvc3QpLCAiIGNvbnRlbnQiKTsKICAgICAgICAgICAgIHBhZ2UtPnJlcXVl
c3RTdG9yYWdlU3BhY2UocGFnZS0+bWFpbkZyYW1lKCktPmZyYW1lSUQoKSwgb3JpZ2luLnRvcE9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSwgbmFtZSwgbmFtZSwgY3VycmVudFF1b3RhLCBjdXJy
ZW50U2l6ZSwgY3VycmVudFNpemUsIHNwYWNlUmVxdWlyZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHF1b3RhKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihxdW90YSk7CiAgICAgICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDhl
N2FjN2ZjNjMzNGZlZDYzOWUxNGQxYzhkODE0N2Q4MDYzNzg1YmIuLmU0OGY1OTkyMGZlNGEzYWIz
OTExMjZhMzdjNjMyNzIxOThhMDQ0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNDkyLDEyICs0OTIsMTIgQEAgY29uc3QgY2hhciog
V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKCkKICAgICBidWlsZGVyLmFwcGVuZCgi
V2ViQmFja0ZvcndhcmRMaXN0IDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0
aGlzKSksICIgLSAiLCBtX2VudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXMsIGhhcyBjdXJyZW50IGlu
ZGV4ICIsIG1fY3VycmVudEluZGV4ID8gIllFUyIgOiAiTk8iLCAiICgiLCBtX2N1cnJlbnRJbmRl
eCA/ICptX2N1cnJlbnRJbmRleCA6IDAsICcpJyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKKyAgICAgICAgY29uc3QgY2hhciogcHJlZml4OwogICAgICAgICBpZiAobV9jdXJyZW50SW5k
ZXggJiYgKm1fY3VycmVudEluZGV4ID09IGkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIiAqICIpOworICAgICAgICAgICAgcHJlZml4ID0gIiAqICI7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gIik7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fZW50cmllc1tpXS0+bG9nZ2luZ1N0cmluZygpKTsKKyAgICAgICAgICAgIHBy
ZWZpeCA9ICIgLSAiOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nLCBwcmVmaXgsIG1fZW50
cmllc1tpXS0+bG9nZ2luZ1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gZGVidWdTdHJp
bmcoIlxuIiwgYnVpbGRlci50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAppbmRleCA5MGNmZmE1Y2NiNjAwYTE3ODkyMTVkOTQxMmJiZDNhYWE2
YTZlZWE0Li5iYTkzMGZhNGU3NjczYjVkNTJlMmY0ZDVhYzM5YTVjYzRmYzNjMzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05MzMsNyArOTMzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgaWYgKG1fbWVtb3J5U2FtcGxlckVuYWJsZWQpIHsKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAg
ICAgICAKICAgICAgICAgV2FsbFRpbWUgbm93ID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICBT
dHJpbmcgc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCkpLCAicGlkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBz
YW1wbGVMb2dGaWxlUGF0aCA9IG1ha2VTdHJpbmcoIldlYlByb2Nlc3MiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSksICJw
aWQiLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICBzYW1wbGVMb2dGaWxl
UGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2Ft
cGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxl
TG9nU2FuZGJveEhhbmRsZSk7CiAgICAgICAgIAogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxl
LCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKQEAgLTE0
NzksNyArMTQ3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcihj
b25zdCBkb3VibGUgaW50ZXJ2YWwpCiAgICAgLy8gRm9yIFdlYlByb2Nlc3MKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nU2FuZGJveEhhbmRsZTsgICAgCiAgICAgV2FsbFRp
bWUgbm93ID0gV2FsbFRpbWU6Om5vdygpOwotICAgIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCA9
IG1ha2VTdHJpbmcoIldlYlByb2Nlc3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSkpOworICAgIGF1dG8gc2FtcGxlTG9n
RmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpKTsKICAgICBzYW1w
bGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFy
eUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CiAgICAgCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJv
eEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIGludGVydmFsKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggMDdiMDdiODM1NWRmZGJjZjQ4NWNiMzNmYWIzNjk1ZTc4
N2RkMTk3ZS4uMThiMDY0M2IzMzEyNjRjZjc1YjllODFiZjJlYzMzMmNiZWVlYzM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMzA2LDEzICszMDUsOSBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFBvc3Qg
b24gdGhlIGNvbnNvbGUgYXMgd2VsbCB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGluc3BlY3Rv
ci4KICAgICAgICAgaWYgKCFlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7Ci0gICAgICAgICAgICBT
dHJpbmdCdWlsZGVyIGVycm9yTWVzc2FnZTsKLSAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBl
bmRMaXRlcmFsKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSIpOwotICAgICAgICAgICAgaWYgKCFl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
IGVycm9yTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCI6ICIpOwotICAgICAgICAgICAgICAgIGVycm9y
TWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB3ZWJraXRXZWJQYWdlRGlkU2VuZENvbnNvbGVNZXNzYWdlKG1fd2Vi
UGFnZSwgTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLnRvU3RyaW5nKCksIDAsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSk7CisgICAg
ICAgICAgICBhdXRvIGVycm9yRGVzY3JpcHRpb24gPSBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpOworICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQg
dG8gbG9hZCByZXNvdXJjZSIsIGVycm9yRGVzY3JpcHRpb24uaXNFbXB0eSgpID8gIiIgOiAiOiAi
LCBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29u
c29sZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIDAsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggYzNjYjhiNzg0NTY4MGQxNmRmMWE2NzE4ZTY2ZjQ3OGU5ZTk4OGI1
Ni4uMGE3NmU3MjlmZTAzN2I1MWE3MzVhNmQyNzdlNmE2MzUxNzQxYzVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIwNzIsNyArMjA3Miw3
IEBAIHZvaWQgV2ViUGFnZTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiBz
dGF0aWMgdm9pZCBkdW1wSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIHNpemVfdCBpbmRl
bnQsIGJvb2wgaXNDdXJyZW50SXRlbSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlciwgY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewogICAgIGlmIChpc0N1cnJlbnRJdGVtKQotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoImN1cnItPiAgIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJjdXJyLT4gICIpOwogICAgIGVsc2UgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluZGVudDsgKytpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJyAnKTsKQEAgLTIwODUsMjMgKzIwODUsMTkgQEAgc3RhdGljIHZvaWQgZHVtcEhp
c3RvcnlJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBzaXplX3QgaW5kZW50LCBib29sIGlzQ3VycmVu
dEl0ZW0KICAgICAgICAgICAgIHN0YXJ0ID0gMDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
c3RhcnQgKz0gZGlyZWN0b3J5TmFtZS5sZW5ndGgoKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIoZmlsZSB0ZXN0KToiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQodXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydCkpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiKGZpbGUgdGVzdCk6IiwgU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0
cmluZyhzdGFydCkpOwogICAgIH0gZWxzZQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh1
cmwuc3RyaW5nKCkpOwotICAgIAorCiAgICAgYXV0byYgdGFyZ2V0ID0gaXRlbS50YXJnZXQoKTsK
LSAgICBpZiAodGFyZ2V0Lmxlbmd0aCgpKSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiIChpbiBmcmFtZSBcIiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0
YXJnZXQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiKSIpOwotICAg
IH0KLSAgICAKKyAgICBpZiAodGFyZ2V0Lmxlbmd0aCgpKQorICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiIChpbiBmcmFtZSBcIiIsIHRhcmdldCwgIlwiKSIpOworCiAgICAgaWYgKGl0ZW0u
aXNUYXJnZXRJdGVtKCkpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICAq
Km5hdiB0YXJnZXQqKiIpOwotICAgIAorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAq
Km5hdiB0YXJnZXQqKiIpOworCiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAg
CisKICAgICBWZWN0b3I8UmVmPEhpc3RvcnlJdGVtPj4gY2hpbGRyZW47CiAgICAgY2hpbGRyZW4u
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVtLmNoaWxkcmVuKCkuc2l6ZSgpKTsKICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogaXRlbS5jaGlsZHJlbigpKQpAQCAtMzczMCwyNiArMzcyNiwxOCBAQCB2
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZQogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5n
KENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWxkRnJhbWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewogICAg
IHN3aXRjaCAoaW5jbHVkZUNoaWxkRnJhbWVzKSB7Ci0gICAgY2FzZSBDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzOjpObzogewotICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0g
bV9tYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKLSAgICAgICAgY2FsbGJhY2socmVzdWx0
U3RyaW5nKTsKKyAgICBjYXNlIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6Ok5v
OgorICAgICAgICBjYWxsYmFjayhtX21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGls
ZEZyYW1lczo6WWVzOiB7CisgICAgY2FzZSBDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJh
bWVzOjpZZXM6CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgZm9yIChS
ZWZQdHI8RnJhbWU+IGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFJlbmRlcmVkKCkpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxuXG4iKTsKLQotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHdlYkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCkpOwotICAgICAgICAgICAg
fQorICAgICAgICBmb3IgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0UmVuZGVy
ZWQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqZnJhbWUpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1aWxkZXIu
aXNFbXB0eSgpID8gIiIgOiAiXG5cbiIsIHdlYkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCkpOwog
ICAgICAgICB9Ci0KICAgICAgICAgY2FsbGJhY2soYnVpbGRlci50b1N0cmluZygpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIH0KIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM3NzAs
OCArMzc1OCw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2Up
CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZyYW1lOwogICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYg
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggOTVlZjIyOTRhOTc2
Zjg0NGVjM2E0OTVlYmJiZTNiM2ZkOTZhNzRkNy4uZWY5ZDFjZTZmZTIwYjk3NzY1NDA5ZjY2MDA3
N2MwNjg5YWY4OTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNjMsMTAg
KzYzLDggQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKIHsKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKLSAgICAvLyBTZXNzaW9uIG5hbWUgc2hvdWxkIGJl
IHNob3J0IGVub3VnaCBmb3Igc2hhcmVkIG1lbW9yeSByZWdpb24gbmFtZSB0byBiZSB1bmRlciB0
aGUgbGltaXQsIG90ZWhyd2lzZSBzYW5kYm94IHJ1bGVzIHdvbid0IHdvcmsgKHNlZSA8cmRhcjov
L3Byb2JsZW0vMTM2NDI4NTI+KS4KLSAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5n
KCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwotCi0gICAgYXV0byBzZXNz
aW9uID0gV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIC8vIFNlc3Npb24gbmFtZSBzaG91bGQgYmUgc2hv
cnQgZW5vdWdoIGZvciBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBuYW1lIHRvIGJlIHVuZGVyIHRoZSBs
aW1pdCwgb3RoZXJ3aXNlIHNhbmRib3ggcnVsZXMgd29uJ3Qgd29yayAoc2VlIDxyZGFyOi8vcHJv
YmxlbS8xMzY0Mjg1Mj4pLgorICAgIGF1dG8gc2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihtYWtlU3RyaW5nKCJXZWJLaXQgVGVzdC0iLCBnZXRDdXJyZW50UHJv
Y2Vzc0lEKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CkBAIC04NiwxMyAr
ODQsMTMgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29u
c3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY28KICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
SWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5n
LiIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93
c2luZy4iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247CiAg
ICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9
IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkp
OworICAgICAgICBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihpZGVudGlmaWVyLmdldCgpKTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JhZ2VTZXNz
aW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNz
aW9uRm9ySWRlbnRpZmllcihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBzdG9yYWdlU2Vz
c2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vz
c2lvbkZvcklkZW50aWZpZXIoaWRlbnRpZmllci5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZTsKICAgICBpZiAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggMmVlZWY3MDJlZGMzNjMxNmY0NWI2MDEzYTEwNWY3NjA0M2QzMzQwNS4uOGVh
MjFiNDQ0MzYyYjlkNDM5NjI5M2FhMTBhYTU5ZTBiYTY0MWIxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
QEAgLTM3MiwyMyArMzcyLDE2IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9y
TGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUxhYmVs
czsgaSsrKSB7CiAgICAgICAgICAgICBTdHJpbmcgbGFiZWwgPSBbbGFiZWxzIG9iamVjdEF0SW5k
ZXg6aV07CiAKLSAgICAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0gZmFsc2U7Ci0g
ICAgICAgICAgICBib29sIGVuZHNXaXRoV29yZENoYXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGlm
IChsYWJlbC5sZW5ndGgoKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRD
aGFyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7
Ci0gICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0
Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAg
ICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBi
b29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGxhYmVs
Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3
b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKKyAgICAg
ICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNo
KGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaSAhPSAwKQotICAgICAgICAgICAg
ICAgIHBhdHRlcm4uYXBwZW5kKCd8Jyk7CiAgICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHdvcmQg
Ym91bmRhcmllcyBvbmx5IGlmIGxhYmVsIHN0YXJ0cy9lbmRzIHdpdGggIndvcmQgY2hhcmFjdGVy
cyIuCi0gICAgICAgICAgICAvLyBJZiB3ZSBhbHdheXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRh
cmllcywgdGhpcyB3b3VsZG4ndCB3b3JrIGZvciBsYW5ndWFnZXMKLSAgICAgICAgICAgIC8vIHN1
Y2ggYXMgSmFwYW5lc2UuCi0gICAgICAgICAgICBpZiAoc3RhcnRzV2l0aFdvcmRDaGFyKQotICAg
ICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7Ci0gICAgICAgICAgICBw
YXR0ZXJuLmFwcGVuZChsYWJlbCk7Ci0gICAgICAgICAgICBpZiAoZW5kc1dpdGhXb3JkQ2hhcikK
LSAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOworICAgICAgICAg
ICAgLy8gSWYgd2UgYWx3YXlzIHNlYXJjaGVkIGZvciB3b3JkIGJvdW5kYXJpZXMsIHRoaXMgd291
bGRuJ3Qgd29yayBmb3IgbGFuZ3VhZ2VzIHN1Y2ggYXMgSmFwYW5lc2UuCisgICAgICAgICAgICBw
YXR0ZXJuLmFwcGVuZChpID8gInwiIDogIiIsIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID8gIlxc
YiIgOiAiIiwgbGFiZWwsIGVuZHNXaXRoV29yZENoYXJhY3RlciA/ICJcXGIiIDogIiIpOwogICAg
ICAgICB9CiAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCcpJyk7CiAgICAgICAgIHJlc3VsdCA9IG5l
dyBSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6WWFycjo6VGV4dENh
c2VJbnNlbnNpdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nl
c3NpYmxlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5j
cHAKaW5kZXggZmZjMDgzM2ZiYzUxODY3YTlmNzRmYmI2NGFhMWI5YmVkMGIyMjRkZS4uZWQzNzc2
YjBjMDFiNjM4MWZjNWM2NzI5YzkxNjc5ZWY3OTEzZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNjA2LDEzICs2MDYsMTMgQEAgSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY0tleWJvYXJkU2hvcnRjdXQoVkFSSUFOVCB2Q2hpbGQsIF9f
ZGVyZWZfb3B0X291dAogICAgICAgICAvLyBDdHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNETiBz
dGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1dCBzdHJpbmdzCiAgICAgICAgIC8vIHNob3VsZCBu
b3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVzIHRoZSBzZXBhcmF0b3IgYXMgIisiLgogICAgICAg
ICBpZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDb250cm9s
S2V5KSkKLSAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiQ3RybCsiKTsKKyAgICAgICAgICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5k
KCJDdHJsKyIpOwogICAgICAgICBpZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpBbHRLZXkpKQotICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJBbHQrIik7CisgICAgICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnNC
dWlsZGVyLmFwcGVuZCgiQWx0KyIpOwogICAgICAgICBpZiAobW9kaWZpZXJzLmNvbnRhaW5zKFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSkpCi0gICAgICAgICAgICBhY2Nlc3NLZXlN
b2RpZmllcnNCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlNoaWZ0KyIpOworICAgICAgICAgICAgYWNj
ZXNzS2V5TW9kaWZpZXJzQnVpbGRlci5hcHBlbmQoIlNoaWZ0KyIpOwogICAgICAgICBpZiAobW9k
aWZpZXJzLmNvbnRhaW5zKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KSkKLSAgICAg
ICAgICAgIGFjY2Vzc0tleU1vZGlmaWVyc0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2luKyIpOwor
ICAgICAgICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci5hcHBlbmQoIldpbisiKTsKICAg
ICAgICAgYWNjZXNzS2V5TW9kaWZpZXJzID0gYWNjZXNzS2V5TW9kaWZpZXJzQnVpbGRlci50b1N0
cmluZygpOwogICAgIH0KICAgICAqc2hvcnRjdXQgPSBCU3RyaW5nKFN0cmluZyhhY2Nlc3NLZXlN
b2RpZmllcnMgKyBhY2Nlc3NLZXkpKS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IDAwYTAyMmQ0YzEzODk0YjZhYjQwYjcwMjBjYTlmYjU2MzNlODM2ZDcuLmMx
MWFjOWQ5N2RiYWZlMmEzZjI4NDc3Y2NlMDQ0MWQ5Yjk3NzAzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCkBAIC02MjgwLDggKzYyODAsOCBAQCBzdGF0aWMgdm9pZCBjb21wb3Np
dGlvblRvVW5kZXJsaW5lcyhjb25zdCBWZWN0b3I8RFdPUkQ+JiBjbGF1c2VzLCBjb25zdCBWZWN0
b3I8QgogI2RlZmluZSBBUFBFTkRfQVJHVU1FTlRfTkFNRShuYW1lKSBcCiAgICAgaWYgKGxwYXJh
bSAmIG5hbWUpIHsgXAogICAgICAgICBpZiAobmVlZHNDb21tYSkgXAotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiwgIik7IFwKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
I25hbWUpOyBcCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOyBcCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoI25hbWUpOyBcCiAgICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlOyBcCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MWFlMjc2NjQxZTY3OTdhYzMxOTQyOWYyMjM3NDVlOWYwYmQ1ZGMyYi4uYzQ4YTIwOGM3OGQ1ODk0
MTg5OWFhMTc2MjU0Y2ExZjQxZDBmNGFhZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6
YXBwZW5kTGl0ZXJhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAg
ICAgVXNlIGFwcGVuZCBpbnN0ZWFkIG9mIGFwcGVuZExpdGVyYWwuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNyZWF0ZUNvbW1hbmQpOiBVc2UgbWFrZVN0cmluZyBpbnN0ZWFkIG9mIFN0cmluZ0J1
aWxkZXIuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKTogTWFkZSBsb3RzIG9mIGZpeGVzIHRv
IGNvZGUgaW5zaWRlICNpZiBURVNUX09VVFBVVCwKKyAgICAgICAgd2hpY2ggaGFzbid0IGNvbXBp
bGVkIGluIGEgbG9uZyB0aW1lLiBTdGlsbCBub3QgMTAwJSB0aGVyZSwgYnV0IGNsb3Nlci4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4dENvZGVjLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnRlc3REZWNvZGUpOiBVc2UgYXBwZW5kIGluc3RlYWQgb2YgYXBw
ZW5kTGl0ZXJhbC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGVscFRleHQgY29uc3QpOiBEaXR0by4KKwogMjAyMS0wNS0yMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29s
b3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGQ2ZTA1ZWMz
MzdmZDQwNjNkZWE1YTljNGJiNTRiN2RkNTIyMDE4OWIuLjY1ZDVmZGQ1ZWE1YWM2YTBjMDI5MzE0
ZjRlMDhlYzA5YWQwYTQwNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0J1aWxkZXIuY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgVEVTVChTdHJpbmdCdWlsZGVy
VGVzdCwgVG9BdG9tU3RyaW5nT25FbXB0eSkKICAgICB9CiAgICAgeyAvLyBDbGVhcmVkIFN0cmlu
Z0J1aWxkZXIuCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJXZWJLaXQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIldlYktp
dCIpOwogICAgICAgICBidWlsZGVyLmNsZWFyKCk7CiAgICAgICAgIEF0b21TdHJpbmcgYXRvbVN0
cmluZyA9IGJ1aWxkZXIudG9BdG9tU3RyaW5nKCk7CiAgICAgICAgIEVYUEVDVF9FUShlbXB0eUF0
b20oKSwgYXRvbVN0cmluZyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCA1ODQ4YzJhOTMzZjU5NzY5Nzc0NTdkNmJhODJiMjUw
MTdmMWU0YTI5Li4wODMxYWJjOTM2NGFkNzdhYzdlMzdhMzAwZmM1YjU4YTA4ZTUwZTYwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAK
QEAgLTEwMSwxMyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRUZXN0U3RhdGUoKQogCiBzdGF0
aWMgU3RyaW5nIGNyZWF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHBheWxvYWQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBjb21tYW5kOwotICAgIGNvbW1hbmQuYXBw
ZW5kTGl0ZXJhbCgiZWNobyBcIiIpOwotICAgIGNvbW1hbmQuYXBwZW5kKHBheWxvYWQpOwotICAg
IGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgiXCIgPiAiKTsKLSAgICBjb21tYW5kLmFwcGVuZChwYXRo
KTsKLQotICAgIHJldHVybiBjb21tYW5kLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoImVjaG8gXCIiLCBwYXlsb2FkLCAiXCIgPiAiLCBwYXRoKTsKIH0KIAogc3RhdGljIFN0cmlu
ZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjYzLDExICsyNTcs
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKICAgICB9KTsKIAog
ICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAgICAgICBTdHJp
bmdCdWlsZGVyIGNvbW1hbmQ7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgicm0gLWYg
Iik7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kKHRlbXBGaWxlUGF0aCgpKTsKLQotICAgICAgICBh
dXRvIHJjID0gc3lzdGVtKGNvbW1hbmQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgYXV0byByYyA9IHN5c3RlbShtYWtlU3RyaW5nKCJybSAtZiAiLCB0ZW1wRmlsZVBhdGgoKSku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAgICAgICBpZiAo
cmMgPT0gLTEpCiAgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpAQCAtMzIwLDExICszMTAs
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQog
ICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAo
KSBtdXRhYmxlIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBjb21tYW5kOwotICAgICAgICBjb21t
YW5kLmFwcGVuZExpdGVyYWwoInJtIC1mICIpOwotICAgICAgICBjb21tYW5kLmFwcGVuZCh0ZW1w
RmlsZVBhdGgoKSk7Ci0KLSAgICAgICAgYXV0byByYyA9IHN5c3RlbShjb21tYW5kLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGF1dG8gcmMgPSBzeXN0ZW0obWFrZVN0cmluZygi
cm0gLWYgIiwgdGVtcEZpbGVQYXRoKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBBU1NFUlRf
TkUocmMsIC0xKTsKICAgICAgICAgaWYgKHJjID09IC0xKQogICAgICAgICAgICAgZGlkRmluaXNo
ID0gdHJ1ZTsKQEAgLTM1OSwxMSArMzQ1LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKICAgICB9KTsKIAogICAgIHRlc3RRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGNv
bW1hbmQ7Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kTGl0ZXJhbCgicm0gLWYgIik7Ci0gICAgICAg
IGNvbW1hbmQuYXBwZW5kKHRlbXBGaWxlUGF0aCgpKTsKLQotICAgICAgICBhdXRvIHJjID0gc3lz
dGVtKGNvbW1hbmQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgYXV0byByYyA9
IHN5c3RlbShtYWtlU3RyaW5nKCJybSAtZiAiLCB0ZW1wRmlsZVBhdGgoKSkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAgICAgICBpZiAocmMgPT0gLTEpCiAg
ICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0xvZ2dpbmcuY3BwCmluZGV4IDY1NWY2Y2IxZWRiMWU1NjUzMDliM2Q1NjhmMmIz
YzFhYjkzNmE5NzYuLjhkYzlhYTYwNDA1YjI2M2JlZjM0YjdhNmVkODhjNzE4ZWY2NjVhM2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAKQEAgLTEy
OSw3ICsxMjksNyBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIEluaXRpYWxpemF0aW9uKQogICAgIFdU
RkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyh0ZXN0TG9nQ2hhbm5lbHMsIGxv
Z0NoYW5uZWxDb3VudCwgIkNoYW5uZWwxPWZvbyIpOwogICAgIEVYUEVDVF9FUShUZXN0Q2hhbm5l
bDEubGV2ZWwsIFdURkxvZ0xldmVsOjpFcnJvcik7CiAjaWYgVEVTVF9PVVRQVVQKLSAgICBFWFBF
Q1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiVW5rbm93biBsb2dnaW5nIGxldmVsOiBmb28iLCBm
YWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2UoIlVua25vd24gbG9nZ2luZyBsZXZlbDogZm9vIikpOwogI2VuZGlmCiAKICAgICBXVEZJbml0
aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdHJpbmcodGVzdExvZ0NoYW5uZWxzLCBsb2dDaGFu
bmVsQ291bnQsICJDaGFubmVsMT13YXJuaW5nIik7CkBAIC0xOTYsNDAgKzE5Niw0MCBAQCBURVNU
X0YoTG9nZ2luZ1Rlc3QsIFdURldpbGxMb2dXaXRoTGV2ZWwpCiBURVNUX0YoTG9nZ2luZ1Rlc3Qs
IExPRykKIHsKICAgICBMT0coQ2hhbm5lbDEsICJMb2cgbWVzc2FnZS4iKTsKLSAgICBFWFBFQ1Rf
VFJVRShvdXRwdXQoKS5jb250YWlucygiTG9nIE1lc3NhZ2UuIiwgZmFsc2UpKTsKKyAgICBFWFBF
Q1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJMb2cgTWVzc2FnZS4i
KSk7CiB9CiAKIFRFU1RfRihMb2dnaW5nVGVzdCwgTE9HX1dJVEhfTEVWRUwpCiB7CiAgICAgTE9H
X1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJvciwgIkdvIGFuZCBib2lsIHlv
dXIgYm90dG9tcywgeW91IHNvbnMgb2YgYSBzaWxseSBwZXJzb24uIik7Ci0gICAgRVhQRUNUX1RS
VUUob3V0cHV0KCkuY29udGFpbnMoInNvbnMgb2YgYSBzaWxseSBwZXJzb24uIiwgZmFsc2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzb25z
IG9mIGEgc2lsbHkgcGVyc29uLiIpKTsKIAogICAgIExPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBX
VEZMb2dMZXZlbDo6V2FybmluZywgIllvdSBkb24ndCBmcmlnaHRlbiB1cywgRW5nbGlzaCBwaWcg
ZG9ncy4iKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsKIAogICAgIFdU
RlNldExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6SW5mbyk7CiAg
ICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpXYXJuaW5nLCAiSSdtIEZy
ZW5jaC4gV2h5IGRvIHlvdSB0aGluayBJIGhhdmUgdGhpcyBvdXRyYWdlb3VzIGFjY2VudCwgeW91
IHNpbGx5IGtpbmc/Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIm91dHJh
Z2VvdXMgYWNjZW50IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKCJvdXRyYWdlb3VzIGFjY2VudCIpKTsKIAogICAgIExPR19XSVRI
X0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RGVidWcsICJZb3UgZG9uJ3QgZnJpZ2h0ZW4g
dXMgd2l0aCB5b3VyIHNpbGx5IGtuZWVzLWJlbnQgcnVubmluZyBhcm91bmQgYWR2YW5jaW5nIGJl
aGF2aW9yISIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwogCiAgICAg
V1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1Zyk7
CiAgICAgTE9HX1dJVEhfTEVWRUwoQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1ZywgIkdvIGFu
ZCB0ZWxsIHlvdXIgbWFzdGVyIHRoYXQgd2UgaGF2ZSBiZWVuIGNoYXJnZWQgYnkgR29kIHdpdGgg
YSBzYWNyZWQgcXVlc3QuIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoInNh
Y3JlZCBxdWVzdCIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZSgic2FjcmVkIHF1ZXN0IikpOwogfQogCiBURVNUX0YoTG9nZ2luZ1Rl
c3QsIFJFTEVBU0VfTE9HKQogewogICAgIFJFTEVBU0VfTE9HKENoYW5uZWwxLCAiTG9nIG1lc3Nh
Z2UuIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkxvZyBNZXNzYWdlLiIs
IGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJ
Q2FzZSgiTG9nIE1lc3NhZ2UuIikpOwogfQogCiBURVNUX0YoTG9nZ2luZ1Rlc3QsIFJFTEVBU0Vf
TE9HX0lGKQogewogICAgIGJvb2wgZW5hYmxlZCA9IHRydWU7CiAgICAgUkVMRUFTRV9MT0dfSUYo
ZW5hYmxlZCwgQ2hhbm5lbDEsICJZb3VyIG1vdGhlciB3YXMgYSBoYW1zdGVyLCIpOwotICAgIEVY
UEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJoYW1zdGVyLCIsIGZhbHNlKSk7CisgICAgRVhQ
RUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiaGFtc3RlciwiKSk7
CiAKICAgICBlbmFibGVkID0gZmFsc2U7CiAgICAgUkVMRUFTRV9MT0dfSUYoZW5hYmxlZCwgQ2hh
bm5lbDEsICJhbmQgeW91ciBmYXRoZXIgc21lbHQgb2YgZWxkZXJiZXJyaWVzIC4uLiIpOwpAQCAt
MjM5LDI4ICsyMzksMjggQEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBSRUxFQVNFX0xPR19JRikKIFRF
U1RfRihMb2dnaW5nVGVzdCwgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTCkKIHsKICAgICBSRUxFQVNF
X0xPR19XSVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJyb3IsICJZb3UgZG9uJ3Qg
ZnJpZ2h0ZW4gdXMsIEVuZ2xpc2ggcGlnIGRvZ3MuIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0
KCkuY29udGFpbnMoInBpZyBkb2dzLiIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0
KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgicGlnIGRvZ3MuIikpOwogCiAgICAgUkVMRUFT
RV9MT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9nTGV2ZWw6Oldhcm5pbmcsICJHbyBhbmQg
Ym9pbCB5b3VyIGJvdHRvbXMsIHlvdSBzb25zIG9mIGEgc2lsbHkgcGVyc29uLiIpOwogICAgIEVY
UEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwogCiAgICAgV1RGU2V0TG9nQ2hhbm5lbExl
dmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpJbmZvKTsKICAgICBSRUxFQVNFX0xPR19X
SVRIX0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6V2FybmluZywgIkknbSBGcmVuY2guIFdo
eSBkbyB5b3UgdGhpbmsgSSBoYXZlIHRoaXMgb3V0cmFnZW91cyBhY2NlbnQsIHlvdSBzaWxseSBr
aW5nPyIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJvdXRyYWdlb3VzIGFj
Y2VudCIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmlu
Z0FTQ0lJQ2FzZSgib3V0cmFnZW91cyBhY2NlbnQiKSk7CiAKICAgICBSRUxFQVNFX0xPR19XSVRI
X0xFVkVMKENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RGVidWcsICJZb3UgZG9uJ3QgZnJpZ2h0ZW4g
dXMgd2l0aCB5b3VyIHNpbGx5IGtuZWVzLWJlbnQgcnVubmluZyBhcm91bmQgYWR2YW5jaW5nIGJl
aGF2aW9yISIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwogCiAgICAg
V1RGU2V0TG9nQ2hhbm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1Zyk7
CiAgICAgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTChDaGFubmVsMSwgV1RGTG9nTGV2ZWw6OkRlYnVn
LCAiR28gYW5kIHRlbGwgeW91ciBtYXN0ZXIgdGhhdCB3ZSBoYXZlIGJlZW4gY2hhcmdlZCBieSBH
b2Qgd2l0aCBhIHNhY3JlZCBxdWVzdC4iKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250
YWlucygic2FjcmVkIHF1ZXN0IiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzYWNyZWQgcXVlc3QiKSk7CiB9CiAKIFRFU1RfRihM
b2dnaW5nVGVzdCwgUkVMRUFTRV9MT0dfV0lUSF9MRVZFTF9JRikKIHsKICAgICBib29sIGVuYWJs
ZWQgPSB0cnVlOwogICAgIFJFTEVBU0VfTE9HX1dJVEhfTEVWRUxfSUYoZW5hYmxlZCwgQ2hhbm5l
bDEsIFdURkxvZ0xldmVsOjpFcnJvciwgIklzIHRoZXJlIHNvbWVvbmUgZWxzZSB1cCB0aGVyZSB0
aGF0IHdlIGNhbiB0YWxrIHRvPyIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5z
KCJzb21lb25lIGVsc2UiLCBmYWxzZSkpOworICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoInNvbWVvbmUgZWxzZSIpKTsKIAogICAgIFJFTEVBU0VfTE9H
X1dJVEhfTEVWRUxfSUYoZW5hYmxlZCwgQ2hhbm5lbDEsIFdURkxvZ0xldmVsOjpEZWJ1ZywgIk5v
LCBub3cgZ28gYXdheSIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwpA
QCAtMjc4LDcgKzI3OCw3IEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VyKQogICAgIFdURlNl
dExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJyb3IpOwogICAg
IEVYUEVDVF9UUlVFKGxvZ2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpF
cnJvcikpOwogICAgIGxvZ2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiWW91J3JlIHVzaW5nIGNv
Y29udXRzISIpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJZb3UncmUgdXNp
bmcgY29jb251dHMhIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKCJZb3UncmUgdXNpbmcgY29jb251dHMhIikpOwogICAgIGxvZ2dl
ci0+d2FybmluZyhUZXN0Q2hhbm5lbDEsICJZb3UncmUgdXNpbmcgY29jb251dHMhIik7CiAgICAg
RVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAgICAgbG9nZ2VyLT5pbmZvKFRlc3RD
aGFubmVsMSwgIllvdSdyZSB1c2luZyBjb2NvbnV0cyEiKTsKQEAgLTI4NywxMyArMjg3LDEzIEBA
IFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VyKQogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCku
bGVuZ3RoKCkpOwogCiAgICAgbG9nZ2VyLT5lcnJvcihUZXN0Q2hhbm5lbDEsIExvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIoIkxvZ2dpbmdUZXN0OjpMb2dnZXIiLCB0aGlzKSAsICI6IHRlc3Qgb3V0
cHV0Iik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkxvZ2dpbmdUZXN0OjpM
b2dnZXIoIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKCJMb2dnaW5nVGVzdDo6TG9nZ2VyKCIpKTsKIAogICAgIGxvZ2dlci0+ZXJy
b3IoVGVzdENoYW5uZWwxLCAiV2hhdCBpcyAiLCAxLCAiICsgIiAsIDEyLjVGLCAiPyIpOwotICAg
IEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJXaGF0IGlzIDEgKyAxMi41PyIsIGZhbHNl
KSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgi
V2hhdCBpcyAxICsgMTIuNT8iKSk7CiAKICAgICBsb2dnZXItPmVycm9yKFRlc3RDaGFubmVsMSwg
IldoYXQsICIsICJyaWRkZW4gb24gYSBob3JzZT8iKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQo
KS5jb250YWlucygiV2hhdCwgcmlkZGVuIG9uIGEgaG9yc2U/IiwgZmFsc2UpKTsKKyAgICBFWFBF
Q1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJXaGF0LCByaWRkZW4g
b24gYSBob3JzZT8iKSk7CiAKICAgICBsb2dnZXItPnNldEVuYWJsZWQodGhpcywgZmFsc2UpOwog
ICAgIEVYUEVDVF9GQUxTRShsb2dnZXItPmVuYWJsZWQoKSk7CkBAIC0zMDMsMTEgKzMwMywxMSBA
QCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ2dlcikKICAgICBsb2dnZXItPnNldEVuYWJsZWQodGhp
cywgdHJ1ZSk7CiAgICAgRVhQRUNUX1RSVUUobG9nZ2VyLT5lbmFibGVkKCkpOwogICAgIGxvZ2dl
ci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiWW91J3ZlIGdvdCAiLCAyLCAiIGVtcHR5IGhhbHZlcyBv
ZiAiLCAiY29jb251dHMhIik7Ci0gICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIllv
dSd2ZSBnb3QgMiBlbXB0eSBoYWx2ZXMgb2YgY29jb251dHMhIiwgZmFsc2UpKTsKKyAgICBFWFBF
Q1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJZb3UndmUgZ290IDIg
ZW1wdHkgaGFsdmVzIG9mIGNvY29udXRzISIpKTsKIAogICAgIFdURlNldExvZ0NoYW5uZWxMZXZl
bCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbDo6RXJyb3IpOwogICAgIGxvZ2dlci0+bG9nQWx3
YXlzKFRlc3RDaGFubmVsMSwgIkkgc2hhbGwgdGF1bnQgeW91IGEgc2Vjb25kIHRpbWUhIik7Ci0g
ICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkkgc2hhbGwgdGF1bnQgeW91IGEgc2Vj
b25kIHRpbWUhIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKCJJIHNoYWxsIHRhdW50IHlvdSBhIHNlY29uZCB0aW1lISIpKTsKIAog
ICAgIGxvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxv
Z2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsOjpFcnJvcikpOwpAQCAtMzIy
LDEyICszMjIsMTIgQEAgVEVTVF9GKExvZ2dpbmdUZXN0LCBMb2dnZXIpCiAgICAgQXRvbVN0cmlu
ZyBzdHJpbmcxKCJBdG9tU3RyaW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIGNvbnN0IEF0b21TdHJpbmcgc3RyaW5nMigiY29uc3QgQXRvbVN0cmluZyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBsb2dnZXItPmxvZ0Fsd2F5cyhUZXN0
Q2hhbm5lbDEsIHN0cmluZzEsICIgYW5kICIsIHN0cmluZzIpOwotICAgIEVYUEVDVF9UUlVFKG91
dHB1dCgpLmNvbnRhaW5zKCJBdG9tU3RyaW5nIGFuZCBjb25zdCBBdG9tU3RyaW5nIiwgZmFsc2Up
KTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJB
dG9tU3RyaW5nIGFuZCBjb25zdCBBdG9tU3RyaW5nIikpOwogCiAgICAgU3RyaW5nIHN0cmluZzMo
IlN0cmluZyIpOwogICAgIGNvbnN0IFN0cmluZyBzdHJpbmc0KCJjb25zdCBTdHJpbmciKTsKICAg
ICBsb2dnZXItPmxvZ0Fsd2F5cyhUZXN0Q2hhbm5lbDEsIHN0cmluZzMsICIgYW5kICIsIHN0cmlu
ZzQpOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJTdHJpbmcgYW5kIGNvbnN0
IFN0cmluZyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZSgiU3RyaW5nIGFuZCBjb25zdCBTdHJpbmciKSk7CiB9CiAKIFRFU1RfRihM
b2dnaW5nVGVzdCwgTG9nZ2VySGVscGVyKQpAQCAtMzM1LDI2ICszMzUsMjYgQEAgVEVTVF9GKExv
Z2dpbmdUZXN0LCBMb2dnZXJIZWxwZXIpCiAgICAgRVhQRUNUX1RSVUUobG9nZ2VyKCkuZW5hYmxl
ZCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIkxvZ2dpbmdUZXN0OjpUZXN0Qm9keSgiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiTG9n
Z2luZ1Rlc3Q6OlRlc3RCb2R5KCIpOwogICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obG9nSWRlbnRpZmllcigpKSwgYnVpbGRlcik7Ci0gICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIpIik7CisgICAgYnVpbGRlci5hcHBlbmQoIikiKTsKICAgICBT
dHJpbmcgc2lnbmF0dXJlID0gYnVpbGRlci50b1N0cmluZygpOwogCiAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKLSAgICBFWFBFQ1RfVFJVRSh0aGlzLT5vdXRwdXQoKS5jb250YWlucyhz
aWduYXR1cmUsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZShzaWduYXR1cmUpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgIldlbGNvbWUgYmFjayIsICIgbXkgZnJpZW5kcyIsICIgdG8gdGhlIHNob3ciLCAi
IHRoYXQgbmV2ZXIgZW5kcyIpOwogICAgIFN0cmluZyByZXN1bHQgPSB0aGlzLT5vdXRwdXQoKTsK
LSAgICBFWFBFQ1RfVFJVRShyZXN1bHQuY29udGFpbnMoc2lnbmF0dXJlLCBmYWxzZSkpOwotICAg
IEVYUEVDVF9UUlVFKHJlc3VsdC5jb250YWlucygidG8gdGhlIHNob3cgdGhhdCBuZXZlciIsIGZh
bHNlKSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
c2lnbmF0dXJlKSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoInRvIHRoZSBzaG93IHRoYXQgbmV2ZXIiKSk7CiAKICAgICBXVEZTZXRMb2dDaGFubmVs
TGV2ZWwoJlRlc3RDaGFubmVsMSwgV1RGTG9nTGV2ZWw6Oldhcm5pbmcpOwogCiAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJXZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiKTsKLSAg
ICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiV2UncmUgc28gZ2xhZCB5b3UgY291bGQg
YXR0ZW5kIiwgZmFsc2UpKTsKKyAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKCJXZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiKSk7CiAKICAgICBX
QVJOSU5HX0xPRyhMT0dJREVOVElGSUVSLCAiQ29tZSBpbnNpZGUhICIsICJDb21lIGluc2lkZSEi
KTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygiQ29tZSBpbnNpZGUhIENvbWUg
aW5zaWRlISIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZSgiQ29tZSBpbnNpZGUhIENvbWUgaW5zaWRlISIpKTsKIAogICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJiZSBjYXJlZnVsIGFzIHlvdSBwYXNzLiIpOwogICAgIEVYUEVD
VF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwpAQCAtMzc5LDEzICszNzksMTIgQEAgcHVibGlj
OgogICAgIFdURkxvZ0xldmVsIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGV2ZWw7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYg
Y2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbG9nTWVzc2FnZSkgZmlu
YWwKKyAgICB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwg
V1RGTG9nTGV2ZWwgbGV2ZWwsIFZlY3RvcjxKU09OTG9nVmFsdWU+JiYgbG9nTWVzc2FnZSkgZmlu
YWwKICAgICB7CiAgICAgICAgIG1fbG9nQnVmZmVyLmFwcGVuZChsb2dNZXNzYWdlKTsKICAgICAg
ICAgbV9sYXN0Q2hhbm5lbCA9IGNoYW5uZWw7CiAgICAgICAgIG1fbGFzdExldmVsID0gbGV2ZWw7
CiAgICAgfQotCiAgICAgU3RyaW5nQnVpbGRlciBtX2xvZ0J1ZmZlcjsKICAgICBXVEZMb2dDaGFu
bmVsIG1fbGFzdENoYW5uZWw7CiAgICAgV1RGTG9nTGV2ZWwgbV9sYXN0TGV2ZWwgeyBXVEZMb2dM
ZXZlbDo6RXJyb3IgfTsKQEAgLTQwMCwxNCArMzk5LDE0IEBAIFRFU1RfRihMb2dnaW5nVGVzdCwg
TG9nT2JzZXJ2ZXIpCiAKICAgICBsb2dnZXIoKS5hZGRPYnNlcnZlcihvYnNlcnZlcik7CiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGVzdGluZyAxLCAyLCAzIik7Ci0gICAgRVhQRUNU
X1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXIubG9nKCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwg
MyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZSgidGVzdGluZyAxLCAyLCAzIikpOworICAgIEVYUEVDVF9UUlVFKG9ic2Vy
dmVyLmxvZygpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInRlc3RpbmcgMSwgMiwgMyIpKTsK
ICAgICBFWFBFQ1RfU1RSRVEob2JzZXJ2ZXIuY2hhbm5lbCgpLm5hbWUsIGxvZ0NoYW5uZWwoKS5u
YW1lKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihXVEZMb2dMZXZlbDo6QWx3YXlz
KSwgc3RhdGljX2Nhc3Q8aW50PihvYnNlcnZlci5sZXZlbCgpKSk7CiAKICAgICBsb2dnZXIoKS5y
ZW1vdmVPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgQUxXQVlTX0xPRygidGVzdGluZyAiLCAxLCAi
LCAiLCAyLCAiLCAzIik7Ci0gICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFpbnMo
InRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7CisgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0
KCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgidGVzdGluZyAxLCAyLCAzIikpOwogICAgIEVY
UEVDVF9FUSgwdSwgb2JzZXJ2ZXIubG9nKCkubGVuZ3RoKCkpOwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGV4dENvZGVjLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwCmluZGV4IGZkMDUw
NTBhYzAwODI3YmRlZGJmMmNlODY1NjIwOTNjNjFiYWYwNjEuLmE4Y2U1MTlhMDkwYzVhMWZiMzg0
MGJkZTVlODBiZWZlYjUxYjNiNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9UZXh0Q29kZWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9UZXh0Q29kZWMuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiB0ZXN0RGVjb2RlKGNvbnN0IGNoYXIqIGVuY29kaW5nTmFtZSwgc3RkOjppbml0aWFsaXplcl9s
aXN0PGNvCiAgICAgICAgIGJvb2wgc2F3RXJyb3IgPSBmYWxzZTsKICAgICAgICAgcmVzdWx0QnVp
bGRlci5hcHBlbmQoZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0ZXJzKGNvZGVjLT5kZWNv
ZGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSwgbGFzdCwgZmFsc2UsIHNhd0Vycm9yKSkp
OwogICAgICAgICBpZiAoc2F3RXJyb3IpCi0gICAgICAgICAgICByZXN1bHRCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiBFUlJPUiIpOworICAgICAgICAgICAgcmVzdWx0QnVpbGRlci5hcHBlbmQoIiBF
UlJPUiIpOwogICAgIH0KICAgICByZXR1cm4gZXNjYXBlTm9uQVNDSUlQcmludGFibGVDaGFyYWN0
ZXJzKHJlc3VsdEJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDAyOTQ2NWExMTk3NzU1MTMyN2M4MGY3YTU1M2Iw
OTBmNGZmYTliNjMuLjY1YTNhMDRlNjMzZGM3ODcyYTdkMDVjOWI0ZWExMmEwZjMwZWE1OGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC01NjYsNyAr
NTY2LDcgQEAgU3RyaW5nIGF0dHJpYnV0ZXNPZkVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogZWxlbWVudCkKICAgICBidWlsZGVyLmFwcGVuZChlbGVtZW50LT5yb2xlKCktPnN0cmluZygp
LCAnXG4nKTsKIAogICAgIC8vIEZvciB0aGUgcGFyZW50IHdlIHByaW50IGl0cyByb2xlIGFuZCBp
dHMgbmFtZSwgaWYgYXZhaWxhYmxlLgotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQVhQYXJl
bnQ6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWFBhcmVudDogIik7CiAgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsK
ICAgICBBdGtPYmplY3QqIGF0a1BhcmVudCA9IHBhcmVudCA/IHBhcmVudC0+cGxhdGZvcm1VSUVs
ZW1lbnQoKS5nZXQoKSA6IG51bGxwdHI7CiAgICAgaWYgKGF0a1BhcmVudCkgewpAQCAtNTc1LDcg
KzU3NSw3IEBAIFN0cmluZyBhdHRyaWJ1dGVzT2ZFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgICAgIGlmIChwYXJlbnROYW1lICYmIHBhcmVudE5hbWVbMF0pCiAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiAiLCBwYXJlbnROYW1lKTsKICAgICB9IGVsc2UK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIobnVsbCkiKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIihudWxsKSIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAgYnVp
bGRlci5hcHBlbmQoIkFYQ2hpbGRyZW46ICIsIGVsZW1lbnQtPmNoaWxkcmVuQ291bnQoKSwgJ1xu
Jyk7CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkFYSGVscDogIik7CisgICAgYnVpbGRlci5h
cHBlbmQoIkFYSGVscDogIik7CiAKICAgICBmb3IgKGd1aW50IHRhcmdldENvdW50ID0gMDsgdGFy
Z2V0Q291bnQgPCB0YXJnZXRMaXN0LT5sZW47IHRhcmdldENvdW50KyspIHsKICAgICAgICAgaWYg
KEF0a09iamVjdCogdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJfYXJyYXlf
aW5kZXgodGFyZ2V0TGlzdCwgdGFyZ2V0Q291bnQpKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>