<?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>238701</bug_id>
          
          <creation_ts>2022-04-02 12:58:12 -0700</creation_ts>
          <short_desc>Start replacing String(const char*) constructor with a String::fromLatin1(const char*) function</short_desc>
          <delta_ts>2022-04-06 12:06:18 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>238693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pascoe</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857608</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 12:58:12 -0700</bug_when>
    <thetext>Replace String(const char*) constructor with a String::fromLatin1(const char*) function. It is more consistent with String::fromUTF8() and makes it clearer that input is treated as Latin-1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858680</commentid>
    <comment_count>1</comment_count>
      <attachid>456777</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 20:28:44 -0700</bug_when>
    <thetext>Created attachment 456777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858691</commentid>
    <comment_count>2</comment_count>
      <attachid>456782</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 21:44:41 -0700</bug_when>
    <thetext>Created attachment 456782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858917</commentid>
    <comment_count>3</comment_count>
      <attachid>456782</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-06 10:53:24 -0700</bug_when>
    <thetext>Comment on attachment 456782
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858959</commentid>
    <comment_count>4</comment_count>
      <attachid>456782</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 12:05:36 -0700</bug_when>
    <thetext>Comment on attachment 456782
Patch

Clearing flags on attachment: 456782

Committed r292487 (?): &lt;https://commits.webkit.org/r292487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858960</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 12:05:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858961</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-06 12:06:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91368828&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456777</attachid>
            <date>2022-04-05 20:28:44 -0700</date>
            <delta_ts>2022-04-05 21:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238701-20220405202843.patch</filename>
            <type>text/plain</type>
            <size>97986</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Zjk4OWEyZWMzZDdiNmQ1MzZjMTNhZjUxNmIzODczMjA2ODUyMzI3Li5mZjgzNDZhYTBhOGQ3MWMy
YmViMjg5NGJmMzQ0ZTdlYmM4ZDdlNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLm1t
OgorICAgICAgICAoY3JlYXRlU3RydWN0SGFuZGxlck1hcCk6CisgICAgICAgIChoYW5kZXJGb3JT
dHJ1Y3RUYWcpOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgIChhbGxv
Y2F0ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MpOgorICAgICAgICAqIEFQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpu
YW1lKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19j
b250ZXh0X2NoZWNrX3N5bnRheCk6CisgICAgICAgICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNh
dGVkOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRBUElCYWNrdHJhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAgICAqIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcEpJVE1lbW9yeSk6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnVwZGF0ZUVycm9yTWVzc2FnZSk6CisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNh
Y2hlRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJk
RXJyb3I6Om1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6
CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmtleXdvcmRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxMb2NhbGU6Om51bWJlcmluZ1N5c3RlbXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
dG9TdHJpbmdXaXRoUmFkaXgpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6aW50NTJUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6b3ZlcnJpZGVBbGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldEFsaWFzZWRPcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b0xvY2Fs
ZUNhc2UpOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAocGFyc2VBcmd1bWVu
dHMpOgorICAgICAgICAqIHRvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUuY3BwOgorICAgICAgICAq
IHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25BbGxv
d2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorCiAyMDIyLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gU3RyaWN0bHkgYW5ub3RhdGUgcG9pbnRlcnMgd2l0aCBUcnVzdGVk
SW1tUHRyIGluIENDYWxsSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMzIwYWIxODkyYmM3MjFmMDliODkxZGY4NTll
OWI2NDY0MjhhZjEyLi5lM2Q4N2VkNGEzNWE4OTg4M2Y2MGNhNmFlZGJkYTM2YjBkODZlMjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RhcnQgcmVwbGFjaW5nIFN0cmluZyhjb25zdCBjaGFyKikgY29u
c3RydWN0b3Igd2l0aCBhIFN0cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFyKikgZnVuY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODcwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0xv
Z2dlci5oOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcpOgorICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChzdHJpbmcpOgorICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IGFzIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlZjM0MGE0NDAzMTJiYTdjMGRjZjU2Mjc1YTE5
NWI2YWE3YjBiNy4uZjc3Y2VhM2QxZTQ3Nzg4MjYxYTE4NTA0MDBlMTExNDY5NDE4MzY4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hh
ciopIGNvbnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbkZh
aWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENTdGF0c0xvZ2dlcjo6dG9KU09OU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjp0b1JUQ0Vycm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdHRlc3RhdGlvbk1hcCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHA6CisgICAgICAg
IChjYm9yOjpDQk9SVmFsdWU6OkNCT1JWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
Y2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZyYW1lcyk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwp
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldERvbWFpbkxpc3QpOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DRkIuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3BwOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3Bw
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHA6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUy5jcHA6CisgICAgICAgICogY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRv
ci5oOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6dHlwZXMgY29uc3QpOgor
ICAgICAgICAqIGRvbS9UZXh0RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVj
b2Rlcjo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVTcGFuQ2xhc3NTdHJpbmcpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW50ZXJj
aGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4pOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFwcGVuZE5ld0xpbmVGZWVk
VG9TZWxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRl
c3RQcmVsb2FkU2Nhbm5lclZpZXdwb3J0U3VwcG9ydCk6CisgICAgICAgICogbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVu
dDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6dGhyZWFkSW5mb3MpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnhyU3RhbmRh
cmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm91
ckNDLmg6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkZvdXJDQz46OnRvU3Ry
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0
U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAgICAg
IChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZv
aWNlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjphdXRob3JpemVyRnVuY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVDb2NvYTo6bW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxl
Q29jb2E6OnNob3J0TW9udGhMYWJlbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dGVzdERpY3Rpb25hcnlMb2dnaW5nKToK
KyAgICAgICAgKiB4bWwvWFBhdGhWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlZh
bHVlOjpWYWx1ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nv
cjo6dHJhbnNmb3JtVG9TdHJpbmcpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0w
NC0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAg
W1BsYXlTdGF0aW9uWyBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjI5MjQwOApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKaW5kZXggNjA0OThkYmViYTY2ZTVhNmRlNzg2NzFmY2Q3YTQ4YzJlZTY1NDQ5Yy4uYzc2YTZk
ZTZjYmQ5MTk4NDg2OGQzYWQ3MjE3YTI0NjQyMDYwYzY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBTdGFydCByZXBsYWNpbmcgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1
Y3RvciB3aXRoIGEgU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKSBmdW5jdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJH
UFU6OmFkYXB0ZXJOYW1lKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6cG9w
RXJyb3JTY29wZSk6CisKIDIwMjItMDQtMDUgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBQQUw6IEFkZCBoZWFkZXJzLW9ubHkgZGVwZW5kZW5j
eSBvbiBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkdQVS9DaGFuZ2VMb2cKaW5kZXggZjQ1ZmQ3ZjM3MTA0MDEzMTFhMDE1ZDE2NTBlMGE5Yjc5
Y2U0MWJjYi4uNWQ3MmU4MTVhMjY0MzI1YmI0Y2YzZjI2ZjJkNDk2YWY2MzNjMzdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQ
VS9BUElDb252ZXJzaW9ucy5oOgorICAgICAgICAoV2ViR1BVOjpmcm9tQVBJKToKKyAgICAgICAg
KiBXZWJHUFUvQWRhcHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVxdWVzdERl
dmljZSk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdl
YkdQVTo6Y3JlYXRlQ29uc3RhbnRWYWx1ZXMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbToK
KyAgICAgICAgKFdlYkdQVTo6ZWFybHlDb21waWxlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdl
YkdQVTo6RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorCiAyMDIyLTA0LTA0ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gU2V0
IHN2bjppZ25vcmUgb24gV2ViR1BVLnhjb2RlcHJvagpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCmluZGV4IGYxMmEyYzQ5NTNmMDAzMmRmYjRiNzJmNjhmZjgwZmVkZGI2OTAzNTQuLmQ2
YWY1YTBjNzgxZjQyY2IxM2M4YzFmZTUyNTg2MzQzNjJmM2Y1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KQEAgLTExNzksNyArMTE3OSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5k
bGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgdmFsdWVXaXRoPEZvbz46Y29udGV4dDogbWV0
aG9kLgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdFN5c3RlbTxjaGFyW10+KG1ldGhvZF9jb3B5
UmV0dXJuVHlwZShtZXRob2QpKTsKLSAgICAgICAgU3RydWN0SGFuZGxlcnM6Oml0ZXJhdG9yIGl0
ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJpbmcgeyB0eXBlLmdldCgpIH0pOworICAgICAg
ICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0
cmluZzo6ZnJvbUxhdGluMSh0eXBlLmdldCgpKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVj
dEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFn
SGFuZGxlciYgaGFuZGxlciA9IGl0ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3Rh
dGljIFN0cnVjdFRhZ0hhbmRsZXIqIGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNv
ZGVkVHlwZSkKIAogICAgIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBj
cmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3Ig
aXRlciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoU3Ry
aW5nOjpmcm9tTGF0aW4xKGVuY29kZWRUeXBlKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3RydWN0SGFu
ZGxlcnMtPmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gJml0ZXItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCBmODIxZGY4
ZTNlYmVkNTdmNTQwY2QyZjAxZDY0ZWM5NmRjZmE4NmNkLi43YzMzMTVmODIzMzZlZTIzMjhiNmFh
ZTRmN2Q3MGRmMDZiNzkzM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0
ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MoSlNDb250ZXh0ICpjb250ZXh0LCBjb25zCiAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHNlbF9nZXROYW1lKHNlbGVjdG9yKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWlzSW5pdEZhbWlseU1ldGhvZChAKG5hbWUpKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGluaXRUYWJsZS5zZXQoU3RyaW5n
IHsgbmFtZSB9LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXByb3RvY29sKTsKKyAgICAgICAgICAgICAg
ICBpbml0VGFibGUuc2V0KFN0cmluZzo6ZnJvbUxhdGluMShuYW1lKSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilwcm90b2NvbCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
NDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0ZUNvbnN0cnVjdG9y
Rm9yQ3VzdG9tQ2xhc3MoSlNDb250ZXh0ICpjb250ZXh0LCBjb25zCiAgICAgICAgIGZvckVhY2hN
ZXRob2RJbkNsYXNzKGN1cnJlbnRDbGFzcywgXihNZXRob2QgbWV0aG9kKSB7CiAgICAgICAgICAg
ICBTRUwgc2VsZWN0b3IgPSBtZXRob2RfZ2V0TmFtZShtZXRob2QpOwogICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSA9IHNlbF9nZXROYW1lKHNlbGVjdG9yKTsKLSAgICAgICAgICAgIGF1dG8g
aXRlciA9IGluaXRUYWJsZS5maW5kKFN0cmluZyB7IG5hbWUgfSk7CisgICAgICAgICAgICBhdXRv
IGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmc6OmZyb21MYXRpbjEobmFtZSkpOwogCiAgICAg
ICAgICAgICBpZiAoaXRlciA9PSBpbml0VGFibGUuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KaW5kZXggOGQ4ZTM1MTY5ZDk2MzQ2OTIzN2U0Mzk1ZDYyOTMzMzM0YjI2ZmQ1YS4uODAz
MzU3OWQyYTU3MzRhZWE5ZjRlNzg2ZWRkZWJmYzQyYjkxY2FjZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC01NzQsNyArNTc0
LDcgQEAgdm9pZCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBT
dHJpbmcgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpuYW1lKCkKIHsKICAgICBpZiAobV90eXBl
ID09IENhbGxiYWNrSW5pdE1ldGhvZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZyB7IGNsYXNzX2dl
dE5hbWUobV9pbnN0YW5jZUNsYXNzLmdldCgpKSB9OworICAgICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tTGF0aW4xKGNsYXNzX2dldE5hbWUobV9pbnN0YW5jZUNsYXNzLmdldCgpKSk7CiAgICAgLy8g
RklYTUU6IE1heWJlIHdlIGNvdWxkIHN1cHBvcnQgaGF2aW5nIHRoZSBzZWxlY3RvciBhcyB0aGUg
bmFtZSBvZiB0aGUgbm9uLWluaXQgCiAgICAgLy8gZnVuY3Rpb25zIHRvIG1ha2UgaXQgYSBiaXQg
bW9yZSB1c2VyLWZyaWVuZGx5IGZyb20gdGhlIEpTIHNpZGU/CiAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAK
aW5kZXggMGQzNTgzODUzMmY4OTQ2Yzk3NDlhNzFiMjFjNDc1MDQzMWUzMzY3My4uNTZjMzI0M2Zm
OWJmYzk3ODQ3OTU4MDVmMDA5Y2ZjY2ExOWNiMTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNr
U3ludGF4UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1
cmkgPyBVUkwoU3RyaW5nIHsgdXJpIH0pIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVy
aSA/IFVSTChTdHJpbmc6OmZyb21MYXRpbjEodXJpKSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJj
ZUNvZGUgc291cmNlID0gSlNDOjptYWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVu
Z3RoIDwgMCA/IHN0cmxlbihjb2RlKSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291
cmNlVVJMIH0sCiAgICAgICAgIHNvdXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkp
OwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
dGVzdGFpci5jcHAKaW5kZXggNTI2ZTNiOGU4MGQ4YzE3ZDg5YTg0ZmVkYTUxODcwMTU1ZTVjZTgw
My4uMzRkYTI5YmYyMWEwZjVjOTQwMDY3ZWUwZDRiMTg5ZWU3M2Y3ZTMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCBpbmxp
bmUgVmVjdG9yPFN0cmluZz4gbWF0Y2hBbGwoY29uc3QgQ1N0cmluZyYgc291cmNlLCBzdGQ6OnJl
Z2V4IHJlZ2V4KQogICAgIHN0ZDo6c21hdGNoIG1hdGNoOwogICAgIGZvciAoc3RkOjpzdHJpbmcg
c3RyID0gc291cmNlLmRhdGEoKTsgc3RkOjpyZWdleF9zZWFyY2goc3RyLCBtYXRjaCwgcmVnZXgp
OyBzdHIgPSBtYXRjaC5zdWZmaXgoKSkgewogICAgICAgICBBU1NFUlQobWF0Y2guc2l6ZSgpID09
IDEpOwotICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaFswXS5zdHIoKS5jX3N0cigpKTsKKyAg
ICAgICAgbWF0Y2hlcy5hcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKG1hdGNoWzBdLnN0cigpLmNf
c3RyKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIG1hdGNoZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDNh
YTkyNTNkMzM0ODcwMDNlOTczN2RiZDIyMGI4MGE0YWFiOTNhOTkuLmJlYzg3M2ZiM2VmODZkN2E0
YTU4YTM1YjRkZWNjOTQ1NmZjZDdmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZv
aWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciog
YXJndW1lbnQpCiB7CiAgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwg
U3RyaW5nIHsgYXJndW1lbnQgfSkpOworICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2
bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGFyZ3VtZW50KSkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApp
bmRleCBlMDJmYjgxN2QzZmZiNjEwNjA4MGNhOTA3ZjExMmZjNjlkNDQ2MGFkLi4xMjRkZTg5MDU5
MDliNzY1MDFiOWJhMGYwZGZjM2MwMDZmNjdkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE0NSw3ICsxNDUs
NyBAQCBTdHJpbmcgRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAg
aWYgKGlzVGFpbERlbGV0ZWQoKSkgewogICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuYyA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jYWxsZWUp
KQogICAgICAgICAgICAgcmV0dXJuIGZ1bmMtPmNhbGN1bGF0ZWREaXNwbGF5TmFtZSh2bSk7Ci0g
ICAgICAgIHJldHVybiBTdHJpbmcgeyBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2stPmlu
ZmVycmVkTmFtZSgpLmRhdGEoKSB9OworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4x
KG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbV92YWxpZE1hY2hpbmVGcmFtZS0+ZnJpZW5kbHlGdW5jdGlv
bk5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHAKaW5kZXggZjBhODE5MzI0OWYwNjNjNjUwM2NiNzdlNzJiZTJjNzg3MTc2YjM5
Yy4uOWQ1YzYxOTIyMWVlZTVkNTFjZmVmMTU4OGViNzkyYjY1OGEyYzM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTU4
Myw3ICs1ODMsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxi
b29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgICAgICB1bnNp
Z25lZCByZWFjaGFiaWxpdHlSZWFzb25JbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoaXQudmFs
dWUucmVhY2hhYmlsaXR5RnJvbU9wYXF1ZVJvb3RSZWFzb25zKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKFN0cmluZyB7IGl0LnZhbHVlLnJlYWNoYWJp
bGl0eUZyb21PcGFxdWVSb290UmVhc29ucyB9LCBuZXh0TGFiZWxJbmRleCk7CisgICAgICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKFN0cmluZzo6ZnJvbUxhdGluMShp
dC52YWx1ZS5yZWFjaGFiaWxpdHlGcm9tT3BhcXVlUm9vdFJlYXNvbnMpLCBuZXh0TGFiZWxJbmRl
eCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAg
ICAgICAgICBuZXh0TGFiZWxJbmRleCsrOwogICAgICAgICAgICAgICAgIHJlYWNoYWJpbGl0eVJl
YXNvbkluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAyNTFkYmUzYTVkZTkwNmE1NmUwZDc4MzAzYzJiZTRi
NDQ1MzExMWQ5Li5lZjcyZTRkYWQ2YTg4MzczYzBlMDBjMTk3MzNkYjY1NTUyMGVhZWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEFQSUJhY2t0
cmFjZShTY3JpcHRDYWxsU3RhY2smIGNhbGwKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBhdXRvIGRlbWFuZ2xlZCA9IFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHN0
YWNrW2ldKTsKICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAgIGNhbGxTdGFjay5h
cHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFN0cmluZyB7IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgp
ID8gZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkg
fSwgIltuYXRpdmUgY29kZV0iX3MsIG5vU291cmNlSUQsIDAsIDApKTsKKyAgICAgICAgICAgIGNh
bGxTdGFjay5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFN0cmluZzo6ZnJvbUxhdGluMShkZW1hbmds
ZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpIDogZGVtYW5n
bGVkLT5tYW5nbGVkTmFtZSgpKSwgIltuYXRpdmUgY29kZV0iX3MsIG5vU291cmNlSUQsIDAsIDAp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxs
RnJhbWUoIj8iX3MsICJbbmF0aXZlIGNvZGVdIl9zLCBub1NvdXJjZUlELCAwLCAwKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCBlN2Mw
MTlkZmFmN2JhNWJmNjI4NjIxOGU2MzUwNGUyMjM1OTYxZThhLi42YmY1MDA2MTljNTAxYzAyOWU3
ZDgxNzk0MTRhNTE4MGRlNGY1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0LmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29ubmVjdGlvblRvVGFyZ2V0LT5zZW5kTWVzc2FnZVRvVGFyZ2V0
KFN0cmluZyB7IGV2ZW50Lm1lc3NhZ2UudmFsdWUoKSB9KTsKKyAgICBjb25uZWN0aW9uVG9UYXJn
ZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXQoU3RyaW5nOjpmcm9tTGF0aW4xKGV2ZW50Lm1lc3NhZ2Uu
dmFsdWUoKSkpOwogfQogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vz
c2lvbihjb25zdCBFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBiZGQ5NTljZWM3OTFlNDQ3MzZiMTdkNGJl
NTk2YTBjOGY0ZWI0ZGQ2Li5kNjlmMWY1NTg0NmM1Y2FhOTgzM2Y5NWQ4NTQ0NjIxYjY1OWE4N2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHAKQEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgZHVtcEpJVE1lbW9yeShjb25zdCB2b2lk
KiBkc3QsIGNvbnN0IHZvaWQqIHNyYywgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0YXRpYyB2b2lk
IGZsdXNoKCkgV1RGX1JFUVVJUkVTX0xPQ0soZHVtcEpJVE1lbW9yeUxvY2spCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBwYXRo
IHsgT3B0aW9uczo6ZHVtcEpJVE1lbW9yeVBhdGgoKSB9OworICAgICAgICAgICAgICAgIGF1dG8g
cGF0aCA9IFN0cmluZzo6ZnJvbUxhdGluMShPcHRpb25zOjpkdW1wSklUTWVtb3J5UGF0aCgpKTsK
ICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIlcGlkIiwgU3RyaW5nOjpudW1i
ZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiAgICAgICAgICAgICAgICAgZmQgPSBvcGVuKEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIE9fQ1JFQVQg
fCBPX1RSVU5DIHwgT19BUFBFTkQgfCBPX1dST05MWSB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywg
MDY2Nik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmQgIT0gLTEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCA4OTdmMDk1ZjYzMzU4YTZiNzE0NjU4OTRmMzgyNDk4ZGY2ZWNhOTU4
Li45NDRmMDI2YzEyNzg3YzEyNjdiM2JmNzMxMDRmMWVlODI4NWRkMjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTg0Nyw3ICsxODQ3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uUmVhZGxpbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAg
ICAgICAgbGluZS5hcHBlbmQoYyk7CiAgICAgfQogICAgIGxpbmUuYXBwZW5kKCdcMCcpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBTdHJp
bmcgeyBsaW5lLmRhdGEoKSB9KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhnbG9iYWxPYmplY3QtPnZtKCksIFN0cmluZzo6ZnJvbUxhdGluMShsaW5lLmRhdGEoKSkpKTsK
IH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJlY2lzZVRpbWUsIChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopKQpAQCAtMjgxMyw5ICsyODEzLDkgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KIAogICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS5nZXRPYmplY3QoKSkgewogICAgICAgICBpZiAoYXV0byogbWVtb3J5ID0ganNE
eW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TWVtb3J5Kj4odm0sIG9iamVjdCkpCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcgeyBtYWtlU3RyaW5n
KG1lbW9yeS0+bWVtb3J5KCkubW9kZSgpKSB9KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21MYXRpbjEobWFrZVN0cmluZyhtZW1v
cnktPm1lbW9yeSgpLm1vZGUoKSkpKSk7CiAgICAgICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IGpz
RHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4odm0sIG9iamVjdCkpCi0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcgeyBtYWtlU3Ry
aW5nKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpIH0pKTsKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShtYWtlU3RyaW5nKGlu
c3RhbmNlLT5tZW1vcnlNb2RlKCkpKSkpOwogICAgIH0KIAogICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgZXhwZWN0
cyBlaXRoZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkgb3IgV2ViQXNzZW1ibHkuSW5zdGFuY2UiX3Mp
OwpAQCAtMzE4Myw3ICszMTgzLDcgQEAgc3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib28KICAgICAgICAg
SlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBudWxscHRyOwogICAgICAgICBib29sIGlzTW9k
dWxlID0gb3B0aW9ucy5tX21vZHVsZSB8fCBzY3JpcHRzW2ldLnNjcmlwdFR5cGUgPT0gU2NyaXB0
OjpTY3JpcHRUeXBlOjpNb2R1bGU7CiAgICAgICAgIGlmIChzY3JpcHRzW2ldLmNvZGVTb3VyY2Ug
PT0gU2NyaXB0OjpDb2RlU291cmNlOjpGaWxlKSB7Ci0gICAgICAgICAgICBmaWxlTmFtZSA9IFN0
cmluZyB7IHNjcmlwdHNbaV0uYXJndW1lbnQgfTsKKyAgICAgICAgICAgIGZpbGVOYW1lID0gU3Ry
aW5nOjpmcm9tTGF0aW4xKHNjcmlwdHNbaV0uYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKHNj
cmlwdHNbaV0uc3RyaWN0TW9kZSA9PSBTY3JpcHQ6OlN0cmljdE1vZGU6OlN0cmljdCkKICAgICAg
ICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJcInVzZSBzdHJpY3RcIjtcbiIsIHN0cmxl
bigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CiAKQEAgLTM0MzAsNyArMzQzMCw3IEBAIHZvaWQgQ29t
bWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAg
ICAgIGlmICgrK2kgPT0gYXJnYykKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50
KCk7CiAgICAgICAgICAgICBPcHRpb25zOjpzZXRPcHRpb24oInVzZVByb2ZpbGVyPTEiKTsKLSAg
ICAgICAgICAgIG1fcHJvZmlsZXJPdXRwdXQgPSBTdHJpbmcgeyBhcmd2W2ldIH07CisgICAgICAg
ICAgICBtX3Byb2ZpbGVyT3V0cHV0ID0gU3RyaW5nOjpmcm9tTGF0aW4xKGFyZ3ZbaV0pOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAi
LW0iKSkgewpAQCAtMzU1MCw3ICszNTUwLDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1
bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBleGNlcHRpb25TdHJMZW5ndGggPSBzdHJsZW4oIi0tZXhjZXB0aW9uPSIpOwogICAgICAg
ICBpZiAoIXN0cm5jbXAoYXJnLCAiLS1leGNlcHRpb249IiwgZXhjZXB0aW9uU3RyTGVuZ3RoKSkg
ewotICAgICAgICAgICAgbV91bmNhdWdodEV4Y2VwdGlvbk5hbWUgPSBTdHJpbmcoYXJnICsgZXhj
ZXB0aW9uU3RyTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fdW5jYXVnaHRFeGNlcHRpb25OYW1lID0g
U3RyaW5nOjpmcm9tTGF0aW4xKGFyZyArIGV4Y2VwdGlvblN0ckxlbmd0aCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zNTgxLDcgKzM1ODEsNyBAQCB2b2lkIENvbW1h
bmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIG1f
aW50ZXJhY3RpdmUgPSB0cnVlOwogCiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpCi0gICAgICAg
IG1fYXJndW1lbnRzLmFwcGVuZChhcmd2W2ldKTsKKyAgICAgICAgbV9hcmd1bWVudHMuYXBwZW5k
KFN0cmluZzo6ZnJvbUxhdGluMShhcmd2W2ldKSk7CiAKICAgICBpZiAoZHVtcE9wdGlvbnNMZXZl
bCAhPSBKU0M6Ok9wdGlvbnM6OkR1bXBMZXZlbDo6Tm9uZSkgewogICAgICAgICBjb25zdCBjaGFy
KiBvcHRpb25zVGl0bGUgPSAoZHVtcE9wdGlvbnNMZXZlbCA9PSBKU0M6Ok9wdGlvbnM6OkR1bXBM
ZXZlbDo6T3ZlcnJpZGRlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCA4MmVjMjVhOGJmZTNiNDU2ZjMwNjc1OTY2YjBmNDk2MTM1MWE2NmY0Li5hNDA2MjNlOTdk
NWZmZDU0MzRkM2U3YTcxYjE2NWFmM2E5NzExNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCkBAIC01MDA5LDcgKzUwMDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlF
eHByZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxv
Y2F0aW9uLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CiAgICAgICAgIGlmICghcmUpIHsKICAg
ICAgICAgICAgIFlhcnI6OkVycm9yQ29kZSBlcnJvckNvZGUgPSBZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLT5zdHJpbmcoKSwgZmxhZ3MtPnN0cmluZygpKTsKLSAgICAgICAgICAgIHJlZ2V4RmFp
bChTdHJpbmcgeyBZYXJyOjplcnJvck1lc3NhZ2UoZXJyb3JDb2RlKSB9KTsKKyAgICAgICAgICAg
IHJlZ2V4RmFpbChTdHJpbmc6OmZyb21MYXRpbjEoWWFycjo6ZXJyb3JNZXNzYWdlKGVycm9yQ29k
ZSkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZTJhNjA4NzdlYTlhNzYwZjc3OGRlYTExYWQ5YWE5
MjE3MzQwMmYyZS4uYTY5ODFiYmY1YWQ5NGY5M2ZkNzk4M2ZmNmY5NzZjN2UzOWQ5OTk1OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBw
cml2YXRlOgogICAgIE5FVkVSX0lOTElORSB2b2lkIHVwZGF0ZUVycm9yTWVzc2FnZShjb25zdCBj
aGFyKiBtc2cpCiAgICAgewogICAgICAgICBBU1NFUlQobXNnKTsKLSAgICAgICAgbV9lcnJvck1l
c3NhZ2UgPSBTdHJpbmcobXNnKTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZy
b21MYXRpbjEobXNnKTsKICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5pc051bGwoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKaW5kZXggY2Y2ODE5Y2ZmZTFhZWM0NTQ5NGMyZWYxMjFkZDdjZjY4ZDI2ODhkNi4uNTdkODM5
NGQ4NDNjZDZmMTlmYzIyYTIwNmQ0ZDczOTg3MTNlYWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNz
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViQXNz
ZW1ibHlTb3VyY2VQcm92aWRlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTb3VyY2VP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMKQogICAgICAgICAgICAgOiBC
YXNlV2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIFdURk1vdmUoc291cmNl
VVJMKSkKLSAgICAgICAgICAgICwgbV9zb3VyY2UoIltXZWJBc3NlbWJseSBzb3VyY2VdIikKKyAg
ICAgICAgICAgICwgbV9zb3VyY2UoIltXZWJBc3NlbWJseSBzb3VyY2VdIl9zKQogICAgICAgICAg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAgewogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcApp
bmRleCBkZDljMGUzNmNhZGYyZmE5ZjM2NDNjZTE0YzM3MjNhODkyNTE0NDY2Li5iZmYzMWI0ZTIw
NmQ5NjM5YjBhZGI4MzMwNzRhNzc4NDk3ZDM2OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6OmlzVmFsaWQoKSBjb25z
dAogCiBTdHJpbmcgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjptZXNzYWdlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nIHsgc2FmZVN0cmVycm9yKG1fZXJybm8pLmRhdGEo
KSB9OworICAgIHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEoc2FmZVN0cmVycm9yKG1fZXJybm8p
LmRhdGEoKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpXcml0ZUVycm9yOjppc1Zh
bGlkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5j
cHAKaW5kZXggMTk3YzIzNTA2MjVlZWMxNmI2YTllNWVhYjg3ZDc0NDc4MmM5NTM2Ny4uN2Y3MjQx
Y2NlMTY1NmE4Y2Q3OWNlMTExNmY2N2ExMzlmZTM4MjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTIxNCwxMSArMjE0LDExIEBAIFN0cmlu
ZyBJbnRsTG9jYWxlOjprZXl3b3JkVmFsdWUoQVNDSUlMaXRlcmFsIGtleSwgYm9vbCBpc0Jvb2xl
YW4pIGNvbnN0CiAgICAgfQogICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAgICAgaWYg
KGlzQm9vbGVhbikKLSAgICAgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShidWZmZXIuZGF0YSgpKTsKICAgICBjb25zdCBj
aGFyKiB2YWx1ZSA9IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShrZXkuY2hhcmFjdGVycygpLCBi
dWZmZXIuZGF0YSgpKTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbFN0cmlu
ZygpOwotICAgIFN0cmluZyByZXN1bHQodmFsdWUpOworICAgIGF1dG8gcmVzdWx0ID0gU3RyaW5n
Ojpmcm9tTGF0aW4xKHZhbHVlKTsKICAgICBpZiAocmVzdWx0ID09ICJ0cnVlIl9zKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjkxLDcgKzY5
MSw3IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6Om51bWJlcmluZ1N5c3RlbXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIGVsZW1lbnRzLmFwcGVuZCh1bnVtc3lzX2dldE5hbWUobnVtYmVyaW5nU3lzdGVtLmdl
dCgpKSk7CisgICAgZWxlbWVudHMuYXBwZW5kKFN0cmluZzo6ZnJvbUxhdGluMSh1bnVtc3lzX2dl
dE5hbWUobnVtYmVyaW5nU3lzdGVtLmdldCgpKSkpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGVsZW1lbnRzKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAppbmRleCA0N2RkMDlhMmVhM2VlMjJmYzBiNDBiZGI1YjljNDU3MWEwZDg2OTA4Li4y
OWQ2ZjkzNWYwMjdiMjAyNzBlOTFmZWI5ZGI3NmRhNTRjYTRmMTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTA1MCw3ICsxMDUwLDcgQEAg
VmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShjb25zdCBTdHJpbmcmIGxv
Y2FsZSkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBVTnVtYmVy
aW5nU3lzdGVtKiBkZWZhdWx0U3lzdGVtID0gdW51bXN5c19vcGVuKGxvY2FsZS51dGY4KCkuZGF0
YSgpLCAmc3RhdHVzKTsKICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwotICAgIFN0cmlu
ZyBkZWZhdWx0U3lzdGVtTmFtZSh1bnVtc3lzX2dldE5hbWUoZGVmYXVsdFN5c3RlbSkpOworICAg
IGF1dG8gZGVmYXVsdFN5c3RlbU5hbWUgPSBTdHJpbmc6OmZyb21MYXRpbjEodW51bXN5c19nZXRO
YW1lKGRlZmF1bHRTeXN0ZW0pKTsKICAgICB1bnVtc3lzX2Nsb3NlKGRlZmF1bHRTeXN0ZW0pOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gbnVtYmVyaW5nU3lzdGVtcyh7IGRlZmF1bHRTeXN0ZW1OYW1l
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKaW5kZXggNjliMzBmZjVlMWU3Yzc2YjBiMTc0NTE3N2NiYjhmZWEwNTYzZjBlYy4uYTU1
NmM2ODRkYmEzNzM2ODA2OGI1ODQ0ZjM5ZTQxOGZjYzcwMzFlZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0zNzUsNyArMzc1
LDcgQEAgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJf
dCByYWRpeCkKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGRvdWJsZVZhbHVlKTsKIAog
ICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsKLSAgICByZXR1cm4gU3RyaW5nIHsgdG9TdHJpbmdXaXRo
UmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCkgfTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tTGF0aW4xKHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoYnVmZmVyLCBkb3Vi
bGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAogLy8gdG9FeHBvbmVudGlhbCBjb252ZXJ0cyBhIG51bWJl
ciB0byBhIHN0cmluZywgYWx3YXlzIGZvcm1hdHRpbmcgYXMgYW4gZXhwb25lbnRpYWwuCkBAIC00
MTIsNyArNDEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG51bWJlclByb3RvRnVuY1Rv
RXhwb25lbnRpYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgY29udmVydGVy
LlRvRXhwb25lbnRpYWwoeCwgLTEsICZidWlsZGVyKTsKICAgICBlbHNlCiAgICAgICAgIGNvbnZl
cnRlci5Ub0V4cG9uZW50aWFsKHgsIGRlY2ltYWxQbGFjZXMsICZidWlsZGVyKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcgeyBidWlsZGVyLkZpbmFsaXpl
KCkgfSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0cmluZzo6
ZnJvbUxhdGluMShidWlsZGVyLkZpbmFsaXplKCkpKSk7CiB9CiAKIC8vIHRvRml4ZWQgY29udmVy
dHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGEgZGVjaW1h
bCBmcmFjdGlvbi4KQEAgLTUxMyw3ICs1MTMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0
cmluZyogbnVtYmVyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZQog
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcihkb3Vi
bGVWYWx1ZSkpOwogCiAgICAgUmFkaXhCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgU3RyaW5nIHsgdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZh
bHVlLCByYWRpeCkgfSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21MYXRp
bjEodG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCkp
KTsKIH0KIAogSlNTdHJpbmcqIGludDMyVG9TdHJpbmcoVk0mIHZtLCBpbnQzMl90IHZhbHVlLCBp
bnQzMl90IHJhZGl4KQpAQCAtNTQxLDcgKzU0MSw3IEBAIEpTU3RyaW5nKiBpbnQ1MlRvU3RyaW5n
KFZNJiB2bSwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCkKICAgICBjaGFyKiBzdGFydE9m
UmVzdWx0U3RyaW5nID0gZGVjaW1hbFBvaW50OwogICAgICpkZWNpbWFsUG9pbnQgPSAnXDAnOwog
Ci0gICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgU3RyaW5nIHsgaW50NTJUb1N0cmlu
Z1dpdGhSYWRpeChzdGFydE9mUmVzdWx0U3RyaW5nLCB2YWx1ZSwgcmFkaXgpIH0pOworICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShpbnQ1MlRvU3Ry
aW5nV2l0aFJhZGl4KHN0YXJ0T2ZSZXN1bHRTdHJpbmcsIHZhbHVlLCByYWRpeCkpKTsKIH0KIAog
SlNTdHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQz
Ml90IHJhZGl4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRl
eCA3NjdmZjI5OTBjMTk1YzczMTA2YmYzMmI3YTgwMDk5NzQyNTg4OTNiLi5lNjVkYzhkYmExNWRk
OWE2NTM4ZmMwODdlNTA1MjgwOWMwZmIyNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcApAQCAtMjAwLDggKzIwMCw3IEBAIGJvb2wgT3B0aW9uczo6b3ZlcnJp
ZGVBbGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyhjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICgh
c3RyaW5nVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBhbGlhc2Vk
T3B0aW9uOwotICAgIGFsaWFzZWRPcHRpb24gPSBTdHJpbmcoJm5hbWVbNF0pICsgIj0iICsgc3Ry
aW5nVmFsdWU7CisgICAgYXV0byBhbGlhc2VkT3B0aW9uID0gbWFrZVN0cmluZygmbmFtZVs0XSwg
Jz0nLCBzdHJpbmdWYWx1ZSk7CiAgICAgaWYgKE9wdGlvbnM6OnNldE9wdGlvbihhbGlhc2VkT3B0
aW9uLnV0ZjgoKS5kYXRhKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtODc4LDcgKzg3
Nyw3IEBAIGJvb2wgT3B0aW9uczo6c2V0QWxpYXNlZE9wdGlvbihjb25zdCBjaGFyKiBhcmcpCiAj
ZGVmaW5lIEZPUl9FQUNIX09QVElPTihhbGlhc2VkTmFtZV8sIHVuYWxpYXNlZE5hbWVfLCBlcXVp
dmFsZW5jZSkgXAogICAgIGlmIChzdHJsZW4oI2FsaWFzZWROYW1lXykgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihlcXVhbFN0ciAtIGFyZykgICAgXAogICAgICAgICAmJiAhc3RybmNhc2VjbXAoYXJn
LCAjYWxpYXNlZE5hbWVfLCBlcXVhbFN0ciAtIGFyZykpIHsgICAgICAgICAgXAotICAgICAgICBT
dHJpbmcgdW5hbGlhc2VkT3B0aW9uKCN1bmFsaWFzZWROYW1lXyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBhdXRvIHVuYWxpYXNlZE9wdGlvbiA9IFN0cmluZzo6ZnJvbUxhdGlu
MSgjdW5hbGlhc2VkTmFtZV8pOyAgICAgXAogICAgICAgICBpZiAoZXF1aXZhbGVuY2UgPT0gU2Ft
ZU9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAg
dW5hbGlhc2VkT3B0aW9uID0gdW5hbGlhc2VkT3B0aW9uICsgZXF1YWxTdHI7ICAgICAgICAgICAg
ICAgXAogICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggOTc1NzAxMmI3M2Q5NTg4MjIxOWQwOWUyN2Yz
OTY2YzcyMjE1MDJlNS4uYTM2ZmRhNGE2MDEwZTY2NDUzZDI4NWIzMjM0YTI0ZGI3ZDFmYTQxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFBy
b3RvR2V0dGVyRmxhZ3MsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8g
ZmxhZ3MgPSBmbGFnc1N0cmluZyhnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nIHsgZmxhZ3MuZGF0YSgp
IH0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZy
b21MYXRpbjEoZmxhZ3MuZGF0YSgpKSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IGQ5MzExYzJmYzYyNTQ3MmZlNmY2ZTI2ZWQ4
MjIzOGU3ZDRkMWY4NjAuLmJjMTE4YzA2ODdlZjk3MGQyYzM1YzMxOWVkYjQ5NjAyN2NjOGQ1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCkBAIC04MTYsNyArODE2LDcgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNr
RnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2bSkKICAgICAgICAgaWYgKGZyYW1lVHlwZSA9PSBGcmFt
ZVR5cGU6OkMpIHsKICAgICAgICAgICAgIGF1dG8gZGVtYW5nbGVkID0gV1RGOjpTdGFja1RyYWNl
OjpkZW1hbmdsZShjb25zdF9jYXN0PHZvaWQqPihjQ29kZVBDKSk7CiAgICAgICAgICAgICBpZiAo
ZGVtYW5nbGVkKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZGVtYW5nbGVkLT5kZW1h
bmdsZWROYW1lKCkgPyBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA6IGRlbWFuZ2xlZC0+bWFu
Z2xlZE5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShk
ZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpIDog
ZGVtYW5nbGVkLT5tYW5nbGVkTmFtZSgpKTsKICAgICAgICAgICAgIFdURjo6ZGF0YUxvZygiY291
bGRuJ3QgZ2V0IGEgbmFtZSIpOwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGQxMDVhMGFkZTMx
MTJmYmI2YjdkYjYxZWJiMjFiODUxNjRhN2YzZWEuLmJiMDUxMTI1ZmMyMzQzOGQ1YWI3NmU4MDI3
ZjE2OWRjNTJjZmU5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTYyMSwxMCArMTYyMSwxMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbAogICAgIGF1dG8gY29udmVydENhc2UgPSBtb2RlID09IENhc2VDb252ZXJzaW9u
TW9kZTo6TG93ZXIgPyB1X3N0clRvTG93ZXIgOiB1X3N0clRvVXBwZXI7CiAgICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oY29udmVydENhc2UsIGJ1ZmZlciwgU3Ry
aW5nVmlldyB7IHMgfS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSwgcy5sZW5ndGgoKSwg
bG9jYWxlLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nIHsg
dV9lcnJvck5hbWUoc3RhdHVzKSB9KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nOjpmcm9tTGF0aW4xKHVfZXJyb3JOYW1lKHN0YXR1
cykpKTsKIAogICAgIC8vIDE4LiBSZXR1cm4gTC4KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFN0
cmluZyB7IGJ1ZmZlciB9KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5n
UHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFJlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAK
aW5kZXggN2QyNmIxNmJmOWYzZmNiZDMwYWVlZmQwNmNmZGQ5OTk4NWMwMTA1NS4uNmZmNzFiYjk4
MjRkNTcwOGVmOGM0OGZjMTkyNjgzNGU5M2NlNjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
UmVnRXhwLmNwcApAQCAtNTA3LDExICs1MDcsMTEgQEAgc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVu
dHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucykKICAgICAgICAg
aWYgKCFzdHJjbXAoYXJnLCAiLXYiKSB8fCAhc3RyY21wKGFyZywgIi0tdmVyYm9zZSIpKQogICAg
ICAgICAgICAgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgb3B0aW9ucy5maWxlcy5hcHBlbmQoYXJndltpXSk7CisgICAgICAgICAgICBvcHRpb25zLmZp
bGVzLmFwcGVuZChTdHJpbmc6OmZyb21MYXRpbjEoYXJndltpXSkpOwogICAgIH0KIAogICAgIGZv
ciAoOyBpIDwgYXJnYzsgKytpKQotICAgICAgICBvcHRpb25zLmFyZ3VtZW50cy5hcHBlbmQoYXJn
dltpXSk7CisgICAgICAgIG9wdGlvbnMuYXJndW1lbnRzLmFwcGVuZChTdHJpbmc6OmZyb21MYXRp
bjEoYXJndltpXSkpOwogfQogCiBpbnQgcmVhbE1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvbXBpbGVyVGltaW5nU2Nv
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUu
Y3BwCmluZGV4IGMwNTA3NjA2NGNhMjc2NzUzOGZiZGViMGJlYjJkY2I5N2UwNzU4OTIuLjAwMTUz
Yjk1ZDZhNTY1OWEwMTdhZWI1YjdiZDlmNGRiMmJmODJlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db21waWxlclRpbWluZ1Njb3BlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogCiAgICAgICAg
IGZvciAoYXV0byYgdHVwbGUgOiB0b3RhbHMpIHsKLSAgICAgICAgICAgIGlmIChTdHJpbmcoc3Rk
OjpnZXQ8MD4odHVwbGUpKSA9PSBTdHJpbmcoY29tcGlsZXJOYW1lKSAmJiBTdHJpbmcoc3RkOjpn
ZXQ8MT4odHVwbGUpKSA9PSBTdHJpbmcobmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21w
KHN0ZDo6Z2V0PDA+KHR1cGxlKSwgY29tcGlsZXJOYW1lKSAmJiAhc3RyY21wKHN0ZDo6Z2V0PDE+
KHR1cGxlKSwgbmFtZSkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OmdldDwyPih0dXBsZSkgKz0g
ZHVyYXRpb247CiAgICAgICAgICAgICAgICAgc3RkOjpnZXQ8Mz4odHVwbGUpID0gc3RkOjptYXgo
c3RkOjpnZXQ8Mz4odHVwbGUpLCBkdXJhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6Z2V0PDI+KHR1cGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9GdW5jdGlvbkFsbG93bGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25BbGxvd2xpc3QuY3BwCmluZGV4IDI0MmYxMDc3ODQ0ZDQ3NjFkNDA4ODhkZWFiNGJiMWRh
NzgyMTE1NmQuLmFkZjYzOWRjOWEyYTI5NjJhYTdjNGJkMTdmZjVjNmU5N2RlODhjYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcApA
QCAtNDQsNyArNDQsNyBAQCBGdW5jdGlvbkFsbG93bGlzdDo6RnVuY3Rpb25BbGxvd2xpc3QoY29u
c3QgY2hhciogZmlsZW5hbWUpCiAgICAgaWYgKCFmKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBF
Tk9FTlQpIHsKICAgICAgICAgICAgIG1faGFzQWN0aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgIG1fZW50cmllcy5hZGQoU3RyaW5nIHsgZmlsZW5hbWUgfSk7CisgICAgICAgICAgICBt
X2VudHJpZXMuYWRkKFN0cmluZzo6ZnJvbUxhdGluMShmaWxlbmFtZSkpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91
IGFkZCB0aGUgZmlsZS1yZWFkLWRhdGEgZW50aXRsZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJy
b3IgY29kZTogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDM2ZDJiZWQz
YWQ3OWViMzBlYmI4MWNjMTM2N2E1MjIxZWUxZTJmMS4uMjliYzhjMjFlYzM4NmY0Y2E2NjkxZWFm
MzY0N2I0M2Q4Zjk1M2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlNb2R1bGVJbXBv
cnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qo
dm0sIG1vZHVsZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wLm1vZHVsZSkpKTsK
ICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0cmluZyh2bSwgU3RyaW5n
Ojpmcm9tVVRGOChpbXAuZmllbGQpKSk7Ci0gICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwg
a2luZCwganNTdHJpbmcodm0sIFN0cmluZyhtYWtlU3RyaW5nKGltcC5raW5kKSkpKTsKKyAgICAg
ICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9t
TGF0aW4xKG1ha2VTdHJpbmcoaW1wLmtpbmQpKSkpOwogICAgICAgICAgICAgcmVzdWx0LT5wdXNo
KGdsb2JhbE9iamVjdCwgb2JqKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0CiAgICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlP
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0
cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOChleHAuZmllbGQpKSk7Ci0gICAgICAgICAgICBvYmot
PnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmcodm0sIFN0cmluZyhtYWtlU3RyaW5nKGV4cC5r
aW5kKSkpKTsKKyAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyh2
bSwgU3RyaW5nOjpmcm9tTGF0aW4xKG1ha2VTdHJpbmcoZXhwLmtpbmQpKSkpOwogICAgICAgICAg
ICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgb2JqKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAppbmRleCBlNzQ0
YTc4Nzc3ZWQzNGUzMTkyZGNlYzNlYzVjY2VkYjE5OWUzNGYxLi4wYzA4NDgyMzZmYzY0YzIyODU2
ZWVhYzViODNhYWFjOTU3YTY5ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtNTIsOCArNTIsOCBAQCBzdHJ1Y3Qg
TG9nQXJndW1lbnQgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxVPjo6dHlwZSwgQXRvbVN0cmluZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5n
KGNvbnN0IEF0b21TdHJpbmcmIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmcoKTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlw
ZSwgU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3VtZW50
KSB7IHJldHVybiBhcmd1bWVudDsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0
aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5nPjo6
dHlwZSB0b1N0cmluZyhTdHJpbmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQt
PnRvU3RyaW5nKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBT
dHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJp
bmcoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0cmlu
ZyB0b1N0cmluZyhjb25zdCBjaGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0cmlu
Zyhhcmd1bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBT
dHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJp
bmc6OmZyb21MYXRpbjEoYXJndW1lbnQpOyB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4g
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBjaGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsg
cmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShhcmd1bWVudCk7IH0KIH07CiAKIHN0cnVjdCBKU09O
TG9nVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGE1ZDI2MzVmMWI2ZDE2
ZjllOGRiNDNkNTNlYWU4NmE5ZWQ4NzExNTAuLmQ3NzdhOTc5Yzg0NWVjMTI5ZjRmZmE1ZTFkZTIx
MTgzYWJjNjUyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTg4OSw3ICs4ODks
NyBAQCB2b2lkIFN0cmluZzo6c2hvdygpIGNvbnN0CiBTdHJpbmcqIHN0cmluZyhjb25zdCBjaGFy
KiBzKQogewogICAgIC8vIEludGVudGlvbmFsbHkgbGVha3MgbWVtb3J5IQotICAgIHJldHVybiBu
ZXcgU3RyaW5nKHMpOworICAgIHJldHVybiBuZXcgU3RyaW5nKFN0cmluZzo6ZnJvbUxhdGluMShz
KSk7CiB9CiAKIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZ0ltcGwqIGltcGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAppbmRleCA2NzFiZjg4MjI2ZGIwZjY4NmU3MzBkNmI2ZGYwZTRhMmE4
YzIwNjc5Li4wMDNlZmI3YzEyMDQ1NTFlYWUyNzc2OTdkOTdjYmUyNTAyNjZlMDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxp
Y2l0IHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIHVzZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAi
Il9zIHN1ZmZpeCB3aGVuIHBvc3NpYmxlLAotICAgIC8vIGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRl
cmFsKSBpcyBtb3JlIGVmZmljaWVudC4gQWxzbyBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0
cmVhdHMgaW5wdXQgYXMgTGF0aW4tMS4KLSAgICAvLyBEZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8g
Y2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHByb2JhYmx5IHJlbmFtZSB0aGlzIHRvIGZyb21MYXRpbjEoKS4KKyAgICAvLyBUaGlzIGlzIGRl
cHJlY2F0ZWQgaW4gZmF2b3Igb2YgZnJvbUxhdGluMSgpIC8gZnJvbVVURjgoKSAvIFN0cmluZyhB
U0NJSUxpdGVyYWwpLgorICAgIC8vIEZJWE1FOiBNYWtlIHByaXZhdGUgb25jZSBhbGwgdXNlcnMg
aGF2ZSBiZWVuIHBvcnRlZC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5n
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3Ry
aW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gU3RyaW5nIHsg
Y2hhcmFjdGVycyB9OyB9CisKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcg
YW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOwogICAgIFN0
cmluZyhTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGZhMDQ2YjUzMDY3YWE5NzFkYzBlOTk1ZjdiOGQ1ODMxOGE5YzljNDkuLjU2
Y2UwYzk4NjAyMmU5MjQ3NGJhYzdkMjE4Yzk0N2Y2N2I3NjQ1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQo
c3RkOjp1bmlxdWVfcHRyPHcKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVT
ZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uQ29kZSBlcnJvckNvZGUsIGNvbnN0IGNo
YXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3JN
ZXNzYWdlKV0gKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9t
TGF0aW4xKGVycm9yTWVzc2FnZSldICgpIG11dGFibGUgewogICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChwcm90
ZWN0ZWRUaGlzLT5tX2lzSW5pdGlhdG9yKQpAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6c2V0TG9jYWxTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKQog
CiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9u
RmFpbGVkKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
CiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yTWVzc2FnZSldKCkgbXV0YWJs
ZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tTGF0aW4xKGVycm9yTWVzc2Fn
ZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuc2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24geyBlcnJvckNv
ZGUsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRl
ZCgpCiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2Ny
aXB0aW9uRmFpbGVkKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlLCBjb25zdCBjaGFyKiBlcnJvck1l
c3NhZ2UpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yTWVzc2FnZSldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6ZnJvbUxhdGluMShlcnJv
ck1lc3NhZ2UpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3Rv
cHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5zZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24g
eyBlcnJvckNvZGUsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSB9KTsKQEAgLTc3NSw3ICs3NzUsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcobV9zdGF0cy5Ub0pzb24oKS5jX3N0cigpKTsgfQorICAgIFN0cmlu
ZyB0b0pTT05TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEobV9zdGF0
cy5Ub0pzb24oKS5jX3N0cigpKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IHdlYnJ0Yzo6UlRD
U3RhdHMmIG1fc3RhdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKaW5kZXggOWYxOTZm
Mzc4YmI3Nzc2NzNjZjcxMjBjYWE0ZmI0NjQ1MDFmNGE4NS4uOTI1NmZjZmNhNzgzNTkyODNkZWQ1
ZDA5MGViMWYxMzg2MzRlZDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApAQCAt
MzYwLDcgKzM2MCw3IEBAIEV4Y2VwdGlvbiB0b0V4Y2VwdGlvbihjb25zdCB3ZWJydGM6OlJUQ0Vy
cm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWVycm9yLm9rKCkpOwogCi0gICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IHRvRXhjZXB0aW9uQ29kZShlcnJvci50eXBlKCkpLCBTdHJpbmcgeyBlcnJvci5t
ZXNzYWdlKCkgfSB9OworICAgIHJldHVybiBFeGNlcHRpb24geyB0b0V4Y2VwdGlvbkNvZGUoZXJy
b3IudHlwZSgpKSwgU3RyaW5nOjpmcm9tTGF0aW4xKGVycm9yLm1lc3NhZ2UoKSkgfTsKIH0KIAog
c3RhdGljIGlubGluZSBSVENJY2VDb21wb25lbnQgdG9SVENJY2VDb21wb25lbnQoaW50IGNvbXBv
bmVudCkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBSZWZQdHI8UlRDRXJyb3I+IHRvUlRDRXJyb3IoY29u
c3Qgd2VicnRjOjpSVENFcnJvciYgcnRjRXJyb3IpCiAgICAgYXV0byBkZXRhaWwgPSB0b1JUQ0Vy
cm9yRGV0YWlsVHlwZShydGNFcnJvci5lcnJvcl9kZXRhaWwoKSk7CiAgICAgaWYgKCFkZXRhaWwp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpk
ZXRhaWwsIFN0cmluZyB7IHJ0Y0Vycm9yLm1lc3NhZ2UoKSB9KTsKKyAgICByZXR1cm4gUlRDRXJy
b3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21MYXRpbjEocnRjRXJyb3IubWVzc2FnZSgp
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4
IDMzMmUyYmU3OTVhMDFmMWUwNDY2MmRjNDExM2JhZWFjNDQwNzFlNzUuLjQ3Yjc3MTE1ZTk4MGRl
ZjRkMzBiMWI2N2M5Mzc4MjA5ZGJhMDA2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMTM4
LDcgKzEzOCw3IEBAIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYnVpbGRBdHRlc3RhdGlvbk1h
cChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgU3RyaW5nCiAgICAgICAgIGNvbnN0IHNpemVf
dCBhYWd1aWRPZmZzZXQgPSBycElkSGFzaExlbmd0aCArIGZsYWdzTGVuZ3RoICsgc2lnbkNvdW50
ZXJMZW5ndGg7CiAgICAgICAgIGlmIChhdXRoRGF0YS5zaXplKCkgPj0gYWFndWlkT2Zmc2V0ICsg
YWFndWlkTGVuZ3RoKQogICAgICAgICAgICAgbWVtc2V0KGF1dGhEYXRhLmRhdGEoKSArIGFhZ3Vp
ZE9mZnNldCwgMCwgYWFndWlkTGVuZ3RoKTsKLSAgICAgICAgZm9ybWF0ID0gU3RyaW5nIHsgbm9u
ZUF0dGVzdGF0aW9uVmFsdWUgfTsKKyAgICAgICAgZm9ybWF0ID0gU3RyaW5nOjpmcm9tTGF0aW4x
KG5vbmVBdHRlc3RhdGlvblZhbHVlKTsKICAgICAgICAgc3RhdGVtZW50TWFwLmNsZWFyKCk7CiAg
ICAgfQogICAgIGF0dGVzdGF0aW9uT2JqZWN0TWFwW2Nib3I6OkNCT1JWYWx1ZSgiYXV0aERhdGEi
KV0gPSBjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShhdXRoRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcAppbmRleCA0ZTcwODM2
MTk1YjMwNmVhNzQ4MGRlMDAwY2U4MTdhMzI3ZjQ5ZDgzLi42MThmZjZjNjFiZTkyOGIxZTA0YzVj
NTQxMzVjOGJkYzBlZjQ2N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIENCT1JWYWx1ZTo6
Q0JPUlZhbHVlKGNvbnN0IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSYgYnVmZmVyU291cmNlKQogfQog
CiBDQk9SVmFsdWU6OkNCT1JWYWx1ZShjb25zdCBjaGFyKiBpblN0cmluZykKLSAgICA6IENCT1JW
YWx1ZShTdHJpbmcoaW5TdHJpbmcpKQorICAgIDogQ0JPUlZhbHVlKFN0cmluZzo6ZnJvbUxhdGlu
MShpblN0cmluZykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggYjEzMjBmMDA4YmJmOTMzNTliMmI4NTMxZGViMTZmMTRk
OWY5OGU5Zi4uZTY3MDAyZDE3ZGNmMzQ4MzE4ZDE4NWIzNDdiMWUyNjBlMmJkOWI2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTE5
OCw3ICsxOTgsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZQogICAgICwgbV9kaXNwbGF5TmFt
ZShkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3Rp
bWF0ZWRTaXplKQogICAgICwgbV9maWxlbmFtZShEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmZ1bGxQYXRoRm9yRGF0YWJhc2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgbV9uYW1l
KSkKLSAgICAsIG1fZGF0YWJhc2VBdXRob3JpemVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRl
KFN0cmluZyB7IHVucXVhbGlmaWVkSW5mb1RhYmxlTmFtZSB9KSkKKyAgICAsIG1fZGF0YWJhc2VB
dXRob3JpemVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbUxhdGluMSh1
bnF1YWxpZmllZEluZm9UYWJsZU5hbWUpKSkKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBndWlkTG9jayB9OwpAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3Nl
RGF0YWJhc2UoKQogCiBib29sIERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmlu
ZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24pCiB7Ci0gICAgU3RyaW5nIHF1ZXJ5
KFN0cmluZygiU0VMRUNUIHZhbHVlIEZST00gIikgKyBmdWxseVF1YWxpZmllZEluZm9UYWJsZU5h
bWUoKSArICAiIFdIRVJFIGtleSA9ICciICsgdmVyc2lvbktleSArICInOyIpOworICAgIGF1dG8g
cXVlcnkgPSBtYWtlU3RyaW5nKCJTRUxFQ1QgdmFsdWUgRlJPTSAiLCBmdWxseVF1YWxpZmllZElu
Zm9UYWJsZU5hbWUoKSwgICIgV0hFUkUga2V5ID0gJyIsIHZlcnNpb25LZXksICInOyIpOwogCiAg
ICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIApAQCAtNDcxLDcgKzQ3MSw3IEBA
IGJvb2wgRGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgYm9vbCBzaG91bGRDYWNoZVZlcnNpCiB7CiAgICAgLy8gVGhlIElOU0VSVCB3aWxsIHJlcGxh
Y2UgYW4gZXhpc3RpbmcgZW50cnkgZm9yIHRoZSBkYXRhYmFzZSB3aXRoIHRoZSBuZXcgdmVyc2lv
biBudW1iZXIsIGR1ZSB0byB0aGUgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UKICAgICAvLyBj
bGF1c2UgaW4gdGhlIENSRUFURSBzdGF0ZW1lbnQgKHNlZSBEYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXJpZnkoKSkuCi0gICAgU3RyaW5nIHF1ZXJ5KFN0cmluZygiSU5TRVJUIElOVE8gIikgKyBm
dWxseVF1YWxpZmllZEluZm9UYWJsZU5hbWUoKSArICAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCci
ICsgdmVyc2lvbktleSArICInLCA/KTsiKTsKKyAgICBhdXRvIHF1ZXJ5ID0gbWFrZVN0cmluZygi
SU5TRVJUIElOVE8gIiwgZnVsbHlRdWFsaWZpZWRJbmZvVGFibGVOYW1lKCksICAiIChrZXksIHZh
bHVlKSBWQUxVRVMgKCciLCB2ZXJzaW9uS2V5LCAiJywgPyk7Iik7CiAKICAgICBtX2RhdGFiYXNl
QXV0aG9yaXplci0+ZGlzYWJsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3Bw
CmluZGV4IGJlN2ZjNGI4NmVmOWQyOThmZGI3Y2Q5MTgwZWIzYTllY2I5ZWU5N2IuLjgzY2ZmN2E2
NDMwMmIyNTlkMzRlMDcyYzRmOGIzNzNjZDEyZTFiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUo
V0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVy
dGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMp
OwotICAgIHJldHVybiBTdHJpbmcgeyBwcm9wZXJ0aWVzLm5hbWUgfTsKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tTGF0aW4xKHByb3BlcnRpZXMubmFtZSk7CiB9CiAKIHN0YXRpYyBSZWY8U3VwcG9y
dGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA4Yzk0NzVhZjUwMWU2M2Q2ZjJkOWE2MjQw
NWNiNzUxMjgwNWExMDg1Li44ZDM2ZTNjMTU3ZjM4NmU3NmI5ODNhOWZmMzM3MzlmYmI1YTI5YThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVURldmljZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2
b2lkIERldmljZUltcGw6OnBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPEVycm9yPiYmKT4mJgogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfRm9yY2Uz
MjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfVmFsaWRh
dGlvbjoKLSAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKFN0
cmluZyB7IG1lc3NhZ2UgfSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlv
bkVycm9yOjpjcmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKG1lc3NhZ2UpKSB9IH07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAg
ICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggZDg0MTFjOTNl
NDc3MDJmNTY3YWQ2MTQwMzY2ZWNlNzY2MzVjMDQ1Zi4uYzYxOWQ1ZDA0M2JlNjVmZTM1Y2JlNjIw
OTAyODgwYzI5YTg0ZGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25Pcjx2
b2lkPiBwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJhbWVzKEpTR2xvYmFsT2JqZWN0JgogCiAg
ICAgLy8gOC4gSWYgZWFzaW5ncyBpcyBhbiBlbXB0eSBzZXF1ZW5jZSwgbGV0IGl0IGJlIGEgc2Vx
dWVuY2Ugb2YgbGVuZ3RoIG9uZSBjb250YWluaW5nIHRoZSBzaW5nbGUgdmFsdWUg4oCcbGluZWFy
4oCdLCBpLmUuIMKrICJsaW5lYXIiIMK7LgogICAgIGlmIChlYXNpbmdzLmlzRW1wdHkoKSkKLSAg
ICAgICAgZWFzaW5ncy5hcHBlbmQoImxpbmVhciIpOworICAgICAgICBlYXNpbmdzLmFwcGVuZCgi
bGluZWFyIl9zKTsKIAogICAgIC8vIDkuIElmIGVhc2luZ3MgaGFzIGZld2VyIGl0ZW1zIHRoYW4g
cHJvcGVydHkga2V5ZnJhbWVzLCByZXBlYXQgdGhlIGVsZW1lbnRzIGluIGVhc2luZ3Mgc3VjY2Vz
c2l2ZWx5IHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCB1bnRpbCBlYXNp
bmdzIGhhcyBhcyBtYW55CiAgICAgLy8gICAgaXRlbXMgYXMgcHJvcGVydHkga2V5ZnJhbWVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCBmODFjZDdlNDYx
MDI5MzIwNjNlODA5NDVlYmE1YzkxYTk1NzNjMjFiLi5jYzMxYmRhNGRjNDU4MTNhYzNlN2U5MTAx
NDViMTAyZTYwOWQxNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgQmFzZUtleWZyYW1l
IHsKICAgICAgICAgTWFya2FibGVEb3VibGUgb2Zmc2V0OwotICAgICAgICBTdHJpbmcgZWFzaW5n
IHsgImxpbmVhciIgfTsKKyAgICAgICAgU3RyaW5nIGVhc2luZyB7ICJsaW5lYXIiX3MgfTsKICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvIGNvbXBvc2l0ZSB7IENvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0bzo6QXV0byB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGNlOTlmZDVmMzIxNGM0
MGE1ODYwNTEwNTMxY2MxMWJmMjllODZlNDAuLjA4MTFiZjVkMDNjNTI2ZjIwZWY1OWMzY2NjNTBk
ZTc1Mjk0Y2E0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGlmIChhdXRvKiByZWdFeHAgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+
KHZtLCBvYmopKSB7CiAgICAgICAgICAgICAgICAgd3JpdGUoUmVnRXhwVGFnKTsKICAgICAgICAg
ICAgICAgICB3cml0ZShyZWdFeHAtPnJlZ0V4cCgpLT5wYXR0ZXJuKCkpOwotICAgICAgICAgICAg
ICAgIHdyaXRlKFN0cmluZyhKU0M6OllhcnI6OmZsYWdzU3RyaW5nKHJlZ0V4cC0+cmVnRXhwKCkt
PmZsYWdzKCkpLmRhdGEoKSkpOworICAgICAgICAgICAgICAgIHdyaXRlKFN0cmluZzo6ZnJvbUxh
dGluMShKU0M6OllhcnI6OmZsYWdzU3RyaW5nKHJlZ0V4cC0+cmVnRXhwKCktPmZsYWdzKCkpLmRh
dGEoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHM8SlNNZXNzYWdlUG9ydD4odm0pKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwCmluZGV4IDc0NDE2NWYwYjUyMDE1Y2NlZmQ3N2Y2ODdjZTUzY2MwNWMxYjE1
NjguLjM0YTg2ZmQ0OWY2N2JiYTE0MDI1MTQyNDVhODZkY2Y1ZDQwZTkzNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8U3Ry
aW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXREb21haW5MaXN0KGNvbnN0IEpTT046OkFycmF5CiAg
ICAgICAgICAgICB7ICckJywgIlxcJCIgfQogICAgICAgICB9IH07CiAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGVzY2FwZVRhYmxlKQotICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLnJlcGxh
Y2UocGFpci5maXJzdCwgU3RyaW5nIHsgcGFpci5zZWNvbmQgfSk7CisgICAgICAgICAgICBkb21h
aW4gPSBkb21haW4ucmVwbGFjZShwYWlyLmZpcnN0LCBTdHJpbmdWaWV3IHsgcGFpci5zZWNvbmQg
fSk7CiAKICAgICAgICAgY29uc3QgY2hhciogcHJvdG9jb2xSZWdleCA9ICJbYS16XVthLXorLi1d
KjpcXC9cXC8iOwogICAgICAgICBjb25zdCBjaGFyKiBhbGxvd1N1YmRvbWFpbnNSZWdleCA9ICIo
LipcXC4pKiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCmluZGV4IDc2ZDI2ZTk3ZTQyMzYyNWViYjI4
MWM3YzY4ZjM5Mzk4ODEzOGY0YWIuLmMxM2RmMzQ2ZTVlODM4NmI2MGRmMWQzYWViYTViNjM2YWUw
NGE0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19DQkMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCkBAIC0zNiw5ICszNiw5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDSW50ZXJuYWwg
ewotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzEyOCA9ICJBMTI4Q0JDIjsKLXN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBBTEcxOTIgPSAiQTE5MkNCQyI7Ci1zdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgQUxHMjU2ID0gIkEyNTZDQkMiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzEyOCA9
ICJBMTI4Q0JDIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzE5MiA9ICJBMTkyQ0JDIl9z
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJBMjU2Q0JDIl9zOwogc3RhdGljIGNv
bnN0IHNpemVfdCBJVlNJWkUgPSAxNjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAppbmRleCAy
NTA1NDcwYTI5MzJhZThhNzIwODk4NWY1N2Y3MGZmNGJlYjU5YTAyLi44OGU4MDc1YjYyNGYyYTdl
MzlkYWFkMDY0MGMxNTQ3ZDI1NjAzY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcApAQCAtMzYs
OSArMzYsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NGQkludGVybmFsIHsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcxMjggPSAi
QTEyOENGQjgiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzE5MiA9ICJBMTkyQ0ZCOCI7
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjU2ID0gIkEyNTZDRkI4IjsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBBTEcxMjggPSAiQTEyOENGQjgiX3M7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gQUxHMTkyID0gIkExOTJDRkI4Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9
ICJBMjU2Q0ZCOCJfczsKIHN0YXRpYyBjb25zdCBzaXplX3QgSVZTSVpFID0gMTY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19DVFIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUi5jcHAKaW5kZXggYWQzMDlmNjFhNzVmOTJjZDk5NDYzZjllODEzMmFmYjBj
Yzk3ZWRlMS4uOWIyNjQ4ZThhMTEwZDZhZjY0NDUwNDk1ZGMyZTQzNTMwZmRlZDUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUi5jcHAKQEAgLTM4LDkgKzM4LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIENyeXB0b0FsZ29yaXRobUFFU19DVFJJbnRlcm5hbCB7Ci1zdGF0aWMgY29u
c3QgY2hhciogY29uc3QgQUxHMTI4ID0gIkExMjhDVFIiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IEFMRzE5MiA9ICJBMTkyQ1RSIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcyNTYg
PSAiQTI1NkNUUiI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTI4ID0gIkExMjhDVFIiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTkyID0gIkExOTJDVFIiX3M7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gQUxHMjU2ID0gIkEyNTZDVFIiX3M7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IENv
dW50ZXJTaXplID0gMTY7CiBzdGF0aWMgY29uc3QgdWludDY0X3QgQWxsQml0c1NldCA9IH4odWlu
dDY0X3QpMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5jcHAKaW5kZXggYTNkZDg1MzMyMTkzZTU5MWJh
NjMzODQyNDdhZTk3OGI5ODU4ODIzYy4uMmRjYmJiN2I4MTRiNzFhZmM4MjIwNTkxNzViNGEzMmFm
YjUzYTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0dDTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5jcHAKQEAgLTM2LDkgKzM2LDkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENyeXB0b0FsZ29yaXRobUFFU19HQ01JbnRlcm5h
bCB7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMTI4ID0gIkExMjhHQ00iOwotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IEFMRzE5MiA9ICJBMTkyR0NNIjsKLXN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBBTEcyNTYgPSAiQTI1NkdDTSI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTI4
ID0gIkExMjhHQ00iX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTkyID0gIkExOTJHQ00i
X3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMjU2ID0gIkEyNTZHQ00iX3M7CiAjaWYgQ1BV
KEFERFJFU1M2NCkKIHN0YXRpYyBjb25zdCB1aW50NjRfdCBQbGFpblRleHRNYXhMZW5ndGggPSA1
NDk3NTU4MTM2MzJVTEw7IC8vIDJeMzkgLSAyNTYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAK
aW5kZXggNDc0YWFjOGQxNDE5YWYwMzMwZWI4YjAxYTdjNzI0ZjU5ZDQ0YTZmYi4uYWRjNjViNjQ1
NTlkMjNiZDVhZTZmODRmZjEwMDg0OTgzZDlmZDkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBA
IC0zNSw5ICszNSw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDcnlwdG9B
bGdvcml0aG1BRVNfS1dJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMTI4
ID0gIkExMjhLVyI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMTkyID0gIkExOTJLVyI7
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjU2ID0gIkEyNTZLVyI7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gQUxHMTI4ID0gIkExMjhLVyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBB
TEcxOTIgPSAiQTE5MktXIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJBMjU2
S1ciX3M7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCB1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNB
LmNwcAppbmRleCA4NzJmYmVhNjZhY2JiNmMxMTQ2MzA3ZGFiZjk0MGIzZWEzYjA1Yzc5Li5iYTg2
NDBlNzA5YzM2MzZlNmNhZDJmMzYwYjFlYTMwMjIyNGI3OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3Bw
CkBAIC0zNywxMiArMzcsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENy
eXB0b0FsZ29yaXRobUVDRFNBSW50ZXJuYWwgewotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFM
RzI1NiA9ICJFUzI1NiI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMzg0ID0gIkVTMzg0
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEc1MTIgPSAiRVM1MTIiOwotc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IFAyNTYgPSAiUC0yNTYiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IFAzODQgPSAiUC0zODQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFA1MjEgPSAiUC01MjEi
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJFUzI1NiJfczsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBBTEczODQgPSAiRVMzODQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxH
NTEyID0gIkVTNTEyIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIFAyNTYgPSAiUC0yNTYiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gUDM4NCA9ICJQLTM4NCJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBQNTIxID0gIlAtNTIxIl9zOwogfQogCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlw
dG9BbGdvcml0aG1FQ0RTQTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5kZXggODA4ZTllMjk3
MmU3ZWVmODIyZGNmYzg0NmYxYmFkZWE1YzZjZDFjZC4uNThlYWYxYjBkODk4OWExN2VkMzE1YmQw
MDEwMGNiZjQ3YzIxZDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKQEAgLTM1LDExICszNSwxMSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtSE1BQ0ludGVy
bmFsIHsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcxID0gIkhTMSI7Ci1zdGF0aWMgY29u
c3QgY2hhciogY29uc3QgQUxHMjI0ID0gIkhTMjI0IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBBTEcyNTYgPSAiSFMyNTYiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzM4NCA9ICJI
UzM4NCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHNTEyID0gIkhTNTEyIjsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBBTEcxID0gIkhTMSJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBB
TEcyMjQgPSAiSFMyMjQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMjU2ID0gIkhTMjU2
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzM4NCA9ICJIUzM4NCJfczsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBBTEc1MTIgPSAiSFM1MTIiX3M7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRvQWxnb3JpdGhtSE1BQyhDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4
IDNhNTM0ZmQ4OWI1OTVlNDI1NGFiMzNiNjM1MTZjYTdlN2ExZmQxNzQuLmUzYjE2OWIwYmJlNDVj
NzRhNWI1YzZlNGI1YzA1ZDk1MGMxYzM2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRyA9ICJSU0ExXzUiOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIEFMRyA9ICJSU0ExXzUiX3M7CiAKIFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmNyZWF0ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNS5jcHAKaW5kZXggYWZjNGU2MmNiNDYwOWRjNzE2YjNmNWM2MmFmZjRj
ZGMxNWJkMzNiMy4uZjA2YWRkZWY4MzgxNGEyNzIxZGY4ZjA5ZTMwZjE1NDZiNDc2YWU5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApAQCAtMzcsMTEgKzM3LDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUludGVybmFsIHsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcxID0g
IlJTMSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjI0ID0gIlJTMjI0IjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBBTEcyNTYgPSAiUlMyNTYiOwotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IEFMRzM4NCA9ICJSUzM4NCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHNTEy
ID0gIlJTNTEyIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcxID0gIlJTMSJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBBTEcyMjQgPSAiUlMyMjQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gQUxHMjU2ID0gIlJTMjU2Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzM4NCA9ICJS
UzM4NCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEc1MTIgPSAiUlM1MTIiX3M7CiB9CiAK
IFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpj
cmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4IGM5YzkyMmY0NDk4MWM4ZDkxOGIw
NDE3NTQ3NjgwN2Y5ODRkOTBiOWUuLmZlZTU3NzBjMTA2NTg1NTliMjRhYzRlZDc3YzVkM2ZjMTYz
OGI3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAgLTM5LDExICszOSwxMSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBJbnRl
cm5hbCB7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMSA9ICJSU0EtT0FFUCI7Ci1zdGF0
aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjI0ID0gIlJTQS1PQUVQLTIyNCI7Ci1zdGF0aWMgY29u
c3QgY2hhciogY29uc3QgQUxHMjU2ID0gIlJTQS1PQUVQLTI1NiI7Ci1zdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgQUxHMzg0ID0gIlJTQS1PQUVQLTM4NCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29u
c3QgQUxHNTEyID0gIlJTQS1PQUVQLTUxMiI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMSA9
ICJSU0EtT0FFUCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcyMjQgPSAiUlNBLU9BRVAt
MjI0Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJSU0EtT0FFUC0yNTYiX3M7
CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMzg0ID0gIlJTQS1PQUVQLTM4NCJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBBTEc1MTIgPSAiUlNBLU9BRVAtNTEyIl9zOwogfQogCiBSZWY8Q3J5
cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Y3JlYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1MuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUy5jcHAKaW5kZXggZmRmZmM4M2FkMmM0NjBkYjhlYWRhMjBlYjlkYmVkMjYwYTgwNTIw
OS4uY2JmNWVkNjQzNjFkMDEzMGNlYjNkMjBiYTAyMGZmOTkzMTI1NzVhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUy5jcHAKQEAgLTM5LDExICszOSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0ludGVybmFsIHsKLXN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBBTEcxID0gIlBTMSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjI0
ID0gIlBTMjI0IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcyNTYgPSAiUFMyNTYiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzM4NCA9ICJQUzM4NCI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgQUxHNTEyID0gIlBTNTEyIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcx
ID0gIlBTMSJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcyMjQgPSAiUFMyMjQiX3M7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gQUxHMjU2ID0gIlBTMjU2Il9zOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIEFMRzM4NCA9ICJQUzM4NCJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEc1MTIg
PSAiUFM1MTIiX3M7CiB9CiAKIFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJT
QV9QU1M6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTQ3Vz
dG9tUHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTQ3VzdG9t
UHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYzQ1MjBjMTg5ZWIzYTIyMDM1MTVhMDQ0ZGI4MTRm
ZjMyMWFhZDZmZi4uNzFhNTY2ZWZjMWRhNzY5ZTEzNGZhOGQwZGQzMmEyZjYwNWQ1NDU5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0
b3IuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBET01D
U1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IgewogICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmlu
ZyBzeW50YXggeyAiKiIgfTsKKyAgICBTdHJpbmcgc3ludGF4IHsgIioiX3MgfTsKICAgICBib29s
IGluaGVyaXRzOwogICAgIFN0cmluZyBpbml0aWFsVmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCmluZGV4IDA4ZmUwOWY0ZGIxNGZiM2FkNzhiOWQ3OGUzZGZlMmFhMmEyOTk0YWMuLjhhNDFm
YWMxMzBiNTZlMTI4NjhhOTJmYThlNzQ1NmZiZjE2NDlkNDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3Au
cGwKQEAgLTU2NCw3ICs1NjQsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5hbWUoQ1NTUHJvcGVy
dHlJRCBpZCkKICAgICAgICAgKnJlc3VsdFBvaW50ZXIrKyA9IGNoYXJhY3RlcjsKICAgICB9CiAg
ICAgKnJlc3VsdFBvaW50ZXIgPSAnXFwwJzsKLSAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShyZXN1bHQpOwogfQogCiBzdGF0aWMgY29uc3Qg
Ym9vbCBpc0luaGVyaXRlZFByb3BlcnR5VGFibGVbbnVtQ1NTUHJvcGVydGllcyArICRudW1QcmVk
ZWZpbmVkUHJvcGVydGllc10gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IGFjYWYwOGNiZDE1ODU4OTNkMjY4YWY5Y2NiZWFiMzQ2YzAwYTkzNjUuLjBlZDJiZWQ5NjIzMjA0
ZjlhMGJlYjlmY2IxNWExMGRkN2U1ZDhmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC0zMTksNyArMzE5LDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBl
cyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBjb25zdAogICAgICAgICBhdXRvIHR5cGVzID0g
bV9wYXN0ZWJvYXJkLT50eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCk7CiAgICAgICAgIEFT
U0VSVCghdHlwZXMuY29udGFpbnMoIkZpbGVzIikpOwogICAgICAgICBpZiAobV9wYXN0ZWJvYXJk
LT5maWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9G
aWxlT3JJbWFnZURhdGEgJiYgYWRkRmlsZXNUeXBlID09IEFkZEZpbGVzVHlwZTo6WWVzKQotICAg
ICAgICAgICAgdHlwZXMuYXBwZW5kKCJGaWxlcyIpOworICAgICAgICAgICAgdHlwZXMuYXBwZW5k
KCJGaWxlcyJfcyk7CiAgICAgICAgIHJldHVybiB0eXBlczsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXIuY3BwCmluZGV4IDdlYTY2MmM0MDcwNTlhMmY0MTg1OGZmZjRkYTFiMjkwMWVi
NDE5YzMuLmFhMjcxNmExZmI3MjhlZDk2NGE0YTFmNDcyYThiNWE3NThhNjczM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHREZWNvZGVyLmNwcApAQCAtODEsNyArODEsNyBAQCBFeGNlcHRpb25PcjxTdHJp
bmc+IFRleHREZWNvZGVyOjpkZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlPgogCiBTdHJpbmcgVGV4dERlY29kZXI6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gU3RyaW5nKG1fdGV4dEVuY29kaW5nLm5hbWUoKSkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKG1fdGV4dEVuY29kaW5nLm5hbWUo
KSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBiZmEyNGRiMDZiZmJlM2ZmNWRlOWE3
ZWI2OTllZmFkYzQ1NGNmY2M0Li41YmI1OWY2YzA4OGU2ZjM1MDQ2M2NiNmVkODBhYTIxZTFiMWVh
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgaW50IHRvSWRlbnRpZmllcihSZWZQdHI8Q1NTVmFsdWU+
JiYgdmFsdWUpCiAKIHN0YXRpYyBTdHJpbmcmIHN0eWxlU3BhbkNsYXNzU3RyaW5nKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdHlsZVNwYW5DbGFzc1N0cmluZyhBcHBs
ZVN0eWxlU3BhbkNsYXNzKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdHls
ZVNwYW5DbGFzc1N0cmluZyA9IFN0cmluZzo6ZnJvbUxhdGluMShBcHBsZVN0eWxlU3BhbkNsYXNz
KTsKICAgICByZXR1cm4gc3R5bGVTcGFuQ2xhc3NTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMzBiYTNm
MzgyZDM4MmE3MzUxNjJhMTczNjQwNTUyOWI2OTk1YzlhMC4uMjY3ZTMxNDMzYTJiZGViY2QzMTI5
ZGM3NzBkNjc1NzI5ZDUyYTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTExNCwxMyArMTE0LDEzIEBAIHByaXZhdGU6
CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZShjb25zdCBOb2RlKiBub2Rl
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGludGVyY2hhbmdlTmV3bGlu
ZUNsYXNzU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZyA9IFN0cmluZzo6
ZnJvbUxhdGluMShBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxC
UkVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxCUkVsZW1lbnQ+KCpub2RlKS5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5l
Q2xhc3NTdHJpbmc7CiB9CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFj
ZVNwYW4oY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFz
c1N0cmluZyA9IFN0cmluZzo6ZnJvbUxhdGluMShBcHBsZUNvbnZlcnRlZFNwYWNlKTsKICAgICBy
ZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9k
ZSkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIpID09IGNvbnZlcnRl
ZFNwYWNlU3BhbkNsYXNzU3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAKaW5kZXggMTljNmUzYjI2YTMyYTM0YTQw
ZWQ1MTI0MTQzNDllMTEzNTk5Y2JhNy4uY2E0ZDk4NjlhZjIwZWMxNWYyYTQxZjhjMmIyYjVmZGRi
YmY0YWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0aW9u
QmFzZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIGNhbkFwcGVuZE5ld0xpbmVG
ZWVkVG9TZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZjxCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudD4gZXZlbnQgPSBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6Y3JlYXRlKFN0
cmluZygiXG4iKSk7CisgICAgUmVmPEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50PiBldmVudCA9IEJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50OjpjcmVhdGUoIlxuIl9zKTsKICAgICBub2RlLT5kaXNwYXRj
aEV2ZW50KGV2ZW50KTsKICAgICByZXR1cm4gZXZlbnQtPnRleHQoKS5sZW5ndGgoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAppbmRleCBhZjUzZGE4ZTI1YTRkNjk4
M2M2MmI2YTUxYjdhMWJlOGNmZmFkZWNlLi5kOWI3ZTAyOTc5N2ZhMWQ0OWY1YWU3NTJiYTljN2Nl
OTBmMjkzZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIGJvb2wgSGlkZGVuSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3Jt
RGF0YSYgZm9ybURhdGEpIGNvbnN0CiAgICAgYXV0byBuYW1lID0gZWxlbWVudCgpLT5uYW1lKCk7
CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiX2NoYXJzZXRfIikpIHsK
LSAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIFN0cmluZyB7IGZvcm1EYXRhLmVuY29kaW5n
KCkubmFtZSgpIH0pOworICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgU3RyaW5nOjpmcm9t
TGF0aW4xKGZvcm1EYXRhLmVuY29kaW5nKCkubmFtZSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShmb3JtRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRl
eCAwNjVhNzBkZTJkYTM3Y2Y3M2U2MDUzZjk3MjVmMzgyOGI4MDIxMDIzLi45ZjM2ODYwYTI2MTQw
ZjQ5ZTgyNGQzMjY3ZGUzZWFmOWExMmRjODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIHZvaWQgTWVk
aWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VGcmFnbWVudHMoKQogICAgICAgICAvLyAgICAgbmFt
ZSBvciB2YWx1ZSBhcmUgbm90IHZhbGlkIFVURi04IHN0cmluZ3MsIHRoZW4gcmVtb3ZlIHRoZSBu
YW1lLXZhbHVlIHBhaXIgZnJvbSB0aGUgbGlzdC4KICAgICAgICAgYm9vbCB2YWxpZFVURjggPSBm
YWxzZTsKICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiAhdmFsdWUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBuYW1lID0gU3RyaW5nIHsgbmFtZS51dGY4KFN0cmljdENvbnZlcnNpb24p
LmRhdGEoKSB9OworICAgICAgICAgICAgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgobmFtZS51dGY4
KFN0cmljdENvbnZlcnNpb24pLmRhdGEoKSk7CiAgICAgICAgICAgICB2YWxpZFVURjggPSAhbmFt
ZS5pc0VtcHR5KCk7CiAKICAgICAgICAgICAgIGlmICh2YWxpZFVURjgpIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZSA9IFN0cmluZyB7IHZhbHVlLnV0ZjgoU3RyaWN0Q29udmVyc2lvbikuZGF0YSgp
IH07CisgICAgICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLnV0Zjgo
U3RyaWN0Q29udmVyc2lvbikuZGF0YSgpKTsKICAgICAgICAgICAgICAgICB2YWxpZFVURjggPSAh
dmFsdWUuaXNFbXB0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBj
OTYwYzI2MGQwNTdhM2UzOWQ5OWM4MWQ1M2JjZTQwYjIzMmMwNGRiLi44Y2FmYjczNmM2N2JkNTQx
YWFjYjNmNDMzZTQ2ODA1MjQwOWFlYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgIGlmIChXZWJHTENvbG9yQnVmZmVyRmxvYXQ6OnN1cHBv
cnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29sb3JfYnVm
ZmVyX2Zsb2F0Il9zKTsKICAgICBpZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0
ZWQoKm1fY29udGV4dCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZSIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVy
X2NvbXBpbGUiX3MpOwogICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCptX2NvbnRl
eHQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0aV9kcmF3Il9zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5k
ZXggMGEyNzFlZmVkYmM2ZWQ0MmZiMzQ1ZmFmZWJiZGVjYjdiNjFjYTc5NS4uNmIyM2ZhYzkxZjE1
YjY5NDM4N2MzMDk0ZjQ3ZTY4ODI3M2YxZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC01MjQsNyArNTI0LDcgQEAgYm9v
bCB0ZXN0UHJlbG9hZFNjYW5uZXJWaWV3cG9ydFN1cHBvcnQoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIEhUTUxQYXJzZXJPcHRpb25zIG9wdGlvbnMoKmRvY3VtZW50KTsKICAgICBIVE1MUHJlbG9h
ZFNjYW5uZXIgc2Nhbm5lcihvcHRpb25zLCBkb2N1bWVudC0+dXJsKCkpOwogICAgIEhUTUxSZXNv
dXJjZVByZWxvYWRlciBwcmVsb2FkZXIoKmRvY3VtZW50KTsKLSAgICBzY2FubmVyLmFwcGVuZFRv
RW5kKFN0cmluZygiPG1ldGEgbmFtZT12aWV3cG9ydCBjb250ZW50PSd3aWR0aD00MDAnPiIpKTsK
KyAgICBzY2FubmVyLmFwcGVuZFRvRW5kKFN0cmluZygiPG1ldGEgbmFtZT12aWV3cG9ydCBjb250
ZW50PSd3aWR0aD00MDAnPiJfcykpOwogICAgIHNjYW5uZXIuc2NhbihwcmVsb2FkZXIsICpkb2N1
bWVudCk7CiAgICAgcmV0dXJuIChkb2N1bWVudC0+dmlld3BvcnRBcmd1bWVudHMoKS53aWR0aCA9
PSA0MDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
ZTY0ZDliYmE4ZjE0MTIzODRlMDA2OTAxMGEyOWNjY2YxOTk5MWExMi4uNzAyNjA3ODgwYTA1OTIx
MzQxZDQxMWZkZDNmZmM4OTRlMDEzMjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgUmVmPEZvcm1TdWJtaXNzaW9uPiBGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgSFRNTEZvcm1Db250cm8K
IAogICAgIGlmIChpc011bHRpUGFydEZvcm0pIHsKICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0
YTo6Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhKTsKLSAgICAgICAgYm91bmRhcnkgPSBTdHJp
bmcgeyBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkgfTsKKyAgICAgICAgYm91bmRhcnkgPSBT
dHJpbmc6OmZyb21MYXRpbjEoZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoZG9tRm9ybURhdGEsIGF0
dHJpYnV0ZXMubWV0aG9kKCkgPT0gTWV0aG9kOjpHZXQgPyBGb3JtRGF0YTo6Rm9ybVVSTEVuY29k
ZWQgOiBGb3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CiAgICAgICAg
IGlmIChjb3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6UG9zdCAmJiBpc01haWx0
b0Zvcm0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAppbmRleCAxYTE3YTcwZmE1OGM3MjI4ZjYzODkzNTlkZDBkMzM5ZDBlMDVjZDJlLi5jMzY4OGI5
Y2M2YTFhZTU3ODIxZTJmOTZiOTEzNDk5ZWYzYTc2NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBN
ZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXMKIAogICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3ND
b250cm9sKCkpIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
Y29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBi
eSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CisgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1vcmln
aW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNo
YXJpbmcgcG9saWN5LiJfcyk7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
Y29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hl
Y2sgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4
IGFkMjEwMGRiYTVkZTU4M2JhNDM0NjYzYzA0ZjgwMTgzMDY2MmFhYjYuLmRkMmZhNzYwZTA1OTUy
MzgyODIyYTdiNTU5NmI3NmIwMTE0MDM3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29k
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygp
Lm5hbWUoKSB9OworICAgIHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEobV9kZWNvZGVyLT5lbmNv
ZGluZygpLm5hbWUoKSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4g
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
NjNlYzRkNjI3OTkzNzMzYWZiMWU0MTU5MzFkMGQ1Yzk1N2U3MDdmNS4uYWViZjRiNzM3YTVkYjhk
ZWQ1NmI4YjZmOGU4OWJjNzNhNzQ0NzMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYg
Y2xpZW50KQogICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsKIAogICAg
IGlmICghaXNMb2FkaW5nKCkpCi0gICAgICAgIHN0YXRpY19jYXN0PENhY2hlZFN0eWxlU2hlZXRD
bGllbnQmPihjbGllbnQpLnNldENTU1N0eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCku
c3RyaW5nKCksIG1fcmVzcG9uc2UudXJsKCksIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2Rpbmco
KS5uYW1lKCkgfSwgdGhpcyk7CisgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZFN0eWxlU2hlZXRD
bGllbnQmPihjbGllbnQpLnNldENTU1N0eWxlU2hlZXQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCku
c3RyaW5nKCksIG1fcmVzcG9uc2UudXJsKCksIFN0cmluZzo6ZnJvbUxhdGluMShtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpKSwgdGhpcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0
cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tTGF0aW4xKG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkpOwogfQogCiBjb25z
dCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50
IG1pbWVUeXBlQ2hlY2tIaW50LCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdApAQCAtMTIy
LDcgKzEyMiw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENh
Y2hlZFN0eWxlU2hlZXRDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkU3R5
bGVTaGVldENsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0
KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVybCgpLCBTdHJp
bmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH0sIHRoaXMpOworICAgICAgICBjLT5z
ZXRDU1NTdHlsZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3Bv
bnNlLnVybCgpLCBTdHJpbmc6OmZyb21MYXRpbjEobV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUo
KSksIHRoaXMpOwogfQogCiBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVzcG9uc2VNSU1F
VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcAppbmRleCA5MmYxOGU5MGZiNzhjMDQwNjY3OWExMTBlM2YxN2NlYmExODlj
NDE0Li43NDIyYWYyNzljZjhmYzBlNWU5ZTZlNmIxY2RiZTQxMWY2NTgxMTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6c2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ewotICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgp
KTsKIH0KIAogdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IGYyNjFhZmYxYTk0ODI5M2FjMmIyZWEwOWNiOWYzN2EzNGJmMjAxYzQuLjFlN2I1MGQwMjYxODI0
NjBjYTc0NGYzZGNlYjgzYTJmYmVkZTdhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0
OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENhY2hlZFNjcmlwdDo6
ZW5jb2RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29k
aW5nKCkubmFtZSgpIH07CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpKTsKIH0KIAogU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlw
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKaW5kZXggMmMzMDA5OTNmNWRlZDFmMjI1NDg5YmExNTZhNjg5YTYzYWI1ZTgwNS4u
ZDEwNTBlOGE4OGVkOGRiOGIxYTllZTNlNWQ1MmRkZjA5MTUwYTVjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNTgs
NyArNTgsNyBAQCB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OnNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH07
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShtX2RlY29kZXItPmVuY29kaW5nKCkubmFt
ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZVRocmVhZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlVGhyZWFkQ29jb2EubW0KaW5kZXggYzhhMmZmMDdlN2Y4ZWJmNjgxYjVlOTg1OTY3MjMzYjcw
MmE0NDRkYi4uOWVhMGJlM2IzYzU3OTExNTI0N2JhZDcxYTBiOGJjNGU2ZTA1ZjIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0KQEAgLTExNywxMSArMTE3LDExIEBAIHN0YXRpYyBWZWN0b3I8VGhyZWFkSW5mbz4gdGhy
ZWFkSW5mb3MoKQogICAgICAgICAgICAgdXNhZ2UgPSB0aHJlYWRCYXNpY0luZm8tPmNwdV91c2Fn
ZSAvIHN0YXRpY19jYXN0PGZsb2F0PihUSF9VU0FHRV9TQ0FMRSkgKiAxMDAuMDsKIAogICAgICAg
ICAvLyBGSVhNRTogZGlzcGF0Y2hfcXVldWVfdCBjYW4gYmUgZGVzdHJveWVkIGNvbmN1cnJlbnRs
eSB3aGlsZSB3ZSBhcmUgYWNjZXNzaW5nIHRvIGl0IGhlcmUuIFdlIHNob3VsZCBub3QgdXNlIGl0
LgotICAgICAgICBTdHJpbmcgdGhyZWFkTmFtZSA9IFN0cmluZyh0aHJlYWRFeHRlbmRlZEluZm8u
cHRoX25hbWUpOworICAgICAgICBhdXRvIHRocmVhZE5hbWUgPSBTdHJpbmc6OmZyb21MYXRpbjEo
dGhyZWFkRXh0ZW5kZWRJbmZvLnB0aF9uYW1lKTsKICAgICAgICAgU3RyaW5nIGRpc3BhdGNoUXVl
dWVOYW1lOwogICAgICAgICBpZiAodGhyZWFkSWRlbnRpZmllckluZm8uZGlzcGF0Y2hfcWFkZHIp
IHsKICAgICAgICAgICAgIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUgPSAqcmVpbnRlcnByZXRfY2Fz
dDxkaXNwYXRjaF9xdWV1ZV90Kj4odGhyZWFkSWRlbnRpZmllckluZm8uZGlzcGF0Y2hfcWFkZHIp
OwotICAgICAgICAgICAgZGlzcGF0Y2hRdWV1ZU5hbWUgPSBTdHJpbmcoZGlzcGF0Y2hfcXVldWVf
Z2V0X2xhYmVsKHF1ZXVlKSk7CisgICAgICAgICAgICBkaXNwYXRjaFF1ZXVlTmFtZSA9IFN0cmlu
Zzo6ZnJvbUxhdGluMShkaXNwYXRjaF9xdWV1ZV9nZXRfbGFiZWwocXVldWUpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGluZm9zLmFwcGVuZChUaHJlYWRJbmZvIHsgV1RGTW92ZShzZW5kUmlnaHQp
LCB1c2FnZSwgdGhyZWFkTmFtZSwgZGlzcGF0Y2hRdWV1ZU5hbWUgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggZDk4MmViYjEw
ZTk1YTgzZTFmMTNhNmIyZGU5Y2VlNTg1MTRkNjliOC4uNTA3N2RjNGYzZmExMGVkOTgzZWQwZGMy
NTUwYmEzNzc5MzIyM2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aXRlbUluCiAgICAgICAgIGZvciAoYXV0byBjb2NvYVR5cGUgOiBpbmZvLnBsYXRmb3JtVHlwZXNC
eUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlVHlwZSA9IGNvY29hVHlwZVRvSW1h
Z2VUeXBlKGNvY29hVHlwZSk7CiAgICAgICAgICAgICBhdXRvKiBtaW1lVHlwZSA9IGltYWdlVHlw
ZVRvTUlNRVR5cGUoaW1hZ2VUeXBlKTsKLSAgICAgICAgICAgIGlmICghbWltZVR5cGUgfHwgIXJl
YWRlci5zaG91bGRSZWFkQnVmZmVyKFN0cmluZyB7IG1pbWVUeXBlIH0pKQorICAgICAgICAgICAg
aWYgKCFtaW1lVHlwZSB8fCAhcmVhZGVyLnNob3VsZFJlYWRCdWZmZXIoU3RyaW5nOjpmcm9tTGF0
aW4xKG1pbWVUeXBlKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXIoaXRlbUluZGV4LCBjb2NvYVR5cGUpOwogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZEZpbGVSZWFkZXImIHJlYWRlciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbgogICAg
ICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnZlcnRUSUZGVG9QTkcoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgICAgICAg
ICAgcmVhZGVyLnJlYWRCdWZmZXIoaW1hZ2VUeXBlVG9GYWtlRmlsZW5hbWUoaW1hZ2VUeXBlKSwg
U3RyaW5nIHsgbWltZVR5cGUgfSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAg
ICAgICAgIHJlYWRlci5yZWFkQnVmZmVyKGltYWdlVHlwZVRvRmFrZUZpbGVuYW1lKGltYWdlVHlw
ZSksIFN0cmluZzo6ZnJvbUxhdGluMShtaW1lVHlwZSksIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5j
cHAKaW5kZXggYWFjM2VjMmRjYTQ4YzgzNWQwMzBhNDA5ZjcyNjk2NTEzNDAxODcwNS4uZmU1NmUy
NmVlMGU3MWRjMTg5NDM2MTNlMWM3N2UzNWZiZTQ3NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIGNvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9t
ZUJ1dHRvbiA9IG51bWJlck9mU3RhbmRhcmRHYW1lCiAKIGNvbnN0IFN0cmluZyYgc3RhbmRhcmRH
YW1lcGFkTWFwcGluZ1N0cmluZygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJzdGFuZGFyZCI7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJzdGFuZGFyZCJfczsK
ICAgICByZXR1cm4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZzsKIH0KIApAQCAtNDcsNyArNDcsNyBA
QCBjb25zdCBTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQogLy8gaHR0cHM6
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI2RvbS1nYW1l
cGFkbWFwcGluZ3R5cGUteHItc3RhbmRhcmQKIGNvbnN0IFN0cmluZyYgeHJTdGFuZGFyZEdhbWVw
YWRNYXBwaW5nU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4
clN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAieHItc3RhbmRhcmQiOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJ4ci1zdGFuZGFy
ZCJfczsKICAgICByZXR1cm4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5oCmluZGV4IDY2ZmIzZGUwNzEx
NTEzMDY3ODhkYzEyNmMyM2Y0YmM4NjEyNTgzNjcuLjc1NjMyNDJjYWRhNTUxMWQwNzMyMzZmMzhk
MTgxYjk0MjQ0YjU3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvdXJDQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJD
Qy5oCkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2Vi
Q29yZTo6Rm91ckNDPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3Jl
OjpGb3VyQ0MmIGNvZGUpIHsgcmV0dXJuIFN0cmluZyB7IGNvZGUuc3RyaW5nKCkuZGF0YSgpIH07
IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkZvdXJDQyYgY29k
ZSkgeyByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKGNvZGUuc3RyaW5nKCkuZGF0YSgpKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CmluZGV4IGU2MmNmZDc1ZGY1OTJjNzFhZWI5Mzc2MWQzNzQ5MmI4NDhmMzMzNDguLmZlMTg4NTRk
NjMzMTczYTY4ZmJlMDJjZDhlZGFmYzcyZmZhOGFmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCkBAIC04MywxMCArODMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjppbml0aWFsaXplKCkKIHsKICAgICBpZiAoIXBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9FWFRF
TlNJT05TKSkpOworICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gU3RyaW5nOjpmcm9tTGF0
aW4xKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9FWFRFTlNJ
T05TKSkpOwogICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcpKQogICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7Ci0g
ICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihHTF9HZXRTdHJpbmcoR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKKyAgICBl
eHRlbnNpb25zU3RyaW5nID0gU3RyaW5nOjpmcm9tTGF0aW4xKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KEdMX0dldFN0cmluZyhHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKSkp
OwogICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcp
KQogICAgICAgICBtX3JlcXVlc3RhYmxlRXh0ZW5zaW9ucy5hZGQoZXh0ZW5zaW9uKTsKICAgICBy
ZXR1cm4gcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUpCiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
cmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmco
bmFtZSkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KEdMX0dldFN0cmluZyhuYW1lKSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCmluZGV4IGJiZDczNDQxZTA1MGI5
Njg3NTdhNGY1YTZhZDEzNDY2YjFhZDA2ZDAuLjA1OGI3ZTljZjEwNTNkZWEwNTBhODIxZjk5ODlj
Y2M5Y2Y5OGNiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJl
YWRDaGVjay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24o
Y29uc3QgY2hhciogZnVuY3Rpb24sIFdlYkNvcmU6OlRocmVhZFZpb2xhdGlvbgogICAgICAgICBj
YXNlIE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2dP
bkZpcnN0VGhyZWFkVmlvbGF0aW9uOgotICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5n
ZXQoKS5hZGQoU3RyaW5nIHsgZnVuY3Rpb24gfSkuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAg
aWYgKGxvZ2dlZEZ1bmN0aW9ucy5nZXQoKS5hZGQoU3RyaW5nOjpmcm9tTGF0aW4xKGZ1bmN0aW9u
KSkuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIE5TTG9nKEAiV2ViS2l0IFRocmVhZGlu
ZyBWaW9sYXRpb24gLSAlcyBjYWxsZWQgZnJvbSBzZWNvbmRhcnkgdGhyZWFkIiwgZnVuY3Rpb24p
OwogICAgICAgICAgICAgICAgIE5TTG9nKEAiQWRkaXRpb25hbCB0aHJlYWRpbmcgdmlvbGF0aW9u
cyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBsb2dnZWQuIik7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGFhMGU4NDJjNjQ1ODg2MGM0
YTU4YmFjZjRmMTcxNjlkMDU4ZjFlMjUuLjRmN2VjNzlkZGViZTA0N2M5ZGVjNDY5MTNkNDc5NTQw
ZThiMmQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgU3RyaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRo
U2FsdChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHIKICAgICBTSEExOjpEaWdlc3QgZGlnZXN0
OwogICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5n
IHsgU0hBMTo6aGV4RGlnZXN0KGRpZ2VzdCkuZGF0YSgpIH07CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbUxhdGluMShTSEExOjpoZXhEaWdlc3QoZGlnZXN0KS5kYXRhKCkpOwogfQogCiB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmFkZERldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoT2JzZXJ2
ZXImIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCA5N2U0MzM0OGYw
NjA4N2JlYzE4ZjA4MGIzMjk0ODc4ODNkZjRiZmM4Li4xNDUyMDBkZjk5YWI0MjJjYWNhZmE1MjRm
ZjA2MDg1MzkyMTg3NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtNTAsOSAr
NTAsOSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0Zpbmlz
aGVkKCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZv
aWNlTGlzdCgpCiB7Ci0gICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2UuYnJ1Y2UiKSwgU3RyaW5nKCJicnVj
ZSIpLCBTdHJpbmcoImVuLVVTIiksIHRydWUsIHRydWUpKTsKLSAgICBtX3ZvaWNlTGlzdC5hcHBl
bmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2lj
ZS5jbGFyayIpLCBTdHJpbmcoImNsYXJrIiksIFN0cmluZygiZW4tVVMiKSwgdHJ1ZSwgZmFsc2Up
KTsKLSAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dhbiIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmlu
ZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOworICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoIm1vY2sudm9pY2UuYnJ1Y2UiX3MsICJicnVj
ZSJfcywgImVuLVVTIl9zLCB0cnVlLCB0cnVlKSk7CisgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgibW9jay52b2ljZS5jbGFyayJfcywg
ImNsYXJrIl9zLCAiZW4tVVMiX3MsIHRydWUsIGZhbHNlKSk7CisgICAgbV92b2ljZUxpc3QuYXBw
ZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSgibW9jay52b2ljZS5sb2dh
biJfcywgImxvZ2FuIl9zLCAiZnItQ0EiX3MsIHRydWUsIHRydWUpKTsKIH0KIAogdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDFlYjZkZWJhZmMyM2M0MmRkMTJlZDc2YTFm
NmYxMDVmZTI5Y2VmNTEuLjU1YzM0YzhkYjNkODdiNGNkNGI0NTU5ODg0NGYwNWRhMTIzZWRlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApA
QCAtNTMyLDggKzUzMiw4IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6YXV0aG9yaXplckZ1bmN0aW9u
KHZvaWQqIHVzZXJEYXRhLCBpbnQgYWN0aW9uQ29kZSwgY29uc3QgY2hhCiAgICAgRGF0YWJhc2VB
dXRob3JpemVyKiBhdXRoID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VBdXRob3JpemVyKj4odXNlckRh
dGEpOwogICAgIEFTU0VSVChhdXRoKTsKIAotICAgIFN0cmluZyBwYXJhbWV0ZXIxU3RyaW5nIHsg
cGFyYW1ldGVyMSB9OwotICAgIFN0cmluZyBwYXJhbWV0ZXIyU3RyaW5nIHsgcGFyYW1ldGVyMiB9
OworICAgIGF1dG8gcGFyYW1ldGVyMVN0cmluZyA9IFN0cmluZzo6ZnJvbUxhdGluMShwYXJhbWV0
ZXIxKTsKKyAgICBhdXRvIHBhcmFtZXRlcjJTdHJpbmcgPSBTdHJpbmc6OmZyb21MYXRpbjEocGFy
YW1ldGVyMik7CiAgICAgc3dpdGNoIChhY3Rpb25Db2RlKSB7CiAgICAgICAgIGNhc2UgU1FMSVRF
X0NSRUFURV9JTkRFWDoKICAgICAgICAgICAgIHJldHVybiBhdXRoLT5jcmVhdGVJbmRleChwYXJh
bWV0ZXIxU3RyaW5nLCBwYXJhbWV0ZXIyU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCmluZGV4IDc0ZmQ5OGQ2ODA5ZTk5NGJj
Y2Y0ODg2MWNlMzcxZTc1MjkwMzE4ZjEuLmU2MTgxZjQ2NDc4NTU0MjU5YjYwMmVjODQ0YzdkNTU1
ZTIwZGNiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2Ev
TG9jYWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9M
b2NhbGVDb2NvYS5tbQpAQCAtMTE0LDcgKzExNCw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBM
b2NhbGVDb2NvYTo6bW9udGhMYWJlbHMoKQogICAgIH0KICAgICBtX21vbnRoTGFiZWxzLnJlc2Vy
dmVDYXBhY2l0eSgxMik7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogV1RGOjptb250aEZ1bGxOYW1l
KQotICAgICAgICBtX21vbnRoTGFiZWxzLnVuY2hlY2tlZEFwcGVuZChuYW1lKTsKKyAgICAgICAg
bV9tb250aExhYmVscy51bmNoZWNrZWRBcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKG5hbWUpKTsK
ICAgICByZXR1cm4gbV9tb250aExhYmVsczsKIH0KIApAQCAtMjA3LDcgKzIwNyw3IEBAIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVDb2NvYTo6c2hvcnRNb250aExhYmVscygpCiAgICAgfQog
ICAgIG1fc2hvcnRNb250aExhYmVscy5yZXNlcnZlQ2FwYWNpdHkoMTIpOwogICAgIGZvciAoYXV0
byYgbmFtZSA6IFdURjo6bW9udGhOYW1lKQotICAgICAgICBtX3Nob3J0TW9udGhMYWJlbHMudW5j
aGVja2VkQXBwZW5kKG5hbWUpOworICAgICAgICBtX3Nob3J0TW9udGhMYWJlbHMudW5jaGVja2Vk
QXBwZW5kKFN0cmluZzo6ZnJvbUxhdGluMShuYW1lKSk7CiAgICAgcmV0dXJuIG1fc2hvcnRNb250
aExhYmVsczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBjZjQy
NDgyOWQ4NzRlNmRlMTA2YmRjZjdmNTY3NGJlZGY1NDA0YTcuLmZmMDNiNWYxM2E4OGZkZTczZDky
ZGNkNTFkMGE5Mjc5ZjUyMDBjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTYxOTgsNyArNjE5OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjp0ZXN0RGljdGlvbmFyeUxvZ2dp
bmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFs
dWVEaWN0aW9uYXJ5IGRpY3Rpb25hcnk7Ci0gICAgZGljdGlvbmFyeS5zZXQoInN0cmluZ0tleSJf
cywgU3RyaW5nKCJzdHJpbmdWYWx1ZSIpKTsKKyAgICBkaWN0aW9uYXJ5LnNldCgic3RyaW5nS2V5
Il9zLCBTdHJpbmcoInN0cmluZ1ZhbHVlIl9zKSk7CiAgICAgZGljdGlvbmFyeS5zZXQoInVpbnQ2
NEtleSJfcywgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKICAgICBkaWN0
aW9uYXJ5LnNldCgiaW50NjRLZXkiX3MsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1p
bigpKTsKICAgICBkaWN0aW9uYXJ5LnNldCgiYm9vbEtleSJfcywgdHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoVmFsdWUuaAppbmRleCBlYTgzZjdkMGJiMWFhZjE0YTdiYTcyMTA5NGYzYjIxOWEyMmIyM2Ix
Li4wN2YyNmIyMDVhNWNiOGYzZWQwNWU4MmNmYThjZjU3M2NiNGI0YjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFZhbHVlLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgVmFsdWUoZG91YmxlIHZhbHVlKSA6IG1fdHlwZShOdW1iZXJWYWx1ZSksIG1fbnVtYmVy
KHZhbHVlKSB7IH0KIAogICAgICAgICAgICAgVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgOiBt
X3R5cGUoU3RyaW5nVmFsdWUpLCBtX2RhdGEoRGF0YTo6Y3JlYXRlKHZhbHVlKSkgeyB9Ci0gICAg
ICAgICAgICBWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSkgOiBtX3R5cGUoU3RyaW5nVmFsdWUpLCBt
X2RhdGEoRGF0YTo6Y3JlYXRlKFN0cmluZyB7IHZhbHVlIH0pKSB7IH0KKyAgICAgICAgICAgIFZh
bHVlKGNvbnN0IGNoYXIqIHZhbHVlKSA6IG1fdHlwZShTdHJpbmdWYWx1ZSksIG1fZGF0YShEYXRh
OjpjcmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKHZhbHVlKSkpIHsgfQogCiAgICAgICAgICAgICBl
eHBsaWNpdCBWYWx1ZShOb2RlU2V0JiYgdmFsdWUpCiAgICAgICAgICAgICAgICAgOiBtX3R5cGUo
Tm9kZVNldFZhbHVlKSwgbV9kYXRhKERhdGE6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCA1YjJiMDg3Zjg5
MDJjNjIwNTk4NmViYTdlYmVjMDk5ODY5MGMyZmM4Li5iMGJiM2U2OTMzMWExMjY5YjgwZDJkOWJh
MWE1Yzg4YjYzZjgyYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9y
RnVuYyh2b2lkKiB1c2VyRGF0YSwgeG1sRXJyb3IqIGVycm9yKQogICAgIH0KIAogICAgIC8vIHht
bEVycm9yLT5pbnQyIGlzIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBlcnJvciBvciAwIGlmIE4v
QS4KLSAgICBjb25zb2xlLT5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlhNTCwgbGV2ZWwsIFN0
cmluZyB7IGVycm9yLT5tZXNzYWdlIH0sIFN0cmluZyB7IGVycm9yLT5maWxlIH0sIGVycm9yLT5s
aW5lLCBlcnJvci0+aW50Mik7CisgICAgY29uc29sZS0+YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
OjpYTUwsIGxldmVsLCBTdHJpbmc6OmZyb21MYXRpbjEoZXJyb3ItPm1lc3NhZ2UpLCBTdHJpbmc6
OmZyb21MYXRpbjEoZXJyb3ItPmZpbGUpLCBlcnJvci0+bGluZSwgZXJyb3ItPmludDIpOwogfQog
CiAvLyBGSVhNRTogVGhlcmUgc2VlbXMgdG8gYmUgbm8gd2F5IHRvIGNvbnRyb2wgdGhlIGN0eHQg
cG9pbnRlciBmb3IgbG9hZGluZyBoZXJlLCB0aHVzIHdlIGhhdmUgZ2xvYmFscy4KQEAgLTEwMiw3
ICsxMDIsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciog
dXJpLAogICAgIGNhc2UgWFNMVF9MT0FEX0RPQ1VNRU5UOiB7CiAgICAgICAgIHhzbHRUcmFuc2Zv
cm1Db250ZXh0UHRyIGNvbnRleHQgPSAoeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIpY3R4dDsKICAg
ICAgICAgeG1sQ2hhciogYmFzZSA9IHhtbE5vZGVHZXRCYXNlKGNvbnRleHQtPmRvY3VtZW50LT5k
b2MsIGNvbnRleHQtPm5vZGUpOwotICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIFN0cmluZyB7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpIH0pLCBTdHJpbmcgeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPih1cmkpIH0pOworICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIFN0
cmluZzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSkpLCBT
dHJpbmc6OmZyb21MYXRpbjEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSkpOwog
ICAgICAgICB4bWxGcmVlKGJhc2UpOwogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwpAQCAtMzc0LDcgKzM3NCw3IEBAIGJvb2wg
WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSYgc291cmNlTm9kZSwgU3RyaW5n
JiBtaW1lVHlwZSwgU3RyaW5nCiAKICAgICAgICAgaWYgKChzdWNjZXNzID0gc2F2ZVJlc3VsdFRv
U3RyaW5nKHJlc3VsdERvYywgc2hlZXQsIHJlc3VsdFN0cmluZykpKSB7CiAgICAgICAgICAgICBt
aW1lVHlwZSA9IHJlc3VsdE1JTUVUeXBlKHJlc3VsdERvYywgc2hlZXQpOwotICAgICAgICAgICAg
cmVzdWx0RW5jb2RpbmcgPSBTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihy
ZXN1bHREb2MtPmVuY29kaW5nKSB9OworICAgICAgICAgICAgcmVzdWx0RW5jb2RpbmcgPSBTdHJp
bmc6OmZyb21MYXRpbjEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0RG9jLT5l
bmNvZGluZykpOwogICAgICAgICB9CiAgICAgICAgIHhtbEZyZWVEb2MocmVzdWx0RG9jKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggYmRmN2JmYzY3ZGFlMWQ0MzNhNmJjZDE4YWY2NmJiNDhhNTUz
ZTM1My4uYTNlYjBiOTNhYzQzMjIzMzk0ZWNkMmZhMTkyNjg0MjIyMzcxOGEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFy
KiB1cmkpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9j
dW1lbnQoKTsKICAgICAvLyBTYW1lIGxvZ2ljIGFzIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpLiBL
ZWVwIHRoZW0gaW4gc3luYy4KICAgICBhdXRvKiBlbmNvZGluZyA9IChkb2N1bWVudCAmJiBkb2N1
bWVudC0+ZGVjb2RlcigpKSA/IGRvY3VtZW50LT5kZWNvZGVyKCktPmVuY29kaW5nRm9yVVJMUGFy
c2luZygpIDogbnVsbHB0cjsKLSAgICBVUkwgdXJsKGRvY3VtZW50ID8gZG9jdW1lbnQtPmZhbGxi
YWNrQmFzZVVSTCgpIDogVVJMKCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhT
dHJpbmcgeyB1cmkgfSksIGVuY29kaW5nKTsKKyAgICBVUkwgdXJsKGRvY3VtZW50ID8gZG9jdW1l
bnQtPmZhbGxiYWNrQmFzZVVSTCgpIDogVVJMKCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhTdHJpbmc6OmZyb21MYXRpbjEodXJpKSksIGVuY29kaW5nKTsKIAogICAgIGlmICgh
c2hvdWxkQWxsb3dFeHRlcm5hbExvYWQodXJsKSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNj
cmlwdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKaW5kZXggMjEzZDA3MTU0
MjQwMjEwYTVmNGFjMTdiM2U5NjE4ODMwZTI4YTA0YS4uZWIxNjhmNTE2ZTRkYzE3MzUyZWY4Njc3
M2E3ZmQ3MzQ0NzYzNzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29u
dmVyc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BUElDb252ZXJzaW9ucy5oCkBA
IC0xNzEsNyArMTcxLDcgQEAgaW5saW5lIFRleHR1cmVWaWV3JiBmcm9tQVBJKFdHUFVUZXh0dXJl
VmlldyB0ZXh0dXJlVmlldykKIAogaW5saW5lIFN0cmluZyBmcm9tQVBJKGNvbnN0IGNoYXIqIHN0
cmluZykKIHsKLSAgICByZXR1cm4gU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbUxhdGluMShzdHJpbmcpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BZGFwdGVyLm1tCmluZGV4IDYwMGQxZDZlN2JmMGY3N2JkZDJmNTE4ZmY5NDM1MDc4MTI1MmZh
MzkuLjBiODk3ZTIyMzY4YTdlZjViYTI3MTU5OTQxOTE1YWExNTkxMTZlNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5tbQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQWRhcHRlcjo6cmVxdWVzdERl
dmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlvbkhh
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmlj
ZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShtX2RldmljZSwgU3RyaW5nIHsgZGVzY3Jp
cHRvci5sYWJlbCB9LCBtX2luc3RhbmNlKSwgeyB9KTsKKyAgICBjYWxsYmFjayhXR1BVUmVxdWVz
dERldmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShtX2RldmljZSwgU3RyaW5nOjpm
cm9tTGF0aW4xKGRlc2NyaXB0b3IubGFiZWwpLCBtX2luc3RhbmNlKSwgeyB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0K
aW5kZXggZTRhZDc3YWY5N2EzYzEzODkyMWI0N2QwMjY1OThiOGJjNzZkYTRhMy4uYWU4ZWQyZDY3
YzJmOWI3YTBmZTdhMzA5NGYwM2QzN2QwMWQwZWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQaXBlbGluZS5tbQpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgTVRMRnVuY3Rpb25Db25z
dGFudFZhbHVlcyAqY3JlYXRlQ29uc3RhbnRWYWx1ZXModWludDMyX3QgY29uc3RhbnRDb3VudCwg
YwogICAgIGF1dG8gY29uc3RhbnRWYWx1ZXMgPSBbTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyBu
ZXddOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb25zdGFudENvdW50OyArK2kpIHsK
ICAgICAgICAgY29uc3QgYXV0byYgZW50cnkgPSBjb25zdGFudHNbaV07Ci0gICAgICAgIGF1dG8g
bmFtZUl0ZXJhdG9yID0gZW50cnlQb2ludEluZm9ybWF0aW9uLnNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRJbmRpY2VzLmZpbmQoU3RyaW5nIHsgZW50cnkua2V5IH0pOworICAgICAgICBhdXRvIG5hbWVJ
dGVyYXRvciA9IGVudHJ5UG9pbnRJbmZvcm1hdGlvbi5zcGVjaWFsaXphdGlvbkNvbnN0YW50SW5k
aWNlcy5maW5kKFN0cmluZzo6ZnJvbUxhdGluMShlbnRyeS5rZXkpKTsKICAgICAgICAgaWYgKG5h
bWVJdGVyYXRvciA9PSBlbnRyeVBvaW50SW5mb3JtYXRpb24uc3BlY2lhbGl6YXRpb25Db25zdGFu
dEluZGljZXMuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgYXV0
byBzcGVjaWFsaXphdGlvbkNvbnN0YW50SW5kZXggPSBuYW1lSXRlcmF0b3ItPnZhbHVlOwpAQCAt
MTUwLDcgKzE1MCw3IEBAIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVECiAgICAgY29uc3QgUGlwZWxp
bmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0ID0gV2ViR1BVOjpmcm9tQVBJKGRlc2NyaXB0b3IubGF5
b3V0KTsKICAgICBhdXRvIGxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIAotICAg
IGF1dG8gbGlicmFyeUNyZWF0aW9uUmVzdWx0ID0gY3JlYXRlTGlicmFyeShtX2RldmljZSwgc2hh
ZGVyTW9kdWxlLCBwaXBlbGluZUxheW91dCwgU3RyaW5nIHsgZGVzY3JpcHRvci5jb21wdXRlLmVu
dHJ5UG9pbnQgfSwgbGFiZWwpOworICAgIGF1dG8gbGlicmFyeUNyZWF0aW9uUmVzdWx0ID0gY3Jl
YXRlTGlicmFyeShtX2RldmljZSwgc2hhZGVyTW9kdWxlLCBwaXBlbGluZUxheW91dCwgU3RyaW5n
Ojpmcm9tTGF0aW4xKGRlc2NyaXB0b3IuY29tcHV0ZS5lbnRyeVBvaW50KSwgbGFiZWwpOwogICAg
IGlmICghbGlicmFyeUNyZWF0aW9uUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCmluZGV4IDYwNWUzNzIzMzYxMDVhZTA4NzEz
N2RiNjE2NDY5ODExMmJjZmY4N2IuLjdjYmE3MTVkOWE0MzZmNDBmZmQ0NmQ2ODA3MzlmM2E2YmMw
ZjA1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFkZXJNb2R1bGU+IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVsZShp
ZDxNVExEZXZpY2U+IGRldmljZSwgc3RkOjoKICAgICAgICAgY29uc3QgYXV0byYgaGludCA9IHN1
cHBsaWVkSGludHMuaGludHNbaV07CiAgICAgICAgIGlmIChoaW50Lm5leHRJbkNoYWluKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIFN0cmluZyBoaW50S2V5IHsgaGludC5r
ZXkgfTsKKyAgICAgICAgYXV0byBoaW50S2V5ID0gU3RyaW5nOjpmcm9tTGF0aW4xKGhpbnQua2V5
KTsKICAgICAgICAgaGludHMuYWRkKGhpbnRLZXksIFdlYkdQVTo6ZnJvbUFQSShoaW50LmhpbnQu
bGF5b3V0KSk7CiAgICAgICAgIGF1dG8gY29udmVydGVkUGlwZWxpbmVMYXlvdXQgPSBTaGFkZXJN
b2R1bGU6OmNvbnZlcnRQaXBlbGluZUxheW91dChXZWJHUFU6OmZyb21BUEkoaGludC5oaW50Lmxh
eW91dCkpOwogICAgICAgICB3Z3NsSGludHMuYWRkKGhpbnRLZXksIFdURk1vdmUoY29udmVydGVk
UGlwZWxpbmVMYXlvdXQpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBSZWZQdHI8U2hhZGVyTW9kdWxl
PiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvcgogICAgIGlmICghc2hhZGVyTW9kdWxlUGFyYW1ldGVycykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIGNoZWNrUmVzdWx0ID0gV0dTTDo6c3RhdGljQ2hlY2soU3RyaW5n
KHNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPndnc2wuY29kZSksIHN0ZDo6bnVsbG9wdCk7CisgICAg
YXV0byBjaGVja1Jlc3VsdCA9IFdHU0w6OnN0YXRpY0NoZWNrKFN0cmluZzo6ZnJvbUxhdGluMShz
aGFkZXJNb2R1bGVQYXJhbWV0ZXJzLT53Z3NsLmNvZGUpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8V0dTTDo6U3VjY2Vzc2Z1bENoZWNrPihjaGVja1Jl
c3VsdCkgJiYgc2hhZGVyTW9kdWxlUGFyYW1ldGVycy0+aGludHMgJiYgc2hhZGVyTW9kdWxlUGFy
YW1ldGVycy0+aGludHMtPmhpbnRzQ291bnQpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
ZWFybHlDb21waWxlU2hhZGVyTW9kdWxlKG1fZGV2aWNlLCBXVEZNb3ZlKGNoZWNrUmVzdWx0KSwg
KnNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPmhpbnRzLCBmcm9tQVBJKGRlc2NyaXB0b3IubGFiZWwp
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456782</attachid>
            <date>2022-04-05 21:44:41 -0700</date>
            <delta_ts>2022-04-06 12:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238701-20220405214440.patch</filename>
            <type>text/plain</type>
            <size>97222</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Zjk4OWEyZWMzZDdiNmQ1MzZjMTNhZjUxNmIzODczMjA2ODUyMzI3Li5mZjgzNDZhYTBhOGQ3MWMy
YmViMjg5NGJmMzQ0ZTdlYmM4ZDdlNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLm1t
OgorICAgICAgICAoY3JlYXRlU3RydWN0SGFuZGxlck1hcCk6CisgICAgICAgIChoYW5kZXJGb3JT
dHJ1Y3RUYWcpOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgIChhbGxv
Y2F0ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MpOgorICAgICAgICAqIEFQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpu
YW1lKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19j
b250ZXh0X2NoZWNrX3N5bnRheCk6CisgICAgICAgICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXByZWNh
dGVkOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRBUElCYWNrdHJhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAgICAqIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcEpJVE1lbW9yeSk6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChydW5XaXRoT3B0aW9ucyk6CisgICAgICAgIChDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnVwZGF0ZUVycm9yTWVzc2FnZSk6CisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNh
Y2hlRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJk
RXJyb3I6Om1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6
CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmtleXdvcmRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxMb2NhbGU6Om51bWJlcmluZ1N5c3RlbXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
dG9TdHJpbmdXaXRoUmFkaXgpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6aW50NTJUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6b3ZlcnJpZGVBbGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldEFsaWFzZWRPcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b0xvY2Fs
ZUNhc2UpOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAocGFyc2VBcmd1bWVu
dHMpOgorICAgICAgICAqIHRvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUuY3BwOgorICAgICAgICAq
IHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25BbGxv
d2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorCiAyMDIyLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gU3RyaWN0bHkgYW5ub3RhdGUgcG9pbnRlcnMgd2l0aCBUcnVzdGVk
SW1tUHRyIGluIENDYWxsSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMzIwYWIxODkyYmM3MjFmMDliODkxZGY4NTll
OWI2NDY0MjhhZjEyLi5lM2Q4N2VkNGEzNWE4OTg4M2Y2MGNhNmFlZGJkYTM2YjBkODZlMjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RhcnQgcmVwbGFjaW5nIFN0cmluZyhjb25zdCBjaGFyKikgY29u
c3RydWN0b3Igd2l0aCBhIFN0cmluZzo6ZnJvbUxhdGluMShjb25zdCBjaGFyKikgZnVuY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODcwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0xv
Z2dlci5oOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcpOgorICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChzdHJpbmcpOgorICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IGFzIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlZjM0MGE0NDAzMTJiYTdjMGRjZjU2Mjc1YTE5
NWI2YWE3YjBiNy4uZjc3Y2VhM2QxZTQ3Nzg4MjYxYTE4NTA0MDBlMTExNDY5NDE4MzY4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hh
ciopIGNvbnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lv
bkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnNldExvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbkZh
aWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENTdGF0c0xvZ2dlcjo6dG9KU09OU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0V4Y2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjp0b1JUQ0Vycm9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRp
Y2F0aW9uVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRBdHRlc3RhdGlvbk1hcCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHA6CisgICAgICAg
IChjYm9yOjpDQk9SVmFsdWU6OkNCT1JWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
Y2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZyYW1lcyk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwp
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldERvbWFpbkxpc3QpOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DRkIuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3BwOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3Bw
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHA6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUy5jcHA6CisgICAgICAgICogY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRv
ci5oOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6dHlwZXMgY29uc3QpOgor
ICAgICAgICAqIGRvbS9UZXh0RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVj
b2Rlcjo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVTcGFuQ2xhc3NTdHJpbmcpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW50ZXJj
aGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4pOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFwcGVuZE5ld0xpbmVGZWVk
VG9TZWxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZUZyYWdtZW50cyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRl
c3RQcmVsb2FkU2Nhbm5lclZpZXdwb3J0U3VwcG9ydCk6CisgICAgICAgICogbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVu
dDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjplbmNvZGluZyBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6dGhyZWFkSW5mb3MpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnhyU3RhbmRh
cmRHYW1lcGFkTWFwcGluZ1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm91
ckNDLmg6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkZvdXJDQz46OnRvU3Ry
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Omlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Z2V0
U3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAgICAg
IChXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZv
aWNlTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjphdXRob3JpemVyRnVuY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGVDb2NvYTo6bW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxl
Q29jb2E6OnNob3J0TW9udGhMYWJlbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dGVzdERpY3Rpb25hcnlMb2dnaW5nKToK
KyAgICAgICAgKiB4bWwvWFBhdGhWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlZh
bHVlOjpWYWx1ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nv
cjo6dHJhbnNmb3JtVG9TdHJpbmcpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMi0w
NC0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAg
W1BsYXlTdGF0aW9uWyBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjI5MjQwOApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKaW5kZXggNjA0OThkYmViYTY2ZTVhNmRlNzg2NzFmY2Q3YTQ4YzJlZTY1NDQ5Yy4uYzc2YTZk
ZTZjYmQ5MTk4NDg2OGQzYWQ3MjE3YTI0NjQyMDYwYzY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBTdGFydCByZXBsYWNpbmcgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1
Y3RvciB3aXRoIGEgU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKSBmdW5jdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJH
UFU6OmFkYXB0ZXJOYW1lKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6cG9w
RXJyb3JTY29wZSk6CisKIDIwMjItMDQtMDUgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtYQ0J1aWxkXSBQQUw6IEFkZCBoZWFkZXJzLW9ubHkgZGVwZW5kZW5j
eSBvbiBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkdQVS9DaGFuZ2VMb2cKaW5kZXggZjQ1ZmQ3ZjM3MTA0MDEzMTFhMDE1ZDE2NTBlMGE5Yjc5
Y2U0MWJjYi4uNWQ3MmU4MTVhMjY0MzI1YmI0Y2YzZjI2ZjJkNDk2YWY2MzNjMzdjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFN0YXJ0IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQ
VS9BUElDb252ZXJzaW9ucy5oOgorICAgICAgICAoV2ViR1BVOjpmcm9tQVBJKToKKyAgICAgICAg
KiBXZWJHUFUvQWRhcHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVxdWVzdERl
dmljZSk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdl
YkdQVTo6Y3JlYXRlQ29uc3RhbnRWYWx1ZXMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbToK
KyAgICAgICAgKFdlYkdQVTo6ZWFybHlDb21waWxlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdl
YkdQVTo6RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorCiAyMDIyLTA0LTA0ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gU2V0
IHN2bjppZ25vcmUgb24gV2ViR1BVLnhjb2RlcHJvagpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCmluZGV4IGYxMmEyYzQ5NTNmMDAzMmRmYjRiNzJmNjhmZjgwZmVkZGI2OTAzNTQuLmQ2
YWY1YTBjNzgxZjQyY2IxM2M4YzFmZTUyNTg2MzQzNjJmM2Y1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KQEAgLTExNzksNyArMTE3OSw3IEBAIHN0YXRpYyBTdHJ1Y3RIYW5k
bGVycyogY3JlYXRlU3RydWN0SGFuZGxlck1hcCgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgdmFsdWVXaXRoPEZvbz46Y29udGV4dDogbWV0
aG9kLgogICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdFN5c3RlbTxjaGFyW10+KG1ldGhvZF9jb3B5
UmV0dXJuVHlwZShtZXRob2QpKTsKLSAgICAgICAgU3RydWN0SGFuZGxlcnM6Oml0ZXJhdG9yIGl0
ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZChTdHJpbmcgeyB0eXBlLmdldCgpIH0pOworICAgICAg
ICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0
cmluZzo6ZnJvbUxhdGluMSh0eXBlLmdldCgpKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVj
dEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFn
SGFuZGxlciYgaGFuZGxlciA9IGl0ZXItPnZhbHVlOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3Rh
dGljIFN0cnVjdFRhZ0hhbmRsZXIqIGhhbmRlckZvclN0cnVjdFRhZyhjb25zdCBjaGFyKiBlbmNv
ZGVkVHlwZSkKIAogICAgIHN0YXRpYyBTdHJ1Y3RIYW5kbGVycyogc3RydWN0SGFuZGxlcnMgPSBj
cmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCk7CiAKLSAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3Ig
aXRlciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKFN0cmluZyB7IGVuY29kZWRUeXBlIH0pOworICAg
IFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3RydWN0SGFuZGxlcnMtPmZpbmQoU3Ry
aW5nOjpmcm9tTGF0aW4xKGVuY29kZWRUeXBlKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3RydWN0SGFu
ZGxlcnMtPmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gJml0ZXItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCBmODIxZGY4
ZTNlYmVkNTdmNTQwY2QyZjAxZDY0ZWM5NmRjZmE4NmNkLi43YzMzMTVmODIzMzZlZTIzMjhiNmFh
ZTRmN2Q3MGRmMDZiNzkzM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0
ZUNvbnN0cnVjdG9yRm9yQ3VzdG9tQ2xhc3MoSlNDb250ZXh0ICpjb250ZXh0LCBjb25zCiAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHNlbF9nZXROYW1lKHNlbGVjdG9yKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWlzSW5pdEZhbWlseU1ldGhvZChAKG5hbWUpKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGluaXRUYWJsZS5zZXQoU3RyaW5n
IHsgbmFtZSB9LCAoX19icmlkZ2UgQ0ZUeXBlUmVmKXByb3RvY29sKTsKKyAgICAgICAgICAgICAg
ICBpbml0VGFibGUuc2V0KFN0cmluZzo6ZnJvbUxhdGluMShuYW1lKSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilwcm90b2NvbCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
NDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBhbGxvY2F0ZUNvbnN0cnVjdG9y
Rm9yQ3VzdG9tQ2xhc3MoSlNDb250ZXh0ICpjb250ZXh0LCBjb25zCiAgICAgICAgIGZvckVhY2hN
ZXRob2RJbkNsYXNzKGN1cnJlbnRDbGFzcywgXihNZXRob2QgbWV0aG9kKSB7CiAgICAgICAgICAg
ICBTRUwgc2VsZWN0b3IgPSBtZXRob2RfZ2V0TmFtZShtZXRob2QpOwogICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSA9IHNlbF9nZXROYW1lKHNlbGVjdG9yKTsKLSAgICAgICAgICAgIGF1dG8g
aXRlciA9IGluaXRUYWJsZS5maW5kKFN0cmluZyB7IG5hbWUgfSk7CisgICAgICAgICAgICBhdXRv
IGl0ZXIgPSBpbml0VGFibGUuZmluZChTdHJpbmc6OmZyb21MYXRpbjEobmFtZSkpOwogCiAgICAg
ICAgICAgICBpZiAoaXRlciA9PSBpbml0VGFibGUuZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KaW5kZXggOGQ4ZTM1MTY5ZDk2MzQ2OTIzN2U0Mzk1ZDYyOTMzMzM0YjI2ZmQ1YS4uODAz
MzU3OWQyYTU3MzRhZWE5ZjRlNzg2ZWRkZWJmYzQyYjkxY2FjZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC01NzQsNyArNTc0
LDcgQEAgdm9pZCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBT
dHJpbmcgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpuYW1lKCkKIHsKICAgICBpZiAobV90eXBl
ID09IENhbGxiYWNrSW5pdE1ldGhvZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZyB7IGNsYXNzX2dl
dE5hbWUobV9pbnN0YW5jZUNsYXNzLmdldCgpKSB9OworICAgICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tTGF0aW4xKGNsYXNzX2dldE5hbWUobV9pbnN0YW5jZUNsYXNzLmdldCgpKSk7CiAgICAgLy8g
RklYTUU6IE1heWJlIHdlIGNvdWxkIHN1cHBvcnQgaGF2aW5nIHRoZSBzZWxlY3RvciBhcyB0aGUg
bmFtZSBvZiB0aGUgbm9uLWluaXQgCiAgICAgLy8gZnVuY3Rpb25zIHRvIG1ha2UgaXQgYSBiaXQg
bW9yZSB1c2VyLWZyaWVuZGx5IGZyb20gdGhlIEpTIHNpZGU/CiAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAK
aW5kZXggMGQzNTgzODUzMmY4OTQ2Yzk3NDlhNzFiMjFjNDc1MDQzMWUzMzY3My4uNTZjMzI0M2Zm
OWJmYzk3ODQ3OTU4MDVmMDA5Y2ZjY2ExOWNiMTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNr
U3ludGF4UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1
cmkgPyBVUkwoU3RyaW5nIHsgdXJpIH0pIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVy
aSA/IFVSTChTdHJpbmc6OmZyb21MYXRpbjEodXJpKSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJj
ZUNvZGUgc291cmNlID0gSlNDOjptYWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVu
Z3RoIDwgMCA/IHN0cmxlbihjb2RlKSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291
cmNlVVJMIH0sCiAgICAgICAgIHNvdXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkp
OwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
dGVzdGFpci5jcHAKaW5kZXggNTI2ZTNiOGU4MGQ4YzE3ZDg5YTg0ZmVkYTUxODcwMTU1ZTVjZTgw
My4uMzRkYTI5YmYyMWEwZjVjOTQwMDY3ZWUwZDRiMTg5ZWU3M2Y3ZTMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCBpbmxp
bmUgVmVjdG9yPFN0cmluZz4gbWF0Y2hBbGwoY29uc3QgQ1N0cmluZyYgc291cmNlLCBzdGQ6OnJl
Z2V4IHJlZ2V4KQogICAgIHN0ZDo6c21hdGNoIG1hdGNoOwogICAgIGZvciAoc3RkOjpzdHJpbmcg
c3RyID0gc291cmNlLmRhdGEoKTsgc3RkOjpyZWdleF9zZWFyY2goc3RyLCBtYXRjaCwgcmVnZXgp
OyBzdHIgPSBtYXRjaC5zdWZmaXgoKSkgewogICAgICAgICBBU1NFUlQobWF0Y2guc2l6ZSgpID09
IDEpOwotICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaFswXS5zdHIoKS5jX3N0cigpKTsKKyAg
ICAgICAgbWF0Y2hlcy5hcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKG1hdGNoWzBdLnN0cigpLmNf
c3RyKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIG1hdGNoZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDNh
YTkyNTNkMzM0ODcwMDNlOTczN2RiZDIyMGI4MGE0YWFiOTNhOTkuLmJlYzg3M2ZiM2VmODZkN2E0
YTU4YTM1YjRkZWNjOTQ1NmZjZDdmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZv
aWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciog
YXJndW1lbnQpCiB7CiAgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwg
U3RyaW5nIHsgYXJndW1lbnQgfSkpOworICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2
bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGFyZ3VtZW50KSkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxB
cmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTVmFsdWUgYXJndW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApp
bmRleCBlMDJmYjgxN2QzZmZiNjEwNjA4MGNhOTA3ZjExMmZjNjlkNDQ2MGFkLi4xMjRkZTg5MDU5
MDliNzY1MDFiOWJhMGYwZGZjM2MwMDZmNjdkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE0NSw3ICsxNDUs
NyBAQCBTdHJpbmcgRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0CiAgICAg
aWYgKGlzVGFpbERlbGV0ZWQoKSkgewogICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuYyA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jYWxsZWUp
KQogICAgICAgICAgICAgcmV0dXJuIGZ1bmMtPmNhbGN1bGF0ZWREaXNwbGF5TmFtZSh2bSk7Ci0g
ICAgICAgIHJldHVybiBTdHJpbmcgeyBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2stPmlu
ZmVycmVkTmFtZSgpLmRhdGEoKSB9OworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4x
KG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbV92YWxpZE1hY2hpbmVGcmFtZS0+ZnJpZW5kbHlGdW5jdGlv
bk5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHAKaW5kZXggZjBhODE5MzI0OWYwNjNjNjUwM2NiNzdlNzJiZTJjNzg3MTc2YjM5
Yy4uOWQ1YzYxOTIyMWVlZTVkNTFjZmVmMTU4OGViNzkyYjY1OGEyYzM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTU4
Myw3ICs1ODMsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxi
b29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgICAgICB1bnNp
Z25lZCByZWFjaGFiaWxpdHlSZWFzb25JbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoaXQudmFs
dWUucmVhY2hhYmlsaXR5RnJvbU9wYXF1ZVJvb3RSZWFzb25zKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKFN0cmluZyB7IGl0LnZhbHVlLnJlYWNoYWJp
bGl0eUZyb21PcGFxdWVSb290UmVhc29ucyB9LCBuZXh0TGFiZWxJbmRleCk7CisgICAgICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBsYWJlbEluZGV4ZXMuYWRkKFN0cmluZzo6ZnJvbUxhdGluMShp
dC52YWx1ZS5yZWFjaGFiaWxpdHlGcm9tT3BhcXVlUm9vdFJlYXNvbnMpLCBuZXh0TGFiZWxJbmRl
eCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAg
ICAgICAgICBuZXh0TGFiZWxJbmRleCsrOwogICAgICAgICAgICAgICAgIHJlYWNoYWJpbGl0eVJl
YXNvbkluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAyNTFkYmUzYTVkZTkwNmE1NmUwZDc4MzAzYzJiZTRi
NDQ1MzExMWQ5Li5lZjcyZTRkYWQ2YTg4MzczYzBlMDBjMTk3MzNkYjY1NTUyMGVhZWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEFQSUJhY2t0
cmFjZShTY3JpcHRDYWxsU3RhY2smIGNhbGwKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBhdXRvIGRlbWFuZ2xlZCA9IFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHN0
YWNrW2ldKTsKICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAgIGNhbGxTdGFjay5h
cHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFN0cmluZyB7IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgp
ID8gZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkg
fSwgIltuYXRpdmUgY29kZV0iX3MsIG5vU291cmNlSUQsIDAsIDApKTsKKyAgICAgICAgICAgIGNh
bGxTdGFjay5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKFN0cmluZzo6ZnJvbUxhdGluMShkZW1hbmds
ZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpIDogZGVtYW5n
bGVkLT5tYW5nbGVkTmFtZSgpKSwgIltuYXRpdmUgY29kZV0iX3MsIG5vU291cmNlSUQsIDAsIDAp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxs
RnJhbWUoIj8iX3MsICJbbmF0aXZlIGNvZGVdIl9zLCBub1NvdXJjZUlELCAwLCAwKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKaW5kZXggYmRkOTU5Y2VjNzkxZTQ0NzM2YjE3ZDRiZTU5NmEwYzhmNGViNGRkNi4uZDY5ZjFm
NTU4NDZjNWNhYTk4MzNmOTVkODU0NDYyMWI2NTlhODdiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC0xMTUyLDcgKzExNTIs
NyBAQCB2b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCogZHN0LCBjb25zdCB2b2lkKiBzcmMs
IHNpemVfdCBzaXplKQogICAgICAgICBzdGF0aWMgdm9pZCBmbHVzaCgpIFdURl9SRVFVSVJFU19M
T0NLKGR1bXBKSVRNZW1vcnlMb2NrKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZmQgPT0g
LTEpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcGF0aCB7IE9wdGlvbnM6OmR1bXBKSVRNZW1v
cnlQYXRoKCkgfTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhdGggPSBTdHJpbmc6OmZyb21MYXRp
bjEoT3B0aW9uczo6ZHVtcEpJVE1lbW9yeVBhdGgoKSk7CiAgICAgICAgICAgICAgICAgcGF0aCA9
IHBhdGgucmVwbGFjZSgiJXBpZCIsIFN0cmluZzo6bnVtYmVyKGdldEN1cnJlbnRQcm9jZXNzSUQo
KSkpOwogICAgICAgICAgICAgICAgIGZkID0gb3BlbihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fQVBQRU5EIHwg
T19XUk9OTFkgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2NjYpOwogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGZkICE9IC0xKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggODk3ZjA5
NWY2MzM1OGE2YjcxNDY1ODk0ZjM4MjQ5OGRmNmVjYTk1OC4uOTQ0ZjAyNmMxMjc4N2MxMjY3YjNi
ZjczMTA0ZjFlZTgyODVkZDIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE4NDcsNyArMTg0
Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblJlYWRsaW5lLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgIGxpbmUuYXBwZW5kKGMpOwog
ICAgIH0KICAgICBsaW5lLmFwcGVuZCgnXDAnKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgU3RyaW5nIHsgbGluZS5kYXRhKCkgfSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBT
dHJpbmc6OmZyb21MYXRpbjEobGluZS5kYXRhKCkpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvblByZWNpc2VUaW1lLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KSkKQEAgLTI4MTMsOSArMjgxMyw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKICAgICBp
ZiAoSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJs
eU1lbW9yeSo+KHZtLCBvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyh2bSwgU3RyaW5nIHsgbWFrZVN0cmluZyhtZW1vcnktPm1lbW9yeSgpLm1vZGUo
KSkgfSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
U3RyaW5nOjpmcm9tTGF0aW4xKG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSkp
OwogICAgICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSo+KHZtLCBvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgU3RyaW5nIHsgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpKSB9KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBTdHJpbmc6OmZyb21MYXRpbjEobWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkp
KTsKICAgICB9CiAKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHku
TWVtb3J5IG9yIFdlYkFzc2VtYmx5Lkluc3RhbmNlIl9zKTsKQEAgLTMxODMsNyArMzE4Myw3IEBA
IHN0YXRpYyB2b2lkIHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b21tYW5kTGluZSYgb3B0aW9ucywgYm9vCiAgICAgICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9t
aXNlID0gbnVsbHB0cjsKICAgICAgICAgYm9vbCBpc01vZHVsZSA9IG9wdGlvbnMubV9tb2R1bGUg
fHwgc2NyaXB0c1tpXS5zY3JpcHRUeXBlID09IFNjcmlwdDo6U2NyaXB0VHlwZTo6TW9kdWxlOwog
ICAgICAgICBpZiAoc2NyaXB0c1tpXS5jb2RlU291cmNlID09IFNjcmlwdDo6Q29kZVNvdXJjZTo6
RmlsZSkgewotICAgICAgICAgICAgZmlsZU5hbWUgPSBTdHJpbmcgeyBzY3JpcHRzW2ldLmFyZ3Vt
ZW50IH07CisgICAgICAgICAgICBmaWxlTmFtZSA9IFN0cmluZzo6ZnJvbUxhdGluMShzY3JpcHRz
W2ldLmFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmIChzY3JpcHRzW2ldLnN0cmljdE1vZGUgPT0g
U2NyaXB0OjpTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAgICAgICAgICAgICAgc2NyaXB0QnVmZmVy
LmFwcGVuZCgiXCJ1c2Ugc3RyaWN0XCI7XG4iLCBzdHJsZW4oIlwidXNlIHN0cmljdFwiO1xuIikp
OwogCkBAIC0zNDMwLDcgKzM0MzAsNyBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50
cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICBpZiAoKytpID09IGFyZ2MpCiAg
ICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOwogICAgICAgICAgICAgT3B0aW9u
czo6c2V0T3B0aW9uKCJ1c2VQcm9maWxlcj0xIik7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVyT3V0
cHV0ID0gU3RyaW5nIHsgYXJndltpXSB9OworICAgICAgICAgICAgbV9wcm9maWxlck91dHB1dCA9
IFN0cmluZzo6ZnJvbUxhdGluMShhcmd2W2ldKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1tIikpIHsKQEAgLTM1NTAsNyArMzU1
MCw3IEBAIHZvaWQgQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiog
YXJndikKIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZXhjZXB0aW9uU3RyTGVuZ3Ro
ID0gc3RybGVuKCItLWV4Y2VwdGlvbj0iKTsKICAgICAgICAgaWYgKCFzdHJuY21wKGFyZywgIi0t
ZXhjZXB0aW9uPSIsIGV4Y2VwdGlvblN0ckxlbmd0aCkpIHsKLSAgICAgICAgICAgIG1fdW5jYXVn
aHRFeGNlcHRpb25OYW1lID0gU3RyaW5nKGFyZyArIGV4Y2VwdGlvblN0ckxlbmd0aCk7CisgICAg
ICAgICAgICBtX3VuY2F1Z2h0RXhjZXB0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbUxhdGluMShhcmcg
KyBleGNlcHRpb25TdHJMZW5ndGgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtMzU4MSw3ICszNTgxLDcgQEAgdm9pZCBDb21tYW5kTGluZTo6cGFyc2VBcmd1bWVudHMo
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBtX2ludGVyYWN0aXZlID0gdHJ1ZTsKIAog
ICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKQotICAgICAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJn
dltpXSk7CisgICAgICAgIG1fYXJndW1lbnRzLmFwcGVuZChTdHJpbmc6OmZyb21MYXRpbjEoYXJn
dltpXSkpOwogCiAgICAgaWYgKGR1bXBPcHRpb25zTGV2ZWwgIT0gSlNDOjpPcHRpb25zOjpEdW1w
TGV2ZWw6Ok5vbmUpIHsKICAgICAgICAgY29uc3QgY2hhciogb3B0aW9uc1RpdGxlID0gKGR1bXBP
cHRpb25zTGV2ZWwgPT0gSlNDOjpPcHRpb25zOjpEdW1wTGV2ZWw6Ok92ZXJyaWRkZW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggODJlYzI1YThiZmUzYjQ1NmYz
MDY3NTk2NmIwZjQ5NjEzNTFhNjZmNC4uYTQwNjIzZTk3ZDVmZmQ1NDM0ZDNlN2E3MWIxNjVhZjNh
OTcxMTZiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNTAw
OSw3ICs1MDA5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFn
cywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAgICAgICAgICAgICBZYXJyOjpFcnJvckNv
ZGUgZXJyb3JDb2RlID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+c3RyaW5nKCksIGZsYWdz
LT5zdHJpbmcoKSk7Ci0gICAgICAgICAgICByZWdleEZhaWwoU3RyaW5nIHsgWWFycjo6ZXJyb3JN
ZXNzYWdlKGVycm9yQ29kZSkgfSk7CisgICAgICAgICAgICByZWdleEZhaWwoU3RyaW5nOjpmcm9t
TGF0aW4xKFlhcnI6OmVycm9yTWVzc2FnZShlcnJvckNvZGUpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHJlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IGUyYTYwODc3ZWE5YTc2MGY3NzhkZWExMWFkOWFhOTIxNzM0MDJmMmUuLmE2OTgxYmJmNWFk
OTRmOTNmZDc5ODNmZjZmOTc2YzdlMzlkOTk5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaApAQCAtMTYzMCw3ICsxNjMwLDcgQEAgcHJpdmF0ZToKICAgICBORVZFUl9JTkxJ
TkUgdm9pZCB1cGRhdGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogbXNnKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1zZyk7Ci0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nKG1zZyk7Cisg
ICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tTGF0aW4xKG1zZyk7CiAgICAgICAg
IEFTU0VSVCghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IGNmNjgxOWNmZmUxYWVj
NDU0OTRjMmVmMTIxZGQ3Y2Y2OGQyNjg4ZDYuLjU3ZDgzOTRkODQzY2Q2ZjE5ZmMyMmEyMDZkNGQ3
Mzk4NzEzZWFkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrOwogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0
cmluZyYmIHNvdXJjZVVSTCkKICAgICAgICAgICAgIDogQmFzZVdlYkFzc2VtYmx5U291cmNlUHJv
dmlkZXIoc291cmNlT3JpZ2luLCBXVEZNb3ZlKHNvdXJjZVVSTCkpCi0gICAgICAgICAgICAsIG1f
c291cmNlKCJbV2ViQXNzZW1ibHkgc291cmNlXSIpCisgICAgICAgICAgICAsIG1fc291cmNlKCJb
V2ViQXNzZW1ibHkgc291cmNlXSJfcykKICAgICAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKaW5kZXggZGQ5YzBlMzZjYWRmMmZhOWYz
NjQzY2UxNGMzNzIzYTg5MjUxNDQ2Ni4uYmZmMzFiNGUyMDZkOTYzOWIwYWRiODMzMDc0YTc3ODQ5
N2QzNjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNv
ZGVDYWNoZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRl
Y29kZUNhY2hlRXJyb3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGJvb2wgQnl0ZWNvZGVDYWNoZUVy
cm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3RyaW5nIEJ5dGVjb2RlQ2Fj
aGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0
cmluZyB7IHNhZmVTdHJlcnJvcihtX2Vycm5vKS5kYXRhKCkgfTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tTGF0aW4xKHNhZmVTdHJlcnJvcihtX2Vycm5vKS5kYXRhKCkpOwogfQogCiBib29sIEJ5
dGVjb2RlQ2FjaGVFcnJvcjo6V3JpdGVFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IDE5N2MyMzUwNjI1ZWVj
MTZiNmE5ZTVlYWI4N2Q3NDQ3ODJjOTUzNjcuLjdmNzI0MWNjZTE2NTZhOGNkNzljZTExMTZmNjdh
MTM5ZmUzODI2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuY3BwCkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBTdHJpbmcgSW50bExvY2FsZTo6a2V5d29yZFZh
bHVlKEFTQ0lJTGl0ZXJhbCBrZXksIGJvb2wgaXNCb29sZWFuKSBjb25zdAogICAgIH0KICAgICBB
U1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwogICAgIGlmIChpc0Jvb2xlYW4pCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21M
YXRpbjEoYnVmZmVyLmRhdGEoKSk7CiAgICAgY29uc3QgY2hhciogdmFsdWUgPSB1bG9jX3RvVW5p
Y29kZUxvY2FsZVR5cGUoa2V5LmNoYXJhY3RlcnMoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKLSAgICBTdHJpbmcgcmVzdWx0
KHZhbHVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IFN0cmluZzo6ZnJvbUxhdGluMSh2YWx1ZSk7CiAg
ICAgaWYgKHJlc3VsdCA9PSAidHJ1ZSJfcykKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY5MSw3ICs2OTEsNyBAQCBKU0FycmF5KiBJbnRsTG9j
YWxlOjpudW1iZXJpbmdTeXN0ZW1zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJf
cyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBlbGVtZW50cy5hcHBlbmQo
dW51bXN5c19nZXROYW1lKG51bWJlcmluZ1N5c3RlbS5nZXQoKSkpOworICAgIGVsZW1lbnRzLmFw
cGVuZChTdHJpbmc6OmZyb21MYXRpbjEodW51bXN5c19nZXROYW1lKG51bWJlcmluZ1N5c3RlbS5n
ZXQoKSkpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlQXJyYXlGcm9t
U3RyaW5nVmVjdG9yKGdsb2JhbE9iamVjdCwgV1RGTW92ZShlbGVtZW50cykpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggNDdkZDA5YTJl
YTNlZTIyZmMwYjQwYmRiNWI5YzQ1NzFhMGQ4NjkwOC4uMjlkNmY5MzVmMDI3YjIwMjcwZTkxZmVi
OWRiNzZkYTU0Y2E0ZjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIFZlY3RvcjxTdHJpbmc+IG51bWJlcmlu
Z1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVU51bWJlcmluZ1N5c3RlbSogZGVmYXVsdFN5c3Rl
bSA9IHVudW1zeXNfb3Blbihsb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAgQVNT
RVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLSAgICBTdHJpbmcgZGVmYXVsdFN5c3RlbU5hbWUodW51
bXN5c19nZXROYW1lKGRlZmF1bHRTeXN0ZW0pKTsKKyAgICBhdXRvIGRlZmF1bHRTeXN0ZW1OYW1l
ID0gU3RyaW5nOjpmcm9tTGF0aW4xKHVudW1zeXNfZ2V0TmFtZShkZWZhdWx0U3lzdGVtKSk7CiAg
ICAgdW51bXN5c19jbG9zZShkZWZhdWx0U3lzdGVtKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG51
bWJlcmluZ1N5c3RlbXMoeyBkZWZhdWx0U3lzdGVtTmFtZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDY5YjMwZmY1ZTFl
N2M3NmIwYjE3NDUxNzdjYmI4ZmVhMDU2M2YwZWMuLmE1NTZjNjg0ZGJhMzczNjgwNjhiNTg0NGYz
OWU0MThmY2M3MDMxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIFN0cmluZyB0b1N0cmluZ1dp
dGhSYWRpeChkb3VibGUgZG91YmxlVmFsdWUsIGludDMyX3QgcmFkaXgpCiAgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihkb3VibGVWYWx1ZSk7CiAKICAgICBSYWRpeEJ1ZmZlciBidWZmZXI7
Ci0gICAgcmV0dXJuIFN0cmluZyB7IHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoYnVmZmVyLCBk
b3VibGVWYWx1ZSwgcmFkaXgpIH07CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMSh0b1N0
cmluZ1dpdGhSYWRpeEludGVybmFsKGJ1ZmZlciwgZG91YmxlVmFsdWUsIHJhZGl4KSk7CiB9CiAK
IC8vIHRvRXhwb25lbnRpYWwgY29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBm
b3JtYXR0aW5nIGFzIGFuIGV4cG9uZW50aWFsLgpAQCAtNDEyLDcgKzQxMiw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgICAgIGNvbnZlcnRlci5Ub0V4cG9uZW50aWFsKHgsIC0xLCAm
YnVpbGRlcik7CiAgICAgZWxzZQogICAgICAgICBjb252ZXJ0ZXIuVG9FeHBvbmVudGlhbCh4LCBk
ZWNpbWFsUGxhY2VzLCAmYnVpbGRlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgU3RyaW5nIHsgYnVpbGRlci5GaW5hbGl6ZSgpIH0pKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21MYXRpbjEoYnVpbGRlci5GaW5h
bGl6ZSgpKSkpOwogfQogCiAvLyB0b0ZpeGVkIGNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5n
LCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBhIGRlY2ltYWwgZnJhY3Rpb24uCkBAIC01MTMsNyAr
NTEzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nSW50
ZXJuYWwoVk0mIHZtLCBkb3VibGUgZG91YmxlVmFsdWUKICAgICAgICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgU3RyaW5nOjpudW1iZXIoZG91YmxlVmFsdWUpKTsKIAogICAgIFJhZGl4
QnVmZmVyIGJ1ZmZlcjsKLSAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyB7IHRvU3RyaW5n
V2l0aFJhZGl4SW50ZXJuYWwoYnVmZmVyLCBkb3VibGVWYWx1ZSwgcmFkaXgpIH0pOworICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tTGF0aW4xKHRvU3RyaW5nV2l0aFJhZGl4SW50
ZXJuYWwoYnVmZmVyLCBkb3VibGVWYWx1ZSwgcmFkaXgpKSk7CiB9CiAKIEpTU3RyaW5nKiBpbnQz
MlRvU3RyaW5nKFZNJiB2bSwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCkKQEAgLTU0MSw3
ICs1NDEsNyBAQCBKU1N0cmluZyogaW50NTJUb1N0cmluZyhWTSYgdm0sIGludDY0X3QgdmFsdWUs
IGludDMyX3QgcmFkaXgpCiAgICAgY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZyA9IGRlY2ltYWxQ
b2ludDsKICAgICAqZGVjaW1hbFBvaW50ID0gJ1wwJzsKIAotICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIFN0cmluZyB7IGludDUyVG9TdHJpbmdXaXRoUmFkaXgoc3RhcnRPZlJlc3Vs
dFN0cmluZywgdmFsdWUsIHJhZGl4KSB9KTsKKyAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KHZtLCBTdHJpbmc6OmZyb21MYXRpbjEoaW50NTJUb1N0cmluZ1dpdGhSYWRpeChzdGFydE9mUmVz
dWx0U3RyaW5nLCB2YWx1ZSwgcmFkaXgpKSk7CiB9CiAKIEpTU3RyaW5nKiBudW1iZXJUb1N0cmlu
ZyhWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCByYWRpeCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggNzY3ZmYyOTkwYzE5NWM3MzEwNmJm
MzJiN2E4MDA5OTc0MjU4ODkzYi4uZTY1ZGM4ZGJhMTVkZDlhNjUzOGZjMDg3ZTUwNTI4MDljMGZi
MjY4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTIw
MCw4ICsyMDAsNyBAQCBib29sIE9wdGlvbnM6Om92ZXJyaWRlQWxpYXNlZE9wdGlvbldpdGhIZXVy
aXN0aWMoY29uc3QgY2hhciogbmFtZSkKICAgICBpZiAoIXN0cmluZ1ZhbHVlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgYWxpYXNlZE9wdGlvbjsKLSAgICBhbGlhc2VkT3B0
aW9uID0gU3RyaW5nKCZuYW1lWzRdKSArICI9IiArIHN0cmluZ1ZhbHVlOworICAgIGF1dG8gYWxp
YXNlZE9wdGlvbiA9IG1ha2VTdHJpbmcoJm5hbWVbNF0sICc9Jywgc3RyaW5nVmFsdWUpOwogICAg
IGlmIChPcHRpb25zOjpzZXRPcHRpb24oYWxpYXNlZE9wdGlvbi51dGY4KCkuZGF0YSgpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTg3OCw3ICs4NzcsNyBAQCBib29sIE9wdGlvbnM6OnNl
dEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKQogI2RlZmluZSBGT1JfRUFDSF9PUFRJT04o
YWxpYXNlZE5hbWVfLCB1bmFsaWFzZWROYW1lXywgZXF1aXZhbGVuY2UpIFwKICAgICBpZiAoc3Ry
bGVuKCNhbGlhc2VkTmFtZV8pID09IHN0YXRpY19jYXN0PHNpemVfdD4oZXF1YWxTdHIgLSBhcmcp
ICAgIFwKICAgICAgICAgJiYgIXN0cm5jYXNlY21wKGFyZywgI2FsaWFzZWROYW1lXywgZXF1YWxT
dHIgLSBhcmcpKSB7ICAgICAgICAgIFwKLSAgICAgICAgU3RyaW5nIHVuYWxpYXNlZE9wdGlvbigj
dW5hbGlhc2VkTmFtZV8pOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYXV0byB1
bmFsaWFzZWRPcHRpb24gPSBTdHJpbmc6OmZyb21MYXRpbjEoI3VuYWxpYXNlZE5hbWVfKTsgICAg
IFwKICAgICAgICAgaWYgKGVxdWl2YWxlbmNlID09IFNhbWVPcHRpb24pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHVuYWxpYXNlZE9wdGlvbiA9IHVuYWxp
YXNlZE9wdGlvbiArIGVxdWFsU3RyOyAgICAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CmluZGV4IDk3NTcwMTJiNzNkOTU4ODIyMTlkMDllMjdmMzk2NmM3MjIxNTAyZTUuLmEzNmZkYTRh
NjAxMGU2NjQ1M2QyODViMzIzNGEyNGRiN2QxZmE0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckZsYWdzLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmcoZ2xv
YmFsT2JqZWN0LCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIFN0cmluZyB7IGZsYWdzLmRhdGEoKSB9KSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGZsYWdzLmRhdGEoKSkp
KTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyU291cmNl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAppbmRleCBkOTMxMWMyZmM2MjU0NzJmZTZmNmUyNmVkODIyMzhlN2Q0ZDFmODYwLi5iYzExOGMw
Njg3ZWY5NzBkMmMzNWMzMTllZGI0OTYwMjdjYzhkNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtODE2LDcgKzgxNiw3
IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZShWTSYg
dm0pCiAgICAgICAgIGlmIChmcmFtZVR5cGUgPT0gRnJhbWVUeXBlOjpDKSB7CiAgICAgICAgICAg
ICBhdXRvIGRlbWFuZ2xlZCA9IFdURjo6U3RhY2tUcmFjZTo6ZGVtYW5nbGUoY29uc3RfY2FzdDx2
b2lkKj4oY0NvZGVQQykpOwogICAgICAgICAgICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVk
LT5kZW1hbmdsZWROYW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEoZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1l
KCkgPyBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA6IGRlbWFuZ2xlZC0+bWFuZ2xlZE5hbWUo
KSk7CiAgICAgICAgICAgICBXVEY6OmRhdGFMb2coImNvdWxkbid0IGdldCBhIG5hbWUiKTsKICAg
ICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAppbmRleCBkMTA1YTBhZGUzMTEyZmJiNmI3ZGI2MWViYjIxYjg1MTY0
YTdmM2VhLi5iYjA1MTEyNWZjMjM0MzhkNWFiNzZlODAyN2YxNjlkYzUyY2ZlOTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAg
LTE2MjEsMTAgKzE2MjEsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGwKICAgICBhdXRvIGNv
bnZlcnRDYXNlID0gbW9kZSA9PSBDYXNlQ29udmVyc2lvbk1vZGU6Okxvd2VyID8gdV9zdHJUb0xv
d2VyIDogdV9zdHJUb1VwcGVyOwogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2lu
Z0Z1bmN0aW9uKGNvbnZlcnRDYXNlLCBidWZmZXIsIFN0cmluZ1ZpZXcgeyBzIH0udXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHMubGVuZ3RoKCksIGxvY2FsZS51dGY4KCkuZGF0YSgpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IHVfZXJyb3JOYW1lKHN0YXR1cykgfSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0
cmluZzo6ZnJvbUxhdGluMSh1X2Vycm9yTmFtZShzdGF0dXMpKSk7CiAKICAgICAvLyAxOC4gUmV0
dXJuIEwuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIFN0cmluZyhidWZmZXIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcgeyBidWZmZXIgfSkpKTsKIH0K
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJD
YXNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IDdkMjZiMTZiZjlmM2ZjYmQz
MGFlZWZkMDZjZmRkOTk5ODVjMDEwNTUuLjZmZjcxYmI5ODI0ZDU3MDhlZjhjNDhmYzE5MjY4MzRl
OTNjZTYwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTUwNywxMSAr
NTA3LDExIEBAIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJn
diwgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi12Iikg
fHwgIXN0cmNtcChhcmcsICItLXZlcmJvc2UiKSkKICAgICAgICAgICAgIG9wdGlvbnMudmVyYm9z
ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9wdGlvbnMuZmlsZXMuYXBwZW5k
KGFyZ3ZbaV0pOworICAgICAgICAgICAgb3B0aW9ucy5maWxlcy5hcHBlbmQoU3RyaW5nOjpmcm9t
TGF0aW4xKGFyZ3ZbaV0pKTsKICAgICB9CiAKICAgICBmb3IgKDsgaSA8IGFyZ2M7ICsraSkKLSAg
ICAgICAgb3B0aW9ucy5hcmd1bWVudHMuYXBwZW5kKGFyZ3ZbaV0pOworICAgICAgICBvcHRpb25z
LmFyZ3VtZW50cy5hcHBlbmQoU3RyaW5nOjpmcm9tTGF0aW4xKGFyZ3ZbaV0pKTsKIH0KIAogaW50
IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Db21waWxlclRpbWluZ1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9Db21waWxlclRpbWluZ1Njb3BlLmNwcAppbmRleCBjMDUwNzYwNjRjYTI3
Njc1MzhmYmRlYjBiZWIyZGNiOTdlMDc1ODkyLi4wMDE1M2I5NWQ2YTU2NTlhMDE3YWViNWI3YmQ5
ZjRkYjJiZjgyZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29t
cGlsZXJUaW1pbmdTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Nv
bXBpbGVyVGltaW5nU2NvcGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKIAogICAgICAgICBmb3IgKGF1dG8mIHR1cGxlIDogdG90
YWxzKSB7Ci0gICAgICAgICAgICBpZiAoU3RyaW5nKHN0ZDo6Z2V0PDA+KHR1cGxlKSkgPT0gU3Ry
aW5nKGNvbXBpbGVyTmFtZSkgJiYgU3RyaW5nKHN0ZDo6Z2V0PDE+KHR1cGxlKSkgPT0gU3RyaW5n
KG5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIXN0cmNtcChzdGQ6OmdldDwwPih0dXBsZSksIGNv
bXBpbGVyTmFtZSkgJiYgIXN0cmNtcChzdGQ6OmdldDwxPih0dXBsZSksIG5hbWUpKSB7CiAgICAg
ICAgICAgICAgICAgc3RkOjpnZXQ8Mj4odHVwbGUpICs9IGR1cmF0aW9uOwogICAgICAgICAgICAg
ICAgIHN0ZDo6Z2V0PDM+KHR1cGxlKSA9IHN0ZDo6bWF4KHN0ZDo6Z2V0PDM+KHR1cGxlKSwgZHVy
YXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmdldDwyPih0dXBsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcAppbmRl
eCAyNDJmMTA3Nzg0NGQ0NzYxZDQwODg4ZGVhYjRiYjFkYTc4MjExNTZkLi5hZGY2MzlkYzlhMmEy
OTYyYWE3YzRiZDE3ZmY1YzZlOTdkZTg4Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgRnVuY3Rp
b25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogICAg
IGlmICghZikgewogICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UKSB7CiAgICAgICAgICAgICBt
X2hhc0FjdGl2ZUFsbG93bGlzdCA9IHRydWU7Ci0gICAgICAgICAgICBtX2VudHJpZXMuYWRkKFN0
cmluZyB7IGZpbGVuYW1lIH0pOworICAgICAgICAgICAgbV9lbnRyaWVzLmFkZChTdHJpbmc6OmZy
b21MYXRpbjEoZmlsZW5hbWUpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkYXRhTG9n
RigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRh
IGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBmaWxlbmFt
ZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDAzNmQyYmVkM2FkNzllYjMwZWJiODFjYzEzNjdhNTIy
MWVlMWUyZjEuLjI5YmM4YzIxZWMzODZmNGNhNjY5MWVhZjM2NDdiNDNkOGY5NTNkYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBtb2R1bGUsIGpzU3RyaW5nKHZt
LCBTdHJpbmc6OmZyb21VVEY4KGltcC5tb2R1bGUpKSk7CiAgICAgICAgICAgICBvYmotPnB1dERp
cmVjdCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wLmZpZWxkKSkp
OwotICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtpbmQsIGpzU3RyaW5nKHZtLCBTdHJp
bmcobWFrZVN0cmluZyhpbXAua2luZCkpKSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2
bSwga2luZCwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShtYWtlU3RyaW5nKGltcC5r
aW5kKSkpKTsKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG9iaik7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAg
IH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1i
bHlNb2R1bGVFeHBvcnRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAg
ICAgSlNPYmplY3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgICAg
ICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSkpOwotICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIGtpbmQsIGpz
U3RyaW5nKHZtLCBTdHJpbmcobWFrZVN0cmluZyhleHAua2luZCkpKSk7CisgICAgICAgICAgICBv
YmotPnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMSht
YWtlU3RyaW5nKGV4cC5raW5kKSkpKTsKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxP
YmplY3QsIG9iaik7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oIGIv
U291cmNlL1dURi93dGYvTG9nZ2VyLmgKaW5kZXggZTc0NGE3ODc3N2VkMzRlMzE5MmRjZWMzZWM1
Y2NlZGIxOTllMzRmMS4uMGMwODQ4MjM2ZmM2NGMyMjg1NmVlYWM1YjgzYWFhYzk1N2E2OWYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKKysrIGIvU291cmNlL1dURi93dGYv
TG9nZ2VyLmgKQEAgLTUyLDggKzUyLDggQEAgc3RydWN0IExvZ0FyZ3VtZW50IHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIEF0b21TdHJp
bmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhjb25zdCBBdG9tU3RyaW5nJiBhcmd1
bWVudCkgeyByZXR1cm4gYXJndW1lbnQuc3RyaW5nKCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFN0cmluZz46OnZhbHVlLCBTdHJp
bmc+Ojp0eXBlIHRvU3RyaW5nKFN0cmluZyBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQ7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUs
IFN0cmluZ0J1aWxkZXIqPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nQnVp
bGRlciogYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LT50b1N0cmluZygpOyB9Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VSwgY29uc3QgY2hhcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhj
b25zdCBjaGFyKiBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTsgfQotICAgIHRl
bXBsYXRlPHNpemVfdCBsZW5ndGg+IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgY2hhciAo
JmFyZ3VtZW50KVtsZW5ndGhdKSB7IHJldHVybiBTdHJpbmcoYXJndW1lbnQpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VSwgY29uc3QgY2hhcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhj
b25zdCBjaGFyKiBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKGFyZ3VtZW50
KTsgfQorICAgIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgY2hhciAoJmFyZ3VtZW50KVtsZW5ndGhdKSB7IHJldHVybiBTdHJpbmc6OmZyb21MYXRp
bjEoYXJndW1lbnQpOyB9CiB9OwogCiBzdHJ1Y3QgSlNPTkxvZ1ZhbHVlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAppbmRleCBhNWQyNjM1ZjFiNmQxNmY5ZThkYjQzZDUzZWFlODZhOWVkODcx
MTUwLi5kNzc3YTk3OWM4NDVlYzEyOWY0ZmZhNWUxZGUyMTE4M2FiYzY1MmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwCkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBTdHJpbmc6OnNob3co
KSBjb25zdAogU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcykKIHsKICAgICAvLyBJbnRlbnRp
b25hbGx5IGxlYWtzIG1lbW9yeSEKLSAgICByZXR1cm4gbmV3IFN0cmluZyhzKTsKKyAgICByZXR1
cm4gbmV3IFN0cmluZyhTdHJpbmc6OmZyb21MYXRpbjEocykpOwogfQogCiBWZWN0b3I8Y2hhcj4g
YXNjaWlEZWJ1ZyhTdHJpbmdJbXBsKiBpbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
NjcxYmY4ODIyNmRiMGY2ODZlNzMwZDZiNmRmMGU0YTJhOGMyMDY3OS4uMDAzZWZiN2MxMjA0NTUx
ZWFlMjc3Njk3ZDk3Y2JlMjUwMjY2ZTA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC04
MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwog
Ci0gICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxv
cGVycyB0byB1c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJs
ZSwKLSAgICAvLyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQu
IEFsc28gbm90ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEu
Ci0gICAgLy8gRGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgp
IGluc3RlYWQuCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0
byBmcm9tTGF0aW4xKCkuCisgICAgLy8gVGhpcyBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGZy
b21MYXRpbjEoKSAvIGZyb21VVEY4KCkgLyBTdHJpbmcoQVNDSUlMaXRlcmFsKS4KKyAgICAvLyBG
SVhNRTogTWFrZSBwcml2YXRlIG9uY2UgYWxsIHVzZXJzIGhhdmUgYmVlbiBwb3J0ZWQuCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
KTsKIAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFN0cmluZyBmcm9tTGF0aW4xKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpIHsgcmV0dXJuIFN0cmluZyB7IGNoYXJhY3RlcnMgfTsgfQorCiAgICAg
Ly8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwu
CiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKICAgICBTdHJpbmcoU3RyaW5nSW1wbCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBmYTA0NmI1MzA2
N2FhOTcxZGMwZTk5NWY3YjhkNTgzMThhOWM5YzQ5Li41NmNlMGM5ODYwMjJlOTI0NzRiYWM3ZDIx
OGM5NDdmNjdiNzY0NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKHN0ZDo6dW5pcXVlX3B0cjx3CiAKIHZv
aWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVk
KEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGVycm9y
Q29kZSwgZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9yTWVzc2FnZSldICgpIG11dGFibGUgewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJv
ckNvZGUsIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6ZnJvbUxhdGluMShlcnJvck1lc3NhZ2UpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzU3RvcHBlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9pc0luaXRpYXRv
cikKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldExv
Y2FsU2Vzc2lvbkRlc2NyaXB0aW9uU3VjY2VlZGVkKCkKIAogdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpzZXRMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb25Db2RlIGVy
cm9yQ29kZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJvckNvZGUsIGVycm9yTWVzc2Fn
ZSA9IFN0cmluZyhlcnJvck1lc3NhZ2UpXSgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJvckNvZGUsIGVycm9yTWVzc2Fn
ZSA9IFN0cmluZzo6ZnJvbUxhdGluMShlcnJvck1lc3NhZ2UpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+aXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNldExvY2FsRGVz
Y3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgZXJyb3JDb2RlLCBXVEZNb3ZlKGVycm9yTWVzc2Fn
ZSkgfSk7CkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
ZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogCiB2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb25D
b2RlIGVycm9yQ29kZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBlcnJvckNvZGUsIGVycm9y
TWVzc2FnZSA9IFN0cmluZyhlcnJvck1lc3NhZ2UpXSAoKSBtdXRhYmxlIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZXJyb3JDb2RlLCBlcnJv
ck1lc3NhZ2UgPSBTdHJpbmc6OmZyb21MYXRpbjEoZXJyb3JNZXNzYWdlKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2V0
UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uIHsgZXJyb3JDb2RlLCBXVEZNb3ZlKGVy
cm9yTWVzc2FnZSkgfSk7CkBAIC03NzUsNyArNzc1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKG1fc3Rh
dHMuVG9Kc29uKCkuY19zdHIoKSk7IH0KKyAgICBTdHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKG1fc3RhdHMuVG9Kc29uKCkuY19zdHIoKSk7IH0K
IAogcHJpdmF0ZToKICAgICBjb25zdCB3ZWJydGM6OlJUQ1N0YXRzJiBtX3N0YXRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCmluZGV4IDlmMTk2ZjM3OGJiNzc3NjczY2Y3MTIwY2FhNGZi
NDY0NTAxZjRhODUuLjkyNTZmY2ZjYTc4MzU5MjgzZGVkNWQwOTBlYjFmMTM4NjM0ZWQwYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRp
b24gdG9FeGNlcHRpb24oY29uc3Qgd2VicnRjOjpSVENFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNT
RVJUKCFlcnJvci5vaygpKTsKIAotICAgIHJldHVybiBFeGNlcHRpb24geyB0b0V4Y2VwdGlvbkNv
ZGUoZXJyb3IudHlwZSgpKSwgU3RyaW5nIHsgZXJyb3IubWVzc2FnZSgpIH0gfTsKKyAgICByZXR1
cm4gRXhjZXB0aW9uIHsgdG9FeGNlcHRpb25Db2RlKGVycm9yLnR5cGUoKSksIFN0cmluZzo6ZnJv
bUxhdGluMShlcnJvci5tZXNzYWdlKCkpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgUlRDSWNlQ29t
cG9uZW50IHRvUlRDSWNlQ29tcG9uZW50KGludCBjb21wb25lbnQpCkBAIC00NTUsNyArNDU1LDcg
QEAgUmVmUHRyPFJUQ0Vycm9yPiB0b1JUQ0Vycm9yKGNvbnN0IHdlYnJ0Yzo6UlRDRXJyb3ImIHJ0
Y0Vycm9yKQogICAgIGF1dG8gZGV0YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUocnRjRXJyb3Iu
ZXJyb3JfZGV0YWlsKCkpOwogICAgIGlmICghZGV0YWlsKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmcgeyBydGNFcnJv
ci5tZXNzYWdlKCkgfSk7CisgICAgcmV0dXJuIFJUQ0Vycm9yOjpjcmVhdGUoKmRldGFpbCwgU3Ry
aW5nOjpmcm9tTGF0aW4xKHJ0Y0Vycm9yLm1lc3NhZ2UoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCAzMzJlMmJlNzk1YTAxZjFlMDQ2NjJk
YzQxMTNiYWVhYzQ0MDcxZTc1Li40N2I3NzExNWU5ODBkZWY0ZDMwYjFiNjdjOTM3ODIwOWRiYTAw
NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhl
bnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBjYm9yOjpDQk9S
VmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQXR0ZXN0YXRpb25NYXAoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0
aERhdGEsIFN0cmluZwogICAgICAgICBjb25zdCBzaXplX3QgYWFndWlkT2Zmc2V0ID0gcnBJZEhh
c2hMZW5ndGggKyBmbGFnc0xlbmd0aCArIHNpZ25Db3VudGVyTGVuZ3RoOwogICAgICAgICBpZiAo
YXV0aERhdGEuc2l6ZSgpID49IGFhZ3VpZE9mZnNldCArIGFhZ3VpZExlbmd0aCkKICAgICAgICAg
ICAgIG1lbXNldChhdXRoRGF0YS5kYXRhKCkgKyBhYWd1aWRPZmZzZXQsIDAsIGFhZ3VpZExlbmd0
aCk7Ci0gICAgICAgIGZvcm1hdCA9IFN0cmluZyB7IG5vbmVBdHRlc3RhdGlvblZhbHVlIH07Cisg
ICAgICAgIGZvcm1hdCA9IFN0cmluZzo6ZnJvbUxhdGluMShub25lQXR0ZXN0YXRpb25WYWx1ZSk7
CiAgICAgICAgIHN0YXRlbWVudE1hcC5jbGVhcigpOwogICAgIH0KICAgICBhdHRlc3RhdGlvbk9i
amVjdE1hcFtjYm9yOjpDQk9SVmFsdWUoImF1dGhEYXRhIildID0gY2Jvcjo6Q0JPUlZhbHVlKFdU
Rk1vdmUoYXV0aERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vY2Jvci9DQk9SVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9jYm9yL0NCT1JWYWx1ZS5jcHAKaW5kZXggNGU3MDgzNjE5NWIzMDZlYTc0ODBkZTAwMGNlODE3
YTMyN2Y0OWQ4My4uNjE4ZmY2YzYxYmU5MjhiMWUwNGM1YzU0MTM1YzhiZGMwZWY0NjdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5j
cHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBDQk9SVmFsdWU6OkNCT1JWYWx1ZShjb25zdCBXZWJDb3Jl
OjpCdWZmZXJTb3VyY2UmIGJ1ZmZlclNvdXJjZSkKIH0KIAogQ0JPUlZhbHVlOjpDQk9SVmFsdWUo
Y29uc3QgY2hhciogaW5TdHJpbmcpCi0gICAgOiBDQk9SVmFsdWUoU3RyaW5nKGluU3RyaW5nKSkK
KyAgICA6IENCT1JWYWx1ZShTdHJpbmc6OmZyb21MYXRpbjEoaW5TdHJpbmcpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4
IGIxMzIwZjAwOGJiZjkzMzU5YjJiODUzMWRlYjE2ZjE0ZDlmOThlOWYuLmU2NzAwMmQxN2RjZjM0
ODMxOGQxODViMzQ3YjFlMjYwZTJiZDliNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRGF0YWJhc2U6
OkRhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGUKICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRD
b3B5KCkpCiAgICAgLCBtX2VzdGltYXRlZFNpemUoZXN0aW1hdGVkU2l6ZSkKICAgICAsIG1fZmls
ZW5hbWUoRGF0YWJhc2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5mdWxsUGF0aEZvckRhdGFiYXNlKG1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG1fbmFtZSkpCi0gICAgLCBtX2RhdGFiYXNlQXV0
aG9yaXplcihEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0ZShTdHJpbmcgeyB1bnF1YWxpZmllZElu
Zm9UYWJsZU5hbWUgfSkpCisgICAgLCBtX2RhdGFiYXNlQXV0aG9yaXplcihEYXRhYmFzZUF1dGhv
cml6ZXI6OmNyZWF0ZShTdHJpbmc6OmZyb21MYXRpbjEodW5xdWFsaWZpZWRJbmZvVGFibGVOYW1l
KSkpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKQEAgLTQ1
MSw3ICs0NTEsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZURhdGFiYXNlKCkKIAogYm9vbCBEYXRh
YmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxk
Q2FjaGVWZXJzaW9uKQogewotICAgIFN0cmluZyBxdWVyeShTdHJpbmcoIlNFTEVDVCB2YWx1ZSBG
Uk9NICIpICsgZnVsbHlRdWFsaWZpZWRJbmZvVGFibGVOYW1lKCkgKyAgIiBXSEVSRSBrZXkgPSAn
IiArIHZlcnNpb25LZXkgKyAiJzsiKTsKKyAgICBhdXRvIHF1ZXJ5ID0gbWFrZVN0cmluZygiU0VM
RUNUIHZhbHVlIEZST00gIiwgZnVsbHlRdWFsaWZpZWRJbmZvVGFibGVOYW1lKCksICAiIFdIRVJF
IGtleSA9ICciLCB2ZXJzaW9uS2V5LCAiJzsiKTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVy
LT5kaXNhYmxlKCk7CiAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBib29sIERhdGFiYXNlOjpzZXRWZXJz
aW9uSW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJz
aQogewogICAgIC8vIFRoZSBJTlNFUlQgd2lsbCByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5IGZv
ciB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV3IHZlcnNpb24gbnVtYmVyLCBkdWUgdG8gdGhlIFVO
SVFVRSBPTiBDT05GTElDVCBSRVBMQUNFCiAgICAgLy8gY2xhdXNlIGluIHRoZSBDUkVBVEUgc3Rh
dGVtZW50IChzZWUgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCkpLgotICAgIFN0cmlu
ZyBxdWVyeShTdHJpbmcoIklOU0VSVCBJTlRPICIpICsgZnVsbHlRdWFsaWZpZWRJbmZvVGFibGVO
YW1lKCkgKyAgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiArIHZlcnNpb25LZXkgKyAiJywgPyk7
Iik7CisgICAgYXV0byBxdWVyeSA9IG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIGZ1bGx5UXVh
bGlmaWVkSW5mb1RhYmxlTmFtZSgpLCAgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiwgdmVyc2lv
bktleSwgIicsID8pOyIpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCBiZTdmYzRiODZlZjlkMjk4
ZmRiN2NkOTE4MGViM2E5ZWNiOWVlOTdiLi44M2NmZjdhNjQzMDJiMjU5ZDM0ZTA3MmM0ZjhiMzcz
Y2QxMmUxYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyAr
MzksNyBAQCBzdGF0aWMgU3RyaW5nIGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7
CiAgICAgV0dQVUFkYXB0ZXJQcm9wZXJ0aWVzIHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJH
ZXRQcm9wZXJ0aWVzKGFkYXB0ZXIsICZwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gU3RyaW5nIHsg
cHJvcGVydGllcy5uYW1lIH07CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShwcm9wZXJ0
aWVzLm5hbWUpOwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRG
ZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHAKaW5kZXggOGM5NDc1YWY1MDFlNjNkNmYyZDlhNjI0MDVjYjc1MTI4MDVhMTA4NS4uOGQzNmUz
YzE1N2YzODZlNzZiOTgzYTlmZjMzNzM5ZmJiNWEyOWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURl
dmljZUltcGwuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJv
clNjb3BlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYK
ICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJv
ciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsK
KyAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKFN0cmluZzo6
ZnJvbUxhdGluMShtZXNzYWdlKSkgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV0dQVUVycm9yVHlwZV9PdXRPZk1lbW9yeToKICAgICAgICAgICAgIGVycm9yID0geyB7IE91
dE9mTWVtb3J5RXJyb3I6OmNyZWF0ZSgpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGQ4NDExYzkzZTQ3NzAyZjU2N2FkNjE0MDM2NmVjZTc2
NjM1YzA0NWYuLmM2MTlkNWQwNDNiZTY1ZmUzNWNiZTYyMDkwMjg4MGMyOWE4NGRlY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNDQzLDcgKzQ0
Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5SW5k
ZXhlZEtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYKIAogICAgIC8vIDguIElmIGVhc2luZ3MgaXMg
YW4gZW1wdHkgc2VxdWVuY2UsIGxldCBpdCBiZSBhIHNlcXVlbmNlIG9mIGxlbmd0aCBvbmUgY29u
dGFpbmluZyB0aGUgc2luZ2xlIHZhbHVlIOKAnGxpbmVhcuKAnSwgaS5lLiDCqyAibGluZWFyIiDC
uy4KICAgICBpZiAoZWFzaW5ncy5pc0VtcHR5KCkpCi0gICAgICAgIGVhc2luZ3MuYXBwZW5kKCJs
aW5lYXIiKTsKKyAgICAgICAgZWFzaW5ncy5hcHBlbmQoImxpbmVhciJfcyk7CiAKICAgICAvLyA5
LiBJZiBlYXNpbmdzIGhhcyBmZXdlciBpdGVtcyB0aGFuIHByb3BlcnR5IGtleWZyYW1lcywgcmVw
ZWF0IHRoZSBlbGVtZW50cyBpbiBlYXNpbmdzIHN1Y2Nlc3NpdmVseSBzdGFydGluZyBmcm9tIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QgdW50aWwgZWFzaW5ncyBoYXMgYXMgbWFueQogICAgIC8v
ICAgIGl0ZW1zIGFzIHByb3BlcnR5IGtleWZyYW1lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmgKaW5kZXggZjgxY2Q3ZTQ2MTAyOTMyMDYzZTgwOTQ1ZWJhNWM5MWE5
NTczYzIxYi4uY2MzMWJkYTRkYzQ1ODEzYWMzZTdlOTEwMTQ1YjEwMmU2MDlkMTY2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogCiAgICAgc3RydWN0IEJhc2VLZXlmcmFtZSB7CiAgICAgICAgIE1hcmthYmxlRG91
YmxlIG9mZnNldDsKLSAgICAgICAgU3RyaW5nIGVhc2luZyB7ICJsaW5lYXIiIH07CisgICAgICAg
IFN0cmluZyBlYXNpbmcgeyAibGluZWFyIl9zIH07CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdGlv
bk9yQXV0byBjb21wb3NpdGUgeyBDb21wb3NpdGVPcGVyYXRpb25PckF1dG86OkF1dG8gfTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAppbmRleCBjZTk5ZmQ1ZjMyMTRjNDBhNTg2MDUxMDUzMWNjMTFiZjI5ZTg2
ZTQwLi4wODExYmY1ZDAzYzUyNmYyMGVmNTljM2NjYzUwZGU3NTI5NGNhNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTEyODQsNyArMTI4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoYXV0byogcmVn
RXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgb2JqKSkgewogICAgICAgICAg
ICAgICAgIHdyaXRlKFJlZ0V4cFRhZyk7CiAgICAgICAgICAgICAgICAgd3JpdGUocmVnRXhwLT5y
ZWdFeHAoKS0+cGF0dGVybigpKTsKLSAgICAgICAgICAgICAgICB3cml0ZShTdHJpbmcoSlNDOjpZ
YXJyOjpmbGFnc1N0cmluZyhyZWdFeHAtPnJlZ0V4cCgpLT5mbGFncygpKS5kYXRhKCkpKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZShTdHJpbmc6OmZyb21MYXRpbjEoSlNDOjpZYXJyOjpmbGFnc1N0
cmluZyhyZWdFeHAtPnJlZ0V4cCgpLT5mbGFncygpKS5kYXRhKCkpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVy
aXRzPEpTTWVzc2FnZVBvcnQ+KHZtKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCA3NDQx
NjVmMGI1MjAxNWNjZWZkNzdmNjg3Y2U1M2NjMDVjMWIxNTY4Li4zNGE4NmZkNDlmNjdiYmExNDAy
NTE0MjQ1YTg2ZGNmNWQ0MGU5MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4g
Z2V0RG9tYWluTGlzdChjb25zdCBKU09OOjpBcnJheQogICAgICAgICAgICAgeyAnJCcsICJcXCQi
IH0KICAgICAgICAgfSB9OwogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlc2NhcGVUYWJsZSkK
LSAgICAgICAgICAgIGRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKHBhaXIuZmlyc3QsIFN0cmluZyB7
IHBhaXIuc2Vjb25kIH0pOworICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLnJlcGxhY2UocGFp
ci5maXJzdCwgU3RyaW5nVmlldyB7IHBhaXIuc2Vjb25kIH0pOwogCiAgICAgICAgIGNvbnN0IGNo
YXIqIHByb3RvY29sUmVnZXggPSAiW2Etel1bYS16Ky4tXSo6XFwvXFwvIjsKICAgICAgICAgY29u
c3QgY2hhciogYWxsb3dTdWJkb21haW5zUmVnZXggPSAiKC4qXFwuKSoiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmNwcAppbmRleCA3NmQyNmU5N2U0MjM2MjVlYmIyODFjN2M2OGYzOTM5ODgxMzhmNGFiLi5j
MTNkZjM0NmU1ZTgzODZiNjBkZjFkM2FlYmE1YjYzNmFlMDRhNGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmNwcApAQCAtMzYsOSArMzYsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0ludGVybmFsIHsKLXN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBBTEcxMjggPSAiQTEyOENCQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMTky
ID0gIkExOTJDQkMiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzI1NiA9ICJBMjU2Q0JD
IjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcxMjggPSAiQTEyOENCQyJfczsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBBTEcxOTIgPSAiQTE5MkNCQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBBTEcyNTYgPSAiQTI1NkNCQyJfczsKIHN0YXRpYyBjb25zdCBzaXplX3QgSVZTSVpFID0gMTY7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19DRkIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5jcHAKaW5kZXggMjUwNTQ3MGEyOTMyYWU4YTcyMDg5ODVm
NTdmNzBmZjRiZWI1OWEwMi4uODhlODA3NWI2MjRmMmE3ZTM5ZGFhZDA2NDBjMTU0N2QyNTYwM2Nj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NGQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5jcHAKQEAgLTM2LDkgKzM2LDkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIENyeXB0b0FsZ29yaXRobUFFU19DRkJJbnRlcm5hbCB7Ci1z
dGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMTI4ID0gIkExMjhDRkI4IjsKLXN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBBTEcxOTIgPSAiQTE5MkNGQjgiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IEFMRzI1NiA9ICJBMjU2Q0ZCOCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTI4ID0g
IkExMjhDRkI4Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzE5MiA9ICJBMTkyQ0ZCOCJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcyNTYgPSAiQTI1NkNGQjgiX3M7CiBzdGF0aWMg
Y29uc3Qgc2l6ZV90IElWU0laRSA9IDE2OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCmluZGV4
IGFkMzA5ZjYxYTc1ZjkyY2Q5OTQ2M2Y5ZTgxMzJhZmIwY2M5N2VkZTEuLjliMjY0OGU4YTExMGQ2
YWY2NDQ1MDQ5NWRjMmU0MzUzMGZkZWQ1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCkBAIC0z
OCw5ICszOCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDcnlwdG9BbGdv
cml0aG1BRVNfQ1RSSW50ZXJuYWwgewotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzEyOCA9
ICJBMTI4Q1RSIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcxOTIgPSAiQTE5MkNUUiI7
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjU2ID0gIkEyNTZDVFIiOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIEFMRzEyOCA9ICJBMTI4Q1RSIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IEFMRzE5MiA9ICJBMTkyQ1RSIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJB
MjU2Q1RSIl9zOwogc3RhdGljIGNvbnN0IHNpemVfdCBDb3VudGVyU2l6ZSA9IDE2Owogc3RhdGlj
IGNvbnN0IHVpbnQ2NF90IEFsbEJpdHNTZXQgPSB+KHVpbnQ2NF90KTA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfR0NN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19HQ00uY3BwCmluZGV4IGEzZGQ4NTMzMjE5M2U1OTFiYTYzMzg0MjQ3YWU5NzhiOTg1ODgyM2Mu
LjJkY2JiYjdiODE0YjcxYWZjODIyMDU5MTc1YjRhMzJhZmI1M2E2N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19HQ00uY3BwCkBAIC0zNiw5ICszNiw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVz
cGFjZSBDcnlwdG9BbGdvcml0aG1BRVNfR0NNSW50ZXJuYWwgewotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IEFMRzEyOCA9ICJBMTI4R0NNIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcx
OTIgPSAiQTE5MkdDTSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjU2ID0gIkEyNTZH
Q00iOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzEyOCA9ICJBMTI4R0NNIl9zOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIEFMRzE5MiA9ICJBMTkyR0NNIl9zOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIEFMRzI1NiA9ICJBMjU2R0NNIl9zOwogI2lmIENQVShBRERSRVNTNjQpCiBzdGF0aWMgY29u
c3QgdWludDY0X3QgUGxhaW5UZXh0TWF4TGVuZ3RoID0gNTQ5NzU1ODEzNjMyVUxMOyAvLyAyXjM5
IC0gMjU2CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCmluZGV4IDQ3NGFhYzhkMTQxOWFmMDMz
MGViOGIwMWE3YzcyNGY1OWQ0NGE2ZmIuLmFkYzY1YjY0NTU5ZDIzYmQ1YWU2Zjg0ZmYxMDA4NDk4
M2Q5ZmQ5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19LVy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcApAQCAtMzUsOSArMzUsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXSW50ZXJuYWwg
ewotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzEyOCA9ICJBMTI4S1ciOwotc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IEFMRzE5MiA9ICJBMTkyS1ciOwotc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IEFMRzI1NiA9ICJBMjU2S1ciOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzEyOCA9ICJB
MTI4S1ciX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMTkyID0gIkExOTJLVyJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBBTEcyNTYgPSAiQTI1NktXIl9zOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19LVyhDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5jcHAKaW5kZXggODcyZmJlYTY2YWNi
YjZjMTE0NjMwN2RhYmY5NDBiM2VhM2IwNWM3OS4uYmE4NjQwZTcwOWMzNjM2ZTZjYWQyZjM2MGIx
ZWEzMDIyMjRiNzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDcnlwdG9BbGdvcml0aG1FQ0RTQUludGVy
bmFsIHsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEcyNTYgPSAiRVMyNTYiOwotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IEFMRzM4NCA9ICJFUzM4NCI7Ci1zdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgQUxHNTEyID0gIkVTNTEyIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBQMjU2ID0g
IlAtMjU2IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBQMzg0ID0gIlAtMzg0IjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBQNTIxID0gIlAtNTIxIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBBTEcyNTYgPSAiRVMyNTYiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMzg0ID0gIkVT
Mzg0Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzUxMiA9ICJFUzUxMiJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBQMjU2ID0gIlAtMjU2Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IFAzODQgPSAiUC0zODQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gUDUyMSA9ICJQLTUyMSJf
czsKIH0KIAogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OmNyZWF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IDgwOGU5ZTI5NzJlN2VlZjgyMmRjZmM4NDZmMWJhZGVh
NWM2Y2QxY2QuLjU4ZWFmMWIwZDg5ODlhMTdlZDMxNWJkMDAxMDBjYmY0N2MyMWQ5NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIENyeXB0b0FsZ29yaXRobUhNQUNJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgQUxHMSA9ICJIUzEiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzIyNCA9
ICJIUzIyNCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMjU2ID0gIkhTMjU2IjsKLXN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEczODQgPSAiSFMzODQiOwotc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IEFMRzUxMiA9ICJIUzUxMiI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMSA9
ICJIUzEiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMjI0ID0gIkhTMjI0Il9zOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJIUzI1NiJfczsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBBTEczODQgPSAiSFMzODQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHNTEyID0g
IkhTNTEyIl9zOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZvckNy
eXB0b0FsZ29yaXRobUhNQUMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCAzYTUzNGZkODliNTk1ZTQyNTRhYjMz
YjYzNTE2Y2E3ZTdhMWZkMTc0Li5lM2IxNjliMGJiZTQ1Yzc0YTViNWM2ZTRiNWMwNWQ5NTBjMWMz
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBBTEcgPSAiUlNBMV81IjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEcgPSAiUlNBMV81Il9z
OwogCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpjcmVhdGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCmlu
ZGV4IGFmYzRlNjJjYjQ2MDlkYzcxNmIzZjVjNjJhZmY0Y2RjMTViZDMzYjMuLmYwNmFkZGVmODM4
MTRhMjcyMWRmOGYwOWUzMGYxNTQ2YjQ3NmFlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNS5jcHAKQEAgLTM3LDExICszNywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVJbnRlcm5hbCB7
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMSA9ICJSUzEiOwotc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IEFMRzIyNCA9ICJSUzIyNCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxH
MjU2ID0gIlJTMjU2IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBBTEczODQgPSAiUlMzODQi
Owotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzUxMiA9ICJSUzUxMiI7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gQUxHMSA9ICJSUzEiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMjI0
ID0gIlJTMjI0Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzI1NiA9ICJSUzI1NiJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEczODQgPSAiUlMzODQiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gQUxHNTEyID0gIlJTNTEyIl9zOwogfQogCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmNwcAppbmRleCBjOWM5MjJmNDQ5ODFjOGQ5MThiMDQxNzU0NzY4MDdmOTg0ZDkwYjllLi5m
ZWU1NzcwYzEwNjU4NTU5YjI0YWM0ZWQ3N2M1ZDNmYzE2MzhiN2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuY3BwCkBAIC0zOSwxMSArMzksMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQSW50ZXJuYWwgewotc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IEFMRzEgPSAiUlNBLU9BRVAiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFM
RzIyNCA9ICJSU0EtT0FFUC0yMjQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzI1NiA9
ICJSU0EtT0FFUC0yNTYiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzM4NCA9ICJSU0Et
T0FFUC0zODQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzUxMiA9ICJSU0EtT0FFUC01
MTIiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFMRzEgPSAiUlNBLU9BRVAiX3M7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gQUxHMjI0ID0gIlJTQS1PQUVQLTIyNCJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBBTEcyNTYgPSAiUlNBLU9BRVAtMjU2Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IEFMRzM4NCA9ICJSU0EtT0FFUC0zODQiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHNTEy
ID0gIlJTQS1PQUVQLTUxMiJfczsKIH0KIAogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCmluZGV4IGZkZmZj
ODNhZDJjNDYwZGI4ZWFkYTIwZWI5ZGJlZDI2MGE4MDUyMDkuLmNiZjVlZDY0MzYxZDAxMzBjZWIz
ZDIwYmEwMjBmZjk5MzEyNTc1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCkBAIC0zOSwxMSAr
MzksMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENyeXB0b0FsZ29yaXRo
bVJTQV9QU1NJbnRlcm5hbCB7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgQUxHMSA9ICJQUzEi
Owotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzIyNCA9ICJQUzIyNCI7Ci1zdGF0aWMgY29u
c3QgY2hhciogY29uc3QgQUxHMjU2ID0gIlBTMjU2IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBBTEczODQgPSAiUFMzODQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEFMRzUxMiA9ICJQ
UzUxMiI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHMSA9ICJQUzEiX3M7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gQUxHMjI0ID0gIlBTMjI0Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFM
RzI1NiA9ICJQUzI1NiJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBBTEczODQgPSAiUFMzODQi
X3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gQUxHNTEyID0gIlBTNTEyIl9zOwogfQogCiBSZWY8
Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpjcmVhdGUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU0N1c3RvbVByb3BlcnR5RGVzY3JpcHRvci5oCmlu
ZGV4IGM0NTIwYzE4OWViM2EyMjAzNTE1YTA0NGRiODE0ZmYzMjFhYWQ2ZmYuLjcxYTU2NmVmYzFk
YTc2OWUxMzRmYThkMGRkMzJhMmY2MDVkNTQ1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NDdXN0b21Qcm9wZXJ0eURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlwdG9yLmgKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRE9NQ1NTQ3VzdG9tUHJvcGVydHlEZXNjcmlw
dG9yIHsKICAgICBTdHJpbmcgbmFtZTsKLSAgICBTdHJpbmcgc3ludGF4IHsgIioiIH07CisgICAg
U3RyaW5nIHN5bnRheCB7ICIqIl9zIH07CiAgICAgYm9vbCBpbmhlcml0czsKICAgICBTdHJpbmcg
aW5pdGlhbFZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCAwOGZlMDlmNGRiMTRm
YjNhZDc4YjlkNzhlM2RmZTJhYTJhMjk5NGFjLi44YTQxZmFjMTMwYjU2ZTEyODY4YTkyZmE4ZTc0
NTZmYmYxNjQ5ZDQ5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC01NjQsNyArNTY0LDcgQEAg
U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnR5SUQgaWQpCiAgICAgICAgICpyZXN1
bHRQb2ludGVyKysgPSBjaGFyYWN0ZXI7CiAgICAgfQogICAgICpyZXN1bHRQb2ludGVyID0gJ1xc
MCc7Ci0gICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21M
YXRpbjEocmVzdWx0KTsKIH0KIAogc3RhdGljIGNvbnN0IGJvb2wgaXNJbmhlcml0ZWRQcm9wZXJ0
eVRhYmxlW251bUNTU1Byb3BlcnRpZXMgKyAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXNdID0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBhY2FmMDhjYmQxNTg1ODkzZDI2OGFm
OWNjYmVhYjM0NmMwMGE5MzY1Li4wZWQyYmVkOTYyMzIwNGY5YTBiZWI5ZmNiMTVhMTBkZDdlNWQ4
ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBA
IFZlY3RvcjxTdHJpbmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMoQWRkRmlsZXNUeXBlIGFkZEZpbGVz
VHlwZSkgY29uc3QKICAgICAgICAgYXV0byB0eXBlcyA9IG1fcGFzdGVib2FyZC0+dHlwZXNGb3JM
ZWdhY3lVbnNhZmVCaW5kaW5ncygpOwogICAgICAgICBBU1NFUlQoIXR5cGVzLmNvbnRhaW5zKCJG
aWxlcyIpKTsKICAgICAgICAgaWYgKG1fcGFzdGVib2FyZC0+ZmlsZUNvbnRlbnRTdGF0ZSgpICE9
IFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhICYmIGFkZEZp
bGVzVHlwZSA9PSBBZGRGaWxlc1R5cGU6OlllcykKLSAgICAgICAgICAgIHR5cGVzLmFwcGVuZCgi
RmlsZXMiKTsKKyAgICAgICAgICAgIHR5cGVzLmFwcGVuZCgiRmlsZXMiX3MpOwogICAgICAgICBy
ZXR1cm4gdHlwZXM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcAppbmRleCA3
ZWE2NjJjNDA3MDU5YTJmNDE4NThmZmY0ZGExYjI5MDFlYjQxOWMzLi5hYTI3MTZhMWZiNzI4ZWQ5
NjRhNGExZjQ3MmE4YjVhNzU4YTY3MzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAK
QEAgLTgxLDcgKzgxLDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVjb2Rlcjo6ZGVjb2Rl
KHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4KIAogU3RyaW5nIFRleHRE
ZWNvZGVyOjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZyhtX3RleHRFbmNv
ZGluZy5uYW1lKCkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbUxhdGluMShtX3RleHRFbmNvZGluZy5uYW1lKCkpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKaW5kZXggYmZhMjRkYjA2YmZiZTNmZjVkZTlhN2ViNjk5ZWZhZGM0NTRjZmNjNC4uNWJi
NTlmNmMwODhlNmYzNTA0NjNjYjZlZDgwYWEyMWUxYjFlYTYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGlj
IGludCB0b0lkZW50aWZpZXIoUmVmUHRyPENTU1ZhbHVlPiYmIHZhbHVlKQogCiBzdGF0aWMgU3Ry
aW5nJiBzdHlsZVNwYW5DbGFzc1N0cmluZygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc3R5bGVTcGFuQ2xhc3NTdHJpbmcoQXBwbGVTdHlsZVNwYW5DbGFzcyk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3R5bGVTcGFuQ2xhc3NTdHJpbmcgPSBTdHJp
bmc6OmZyb21MYXRpbjEoQXBwbGVTdHlsZVNwYW5DbGFzcyk7CiAgICAgcmV0dXJuIHN0eWxlU3Bh
bkNsYXNzU3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDMwYmEzZjM4MmQzODJhNzM1MTYyYTE3MzY0MDU1
MjliNjk5NWM5YTAuLjI2N2UzMTQzM2EyYmRlYmNkMzEyOWRjNzcwZDY3NTcyOWQ1MmExOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBwcml2YXRlOgogCiBzdGF0aWMgYm9vbCBpc0ludGVy
Y2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZyhBcHBsZUludGVy
Y2hhbmdlTmV3bGluZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaW50ZXJj
aGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmcgPSBTdHJpbmc6OmZyb21MYXRpbjEoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpOwogICAgIHJldHVybiBpczxIVE1MQlJFbGVtZW50Pihub2RlKSAmJiBkb3du
Y2FzdDxIVE1MQlJFbGVtZW50Pigqbm9kZSkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihjbGFzc0F0dHIpID09IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nOwogfQogCiBzdGF0
aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUqIG5vZGUp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29udmVydGVkU3BhY2VTcGFu
Q2xhc3NTdHJpbmcoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcgPSBTdHJpbmc6OmZyb21M
YXRpbjEoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CiAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihu
b2RlKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY2xhc3NBdHRyKSA9PSBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFz
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNv
bW1hbmQuY3BwCmluZGV4IDE5YzZlM2IyNmEzMmEzNGE0MGVkNTEyNDE0MzQ5ZTExMzU5OWNiYTcu
LmNhNGQ5ODY5YWYyMGVjMTVmMmE0MWY4YzJiMmI1ZmRkYmJmNGFlY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgYm9vbCBjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBSZWY8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ+IGV2ZW50ID0g
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmNyZWF0ZShTdHJpbmcoIlxuIikpOworICAgIFJlZjxC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudD4gZXZlbnQgPSBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6
Y3JlYXRlKCJcbiJfcyk7CiAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgcmV0
dXJuIGV2ZW50LT50ZXh0KCkubGVuZ3RoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklu
cHV0VHlwZS5jcHAKaW5kZXggYWY1M2RhOGUyNWE0ZDY5ODNjNjJiNmE1MWI3YTFiZThjZmZhZGVj
ZS4uZDliN2UwMjk3OTdmYTFkNDlmNWFlNzUyYmE5YzdjZTkwZjI5M2Y1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIEhpZGRl
bklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhKSBjb25zdAog
ICAgIGF1dG8gbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOwogCiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIl9jaGFyc2V0XyIpKSB7Ci0gICAgICAgIGZvcm1EYXRhLmFwcGVu
ZChuYW1lLCBTdHJpbmcgeyBmb3JtRGF0YS5lbmNvZGluZygpLm5hbWUoKSB9KTsKKyAgICAgICAg
Zm9ybURhdGEuYXBwZW5kKG5hbWUsIFN0cmluZzo6ZnJvbUxhdGluMShmb3JtRGF0YS5lbmNvZGlu
ZygpLm5hbWUoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIElu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoZm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5kZXggMDY1YTcwZGUyZGEzN2NmNzNlNjA1
M2Y5NzI1ZjM4MjhiODAyMTAyMy4uOWYzNjg2MGEyNjE0MGY0OWU4MjRkMzI2N2RlM2VhZjlhMTJk
Yzg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
Y3BwCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCB2b2lkIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBh
cnNlRnJhZ21lbnRzKCkKICAgICAgICAgLy8gICAgIG5hbWUgb3IgdmFsdWUgYXJlIG5vdCB2YWxp
ZCBVVEYtOCBzdHJpbmdzLCB0aGVuIHJlbW92ZSB0aGUgbmFtZS12YWx1ZSBwYWlyIGZyb20gdGhl
IGxpc3QuCiAgICAgICAgIGJvb2wgdmFsaWRVVEY4ID0gZmFsc2U7CiAgICAgICAgIGlmICghbmFt
ZS5pc0VtcHR5KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbmFtZSA9IFN0
cmluZyB7IG5hbWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5kYXRhKCkgfTsKKyAgICAgICAgICAg
IG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KG5hbWUudXRmOChTdHJpY3RDb252ZXJzaW9uKS5kYXRh
KCkpOwogICAgICAgICAgICAgdmFsaWRVVEY4ID0gIW5hbWUuaXNFbXB0eSgpOwogCiAgICAgICAg
ICAgICBpZiAodmFsaWRVVEY4KSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmcgeyB2
YWx1ZS51dGY4KFN0cmljdENvbnZlcnNpb24pLmRhdGEoKSB9OworICAgICAgICAgICAgICAgIHZh
bHVlID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS51dGY4KFN0cmljdENvbnZlcnNpb24pLmRhdGEo
KSk7CiAgICAgICAgICAgICAgICAgdmFsaWRVVEY4ID0gIXZhbHVlLmlzRW1wdHkoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYzk2MGMyNjBkMDU3YTNlMzlkOTljODFk
NTNiY2U0MGIyMzJjMDRkYi4uOGNhZmI3MzZjNjdiZDU0MWFhY2IzZjQzM2U0NjgwNTI0MDlhZWM0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAg
ICBpZiAoV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKm1fY29udGV4dCkpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCJfcyk7CiAgICAgaWYg
KEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3VwcG9ydGVkKCptX2NvbnRleHQpKQotICAgICAg
ICByZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIl9zKTsKICAgICBpZiAo
V2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZCgqbV9jb250ZXh0KSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfbXVsdGlfZHJhdyJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDBhMjcxZWZlZGJjNmVkNDJmYjM0
NWZhZmViYmRlY2I3YjYxY2E3OTUuLjZiMjNmYWM5MWYxNWI2OTQzODdjMzA5NGY0N2U2ODgyNzNm
MWU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcApAQCAtNTI0LDcgKzUyNCw3IEBAIGJvb2wgdGVzdFByZWxvYWRTY2FubmVyVmll
d3BvcnRTdXBwb3J0KERvY3VtZW50KiBkb2N1bWVudCkKICAgICBIVE1MUGFyc2VyT3B0aW9ucyBv
cHRpb25zKCpkb2N1bWVudCk7CiAgICAgSFRNTFByZWxvYWRTY2FubmVyIHNjYW5uZXIob3B0aW9u
cywgZG9jdW1lbnQtPnVybCgpKTsKICAgICBIVE1MUmVzb3VyY2VQcmVsb2FkZXIgcHJlbG9hZGVy
KCpkb2N1bWVudCk7Ci0gICAgc2Nhbm5lci5hcHBlbmRUb0VuZChTdHJpbmcoIjxtZXRhIG5hbWU9
dmlld3BvcnQgY29udGVudD0nd2lkdGg9NDAwJz4iKSk7CisgICAgc2Nhbm5lci5hcHBlbmRUb0Vu
ZChTdHJpbmcoIjxtZXRhIG5hbWU9dmlld3BvcnQgY29udGVudD0nd2lkdGg9NDAwJz4iX3MpKTsK
ICAgICBzY2FubmVyLnNjYW4ocHJlbG9hZGVyLCAqZG9jdW1lbnQpOwogICAgIHJldHVybiAoZG9j
dW1lbnQtPnZpZXdwb3J0QXJndW1lbnRzKCkud2lkdGggPT0gNDAwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGU2NGQ5YmJhOGYxNDEyMzg0ZTAwNjkw
MTBhMjljY2NmMTk5OTFhMTIuLjcwMjYwNzg4MGEwNTkyMTM0MWQ0MTFmZGQzZmZjODk0ZTAxMzI5
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjIxLDcg
KzIyMSw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiAKICAgICBpZiAoaXNNdWx0aVBhcnRG
b3JtKSB7CiAgICAgICAgIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZU11bHRpUGFydChkb21G
b3JtRGF0YSk7Ci0gICAgICAgIGJvdW5kYXJ5ID0gU3RyaW5nIHsgZm9ybURhdGEtPmJvdW5kYXJ5
KCkuZGF0YSgpIH07CisgICAgICAgIGJvdW5kYXJ5ID0gU3RyaW5nOjpmcm9tTGF0aW4xKGZvcm1E
YXRhLT5ib3VuZGFyeSgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9ybURhdGEg
PSBGb3JtRGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLCBhdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1l
dGhvZDo6R2V0ID8gRm9ybURhdGE6OkZvcm1VUkxFbmNvZGVkIDogRm9ybURhdGE6OnBhcnNlRW5j
b2RpbmdUeXBlKGVuY29kaW5nVHlwZSkpOwogICAgICAgICBpZiAoY29waWVkQXR0cmlidXRlcy5t
ZXRob2QoKSA9PSBNZXRob2Q6OlBvc3QgJiYgaXNNYWlsdG9Gb3JtKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWExN2E3MGZhNThjNzIy
OGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZS4uYzM2ODhiOWNjNmExYWU1NzgyMWUyZjk2YjkxMzQ5
OWVmM2E3NjY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzCiAKICAg
ICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9y
ZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKSB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1v
cmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5LiIpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiBjb25zb2xlTWVzc2FnZSgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQg
ZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iX3MpOwogICAg
ICAgICBtX2xvYWRlci0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsK
ICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7CiAgICAgICAgIGlm
IChtX2NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBhZDIxMDBkYmE1ZGU1ODNiYTQzNDY2
M2MwNGY4MDE4MzA2NjJhYWI2Li5kZDJmYTc2MGUwNTk1MjM4MjgyMmE3YjU1OTZiNzZiMDExNDAz
N2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdDo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCiAKIFN0cmlu
ZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFN0cmluZyB7IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkgfTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tTGF0aW4xKG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkpOwogfQogCiBz
dGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OnByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVS
TCwgRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDYzZWM0ZDYyNzk5MzczM2FmYjFlNDE1
OTMxZDBkNWM5NTdlNzA3ZjUuLmFlYmY0YjczN2E1ZGI4ZGVkNTZiOGI2ZjhlODliYzczYTc0NDcz
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6ZGlkQWRkQ2xpZW50KGNsaWVudCk7CiAKICAgICBpZiAoIWlzTG9hZGluZygpKQotICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Jj4oY2xpZW50KS5zZXRDU1NT
dHlsZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVy
bCgpLCBTdHJpbmcgeyBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpIH0sIHRoaXMpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Jj4oY2xpZW50KS5zZXRDU1NT
dHlsZVNoZWV0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBtX3Jlc3BvbnNlLnVy
bCgpLCBTdHJpbmc6OmZyb21MYXRpbjEobV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSksIHRo
aXMpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYgY2hzKQpAQCAtNjksNyArNjksNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZW5jb2RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmcgeyBtX2RlY29kZXItPmVu
Y29kaW5nKCkubmFtZSgpIH07CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShtX2RlY29k
ZXItPmVuY29kaW5nKCkubmFtZSgpKTsKIH0KIAogY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwgYm9v
bCogaGFzVmFsaWRNSU1FVHlwZSkgY29uc3QKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiAK
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRTdHlsZVNoZWV0Q2xpZW50PiB3
KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFN0eWxlU2hlZXRDbGllbnQqIGMgPSB3Lm5l
eHQoKSkKLSAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3Jlc291cmNlUmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwgU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGlu
ZygpLm5hbWUoKSB9LCB0aGlzKTsKKyAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3Jlc291
cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgbV9yZXNwb25zZS51cmwoKSwgU3RyaW5nOjpmcm9t
TGF0aW4xKG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCkpLCB0aGlzKTsKIH0KIAogU3RyaW5n
IENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggOTJm
MThlOTBmYjc4YzA0MDY2NzlhMTEwZTNmMTdjZWJhMTg5YzQxNC4uNzQyMmFmMjc5Y2Y4ZmMwZTVl
OWU2ZTZiMWNkYmU0MTFmNjU4MTEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQogCiBTdHJpbmcgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nIHsg
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OworICAgIHJldHVybiBTdHJpbmc6OmZyb21M
YXRpbjEobV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkU1ZH
RG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCBmMjYxYWZmMWE5NDgyOTNhYzJiMmVh
MDljYjlmMzdhMzRiZjIwMWM0Li4xZTdiNTBkMDI2MTgyNDYwY2E3NDRmM2RjZWI4M2EyZmJlZGU3
YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApA
QCAtNTEsNyArNTEsNyBAQCB2b2lkIENhY2hlZFNjcmlwdDo6c2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJiBjaHMpCiAKIFN0cmluZyBDYWNoZWRTY3JpcHQ6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gU3RyaW5nIHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21MYXRpbjEobV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSk7CiB9
CiAKIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDJjMzAwOTkz
ZjVkZWQxZjIyNTQ4OWJhMTU2YTY4OWE2M2FiNWU4MDUuLmQxMDUwZThhODhlZDhkYjhiMWE5ZWUz
ZTVkNTJkZGYwOTE1MGE1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBDYWNoZWRY
U0xTdHlsZVNoZWV0OjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGNocykKIAogU3RyaW5nIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5n
IHsgbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSB9OworICAgIHJldHVybiBTdHJpbmc6OmZy
b21MYXRpbjEobV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4
IGM4YTJmZjA3ZTdmOGViZjY4MWI1ZTk4NTk2NzIzM2I3MDJhNDQ0ZGIuLjllYTBiZTNiM2M1Nzkx
MTUyNDdiYWQ3MWEwYjhiYzRlNmUwNWYyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0xMTcsMTEgKzExNywx
MSBAQCBzdGF0aWMgVmVjdG9yPFRocmVhZEluZm8+IHRocmVhZEluZm9zKCkKICAgICAgICAgICAg
IHVzYWdlID0gdGhyZWFkQmFzaWNJbmZvLT5jcHVfdXNhZ2UgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
VEhfVVNBR0VfU0NBTEUpICogMTAwLjA7CiAKICAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoX3F1
ZXVlX3QgY2FuIGJlIGRlc3Ryb3llZCBjb25jdXJyZW50bHkgd2hpbGUgd2UgYXJlIGFjY2Vzc2lu
ZyB0byBpdCBoZXJlLiBXZSBzaG91bGQgbm90IHVzZSBpdC4KLSAgICAgICAgU3RyaW5nIHRocmVh
ZE5hbWUgPSBTdHJpbmcodGhyZWFkRXh0ZW5kZWRJbmZvLnB0aF9uYW1lKTsKKyAgICAgICAgYXV0
byB0aHJlYWROYW1lID0gU3RyaW5nOjpmcm9tTGF0aW4xKHRocmVhZEV4dGVuZGVkSW5mby5wdGhf
bmFtZSk7CiAgICAgICAgIFN0cmluZyBkaXNwYXRjaFF1ZXVlTmFtZTsKICAgICAgICAgaWYgKHRo
cmVhZElkZW50aWZpZXJJbmZvLmRpc3BhdGNoX3FhZGRyKSB7CiAgICAgICAgICAgICBkaXNwYXRj
aF9xdWV1ZV90IHF1ZXVlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8ZGlzcGF0Y2hfcXVldWVfdCo+KHRo
cmVhZElkZW50aWZpZXJJbmZvLmRpc3BhdGNoX3FhZGRyKTsKLSAgICAgICAgICAgIGRpc3BhdGNo
UXVldWVOYW1lID0gU3RyaW5nKGRpc3BhdGNoX3F1ZXVlX2dldF9sYWJlbChxdWV1ZSkpOworICAg
ICAgICAgICAgZGlzcGF0Y2hRdWV1ZU5hbWUgPSBTdHJpbmc6OmZyb21MYXRpbjEoZGlzcGF0Y2hf
cXVldWVfZ2V0X2xhYmVsKHF1ZXVlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpbmZvcy5hcHBl
bmQoVGhyZWFkSW5mbyB7IFdURk1vdmUoc2VuZFJpZ2h0KSwgdXNhZ2UsIHRocmVhZE5hbWUsIGRp
c3BhdGNoUXVldWVOYW1lIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCmluZGV4IGQ5ODJlYmIxMGU5NWE4M2UxZjEzYTZiMmRlOWNlZTU4
NTE0ZDY5YjguLjUwNzdkYzRmM2ZhMTBlZDk4M2VkMGRjMjU1MGJhMzc3OTMyMjNlZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAg
LTIzNCw3ICsyMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImIHJlYWRlciwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbgogICAgICAgICBmb3IgKGF1
dG8gY29jb2FUeXBlIDogaW5mby5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSkgewogICAgICAgICAg
ICAgYXV0byBpbWFnZVR5cGUgPSBjb2NvYVR5cGVUb0ltYWdlVHlwZShjb2NvYVR5cGUpOwogICAg
ICAgICAgICAgYXV0byogbWltZVR5cGUgPSBpbWFnZVR5cGVUb01JTUVUeXBlKGltYWdlVHlwZSk7
Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBlIHx8ICFyZWFkZXIuc2hvdWxkUmVhZEJ1ZmZlcihT
dHJpbmcgeyBtaW1lVHlwZSB9KSkKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUgfHwgIXJlYWRl
ci5zaG91bGRSZWFkQnVmZmVyKFN0cmluZzo6ZnJvbUxhdGluMShtaW1lVHlwZSkpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYXV0byBidWZmZXIgPSByZWFkQnVmZmVy
KGl0ZW1JbmRleCwgY29jb2FUeXBlKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNDIsNyArMjQy
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW4KICAgICAgICAgICAgICAgICBidWZmZXIgPSBj
b252ZXJ0VElGRlRvUE5HKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICNlbmRpZgogICAgICAg
ICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQnVmZmVyKGlt
YWdlVHlwZVRvRmFrZUZpbGVuYW1lKGltYWdlVHlwZSksIFN0cmluZyB7IG1pbWVUeXBlIH0sIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICByZWFkZXIucmVhZEJ1ZmZl
cihpbWFnZVR5cGVUb0Zha2VGaWxlbmFtZShpbWFnZVR5cGUpLCBTdHJpbmc6OmZyb21MYXRpbjEo
bWltZVR5cGUpLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCmluZGV4IGFhYzNlYzJkY2E0OGM4
MzVkMDMwYTQwOWY3MjY5NjUxMzQwMTg3MDUuLmZlNTZlMjZlZTBlNzFkYzE4OTQzNjEzZTFjNzdl
MzVmYmU0NzQzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
R2FtZXBhZENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9HYW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBzaXplX3QgbnVt
YmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b24gPSBudW1iZXJPZlN0YW5k
YXJkR2FtZQogCiBjb25zdCBTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0YW5kYXJkR2FtZXBhZE1hcHBp
bmcgPSAic3RhbmRhcmQiOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0YW5k
YXJkR2FtZXBhZE1hcHBpbmcgPSAic3RhbmRhcmQiX3M7CiAgICAgcmV0dXJuIHN0YW5kYXJkR2Ft
ZXBhZE1hcHBpbmc7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgU3RyaW5nJiBzdGFuZGFy
ZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyNkb20tZ2FtZXBhZG1hcHBpbmd0eXBlLXhyLXN0YW5k
YXJkCiBjb25zdCBTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5n
ID0gInhyLXN0YW5kYXJkIjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4clN0
YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAieHItc3RhbmRhcmQiX3M7CiAgICAgcmV0dXJuIHhyU3Rh
bmRhcmRHYW1lcGFkTWFwcGluZzsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3VyQ0MuaAppbmRleCA2NmZiM2RlMDcxMTUxMzA2Nzg4ZGMxMjZjMjNmNGJjODYx
MjU4MzY3Li43NTYzMjQyY2FkYTU1MTFkMDczMjM2ZjM4ZDE4MWI5NDI0NGI1N2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaApAQCAtODUsNyArODUsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CiAK
IHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkZvdXJDQz4gewotICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Rm91ckNDJiBjb2RlKSB7IHJldHVy
biBTdHJpbmcgeyBjb2RlLnN0cmluZygpLmRhdGEoKSB9OyB9CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpGb3VyQ0MmIGNvZGUpIHsgcmV0dXJuIFN0cmluZzo6ZnJv
bUxhdGluMShjb2RlLnN0cmluZygpLmRhdGEoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBlNjJjZmQ3NWRmNTkyYzcx
YWViOTM3NjFkMzc0OTJiODQ4ZjMzMzQ4Li5mZTE4ODU0ZDYzMzE3M2E2OGZiZTAyY2Q4ZWRhZmM3
MmZmYThhZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtODMsMTAg
KzgzLDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW5pdGlhbGl6ZSgpCiB7CiAg
ICAgaWYgKCFwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKKyAgICBTdHJpbmcg
ZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmluZzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihHTF9HZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpKTsKICAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKICAgICAgICAgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmFkZChleHRlbnNpb24pOwotICAgIGV4dGVuc2lvbnNTdHJpbmcgPSBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKEdMX1JFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpKSk7CisgICAgZXh0ZW5zaW9uc1N0cmluZyA9IFN0cmlu
Zzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJpbmco
R0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSkpKTsKICAgICBmb3IgKGF1dG8mIGV4dGVu
c2lvbiA6IGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnKSkKICAgICAgICAgbV9yZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CiAgICAgcmV0dXJuIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpOwpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oR0xfR2V0U3RyaW5nKG5hbWUpKSk7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihHTF9HZXRTdHJp
bmcobmFtZSkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpoaW50KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aHJlYWRDaGVjay5tbQppbmRleCBiYmQ3MzQ0MWUwNTBiOTY4NzU3YTRmNWE2YWQxMzQ2NmIxYWQw
NmQwLi4wNThiN2U5Y2YxMDUzZGVhMDUwYTgyMWY5OTg5Y2NjOWNmOThjYmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAg
dm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBX
ZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICAgICAgY2FzZSBOb1RocmVhZENoZWNrOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9nT25GaXJzdFRocmVhZFZpb2xhdGlvbjoK
LSAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuZ2V0KCkuYWRkKFN0cmluZyB7IGZ1bmN0
aW9uIH0pLmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuZ2V0
KCkuYWRkKFN0cmluZzo6ZnJvbUxhdGluMShmdW5jdGlvbikpLmlzTmV3RW50cnkpIHsKICAgICAg
ICAgICAgICAgICBOU0xvZyhAIldlYktpdCBUaHJlYWRpbmcgVmlvbGF0aW9uIC0gJXMgY2FsbGVk
IGZyb20gc2Vjb25kYXJ5IHRocmVhZCIsIGZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBOU0xv
ZyhAIkFkZGl0aW9uYWwgdGhyZWFkaW5nIHZpb2xhdGlvbnMgZm9yIHRoaXMgZnVuY3Rpb24gd2ls
bCBub3QgYmUgbG9nZ2VkLiIpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAppbmRleCBhYTBlODQyYzY0NTg4NjBjNGE1OGJhY2Y0ZjE3MTY5ZDA1OGYxZTI1
Li40ZjdlYzc5ZGRlYmUwNDdjOWRlYzQ2OTEzZDQ3OTU0MGU4YjJkMzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIFN0cmluZyBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgU3RyCiAgICAgU0hBMTo6RGlnZXN0IGRpZ2VzdDsKICAgICBzaGExLmNvbXB1dGVIYXNo
KGRpZ2VzdCk7CiAgICAgCi0gICAgcmV0dXJuIFN0cmluZyB7IFNIQTE6OmhleERpZ2VzdChkaWdl
c3QpLmRhdGEoKSB9OworICAgIHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEoU0hBMTo6aGV4RGln
ZXN0KGRpZ2VzdCkuZGF0YSgpKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jay5jcHAKaW5kZXggOTdlNDMzNDhmMDYwODdiZWMxOGYwODBiMzI5NDg3ODgz
ZGY0YmZjOC4uMTQ1MjAwZGY5OWFiNDIyY2FjYWZhNTI0ZmYwNjA4NTM5MjE4NzQ4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCgpCiAKIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewotICAgIG1fdm9p
Y2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5n
KCJtb2NrLnZvaWNlLmJydWNlIiksIFN0cmluZygiYnJ1Y2UiKSwgU3RyaW5nKCJlbi1VUyIpLCB0
cnVlLCB0cnVlKSk7Ci0gICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2UuY2xhcmsiKSwgU3RyaW5nKCJjbGFy
ayIpLCBTdHJpbmcoImVuLVVTIiksIHRydWUsIGZhbHNlKSk7Ci0gICAgbV92b2ljZUxpc3QuYXBw
ZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9p
Y2UubG9nYW4iKSwgU3RyaW5nKCJsb2dhbiIpLCBTdHJpbmcoImZyLUNBIiksIHRydWUsIHRydWUp
KTsKKyAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
Y3JlYXRlKCJtb2NrLnZvaWNlLmJydWNlIl9zLCAiYnJ1Y2UiX3MsICJlbi1VUyJfcywgdHJ1ZSwg
dHJ1ZSkpOworICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpjcmVhdGUoIm1vY2sudm9pY2UuY2xhcmsiX3MsICJjbGFyayJfcywgImVuLVVTIl9zLCB0
cnVlLCBmYWxzZSkpOworICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpjcmVhdGUoIm1vY2sudm9pY2UubG9nYW4iX3MsICJsb2dhbiJfcywgImZyLUNB
Il9zLCB0cnVlLCB0cnVlKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2s6OnNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRl
cmFuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNw
cAppbmRleCAxZWI2ZGViYWZjMjNjNDJkZDEyZWQ3NmExZjZmMTA1ZmUyOWNlZjUxLi41NWMzNGM4
ZGIzZDg3YjRjZDRiNDU1OTg4NDRmMDVkYTEyM2VkZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTUzMiw4ICs1MzIsOCBAQCBpbnQg
U1FMaXRlRGF0YWJhc2U6OmF1dGhvcml6ZXJGdW5jdGlvbih2b2lkKiB1c2VyRGF0YSwgaW50IGFj
dGlvbkNvZGUsIGNvbnN0IGNoYQogICAgIERhdGFiYXNlQXV0aG9yaXplciogYXV0aCA9IHN0YXRp
Y19jYXN0PERhdGFiYXNlQXV0aG9yaXplcio+KHVzZXJEYXRhKTsKICAgICBBU1NFUlQoYXV0aCk7
CiAKLSAgICBTdHJpbmcgcGFyYW1ldGVyMVN0cmluZyB7IHBhcmFtZXRlcjEgfTsKLSAgICBTdHJp
bmcgcGFyYW1ldGVyMlN0cmluZyB7IHBhcmFtZXRlcjIgfTsKKyAgICBhdXRvIHBhcmFtZXRlcjFT
dHJpbmcgPSBTdHJpbmc6OmZyb21MYXRpbjEocGFyYW1ldGVyMSk7CisgICAgYXV0byBwYXJhbWV0
ZXIyU3RyaW5nID0gU3RyaW5nOjpmcm9tTGF0aW4xKHBhcmFtZXRlcjIpOwogICAgIHN3aXRjaCAo
YWN0aW9uQ29kZSkgewogICAgICAgICBjYXNlIFNRTElURV9DUkVBVEVfSU5ERVg6CiAgICAgICAg
ICAgICByZXR1cm4gYXV0aC0+Y3JlYXRlSW5kZXgocGFyYW1ldGVyMVN0cmluZywgcGFyYW1ldGVy
MlN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29h
L0xvY2FsZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2Nh
bGVDb2NvYS5tbQppbmRleCA3NGZkOThkNjgwOWU5OTRiY2NmNDg4NjFjZTM3MWU3NTI5MDMxOGYx
Li5lNjE4MWY0NjQ3ODU1NDI1OWI2MDJlYzg0NGM3ZDU1NWUyMGRjYjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KQEAgLTExNCw3
ICsxMTQsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlQ29jb2E6Om1vbnRoTGFiZWxz
KCkKICAgICB9CiAgICAgbV9tb250aExhYmVscy5yZXNlcnZlQ2FwYWNpdHkoMTIpOwogICAgIGZv
ciAoYXV0byYgbmFtZSA6IFdURjo6bW9udGhGdWxsTmFtZSkKLSAgICAgICAgbV9tb250aExhYmVs
cy51bmNoZWNrZWRBcHBlbmQobmFtZSk7CisgICAgICAgIG1fbW9udGhMYWJlbHMudW5jaGVja2Vk
QXBwZW5kKFN0cmluZzo6ZnJvbUxhdGluMShuYW1lKSk7CiAgICAgcmV0dXJuIG1fbW9udGhMYWJl
bHM7CiB9CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxl
Q29jb2E6OnNob3J0TW9udGhMYWJlbHMoKQogICAgIH0KICAgICBtX3Nob3J0TW9udGhMYWJlbHMu
cmVzZXJ2ZUNhcGFjaXR5KDEyKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBXVEY6Om1vbnRoTmFt
ZSkKLSAgICAgICAgbV9zaG9ydE1vbnRoTGFiZWxzLnVuY2hlY2tlZEFwcGVuZChuYW1lKTsKKyAg
ICAgICAgbV9zaG9ydE1vbnRoTGFiZWxzLnVuY2hlY2tlZEFwcGVuZChTdHJpbmc6OmZyb21MYXRp
bjEobmFtZSkpOwogICAgIHJldHVybiBtX3Nob3J0TW9udGhMYWJlbHM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwY2Y0MjQ4MjlkODc0ZTZkZTEwNmJkY2Y3ZjU2
NzRiZWRmNTQwNGE3Li5mZjAzYjVmMTNhODhmZGU3M2Q5MmRjZDUxZDBhOTI3OWY1MjAwY2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MTk4LDcgKzYxOTgsNyBAQCB2
b2lkIEludGVybmFsczo6dGVzdERpY3Rpb25hcnlMb2dnaW5nKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
OwotICAgIGRpY3Rpb25hcnkuc2V0KCJzdHJpbmdLZXkiX3MsIFN0cmluZygic3RyaW5nVmFsdWUi
KSk7CisgICAgZGljdGlvbmFyeS5zZXQoInN0cmluZ0tleSJfcywgU3RyaW5nKCJzdHJpbmdWYWx1
ZSJfcykpOwogICAgIGRpY3Rpb25hcnkuc2V0KCJ1aW50NjRLZXkiX3MsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CiAgICAgZGljdGlvbmFyeS5zZXQoImludDY0S2V5Il9z
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSk7CiAgICAgZGljdGlvbmFyeS5z
ZXQoImJvb2xLZXkiX3MsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmgKaW5kZXggZWE4M2Y3
ZDBiYjFhYWYxNGE3YmE3MjEwOTRmM2IyMTlhMjJiMjNiMS4uMDdmMjZiMjA1YTVjYjhmM2VkMDVl
ODJjZmE4Y2Y1NzNjYjRiNGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5oCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFZhbHVlKGRvdWJsZSB2YWx1
ZSkgOiBtX3R5cGUoTnVtYmVyVmFsdWUpLCBtX251bWJlcih2YWx1ZSkgeyB9CiAKICAgICAgICAg
ICAgIFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIDogbV90eXBlKFN0cmluZ1ZhbHVlKSwgbV9k
YXRhKERhdGE6OmNyZWF0ZSh2YWx1ZSkpIHsgfQotICAgICAgICAgICAgVmFsdWUoY29uc3QgY2hh
ciogdmFsdWUpIDogbV90eXBlKFN0cmluZ1ZhbHVlKSwgbV9kYXRhKERhdGE6OmNyZWF0ZShTdHJp
bmcgeyB2YWx1ZSB9KSkgeyB9CisgICAgICAgICAgICBWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSkg
OiBtX3R5cGUoU3RyaW5nVmFsdWUpLCBtX2RhdGEoRGF0YTo6Y3JlYXRlKFN0cmluZzo6ZnJvbUxh
dGluMSh2YWx1ZSkpKSB7IH0KIAogICAgICAgICAgICAgZXhwbGljaXQgVmFsdWUoTm9kZVNldCYm
IHZhbHVlKQogICAgICAgICAgICAgICAgIDogbV90eXBlKE5vZGVTZXRWYWx1ZSksIG1fZGF0YShE
YXRhOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNWIyYjA4N2Y4OTAyYzYyMDU5ODZlYmE3ZWJlYzA5OTg2
OTBjMmZjOC4uYjBiYjNlNjkzMzFhMTI2OWI4MGQyZDliYTFhNWM4OGI2M2Y4MmEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgWFNMVFByb2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmModm9pZCogdXNlckRhdGEsIHht
bEVycm9yKiBlcnJvcikKICAgICB9CiAKICAgICAvLyB4bWxFcnJvci0+aW50MiBpcyB0aGUgY29s
dW1uIG51bWJlciBvZiB0aGUgZXJyb3Igb3IgMCBpZiBOL0EuCi0gICAgY29uc29sZS0+YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlOjpYTUwsIGxldmVsLCBTdHJpbmcgeyBlcnJvci0+bWVzc2FnZSB9
LCBTdHJpbmcgeyBlcnJvci0+ZmlsZSB9LCBlcnJvci0+bGluZSwgZXJyb3ItPmludDIpOworICAg
IGNvbnNvbGUtPmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6WE1MLCBsZXZlbCwgU3RyaW5nOjpm
cm9tTGF0aW4xKGVycm9yLT5tZXNzYWdlKSwgU3RyaW5nOjpmcm9tTGF0aW4xKGVycm9yLT5maWxl
KSwgZXJyb3ItPmxpbmUsIGVycm9yLT5pbnQyKTsKIH0KIAogLy8gRklYTUU6IFRoZXJlIHNlZW1z
IHRvIGJlIG5vIHdheSB0byBjb250cm9sIHRoZSBjdHh0IHBvaW50ZXIgZm9yIGxvYWRpbmcgaGVy
ZSwgdGh1cyB3ZSBoYXZlIGdsb2JhbHMuCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHhtbERv
Y1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICBjYXNlIFhTTFRfTE9B
RF9ET0NVTUVOVDogewogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjb250ZXh0ID0g
KHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7CiAgICAgICAgIHhtbENoYXIqIGJhc2UgPSB4
bWxOb2RlR2V0QmFzZShjb250ZXh0LT5kb2N1bWVudC0+ZG9jLCBjb250ZXh0LT5ub2RlKTsKLSAg
ICAgICAgVVJMIHVybChVUkwoeyB9LCBTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihiYXNlKSB9KSwgU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJp
KSB9KTsKKyAgICAgICAgVVJMIHVybChVUkwoeyB9LCBTdHJpbmc6OmZyb21MYXRpbjEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpKSwgU3RyaW5nOjpmcm9tTGF0aW4xKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkpKTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKQEAgLTM3NCw3ICszNzQsNyBAQCBib29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9y
bVRvU3RyaW5nKE5vZGUmIHNvdXJjZU5vZGUsIFN0cmluZyYgbWltZVR5cGUsIFN0cmluZwogCiAg
ICAgICAgIGlmICgoc3VjY2VzcyA9IHNhdmVSZXN1bHRUb1N0cmluZyhyZXN1bHREb2MsIHNoZWV0
LCByZXN1bHRTdHJpbmcpKSkgewogICAgICAgICAgICAgbWltZVR5cGUgPSByZXN1bHRNSU1FVHlw
ZShyZXN1bHREb2MsIHNoZWV0KTsKLSAgICAgICAgICAgIHJlc3VsdEVuY29kaW5nID0gU3RyaW5n
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0RG9jLT5lbmNvZGluZykgfTsK
KyAgICAgICAgICAgIHJlc3VsdEVuY29kaW5nID0gU3RyaW5nOjpmcm9tTGF0aW4xKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdERvYy0+ZW5jb2RpbmcpKTsKICAgICAgICAgfQog
ICAgICAgICB4bWxGcmVlRG9jKHJlc3VsdERvYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGJk
ZjdiZmM2N2RhZTFkNDMzYTZiY2QxOGFmNjZiYjQ4YTU1M2UzNTMuLmEzZWIwYjkzYWM0MzIyMzM5
NGVjZDJmYTE5MjY4NDIyMjM3MThhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBA
QCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCk7CiAgICAgLy8gU2FtZSBs
b2dpYyBhcyBIVE1MQmFzZUVsZW1lbnQ6OmhyZWYoKS4gS2VlcCB0aGVtIGluIHN5bmMuCiAgICAg
YXV0byogZW5jb2RpbmcgPSAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRlY29kZXIoKSkgPyBkb2N1
bWVudC0+ZGVjb2RlcigpLT5lbmNvZGluZ0ZvclVSTFBhcnNpbmcoKSA6IG51bGxwdHI7Ci0gICAg
VVJMIHVybChkb2N1bWVudCA/IGRvY3VtZW50LT5mYWxsYmFja0Jhc2VVUkwoKSA6IFVSTCgpLCBz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nIHsgdXJpIH0pLCBlbmNvZGlu
Zyk7CisgICAgVVJMIHVybChkb2N1bWVudCA/IGRvY3VtZW50LT5mYWxsYmFja0Jhc2VVUkwoKSA6
IFVSTCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nOjpmcm9tTGF0
aW4xKHVyaSkpLCBlbmNvZGluZyk7CiAKICAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2Fk
KHVybCkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BUElDb252ZXJzaW9ucy5oCmluZGV4IDIxM2QwNzE1NDI0MDIxMGE1ZjRhYzE3YjNlOTYxODgz
MGUyOGEwNGEuLmViMTY4ZjUxNmU0ZGMxNzM1MmVmODY3NzNhN2ZkNzM0NDc2MzcyNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMuaApAQCAtMTcxLDcgKzE3MSw3IEBAIGlubGlu
ZSBUZXh0dXJlVmlldyYgZnJvbUFQSShXR1BVVGV4dHVyZVZpZXcgdGV4dHVyZVZpZXcpCiAKIGlu
bGluZSBTdHJpbmcgZnJvbUFQSShjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFN0
cmluZyhzdHJpbmcpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21MYXRpbjEoc3RyaW5nKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQppbmRleCA2MDBk
MWQ2ZTdiZjBmNzdiZGQyZjUxOGZmOTQzNTA3ODEyNTJmYTM5Li4wYjg5N2UyMjM2OGE3ZWY1YmEy
NzE1OTk0MTkxNWFhMTU5MTE2ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9B
ZGFwdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KQEAgLTEyMyw3
ICsxMjMsNyBAQCB2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2VzcywgRGV2aWNl
OjpjcmVhdGUobV9kZXZpY2UsIFN0cmluZyB7IGRlc2NyaXB0b3IubGFiZWwgfSwgbV9pbnN0YW5j
ZSksIHsgfSk7CisgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2Vzcywg
RGV2aWNlOjpjcmVhdGUobV9kZXZpY2UsIFN0cmluZzo6ZnJvbUxhdGluMShkZXNjcmlwdG9yLmxh
YmVsKSwgbV9pbnN0YW5jZSksIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCmluZGV4IGU0YWQ3N2FmOTdhM2MxMzg5
MjFiNDdkMDI2NTk4YjhiYzc2ZGE0YTMuLmFlOGVkMmQ2N2MyZjliN2EwZmU3YTMwOTRmMDNkMzdk
MDFkMGVjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGlu
ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KQEAgLTcx
LDcgKzcxLDcgQEAgc3RhdGljIE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgKmNyZWF0ZUNvbnN0
YW50VmFsdWVzKHVpbnQzMl90IGNvbnN0YW50Q291bnQsIGMKICAgICBhdXRvIGNvbnN0YW50VmFs
dWVzID0gW01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgbmV3XTsKICAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgY29uc3RhbnRDb3VudDsgKytpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGVu
dHJ5ID0gY29uc3RhbnRzW2ldOwotICAgICAgICBhdXRvIG5hbWVJdGVyYXRvciA9IGVudHJ5UG9p
bnRJbmZvcm1hdGlvbi5zcGVjaWFsaXphdGlvbkNvbnN0YW50SW5kaWNlcy5maW5kKFN0cmluZyB7
IGVudHJ5LmtleSB9KTsKKyAgICAgICAgYXV0byBuYW1lSXRlcmF0b3IgPSBlbnRyeVBvaW50SW5m
b3JtYXRpb24uc3BlY2lhbGl6YXRpb25Db25zdGFudEluZGljZXMuZmluZChTdHJpbmc6OmZyb21M
YXRpbjEoZW50cnkua2V5KSk7CiAgICAgICAgIGlmIChuYW1lSXRlcmF0b3IgPT0gZW50cnlQb2lu
dEluZm9ybWF0aW9uLnNwZWNpYWxpemF0aW9uQ29uc3RhbnRJbmRpY2VzLmVuZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGF1dG8gc3BlY2lhbGl6YXRpb25Db25zdGFu
dEluZGV4ID0gbmFtZUl0ZXJhdG9yLT52YWx1ZTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBSZWZQdHI8
Q29tcHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRAogICAgIGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91
dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAgICAgYXV0byBsYWJlbCA9
IGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCk7CiAKLSAgICBhdXRvIGxpYnJhcnlDcmVhdGlvblJl
c3VsdCA9IGNyZWF0ZUxpYnJhcnkobV9kZXZpY2UsIHNoYWRlck1vZHVsZSwgcGlwZWxpbmVMYXlv
dXQsIFN0cmluZyB7IGRlc2NyaXB0b3IuY29tcHV0ZS5lbnRyeVBvaW50IH0sIGxhYmVsKTsKKyAg
ICBhdXRvIGxpYnJhcnlDcmVhdGlvblJlc3VsdCA9IGNyZWF0ZUxpYnJhcnkobV9kZXZpY2UsIHNo
YWRlck1vZHVsZSwgcGlwZWxpbmVMYXlvdXQsIFN0cmluZzo6ZnJvbUxhdGluMShkZXNjcmlwdG9y
LmNvbXB1dGUuZW50cnlQb2ludCksIGxhYmVsKTsKICAgICBpZiAoIWxpYnJhcnlDcmVhdGlvblJl
c3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1v
ZHVsZS5tbQppbmRleCA2MDVlMzcyMzM2MTA1YWUwODcxMzdkYjYxNjQ2OTgxMTJiY2ZmODdiLi43
Y2JhNzE1ZDlhNDM2ZjQwZmZkNDZkNjgwNzM5ZjNhNmJjMGYwNWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2hhZGVyTW9kdWxlLm1tCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhZGVy
TW9kdWxlPiBlYXJseUNvbXBpbGVTaGFkZXJNb2R1bGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIHN0
ZDo6CiAgICAgICAgIGNvbnN0IGF1dG8mIGhpbnQgPSBzdXBwbGllZEhpbnRzLmhpbnRzW2ldOwog
ICAgICAgICBpZiAoaGludC5uZXh0SW5DaGFpbikKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBTdHJpbmcgaGludEtleSB7IGhpbnQua2V5IH07CisgICAgICAgIGF1dG8gaGlu
dEtleSA9IFN0cmluZzo6ZnJvbUxhdGluMShoaW50LmtleSk7CiAgICAgICAgIGhpbnRzLmFkZCho
aW50S2V5LCBXZWJHUFU6OmZyb21BUEkoaGludC5oaW50LmxheW91dCkpOwogICAgICAgICBhdXRv
IGNvbnZlcnRlZFBpcGVsaW5lTGF5b3V0ID0gU2hhZGVyTW9kdWxlOjpjb252ZXJ0UGlwZWxpbmVM
YXlvdXQoV2ViR1BVOjpmcm9tQVBJKGhpbnQuaGludC5sYXlvdXQpKTsKICAgICAgICAgd2dzbEhp
bnRzLmFkZChoaW50S2V5LCBXVEZNb3ZlKGNvbnZlcnRlZFBpcGVsaW5lTGF5b3V0KSk7CkBAIC0x
MDksNyArMTA5LDcgQEAgUmVmUHRyPFNoYWRlck1vZHVsZT4gRGV2aWNlOjpjcmVhdGVTaGFkZXJN
b2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IKICAgICBpZiAoIXNoYWRlck1v
ZHVsZVBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjaGVj
a1Jlc3VsdCA9IFdHU0w6OnN0YXRpY0NoZWNrKFN0cmluZyhzaGFkZXJNb2R1bGVQYXJhbWV0ZXJz
LT53Z3NsLmNvZGUpLCBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gY2hlY2tSZXN1bHQgPSBXR1NM
OjpzdGF0aWNDaGVjayhTdHJpbmc6OmZyb21MYXRpbjEoc2hhZGVyTW9kdWxlUGFyYW1ldGVycy0+
d2dzbC5jb2RlKSwgc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFdHU0w6OlN1Y2Nlc3NmdWxDaGVjaz4oY2hlY2tSZXN1bHQpICYmIHNoYWRlck1vZHVsZVBh
cmFtZXRlcnMtPmhpbnRzICYmIHNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPmhpbnRzLT5oaW50c0Nv
dW50KSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVs
ZShtX2RldmljZSwgV1RGTW92ZShjaGVja1Jlc3VsdCksICpzaGFkZXJNb2R1bGVQYXJhbWV0ZXJz
LT5oaW50cywgZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKSkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>