<?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>192636</bug_id>
          
          <creation_ts>2018-12-12 11:54:51 -0800</creation_ts>
          <short_desc>Recycling the m section should work if it was rejected remotely</short_desc>
          <delta_ts>2018-12-12 17:14:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487295</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-12 11:54:51 -0800</bug_when>
    <thetext>Recycling the m section should work if the section was rejected remotely</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487296</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-12 11:59:08 -0800</bug_when>
    <thetext>This merges https://webrtc.googlesource.com/src.git/+/5c72e71e14cfa76a2d1b0979d6b918abe187c208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487329</commentid>
    <comment_count>2</comment_count>
      <attachid>357166</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-12 14:13:37 -0800</bug_when>
    <thetext>Created attachment 357166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487355</commentid>
    <comment_count>3</comment_count>
      <attachid>357166</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-12 15:13:24 -0800</bug_when>
    <thetext>Comment on attachment 357166
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:7
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Nit: you should mention where this was merged from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487379</commentid>
    <comment_count>4</comment_count>
      <attachid>357183</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-12 15:59:42 -0800</bug_when>
    <thetext>Created attachment 357183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487424</commentid>
    <comment_count>5</comment_count>
      <attachid>357183</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-12 17:13:36 -0800</bug_when>
    <thetext>Comment on attachment 357183
Patch

Clearing flags on attachment: 357183

Committed r239136: &lt;https://trac.webkit.org/changeset/239136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487425</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-12 17:13:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487426</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-12 17:14:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46681709&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357166</attachid>
            <date>2018-12-12 14:13:37 -0800</date>
            <delta_ts>2018-12-12 15:59:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192636-20181212141340.patch</filename>
            <type>text/plain</type>
            <size>52950</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA0NjlmMzBmNWI4N2RhNzM4ZDcyYzlmMTRiZjJhNmI0YmZjYjYyZDljLi5mNjAw
ZjQ0MjFiZTZkNDBhZDk4Y2Q2YWE3MTNkZGY2NjQ0MmY5ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMi0xMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIHRoZSBtIHNlY3Rp
b24gc2hvdWxkIHdvcmsgaWYgaXQgd2FzIHJlamVjdGVkIHJlbW90ZWx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvbWVk
aWFzZXNzaW9uLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmg6
CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2M6Cisg
ICAgICAgICogU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYzoKKyAgICAgICAgKiBT
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2M6CisKIDIwMTgt
MTItMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBsaWJ3ZWJydGMgdXAgdG8gMmZiODkwZjA4YwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjCmluZGV4
IDcyMzlhZjg2YzM5OWU3YmRiZTQ4NmQ4YjA2YmRhY2E2OWE2MTJjMGIuLjI2M2YzNjkzZGI1N2I5
NWI5NWM5ZDFlMjNlNjhkYjE0YzNmOWE4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uY2MKQEAg
LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKKyNpbmNsdWRlICJhYnNsL21lbW9yeS9tZW1vcnkuaCIKICNpbmNsdWRlICJhYnNsL3N0
cmluZ3MvbWF0Y2guaCIKICNpbmNsdWRlICJhYnNsL3R5cGVzL29wdGlvbmFsLmgiCiAjaW5jbHVk
ZSAiYXBpL2NyeXB0b3BhcmFtcy5oIgpAQCAtMjg5LDIwICsyOTAsMTUgQEAgc3RhdGljIHZvaWQg
R2VuZXJhdGVTc3Jjcyhjb25zdCBTdHJlYW1QYXJhbXNWZWMmIHBhcmFtc192ZWMsCiB9CiAKIC8v
IEZpbmRzIGFsbCBTdHJlYW1QYXJhbXMgb2YgYWxsIG1lZGlhIHR5cGVzIGFuZCBhdHRhY2ggdGhl
bSB0byBzdHJlYW1fcGFyYW1zLgotc3RhdGljIHZvaWQgR2V0Q3VycmVudFN0cmVhbVBhcmFtcyhj
b25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIHNkZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJlYW1QYXJhbXNWZWMqIHN0cmVhbV9wYXJhbXMpIHsKLSAgUlRDX0RDSEVD
SyhzdHJlYW1fcGFyYW1zKTsKLSAgaWYgKCFzZGVzYykgewotICAgIHJldHVybjsKLSAgfQotICBm
b3IgKGNvbnN0IENvbnRlbnRJbmZvJiBjb250ZW50IDogc2Rlc2MtPmNvbnRlbnRzKCkpIHsKLSAg
ICBpZiAoIWNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKSkgewotICAgICAgY29udGludWU7Ci0g
ICAgfQotICAgIGZvciAoY29uc3QgU3RyZWFtUGFyYW1zJiBwYXJhbXMgOiBjb250ZW50Lm1lZGlh
X2Rlc2NyaXB0aW9uKCktPnN0cmVhbXMoKSkgewotICAgICAgc3RyZWFtX3BhcmFtcy0+cHVzaF9i
YWNrKHBhcmFtcyk7CitzdGF0aWMgU3RyZWFtUGFyYW1zVmVjIEdldEN1cnJlbnRTdHJlYW1QYXJh
bXMoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiYgYWN0aXZlX2xv
Y2FsX2NvbnRlbnRzKSB7CisgIFN0cmVhbVBhcmFtc1ZlYyBzdHJlYW1fcGFyYW1zOworICBmb3Ig
KGNvbnN0IENvbnRlbnRJbmZvKiBjb250ZW50IDogYWN0aXZlX2xvY2FsX2NvbnRlbnRzKSB7Cisg
ICAgZm9yIChjb25zdCBTdHJlYW1QYXJhbXMmIHBhcmFtcyA6IGNvbnRlbnQtPm1lZGlhX2Rlc2Ny
aXB0aW9uKCktPnN0cmVhbXMoKSkgeworICAgICAgc3RyZWFtX3BhcmFtcy5wdXNoX2JhY2socGFy
YW1zKTsKICAgICB9CiAgIH0KKyAgcmV0dXJuIHN0cmVhbV9wYXJhbXM7CiB9CiAKIC8vIEZpbHRl
cnMgdGhlIGRhdGEgY29kZWNzIGZvciB0aGUgZGF0YSBjaGFubmVsIHR5cGUuCkBAIC02NDIsNiAr
NjM4LDIzIEBAIHN0YXRpYyBib29sIFVwZGF0ZUNyeXB0b1BhcmFtc0ZvckJ1bmRsZShjb25zdCBD
b250ZW50R3JvdXAmIGJ1bmRsZV9ncm91cCwKICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBz
dGQ6OnZlY3Rvcjxjb25zdCBDb250ZW50SW5mbyo+IEdldEFjdGl2ZUNvbnRlbnRzKAorICAgIGNv
bnN0IFNlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sCisgICAgY29uc3QgTWVkaWFTZXNz
aW9uT3B0aW9ucyYgc2Vzc2lvbl9vcHRpb25zKSB7CisgIHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRl
bnRJbmZvKj4gYWN0aXZlX2NvbnRlbnRzOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc2Ny
aXB0aW9uLmNvbnRlbnRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICBSVENfRENIRUNLX0xUKGksIHNl
c3Npb25fb3B0aW9ucy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnNpemUoKSk7CisgICAgY29u
c3QgQ29udGVudEluZm8mIGNvbnRlbnQgPSBkZXNjcmlwdGlvbi5jb250ZW50cygpW2ldOworICAg
IGNvbnN0IE1lZGlhRGVzY3JpcHRpb25PcHRpb25zJiBtZWRpYV9vcHRpb25zID0KKyAgICAgICAg
c2Vzc2lvbl9vcHRpb25zLm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnNbaV07CisgICAgaWYgKCFj
b250ZW50LnJlamVjdGVkICYmICFtZWRpYV9vcHRpb25zLnN0b3BwZWQgJiYKKyAgICAgICAgY29u
dGVudC5uYW1lID09IG1lZGlhX29wdGlvbnMubWlkKSB7CisgICAgICBhY3RpdmVfY29udGVudHMu
cHVzaF9iYWNrKCZjb250ZW50KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGFjdGl2ZV9jb250ZW50
czsKK30KKwogdGVtcGxhdGUgPGNsYXNzIEM+CiBzdGF0aWMgYm9vbCBDb250YWluc1J0eENvZGVj
KGNvbnN0IHN0ZDo6dmVjdG9yPEM+JiBjb2RlY3MpIHsKICAgZm9yIChjb25zdCBhdXRvJiBjb2Rl
YyA6IGNvZGVjcykgewpAQCAtMTI2NSwxNyArMTI3OCwyOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkRl
c2NyaXB0aW9uRmFjdG9yeTo6c2V0X2F1ZGlvX2NvZGVjcygKIFNlc3Npb25EZXNjcmlwdGlvbiog
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVPZmZlcigKICAgICBjb25zdCBN
ZWRpYVNlc3Npb25PcHRpb25zJiBzZXNzaW9uX29wdGlvbnMsCiAgICAgY29uc3QgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uKSBjb25zdCB7Ci0gIHN0ZDo6dW5pcXVlX3B0
cjxTZXNzaW9uRGVzY3JpcHRpb24+IG9mZmVyKG5ldyBTZXNzaW9uRGVzY3JpcHRpb24oKSk7Cisg
IC8vIE11c3QgaGF2ZSBvcHRpb25zIGZvciBlYWNoIGV4aXN0aW5nIHNlY3Rpb24uCisgIGlmIChj
dXJyZW50X2Rlc2NyaXB0aW9uKSB7CisgICAgUlRDX0RDSEVDS19MRShjdXJyZW50X2Rlc2NyaXB0
aW9uLT5jb250ZW50cygpLnNpemUoKSwKKyAgICAgICAgICAgICAgICAgIHNlc3Npb25fb3B0aW9u
cy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnNpemUoKSk7CisgIH0KIAogICBJY2VDcmVkZW50
aWFsc0l0ZXJhdG9yIGljZV9jcmVkZW50aWFscygKICAgICAgIHNlc3Npb25fb3B0aW9ucy5wb29s
ZWRfaWNlX2NyZWRlbnRpYWxzKTsKLSAgU3RyZWFtUGFyYW1zVmVjIGN1cnJlbnRfc3RyZWFtczsK
LSAgR2V0Q3VycmVudFN0cmVhbVBhcmFtcyhjdXJyZW50X2Rlc2NyaXB0aW9uLCAmY3VycmVudF9z
dHJlYW1zKTsKKworICBzdGQ6OnZlY3Rvcjxjb25zdCBDb250ZW50SW5mbyo+IGN1cnJlbnRfYWN0
aXZlX2NvbnRlbnRzOworICBpZiAoY3VycmVudF9kZXNjcmlwdGlvbikgeworICAgIGN1cnJlbnRf
YWN0aXZlX2NvbnRlbnRzID0KKyAgICAgICAgR2V0QWN0aXZlQ29udGVudHMoKmN1cnJlbnRfZGVz
Y3JpcHRpb24sIHNlc3Npb25fb3B0aW9ucyk7CisgIH0KKworICBTdHJlYW1QYXJhbXNWZWMgY3Vy
cmVudF9zdHJlYW1zID0KKyAgICAgIEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVudF9hY3Rp
dmVfY29udGVudHMpOwogCiAgIEF1ZGlvQ29kZWNzIG9mZmVyX2F1ZGlvX2NvZGVjczsKICAgVmlk
ZW9Db2RlY3Mgb2ZmZXJfdmlkZW9fY29kZWNzOwogICBEYXRhQ29kZWNzIG9mZmVyX2RhdGFfY29k
ZWNzOwotICBHZXRDb2RlY3NGb3JPZmZlcihjdXJyZW50X2Rlc2NyaXB0aW9uLCAmb2ZmZXJfYXVk
aW9fY29kZWNzLAorICBHZXRDb2RlY3NGb3JPZmZlcihjdXJyZW50X2FjdGl2ZV9jb250ZW50cywg
Jm9mZmVyX2F1ZGlvX2NvZGVjcywKICAgICAgICAgICAgICAgICAgICAgJm9mZmVyX3ZpZGVvX2Nv
ZGVjcywgJm9mZmVyX2RhdGFfY29kZWNzKTsKIAogICBpZiAoIXNlc3Npb25fb3B0aW9ucy52YWRf
ZW5hYmxlZCkgewpAQCAtMTI4NywxNCArMTMxMSwxMCBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAKICAgUnRwSGVhZGVy
RXh0ZW5zaW9ucyBhdWRpb19ydHBfZXh0ZW5zaW9uczsKICAgUnRwSGVhZGVyRXh0ZW5zaW9ucyB2
aWRlb19ydHBfZXh0ZW5zaW9uczsKLSAgR2V0UnRwSGRyRXh0c1RvT2ZmZXIoc2Vzc2lvbl9vcHRp
b25zLCBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICBHZXRSdHBIZHJFeHRzVG9PZmZlcihjdXJyZW50
X2FjdGl2ZV9jb250ZW50cywgc2Vzc2lvbl9vcHRpb25zLmlzX3VuaWZpZWRfcGxhbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgJmF1ZGlvX3J0cF9leHRlbnNpb25zLCAmdmlkZW9fcnRwX2V4dGVu
c2lvbnMpOwogCi0gIC8vIE11c3QgaGF2ZSBvcHRpb25zIGZvciBlYWNoIGV4aXN0aW5nIHNlY3Rp
b24uCi0gIGlmIChjdXJyZW50X2Rlc2NyaXB0aW9uKSB7Ci0gICAgUlRDX0RDSEVDSyhjdXJyZW50
X2Rlc2NyaXB0aW9uLT5jb250ZW50cygpLnNpemUoKSA8PQotICAgICAgICAgICAgICAgc2Vzc2lv
bl9vcHRpb25zLm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuc2l6ZSgpKTsKLSAgfQorICBhdXRv
IG9mZmVyID0gYWJzbDo6bWFrZV91bmlxdWU8U2Vzc2lvbkRlc2NyaXB0aW9uPigpOwogCiAgIC8v
IEl0ZXJhdGUgdGhyb3VnaCB0aGUgbWVkaWEgZGVzY3JpcHRpb24gb3B0aW9ucywgbWF0Y2hpbmcg
d2l0aCBleGlzdGluZyBtZWRpYQogICAvLyBkZXNjcmlwdGlvbnMgaW4gfGN1cnJlbnRfZGVzY3Jp
cHRpb258LgpAQCAtMTMwNiw3ICsxMzI2LDcgQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRpYVNl
c3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAogICAgICAgICBtc2VjdGlvbl9p
bmRleCA8IGN1cnJlbnRfZGVzY3JpcHRpb24tPmNvbnRlbnRzKCkuc2l6ZSgpKSB7CiAgICAgICBj
dXJyZW50X2NvbnRlbnQgPSAmY3VycmVudF9kZXNjcmlwdGlvbi0+Y29udGVudHMoKVttc2VjdGlv
bl9pbmRleF07CiAgICAgICAvLyBNZWRpYSB0eXBlIG11c3QgbWF0Y2ggdW5sZXNzIHRoaXMgbWVk
aWEgc2VjdGlvbiBpcyBiZWluZyByZWN5Y2xlZC4KLSAgICAgIFJUQ19EQ0hFQ0soY3VycmVudF9j
b250ZW50LT5yZWplY3RlZCB8fAorICAgICAgUlRDX0RDSEVDSyhjdXJyZW50X2NvbnRlbnQtPm5h
bWUgIT0gbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQgfHwKICAgICAgICAgICAgICAgICAg
SXNNZWRpYUNvbnRlbnRPZlR5cGUoY3VycmVudF9jb250ZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnR5cGUpKTsKICAg
ICB9CkBAIC0xMzkxLDI1ICsxNDExLDIxIEBAIFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAgICAgcmV0dXJuIG51bGxwdHI7
CiAgIH0KIAorICAvLyBNdXN0IGhhdmUgb3B0aW9ucyBmb3IgZXhhY3RseSBhcyBtYW55IHNlY3Rp
b25zIGFzIGluIHRoZSBvZmZlci4KKyAgUlRDX0RDSEVDS19FUShvZmZlci0+Y29udGVudHMoKS5z
aXplKCksCisgICAgICAgICAgICAgICAgc2Vzc2lvbl9vcHRpb25zLm1lZGlhX2Rlc2NyaXB0aW9u
X29wdGlvbnMuc2l6ZSgpKTsKKwogICBJY2VDcmVkZW50aWFsc0l0ZXJhdG9yIGljZV9jcmVkZW50
aWFscygKICAgICAgIHNlc3Npb25fb3B0aW9ucy5wb29sZWRfaWNlX2NyZWRlbnRpYWxzKTsKIAot
ICAvLyBUaGUgYW5zd2VyIGNvbnRhaW5zIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGNvZGVjcyBp
biB0aGUgb2ZmZXIgd2l0aCB0aGUKLSAgLy8gY29kZWNzIHdlIHN1cHBvcnQuIEFzIGluZGljYXRl
ZCBieSBYRVAtMDE2Nywgd2UgcmV0YWluIHRoZSBzYW1lIHBheWxvYWQgaWRzCi0gIC8vIGZyb20g
dGhlIG9mZmVyIGluIHRoZSBhbnN3ZXIuCi0gIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uRGVzY3Jp
cHRpb24+IGFuc3dlcihuZXcgU2Vzc2lvbkRlc2NyaXB0aW9uKCkpOwotCi0gIFN0cmVhbVBhcmFt
c1ZlYyBjdXJyZW50X3N0cmVhbXM7Ci0gIEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVudF9k
ZXNjcmlwdGlvbiwgJmN1cnJlbnRfc3RyZWFtcyk7Ci0KLSAgLy8gSWYgdGhlIG9mZmVyIHN1cHBv
cnRzIEJVTkRMRSwgYW5kIHdlIHdhbnQgdG8gdXNlIGl0IHRvbywgY3JlYXRlIGEgQlVORExFCi0g
IC8vIGdyb3VwIGluIHRoZSBhbnN3ZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY29udGVudCBuYW1l
cy4KLSAgY29uc3QgQ29udGVudEdyb3VwKiBvZmZlcl9idW5kbGUgPSBvZmZlci0+R2V0R3JvdXBC
eU5hbWUoR1JPVVBfVFlQRV9CVU5ETEUpOwotICBDb250ZW50R3JvdXAgYW5zd2VyX2J1bmRsZShH
Uk9VUF9UWVBFX0JVTkRMRSk7Ci0gIC8vIFRyYW5zcG9ydCBpbmZvIHNoYXJlZCBieSB0aGUgYnVu
ZGxlIGdyb3VwLgotICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0SW5mbz4gYnVuZGxlX3RyYW5z
cG9ydDsKKyAgc3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiBjdXJyZW50X2FjdGl2ZV9j
b250ZW50czsKKyAgaWYgKGN1cnJlbnRfZGVzY3JpcHRpb24pIHsKKyAgICBjdXJyZW50X2FjdGl2
ZV9jb250ZW50cyA9CisgICAgICAgIEdldEFjdGl2ZUNvbnRlbnRzKCpjdXJyZW50X2Rlc2NyaXB0
aW9uLCBzZXNzaW9uX29wdGlvbnMpOworICB9CiAKLSAgYW5zd2VyLT5zZXRfZXh0bWFwX2FsbG93
X21peGVkKG9mZmVyLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisgIFN0cmVhbVBhcmFtc1ZlYyBj
dXJyZW50X3N0cmVhbXMgPQorICAgICAgR2V0Q3VycmVudFN0cmVhbVBhcmFtcyhjdXJyZW50X2Fj
dGl2ZV9jb250ZW50cyk7CiAKICAgLy8gR2V0IGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGNvZGVjcyB0
aGF0IHJlc3BlY3RzIGV4aXN0aW5nIHBheWxvYWQgdHlwZQogICAvLyBtYXBwaW5ncyBhbmQgdXNl
cyBhIHNpbmdsZSBwYXlsb2FkIHR5cGUgc3BhY2UuCkBAIC0xNDIwLDcgKzE0MzYsNyBAQCBTZXNz
aW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5z
d2VyKAogICBBdWRpb0NvZGVjcyBhbnN3ZXJfYXVkaW9fY29kZWNzOwogICBWaWRlb0NvZGVjcyBh
bnN3ZXJfdmlkZW9fY29kZWNzOwogICBEYXRhQ29kZWNzIGFuc3dlcl9kYXRhX2NvZGVjczsKLSAg
R2V0Q29kZWNzRm9yQW5zd2VyKGN1cnJlbnRfZGVzY3JpcHRpb24sIG9mZmVyLCAmYW5zd2VyX2F1
ZGlvX2NvZGVjcywKKyAgR2V0Q29kZWNzRm9yQW5zd2VyKGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRz
LCAqb2ZmZXIsICZhbnN3ZXJfYXVkaW9fY29kZWNzLAogICAgICAgICAgICAgICAgICAgICAgJmFu
c3dlcl92aWRlb19jb2RlY3MsICZhbnN3ZXJfZGF0YV9jb2RlY3MpOwogCiAgIGlmICghc2Vzc2lv
bl9vcHRpb25zLnZhZF9lbmFibGVkKSB7CkBAIC0xNDMwLDkgKzE0NDYsMTcgQEAgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dlcigK
ICAgRmlsdGVyRGF0YUNvZGVjcygmYW5zd2VyX2RhdGFfY29kZWNzLAogICAgICAgICAgICAgICAg
ICAgIHNlc3Npb25fb3B0aW9ucy5kYXRhX2NoYW5uZWxfdHlwZSA9PSBEQ1RfU0NUUCk7CiAKLSAg
Ly8gTXVzdCBoYXZlIG9wdGlvbnMgZm9yIGV4YWN0bHkgYXMgbWFueSBzZWN0aW9ucyBhcyBpbiB0
aGUgb2ZmZXIuCi0gIFJUQ19EQ0hFQ0sob2ZmZXItPmNvbnRlbnRzKCkuc2l6ZSgpID09Ci0gICAg
ICAgICAgICAgc2Vzc2lvbl9vcHRpb25zLm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuc2l6ZSgp
KTsKKyAgYXV0byBhbnN3ZXIgPSBhYnNsOjptYWtlX3VuaXF1ZTxTZXNzaW9uRGVzY3JpcHRpb24+
KCk7CisKKyAgLy8gSWYgdGhlIG9mZmVyIHN1cHBvcnRzIEJVTkRMRSwgYW5kIHdlIHdhbnQgdG8g
dXNlIGl0IHRvbywgY3JlYXRlIGEgQlVORExFCisgIC8vIGdyb3VwIGluIHRoZSBhbnN3ZXIgd2l0
aCB0aGUgYXBwcm9wcmlhdGUgY29udGVudCBuYW1lcy4KKyAgY29uc3QgQ29udGVudEdyb3VwKiBv
ZmZlcl9idW5kbGUgPSBvZmZlci0+R2V0R3JvdXBCeU5hbWUoR1JPVVBfVFlQRV9CVU5ETEUpOwor
ICBDb250ZW50R3JvdXAgYW5zd2VyX2J1bmRsZShHUk9VUF9UWVBFX0JVTkRMRSk7CisgIC8vIFRy
YW5zcG9ydCBpbmZvIHNoYXJlZCBieSB0aGUgYnVuZGxlIGdyb3VwLgorICBzdGQ6OnVuaXF1ZV9w
dHI8VHJhbnNwb3J0SW5mbz4gYnVuZGxlX3RyYW5zcG9ydDsKKworICBhbnN3ZXItPnNldF9leHRt
YXBfYWxsb3dfbWl4ZWQob2ZmZXItPmV4dG1hcF9hbGxvd19taXhlZCgpKTsKKwogICAvLyBJdGVy
YXRlIHRocm91Z2ggdGhlIG1lZGlhIGRlc2NyaXB0aW9uIG9wdGlvbnMsIG1hdGNoaW5nIHdpdGgg
ZXhpc3RpbmcKICAgLy8gbWVkaWEgZGVzY3JpcHRpb25zIGluIHxjdXJyZW50X2Rlc2NyaXB0aW9u
fC4KICAgc2l6ZV90IG1zZWN0aW9uX2luZGV4ID0gMDsKQEAgLTE1ODksMjQgKzE2MTMsMjQgQEAg
Y29uc3QgQXVkaW9Db2RlY3MmIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6R2V0QXVk
aW9Db2RlY3NGb3JBbnN3ZXIoCiAgIHJldHVybiBhdWRpb19zZW5kcmVjdl9jb2RlY3NfOwogfQog
Ci12b2lkIE1lcmdlQ29kZWNzRnJvbURlc2NyaXB0aW9uKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlv
biogZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvQ29k
ZWNzKiBhdWRpb19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVv
Q29kZWNzKiB2aWRlb19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERh
dGFDb2RlY3MqIGRhdGFfY29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
c2VkUGF5bG9hZFR5cGVzKiB1c2VkX3BsdHlwZXMpIHsKLSAgUlRDX0RDSEVDSyhkZXNjcmlwdGlv
bik7Ci0gIGZvciAoY29uc3QgQ29udGVudEluZm8mIGNvbnRlbnQgOiBkZXNjcmlwdGlvbi0+Y29u
dGVudHMoKSkgewotICAgIGlmIChJc01lZGlhQ29udGVudE9mVHlwZSgmY29udGVudCwgTUVESUFf
VFlQRV9BVURJTykpIHsKK3ZvaWQgTWVyZ2VDb2RlY3NGcm9tRGVzY3JpcHRpb24oCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiYgY3VycmVudF9hY3RpdmVfY29udGVu
dHMsCisgICAgQXVkaW9Db2RlY3MqIGF1ZGlvX2NvZGVjcywKKyAgICBWaWRlb0NvZGVjcyogdmlk
ZW9fY29kZWNzLAorICAgIERhdGFDb2RlY3MqIGRhdGFfY29kZWNzLAorICAgIFVzZWRQYXlsb2Fk
VHlwZXMqIHVzZWRfcGx0eXBlcykgeworICBmb3IgKGNvbnN0IENvbnRlbnRJbmZvKiBjb250ZW50
IDogY3VycmVudF9hY3RpdmVfY29udGVudHMpIHsKKyAgICBpZiAoSXNNZWRpYUNvbnRlbnRPZlR5
cGUoY29udGVudCwgTUVESUFfVFlQRV9BVURJTykpIHsKICAgICAgIGNvbnN0IEF1ZGlvQ29udGVu
dERlc2NyaXB0aW9uKiBhdWRpbyA9Ci0gICAgICAgICAgY29udGVudC5tZWRpYV9kZXNjcmlwdGlv
bigpLT5hc19hdWRpbygpOworICAgICAgICAgIGNvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9uKCkt
PmFzX2F1ZGlvKCk7CiAgICAgICBNZXJnZUNvZGVjczxBdWRpb0NvZGVjPihhdWRpby0+Y29kZWNz
KCksIGF1ZGlvX2NvZGVjcywgdXNlZF9wbHR5cGVzKTsKLSAgICB9IGVsc2UgaWYgKElzTWVkaWFD
b250ZW50T2ZUeXBlKCZjb250ZW50LCBNRURJQV9UWVBFX1ZJREVPKSkgeworICAgIH0gZWxzZSBp
ZiAoSXNNZWRpYUNvbnRlbnRPZlR5cGUoY29udGVudCwgTUVESUFfVFlQRV9WSURFTykpIHsKICAg
ICAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB2aWRlbyA9Ci0gICAgICAgICAgY29u
dGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc192aWRlbygpOworICAgICAgICAgIGNvbnRlbnQt
Pm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CiAgICAgICBNZXJnZUNvZGVjczxWaWRl
b0NvZGVjPih2aWRlby0+Y29kZWNzKCksIHZpZGVvX2NvZGVjcywgdXNlZF9wbHR5cGVzKTsKLSAg
ICB9IGVsc2UgaWYgKElzTWVkaWFDb250ZW50T2ZUeXBlKCZjb250ZW50LCBNRURJQV9UWVBFX0RB
VEEpKSB7CisgICAgfSBlbHNlIGlmIChJc01lZGlhQ29udGVudE9mVHlwZShjb250ZW50LCBNRURJ
QV9UWVBFX0RBVEEpKSB7CiAgICAgICBjb25zdCBEYXRhQ29udGVudERlc2NyaXB0aW9uKiBkYXRh
ID0KLSAgICAgICAgICBjb250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2RhdGEoKTsKKyAg
ICAgICAgICBjb250ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19kYXRhKCk7CiAgICAgICBN
ZXJnZUNvZGVjczxEYXRhQ29kZWM+KGRhdGEtPmNvZGVjcygpLCBkYXRhX2NvZGVjcywgdXNlZF9w
bHR5cGVzKTsKICAgICB9CiAgIH0KQEAgLTE2MTksMjQgKzE2NDMsMTggQEAgdm9pZCBNZXJnZUNv
ZGVjc0Zyb21EZXNjcmlwdGlvbihjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGRlc2NyaXB0aW9u
LAogLy8gMy4gRm9yIGVhY2ggaW5kaXZpZHVhbCBtZWRpYSBkZXNjcmlwdGlvbiAobT0gc2VjdGlv
biksIGZpbHRlciBjb2RlY3MgYmFzZWQKIC8vICAgIG9uIHRoZSBkaXJlY3Rpb25hbCBhdHRyaWJ1
dGUgKGhhcHBlbnMgaW4gYW5vdGhlciBtZXRob2QpLgogdm9pZCBNZWRpYVNlc3Npb25EZXNjcmlw
dGlvbkZhY3Rvcnk6OkdldENvZGVjc0Zvck9mZmVyKAotICAgIGNvbnN0IFNlc3Npb25EZXNjcmlw
dGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBD
b250ZW50SW5mbyo+JiBjdXJyZW50X2FjdGl2ZV9jb250ZW50cywKICAgICBBdWRpb0NvZGVjcyog
YXVkaW9fY29kZWNzLAogICAgIFZpZGVvQ29kZWNzKiB2aWRlb19jb2RlY3MsCiAgICAgRGF0YUNv
ZGVjcyogZGF0YV9jb2RlY3MpIGNvbnN0IHsKLSAgVXNlZFBheWxvYWRUeXBlcyB1c2VkX3BsdHlw
ZXM7Ci0gIGF1ZGlvX2NvZGVjcy0+Y2xlYXIoKTsKLSAgdmlkZW9fY29kZWNzLT5jbGVhcigpOwot
ICBkYXRhX2NvZGVjcy0+Y2xlYXIoKTsKLQogICAvLyBGaXJzdCAtIGdldCBhbGwgY29kZWNzIGZy
b20gdGhlIGN1cnJlbnQgZGVzY3JpcHRpb24gaWYgdGhlIG1lZGlhIHR5cGUKICAgLy8gaXMgdXNl
ZC4gQWRkIHRoZW0gdG8gfHVzZWRfcGx0eXBlc3wgc28gdGhlIHBheWxvYWQgdHlwZSBpcyBub3Qg
cmV1c2VkIGlmIGEKICAgLy8gbmV3IG1lZGlhIHR5cGUgaXMgYWRkZWQuCi0gIGlmIChjdXJyZW50
X2Rlc2NyaXB0aW9uKSB7Ci0gICAgTWVyZ2VDb2RlY3NGcm9tRGVzY3JpcHRpb24oY3VycmVudF9k
ZXNjcmlwdGlvbiwgYXVkaW9fY29kZWNzLCB2aWRlb19jb2RlY3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YV9jb2RlY3MsICZ1c2VkX3BsdHlwZXMpOwotICB9CisgIFVzZWRQ
YXlsb2FkVHlwZXMgdXNlZF9wbHR5cGVzOworICBNZXJnZUNvZGVjc0Zyb21EZXNjcmlwdGlvbihj
dXJyZW50X2FjdGl2ZV9jb250ZW50cywgYXVkaW9fY29kZWNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2aWRlb19jb2RlY3MsIGRhdGFfY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKIAot
ICAvLyBBZGQgb3VyIGNvZGVjcyB0aGF0IGFyZSBub3QgaW4gfGN1cnJlbnRfZGVzY3JpcHRpb258
LgorICAvLyBBZGQgb3VyIGNvZGVjcyB0aGF0IGFyZSBub3QgaW4gdGhlIGN1cnJlbnQgZGVzY3Jp
cHRpb24uCiAgIE1lcmdlQ29kZWNzPEF1ZGlvQ29kZWM+KGFsbF9hdWRpb19jb2RlY3NfLCBhdWRp
b19jb2RlY3MsICZ1c2VkX3BsdHlwZXMpOwogICBNZXJnZUNvZGVjczxWaWRlb0NvZGVjPih2aWRl
b19jb2RlY3NfLCB2aWRlb19jb2RlY3MsICZ1c2VkX3BsdHlwZXMpOwogICBNZXJnZUNvZGVjczxE
YXRhQ29kZWM+KGRhdGFfY29kZWNzXywgZGF0YV9jb2RlY3MsICZ1c2VkX3BsdHlwZXMpOwpAQCAt
MTY1MCwyOSArMTY2OCwyMyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6
R2V0Q29kZWNzRm9yT2ZmZXIoCiAvLyA0LiBGb3IgZWFjaCBpbmRpdmlkdWFsIG1lZGlhIGRlc2Ny
aXB0aW9uIChtPSBzZWN0aW9uKSwgZmlsdGVyIGNvZGVjcyBiYXNlZAogLy8gICAgb24gdGhlIGRp
cmVjdGlvbmFsIGF0dHJpYnV0ZSAoaGFwcGVucyBpbiBhbm90aGVyIG1ldGhvZCkuCiB2b2lkIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6R2V0Q29kZWNzRm9yQW5zd2VyKAotICAgIGNv
bnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKLSAgICBjb25zdCBT
ZXNzaW9uRGVzY3JpcHRpb24qIHJlbW90ZV9vZmZlciwKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxj
b25zdCBDb250ZW50SW5mbyo+JiBjdXJyZW50X2FjdGl2ZV9jb250ZW50cywKKyAgICBjb25zdCBT
ZXNzaW9uRGVzY3JpcHRpb24mIHJlbW90ZV9vZmZlciwKICAgICBBdWRpb0NvZGVjcyogYXVkaW9f
Y29kZWNzLAogICAgIFZpZGVvQ29kZWNzKiB2aWRlb19jb2RlY3MsCiAgICAgRGF0YUNvZGVjcyog
ZGF0YV9jb2RlY3MpIGNvbnN0IHsKLSAgVXNlZFBheWxvYWRUeXBlcyB1c2VkX3BsdHlwZXM7Ci0g
IGF1ZGlvX2NvZGVjcy0+Y2xlYXIoKTsKLSAgdmlkZW9fY29kZWNzLT5jbGVhcigpOwotICBkYXRh
X2NvZGVjcy0+Y2xlYXIoKTsKLQogICAvLyBGaXJzdCAtIGdldCBhbGwgY29kZWNzIGZyb20gdGhl
IGN1cnJlbnQgZGVzY3JpcHRpb24gaWYgdGhlIG1lZGlhIHR5cGUKICAgLy8gaXMgdXNlZC4gQWRk
IHRoZW0gdG8gfHVzZWRfcGx0eXBlc3wgc28gdGhlIHBheWxvYWQgdHlwZSBpcyBub3QgcmV1c2Vk
IGlmIGEKICAgLy8gbmV3IG1lZGlhIHR5cGUgaXMgYWRkZWQuCi0gIGlmIChjdXJyZW50X2Rlc2Ny
aXB0aW9uKSB7Ci0gICAgTWVyZ2VDb2RlY3NGcm9tRGVzY3JpcHRpb24oY3VycmVudF9kZXNjcmlw
dGlvbiwgYXVkaW9fY29kZWNzLCB2aWRlb19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YV9jb2RlY3MsICZ1c2VkX3BsdHlwZXMpOwotICB9CisgIFVzZWRQYXlsb2Fk
VHlwZXMgdXNlZF9wbHR5cGVzOworICBNZXJnZUNvZGVjc0Zyb21EZXNjcmlwdGlvbihjdXJyZW50
X2FjdGl2ZV9jb250ZW50cywgYXVkaW9fY29kZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2aWRlb19jb2RlY3MsIGRhdGFfY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKIAogICAvLyBT
ZWNvbmQgLSBmaWx0ZXIgb3V0IGNvZGVjcyB0aGF0IHdlIGRvbid0IHN1cHBvcnQgYXQgYWxsIGFu
ZCBzaG91bGQgaWdub3JlLgogICBBdWRpb0NvZGVjcyBmaWx0ZXJlZF9vZmZlcmVkX2F1ZGlvX2Nv
ZGVjczsKICAgVmlkZW9Db2RlY3MgZmlsdGVyZWRfb2ZmZXJlZF92aWRlb19jb2RlY3M7CiAgIERh
dGFDb2RlY3MgZmlsdGVyZWRfb2ZmZXJlZF9kYXRhX2NvZGVjczsKLSAgZm9yIChjb25zdCBDb250
ZW50SW5mbyYgY29udGVudCA6IHJlbW90ZV9vZmZlci0+Y29udGVudHMoKSkgeworICBmb3IgKGNv
bnN0IENvbnRlbnRJbmZvJiBjb250ZW50IDogcmVtb3RlX29mZmVyLmNvbnRlbnRzKCkpIHsKICAg
ICBpZiAoSXNNZWRpYUNvbnRlbnRPZlR5cGUoJmNvbnRlbnQsIE1FRElBX1RZUEVfQVVESU8pKSB7
CiAgICAgICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8gPQogICAgICAgICAg
IGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKQEAgLTE3MTIsNyArMTcy
NCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpHZXRDb2RlY3NGb3JB
bnN3ZXIoCiAgICAgfQogICB9CiAKLSAgLy8gQWRkIGNvZGVjcyB0aGF0IGFyZSBub3QgaW4gfGN1
cnJlbnRfZGVzY3JpcHRpb258IGJ1dCB3ZXJlIGluCisgIC8vIEFkZCBjb2RlY3MgdGhhdCBhcmUg
bm90IGluIHRoZSBjdXJyZW50IGRlc2NyaXB0aW9uIGJ1dCB3ZXJlIGluCiAgIC8vIHxyZW1vdGVf
b2ZmZXJ8LgogICBNZXJnZUNvZGVjczxBdWRpb0NvZGVjPihmaWx0ZXJlZF9vZmZlcmVkX2F1ZGlv
X2NvZGVjcywgYXVkaW9fY29kZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlZF9w
bHR5cGVzKTsKQEAgLTE3MjIsOSArMTczNCwxMCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkRlc2NyaXB0
aW9uRmFjdG9yeTo6R2V0Q29kZWNzRm9yQW5zd2VyKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICZ1c2VkX3BsdHlwZXMpOwogfQogCisvLyBUT0RPKHN0ZXZlYW50b24pOiBSZXBsYWNlIHxpc191
bmlmaWVkX3BsYW58IGZsYWcgd2l0aCBhIG1lbWJlciB2YXJpYWJsZS4KIHZvaWQgTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5OjpHZXRSdHBIZHJFeHRzVG9PZmZlcigKLSAgICBjb25zdCBN
ZWRpYVNlc3Npb25PcHRpb25zJiBzZXNzaW9uX29wdGlvbnMsCi0gICAgY29uc3QgU2Vzc2lvbkRl
c2NyaXB0aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNv
bnN0IENvbnRlbnRJbmZvKj4mIGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzLAorICAgIGJvb2wgaXNf
dW5pZmllZF9wbGFuLAogICAgIFJ0cEhlYWRlckV4dGVuc2lvbnMqIG9mZmVyX2F1ZGlvX2V4dGVu
c2lvbnMsCiAgICAgUnRwSGVhZGVyRXh0ZW5zaW9ucyogb2ZmZXJfdmlkZW9fZXh0ZW5zaW9ucykg
Y29uc3QgewogICAvLyBBbGwgaGVhZGVyIGV4dGVuc2lvbnMgYWxsb2NhdGVkIGZyb20gdGhlIHNh
bWUgcmFuZ2UgdG8gYXZvaWQgcG90ZW50aWFsCkBAIC0xNzMyLDQzICsxNzQ1LDQwIEBAIHZvaWQg
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpHZXRSdHBIZHJFeHRzVG9PZmZlcigKICAg
VXNlZFJ0cEhlYWRlckV4dGVuc2lvbklkcyB1c2VkX2lkczsKICAgUnRwSGVhZGVyRXh0ZW5zaW9u
cyBhbGxfcmVndWxhcl9leHRlbnNpb25zOwogICBSdHBIZWFkZXJFeHRlbnNpb25zIGFsbF9lbmNy
eXB0ZWRfZXh0ZW5zaW9uczsKLSAgb2ZmZXJfYXVkaW9fZXh0ZW5zaW9ucy0+Y2xlYXIoKTsKLSAg
b2ZmZXJfdmlkZW9fZXh0ZW5zaW9ucy0+Y2xlYXIoKTsKIAogICAvLyBGaXJzdCAtIGdldCBhbGwg
ZXh0ZW5zaW9ucyBmcm9tIHRoZSBjdXJyZW50IGRlc2NyaXB0aW9uIGlmIHRoZSBtZWRpYSB0eXBl
CiAgIC8vIGlzIHVzZWQuCiAgIC8vIEFkZCB0aGVtIHRvIHx1c2VkX2lkc3wgc28gdGhlIGxvY2Fs
IGlkcyBhcmUgbm90IHJldXNlZCBpZiBhIG5ldyBtZWRpYQogICAvLyB0eXBlIGlzIGFkZGVkLgot
ICBpZiAoY3VycmVudF9kZXNjcmlwdGlvbikgewotICAgIGZvciAoY29uc3QgQ29udGVudEluZm8m
IGNvbnRlbnQgOiBjdXJyZW50X2Rlc2NyaXB0aW9uLT5jb250ZW50cygpKSB7Ci0gICAgICBpZiAo
SXNNZWRpYUNvbnRlbnRPZlR5cGUoJmNvbnRlbnQsIE1FRElBX1RZUEVfQVVESU8pKSB7Ci0gICAg
ICAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhdWRpbyA9Ci0gICAgICAgICAgICBj
b250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7Ci0gICAgICAgIE1lcmdlUnRw
SGRyRXh0cyhhdWRpby0+cnRwX2hlYWRlcl9leHRlbnNpb25zKCksIG9mZmVyX2F1ZGlvX2V4dGVu
c2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmYWxsX3JlZ3VsYXJfZXh0ZW5zaW9ucywg
JmFsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ1c2Vk
X2lkcyk7Ci0gICAgICB9IGVsc2UgaWYgKElzTWVkaWFDb250ZW50T2ZUeXBlKCZjb250ZW50LCBN
RURJQV9UWVBFX1ZJREVPKSkgewotICAgICAgICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlv
biogdmlkZW8gPQotICAgICAgICAgICAgY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc192
aWRlbygpOwotICAgICAgICBNZXJnZVJ0cEhkckV4dHModmlkZW8tPnJ0cF9oZWFkZXJfZXh0ZW5z
aW9ucygpLCBvZmZlcl92aWRlb19leHRlbnNpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAg
JmFsbF9yZWd1bGFyX2V4dGVuc2lvbnMsICZhbGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAmdXNlZF9pZHMpOwotICAgICAgfQorICBmb3IgKGNvbnN0IENv
bnRlbnRJbmZvKiBjb250ZW50IDogY3VycmVudF9hY3RpdmVfY29udGVudHMpIHsKKyAgICBpZiAo
SXNNZWRpYUNvbnRlbnRPZlR5cGUoY29udGVudCwgTUVESUFfVFlQRV9BVURJTykpIHsKKyAgICAg
IGNvbnN0IEF1ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhdWRpbyA9CisgICAgICAgICAgY29udGVu
dC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKKyAgICAgIE1lcmdlUnRwSGRyRXh0
cyhhdWRpby0+cnRwX2hlYWRlcl9leHRlbnNpb25zKCksIG9mZmVyX2F1ZGlvX2V4dGVuc2lvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgJmFsbF9yZWd1bGFyX2V4dGVuc2lvbnMsICZhbGxfZW5j
cnlwdGVkX2V4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgJnVzZWRfaWRzKTsKKyAg
ICB9IGVsc2UgaWYgKElzTWVkaWFDb250ZW50T2ZUeXBlKGNvbnRlbnQsIE1FRElBX1RZUEVfVklE
RU8pKSB7CisgICAgICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmlkZW8gPQorICAg
ICAgICAgIGNvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CisgICAgICBN
ZXJnZVJ0cEhkckV4dHModmlkZW8tPnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLCBvZmZlcl92aWRl
b19leHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICZhbGxfcmVndWxhcl9leHRlbnNp
b25zLCAmYWxsX2VuY3J5cHRlZF9leHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICZ1
c2VkX2lkcyk7CiAgICAgfQogICB9CiAKLSAgLy8gQWRkIG91ciBkZWZhdWx0IFJUUCBoZWFkZXIg
ZXh0ZW5zaW9ucyB0aGF0IGFyZSBub3QgaW4KLSAgLy8gfGN1cnJlbnRfZGVzY3JpcHRpb258Lgot
ICBNZXJnZVJ0cEhkckV4dHMoYXVkaW9fcnRwX2hlYWRlcl9leHRlbnNpb25zKHNlc3Npb25fb3B0
aW9ucy5pc191bmlmaWVkX3BsYW4pLAorICAvLyBBZGQgb3VyIGRlZmF1bHQgUlRQIGhlYWRlciBl
eHRlbnNpb25zIHRoYXQgYXJlIG5vdCBpbiB0aGUgY3VycmVudAorICAvLyBkZXNjcmlwdGlvbi4K
KyAgTWVyZ2VSdHBIZHJFeHRzKGF1ZGlvX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhpc191bmlmaWVk
X3BsYW4pLAogICAgICAgICAgICAgICAgICAgb2ZmZXJfYXVkaW9fZXh0ZW5zaW9ucywgJmFsbF9y
ZWd1bGFyX2V4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAmYWxsX2VuY3J5cHRlZF9leHRl
bnNpb25zLCAmdXNlZF9pZHMpOwotICBNZXJnZVJ0cEhkckV4dHModmlkZW9fcnRwX2hlYWRlcl9l
eHRlbnNpb25zKHNlc3Npb25fb3B0aW9ucy5pc191bmlmaWVkX3BsYW4pLAorICBNZXJnZVJ0cEhk
ckV4dHModmlkZW9fcnRwX2hlYWRlcl9leHRlbnNpb25zKGlzX3VuaWZpZWRfcGxhbiksCiAgICAg
ICAgICAgICAgICAgICBvZmZlcl92aWRlb19leHRlbnNpb25zLCAmYWxsX3JlZ3VsYXJfZXh0ZW5z
aW9ucywKICAgICAgICAgICAgICAgICAgICZhbGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMsICZ1c2Vk
X2lkcyk7CiAKICAgLy8gVE9ETyhqYmF1Y2gpOiBTdXBwb3J0IGFkZGluZyBlbmNyeXB0ZWQgaGVh
ZGVyIGV4dGVuc2lvbnMgdG8gZXhpc3RpbmcKICAgLy8gc2Vzc2lvbnMuCi0gIGlmIChlbmFibGVf
ZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9uc18gJiYgIWN1cnJlbnRfZGVzY3JpcHRpb24p
IHsKKyAgaWYgKGVuYWJsZV9lbmNyeXB0ZWRfcnRwX2hlYWRlcl9leHRlbnNpb25zXyAmJgorICAg
ICAgY3VycmVudF9hY3RpdmVfY29udGVudHMuZW1wdHkoKSkgewogICAgIEFkZEVuY3J5cHRlZFZl
cnNpb25zT2ZIZHJFeHRzKG9mZmVyX2F1ZGlvX2V4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmFsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywgJnVzZWRfaWRzKTsK
ICAgICBBZGRFbmNyeXB0ZWRWZXJzaW9uc09mSGRyRXh0cyhvZmZlcl92aWRlb19leHRlbnNpb25z
LApAQCAtMTg1OCw4ICsxODY4LDEwIEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0
b3J5OjpBZGRBdWRpb0NvbnRlbnRGb3JPZmZlcigKICAgICAgIEdldEF1ZGlvQ29kZWNzRm9yT2Zm
ZXIobWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5kaXJlY3Rpb24pOwogCiAgIEF1ZGlvQ29kZWNz
IGZpbHRlcmVkX2NvZGVjczsKLSAgLy8gQWRkIHRoZSBjb2RlY3MgZnJvbSBjdXJyZW50IGNvbnRl
bnQgaWYgaXQgZXhpc3RzIGFuZCBpcyBub3QgYmVpbmcgcmVjeWNsZWQuCi0gIGlmIChjdXJyZW50
X2NvbnRlbnQgJiYgIWN1cnJlbnRfY29udGVudC0+cmVqZWN0ZWQpIHsKKyAgLy8gQWRkIHRoZSBj
b2RlY3MgZnJvbSBjdXJyZW50IGNvbnRlbnQgaWYgaXQgZXhpc3RzIGFuZCBpcyBub3QgcmVqZWN0
ZWQgbm9yCisgIC8vIHJlY3ljbGVkLgorICBpZiAoY3VycmVudF9jb250ZW50ICYmICFjdXJyZW50
X2NvbnRlbnQtPnJlamVjdGVkICYmCisgICAgICBjdXJyZW50X2NvbnRlbnQtPm5hbWUgPT0gbWVk
aWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQpIHsKICAgICBSVENfQ0hFQ0soSXNNZWRpYUNvbnRl
bnRPZlR5cGUoY3VycmVudF9jb250ZW50LCBNRURJQV9UWVBFX0FVRElPKSk7CiAgICAgY29uc3Qg
QXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9CiAgICAgICAgIGN1cnJlbnRfY29udGVudC0+
bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfYXVkaW8oKTsKQEAgLTE5MzQsOCArMTk0NiwxMCBAQCBi
b29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6QWRkVmlkZW9Db250ZW50Rm9yT2Zm
ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyeXB0b19zdWl0
ZXMpOwogCiAgIFZpZGVvQ29kZWNzIGZpbHRlcmVkX2NvZGVjczsKLSAgLy8gQWRkIHRoZSBjb2Rl
Y3MgZnJvbSBjdXJyZW50IGNvbnRlbnQgaWYgaXQgZXhpc3RzIGFuZCBpcyBub3QgYmVpbmcgcmVj
eWNsZWQuCi0gIGlmIChjdXJyZW50X2NvbnRlbnQgJiYgIWN1cnJlbnRfY29udGVudC0+cmVqZWN0
ZWQpIHsKKyAgLy8gQWRkIHRoZSBjb2RlY3MgZnJvbSBjdXJyZW50IGNvbnRlbnQgaWYgaXQgZXhp
c3RzIGFuZCBpcyBub3QgcmVqZWN0ZWQgbm9yCisgIC8vIHJlY3ljbGVkLgorICBpZiAoY3VycmVu
dF9jb250ZW50ICYmICFjdXJyZW50X2NvbnRlbnQtPnJlamVjdGVkICYmCisgICAgICBjdXJyZW50
X2NvbnRlbnQtPm5hbWUgPT0gbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQpIHsKICAgICBS
VENfQ0hFQ0soSXNNZWRpYUNvbnRlbnRPZlR5cGUoY3VycmVudF9jb250ZW50LCBNRURJQV9UWVBF
X1ZJREVPKSk7CiAgICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9CiAgICAg
ICAgIGN1cnJlbnRfY29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlkZW8oKTsKQEAg
LTIwOTcsOCArMjExMSwxMCBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6
QWRkQXVkaW9Db250ZW50Rm9yQW5zd2VyKAogICAgICAgR2V0QXVkaW9Db2RlY3NGb3JBbnN3ZXIo
b2ZmZXJfcnRkLCBhbnN3ZXJfcnRkKTsKIAogICBBdWRpb0NvZGVjcyBmaWx0ZXJlZF9jb2RlY3M7
Ci0gIC8vIEFkZCB0aGUgY29kZWNzIGZyb20gY3VycmVudCBjb250ZW50IGlmIGl0IGV4aXN0cyBh
bmQgaXMgbm90IGJlaW5nIHJlY3ljbGVkLgotICBpZiAoY3VycmVudF9jb250ZW50ICYmICFjdXJy
ZW50X2NvbnRlbnQtPnJlamVjdGVkKSB7CisgIC8vIEFkZCB0aGUgY29kZWNzIGZyb20gY3VycmVu
dCBjb250ZW50IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IHJlamVjdGVkIG5vcgorICAvLyByZWN5
Y2xlZC4KKyAgaWYgKGN1cnJlbnRfY29udGVudCAmJiAhY3VycmVudF9jb250ZW50LT5yZWplY3Rl
ZCAmJgorICAgICAgY3VycmVudF9jb250ZW50LT5uYW1lID09IG1lZGlhX2Rlc2NyaXB0aW9uX29w
dGlvbnMubWlkKSB7CiAgICAgUlRDX0NIRUNLKElzTWVkaWFDb250ZW50T2ZUeXBlKGN1cnJlbnRf
Y29udGVudCwgTUVESUFfVFlQRV9BVURJTykpOwogICAgIGNvbnN0IEF1ZGlvQ29udGVudERlc2Ny
aXB0aW9uKiBhY2QgPQogICAgICAgICBjdXJyZW50X2NvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9u
KCktPmFzX2F1ZGlvKCk7CkBAIC0yMTgzLDggKzIxOTksMTAgQEAgYm9vbCBNZWRpYVNlc3Npb25E
ZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFZpZGVvQ29udGVudEZvckFuc3dlcigKICAgfQogCiAgIFZp
ZGVvQ29kZWNzIGZpbHRlcmVkX2NvZGVjczsKLSAgLy8gQWRkIHRoZSBjb2RlY3MgZnJvbSBjdXJy
ZW50IGNvbnRlbnQgaWYgaXQgZXhpc3RzIGFuZCBpcyBub3QgYmVpbmcgcmVjeWNsZWQuCi0gIGlm
IChjdXJyZW50X2NvbnRlbnQgJiYgIWN1cnJlbnRfY29udGVudC0+cmVqZWN0ZWQpIHsKKyAgLy8g
QWRkIHRoZSBjb2RlY3MgZnJvbSBjdXJyZW50IGNvbnRlbnQgaWYgaXQgZXhpc3RzIGFuZCBpcyBu
b3QgcmVqZWN0ZWQgbm9yCisgIC8vIHJlY3ljbGVkLgorICBpZiAoY3VycmVudF9jb250ZW50ICYm
ICFjdXJyZW50X2NvbnRlbnQtPnJlamVjdGVkICYmCisgICAgICBjdXJyZW50X2NvbnRlbnQtPm5h
bWUgPT0gbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5taWQpIHsKICAgICBSVENfQ0hFQ0soSXNN
ZWRpYUNvbnRlbnRPZlR5cGUoY3VycmVudF9jb250ZW50LCBNRURJQV9UWVBFX1ZJREVPKSk7CiAg
ICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9CiAgICAgICAgIGN1cnJlbnRf
Y29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlkZW8oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNz
aW9uLmgKaW5kZXggNTkwNDYwNWYxMGE0ZGEyNWZiZDdjZGM5NWNmYjkwZjk0OTkxNDYzMC4uOTQ5
NWJkYzI5M2M0OTA0MjVhNzY0ODJiM2M4N2U5N2QxMDFmNDU2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNz
aW9uLmgKQEAgLTE3MywxOSArMTczLDIyIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9u
RmFjdG9yeSB7CiAgIGNvbnN0IEF1ZGlvQ29kZWNzJiBHZXRBdWRpb0NvZGVjc0ZvckFuc3dlcigK
ICAgICAgIGNvbnN0IHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24mIG9mZmVyLAogICAg
ICAgY29uc3Qgd2VicnRjOjpSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiYgYW5zd2VyKSBjb25zdDsK
LSAgdm9pZCBHZXRDb2RlY3NGb3JPZmZlcihjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJl
bnRfZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9Db2RlY3MqIGF1
ZGlvX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0NvZGVjcyogdmlkZW9f
Y29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFDb2RlY3MqIGRhdGFfY29kZWNz
KSBjb25zdDsKLSAgdm9pZCBHZXRDb2RlY3NGb3JBbnN3ZXIoY29uc3QgU2Vzc2lvbkRlc2NyaXB0
aW9uKiBjdXJyZW50X2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTZXNzaW9uRGVzY3JpcHRpb24qIHJlbW90ZV9vZmZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXVkaW9Db2RlY3MqIGF1ZGlvX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlkZW9Db2RlY3MqIHZpZGVvX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
RGF0YUNvZGVjcyogZGF0YV9jb2RlY3MpIGNvbnN0OwotICB2b2lkIEdldFJ0cEhkckV4dHNUb09m
ZmVyKGNvbnN0IE1lZGlhU2Vzc2lvbk9wdGlvbnMmIHNlc3Npb25fb3B0aW9ucywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVz
Y3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwSGVhZGVyRXh0ZW5zaW9u
cyogYXVkaW9fZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdHBIZWFk
ZXJFeHRlbnNpb25zKiB2aWRlb19leHRlbnNpb25zKSBjb25zdDsKKyAgdm9pZCBHZXRDb2RlY3NG
b3JPZmZlcigKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4mIGN1
cnJlbnRfYWN0aXZlX2NvbnRlbnRzLAorICAgICAgQXVkaW9Db2RlY3MqIGF1ZGlvX2NvZGVjcywK
KyAgICAgIFZpZGVvQ29kZWNzKiB2aWRlb19jb2RlY3MsCisgICAgICBEYXRhQ29kZWNzKiBkYXRh
X2NvZGVjcykgY29uc3Q7CisgIHZvaWQgR2V0Q29kZWNzRm9yQW5zd2VyKAorICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiYgY3VycmVudF9hY3RpdmVfY29udGVudHMs
CisgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24mIHJlbW90ZV9vZmZlciwKKyAgICAgIEF1
ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3MsCisgICAgICBWaWRlb0NvZGVjcyogdmlkZW9fY29kZWNz
LAorICAgICAgRGF0YUNvZGVjcyogZGF0YV9jb2RlY3MpIGNvbnN0OworICB2b2lkIEdldFJ0cEhk
ckV4dHNUb09mZmVyKAorICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8q
PiYgY3VycmVudF9hY3RpdmVfY29udGVudHMsCisgICAgICBib29sIGlzX3VuaWZpZWRfcGxhbiwK
KyAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbnMqIGF1ZGlvX2V4dGVuc2lvbnMsCisgICAgICBSdHBI
ZWFkZXJFeHRlbnNpb25zKiB2aWRlb19leHRlbnNpb25zKSBjb25zdDsKICAgYm9vbCBBZGRUcmFu
c3BvcnRPZmZlcihjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRyYW5zcG9ydE9wdGlvbnMmIHRyYW5zcG9ydF9vcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbiogY3VycmVu
dF9kZXNjLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjCmluZGV4IDA3
NmFkMTJhNWIzNDk4MGMwMGMzMTIwOTc0OWExZWI1MzZmYzM0ZDQuLjIwOThlYzA4MTk0M2U4ZTRj
MjZlZTcwNDQ5N2M5YmQzNmY0MTBiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb25f
dW5pdHRlc3QuY2MKQEAgLTIwMjAsNiArMjAyMCwxMTAgQEAgVEVTVF9GKE1lZGlhU2Vzc2lvbkRl
c2NyaXB0aW9uRmFjdG9yeVRlc3QsCiAgIEVYUEVDVF9USEFUKHVwZGF0ZWRfdmNkLT5jb2RlY3Mo
KSwgRWxlbWVudHNBcmVBcnJheShrVXBkYXRlZFZpZGVvQ29kZWNPZmZlcikpOwogfQogCisvLyBU
ZXN0IHRoYXQgYSByZW9mZmVyIGRvZXMgbm90IHJldXNlIGF1ZGlvIGNvZGVjcyBmcm9tIGEgcHJl
dmlvdXMgbWVkaWEgc2VjdGlvbgorLy8gdGhhdCBpcyBiZWluZyByZWN5Y2xlZC4KK1RFU1RfRihN
ZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3RvcnlUZXN0LAorICAgICAgIFJlT2ZmZXJEb2VzTm90
UmVVc2VSZWN5Y2xlZEF1ZGlvQ29kZWNzKSB7CisgIGYxXy5zZXRfdmlkZW9fY29kZWNzKHt9KTsK
KyAgZjJfLnNldF92aWRlb19jb2RlY3Moe30pOworCisgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0
czsKKyAgQWRkTWVkaWFTZWN0aW9uKE1FRElBX1RZUEVfQVVESU8sICJhMCIsIFJ0cFRyYW5zY2Vp
dmVyRGlyZWN0aW9uOjprU2VuZFJlY3YsCisgICAgICAgICAgICAgICAgICBrQWN0aXZlLCAmb3B0
cyk7CisgIGF1dG8gb2ZmZXIgPSBhYnNsOjpXcmFwVW5pcXVlKGYxXy5DcmVhdGVPZmZlcihvcHRz
LCBudWxscHRyKSk7CisgIGF1dG8gYW5zd2VyID0gYWJzbDo6V3JhcFVuaXF1ZShmMl8uQ3JlYXRl
QW5zd2VyKG9mZmVyLmdldCgpLCBvcHRzLCBudWxscHRyKSk7CisKKyAgLy8gUmVjeWNsZSB0aGUg
bWVkaWEgc2VjdGlvbiBieSBjaGFuZ2luZyBpdHMgbWlkLgorICBvcHRzLm1lZGlhX2Rlc2NyaXB0
aW9uX29wdGlvbnNbMF0ubWlkID0gImExIjsKKyAgYXV0byByZW9mZmVyID0gYWJzbDo6V3JhcFVu
aXF1ZShmMl8uQ3JlYXRlT2ZmZXIob3B0cywgYW5zd2VyLmdldCgpKSk7CisKKyAgLy8gRXhwZWN0
IHRoYXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZpcnN0IG5lZ290aWF0aW9uIGFyZSBpZ25vcmVkLiBJ
ZiB0aGUgbT0KKyAgLy8gc2VjdGlvbiB3YXMgbm90IHJlY3ljbGVkIHRoZSBwYXlsb2FkIHR5cGVz
IHdvdWxkIG1hdGNoIHRoZSBpbml0aWFsIG9mZmVyZXIuCisgIGNvbnN0IEF1ZGlvQ29udGVudERl
c2NyaXB0aW9uKiBhY2QgPQorICAgICAgR2V0Rmlyc3RBdWRpb0NvbnRlbnREZXNjcmlwdGlvbihy
ZW9mZmVyLmdldCgpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2RlY3MoKSwgRWxlbWVudHNBcmVB
cnJheShrQXVkaW9Db2RlY3MyKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBhIHJlb2ZmZXIgZG9lcyBu
b3QgcmV1c2UgdmlkZW8gY29kZWNzIGZyb20gYSBwcmV2aW91cyBtZWRpYSBzZWN0aW9uCisvLyB0
aGF0IGlzIGJlaW5nIHJlY3ljbGVkLgorVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFj
dG9yeVRlc3QsCisgICAgICAgUmVPZmZlckRvZXNOb3RSZVVzZVJlY3ljbGVkVmlkZW9Db2RlY3Mp
IHsKKyAgZjFfLnNldF9hdWRpb19jb2RlY3Moe30sIHt9KTsKKyAgZjJfLnNldF9hdWRpb19jb2Rl
Y3Moe30sIHt9KTsKKworICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7CisgIEFkZE1lZGlhU2Vj
dGlvbihNRURJQV9UWVBFX1ZJREVPLCAidjAiLCBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1Nl
bmRSZWN2LAorICAgICAgICAgICAgICAgICAga0FjdGl2ZSwgJm9wdHMpOworICBhdXRvIG9mZmVy
ID0gYWJzbDo6V3JhcFVuaXF1ZShmMV8uQ3JlYXRlT2ZmZXIob3B0cywgbnVsbHB0cikpOworICBh
dXRvIGFuc3dlciA9IGFic2w6OldyYXBVbmlxdWUoZjJfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQo
KSwgb3B0cywgbnVsbHB0cikpOworCisgIC8vIFJlY3ljbGUgdGhlIG1lZGlhIHNlY3Rpb24gYnkg
Y2hhbmdpbmcgaXRzIG1pZC4KKyAgb3B0cy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zWzBdLm1p
ZCA9ICJ2MSI7CisgIGF1dG8gcmVvZmZlciA9IGFic2w6OldyYXBVbmlxdWUoZjJfLkNyZWF0ZU9m
ZmVyKG9wdHMsIGFuc3dlci5nZXQoKSkpOworCisgIC8vIEV4cGVjdCB0aGF0IHRoZSByZXN1bHRz
IG9mIHRoZSBmaXJzdCBuZWdvdGlhdGlvbiBhcmUgaWdub3JlZC4gSWYgdGhlIG09CisgIC8vIHNl
Y3Rpb24gd2FzIG5vdCByZWN5Y2xlZCB0aGUgcGF5bG9hZCB0eXBlcyB3b3VsZCBtYXRjaCB0aGUg
aW5pdGlhbCBvZmZlcmVyLgorICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmNkID0K
KyAgICAgIEdldEZpcnN0VmlkZW9Db250ZW50RGVzY3JpcHRpb24ocmVvZmZlci5nZXQoKSk7Cisg
IEVYUEVDVF9USEFUKHZjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJyYXkoa1ZpZGVvQ29kZWNz
MikpOworfQorCisvLyBUZXN0IHRoYXQgYSByZWFuc3dlciBkb2VzIG5vdCByZXVzZSBhdWRpbyBj
b2RlY3MgZnJvbSBhIHByZXZpb3VzIG1lZGlhCisvLyBzZWN0aW9uIHRoYXQgaXMgYmVpbmcgcmVj
eWNsZWQuCitURVNUX0YoTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKKyAgICAg
ICBSZUFuc3dlckRvZXNOb3RSZVVzZVJlY3ljbGVkQXVkaW9Db2RlY3MpIHsKKyAgZjFfLnNldF92
aWRlb19jb2RlY3Moe30pOworICBmMl8uc2V0X3ZpZGVvX2NvZGVjcyh7fSk7CisKKyAgLy8gUGVy
Zm9ybSBpbml0aWFsIG9mZmVyL2Fuc3dlciBpbiByZXZlcnNlICh8ZjJffCBhcyBvZmZlcmVyKSBz
byB0aGF0IHRoZQorICAvLyBzZWNvbmQgb2ZmZXIvYW5zd2VyIGlzIGZvcndhcmQgKHxmMV98IGFz
IG9mZmVyZXIpLgorICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7CisgIEFkZE1lZGlhU2VjdGlv
bihNRURJQV9UWVBFX0FVRElPLCAiYTAiLCBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRS
ZWN2LAorICAgICAgICAgICAgICAgICAga0FjdGl2ZSwgJm9wdHMpOworICBhdXRvIG9mZmVyID0g
YWJzbDo6V3JhcFVuaXF1ZShmMl8uQ3JlYXRlT2ZmZXIob3B0cywgbnVsbHB0cikpOworICBhdXRv
IGFuc3dlciA9IGFic2w6OldyYXBVbmlxdWUoZjFfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwg
b3B0cywgbnVsbHB0cikpOworCisgIC8vIFJlY3ljbGUgdGhlIG1lZGlhIHNlY3Rpb24gYnkgY2hh
bmdpbmcgaXRzIG1pZC4KKyAgb3B0cy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zWzBdLm1pZCA9
ICJhMSI7CisgIGF1dG8gcmVvZmZlciA9IGFic2w6OldyYXBVbmlxdWUoZjFfLkNyZWF0ZU9mZmVy
KG9wdHMsIGFuc3dlci5nZXQoKSkpOworICBhdXRvIHJlYW5zd2VyID0KKyAgICAgIGFic2w6Oldy
YXBVbmlxdWUoZjJfLkNyZWF0ZUFuc3dlcihyZW9mZmVyLmdldCgpLCBvcHRzLCBvZmZlci5nZXQo
KSkpOworCisgIC8vIEV4cGVjdCB0aGF0IHRoZSByZXN1bHRzIG9mIHRoZSBmaXJzdCBuZWdvdGlh
dGlvbiBhcmUgaWdub3JlZC4gSWYgdGhlIG09CisgIC8vIHNlY3Rpb24gd2FzIG5vdCByZWN5Y2xl
ZCB0aGUgcGF5bG9hZCB0eXBlcyB3b3VsZCBtYXRjaCB0aGUgaW5pdGlhbCBvZmZlcmVyLgorICBj
b25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYWNkID0KKyAgICAgIEdldEZpcnN0QXVkaW9D
b250ZW50RGVzY3JpcHRpb24ocmVhbnN3ZXIuZ2V0KCkpOworICBFWFBFQ1RfVEhBVChhY2QtPmNv
ZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtBdWRpb0NvZGVjc0Fuc3dlcikpOworfQorCisvLyBU
ZXN0IHRoYXQgYSByZWFuc3dlciBkb2VzIG5vdCByZXVzZSB2aWRlbyBjb2RlY3MgZnJvbSBhIHBy
ZXZpb3VzIG1lZGlhCisvLyBzZWN0aW9uIHRoYXQgaXMgYmVpbmcgcmVjeWNsZWQuCitURVNUX0Yo
TWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKKyAgICAgICBSZUFuc3dlckRvZXNO
b3RSZVVzZVJlY3ljbGVkVmlkZW9Db2RlY3MpIHsKKyAgZjFfLnNldF9hdWRpb19jb2RlY3Moe30s
IHt9KTsKKyAgZjJfLnNldF9hdWRpb19jb2RlY3Moe30sIHt9KTsKKworICAvLyBQZXJmb3JtIGlu
aXRpYWwgb2ZmZXIvYW5zd2VyIGluIHJldmVyc2UgKHxmMl98IGFzIG9mZmVyZXIpIHNvIHRoYXQg
dGhlCisgIC8vIHNlY29uZCBvZmZlci9hbnN3ZXIgaXMgZm9yd2FyZCAofGYxX3wgYXMgb2ZmZXJl
cikuCisgIE1lZGlhU2Vzc2lvbk9wdGlvbnMgb3B0czsKKyAgQWRkTWVkaWFTZWN0aW9uKE1FRElB
X1RZUEVfVklERU8sICJ2MCIsIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprU2VuZFJlY3YsCisg
ICAgICAgICAgICAgICAgICBrQWN0aXZlLCAmb3B0cyk7CisgIGF1dG8gb2ZmZXIgPSBhYnNsOjpX
cmFwVW5pcXVlKGYyXy5DcmVhdGVPZmZlcihvcHRzLCBudWxscHRyKSk7CisgIGF1dG8gYW5zd2Vy
ID0gYWJzbDo6V3JhcFVuaXF1ZShmMV8uQ3JlYXRlQW5zd2VyKG9mZmVyLmdldCgpLCBvcHRzLCBu
dWxscHRyKSk7CisKKyAgLy8gUmVjeWNsZSB0aGUgbWVkaWEgc2VjdGlvbiBieSBjaGFuZ2luZyBp
dHMgbWlkLgorICBvcHRzLm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnNbMF0ubWlkID0gInYxIjsK
KyAgYXV0byByZW9mZmVyID0gYWJzbDo6V3JhcFVuaXF1ZShmMV8uQ3JlYXRlT2ZmZXIob3B0cywg
YW5zd2VyLmdldCgpKSk7CisgIGF1dG8gcmVhbnN3ZXIgPQorICAgICAgYWJzbDo6V3JhcFVuaXF1
ZShmMl8uQ3JlYXRlQW5zd2VyKHJlb2ZmZXIuZ2V0KCksIG9wdHMsIG9mZmVyLmdldCgpKSk7CisK
KyAgLy8gRXhwZWN0IHRoYXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZpcnN0IG5lZ290aWF0aW9uIGFy
ZSBpZ25vcmVkLiBJZiB0aGUgbT0KKyAgLy8gc2VjdGlvbiB3YXMgbm90IHJlY3ljbGVkIHRoZSBw
YXlsb2FkIHR5cGVzIHdvdWxkIG1hdGNoIHRoZSBpbml0aWFsIG9mZmVyZXIuCisgIGNvbnN0IFZp
ZGVvQ29udGVudERlc2NyaXB0aW9uKiB2Y2QgPQorICAgICAgR2V0Rmlyc3RWaWRlb0NvbnRlbnRE
ZXNjcmlwdGlvbihyZWFuc3dlci5nZXQoKSk7CisgIEVYUEVDVF9USEFUKHZjZC0+Y29kZWNzKCks
IEVsZW1lbnRzQXJlQXJyYXkoa1ZpZGVvQ29kZWNzQW5zd2VyKSk7Cit9CisKIC8vIENyZWF0ZSBh
biB1cGRhdGVkIG9mZmVyIGFmdGVyIGNyZWF0aW5nIGFuIGFuc3dlciB0byB0aGUgb3JpZ2luYWwg
b2ZmZXIgYW5kCiAvLyB2ZXJpZnkgdGhhdCB0aGUgY29kZWNzIHRoYXQgd2VyZSBwYXJ0IG9mIHRo
ZSBvcmlnaW5hbCBhbnN3ZXIgYXJlIG5vdCBjaGFuZ2VkCiAvLyBpbiB0aGUgdXBkYXRlZCBvZmZl
ci4gSW4gdGhpcyB0ZXN0IFJ0eCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5j
YwppbmRleCA4OTQzNTU4M2I3MzgxMTdhZDllNmEzM2I0ZjY1ZTI4OThjNTNlZmM2Li4zYmUwNjcx
YmI0OGUwNTYxOGJlNmU0ZGQ2MjYzYTc5NmM4Mjk4OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbi5jYwpAQCAtMzk1NCw2ICszOTU0LDE3IEBAIEdldE1lZGlhRGVzY3JpcHRpb25PcHRpb25z
Rm9yVHJhbnNjZWl2ZXIoCiAgIHJldHVybiBtZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zOwogfQog
CisvLyBSZXR1cm5zIHRoZSBDb250ZW50SW5mbyBhdCBtbGluZSBpbmRleCB8aXwsIG9yIG51bGwg
aWYgbm9uZSBleGlzdHMuCitzdGF0aWMgY29uc3QgQ29udGVudEluZm8qIEdldENvbnRlbnRCeUlu
ZGV4KAorICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogc2Rlc2MsCisgICAg
c2l6ZV90IGkpIHsKKyAgaWYgKCFzZGVzYykgeworICAgIHJldHVybiBudWxscHRyOworICB9Cisg
IGNvbnN0IENvbnRlbnRJbmZvcyYgY29udGVudHMgPSBzZGVzYy0+ZGVzY3JpcHRpb24oKS0+Y29u
dGVudHMoKTsKKyAgcmV0dXJuIChpIDwgY29udGVudHMuc2l6ZSgpID8gJmNvbnRlbnRzW2ldIDog
bnVsbHB0cik7Cit9CisKIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9wdGlvbnNGb3JVbmlmaWVk
UGxhbk9mZmVyKAogICAgIGNvbnN0IFJUQ09mZmVyQW5zd2VyT3B0aW9ucyYgb2ZmZXJfYW5zd2Vy
X29wdGlvbnMsCiAgICAgY3JpY2tldDo6TWVkaWFTZXNzaW9uT3B0aW9ucyogc2Vzc2lvbl9vcHRp
b25zKSB7CkBAIC0zOTgxLDEwICszOTkyLDE1IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OkdldE9w
dGlvbnNGb3JVbmlmaWVkUGxhbk9mZmVyKAogICAgIC8vIEVpdGhlciB8bG9jYWxfY29udGVudHwg
b3IgfHJlbW90ZV9jb250ZW50fCBpcyBub24tbnVsbC4KICAgICBjb25zdCBDb250ZW50SW5mbyog
bG9jYWxfY29udGVudCA9CiAgICAgICAgIChpIDwgbG9jYWxfY29udGVudHMuc2l6ZSgpID8gJmxv
Y2FsX2NvbnRlbnRzW2ldIDogbnVsbHB0cik7CisgICAgY29uc3QgQ29udGVudEluZm8qIGN1cnJl
bnRfbG9jYWxfY29udGVudCA9CisgICAgICAgIEdldENvbnRlbnRCeUluZGV4KGN1cnJlbnRfbG9j
YWxfZGVzY3JpcHRpb24oKSwgaSk7CiAgICAgY29uc3QgQ29udGVudEluZm8qIHJlbW90ZV9jb250
ZW50ID0KICAgICAgICAgKGkgPCByZW1vdGVfY29udGVudHMuc2l6ZSgpID8gJnJlbW90ZV9jb250
ZW50c1tpXSA6IG51bGxwdHIpOwotICAgIGJvb2wgaGFkX2JlZW5fcmVqZWN0ZWQgPSAobG9jYWxf
Y29udGVudCAmJiBsb2NhbF9jb250ZW50LT5yZWplY3RlZCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHJlbW90ZV9jb250ZW50ICYmIHJlbW90ZV9jb250ZW50LT5yZWplY3RlZCk7
CisgICAgY29uc3QgQ29udGVudEluZm8qIGN1cnJlbnRfcmVtb3RlX2NvbnRlbnQgPQorICAgICAg
ICBHZXRDb250ZW50QnlJbmRleChjdXJyZW50X3JlbW90ZV9kZXNjcmlwdGlvbigpLCBpKTsKKyAg
ICBib29sIGhhZF9iZWVuX3JlamVjdGVkID0KKyAgICAgICAgKGN1cnJlbnRfbG9jYWxfY29udGVu
dCAmJiBjdXJyZW50X2xvY2FsX2NvbnRlbnQtPnJlamVjdGVkKSB8fAorICAgICAgICAoY3VycmVu
dF9yZW1vdGVfY29udGVudCAmJiBjdXJyZW50X3JlbW90ZV9jb250ZW50LT5yZWplY3RlZCk7CiAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1pZCA9CiAgICAgICAgIChsb2NhbF9jb250ZW50ID8gbG9j
YWxfY29udGVudC0+bmFtZSA6IHJlbW90ZV9jb250ZW50LT5uYW1lKTsKICAgICBjcmlja2V0OjpN
ZWRpYVR5cGUgbWVkaWFfdHlwZSA9CkBAIC0zOTk1LDcgKzQwMTEsNyBAQCB2b2lkIFBlZXJDb25u
ZWN0aW9uOjpHZXRPcHRpb25zRm9yVW5pZmllZFBsYW5PZmZlcigKICAgICAgIGF1dG8gdHJhbnNj
ZWl2ZXIgPSBHZXRBc3NvY2lhdGVkVHJhbnNjZWl2ZXIobWlkKTsKICAgICAgIFJUQ19DSEVDSyh0
cmFuc2NlaXZlcik7CiAgICAgICAvLyBBIG1lZGlhIHNlY3Rpb24gaXMgY29uc2lkZXJlZCBlbGln
aWJsZSBmb3IgcmVjeWNsaW5nIGlmIGl0IGlzIG1hcmtlZCBhcwotICAgICAgLy8gcmVqZWN0ZWQg
aW4gZWl0aGVyIHRoZSBsb2NhbCBvciByZW1vdGUgZGVzY3JpcHRpb24uCisgICAgICAvLyByZWpl
Y3RlZCBpbiBlaXRoZXIgdGhlIGN1cnJlbnQgbG9jYWwgb3IgY3VycmVudCByZW1vdGUgZGVzY3Jp
cHRpb24uCiAgICAgICBpZiAoaGFkX2JlZW5fcmVqZWN0ZWQgJiYgdHJhbnNjZWl2ZXItPnN0b3Bw
ZWQoKSkgewogICAgICAgICBzZXNzaW9uX29wdGlvbnMtPm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlv
bnMucHVzaF9iYWNrKAogICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFEZXNjcmlwdGlvbk9wdGlv
bnModHJhbnNjZWl2ZXItPm1lZGlhX3R5cGUoKSwgbWlkLApAQCAtNDE4NywxMiArNDIwMywxMyBA
QCB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZW5lcmF0ZU1lZGlhRGVzY3JpcHRpb25PcHRpb25zKAog
ICAgICAgICBzZXNzaW9uX29wdGlvbnMtPm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMucHVzaF9i
YWNrKAogICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMoCiAgICAg
ICAgICAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgY29udGVudC5uYW1lLAotICAg
ICAgICAgICAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprSW5hY3RpdmUsIHRydWUpKTsK
KyAgICAgICAgICAgICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a0luYWN0aXZlLCAvKnN0
b3BwZWQ9Ki90cnVlKSk7CiAgICAgICB9IGVsc2UgeworICAgICAgICBib29sIHN0b3BwZWQgPSAo
YXVkaW9fZGlyZWN0aW9uID09IFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprSW5hY3RpdmUpOwog
ICAgICAgICBzZXNzaW9uX29wdGlvbnMtPm1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMucHVzaF9i
YWNrKAotICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMoCi0gICAg
ICAgICAgICAgICAgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTywgY29udGVudC5uYW1lLCBhdWRp
b19kaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgYXVkaW9fZGlyZWN0aW9uID09IFJ0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uOjprSW5hY3RpdmUpKTsKKyAgICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlh
RGVzY3JpcHRpb25PcHRpb25zKGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Lm5hbWUsIGF1ZGlvX2Rp
cmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
b3BwZWQpKTsKICAgICAgICAgKmF1ZGlvX2luZGV4ID0gc2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9k
ZXNjcmlwdGlvbl9vcHRpb25zLnNpemUoKSAtIDE7CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChJ
c1ZpZGVvQ29udGVudCgmY29udGVudCkpIHsKQEAgLTQyMDEsMTIgKzQyMTgsMTMgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6R2VuZXJhdGVNZWRpYURlc2NyaXB0aW9uT3B0aW9ucygKICAgICAgICAg
c2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnB1c2hfYmFjaygKICAg
ICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25zKAogICAgICAgICAgICAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIGNvbnRlbnQubmFtZSwKLSAgICAgICAgICAg
ICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a0luYWN0aXZlLCB0cnVlKSk7CisgICAgICAg
ICAgICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtJbmFjdGl2ZSwgLypzdG9wcGVkPSov
dHJ1ZSkpOwogICAgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBzdG9wcGVkID0gKHZpZGVvX2Rp
cmVjdGlvbiA9PSBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a0luYWN0aXZlKTsKICAgICAgICAg
c2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnB1c2hfYmFjaygKLSAg
ICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25zKAotICAgICAgICAgICAg
ICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfVklERU8sIGNvbnRlbnQubmFtZSwgdmlkZW9fZGlyZWN0
aW9uLAotICAgICAgICAgICAgICAgIHZpZGVvX2RpcmVjdGlvbiA9PSBSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbjo6a0luYWN0aXZlKSk7CisgICAgICAgICAgICBjcmlja2V0OjpNZWRpYURlc2NyaXB0
aW9uT3B0aW9ucyhjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5uYW1lLCB2aWRlb19kaXJlY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcGVkKSk7
CiAgICAgICAgICp2aWRlb19pbmRleCA9IHNlc3Npb25fb3B0aW9ucy0+bWVkaWFfZGVzY3JpcHRp
b25fb3B0aW9ucy5zaXplKCkgLSAxOwogICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9qc2VwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNlcF91bml0dGVzdC5jYwppbmRleCBmZTg3OGIw
NWY3OGMyMzE3NzAwNjhhZWFlMmNjZWE2MTkwMzUyNGM1Li5mMGM5MTExODg1Y2E3YjI5NTc3MWQ2
YWI5MjcwMmEyNDRjNDYyMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0
aW9uX2pzZXBfdW5pdHRlc3QuY2MKQEAgLTcwMCw2ICs3MDAsMTIgQEAgVEVTVF9GKFBlZXJDb25u
ZWN0aW9uSnNlcFRlc3QsIENyZWF0ZU9mZmVyUmVjeWNsZXNXaGVuT2ZmZXJpbmdUd2ljZSkgewog
Ly8gVGVzdCB0aGF0IHRoZSBvZmZlci9hbnN3ZXIgYW5kIHRyYW5zY2VpdmVycyBmb3IgYm90aCB0
aGUgY2FsbGVyIGFuZCBjYWxsZWUKIC8vIHNpZGUgYXJlIGdlbmVyYXRlZC91cGRhdGVkIGNvcnJl
Y3RseSB3aGVuIHJlY3ljbGluZyBhbiBhdWRpby92aWRlbyBtZWRpYQogLy8gc2VjdGlvbiBhcyBh
IG1lZGlhIHNlY3Rpb24gb2YgZWl0aGVyIHRoZSBzYW1lIG9yIG9wcG9zaXRlIHR5cGUuCisvLyBD
b3JyZWN0IHJlY3ljbGluZyB3b3JrcyBhcyBmb2xsb3dzOgorLy8gLSBUaGUgbT0gc2VjdGlvbiBp
cyByZS1vZmZlcmVkIHdpdGggYSBuZXcgTUlEIHZhbHVlIGFuZCB0aGUgbmV3IG1lZGlhIHR5cGUu
CisvLyAtIFRoZSBwcmV2aW91c2x5LWFzc29jaWF0ZWQgdHJhbnNjZWl2ZXIgaXMgZGlzc29jaWF0
ZWQgd2hlbiB0aGUgbmV3IG9mZmVyIGlzCisvLyAgIHNldCBhcyBhIGxvY2FsIGRlc2NyaXB0aW9u
IG9uIHRoZSBvZmZlcmVyIG9yIGFzIGEgcmVtb3RlIGRlc2NyaXB0aW9uIG9uCisvLyAgIHRoZSBh
bnN3ZXJlci4KKy8vIC0gVGhlIG5ldyB0cmFuc2NlaXZlciBpcyBhc3NvY2lhdGVkIHdpdGggdGhl
IG5ldyBNSUQgdmFsdWUuCiBjbGFzcyBSZWN5Y2xlTWVkaWFTZWN0aW9uVGVzdAogICAgIDogcHVi
bGljIFBlZXJDb25uZWN0aW9uSnNlcFRlc3QsCiAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPApAQCAtNzE0LDcgKzcyMCw5IEBAIGNsYXNzIFJlY3ljbGVNZWRpYVNlY3Rp
b25UZXN0CiAgIGNyaWNrZXQ6Ok1lZGlhVHlwZSBzZWNvbmRfdHlwZV87CiB9OwogCi1URVNUX1Ao
UmVjeWNsZU1lZGlhU2VjdGlvblRlc3QsIFZlcmlmeU9mZmVyQW5zd2VyQW5kVHJhbnNjZWl2ZXJz
KSB7CisvLyBUZXN0IHRoYXQgcmVjeWNsaW5nIHdvcmtzIHByb3Blcmx5IHdoZW4gYSBuZXcgdHJh
bnNjZWl2ZXIgcmVjeWNsZXMgYW4gbT0KKy8vIHNlY3Rpb24gdGhhdCB3YXMgcmVqZWN0ZWQgaW4g
Ym90aCB0aGUgY3VycmVudCBsb2NhbCBhbmQgcmVtb3RlIGRlc2NyaXB0aW9ucy4KK1RFU1RfUChS
ZWN5Y2xlTWVkaWFTZWN0aW9uVGVzdCwgQ3VycmVudExvY2FsQW5kQ3VycmVudFJlbW90ZVJlamVj
dGVkKSB7CiAgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKICAgYXV0byBm
aXJzdF90cmFuc2NlaXZlciA9IGNhbGxlci0+QWRkVHJhbnNjZWl2ZXIoZmlyc3RfdHlwZV8pOwog
ICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CkBAIC03NzQsNiArNzgyLDI4
NSBAQCBURVNUX1AoUmVjeWNsZU1lZGlhU2VjdGlvblRlc3QsIFZlcmlmeU9mZmVyQW5zd2VyQW5k
VHJhbnNjZWl2ZXJzKSB7CiAgIEFTU0VSVF9FUSgydSwgY2FsbGVlLT5wYygpLT5HZXRUcmFuc2Nl
aXZlcnMoKS5zaXplKCkpOwogfQogCisvLyBUZXN0IHRoYXQgcmVjeWNsaW5nIHdvcmtzIHByb3Bl
cmx5IHdoZW4gYSBuZXcgdHJhbnNjZWl2ZXIgcmVjeWNsZXMgYW4gbT0KKy8vIHNlY3Rpb24gdGhh
dCB3YXMgcmVqZWN0ZWQgaW4gb25seSB0aGUgY3VycmVudCByZW1vdGUgZGVzY3JpcHRpb24uCitU
RVNUX1AoUmVjeWNsZU1lZGlhU2VjdGlvblRlc3QsIEN1cnJlbnRSZW1vdGVPbmx5UmVqZWN0ZWQp
IHsKKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBhdXRvIGNhbGxl
cl9maXJzdF90cmFuc2NlaXZlciA9IGNhbGxlci0+QWRkVHJhbnNjZWl2ZXIoZmlyc3RfdHlwZV8p
OworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisKKyAgQVNTRVJUX1RS
VUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0
QXNMb2NhbCgpKSk7CisKKyAgc3RkOjpzdHJpbmcgZmlyc3RfbWlkID0gKmNhbGxlcl9maXJzdF90
cmFuc2NlaXZlci0+bWlkKCk7CisgIEFTU0VSVF9FUSgxdSwgY2FsbGVlLT5wYygpLT5HZXRUcmFu
c2NlaXZlcnMoKS5zaXplKCkpOworICBhdXRvIGNhbGxlZV9maXJzdF90cmFuc2NlaXZlciA9IGNh
bGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKClbMF07CisgIGNhbGxlZV9maXJzdF90cmFuc2Nl
aXZlci0+U3RvcCgpOworCisgIC8vIFRoZSBhbnN3ZXIgd2lsbCBoYXZlIGEgcmVqZWN0ZWQgbT0g
c2VjdGlvbi4KKyAgQVNTRVJUX1RSVUUoCisgICAgICBjYWxsZXItPlNldFJlbW90ZURlc2NyaXB0
aW9uKGNhbGxlZS0+Q3JlYXRlQW5zd2VyQW5kU2V0QXNMb2NhbCgpKSk7CisKKyAgLy8gVGhlIG9m
ZmVyIHNob3VsZCByZXVzZSB0aGUgcHJldmlvdXMgbWVkaWEgc2VjdGlvbiBidXQgYWxsb2NhdGUg
YSBuZXcgTUlECisgIC8vIGFuZCBjaGFuZ2UgdGhlIG1lZGlhIHR5cGUuCisgIGF1dG8gY2FsbGVy
X3NlY29uZF90cmFuc2NlaXZlciA9IGNhbGxlci0+QWRkVHJhbnNjZWl2ZXIoc2Vjb25kX3R5cGVf
KTsKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIoKTsKKyAgY29uc3QgYXV0byYg
b2ZmZXJfY29udGVudHMgPSBvZmZlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKTsKKyAgQVNT
RVJUX0VRKDF1LCBvZmZlcl9jb250ZW50cy5zaXplKCkpOworICBFWFBFQ1RfRkFMU0Uob2ZmZXJf
Y29udGVudHNbMF0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoc2Vjb25kX3R5cGVfLCBvZmZlcl9j
b250ZW50c1swXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworICBzdGQ6OnN0cmluZyBz
ZWNvbmRfbWlkID0gb2ZmZXJfY29udGVudHNbMF0ubmFtZTsKKyAgRVhQRUNUX05FKGZpcnN0X21p
ZCwgc2Vjb25kX21pZCk7CisKKyAgLy8gU2V0dGluZyB0aGUgbG9jYWwgb2ZmZXIgd2lsbCBkaXNz
b2NpYXRlIHRoZSBwcmV2aW91cyB0cmFuc2NlaXZlciBhbmQgc2V0CisgIC8vIHRoZSBNSUQgZm9y
IHRoZSBuZXcgdHJhbnNjZWl2ZXIuCisgIEFTU0VSVF9UUlVFKAorICAgICAgY2FsbGVyLT5TZXRM
b2NhbERlc2NyaXB0aW9uKENsb25lU2Vzc2lvbkRlc2NyaXB0aW9uKG9mZmVyLmdldCgpKSkpOwor
ICBFWFBFQ1RfRVEoYWJzbDo6bnVsbG9wdCwgY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyLT5taWQo
KSk7CisgIEVYUEVDVF9FUShzZWNvbmRfbWlkLCBjYWxsZXJfc2Vjb25kX3RyYW5zY2VpdmVyLT5t
aWQoKSk7CisKKyAgLy8gU2V0dGluZyB0aGUgcmVtb3RlIG9mZmVyIHdpbGwgZGlzc29jaWF0ZSB0
aGUgcHJldmlvdXMgdHJhbnNjZWl2ZXIgYW5kCisgIC8vIGNyZWF0ZSBhIG5ldyB0cmFuc2NlaXZl
ciBmb3IgdGhlIG1lZGlhIHNlY3Rpb24uCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3Rl
RGVzY3JpcHRpb24oc3RkOjptb3ZlKG9mZmVyKSkpOworICBhdXRvIGNhbGxlZV90cmFuc2NlaXZl
cnMgPSBjYWxsZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpOworICBBU1NFUlRfRVEoMnUsIGNh
bGxlZV90cmFuc2NlaXZlcnMuc2l6ZSgpKTsKKyAgRVhQRUNUX0VRKGFic2w6Om51bGxvcHQsIGNh
bGxlZV90cmFuc2NlaXZlcnNbMF0tPm1pZCgpKTsKKyAgRVhQRUNUX0VRKGZpcnN0X3R5cGVfLCBj
YWxsZWVfdHJhbnNjZWl2ZXJzWzBdLT5tZWRpYV90eXBlKCkpOworICBFWFBFQ1RfRVEoc2Vjb25k
X21pZCwgY2FsbGVlX3RyYW5zY2VpdmVyc1sxXS0+bWlkKCkpOworICBFWFBFQ1RfRVEoc2Vjb25k
X3R5cGVfLCBjYWxsZWVfdHJhbnNjZWl2ZXJzWzFdLT5tZWRpYV90eXBlKCkpOworCisgIC8vIFRo
ZSBhbnN3ZXIgc2hvdWxkIGhhdmUgb25seSBvbmUgbWVkaWEgc2VjdGlvbiBmb3IgdGhlIG5ldyB0
cmFuc2NlaXZlci4KKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBh
dXRvIGFuc3dlcl9jb250ZW50cyA9IGFuc3dlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKTsK
KyAgQVNTRVJUX0VRKDF1LCBhbnN3ZXJfY29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX0ZBTFNF
KGFuc3dlcl9jb250ZW50c1swXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShzZWNvbmRfbWlkLCBh
bnN3ZXJfY29udGVudHNbMF0ubmFtZSk7CisgIEVYUEVDVF9FUShzZWNvbmRfdHlwZV8sIGFuc3dl
cl9jb250ZW50c1swXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworCisgIC8vIFNldHRp
bmcgdGhlIGxvY2FsIGFuc3dlciBzaG91bGQgc3VjY2VlZC4KKyAgQVNTRVJUX1RSVUUoCisgICAg
ICBjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRpb24oQ2xvbmVTZXNzaW9uRGVzY3JpcHRpb24oYW5z
d2VyLmdldCgpKSkpOworCisgIC8vIFNldHRpbmcgdGhlIHJlbW90ZSBhbnN3ZXIgc2hvdWxkIHN1
Y2NlZWQgYW5kIG5vdCBjcmVhdGUgYW55IG5ldworICAvLyB0cmFuc2NlaXZlcnMuCisgIEFTU0VS
VF9UUlVFKGNhbGxlci0+U2V0UmVtb3RlRGVzY3JpcHRpb24oc3RkOjptb3ZlKGFuc3dlcikpKTsK
KyAgQVNTRVJUX0VRKDJ1LCBjYWxsZXItPnBjKCktPkdldFRyYW5zY2VpdmVycygpLnNpemUoKSk7
CisgIEFTU0VSVF9FUSgydSwgY2FsbGVlLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKS5zaXplKCkp
OworfQorCisvLyBUZXN0IHRoYXQgcmVjeWNsaW5nIHdvcmtzIHByb3Blcmx5IHdoZW4gYSBuZXcg
dHJhbnNjZWl2ZXIgcmVjeWNsZXMgYW4gbT0KKy8vIHNlY3Rpb24gdGhhdCB3YXMgcmVqZWN0ZWQg
b25seSBpbiB0aGUgY3VycmVudCBsb2NhbCBkZXNjcmlwdGlvbi4KK1RFU1RfUChSZWN5Y2xlTWVk
aWFTZWN0aW9uVGVzdCwgQ3VycmVudExvY2FsT25seVJlamVjdGVkKSB7CisgIGF1dG8gY2FsbGVy
ID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgYXV0byBjYWxsZXJfZmlyc3RfdHJhbnNjZWl2
ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKGZpcnN0X3R5cGVfKTsKKyAgYXV0byBjYWxsZWUg
PSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVt
b3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFzTG9jYWwoKSkpOworCisg
IHN0ZDo6c3RyaW5nIGZpcnN0X21pZCA9ICpjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXItPm1pZCgp
OworICBBU1NFUlRfRVEoMXUsIGNhbGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKCkuc2l6ZSgp
KTsKKyAgYXV0byBjYWxsZWVfZmlyc3RfdHJhbnNjZWl2ZXIgPSBjYWxsZWUtPnBjKCktPkdldFRy
YW5zY2VpdmVycygpWzBdOworICBjYWxsZWVfZmlyc3RfdHJhbnNjZWl2ZXItPlN0b3AoKTsKKwor
ICAvLyBUaGUgYW5zd2VyIHdpbGwgaGF2ZSBhIHJlamVjdGVkIG09IHNlY3Rpb24uCisgIEFTU0VS
VF9UUlVFKAorICAgICAgY2FsbGVyLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZWUtPkNyZWF0
ZUFuc3dlckFuZFNldEFzTG9jYWwoKSkpOworCisgIC8vIFRoZSBvZmZlciBzaG91bGQgcmV1c2Ug
dGhlIHByZXZpb3VzIG1lZGlhIHNlY3Rpb24gYnV0IGFsbG9jYXRlIGEgbmV3IE1JRAorICAvLyBh
bmQgY2hhbmdlIHRoZSBtZWRpYSB0eXBlLgorICBhdXRvIGNhbGxlZV9zZWNvbmRfdHJhbnNjZWl2
ZXIgPSBjYWxsZWUtPkFkZFRyYW5zY2VpdmVyKHNlY29uZF90eXBlXyk7CisgIGF1dG8gb2ZmZXIg
PSBjYWxsZWUtPkNyZWF0ZU9mZmVyKCk7CisgIGNvbnN0IGF1dG8mIG9mZmVyX2NvbnRlbnRzID0g
b2ZmZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCk7CisgIEFTU0VSVF9FUSgxdSwgb2ZmZXJf
Y29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKG9mZmVyX2NvbnRlbnRzWzBdLnJlamVj
dGVkKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90eXBlXywgb2ZmZXJfY29udGVudHNbMF0ubWVkaWFf
ZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgc3RkOjpzdHJpbmcgc2Vjb25kX21pZCA9IG9mZmVy
X2NvbnRlbnRzWzBdLm5hbWU7CisgIEVYUEVDVF9ORShmaXJzdF9taWQsIHNlY29uZF9taWQpOwor
CisgIC8vIFNldHRpbmcgdGhlIGxvY2FsIG9mZmVyIHdpbGwgZGlzc29jaWF0ZSB0aGUgcHJldmlv
dXMgdHJhbnNjZWl2ZXIgYW5kIHNldAorICAvLyB0aGUgTUlEIGZvciB0aGUgbmV3IHRyYW5zY2Vp
dmVyLgorICBBU1NFUlRfVFJVRSgKKyAgICAgIGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihD
bG9uZVNlc3Npb25EZXNjcmlwdGlvbihvZmZlci5nZXQoKSkpKTsKKyAgRVhQRUNUX0VRKGFic2w6
Om51bGxvcHQsIGNhbGxlZV9maXJzdF90cmFuc2NlaXZlci0+bWlkKCkpOworICBFWFBFQ1RfRVEo
c2Vjb25kX21pZCwgY2FsbGVlX3NlY29uZF90cmFuc2NlaXZlci0+bWlkKCkpOworCisgIC8vIFNl
dHRpbmcgdGhlIHJlbW90ZSBvZmZlciB3aWxsIGRpc3NvY2lhdGUgdGhlIHByZXZpb3VzIHRyYW5z
Y2VpdmVyIGFuZAorICAvLyBjcmVhdGUgYSBuZXcgdHJhbnNjZWl2ZXIgZm9yIHRoZSBtZWRpYSBz
ZWN0aW9uLgorICBBU1NFUlRfVFJVRShjYWxsZXItPlNldFJlbW90ZURlc2NyaXB0aW9uKHN0ZDo6
bW92ZShvZmZlcikpKTsKKyAgYXV0byBjYWxsZXJfdHJhbnNjZWl2ZXJzID0gY2FsbGVyLT5wYygp
LT5HZXRUcmFuc2NlaXZlcnMoKTsKKyAgQVNTRVJUX0VRKDJ1LCBjYWxsZXJfdHJhbnNjZWl2ZXJz
LnNpemUoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpudWxsb3B0LCBjYWxsZXJfdHJhbnNjZWl2ZXJz
WzBdLT5taWQoKSk7CisgIEVYUEVDVF9FUShmaXJzdF90eXBlXywgY2FsbGVyX3RyYW5zY2VpdmVy
c1swXS0+bWVkaWFfdHlwZSgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF9taWQsIGNhbGxlcl90cmFu
c2NlaXZlcnNbMV0tPm1pZCgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90eXBlXywgY2FsbGVyX3Ry
YW5zY2VpdmVyc1sxXS0+bWVkaWFfdHlwZSgpKTsKKworICAvLyBUaGUgYW5zd2VyIHNob3VsZCBo
YXZlIG9ubHkgb25lIG1lZGlhIHNlY3Rpb24gZm9yIHRoZSBuZXcgdHJhbnNjZWl2ZXIuCisgIGF1
dG8gYW5zd2VyID0gY2FsbGVyLT5DcmVhdGVBbnN3ZXIoKTsKKyAgYXV0byBhbnN3ZXJfY29udGVu
dHMgPSBhbnN3ZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCk7CisgIEFTU0VSVF9FUSgxdSwg
YW5zd2VyX2NvbnRlbnRzLnNpemUoKSk7CisgIEVYUEVDVF9GQUxTRShhbnN3ZXJfY29udGVudHNb
MF0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoc2Vjb25kX21pZCwgYW5zd2VyX2NvbnRlbnRzWzBd
Lm5hbWUpOworICBFWFBFQ1RfRVEoc2Vjb25kX3R5cGVfLCBhbnN3ZXJfY29udGVudHNbMF0ubWVk
aWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKworICAvLyBTZXR0aW5nIHRoZSBsb2NhbCBhbnN3
ZXIgc2hvdWxkIHN1Y2NlZWQuCisgIEFTU0VSVF9UUlVFKAorICAgICAgY2FsbGVyLT5TZXRMb2Nh
bERlc2NyaXB0aW9uKENsb25lU2Vzc2lvbkRlc2NyaXB0aW9uKGFuc3dlci5nZXQoKSkpKTsKKwor
ICAvLyBTZXR0aW5nIHRoZSByZW1vdGUgYW5zd2VyIHNob3VsZCBzdWNjZWVkIGFuZCBub3QgY3Jl
YXRlIGFueSBuZXcKKyAgLy8gdHJhbnNjZWl2ZXJzLgorICBBU1NFUlRfVFJVRShjYWxsZWUtPlNl
dFJlbW90ZURlc2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7CisgIEFTU0VSVF9FUSgydSwg
Y2FsbGVlLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKS5zaXplKCkpOworICBBU1NFUlRfRVEoMnUs
IGNhbGxlci0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKCkuc2l6ZSgpKTsKK30KKworLy8gVGVzdCB0
aGF0IGEgbT0gc2VjdGlvbiBpcyAqbm90KiByZWN5Y2xlZCBpZiB0aGUgbWVkaWEgc2VjdGlvbiBp
cyBvbmx5CisvLyByZWplY3RlZCBpbiB0aGUgcGVuZGluZyBsb2NhbCBkZXNjcmlwdGlvbiBhbmQg
dGhlcmUgaXMgbm8gY3VycmVudCByZW1vdGUKKy8vIGRlc2NyaXB0aW9uLgorVEVTVF9QKFJlY3lj
bGVNZWRpYVNlY3Rpb25UZXN0LCBQZW5kaW5nTG9jYWxSZWplY3RlZEFuZE5vUmVtb3RlKSB7Cisg
IGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgYXV0byBjYWxsZXJfZmly
c3RfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKGZpcnN0X3R5cGVfKTsKKwor
ICBBU1NFUlRfVFJVRShjYWxsZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVP
ZmZlcigpKSk7CisKKyAgc3RkOjpzdHJpbmcgZmlyc3RfbWlkID0gKmNhbGxlcl9maXJzdF90cmFu
c2NlaXZlci0+bWlkKCk7CisgIGNhbGxlcl9maXJzdF90cmFuc2NlaXZlci0+U3RvcCgpOworCisg
IC8vIFRoZSByZW9mZmVyIHdpbGwgaGF2ZSBhIHJlamVjdGVkIG09IHNlY3Rpb24uCisgIEFTU0VS
VF9UUlVFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyKCkp
KTsKKworICBhdXRvIGNhbGxlcl9zZWNvbmRfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5z
Y2VpdmVyKHNlY29uZF90eXBlXyk7CisKKyAgLy8gVGhlIHJlb2ZmZXIgc2hvdWxkIG5vdCByZWN5
Y2xlIHRoZSBleGlzdGluZyBtPSBzZWN0aW9uIHNpbmNlIGl0IGlzIG5vdAorICAvLyByZWplY3Rl
ZCBpbiBlaXRoZXIgdGhlICpjdXJyZW50KiBsb2NhbCBvciAqY3VycmVudCogcmVtb3RlIGRlc2Ny
aXB0aW9uLgorICBhdXRvIHJlb2ZmZXIgPSBjYWxsZXItPkNyZWF0ZU9mZmVyKCk7CisgIGF1dG8g
cmVvZmZlcl9jb250ZW50cyA9IHJlb2ZmZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCk7Cisg
IEFTU0VSVF9FUSgydSwgcmVvZmZlcl9jb250ZW50cy5zaXplKCkpOworICBFWFBFQ1RfVFJVRShy
ZW9mZmVyX2NvbnRlbnRzWzBdLnJlamVjdGVkKTsKKyAgRVhQRUNUX0VRKGZpcnN0X3R5cGVfLCBy
ZW9mZmVyX2NvbnRlbnRzWzBdLm1lZGlhX2Rlc2NyaXB0aW9uKCktPnR5cGUoKSk7CisgIEVYUEVD
VF9FUShmaXJzdF9taWQsIHJlb2ZmZXJfY29udGVudHNbMF0ubmFtZSk7CisgIEVYUEVDVF9GQUxT
RShyZW9mZmVyX2NvbnRlbnRzWzFdLnJlamVjdGVkKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90eXBl
XywgcmVvZmZlcl9jb250ZW50c1sxXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworICBz
dGQ6OnN0cmluZyBzZWNvbmRfbWlkID0gcmVvZmZlcl9jb250ZW50c1sxXS5uYW1lOworICBFWFBF
Q1RfTkUoZmlyc3RfbWlkLCBzZWNvbmRfbWlkKTsKKworICBBU1NFUlRfVFJVRShjYWxsZXItPlNl
dExvY2FsRGVzY3JpcHRpb24oc3RkOjptb3ZlKHJlb2ZmZXIpKSk7CisKKyAgLy8gQm90aCBSdHBU
cmFuc2NlaXZlcnMgYXJlIGFzc29jaWF0ZWQuCisgIEVYUEVDVF9FUShmaXJzdF9taWQsIGNhbGxl
cl9maXJzdF90cmFuc2NlaXZlci0+bWlkKCkpOworICBFWFBFQ1RfRVEoc2Vjb25kX21pZCwgY2Fs
bGVyX3NlY29uZF90cmFuc2NlaXZlci0+bWlkKCkpOworfQorCisvLyBUZXN0IHRoYXQgYSBtPSBz
ZWN0aW9uIGlzICpub3QqIHJlY3ljbGVkIGlmIHRoZSBtZWRpYSBzZWN0aW9uIGlzIG9ubHkKKy8v
IHJlamVjdGVkIGluIHRoZSBwZW5kaW5nIGxvY2FsIGRlc2NyaXB0aW9uIGFuZCBub3QgcmVqZWN0
ZWQgaW4gdGhlIGN1cnJlbnQKKy8vIHJlbW90ZSBkZXNjcmlwdGlvbi4KK1RFU1RfUChSZWN5Y2xl
TWVkaWFTZWN0aW9uVGVzdCwgUGVuZGluZ0xvY2FsUmVqZWN0ZWRBbmROb3RSZWplY3RlZFJlbW90
ZSkgeworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGF1dG8gY2Fs
bGVyX2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVyLT5BZGRUcmFuc2NlaXZlcihmaXJzdF90eXBl
Xyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKworICBBU1NFUlRf
VFJVRShjYWxsZXItPkV4Y2hhbmdlT2ZmZXJBbnN3ZXJXaXRoKGNhbGxlZS5nZXQoKSkpOworCisg
IHN0ZDo6c3RyaW5nIGZpcnN0X21pZCA9ICpjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXItPm1pZCgp
OworICBjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXItPlN0b3AoKTsKKworICAvLyBUaGUgcmVvZmZl
ciB3aWxsIGhhdmUgYSByZWplY3RlZCBtPSBzZWN0aW9uLgorICBBU1NFUlRfVFJVRShjYWxsZXIt
PlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7CisKKyAgYXV0byBj
YWxsZXJfc2Vjb25kX3RyYW5zY2VpdmVyID0gY2FsbGVyLT5BZGRUcmFuc2NlaXZlcihzZWNvbmRf
dHlwZV8pOworCisgIC8vIFRoZSByZW9mZmVyIHNob3VsZCBub3QgcmVjeWNsZSB0aGUgZXhpc3Rp
bmcgbT0gc2VjdGlvbiBzaW5jZSBpdCBpcyBub3QKKyAgLy8gcmVqZWN0ZWQgaW4gZWl0aGVyIHRo
ZSAqY3VycmVudCogbG9jYWwgb3IgKmN1cnJlbnQqIHJlbW90ZSBkZXNjcmlwdGlvbi4KKyAgYXV0
byByZW9mZmVyID0gY2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBhdXRvIHJlb2ZmZXJfY29udGVu
dHMgPSByZW9mZmVyLT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygpOworICBBU1NFUlRfRVEoMnUs
IHJlb2ZmZXJfY29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUocmVvZmZlcl9jb250ZW50
c1swXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShmaXJzdF90eXBlXywgcmVvZmZlcl9jb250ZW50
c1swXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworICBFWFBFQ1RfRVEoZmlyc3RfbWlk
LCByZW9mZmVyX2NvbnRlbnRzWzBdLm5hbWUpOworICBFWFBFQ1RfRkFMU0UocmVvZmZlcl9jb250
ZW50c1sxXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShzZWNvbmRfdHlwZV8sIHJlb2ZmZXJfY29u
dGVudHNbMV0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgc3RkOjpzdHJpbmcgc2Vj
b25kX21pZCA9IHJlb2ZmZXJfY29udGVudHNbMV0ubmFtZTsKKyAgRVhQRUNUX05FKGZpcnN0X21p
ZCwgc2Vjb25kX21pZCk7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVyLT5TZXRMb2NhbERlc2NyaXB0
aW9uKHN0ZDo6bW92ZShyZW9mZmVyKSkpOworCisgIC8vIEJvdGggUnRwVHJhbnNjZWl2ZXJzIGFy
ZSBhc3NvY2lhdGVkLgorICBFWFBFQ1RfRVEoZmlyc3RfbWlkLCBjYWxsZXJfZmlyc3RfdHJhbnNj
ZWl2ZXItPm1pZCgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF9taWQsIGNhbGxlcl9zZWNvbmRfdHJh
bnNjZWl2ZXItPm1pZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IGFuIG09IHNlY3Rpb24gaXMgKm5v
dCogcmVjeWNsZWQgaWYgdGhlIG1lZGlhIHNlY3Rpb24gaXMgb25seQorLy8gcmVqZWN0ZWQgaW4g
dGhlIHBlbmRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uIGFuZCB0aGVyZSBpcyBubyBjdXJyZW50IGxv
Y2FsCisvLyBkZXNjcmlwdGlvbi4KK1RFU1RfUChSZWN5Y2xlTWVkaWFTZWN0aW9uVGVzdCwgUGVu
ZGluZ1JlbW90ZVJlamVjdGVkQW5kTm9Mb2NhbCkgeworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBl
ZXJDb25uZWN0aW9uKCk7CisgIGF1dG8gY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVy
LT5BZGRUcmFuc2NlaXZlcihmaXJzdF90eXBlXyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVl
ckNvbm5lY3Rpb24oKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0
aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKworICBBU1NFUlRfRVEo
MXUsIGNhbGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKCkuc2l6ZSgpKTsKKyAgYXV0byBjYWxs
ZWVfZmlyc3RfdHJhbnNjZWl2ZXIgPSBjYWxsZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpWzBd
OworICBzdGQ6OnN0cmluZyBmaXJzdF9taWQgPSAqY2FsbGVlX2ZpcnN0X3RyYW5zY2VpdmVyLT5t
aWQoKTsKKyAgY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyLT5TdG9wKCk7CisKKyAgLy8gVGhlIHJl
b2ZmZXIgd2lsbCBoYXZlIGEgcmVqZWN0ZWQgbT0gc2VjdGlvbi4KKyAgQVNTRVJUX1RSVUUoY2Fs
bGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2Nh
bCgpKSk7CisKKyAgYXV0byBjYWxsZWVfc2Vjb25kX3RyYW5zY2VpdmVyID0gY2FsbGVlLT5BZGRU
cmFuc2NlaXZlcihzZWNvbmRfdHlwZV8pOworCisgIC8vIFRoZSByZW9mZmVyIHNob3VsZCBub3Qg
cmVjeWNsZSB0aGUgZXhpc3RpbmcgbT0gc2VjdGlvbiBzaW5jZSBpdCBpcyBub3QKKyAgLy8gcmVq
ZWN0ZWQgaW4gZWl0aGVyIHRoZSAqY3VycmVudCogbG9jYWwgb3IgKmN1cnJlbnQqIHJlbW90ZSBk
ZXNjcmlwdGlvbi4KKyAgYXV0byByZW9mZmVyID0gY2FsbGVlLT5DcmVhdGVPZmZlcigpOworICBh
dXRvIHJlb2ZmZXJfY29udGVudHMgPSByZW9mZmVyLT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygp
OworICBBU1NFUlRfRVEoMnUsIHJlb2ZmZXJfY29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1RS
VUUocmVvZmZlcl9jb250ZW50c1swXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShmaXJzdF90eXBl
XywgcmVvZmZlcl9jb250ZW50c1swXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworICBF
WFBFQ1RfRVEoZmlyc3RfbWlkLCByZW9mZmVyX2NvbnRlbnRzWzBdLm5hbWUpOworICBFWFBFQ1Rf
RkFMU0UocmVvZmZlcl9jb250ZW50c1sxXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShzZWNvbmRf
dHlwZV8sIHJlb2ZmZXJfY29udGVudHNbMV0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsK
KyAgc3RkOjpzdHJpbmcgc2Vjb25kX21pZCA9IHJlb2ZmZXJfY29udGVudHNbMV0ubmFtZTsKKyAg
RVhQRUNUX05FKGZpcnN0X21pZCwgc2Vjb25kX21pZCk7CisKKyAgLy8gTm90ZTogQ2Fubm90IGFj
dHVhbGx5IHNldCB0aGUgcmVvZmZlciBzaW5jZSB0aGUgY2FsbGVlIGlzIGluIHRoZSBzaWduYWxp
bmcKKyAgLy8gc3RhdGUgJ2hhdmUtcmVtb3RlLW9mZmVyJy4KK30KKworLy8gVGVzdCB0aGF0IGFu
IG09IHNlY3Rpb24gaXMgKm5vdCogcmVjeWNsZWQgaWYgdGhlIG1lZGlhIHNlY3Rpb24gaXMgb25s
eQorLy8gcmVqZWN0ZWQgaW4gdGhlIHBlbmRpbmcgcmVtb3RlIGRlc2NyaXB0aW9uIGFuZCBub3Qg
cmVqZWN0ZWQgaW4gdGhlIGN1cnJlbnQKKy8vIGxvY2FsIGRlc2NyaXB0aW9uLgorVEVTVF9QKFJl
Y3ljbGVNZWRpYVNlY3Rpb25UZXN0LCBQZW5kaW5nUmVtb3RlUmVqZWN0ZWRBbmROb3RSZWplY3Rl
ZExvY2FsKSB7CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgYXV0
byBjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKGZpcnN0
X3R5cGVfKTsKKyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworCisgIEFT
U0VSVF9UUlVFKGNhbGxlci0+RXhjaGFuZ2VPZmZlckFuc3dlcldpdGgoY2FsbGVlLmdldCgpKSk7
CisKKyAgQVNTRVJUX0VRKDF1LCBjYWxsZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpLnNpemUo
KSk7CisgIGF1dG8gY2FsbGVlX2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVlLT5wYygpLT5HZXRU
cmFuc2NlaXZlcnMoKVswXTsKKyAgc3RkOjpzdHJpbmcgZmlyc3RfbWlkID0gKmNhbGxlZV9maXJz
dF90cmFuc2NlaXZlci0+bWlkKCk7CisgIGNhbGxlcl9maXJzdF90cmFuc2NlaXZlci0+U3RvcCgp
OworCisgIC8vIFRoZSByZW9mZmVyIHdpbGwgaGF2ZSBhIHJlamVjdGVkIG09IHNlY3Rpb24uCisg
IEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVP
ZmZlckFuZFNldEFzTG9jYWwoKSkpOworCisgIGF1dG8gY2FsbGVlX3NlY29uZF90cmFuc2NlaXZl
ciA9IGNhbGxlZS0+QWRkVHJhbnNjZWl2ZXIoc2Vjb25kX3R5cGVfKTsKKworICAvLyBUaGUgcmVv
ZmZlciBzaG91bGQgbm90IHJlY3ljbGUgdGhlIGV4aXN0aW5nIG09IHNlY3Rpb24gc2luY2UgaXQg
aXMgbm90CisgIC8vIHJlamVjdGVkIGluIGVpdGhlciB0aGUgKmN1cnJlbnQqIGxvY2FsIG9yICpj
dXJyZW50KiByZW1vdGUgZGVzY3JpcHRpb24uCisgIGF1dG8gcmVvZmZlciA9IGNhbGxlZS0+Q3Jl
YXRlT2ZmZXIoKTsKKyAgYXV0byByZW9mZmVyX2NvbnRlbnRzID0gcmVvZmZlci0+ZGVzY3JpcHRp
b24oKS0+Y29udGVudHMoKTsKKyAgQVNTRVJUX0VRKDJ1LCByZW9mZmVyX2NvbnRlbnRzLnNpemUo
KSk7CisgIEVYUEVDVF9UUlVFKHJlb2ZmZXJfY29udGVudHNbMF0ucmVqZWN0ZWQpOworICBFWFBF
Q1RfRVEoZmlyc3RfdHlwZV8sIHJlb2ZmZXJfY29udGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24o
KS0+dHlwZSgpKTsKKyAgRVhQRUNUX0VRKGZpcnN0X21pZCwgcmVvZmZlcl9jb250ZW50c1swXS5u
YW1lKTsKKyAgRVhQRUNUX0ZBTFNFKHJlb2ZmZXJfY29udGVudHNbMV0ucmVqZWN0ZWQpOworICBF
WFBFQ1RfRVEoc2Vjb25kX3R5cGVfLCByZW9mZmVyX2NvbnRlbnRzWzFdLm1lZGlhX2Rlc2NyaXB0
aW9uKCktPnR5cGUoKSk7CisgIHN0ZDo6c3RyaW5nIHNlY29uZF9taWQgPSByZW9mZmVyX2NvbnRl
bnRzWzFdLm5hbWU7CisgIEVYUEVDVF9ORShmaXJzdF9taWQsIHNlY29uZF9taWQpOworCisgIC8v
IE5vdGU6IENhbm5vdCBhY3R1YWxseSBzZXQgdGhlIHJlb2ZmZXIgc2luY2UgdGhlIGNhbGxlZSBp
cyBpbiB0aGUgc2lnbmFsaW5nCisgIC8vIHN0YXRlICdoYXZlLXJlbW90ZS1vZmZlcicuCit9CisK
IC8vIFRlc3QgYWxsIGNvbWJpbmF0aW9ucyBvZiBhdWRpbyBhbmQgdmlkZW8gYXMgdGhlIGZpcnN0
IGFuZCBzZWNvbmQgbWVkaWEgdHlwZQogLy8gZm9yIHRoZSBtZWRpYSBzZWN0aW9uLiBUaGlzIGlz
IG5lZWRlZCBmb3IgZnVsbCB0ZXN0IGNvdmVyYWdlIGJlY2F1c2UKIC8vIE1lZGlhU2Vzc2lvbiBo
YXMgc2VwYXJhdGUgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIGF1ZGlvIGFuZCB2aWRlbyBtZWRp
YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGE5NGU3NTQyNDk4MWNlNDdiN2JlODUyNzg3MTI1YjAwZTIyN2E0Y2UuLjE4ODI4
MDAzN2Y1OTAxMDYwNmQwOWQ1MzZmZTEwOTVkODJiY2Y1MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxOC0xMi0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVjeWNsaW5nIHRoZSBtIHNlY3Rpb24gc2hvdWxkIHdvcmsgaWYgaXQgd2FzIHJlamVjdGVk
IHJlbW90ZWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI2MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJydGMvbXNlY3Rpb24tcmVjeWNsaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEyLTEy
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
RnJlZVR5cGVdIFJlbW92ZSBIYXJmQnV6ekZhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRj
L21zZWN0aW9uLXJlY3ljbGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyOTg0NWNlOTI3
M2VkZjFmYmJlMzg4ZjliMGEzMWMyNTNkYWI4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIFJlY3ljbGUgbS1zZWN0aW9uIHdpdGggZGlmZmVyZW50IG1lZGlhIHR5cGUgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YzAzZTViM2YxNzU2NDM1M2Y2ZDMxOTIzZGZmMGFhODUwMWMzYjc0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2VicnRjL21zZWN0aW9uLXJlY3ljbGluZy5odG1sCkBAIC0wLDAgKzEs
NjggQEAKKzwhZG9jdHlwZSBodG1sPg0KKzxodG1sPg0KKyAgICA8aGVhZD4NCisgICAgICAgIDxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCisgICAgICAgIDx0aXRsZT5UcnlpbmcgdG8gcmVjeWNsZSBt
IHNlY3Rpb25zPC90aXRsZT4NCisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+DQorICAgIDwvaGVhZD4NCisgICAgPGJv
ZHk+DQorICAgICAgICA8c2NyaXB0Pg0KK3Byb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsNCisg
ICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZX0pOw0KKw0KKyAgICBjb25zdCBmaXJzdENvbm5l
Y3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe3NkcFNlbWFudGljczondW5pZmllZC1wbGFu
J30pOw0KKyAgICBjb25zdCBzZWNvbmRDb25uZWN0aW9uID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KHtzZHBTZW1hbnRpY3M6J3VuaWZpZWQtcGxhbid9KTsNCisNCisgICAgZmlyc3RDb25uZWN0aW9u
LmFkZFRyYWNrKHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBzdHJlYW0pOw0KKyAgICBmaXJz
dENvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7
DQorICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ZGlyZWN0aW9u
OiAicmVjdm9ubHkifSk7DQorICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigidmlk
ZW8iLCB7ZGlyZWN0aW9uOiAicmVjdm9ubHkifSk7DQorDQorICAgIGxldCBkZXNjID0gYXdhaXQg
Zmlyc3RDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKCk7DQorICAgIGF3YWl0IGZpcnN0Q29ubmVjdGlv
bi5zZXRMb2NhbERlc2NyaXB0aW9uKGRlc2MpOw0KKw0KKyAgICBhd2FpdCBzZWNvbmRDb25uZWN0
aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2MpOw0KKyAgICBjb25zdCBkZXNjMiA9IGF3YWl0
IHNlY29uZENvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKCk7DQorDQorICAgIGxldCBsaW5lcyA9IGRl
c2MyLnNkcC50cmltKCkuc3BsaXQoJ1xyXG4nKTsNCisNCisgICAgbGV0IGNvdW50ZXI7DQorICAg
IGZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBsaW5lcy5sZW5ndGg7ICsrY291bnRlcikgew0K
KyAgICAgICAgaWYgKGxpbmVzW2NvdW50ZXJdID09ICJhPW1pZDoyIikNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgfQ0KKyAgICBmb3IgKDtjb3VudGVyIDwgbGluZXMubGVuZ3RoOyArK2NvdW50
ZXIpIHsNCisgICAgICAgIGlmIChsaW5lc1tjb3VudGVyXS5zdGFydHNXaXRoKCJtPXZpZGVvICIp
KSB7DQorICAgICAgICAgICAgbGluZXNbY291bnRlcl0gPSAibT12aWRlbyAwIFJUUC9TQVZQRiAw
IjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IgKGNv
dW50ZXIgPSAwOyBjb3VudGVyIDwgbGluZXMubGVuZ3RoOyArK2NvdW50ZXIpIHsNCisgICAgICAg
IGlmIChsaW5lc1tjb3VudGVyXSA9PSAiYT1taWQ6MyIpDQorICAgICAgICAgICAgYnJlYWs7DQor
ICAgIH0NCisNCisgICAgZm9yICg7Y291bnRlciA8IGxpbmVzLmxlbmd0aDsgKytjb3VudGVyKSB7
DQorICAgICAgICBpZiAobGluZXNbY291bnRlcl0uc3RhcnRzV2l0aCgibT1hdWRpbyAiKSkNCisg
ICAgICAgICAgICBsaW5lc1tjb3VudGVyXSA9ICJtPWF1ZGlvIDAgUlRQL1NBVlBGIDAiOw0KKyAg
ICAgICAgZWxzZSBpZiAobGluZXNbY291bnRlcl0uc3RhcnRzV2l0aCgibT12aWRlbyAiKSkNCisg
ICAgICAgICAgICBsaW5lc1tjb3VudGVyXSA9ICJtPXZpZGVvIDAgUlRQL1NBVlBGIDAiOw0KKyAg
ICAgICAgZWxzZSBpZiAobGluZXNbY291bnRlcl0gPT09ICJhPWluYWN0aXZlIiB8fCBsaW5lc1tj
b3VudGVyXS5zdGFydHNXaXRoKCJhPW1pZCIpKSB7DQorICAgICAgICB9IGVsc2UNCisgICAgICAg
ICAgICBsaW5lc1tjb3VudGVyXSA9ICJYWFgiOw0KKyAgICB9DQorICAgIGxpbmVzID0gbGluZXMu
ZmlsdGVyKChsaW5lKSA9PiB7IHJldHVybiBsaW5lICE9ICJYWFgiOyB9KTsNCisNCisgICAgZGVz
YzIuc2RwID0gbGluZXMuam9pbignXHJcbicpICsgJ1xyXG4nOw0KKw0KKyAgICBhd2FpdCBmaXJz
dENvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzYzIpOw0KKw0KKyAgICBmaXJzdENv
bm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIik7DQorICAgIGZpcnN0Q29ubmVjdGlvbi5h
ZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsNCisNCisgICAgYXdhaXQgZmlyc3RDb25uZWN0aW9uLmNy
ZWF0ZU9mZmVyKCk7DQorfSwgIlJlY3ljbGUgbS1zZWN0aW9uIHdpdGggZGlmZmVyZW50IG1lZGlh
IHR5cGUiKTsNCisgICAgICAgIDwvc2NyaXB0Pg0KKyAgICA8L2JvZHk+DQorPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357183</attachid>
            <date>2018-12-12 15:59:42 -0800</date>
            <delta_ts>2018-12-12 17:13:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192636-20181212155945.patch</filename>
            <type>text/plain</type>
            <size>53060</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA0NjlmMzBmNWI4N2RhNzM4ZDcyYzlmMTRiZjJhNmI0YmZjYjYyZDljLi4zNWZh
NzZkOTM4OTY4YjM5NTNjYjExYWQzMTBhZDk4NjgwYWUwNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0xMi0xMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIHRoZSBtIHNlY3Rp
b24gc2hvdWxkIHdvcmsgaWYgaXQgd2FzIHJlamVjdGVkIHJlbW90ZWx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgQ2hhbmdlcyBtZXJnZWQgZnJvbSBodHRw
czovL3dlYnJ0Yy5nb29nbGVzb3VyY2UuY29tL3NyYy5naXQvKy81YzcyZTcxZTE0Y2ZhNzZhMmQx
YjA5NzlkNmI5MThhYmUxODdjMjA4CisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL21lZGlh
c2Vzc2lvbi5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oOgor
ICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjOgorICAg
ICAgICAqIFNvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uY2M6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjOgorCiAyMDE4LTEy
LTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
bGlid2VicnRjIHVwIHRvIDJmYjg5MGYwOGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYwppbmRleCA3
MjM5YWY4NmMzOTllN2JkYmU0ODZkOGIwNmJkYWNhNjlhNjEyYzBiLi4yNjNmMzY5M2RiNTdiOTVi
OTVjOWQxZTIzZTY4ZGIxNGMzZjlhOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjCkBAIC0x
OCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KICNpbmNsdWRlIDx1dGlsaXR5
PgogCisjaW5jbHVkZSAiYWJzbC9tZW1vcnkvbWVtb3J5LmgiCiAjaW5jbHVkZSAiYWJzbC9zdHJp
bmdzL21hdGNoLmgiCiAjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgogI2luY2x1ZGUg
ImFwaS9jcnlwdG9wYXJhbXMuaCIKQEAgLTI4OSwyMCArMjkwLDE1IEBAIHN0YXRpYyB2b2lkIEdl
bmVyYXRlU3NyY3MoY29uc3QgU3RyZWFtUGFyYW1zVmVjJiBwYXJhbXNfdmVjLAogfQogCiAvLyBG
aW5kcyBhbGwgU3RyZWFtUGFyYW1zIG9mIGFsbCBtZWRpYSB0eXBlcyBhbmQgYXR0YWNoIHRoZW0g
dG8gc3RyZWFtX3BhcmFtcy4KLXN0YXRpYyB2b2lkIEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY29u
c3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBzZGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyZWFtUGFyYW1zVmVjKiBzdHJlYW1fcGFyYW1zKSB7Ci0gIFJUQ19EQ0hFQ0so
c3RyZWFtX3BhcmFtcyk7Ci0gIGlmICghc2Rlc2MpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgZm9y
IChjb25zdCBDb250ZW50SW5mbyYgY29udGVudCA6IHNkZXNjLT5jb250ZW50cygpKSB7Ci0gICAg
aWYgKCFjb250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCkpIHsKLSAgICAgIGNvbnRpbnVlOwotICAg
IH0KLSAgICBmb3IgKGNvbnN0IFN0cmVhbVBhcmFtcyYgcGFyYW1zIDogY29udGVudC5tZWRpYV9k
ZXNjcmlwdGlvbigpLT5zdHJlYW1zKCkpIHsKLSAgICAgIHN0cmVhbV9wYXJhbXMtPnB1c2hfYmFj
ayhwYXJhbXMpOworc3RhdGljIFN0cmVhbVBhcmFtc1ZlYyBHZXRDdXJyZW50U3RyZWFtUGFyYW1z
KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4mIGFjdGl2ZV9sb2Nh
bF9jb250ZW50cykgeworICBTdHJlYW1QYXJhbXNWZWMgc3RyZWFtX3BhcmFtczsKKyAgZm9yIChj
b25zdCBDb250ZW50SW5mbyogY29udGVudCA6IGFjdGl2ZV9sb2NhbF9jb250ZW50cykgeworICAg
IGZvciAoY29uc3QgU3RyZWFtUGFyYW1zJiBwYXJhbXMgOiBjb250ZW50LT5tZWRpYV9kZXNjcmlw
dGlvbigpLT5zdHJlYW1zKCkpIHsKKyAgICAgIHN0cmVhbV9wYXJhbXMucHVzaF9iYWNrKHBhcmFt
cyk7CiAgICAgfQogICB9CisgIHJldHVybiBzdHJlYW1fcGFyYW1zOwogfQogCiAvLyBGaWx0ZXJz
IHRoZSBkYXRhIGNvZGVjcyBmb3IgdGhlIGRhdGEgY2hhbm5lbCB0eXBlLgpAQCAtNjQyLDYgKzYz
OCwyMyBAQCBzdGF0aWMgYm9vbCBVcGRhdGVDcnlwdG9QYXJhbXNGb3JCdW5kbGUoY29uc3QgQ29u
dGVudEdyb3VwJiBidW5kbGVfZ3JvdXAsCiAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgc3Rk
Ojp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiBHZXRBY3RpdmVDb250ZW50cygKKyAgICBjb25z
dCBTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLAorICAgIGNvbnN0IE1lZGlhU2Vzc2lv
bk9wdGlvbnMmIHNlc3Npb25fb3B0aW9ucykgeworICBzdGQ6OnZlY3Rvcjxjb25zdCBDb250ZW50
SW5mbyo+IGFjdGl2ZV9jb250ZW50czsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXNjcmlw
dGlvbi5jb250ZW50cygpLnNpemUoKTsgKytpKSB7CisgICAgUlRDX0RDSEVDS19MVChpLCBzZXNz
aW9uX29wdGlvbnMubWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5zaXplKCkpOworICAgIGNvbnN0
IENvbnRlbnRJbmZvJiBjb250ZW50ID0gZGVzY3JpcHRpb24uY29udGVudHMoKVtpXTsKKyAgICBj
b25zdCBNZWRpYURlc2NyaXB0aW9uT3B0aW9ucyYgbWVkaWFfb3B0aW9ucyA9CisgICAgICAgIHNl
c3Npb25fb3B0aW9ucy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zW2ldOworICAgIGlmICghY29u
dGVudC5yZWplY3RlZCAmJiAhbWVkaWFfb3B0aW9ucy5zdG9wcGVkICYmCisgICAgICAgIGNvbnRl
bnQubmFtZSA9PSBtZWRpYV9vcHRpb25zLm1pZCkgeworICAgICAgYWN0aXZlX2NvbnRlbnRzLnB1
c2hfYmFjaygmY29udGVudCk7CisgICAgfQorICB9CisgIHJldHVybiBhY3RpdmVfY29udGVudHM7
Cit9CisKIHRlbXBsYXRlIDxjbGFzcyBDPgogc3RhdGljIGJvb2wgQ29udGFpbnNSdHhDb2RlYyhj
b25zdCBzdGQ6OnZlY3RvcjxDPiYgY29kZWNzKSB7CiAgIGZvciAoY29uc3QgYXV0byYgY29kZWMg
OiBjb2RlY3MpIHsKQEAgLTEyNjUsMTcgKzEyNzgsMjggQEAgdm9pZCBNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3Rvcnk6OnNldF9hdWRpb19jb2RlY3MoCiBTZXNzaW9uRGVzY3JpcHRpb24qIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlT2ZmZXIoCiAgICAgY29uc3QgTWVk
aWFTZXNzaW9uT3B0aW9ucyYgc2Vzc2lvbl9vcHRpb25zLAogICAgIGNvbnN0IFNlc3Npb25EZXNj
cmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbikgY29uc3QgewotICBzdGQ6OnVuaXF1ZV9wdHI8
U2Vzc2lvbkRlc2NyaXB0aW9uPiBvZmZlcihuZXcgU2Vzc2lvbkRlc2NyaXB0aW9uKCkpOworICAv
LyBNdXN0IGhhdmUgb3B0aW9ucyBmb3IgZWFjaCBleGlzdGluZyBzZWN0aW9uLgorICBpZiAoY3Vy
cmVudF9kZXNjcmlwdGlvbikgeworICAgIFJUQ19EQ0hFQ0tfTEUoY3VycmVudF9kZXNjcmlwdGlv
bi0+Y29udGVudHMoKS5zaXplKCksCisgICAgICAgICAgICAgICAgICBzZXNzaW9uX29wdGlvbnMu
bWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5zaXplKCkpOworICB9CiAKICAgSWNlQ3JlZGVudGlh
bHNJdGVyYXRvciBpY2VfY3JlZGVudGlhbHMoCiAgICAgICBzZXNzaW9uX29wdGlvbnMucG9vbGVk
X2ljZV9jcmVkZW50aWFscyk7Ci0gIFN0cmVhbVBhcmFtc1ZlYyBjdXJyZW50X3N0cmVhbXM7Ci0g
IEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVudF9kZXNjcmlwdGlvbiwgJmN1cnJlbnRfc3Ry
ZWFtcyk7CisKKyAgc3RkOjp2ZWN0b3I8Y29uc3QgQ29udGVudEluZm8qPiBjdXJyZW50X2FjdGl2
ZV9jb250ZW50czsKKyAgaWYgKGN1cnJlbnRfZGVzY3JpcHRpb24pIHsKKyAgICBjdXJyZW50X2Fj
dGl2ZV9jb250ZW50cyA9CisgICAgICAgIEdldEFjdGl2ZUNvbnRlbnRzKCpjdXJyZW50X2Rlc2Ny
aXB0aW9uLCBzZXNzaW9uX29wdGlvbnMpOworICB9CisKKyAgU3RyZWFtUGFyYW1zVmVjIGN1cnJl
bnRfc3RyZWFtcyA9CisgICAgICBHZXRDdXJyZW50U3RyZWFtUGFyYW1zKGN1cnJlbnRfYWN0aXZl
X2NvbnRlbnRzKTsKIAogICBBdWRpb0NvZGVjcyBvZmZlcl9hdWRpb19jb2RlY3M7CiAgIFZpZGVv
Q29kZWNzIG9mZmVyX3ZpZGVvX2NvZGVjczsKICAgRGF0YUNvZGVjcyBvZmZlcl9kYXRhX2NvZGVj
czsKLSAgR2V0Q29kZWNzRm9yT2ZmZXIoY3VycmVudF9kZXNjcmlwdGlvbiwgJm9mZmVyX2F1ZGlv
X2NvZGVjcywKKyAgR2V0Q29kZWNzRm9yT2ZmZXIoY3VycmVudF9hY3RpdmVfY29udGVudHMsICZv
ZmZlcl9hdWRpb19jb2RlY3MsCiAgICAgICAgICAgICAgICAgICAgICZvZmZlcl92aWRlb19jb2Rl
Y3MsICZvZmZlcl9kYXRhX2NvZGVjcyk7CiAKICAgaWYgKCFzZXNzaW9uX29wdGlvbnMudmFkX2Vu
YWJsZWQpIHsKQEAgLTEyODcsMTQgKzEzMTEsMTAgQEAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBNZWRp
YVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZU9mZmVyKAogCiAgIFJ0cEhlYWRlckV4
dGVuc2lvbnMgYXVkaW9fcnRwX2V4dGVuc2lvbnM7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbnMgdmlk
ZW9fcnRwX2V4dGVuc2lvbnM7Ci0gIEdldFJ0cEhkckV4dHNUb09mZmVyKHNlc3Npb25fb3B0aW9u
cywgY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgR2V0UnRwSGRyRXh0c1RvT2ZmZXIoY3VycmVudF9h
Y3RpdmVfY29udGVudHMsIHNlc3Npb25fb3B0aW9ucy5pc191bmlmaWVkX3BsYW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICZhdWRpb19ydHBfZXh0ZW5zaW9ucywgJnZpZGVvX3J0cF9leHRlbnNp
b25zKTsKIAotICAvLyBNdXN0IGhhdmUgb3B0aW9ucyBmb3IgZWFjaCBleGlzdGluZyBzZWN0aW9u
LgotICBpZiAoY3VycmVudF9kZXNjcmlwdGlvbikgewotICAgIFJUQ19EQ0hFQ0soY3VycmVudF9k
ZXNjcmlwdGlvbi0+Y29udGVudHMoKS5zaXplKCkgPD0KLSAgICAgICAgICAgICAgIHNlc3Npb25f
b3B0aW9ucy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnNpemUoKSk7Ci0gIH0KKyAgYXV0byBv
ZmZlciA9IGFic2w6Om1ha2VfdW5pcXVlPFNlc3Npb25EZXNjcmlwdGlvbj4oKTsKIAogICAvLyBJ
dGVyYXRlIHRocm91Z2ggdGhlIG1lZGlhIGRlc2NyaXB0aW9uIG9wdGlvbnMsIG1hdGNoaW5nIHdp
dGggZXhpc3RpbmcgbWVkaWEKICAgLy8gZGVzY3JpcHRpb25zIGluIHxjdXJyZW50X2Rlc2NyaXB0
aW9ufC4KQEAgLTEzMDYsNyArMTMyNiw3IEBAIFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFTZXNz
aW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVPZmZlcigKICAgICAgICAgbXNlY3Rpb25faW5k
ZXggPCBjdXJyZW50X2Rlc2NyaXB0aW9uLT5jb250ZW50cygpLnNpemUoKSkgewogICAgICAgY3Vy
cmVudF9jb250ZW50ID0gJmN1cnJlbnRfZGVzY3JpcHRpb24tPmNvbnRlbnRzKClbbXNlY3Rpb25f
aW5kZXhdOwogICAgICAgLy8gTWVkaWEgdHlwZSBtdXN0IG1hdGNoIHVubGVzcyB0aGlzIG1lZGlh
IHNlY3Rpb24gaXMgYmVpbmcgcmVjeWNsZWQuCi0gICAgICBSVENfRENIRUNLKGN1cnJlbnRfY29u
dGVudC0+cmVqZWN0ZWQgfHwKKyAgICAgIFJUQ19EQ0hFQ0soY3VycmVudF9jb250ZW50LT5uYW1l
ICE9IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkIHx8CiAgICAgICAgICAgICAgICAgIElz
TWVkaWFDb250ZW50T2ZUeXBlKGN1cnJlbnRfY29udGVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy50eXBlKSk7CiAgICAg
fQpAQCAtMTM5MSwyNSArMTQxMSwyMSBAQCBTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhU2Vzc2lv
bkRlc2NyaXB0aW9uRmFjdG9yeTo6Q3JlYXRlQW5zd2VyKAogICAgIHJldHVybiBudWxscHRyOwog
ICB9CiAKKyAgLy8gTXVzdCBoYXZlIG9wdGlvbnMgZm9yIGV4YWN0bHkgYXMgbWFueSBzZWN0aW9u
cyBhcyBpbiB0aGUgb2ZmZXIuCisgIFJUQ19EQ0hFQ0tfRVEob2ZmZXItPmNvbnRlbnRzKCkuc2l6
ZSgpLAorICAgICAgICAgICAgICAgIHNlc3Npb25fb3B0aW9ucy5tZWRpYV9kZXNjcmlwdGlvbl9v
cHRpb25zLnNpemUoKSk7CisKICAgSWNlQ3JlZGVudGlhbHNJdGVyYXRvciBpY2VfY3JlZGVudGlh
bHMoCiAgICAgICBzZXNzaW9uX29wdGlvbnMucG9vbGVkX2ljZV9jcmVkZW50aWFscyk7CiAKLSAg
Ly8gVGhlIGFuc3dlciBjb250YWlucyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBjb2RlY3MgaW4g
dGhlIG9mZmVyIHdpdGggdGhlCi0gIC8vIGNvZGVjcyB3ZSBzdXBwb3J0LiBBcyBpbmRpY2F0ZWQg
YnkgWEVQLTAxNjcsIHdlIHJldGFpbiB0aGUgc2FtZSBwYXlsb2FkIGlkcwotICAvLyBmcm9tIHRo
ZSBvZmZlciBpbiB0aGUgYW5zd2VyLgotICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkRlc2NyaXB0
aW9uPiBhbnN3ZXIobmV3IFNlc3Npb25EZXNjcmlwdGlvbigpKTsKLQotICBTdHJlYW1QYXJhbXNW
ZWMgY3VycmVudF9zdHJlYW1zOwotICBHZXRDdXJyZW50U3RyZWFtUGFyYW1zKGN1cnJlbnRfZGVz
Y3JpcHRpb24sICZjdXJyZW50X3N0cmVhbXMpOwotCi0gIC8vIElmIHRoZSBvZmZlciBzdXBwb3J0
cyBCVU5ETEUsIGFuZCB3ZSB3YW50IHRvIHVzZSBpdCB0b28sIGNyZWF0ZSBhIEJVTkRMRQotICAv
LyBncm91cCBpbiB0aGUgYW5zd2VyIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNvbnRlbnQgbmFtZXMu
Ci0gIGNvbnN0IENvbnRlbnRHcm91cCogb2ZmZXJfYnVuZGxlID0gb2ZmZXItPkdldEdyb3VwQnlO
YW1lKEdST1VQX1RZUEVfQlVORExFKTsKLSAgQ29udGVudEdyb3VwIGFuc3dlcl9idW5kbGUoR1JP
VVBfVFlQRV9CVU5ETEUpOwotICAvLyBUcmFuc3BvcnQgaW5mbyBzaGFyZWQgYnkgdGhlIGJ1bmRs
ZSBncm91cC4KLSAgc3RkOjp1bmlxdWVfcHRyPFRyYW5zcG9ydEluZm8+IGJ1bmRsZV90cmFuc3Bv
cnQ7CisgIHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4gY3VycmVudF9hY3RpdmVfY29u
dGVudHM7CisgIGlmIChjdXJyZW50X2Rlc2NyaXB0aW9uKSB7CisgICAgY3VycmVudF9hY3RpdmVf
Y29udGVudHMgPQorICAgICAgICBHZXRBY3RpdmVDb250ZW50cygqY3VycmVudF9kZXNjcmlwdGlv
biwgc2Vzc2lvbl9vcHRpb25zKTsKKyAgfQogCi0gIGFuc3dlci0+c2V0X2V4dG1hcF9hbGxvd19t
aXhlZChvZmZlci0+ZXh0bWFwX2FsbG93X21peGVkKCkpOworICBTdHJlYW1QYXJhbXNWZWMgY3Vy
cmVudF9zdHJlYW1zID0KKyAgICAgIEdldEN1cnJlbnRTdHJlYW1QYXJhbXMoY3VycmVudF9hY3Rp
dmVfY29udGVudHMpOwogCiAgIC8vIEdldCBsaXN0IG9mIGFsbCBwb3NzaWJsZSBjb2RlY3MgdGhh
dCByZXNwZWN0cyBleGlzdGluZyBwYXlsb2FkIHR5cGUKICAgLy8gbWFwcGluZ3MgYW5kIHVzZXMg
YSBzaW5nbGUgcGF5bG9hZCB0eXBlIHNwYWNlLgpAQCAtMTQyMCw3ICsxNDM2LDcgQEAgU2Vzc2lv
bkRlc2NyaXB0aW9uKiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkNyZWF0ZUFuc3dl
cigKICAgQXVkaW9Db2RlY3MgYW5zd2VyX2F1ZGlvX2NvZGVjczsKICAgVmlkZW9Db2RlY3MgYW5z
d2VyX3ZpZGVvX2NvZGVjczsKICAgRGF0YUNvZGVjcyBhbnN3ZXJfZGF0YV9jb2RlY3M7Ci0gIEdl
dENvZGVjc0ZvckFuc3dlcihjdXJyZW50X2Rlc2NyaXB0aW9uLCBvZmZlciwgJmFuc3dlcl9hdWRp
b19jb2RlY3MsCisgIEdldENvZGVjc0ZvckFuc3dlcihjdXJyZW50X2FjdGl2ZV9jb250ZW50cywg
Km9mZmVyLCAmYW5zd2VyX2F1ZGlvX2NvZGVjcywKICAgICAgICAgICAgICAgICAgICAgICZhbnN3
ZXJfdmlkZW9fY29kZWNzLCAmYW5zd2VyX2RhdGFfY29kZWNzKTsKIAogICBpZiAoIXNlc3Npb25f
b3B0aW9ucy52YWRfZW5hYmxlZCkgewpAQCAtMTQzMCw5ICsxNDQ2LDE3IEBAIFNlc3Npb25EZXNj
cmlwdGlvbiogTWVkaWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVBbnN3ZXIoCiAg
IEZpbHRlckRhdGFDb2RlY3MoJmFuc3dlcl9kYXRhX2NvZGVjcywKICAgICAgICAgICAgICAgICAg
ICBzZXNzaW9uX29wdGlvbnMuZGF0YV9jaGFubmVsX3R5cGUgPT0gRENUX1NDVFApOwogCi0gIC8v
IE11c3QgaGF2ZSBvcHRpb25zIGZvciBleGFjdGx5IGFzIG1hbnkgc2VjdGlvbnMgYXMgaW4gdGhl
IG9mZmVyLgotICBSVENfRENIRUNLKG9mZmVyLT5jb250ZW50cygpLnNpemUoKSA9PQotICAgICAg
ICAgICAgIHNlc3Npb25fb3B0aW9ucy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnNpemUoKSk7
CisgIGF1dG8gYW5zd2VyID0gYWJzbDo6bWFrZV91bmlxdWU8U2Vzc2lvbkRlc2NyaXB0aW9uPigp
OworCisgIC8vIElmIHRoZSBvZmZlciBzdXBwb3J0cyBCVU5ETEUsIGFuZCB3ZSB3YW50IHRvIHVz
ZSBpdCB0b28sIGNyZWF0ZSBhIEJVTkRMRQorICAvLyBncm91cCBpbiB0aGUgYW5zd2VyIHdpdGgg
dGhlIGFwcHJvcHJpYXRlIGNvbnRlbnQgbmFtZXMuCisgIGNvbnN0IENvbnRlbnRHcm91cCogb2Zm
ZXJfYnVuZGxlID0gb2ZmZXItPkdldEdyb3VwQnlOYW1lKEdST1VQX1RZUEVfQlVORExFKTsKKyAg
Q29udGVudEdyb3VwIGFuc3dlcl9idW5kbGUoR1JPVVBfVFlQRV9CVU5ETEUpOworICAvLyBUcmFu
c3BvcnQgaW5mbyBzaGFyZWQgYnkgdGhlIGJ1bmRsZSBncm91cC4KKyAgc3RkOjp1bmlxdWVfcHRy
PFRyYW5zcG9ydEluZm8+IGJ1bmRsZV90cmFuc3BvcnQ7CisKKyAgYW5zd2VyLT5zZXRfZXh0bWFw
X2FsbG93X21peGVkKG9mZmVyLT5leHRtYXBfYWxsb3dfbWl4ZWQoKSk7CisKICAgLy8gSXRlcmF0
ZSB0aHJvdWdoIHRoZSBtZWRpYSBkZXNjcmlwdGlvbiBvcHRpb25zLCBtYXRjaGluZyB3aXRoIGV4
aXN0aW5nCiAgIC8vIG1lZGlhIGRlc2NyaXB0aW9ucyBpbiB8Y3VycmVudF9kZXNjcmlwdGlvbnwu
CiAgIHNpemVfdCBtc2VjdGlvbl9pbmRleCA9IDA7CkBAIC0xNTg5LDI0ICsxNjEzLDI0IEBAIGNv
bnN0IEF1ZGlvQ29kZWNzJiBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkdldEF1ZGlv
Q29kZWNzRm9yQW5zd2VyKAogICByZXR1cm4gYXVkaW9fc2VuZHJlY3ZfY29kZWNzXzsKIH0KIAot
dm9pZCBNZXJnZUNvZGVjc0Zyb21EZXNjcmlwdGlvbihjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24q
IGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0NvZGVj
cyogYXVkaW9fY29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0Nv
ZGVjcyogdmlkZW9fY29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRh
Q29kZWNzKiBkYXRhX2NvZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNl
ZFBheWxvYWRUeXBlcyogdXNlZF9wbHR5cGVzKSB7Ci0gIFJUQ19EQ0hFQ0soZGVzY3JpcHRpb24p
OwotICBmb3IgKGNvbnN0IENvbnRlbnRJbmZvJiBjb250ZW50IDogZGVzY3JpcHRpb24tPmNvbnRl
bnRzKCkpIHsKLSAgICBpZiAoSXNNZWRpYUNvbnRlbnRPZlR5cGUoJmNvbnRlbnQsIE1FRElBX1RZ
UEVfQVVESU8pKSB7Cit2b2lkIE1lcmdlQ29kZWNzRnJvbURlc2NyaXB0aW9uKAorICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4mIGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRz
LAorICAgIEF1ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3MsCisgICAgVmlkZW9Db2RlY3MqIHZpZGVv
X2NvZGVjcywKKyAgICBEYXRhQ29kZWNzKiBkYXRhX2NvZGVjcywKKyAgICBVc2VkUGF5bG9hZFR5
cGVzKiB1c2VkX3BsdHlwZXMpIHsKKyAgZm9yIChjb25zdCBDb250ZW50SW5mbyogY29udGVudCA6
IGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzKSB7CisgICAgaWYgKElzTWVkaWFDb250ZW50T2ZUeXBl
KGNvbnRlbnQsIE1FRElBX1RZUEVfQVVESU8pKSB7CiAgICAgICBjb25zdCBBdWRpb0NvbnRlbnRE
ZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24o
KS0+YXNfYXVkaW8oKTsKKyAgICAgICAgICBjb250ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigpLT5h
c19hdWRpbygpOwogICAgICAgTWVyZ2VDb2RlY3M8QXVkaW9Db2RlYz4oYXVkaW8tPmNvZGVjcygp
LCBhdWRpb19jb2RlY3MsIHVzZWRfcGx0eXBlcyk7Ci0gICAgfSBlbHNlIGlmIChJc01lZGlhQ29u
dGVudE9mVHlwZSgmY29udGVudCwgTUVESUFfVFlQRV9WSURFTykpIHsKKyAgICB9IGVsc2UgaWYg
KElzTWVkaWFDb250ZW50T2ZUeXBlKGNvbnRlbnQsIE1FRElBX1RZUEVfVklERU8pKSB7CiAgICAg
ICBjb25zdCBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmlkZW8gPQotICAgICAgICAgIGNvbnRl
bnQubWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlkZW8oKTsKKyAgICAgICAgICBjb250ZW50LT5t
ZWRpYV9kZXNjcmlwdGlvbigpLT5hc192aWRlbygpOwogICAgICAgTWVyZ2VDb2RlY3M8VmlkZW9D
b2RlYz4odmlkZW8tPmNvZGVjcygpLCB2aWRlb19jb2RlY3MsIHVzZWRfcGx0eXBlcyk7Ci0gICAg
fSBlbHNlIGlmIChJc01lZGlhQ29udGVudE9mVHlwZSgmY29udGVudCwgTUVESUFfVFlQRV9EQVRB
KSkgeworICAgIH0gZWxzZSBpZiAoSXNNZWRpYUNvbnRlbnRPZlR5cGUoY29udGVudCwgTUVESUFf
VFlQRV9EQVRBKSkgewogICAgICAgY29uc3QgRGF0YUNvbnRlbnREZXNjcmlwdGlvbiogZGF0YSA9
Ci0gICAgICAgICAgY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19kYXRhKCk7CisgICAg
ICAgICAgY29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfZGF0YSgpOwogICAgICAgTWVy
Z2VDb2RlY3M8RGF0YUNvZGVjPihkYXRhLT5jb2RlY3MoKSwgZGF0YV9jb2RlY3MsIHVzZWRfcGx0
eXBlcyk7CiAgICAgfQogICB9CkBAIC0xNjE5LDI0ICsxNjQzLDE4IEBAIHZvaWQgTWVyZ2VDb2Rl
Y3NGcm9tRGVzY3JpcHRpb24oY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbiwK
IC8vIDMuIEZvciBlYWNoIGluZGl2aWR1YWwgbWVkaWEgZGVzY3JpcHRpb24gKG09IHNlY3Rpb24p
LCBmaWx0ZXIgY29kZWNzIGJhc2VkCiAvLyAgICBvbiB0aGUgZGlyZWN0aW9uYWwgYXR0cmlidXRl
IChoYXBwZW5zIGluIGFub3RoZXIgbWV0aG9kKS4KIHZvaWQgTWVkaWFTZXNzaW9uRGVzY3JpcHRp
b25GYWN0b3J5OjpHZXRDb2RlY3NGb3JPZmZlcigKLSAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRp
b24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgQ29u
dGVudEluZm8qPiYgY3VycmVudF9hY3RpdmVfY29udGVudHMsCiAgICAgQXVkaW9Db2RlY3MqIGF1
ZGlvX2NvZGVjcywKICAgICBWaWRlb0NvZGVjcyogdmlkZW9fY29kZWNzLAogICAgIERhdGFDb2Rl
Y3MqIGRhdGFfY29kZWNzKSBjb25zdCB7Ci0gIFVzZWRQYXlsb2FkVHlwZXMgdXNlZF9wbHR5cGVz
OwotICBhdWRpb19jb2RlY3MtPmNsZWFyKCk7Ci0gIHZpZGVvX2NvZGVjcy0+Y2xlYXIoKTsKLSAg
ZGF0YV9jb2RlY3MtPmNsZWFyKCk7Ci0KICAgLy8gRmlyc3QgLSBnZXQgYWxsIGNvZGVjcyBmcm9t
IHRoZSBjdXJyZW50IGRlc2NyaXB0aW9uIGlmIHRoZSBtZWRpYSB0eXBlCiAgIC8vIGlzIHVzZWQu
IEFkZCB0aGVtIHRvIHx1c2VkX3BsdHlwZXN8IHNvIHRoZSBwYXlsb2FkIHR5cGUgaXMgbm90IHJl
dXNlZCBpZiBhCiAgIC8vIG5ldyBtZWRpYSB0eXBlIGlzIGFkZGVkLgotICBpZiAoY3VycmVudF9k
ZXNjcmlwdGlvbikgewotICAgIE1lcmdlQ29kZWNzRnJvbURlc2NyaXB0aW9uKGN1cnJlbnRfZGVz
Y3JpcHRpb24sIGF1ZGlvX2NvZGVjcywgdmlkZW9fY29kZWNzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFfY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKLSAgfQorICBVc2VkUGF5
bG9hZFR5cGVzIHVzZWRfcGx0eXBlczsKKyAgTWVyZ2VDb2RlY3NGcm9tRGVzY3JpcHRpb24oY3Vy
cmVudF9hY3RpdmVfY29udGVudHMsIGF1ZGlvX2NvZGVjcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW9fY29kZWNzLCBkYXRhX2NvZGVjcywgJnVzZWRfcGx0eXBlcyk7CiAKLSAg
Ly8gQWRkIG91ciBjb2RlY3MgdGhhdCBhcmUgbm90IGluIHxjdXJyZW50X2Rlc2NyaXB0aW9ufC4K
KyAgLy8gQWRkIG91ciBjb2RlY3MgdGhhdCBhcmUgbm90IGluIHRoZSBjdXJyZW50IGRlc2NyaXB0
aW9uLgogICBNZXJnZUNvZGVjczxBdWRpb0NvZGVjPihhbGxfYXVkaW9fY29kZWNzXywgYXVkaW9f
Y29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKICAgTWVyZ2VDb2RlY3M8VmlkZW9Db2RlYz4odmlkZW9f
Y29kZWNzXywgdmlkZW9fY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKICAgTWVyZ2VDb2RlY3M8RGF0
YUNvZGVjPihkYXRhX2NvZGVjc18sIGRhdGFfY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKQEAgLTE2
NTAsMjkgKzE2NjgsMjMgQEAgdm9pZCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6Okdl
dENvZGVjc0Zvck9mZmVyKAogLy8gNC4gRm9yIGVhY2ggaW5kaXZpZHVhbCBtZWRpYSBkZXNjcmlw
dGlvbiAobT0gc2VjdGlvbiksIGZpbHRlciBjb2RlY3MgYmFzZWQKIC8vICAgIG9uIHRoZSBkaXJl
Y3Rpb25hbCBhdHRyaWJ1dGUgKGhhcHBlbnMgaW4gYW5vdGhlciBtZXRob2QpLgogdm9pZCBNZWRp
YVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkdldENvZGVjc0ZvckFuc3dlcigKLSAgICBjb25z
dCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRfZGVzY3JpcHRpb24sCi0gICAgY29uc3QgU2Vz
c2lvbkRlc2NyaXB0aW9uKiByZW1vdGVfb2ZmZXIsCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29u
c3QgQ29udGVudEluZm8qPiYgY3VycmVudF9hY3RpdmVfY29udGVudHMsCisgICAgY29uc3QgU2Vz
c2lvbkRlc2NyaXB0aW9uJiByZW1vdGVfb2ZmZXIsCiAgICAgQXVkaW9Db2RlY3MqIGF1ZGlvX2Nv
ZGVjcywKICAgICBWaWRlb0NvZGVjcyogdmlkZW9fY29kZWNzLAogICAgIERhdGFDb2RlY3MqIGRh
dGFfY29kZWNzKSBjb25zdCB7Ci0gIFVzZWRQYXlsb2FkVHlwZXMgdXNlZF9wbHR5cGVzOwotICBh
dWRpb19jb2RlY3MtPmNsZWFyKCk7Ci0gIHZpZGVvX2NvZGVjcy0+Y2xlYXIoKTsKLSAgZGF0YV9j
b2RlY3MtPmNsZWFyKCk7Ci0KICAgLy8gRmlyc3QgLSBnZXQgYWxsIGNvZGVjcyBmcm9tIHRoZSBj
dXJyZW50IGRlc2NyaXB0aW9uIGlmIHRoZSBtZWRpYSB0eXBlCiAgIC8vIGlzIHVzZWQuIEFkZCB0
aGVtIHRvIHx1c2VkX3BsdHlwZXN8IHNvIHRoZSBwYXlsb2FkIHR5cGUgaXMgbm90IHJldXNlZCBp
ZiBhCiAgIC8vIG5ldyBtZWRpYSB0eXBlIGlzIGFkZGVkLgotICBpZiAoY3VycmVudF9kZXNjcmlw
dGlvbikgewotICAgIE1lcmdlQ29kZWNzRnJvbURlc2NyaXB0aW9uKGN1cnJlbnRfZGVzY3JpcHRp
b24sIGF1ZGlvX2NvZGVjcywgdmlkZW9fY29kZWNzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFfY29kZWNzLCAmdXNlZF9wbHR5cGVzKTsKLSAgfQorICBVc2VkUGF5bG9hZFR5
cGVzIHVzZWRfcGx0eXBlczsKKyAgTWVyZ2VDb2RlY3NGcm9tRGVzY3JpcHRpb24oY3VycmVudF9h
Y3RpdmVfY29udGVudHMsIGF1ZGlvX2NvZGVjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmlkZW9fY29kZWNzLCBkYXRhX2NvZGVjcywgJnVzZWRfcGx0eXBlcyk7CiAKICAgLy8gU2Vj
b25kIC0gZmlsdGVyIG91dCBjb2RlY3MgdGhhdCB3ZSBkb24ndCBzdXBwb3J0IGF0IGFsbCBhbmQg
c2hvdWxkIGlnbm9yZS4KICAgQXVkaW9Db2RlY3MgZmlsdGVyZWRfb2ZmZXJlZF9hdWRpb19jb2Rl
Y3M7CiAgIFZpZGVvQ29kZWNzIGZpbHRlcmVkX29mZmVyZWRfdmlkZW9fY29kZWNzOwogICBEYXRh
Q29kZWNzIGZpbHRlcmVkX29mZmVyZWRfZGF0YV9jb2RlY3M7Ci0gIGZvciAoY29uc3QgQ29udGVu
dEluZm8mIGNvbnRlbnQgOiByZW1vdGVfb2ZmZXItPmNvbnRlbnRzKCkpIHsKKyAgZm9yIChjb25z
dCBDb250ZW50SW5mbyYgY29udGVudCA6IHJlbW90ZV9vZmZlci5jb250ZW50cygpKSB7CiAgICAg
aWYgKElzTWVkaWFDb250ZW50T2ZUeXBlKCZjb250ZW50LCBNRURJQV9UWVBFX0FVRElPKSkgewog
ICAgICAgY29uc3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGF1ZGlvID0KICAgICAgICAgICBj
b250ZW50Lm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CkBAIC0xNzEyLDcgKzE3MjQs
NyBAQCB2b2lkIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6R2V0Q29kZWNzRm9yQW5z
d2VyKAogICAgIH0KICAgfQogCi0gIC8vIEFkZCBjb2RlY3MgdGhhdCBhcmUgbm90IGluIHxjdXJy
ZW50X2Rlc2NyaXB0aW9ufCBidXQgd2VyZSBpbgorICAvLyBBZGQgY29kZWNzIHRoYXQgYXJlIG5v
dCBpbiB0aGUgY3VycmVudCBkZXNjcmlwdGlvbiBidXQgd2VyZSBpbgogICAvLyB8cmVtb3RlX29m
ZmVyfC4KICAgTWVyZ2VDb2RlY3M8QXVkaW9Db2RlYz4oZmlsdGVyZWRfb2ZmZXJlZF9hdWRpb19j
b2RlY3MsIGF1ZGlvX2NvZGVjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZWRfcGx0
eXBlcyk7CkBAIC0xNzIyLDkgKzE3MzQsMTAgQEAgdm9pZCBNZWRpYVNlc3Npb25EZXNjcmlwdGlv
bkZhY3Rvcnk6OkdldENvZGVjc0ZvckFuc3dlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAm
dXNlZF9wbHR5cGVzKTsKIH0KIAorLy8gVE9ETyhzdGV2ZWFudG9uKTogUmVwbGFjZSB8aXNfdW5p
ZmllZF9wbGFufCBmbGFnIHdpdGggYSBtZW1iZXIgdmFyaWFibGUuCiB2b2lkIE1lZGlhU2Vzc2lv
bkRlc2NyaXB0aW9uRmFjdG9yeTo6R2V0UnRwSGRyRXh0c1RvT2ZmZXIoCi0gICAgY29uc3QgTWVk
aWFTZXNzaW9uT3B0aW9ucyYgc2Vzc2lvbl9vcHRpb25zLAotICAgIGNvbnN0IFNlc3Npb25EZXNj
cmlwdGlvbiogY3VycmVudF9kZXNjcmlwdGlvbiwKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25z
dCBDb250ZW50SW5mbyo+JiBjdXJyZW50X2FjdGl2ZV9jb250ZW50cywKKyAgICBib29sIGlzX3Vu
aWZpZWRfcGxhbiwKICAgICBSdHBIZWFkZXJFeHRlbnNpb25zKiBvZmZlcl9hdWRpb19leHRlbnNp
b25zLAogICAgIFJ0cEhlYWRlckV4dGVuc2lvbnMqIG9mZmVyX3ZpZGVvX2V4dGVuc2lvbnMpIGNv
bnN0IHsKICAgLy8gQWxsIGhlYWRlciBleHRlbnNpb25zIGFsbG9jYXRlZCBmcm9tIHRoZSBzYW1l
IHJhbmdlIHRvIGF2b2lkIHBvdGVudGlhbApAQCAtMTczMiw0MyArMTc0NSw0MCBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeTo6R2V0UnRwSGRyRXh0c1RvT2ZmZXIoCiAgIFVz
ZWRSdHBIZWFkZXJFeHRlbnNpb25JZHMgdXNlZF9pZHM7CiAgIFJ0cEhlYWRlckV4dGVuc2lvbnMg
YWxsX3JlZ3VsYXJfZXh0ZW5zaW9uczsKICAgUnRwSGVhZGVyRXh0ZW5zaW9ucyBhbGxfZW5jcnlw
dGVkX2V4dGVuc2lvbnM7Ci0gIG9mZmVyX2F1ZGlvX2V4dGVuc2lvbnMtPmNsZWFyKCk7Ci0gIG9m
ZmVyX3ZpZGVvX2V4dGVuc2lvbnMtPmNsZWFyKCk7CiAKICAgLy8gRmlyc3QgLSBnZXQgYWxsIGV4
dGVuc2lvbnMgZnJvbSB0aGUgY3VycmVudCBkZXNjcmlwdGlvbiBpZiB0aGUgbWVkaWEgdHlwZQog
ICAvLyBpcyB1c2VkLgogICAvLyBBZGQgdGhlbSB0byB8dXNlZF9pZHN8IHNvIHRoZSBsb2NhbCBp
ZHMgYXJlIG5vdCByZXVzZWQgaWYgYSBuZXcgbWVkaWEKICAgLy8gdHlwZSBpcyBhZGRlZC4KLSAg
aWYgKGN1cnJlbnRfZGVzY3JpcHRpb24pIHsKLSAgICBmb3IgKGNvbnN0IENvbnRlbnRJbmZvJiBj
b250ZW50IDogY3VycmVudF9kZXNjcmlwdGlvbi0+Y29udGVudHMoKSkgewotICAgICAgaWYgKElz
TWVkaWFDb250ZW50T2ZUeXBlKCZjb250ZW50LCBNRURJQV9UWVBFX0FVRElPKSkgewotICAgICAg
ICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgICAgICAgY29u
dGVudC5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc19hdWRpbygpOwotICAgICAgICBNZXJnZVJ0cEhk
ckV4dHMoYXVkaW8tPnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLCBvZmZlcl9hdWRpb19leHRlbnNp
b25zLAotICAgICAgICAgICAgICAgICAgICAgICAgJmFsbF9yZWd1bGFyX2V4dGVuc2lvbnMsICZh
bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdXNlZF9p
ZHMpOwotICAgICAgfSBlbHNlIGlmIChJc01lZGlhQ29udGVudE9mVHlwZSgmY29udGVudCwgTUVE
SUFfVFlQRV9WSURFTykpIHsKLSAgICAgICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24q
IHZpZGVvID0KLSAgICAgICAgICAgIGNvbnRlbnQubWVkaWFfZGVzY3JpcHRpb24oKS0+YXNfdmlk
ZW8oKTsKLSAgICAgICAgTWVyZ2VSdHBIZHJFeHRzKHZpZGVvLT5ydHBfaGVhZGVyX2V4dGVuc2lv
bnMoKSwgb2ZmZXJfdmlkZW9fZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICZh
bGxfcmVndWxhcl9leHRlbnNpb25zLCAmYWxsX2VuY3J5cHRlZF9leHRlbnNpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgJnVzZWRfaWRzKTsKLSAgICAgIH0KKyAgZm9yIChjb25zdCBDb250
ZW50SW5mbyogY29udGVudCA6IGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzKSB7CisgICAgaWYgKElz
TWVkaWFDb250ZW50T2ZUeXBlKGNvbnRlbnQsIE1FRElBX1RZUEVfQVVESU8pKSB7CisgICAgICBj
b25zdCBBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8gPQorICAgICAgICAgIGNvbnRlbnQt
Pm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CisgICAgICBNZXJnZVJ0cEhkckV4dHMo
YXVkaW8tPnJ0cF9oZWFkZXJfZXh0ZW5zaW9ucygpLCBvZmZlcl9hdWRpb19leHRlbnNpb25zLAor
ICAgICAgICAgICAgICAgICAgICAgICZhbGxfcmVndWxhcl9leHRlbnNpb25zLCAmYWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICZ1c2VkX2lkcyk7CisgICAg
fSBlbHNlIGlmIChJc01lZGlhQ29udGVudE9mVHlwZShjb250ZW50LCBNRURJQV9UWVBFX1ZJREVP
KSkgeworICAgICAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZpZGVvID0KKyAgICAg
ICAgICBjb250ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigpLT5hc192aWRlbygpOworICAgICAgTWVy
Z2VSdHBIZHJFeHRzKHZpZGVvLT5ydHBfaGVhZGVyX2V4dGVuc2lvbnMoKSwgb2ZmZXJfdmlkZW9f
ZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAmYWxsX3JlZ3VsYXJfZXh0ZW5zaW9u
cywgJmFsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAmdXNl
ZF9pZHMpOwogICAgIH0KICAgfQogCi0gIC8vIEFkZCBvdXIgZGVmYXVsdCBSVFAgaGVhZGVyIGV4
dGVuc2lvbnMgdGhhdCBhcmUgbm90IGluCi0gIC8vIHxjdXJyZW50X2Rlc2NyaXB0aW9ufC4KLSAg
TWVyZ2VSdHBIZHJFeHRzKGF1ZGlvX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhzZXNzaW9uX29wdGlv
bnMuaXNfdW5pZmllZF9wbGFuKSwKKyAgLy8gQWRkIG91ciBkZWZhdWx0IFJUUCBoZWFkZXIgZXh0
ZW5zaW9ucyB0aGF0IGFyZSBub3QgaW4gdGhlIGN1cnJlbnQKKyAgLy8gZGVzY3JpcHRpb24uCisg
IE1lcmdlUnRwSGRyRXh0cyhhdWRpb19ydHBfaGVhZGVyX2V4dGVuc2lvbnMoaXNfdW5pZmllZF9w
bGFuKSwKICAgICAgICAgICAgICAgICAgIG9mZmVyX2F1ZGlvX2V4dGVuc2lvbnMsICZhbGxfcmVn
dWxhcl9leHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgJmFsbF9lbmNyeXB0ZWRfZXh0ZW5z
aW9ucywgJnVzZWRfaWRzKTsKLSAgTWVyZ2VSdHBIZHJFeHRzKHZpZGVvX3J0cF9oZWFkZXJfZXh0
ZW5zaW9ucyhzZXNzaW9uX29wdGlvbnMuaXNfdW5pZmllZF9wbGFuKSwKKyAgTWVyZ2VSdHBIZHJF
eHRzKHZpZGVvX3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhpc191bmlmaWVkX3BsYW4pLAogICAgICAg
ICAgICAgICAgICAgb2ZmZXJfdmlkZW9fZXh0ZW5zaW9ucywgJmFsbF9yZWd1bGFyX2V4dGVuc2lv
bnMsCiAgICAgICAgICAgICAgICAgICAmYWxsX2VuY3J5cHRlZF9leHRlbnNpb25zLCAmdXNlZF9p
ZHMpOwogCiAgIC8vIFRPRE8oamJhdWNoKTogU3VwcG9ydCBhZGRpbmcgZW5jcnlwdGVkIGhlYWRl
ciBleHRlbnNpb25zIHRvIGV4aXN0aW5nCiAgIC8vIHNlc3Npb25zLgotICBpZiAoZW5hYmxlX2Vu
Y3J5cHRlZF9ydHBfaGVhZGVyX2V4dGVuc2lvbnNfICYmICFjdXJyZW50X2Rlc2NyaXB0aW9uKSB7
CisgIGlmIChlbmFibGVfZW5jcnlwdGVkX3J0cF9oZWFkZXJfZXh0ZW5zaW9uc18gJiYKKyAgICAg
IGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzLmVtcHR5KCkpIHsKICAgICBBZGRFbmNyeXB0ZWRWZXJz
aW9uc09mSGRyRXh0cyhvZmZlcl9hdWRpb19leHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZhbGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMsICZ1c2VkX2lkcyk7CiAg
ICAgQWRkRW5jcnlwdGVkVmVyc2lvbnNPZkhkckV4dHMob2ZmZXJfdmlkZW9fZXh0ZW5zaW9ucywK
QEAgLTE4NTgsOCArMTg2OCwxMCBAQCBib29sIE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9y
eTo6QWRkQXVkaW9Db250ZW50Rm9yT2ZmZXIoCiAgICAgICBHZXRBdWRpb0NvZGVjc0Zvck9mZmVy
KG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMuZGlyZWN0aW9uKTsKIAogICBBdWRpb0NvZGVjcyBm
aWx0ZXJlZF9jb2RlY3M7Ci0gIC8vIEFkZCB0aGUgY29kZWNzIGZyb20gY3VycmVudCBjb250ZW50
IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGJlaW5nIHJlY3ljbGVkLgotICBpZiAoY3VycmVudF9j
b250ZW50ICYmICFjdXJyZW50X2NvbnRlbnQtPnJlamVjdGVkKSB7CisgIC8vIEFkZCB0aGUgY29k
ZWNzIGZyb20gY3VycmVudCBjb250ZW50IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IHJlamVjdGVk
IG5vcgorICAvLyByZWN5Y2xlZC4KKyAgaWYgKGN1cnJlbnRfY29udGVudCAmJiAhY3VycmVudF9j
b250ZW50LT5yZWplY3RlZCAmJgorICAgICAgY3VycmVudF9jb250ZW50LT5uYW1lID09IG1lZGlh
X2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkKSB7CiAgICAgUlRDX0NIRUNLKElzTWVkaWFDb250ZW50
T2ZUeXBlKGN1cnJlbnRfY29udGVudCwgTUVESUFfVFlQRV9BVURJTykpOwogICAgIGNvbnN0IEF1
ZGlvQ29udGVudERlc2NyaXB0aW9uKiBhY2QgPQogICAgICAgICBjdXJyZW50X2NvbnRlbnQtPm1l
ZGlhX2Rlc2NyaXB0aW9uKCktPmFzX2F1ZGlvKCk7CkBAIC0xOTM0LDggKzE5NDYsMTAgQEAgYm9v
bCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFZpZGVvQ29udGVudEZvck9mZmVy
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcnlwdG9fc3VpdGVz
KTsKIAogICBWaWRlb0NvZGVjcyBmaWx0ZXJlZF9jb2RlY3M7Ci0gIC8vIEFkZCB0aGUgY29kZWNz
IGZyb20gY3VycmVudCBjb250ZW50IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGJlaW5nIHJlY3lj
bGVkLgotICBpZiAoY3VycmVudF9jb250ZW50ICYmICFjdXJyZW50X2NvbnRlbnQtPnJlamVjdGVk
KSB7CisgIC8vIEFkZCB0aGUgY29kZWNzIGZyb20gY3VycmVudCBjb250ZW50IGlmIGl0IGV4aXN0
cyBhbmQgaXMgbm90IHJlamVjdGVkIG5vcgorICAvLyByZWN5Y2xlZC4KKyAgaWYgKGN1cnJlbnRf
Y29udGVudCAmJiAhY3VycmVudF9jb250ZW50LT5yZWplY3RlZCAmJgorICAgICAgY3VycmVudF9j
b250ZW50LT5uYW1lID09IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkKSB7CiAgICAgUlRD
X0NIRUNLKElzTWVkaWFDb250ZW50T2ZUeXBlKGN1cnJlbnRfY29udGVudCwgTUVESUFfVFlQRV9W
SURFTykpOwogICAgIGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB2Y2QgPQogICAgICAg
ICBjdXJyZW50X2NvbnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CkBAIC0y
MDk3LDggKzIxMTEsMTAgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFk
ZEF1ZGlvQ29udGVudEZvckFuc3dlcigKICAgICAgIEdldEF1ZGlvQ29kZWNzRm9yQW5zd2VyKG9m
ZmVyX3J0ZCwgYW5zd2VyX3J0ZCk7CiAKICAgQXVkaW9Db2RlY3MgZmlsdGVyZWRfY29kZWNzOwot
ICAvLyBBZGQgdGhlIGNvZGVjcyBmcm9tIGN1cnJlbnQgY29udGVudCBpZiBpdCBleGlzdHMgYW5k
IGlzIG5vdCBiZWluZyByZWN5Y2xlZC4KLSAgaWYgKGN1cnJlbnRfY29udGVudCAmJiAhY3VycmVu
dF9jb250ZW50LT5yZWplY3RlZCkgeworICAvLyBBZGQgdGhlIGNvZGVjcyBmcm9tIGN1cnJlbnQg
Y29udGVudCBpZiBpdCBleGlzdHMgYW5kIGlzIG5vdCByZWplY3RlZCBub3IKKyAgLy8gcmVjeWNs
ZWQuCisgIGlmIChjdXJyZW50X2NvbnRlbnQgJiYgIWN1cnJlbnRfY29udGVudC0+cmVqZWN0ZWQg
JiYKKyAgICAgIGN1cnJlbnRfY29udGVudC0+bmFtZSA9PSBtZWRpYV9kZXNjcmlwdGlvbl9vcHRp
b25zLm1pZCkgewogICAgIFJUQ19DSEVDSyhJc01lZGlhQ29udGVudE9mVHlwZShjdXJyZW50X2Nv
bnRlbnQsIE1FRElBX1RZUEVfQVVESU8pKTsKICAgICBjb25zdCBBdWRpb0NvbnRlbnREZXNjcmlw
dGlvbiogYWNkID0KICAgICAgICAgY3VycmVudF9jb250ZW50LT5tZWRpYV9kZXNjcmlwdGlvbigp
LT5hc19hdWRpbygpOwpAQCAtMjE4Myw4ICsyMTk5LDEwIEBAIGJvb2wgTWVkaWFTZXNzaW9uRGVz
Y3JpcHRpb25GYWN0b3J5OjpBZGRWaWRlb0NvbnRlbnRGb3JBbnN3ZXIoCiAgIH0KIAogICBWaWRl
b0NvZGVjcyBmaWx0ZXJlZF9jb2RlY3M7Ci0gIC8vIEFkZCB0aGUgY29kZWNzIGZyb20gY3VycmVu
dCBjb250ZW50IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90IGJlaW5nIHJlY3ljbGVkLgotICBpZiAo
Y3VycmVudF9jb250ZW50ICYmICFjdXJyZW50X2NvbnRlbnQtPnJlamVjdGVkKSB7CisgIC8vIEFk
ZCB0aGUgY29kZWNzIGZyb20gY3VycmVudCBjb250ZW50IGlmIGl0IGV4aXN0cyBhbmQgaXMgbm90
IHJlamVjdGVkIG5vcgorICAvLyByZWN5Y2xlZC4KKyAgaWYgKGN1cnJlbnRfY29udGVudCAmJiAh
Y3VycmVudF9jb250ZW50LT5yZWplY3RlZCAmJgorICAgICAgY3VycmVudF9jb250ZW50LT5uYW1l
ID09IG1lZGlhX2Rlc2NyaXB0aW9uX29wdGlvbnMubWlkKSB7CiAgICAgUlRDX0NIRUNLKElzTWVk
aWFDb250ZW50T2ZUeXBlKGN1cnJlbnRfY29udGVudCwgTUVESUFfVFlQRV9WSURFTykpOwogICAg
IGNvbnN0IFZpZGVvQ29udGVudERlc2NyaXB0aW9uKiB2Y2QgPQogICAgICAgICBjdXJyZW50X2Nv
bnRlbnQtPm1lZGlhX2Rlc2NyaXB0aW9uKCktPmFzX3ZpZGVvKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lv
bi5oCmluZGV4IDU5MDQ2MDVmMTBhNGRhMjVmYmQ3Y2RjOTVjZmI5MGY5NDk5MTQ2MzAuLjk0OTVi
ZGMyOTNjNDkwNDI1YTc2NDgyYjNjODdlOTdkMTAxZjQ1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lv
bi5oCkBAIC0xNzMsMTkgKzE3MywyMiBAQCBjbGFzcyBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZh
Y3RvcnkgewogICBjb25zdCBBdWRpb0NvZGVjcyYgR2V0QXVkaW9Db2RlY3NGb3JBbnN3ZXIoCiAg
ICAgICBjb25zdCB3ZWJydGM6OlJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uJiBvZmZlciwKICAgICAg
IGNvbnN0IHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24mIGFuc3dlcikgY29uc3Q7Ci0g
IHZvaWQgR2V0Q29kZWNzRm9yT2ZmZXIoY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50
X2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvQ29kZWNzKiBhdWRp
b19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9Db2RlY3MqIHZpZGVvX2Nv
ZGVjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhQ29kZWNzKiBkYXRhX2NvZGVjcykg
Y29uc3Q7Ci0gIHZvaWQgR2V0Q29kZWNzRm9yQW5zd2VyKGNvbnN0IFNlc3Npb25EZXNjcmlwdGlv
biogY3VycmVudF9kZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U2Vzc2lvbkRlc2NyaXB0aW9uKiByZW1vdGVfb2ZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEF1ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IFZpZGVvQ29kZWNzKiB2aWRlb19jb2RlY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERh
dGFDb2RlY3MqIGRhdGFfY29kZWNzKSBjb25zdDsKLSAgdm9pZCBHZXRSdHBIZHJFeHRzVG9PZmZl
cihjb25zdCBNZWRpYVNlc3Npb25PcHRpb25zJiBzZXNzaW9uX29wdGlvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uKiBjdXJyZW50X2Rlc2Ny
aXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEhlYWRlckV4dGVuc2lvbnMq
IGF1ZGlvX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwSGVhZGVy
RXh0ZW5zaW9ucyogdmlkZW9fZXh0ZW5zaW9ucykgY29uc3Q7CisgIHZvaWQgR2V0Q29kZWNzRm9y
T2ZmZXIoCisgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBDb250ZW50SW5mbyo+JiBjdXJy
ZW50X2FjdGl2ZV9jb250ZW50cywKKyAgICAgIEF1ZGlvQ29kZWNzKiBhdWRpb19jb2RlY3MsCisg
ICAgICBWaWRlb0NvZGVjcyogdmlkZW9fY29kZWNzLAorICAgICAgRGF0YUNvZGVjcyogZGF0YV9j
b2RlY3MpIGNvbnN0OworICB2b2lkIEdldENvZGVjc0ZvckFuc3dlcigKKyAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4mIGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzLAor
ICAgICAgY29uc3QgU2Vzc2lvbkRlc2NyaXB0aW9uJiByZW1vdGVfb2ZmZXIsCisgICAgICBBdWRp
b0NvZGVjcyogYXVkaW9fY29kZWNzLAorICAgICAgVmlkZW9Db2RlY3MqIHZpZGVvX2NvZGVjcywK
KyAgICAgIERhdGFDb2RlY3MqIGRhdGFfY29kZWNzKSBjb25zdDsKKyAgdm9pZCBHZXRSdHBIZHJF
eHRzVG9PZmZlcigKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IENvbnRlbnRJbmZvKj4m
IGN1cnJlbnRfYWN0aXZlX2NvbnRlbnRzLAorICAgICAgYm9vbCBpc191bmlmaWVkX3BsYW4sCisg
ICAgICBSdHBIZWFkZXJFeHRlbnNpb25zKiBhdWRpb19leHRlbnNpb25zLAorICAgICAgUnRwSGVh
ZGVyRXh0ZW5zaW9ucyogdmlkZW9fZXh0ZW5zaW9ucykgY29uc3Q7CiAgIGJvb2wgQWRkVHJhbnNw
b3J0T2ZmZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnRfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUcmFuc3BvcnRPcHRpb25zJiB0cmFuc3BvcnRfb3B0aW9ucywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb24qIGN1cnJlbnRf
ZGVzYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYwppbmRleCAwNzZh
ZDEyYTViMzQ5ODBjMDBjMzEyMDk3NDlhMWViNTM2ZmMzNGQ0Li4yMDk4ZWMwODE5NDNlOGU0YzI2
ZWU3MDQ0OTdjOWJkMzZmNDEwYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3Vu
aXR0ZXN0LmNjCkBAIC0yMDIwLDYgKzIwMjAsMTEwIEBAIFRFU1RfRihNZWRpYVNlc3Npb25EZXNj
cmlwdGlvbkZhY3RvcnlUZXN0LAogICBFWFBFQ1RfVEhBVCh1cGRhdGVkX3ZjZC0+Y29kZWNzKCks
IEVsZW1lbnRzQXJlQXJyYXkoa1VwZGF0ZWRWaWRlb0NvZGVjT2ZmZXIpKTsKIH0KIAorLy8gVGVz
dCB0aGF0IGEgcmVvZmZlciBkb2VzIG5vdCByZXVzZSBhdWRpbyBjb2RlY3MgZnJvbSBhIHByZXZp
b3VzIG1lZGlhIHNlY3Rpb24KKy8vIHRoYXQgaXMgYmVpbmcgcmVjeWNsZWQuCitURVNUX0YoTWVk
aWFTZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5VGVzdCwKKyAgICAgICBSZU9mZmVyRG9lc05vdFJl
VXNlUmVjeWNsZWRBdWRpb0NvZGVjcykgeworICBmMV8uc2V0X3ZpZGVvX2NvZGVjcyh7fSk7Cisg
IGYyXy5zZXRfdmlkZW9fY29kZWNzKHt9KTsKKworICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7
CisgIEFkZE1lZGlhU2VjdGlvbihNRURJQV9UWVBFX0FVRElPLCAiYTAiLCBSdHBUcmFuc2NlaXZl
ckRpcmVjdGlvbjo6a1NlbmRSZWN2LAorICAgICAgICAgICAgICAgICAga0FjdGl2ZSwgJm9wdHMp
OworICBhdXRvIG9mZmVyID0gYWJzbDo6V3JhcFVuaXF1ZShmMV8uQ3JlYXRlT2ZmZXIob3B0cywg
bnVsbHB0cikpOworICBhdXRvIGFuc3dlciA9IGFic2w6OldyYXBVbmlxdWUoZjJfLkNyZWF0ZUFu
c3dlcihvZmZlci5nZXQoKSwgb3B0cywgbnVsbHB0cikpOworCisgIC8vIFJlY3ljbGUgdGhlIG1l
ZGlhIHNlY3Rpb24gYnkgY2hhbmdpbmcgaXRzIG1pZC4KKyAgb3B0cy5tZWRpYV9kZXNjcmlwdGlv
bl9vcHRpb25zWzBdLm1pZCA9ICJhMSI7CisgIGF1dG8gcmVvZmZlciA9IGFic2w6OldyYXBVbmlx
dWUoZjJfLkNyZWF0ZU9mZmVyKG9wdHMsIGFuc3dlci5nZXQoKSkpOworCisgIC8vIEV4cGVjdCB0
aGF0IHRoZSByZXN1bHRzIG9mIHRoZSBmaXJzdCBuZWdvdGlhdGlvbiBhcmUgaWdub3JlZC4gSWYg
dGhlIG09CisgIC8vIHNlY3Rpb24gd2FzIG5vdCByZWN5Y2xlZCB0aGUgcGF5bG9hZCB0eXBlcyB3
b3VsZCBtYXRjaCB0aGUgaW5pdGlhbCBvZmZlcmVyLgorICBjb25zdCBBdWRpb0NvbnRlbnREZXNj
cmlwdGlvbiogYWNkID0KKyAgICAgIEdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24ocmVv
ZmZlci5nZXQoKSk7CisgIEVYUEVDVF9USEFUKGFjZC0+Y29kZWNzKCksIEVsZW1lbnRzQXJlQXJy
YXkoa0F1ZGlvQ29kZWNzMikpOworfQorCisvLyBUZXN0IHRoYXQgYSByZW9mZmVyIGRvZXMgbm90
IHJldXNlIHZpZGVvIGNvZGVjcyBmcm9tIGEgcHJldmlvdXMgbWVkaWEgc2VjdGlvbgorLy8gdGhh
dCBpcyBiZWluZyByZWN5Y2xlZC4KK1RFU1RfRihNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rv
cnlUZXN0LAorICAgICAgIFJlT2ZmZXJEb2VzTm90UmVVc2VSZWN5Y2xlZFZpZGVvQ29kZWNzKSB7
CisgIGYxXy5zZXRfYXVkaW9fY29kZWNzKHt9LCB7fSk7CisgIGYyXy5zZXRfYXVkaW9fY29kZWNz
KHt9LCB7fSk7CisKKyAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBBZGRNZWRpYVNlY3Rp
b24oTUVESUFfVFlQRV9WSURFTywgInYwIiwgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtTZW5k
UmVjdiwKKyAgICAgICAgICAgICAgICAgIGtBY3RpdmUsICZvcHRzKTsKKyAgYXV0byBvZmZlciA9
IGFic2w6OldyYXBVbmlxdWUoZjFfLkNyZWF0ZU9mZmVyKG9wdHMsIG51bGxwdHIpKTsKKyAgYXV0
byBhbnN3ZXIgPSBhYnNsOjpXcmFwVW5pcXVlKGYyXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCks
IG9wdHMsIG51bGxwdHIpKTsKKworICAvLyBSZWN5Y2xlIHRoZSBtZWRpYSBzZWN0aW9uIGJ5IGNo
YW5naW5nIGl0cyBtaWQuCisgIG9wdHMubWVkaWFfZGVzY3JpcHRpb25fb3B0aW9uc1swXS5taWQg
PSAidjEiOworICBhdXRvIHJlb2ZmZXIgPSBhYnNsOjpXcmFwVW5pcXVlKGYyXy5DcmVhdGVPZmZl
cihvcHRzLCBhbnN3ZXIuZ2V0KCkpKTsKKworICAvLyBFeHBlY3QgdGhhdCB0aGUgcmVzdWx0cyBv
ZiB0aGUgZmlyc3QgbmVnb3RpYXRpb24gYXJlIGlnbm9yZWQuIElmIHRoZSBtPQorICAvLyBzZWN0
aW9uIHdhcyBub3QgcmVjeWNsZWQgdGhlIHBheWxvYWQgdHlwZXMgd291bGQgbWF0Y2ggdGhlIGlu
aXRpYWwgb2ZmZXJlci4KKyAgY29uc3QgVmlkZW9Db250ZW50RGVzY3JpcHRpb24qIHZjZCA9Cisg
ICAgICBHZXRGaXJzdFZpZGVvQ29udGVudERlc2NyaXB0aW9uKHJlb2ZmZXIuZ2V0KCkpOworICBF
WFBFQ1RfVEhBVCh2Y2QtPmNvZGVjcygpLCBFbGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjczIp
KTsKK30KKworLy8gVGVzdCB0aGF0IGEgcmVhbnN3ZXIgZG9lcyBub3QgcmV1c2UgYXVkaW8gY29k
ZWNzIGZyb20gYSBwcmV2aW91cyBtZWRpYQorLy8gc2VjdGlvbiB0aGF0IGlzIGJlaW5nIHJlY3lj
bGVkLgorVEVTVF9GKE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCisgICAgICAg
UmVBbnN3ZXJEb2VzTm90UmVVc2VSZWN5Y2xlZEF1ZGlvQ29kZWNzKSB7CisgIGYxXy5zZXRfdmlk
ZW9fY29kZWNzKHt9KTsKKyAgZjJfLnNldF92aWRlb19jb2RlY3Moe30pOworCisgIC8vIFBlcmZv
cm0gaW5pdGlhbCBvZmZlci9hbnN3ZXIgaW4gcmV2ZXJzZSAofGYyX3wgYXMgb2ZmZXJlcikgc28g
dGhhdCB0aGUKKyAgLy8gc2Vjb25kIG9mZmVyL2Fuc3dlciBpcyBmb3J3YXJkICh8ZjFffCBhcyBv
ZmZlcmVyKS4KKyAgTWVkaWFTZXNzaW9uT3B0aW9ucyBvcHRzOworICBBZGRNZWRpYVNlY3Rpb24o
TUVESUFfVFlQRV9BVURJTywgImEwIiwgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtTZW5kUmVj
diwKKyAgICAgICAgICAgICAgICAgIGtBY3RpdmUsICZvcHRzKTsKKyAgYXV0byBvZmZlciA9IGFi
c2w6OldyYXBVbmlxdWUoZjJfLkNyZWF0ZU9mZmVyKG9wdHMsIG51bGxwdHIpKTsKKyAgYXV0byBh
bnN3ZXIgPSBhYnNsOjpXcmFwVW5pcXVlKGYxXy5DcmVhdGVBbnN3ZXIob2ZmZXIuZ2V0KCksIG9w
dHMsIG51bGxwdHIpKTsKKworICAvLyBSZWN5Y2xlIHRoZSBtZWRpYSBzZWN0aW9uIGJ5IGNoYW5n
aW5nIGl0cyBtaWQuCisgIG9wdHMubWVkaWFfZGVzY3JpcHRpb25fb3B0aW9uc1swXS5taWQgPSAi
YTEiOworICBhdXRvIHJlb2ZmZXIgPSBhYnNsOjpXcmFwVW5pcXVlKGYxXy5DcmVhdGVPZmZlcihv
cHRzLCBhbnN3ZXIuZ2V0KCkpKTsKKyAgYXV0byByZWFuc3dlciA9CisgICAgICBhYnNsOjpXcmFw
VW5pcXVlKGYyXy5DcmVhdGVBbnN3ZXIocmVvZmZlci5nZXQoKSwgb3B0cywgb2ZmZXIuZ2V0KCkp
KTsKKworICAvLyBFeHBlY3QgdGhhdCB0aGUgcmVzdWx0cyBvZiB0aGUgZmlyc3QgbmVnb3RpYXRp
b24gYXJlIGlnbm9yZWQuIElmIHRoZSBtPQorICAvLyBzZWN0aW9uIHdhcyBub3QgcmVjeWNsZWQg
dGhlIHBheWxvYWQgdHlwZXMgd291bGQgbWF0Y2ggdGhlIGluaXRpYWwgb2ZmZXJlci4KKyAgY29u
c3QgQXVkaW9Db250ZW50RGVzY3JpcHRpb24qIGFjZCA9CisgICAgICBHZXRGaXJzdEF1ZGlvQ29u
dGVudERlc2NyaXB0aW9uKHJlYW5zd2VyLmdldCgpKTsKKyAgRVhQRUNUX1RIQVQoYWNkLT5jb2Rl
Y3MoKSwgRWxlbWVudHNBcmVBcnJheShrQXVkaW9Db2RlY3NBbnN3ZXIpKTsKK30KKworLy8gVGVz
dCB0aGF0IGEgcmVhbnN3ZXIgZG9lcyBub3QgcmV1c2UgdmlkZW8gY29kZWNzIGZyb20gYSBwcmV2
aW91cyBtZWRpYQorLy8gc2VjdGlvbiB0aGF0IGlzIGJlaW5nIHJlY3ljbGVkLgorVEVTVF9GKE1l
ZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QsCisgICAgICAgUmVBbnN3ZXJEb2VzTm90
UmVVc2VSZWN5Y2xlZFZpZGVvQ29kZWNzKSB7CisgIGYxXy5zZXRfYXVkaW9fY29kZWNzKHt9LCB7
fSk7CisgIGYyXy5zZXRfYXVkaW9fY29kZWNzKHt9LCB7fSk7CisKKyAgLy8gUGVyZm9ybSBpbml0
aWFsIG9mZmVyL2Fuc3dlciBpbiByZXZlcnNlICh8ZjJffCBhcyBvZmZlcmVyKSBzbyB0aGF0IHRo
ZQorICAvLyBzZWNvbmQgb2ZmZXIvYW5zd2VyIGlzIGZvcndhcmQgKHxmMV98IGFzIG9mZmVyZXIp
LgorICBNZWRpYVNlc3Npb25PcHRpb25zIG9wdHM7CisgIEFkZE1lZGlhU2VjdGlvbihNRURJQV9U
WVBFX1ZJREVPLCAidjAiLCBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a1NlbmRSZWN2LAorICAg
ICAgICAgICAgICAgICAga0FjdGl2ZSwgJm9wdHMpOworICBhdXRvIG9mZmVyID0gYWJzbDo6V3Jh
cFVuaXF1ZShmMl8uQ3JlYXRlT2ZmZXIob3B0cywgbnVsbHB0cikpOworICBhdXRvIGFuc3dlciA9
IGFic2w6OldyYXBVbmlxdWUoZjFfLkNyZWF0ZUFuc3dlcihvZmZlci5nZXQoKSwgb3B0cywgbnVs
bHB0cikpOworCisgIC8vIFJlY3ljbGUgdGhlIG1lZGlhIHNlY3Rpb24gYnkgY2hhbmdpbmcgaXRz
IG1pZC4KKyAgb3B0cy5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zWzBdLm1pZCA9ICJ2MSI7Cisg
IGF1dG8gcmVvZmZlciA9IGFic2w6OldyYXBVbmlxdWUoZjFfLkNyZWF0ZU9mZmVyKG9wdHMsIGFu
c3dlci5nZXQoKSkpOworICBhdXRvIHJlYW5zd2VyID0KKyAgICAgIGFic2w6OldyYXBVbmlxdWUo
ZjJfLkNyZWF0ZUFuc3dlcihyZW9mZmVyLmdldCgpLCBvcHRzLCBvZmZlci5nZXQoKSkpOworCisg
IC8vIEV4cGVjdCB0aGF0IHRoZSByZXN1bHRzIG9mIHRoZSBmaXJzdCBuZWdvdGlhdGlvbiBhcmUg
aWdub3JlZC4gSWYgdGhlIG09CisgIC8vIHNlY3Rpb24gd2FzIG5vdCByZWN5Y2xlZCB0aGUgcGF5
bG9hZCB0eXBlcyB3b3VsZCBtYXRjaCB0aGUgaW5pdGlhbCBvZmZlcmVyLgorICBjb25zdCBWaWRl
b0NvbnRlbnREZXNjcmlwdGlvbiogdmNkID0KKyAgICAgIEdldEZpcnN0VmlkZW9Db250ZW50RGVz
Y3JpcHRpb24ocmVhbnN3ZXIuZ2V0KCkpOworICBFWFBFQ1RfVEhBVCh2Y2QtPmNvZGVjcygpLCBF
bGVtZW50c0FyZUFycmF5KGtWaWRlb0NvZGVjc0Fuc3dlcikpOworfQorCiAvLyBDcmVhdGUgYW4g
dXBkYXRlZCBvZmZlciBhZnRlciBjcmVhdGluZyBhbiBhbnN3ZXIgdG8gdGhlIG9yaWdpbmFsIG9m
ZmVyIGFuZAogLy8gdmVyaWZ5IHRoYXQgdGhlIGNvZGVjcyB0aGF0IHdlcmUgcGFydCBvZiB0aGUg
b3JpZ2luYWwgYW5zd2VyIGFyZSBub3QgY2hhbmdlZAogLy8gaW4gdGhlIHVwZGF0ZWQgb2ZmZXIu
IEluIHRoaXMgdGVzdCBSdHggaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uY2MK
aW5kZXggODk0MzU1ODNiNzM4MTE3YWQ5ZTZhMzNiNGY2NWUyODk4YzUzZWZjNi4uM2JlMDY3MWJi
NDhlMDU2MThiZTZlNGRkNjI2M2E3OTZjODI5ODk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24uY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b24uY2MKQEAgLTM5NTQsNiArMzk1NCwxNyBAQCBHZXRNZWRpYURlc2NyaXB0aW9uT3B0aW9uc0Zv
clRyYW5zY2VpdmVyKAogICByZXR1cm4gbWVkaWFfZGVzY3JpcHRpb25fb3B0aW9uczsKIH0KIAor
Ly8gUmV0dXJucyB0aGUgQ29udGVudEluZm8gYXQgbWxpbmUgaW5kZXggfGl8LCBvciBudWxsIGlm
IG5vbmUgZXhpc3RzLgorc3RhdGljIGNvbnN0IENvbnRlbnRJbmZvKiBHZXRDb250ZW50QnlJbmRl
eCgKKyAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNkZXNjLAorICAgIHNp
emVfdCBpKSB7CisgIGlmICghc2Rlc2MpIHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorICBj
b25zdCBDb250ZW50SW5mb3MmIGNvbnRlbnRzID0gc2Rlc2MtPmRlc2NyaXB0aW9uKCktPmNvbnRl
bnRzKCk7CisgIHJldHVybiAoaSA8IGNvbnRlbnRzLnNpemUoKSA/ICZjb250ZW50c1tpXSA6IG51
bGxwdHIpOworfQorCiB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZXRPcHRpb25zRm9yVW5pZmllZFBs
YW5PZmZlcigKICAgICBjb25zdCBSVENPZmZlckFuc3dlck9wdGlvbnMmIG9mZmVyX2Fuc3dlcl9v
cHRpb25zLAogICAgIGNyaWNrZXQ6Ok1lZGlhU2Vzc2lvbk9wdGlvbnMqIHNlc3Npb25fb3B0aW9u
cykgewpAQCAtMzk4MSwxMCArMzk5MiwxNSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpHZXRPcHRp
b25zRm9yVW5pZmllZFBsYW5PZmZlcigKICAgICAvLyBFaXRoZXIgfGxvY2FsX2NvbnRlbnR8IG9y
IHxyZW1vdGVfY29udGVudHwgaXMgbm9uLW51bGwuCiAgICAgY29uc3QgQ29udGVudEluZm8qIGxv
Y2FsX2NvbnRlbnQgPQogICAgICAgICAoaSA8IGxvY2FsX2NvbnRlbnRzLnNpemUoKSA/ICZsb2Nh
bF9jb250ZW50c1tpXSA6IG51bGxwdHIpOworICAgIGNvbnN0IENvbnRlbnRJbmZvKiBjdXJyZW50
X2xvY2FsX2NvbnRlbnQgPQorICAgICAgICBHZXRDb250ZW50QnlJbmRleChjdXJyZW50X2xvY2Fs
X2Rlc2NyaXB0aW9uKCksIGkpOwogICAgIGNvbnN0IENvbnRlbnRJbmZvKiByZW1vdGVfY29udGVu
dCA9CiAgICAgICAgIChpIDwgcmVtb3RlX2NvbnRlbnRzLnNpemUoKSA/ICZyZW1vdGVfY29udGVu
dHNbaV0gOiBudWxscHRyKTsKLSAgICBib29sIGhhZF9iZWVuX3JlamVjdGVkID0gKGxvY2FsX2Nv
bnRlbnQgJiYgbG9jYWxfY29udGVudC0+cmVqZWN0ZWQpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChyZW1vdGVfY29udGVudCAmJiByZW1vdGVfY29udGVudC0+cmVqZWN0ZWQpOwor
ICAgIGNvbnN0IENvbnRlbnRJbmZvKiBjdXJyZW50X3JlbW90ZV9jb250ZW50ID0KKyAgICAgICAg
R2V0Q29udGVudEJ5SW5kZXgoY3VycmVudF9yZW1vdGVfZGVzY3JpcHRpb24oKSwgaSk7CisgICAg
Ym9vbCBoYWRfYmVlbl9yZWplY3RlZCA9CisgICAgICAgIChjdXJyZW50X2xvY2FsX2NvbnRlbnQg
JiYgY3VycmVudF9sb2NhbF9jb250ZW50LT5yZWplY3RlZCkgfHwKKyAgICAgICAgKGN1cnJlbnRf
cmVtb3RlX2NvbnRlbnQgJiYgY3VycmVudF9yZW1vdGVfY29udGVudC0+cmVqZWN0ZWQpOwogICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtaWQgPQogICAgICAgICAobG9jYWxfY29udGVudCA/IGxvY2Fs
X2NvbnRlbnQtPm5hbWUgOiByZW1vdGVfY29udGVudC0+bmFtZSk7CiAgICAgY3JpY2tldDo6TWVk
aWFUeXBlIG1lZGlhX3R5cGUgPQpAQCAtMzk5NSw3ICs0MDExLDcgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbjo6R2V0T3B0aW9uc0ZvclVuaWZpZWRQbGFuT2ZmZXIoCiAgICAgICBhdXRvIHRyYW5zY2Vp
dmVyID0gR2V0QXNzb2NpYXRlZFRyYW5zY2VpdmVyKG1pZCk7CiAgICAgICBSVENfQ0hFQ0sodHJh
bnNjZWl2ZXIpOwogICAgICAgLy8gQSBtZWRpYSBzZWN0aW9uIGlzIGNvbnNpZGVyZWQgZWxpZ2li
bGUgZm9yIHJlY3ljbGluZyBpZiBpdCBpcyBtYXJrZWQgYXMKLSAgICAgIC8vIHJlamVjdGVkIGlu
IGVpdGhlciB0aGUgbG9jYWwgb3IgcmVtb3RlIGRlc2NyaXB0aW9uLgorICAgICAgLy8gcmVqZWN0
ZWQgaW4gZWl0aGVyIHRoZSBjdXJyZW50IGxvY2FsIG9yIGN1cnJlbnQgcmVtb3RlIGRlc2NyaXB0
aW9uLgogICAgICAgaWYgKGhhZF9iZWVuX3JlamVjdGVkICYmIHRyYW5zY2VpdmVyLT5zdG9wcGVk
KCkpIHsKICAgICAgICAgc2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25z
LnB1c2hfYmFjaygKICAgICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25z
KHRyYW5zY2VpdmVyLT5tZWRpYV90eXBlKCksIG1pZCwKQEAgLTQxODcsMTIgKzQyMDMsMTMgQEAg
dm9pZCBQZWVyQ29ubmVjdGlvbjo6R2VuZXJhdGVNZWRpYURlc2NyaXB0aW9uT3B0aW9ucygKICAg
ICAgICAgc2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnB1c2hfYmFj
aygKICAgICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25zKAogICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGNvbnRlbnQubmFtZSwKLSAgICAg
ICAgICAgICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a0luYWN0aXZlLCB0cnVlKSk7Cisg
ICAgICAgICAgICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtJbmFjdGl2ZSwgLypzdG9w
cGVkPSovdHJ1ZSkpOwogICAgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBzdG9wcGVkID0gKGF1
ZGlvX2RpcmVjdGlvbiA9PSBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjo6a0luYWN0aXZlKTsKICAg
ICAgICAgc2Vzc2lvbl9vcHRpb25zLT5tZWRpYV9kZXNjcmlwdGlvbl9vcHRpb25zLnB1c2hfYmFj
aygKLSAgICAgICAgICAgIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25zKAotICAgICAg
ICAgICAgICAgIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU8sIGNvbnRlbnQubmFtZSwgYXVkaW9f
ZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgIGF1ZGlvX2RpcmVjdGlvbiA9PSBSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbjo6a0luYWN0aXZlKSk7CisgICAgICAgICAgICBjcmlja2V0OjpNZWRpYURl
c2NyaXB0aW9uT3B0aW9ucyhjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5uYW1lLCBhdWRpb19kaXJl
Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9w
cGVkKSk7CiAgICAgICAgICphdWRpb19pbmRleCA9IHNlc3Npb25fb3B0aW9ucy0+bWVkaWFfZGVz
Y3JpcHRpb25fb3B0aW9ucy5zaXplKCkgLSAxOwogICAgICAgfQogICAgIH0gZWxzZSBpZiAoSXNW
aWRlb0NvbnRlbnQoJmNvbnRlbnQpKSB7CkBAIC00MjAxLDEyICs0MjE4LDEzIEBAIHZvaWQgUGVl
ckNvbm5lY3Rpb246OkdlbmVyYXRlTWVkaWFEZXNjcmlwdGlvbk9wdGlvbnMoCiAgICAgICAgIHNl
c3Npb25fb3B0aW9ucy0+bWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5wdXNoX2JhY2soCiAgICAg
ICAgICAgICBjcmlja2V0OjpNZWRpYURlc2NyaXB0aW9uT3B0aW9ucygKICAgICAgICAgICAgICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBjb250ZW50Lm5hbWUsCi0gICAgICAgICAgICAg
ICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtJbmFjdGl2ZSwgdHJ1ZSkpOworICAgICAgICAg
ICAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uOjprSW5hY3RpdmUsIC8qc3RvcHBlZD0qL3Ry
dWUpKTsKICAgICAgIH0gZWxzZSB7CisgICAgICAgIGJvb2wgc3RvcHBlZCA9ICh2aWRlb19kaXJl
Y3Rpb24gPT0gUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb246OmtJbmFjdGl2ZSk7CiAgICAgICAgIHNl
c3Npb25fb3B0aW9ucy0+bWVkaWFfZGVzY3JpcHRpb25fb3B0aW9ucy5wdXNoX2JhY2soCi0gICAg
ICAgICAgICBjcmlja2V0OjpNZWRpYURlc2NyaXB0aW9uT3B0aW9ucygKLSAgICAgICAgICAgICAg
ICBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCBjb250ZW50Lm5hbWUsIHZpZGVvX2RpcmVjdGlv
biwKLSAgICAgICAgICAgICAgICB2aWRlb19kaXJlY3Rpb24gPT0gUnRwVHJhbnNjZWl2ZXJEaXJl
Y3Rpb246OmtJbmFjdGl2ZSkpOworICAgICAgICAgICAgY3JpY2tldDo6TWVkaWFEZXNjcmlwdGlv
bk9wdGlvbnMoY3JpY2tldDo6TUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQubmFtZSwgdmlkZW9fZGlyZWN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHBlZCkpOwog
ICAgICAgICAqdmlkZW9faW5kZXggPSBzZXNzaW9uX29wdGlvbnMtPm1lZGlhX2Rlc2NyaXB0aW9u
X29wdGlvbnMuc2l6ZSgpIC0gMTsKICAgICAgIH0KICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fanNlcF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKaW5kZXggZmU4NzhiMDVm
NzhjMjMxNzcwMDY4YWVhZTJjY2VhNjE5MDM1MjRjNS4uZjBjOTExMTg4NWNhN2IyOTU3NzFkNmFi
OTI3MDJhMjQ0YzQ2MjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNlcF91bml0dGVzdC5jYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlv
bl9qc2VwX3VuaXR0ZXN0LmNjCkBAIC03MDAsNiArNzAwLDEyIEBAIFRFU1RfRihQZWVyQ29ubmVj
dGlvbkpzZXBUZXN0LCBDcmVhdGVPZmZlclJlY3ljbGVzV2hlbk9mZmVyaW5nVHdpY2UpIHsKIC8v
IFRlc3QgdGhhdCB0aGUgb2ZmZXIvYW5zd2VyIGFuZCB0cmFuc2NlaXZlcnMgZm9yIGJvdGggdGhl
IGNhbGxlciBhbmQgY2FsbGVlCiAvLyBzaWRlIGFyZSBnZW5lcmF0ZWQvdXBkYXRlZCBjb3JyZWN0
bHkgd2hlbiByZWN5Y2xpbmcgYW4gYXVkaW8vdmlkZW8gbWVkaWEKIC8vIHNlY3Rpb24gYXMgYSBt
ZWRpYSBzZWN0aW9uIG9mIGVpdGhlciB0aGUgc2FtZSBvciBvcHBvc2l0ZSB0eXBlLgorLy8gQ29y
cmVjdCByZWN5Y2xpbmcgd29ya3MgYXMgZm9sbG93czoKKy8vIC0gVGhlIG09IHNlY3Rpb24gaXMg
cmUtb2ZmZXJlZCB3aXRoIGEgbmV3IE1JRCB2YWx1ZSBhbmQgdGhlIG5ldyBtZWRpYSB0eXBlLgor
Ly8gLSBUaGUgcHJldmlvdXNseS1hc3NvY2lhdGVkIHRyYW5zY2VpdmVyIGlzIGRpc3NvY2lhdGVk
IHdoZW4gdGhlIG5ldyBvZmZlciBpcworLy8gICBzZXQgYXMgYSBsb2NhbCBkZXNjcmlwdGlvbiBv
biB0aGUgb2ZmZXJlciBvciBhcyBhIHJlbW90ZSBkZXNjcmlwdGlvbiBvbgorLy8gICB0aGUgYW5z
d2VyZXIuCisvLyAtIFRoZSBuZXcgdHJhbnNjZWl2ZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBu
ZXcgTUlEIHZhbHVlLgogY2xhc3MgUmVjeWNsZU1lZGlhU2VjdGlvblRlc3QKICAgICA6IHB1Ymxp
YyBQZWVyQ29ubmVjdGlvbkpzZXBUZXN0LAogICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJh
bUludGVyZmFjZTwKQEAgLTcxNCw3ICs3MjAsOSBAQCBjbGFzcyBSZWN5Y2xlTWVkaWFTZWN0aW9u
VGVzdAogICBjcmlja2V0OjpNZWRpYVR5cGUgc2Vjb25kX3R5cGVfOwogfTsKIAotVEVTVF9QKFJl
Y3ljbGVNZWRpYVNlY3Rpb25UZXN0LCBWZXJpZnlPZmZlckFuc3dlckFuZFRyYW5zY2VpdmVycykg
eworLy8gVGVzdCB0aGF0IHJlY3ljbGluZyB3b3JrcyBwcm9wZXJseSB3aGVuIGEgbmV3IHRyYW5z
Y2VpdmVyIHJlY3ljbGVzIGFuIG09CisvLyBzZWN0aW9uIHRoYXQgd2FzIHJlamVjdGVkIGluIGJv
dGggdGhlIGN1cnJlbnQgbG9jYWwgYW5kIHJlbW90ZSBkZXNjcmlwdGlvbnMuCitURVNUX1AoUmVj
eWNsZU1lZGlhU2VjdGlvblRlc3QsIEN1cnJlbnRMb2NhbEFuZEN1cnJlbnRSZW1vdGVSZWplY3Rl
ZCkgewogICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CiAgIGF1dG8gZmly
c3RfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKGZpcnN0X3R5cGVfKTsKICAg
YXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOwpAQCAtNzc0LDYgKzc4MiwyODUg
QEAgVEVTVF9QKFJlY3ljbGVNZWRpYVNlY3Rpb25UZXN0LCBWZXJpZnlPZmZlckFuc3dlckFuZFRy
YW5zY2VpdmVycykgewogICBBU1NFUlRfRVEoMnUsIGNhbGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2
ZXJzKCkuc2l6ZSgpKTsKIH0KIAorLy8gVGVzdCB0aGF0IHJlY3ljbGluZyB3b3JrcyBwcm9wZXJs
eSB3aGVuIGEgbmV3IHRyYW5zY2VpdmVyIHJlY3ljbGVzIGFuIG09CisvLyBzZWN0aW9uIHRoYXQg
d2FzIHJlamVjdGVkIGluIG9ubHkgdGhlIGN1cnJlbnQgcmVtb3RlIGRlc2NyaXB0aW9uLgorVEVT
VF9QKFJlY3ljbGVNZWRpYVNlY3Rpb25UZXN0LCBDdXJyZW50UmVtb3RlT25seVJlamVjdGVkKSB7
CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgYXV0byBjYWxsZXJf
Zmlyc3RfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKGZpcnN0X3R5cGVfKTsK
KyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworCisgIEFTU0VSVF9UUlVF
KGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFz
TG9jYWwoKSkpOworCisgIHN0ZDo6c3RyaW5nIGZpcnN0X21pZCA9ICpjYWxsZXJfZmlyc3RfdHJh
bnNjZWl2ZXItPm1pZCgpOworICBBU1NFUlRfRVEoMXUsIGNhbGxlZS0+cGMoKS0+R2V0VHJhbnNj
ZWl2ZXJzKCkuc2l6ZSgpKTsKKyAgYXV0byBjYWxsZWVfZmlyc3RfdHJhbnNjZWl2ZXIgPSBjYWxs
ZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpWzBdOworICBjYWxsZWVfZmlyc3RfdHJhbnNjZWl2
ZXItPlN0b3AoKTsKKworICAvLyBUaGUgYW5zd2VyIHdpbGwgaGF2ZSBhIHJlamVjdGVkIG09IHNl
Y3Rpb24uCisgIEFTU0VSVF9UUlVFKAorICAgICAgY2FsbGVyLT5TZXRSZW1vdGVEZXNjcmlwdGlv
bihjYWxsZWUtPkNyZWF0ZUFuc3dlckFuZFNldEFzTG9jYWwoKSkpOworCisgIC8vIFRoZSBvZmZl
ciBzaG91bGQgcmV1c2UgdGhlIHByZXZpb3VzIG1lZGlhIHNlY3Rpb24gYnV0IGFsbG9jYXRlIGEg
bmV3IE1JRAorICAvLyBhbmQgY2hhbmdlIHRoZSBtZWRpYSB0eXBlLgorICBhdXRvIGNhbGxlcl9z
ZWNvbmRfdHJhbnNjZWl2ZXIgPSBjYWxsZXItPkFkZFRyYW5zY2VpdmVyKHNlY29uZF90eXBlXyk7
CisgIGF1dG8gb2ZmZXIgPSBjYWxsZXItPkNyZWF0ZU9mZmVyKCk7CisgIGNvbnN0IGF1dG8mIG9m
ZmVyX2NvbnRlbnRzID0gb2ZmZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCk7CisgIEFTU0VS
VF9FUSgxdSwgb2ZmZXJfY29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX0ZBTFNFKG9mZmVyX2Nv
bnRlbnRzWzBdLnJlamVjdGVkKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90eXBlXywgb2ZmZXJfY29u
dGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgc3RkOjpzdHJpbmcgc2Vj
b25kX21pZCA9IG9mZmVyX2NvbnRlbnRzWzBdLm5hbWU7CisgIEVYUEVDVF9ORShmaXJzdF9taWQs
IHNlY29uZF9taWQpOworCisgIC8vIFNldHRpbmcgdGhlIGxvY2FsIG9mZmVyIHdpbGwgZGlzc29j
aWF0ZSB0aGUgcHJldmlvdXMgdHJhbnNjZWl2ZXIgYW5kIHNldAorICAvLyB0aGUgTUlEIGZvciB0
aGUgbmV3IHRyYW5zY2VpdmVyLgorICBBU1NFUlRfVFJVRSgKKyAgICAgIGNhbGxlci0+U2V0TG9j
YWxEZXNjcmlwdGlvbihDbG9uZVNlc3Npb25EZXNjcmlwdGlvbihvZmZlci5nZXQoKSkpKTsKKyAg
RVhQRUNUX0VRKGFic2w6Om51bGxvcHQsIGNhbGxlcl9maXJzdF90cmFuc2NlaXZlci0+bWlkKCkp
OworICBFWFBFQ1RfRVEoc2Vjb25kX21pZCwgY2FsbGVyX3NlY29uZF90cmFuc2NlaXZlci0+bWlk
KCkpOworCisgIC8vIFNldHRpbmcgdGhlIHJlbW90ZSBvZmZlciB3aWxsIGRpc3NvY2lhdGUgdGhl
IHByZXZpb3VzIHRyYW5zY2VpdmVyIGFuZAorICAvLyBjcmVhdGUgYSBuZXcgdHJhbnNjZWl2ZXIg
Zm9yIHRoZSBtZWRpYSBzZWN0aW9uLgorICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURl
c2NyaXB0aW9uKHN0ZDo6bW92ZShvZmZlcikpKTsKKyAgYXV0byBjYWxsZWVfdHJhbnNjZWl2ZXJz
ID0gY2FsbGVlLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKTsKKyAgQVNTRVJUX0VRKDJ1LCBjYWxs
ZWVfdHJhbnNjZWl2ZXJzLnNpemUoKSk7CisgIEVYUEVDVF9FUShhYnNsOjpudWxsb3B0LCBjYWxs
ZWVfdHJhbnNjZWl2ZXJzWzBdLT5taWQoKSk7CisgIEVYUEVDVF9FUShmaXJzdF90eXBlXywgY2Fs
bGVlX3RyYW5zY2VpdmVyc1swXS0+bWVkaWFfdHlwZSgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF9t
aWQsIGNhbGxlZV90cmFuc2NlaXZlcnNbMV0tPm1pZCgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90
eXBlXywgY2FsbGVlX3RyYW5zY2VpdmVyc1sxXS0+bWVkaWFfdHlwZSgpKTsKKworICAvLyBUaGUg
YW5zd2VyIHNob3VsZCBoYXZlIG9ubHkgb25lIG1lZGlhIHNlY3Rpb24gZm9yIHRoZSBuZXcgdHJh
bnNjZWl2ZXIuCisgIGF1dG8gYW5zd2VyID0gY2FsbGVlLT5DcmVhdGVBbnN3ZXIoKTsKKyAgYXV0
byBhbnN3ZXJfY29udGVudHMgPSBhbnN3ZXItPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCk7Cisg
IEFTU0VSVF9FUSgxdSwgYW5zd2VyX2NvbnRlbnRzLnNpemUoKSk7CisgIEVYUEVDVF9GQUxTRShh
bnN3ZXJfY29udGVudHNbMF0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoc2Vjb25kX21pZCwgYW5z
d2VyX2NvbnRlbnRzWzBdLm5hbWUpOworICBFWFBFQ1RfRVEoc2Vjb25kX3R5cGVfLCBhbnN3ZXJf
Y29udGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKworICAvLyBTZXR0aW5n
IHRoZSBsb2NhbCBhbnN3ZXIgc2hvdWxkIHN1Y2NlZWQuCisgIEFTU0VSVF9UUlVFKAorICAgICAg
Y2FsbGVlLT5TZXRMb2NhbERlc2NyaXB0aW9uKENsb25lU2Vzc2lvbkRlc2NyaXB0aW9uKGFuc3dl
ci5nZXQoKSkpKTsKKworICAvLyBTZXR0aW5nIHRoZSByZW1vdGUgYW5zd2VyIHNob3VsZCBzdWNj
ZWVkIGFuZCBub3QgY3JlYXRlIGFueSBuZXcKKyAgLy8gdHJhbnNjZWl2ZXJzLgorICBBU1NFUlRf
VFJVRShjYWxsZXItPlNldFJlbW90ZURlc2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7Cisg
IEFTU0VSVF9FUSgydSwgY2FsbGVyLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKS5zaXplKCkpOwor
ICBBU1NFUlRfRVEoMnUsIGNhbGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKCkuc2l6ZSgpKTsK
K30KKworLy8gVGVzdCB0aGF0IHJlY3ljbGluZyB3b3JrcyBwcm9wZXJseSB3aGVuIGEgbmV3IHRy
YW5zY2VpdmVyIHJlY3ljbGVzIGFuIG09CisvLyBzZWN0aW9uIHRoYXQgd2FzIHJlamVjdGVkIG9u
bHkgaW4gdGhlIGN1cnJlbnQgbG9jYWwgZGVzY3JpcHRpb24uCitURVNUX1AoUmVjeWNsZU1lZGlh
U2VjdGlvblRlc3QsIEN1cnJlbnRMb2NhbE9ubHlSZWplY3RlZCkgeworICBhdXRvIGNhbGxlciA9
IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGF1dG8gY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVy
ID0gY2FsbGVyLT5BZGRUcmFuc2NlaXZlcihmaXJzdF90eXBlXyk7CisgIGF1dG8gY2FsbGVlID0g
Q3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90
ZURlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXJBbmRTZXRBc0xvY2FsKCkpKTsKKworICBz
dGQ6OnN0cmluZyBmaXJzdF9taWQgPSAqY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyLT5taWQoKTsK
KyAgQVNTRVJUX0VRKDF1LCBjYWxsZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpLnNpemUoKSk7
CisgIGF1dG8gY2FsbGVlX2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVlLT5wYygpLT5HZXRUcmFu
c2NlaXZlcnMoKVswXTsKKyAgY2FsbGVlX2ZpcnN0X3RyYW5zY2VpdmVyLT5TdG9wKCk7CisKKyAg
Ly8gVGhlIGFuc3dlciB3aWxsIGhhdmUgYSByZWplY3RlZCBtPSBzZWN0aW9uLgorICBBU1NFUlRf
VFJVRSgKKyAgICAgIGNhbGxlci0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVlLT5DcmVhdGVB
bnN3ZXJBbmRTZXRBc0xvY2FsKCkpKTsKKworICAvLyBUaGUgb2ZmZXIgc2hvdWxkIHJldXNlIHRo
ZSBwcmV2aW91cyBtZWRpYSBzZWN0aW9uIGJ1dCBhbGxvY2F0ZSBhIG5ldyBNSUQKKyAgLy8gYW5k
IGNoYW5nZSB0aGUgbWVkaWEgdHlwZS4KKyAgYXV0byBjYWxsZWVfc2Vjb25kX3RyYW5zY2VpdmVy
ID0gY2FsbGVlLT5BZGRUcmFuc2NlaXZlcihzZWNvbmRfdHlwZV8pOworICBhdXRvIG9mZmVyID0g
Y2FsbGVlLT5DcmVhdGVPZmZlcigpOworICBjb25zdCBhdXRvJiBvZmZlcl9jb250ZW50cyA9IG9m
ZmVyLT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygpOworICBBU1NFUlRfRVEoMXUsIG9mZmVyX2Nv
bnRlbnRzLnNpemUoKSk7CisgIEVYUEVDVF9GQUxTRShvZmZlcl9jb250ZW50c1swXS5yZWplY3Rl
ZCk7CisgIEVYUEVDVF9FUShzZWNvbmRfdHlwZV8sIG9mZmVyX2NvbnRlbnRzWzBdLm1lZGlhX2Rl
c2NyaXB0aW9uKCktPnR5cGUoKSk7CisgIHN0ZDo6c3RyaW5nIHNlY29uZF9taWQgPSBvZmZlcl9j
b250ZW50c1swXS5uYW1lOworICBFWFBFQ1RfTkUoZmlyc3RfbWlkLCBzZWNvbmRfbWlkKTsKKwor
ICAvLyBTZXR0aW5nIHRoZSBsb2NhbCBvZmZlciB3aWxsIGRpc3NvY2lhdGUgdGhlIHByZXZpb3Vz
IHRyYW5zY2VpdmVyIGFuZCBzZXQKKyAgLy8gdGhlIE1JRCBmb3IgdGhlIG5ldyB0cmFuc2NlaXZl
ci4KKyAgQVNTRVJUX1RSVUUoCisgICAgICBjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRpb24oQ2xv
bmVTZXNzaW9uRGVzY3JpcHRpb24ob2ZmZXIuZ2V0KCkpKSk7CisgIEVYUEVDVF9FUShhYnNsOjpu
dWxsb3B0LCBjYWxsZWVfZmlyc3RfdHJhbnNjZWl2ZXItPm1pZCgpKTsKKyAgRVhQRUNUX0VRKHNl
Y29uZF9taWQsIGNhbGxlZV9zZWNvbmRfdHJhbnNjZWl2ZXItPm1pZCgpKTsKKworICAvLyBTZXR0
aW5nIHRoZSByZW1vdGUgb2ZmZXIgd2lsbCBkaXNzb2NpYXRlIHRoZSBwcmV2aW91cyB0cmFuc2Nl
aXZlciBhbmQKKyAgLy8gY3JlYXRlIGEgbmV3IHRyYW5zY2VpdmVyIGZvciB0aGUgbWVkaWEgc2Vj
dGlvbi4KKyAgQVNTRVJUX1RSVUUoY2FsbGVyLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1v
dmUob2ZmZXIpKSk7CisgIGF1dG8gY2FsbGVyX3RyYW5zY2VpdmVycyA9IGNhbGxlci0+cGMoKS0+
R2V0VHJhbnNjZWl2ZXJzKCk7CisgIEFTU0VSVF9FUSgydSwgY2FsbGVyX3RyYW5zY2VpdmVycy5z
aXplKCkpOworICBFWFBFQ1RfRVEoYWJzbDo6bnVsbG9wdCwgY2FsbGVyX3RyYW5zY2VpdmVyc1sw
XS0+bWlkKCkpOworICBFWFBFQ1RfRVEoZmlyc3RfdHlwZV8sIGNhbGxlcl90cmFuc2NlaXZlcnNb
MF0tPm1lZGlhX3R5cGUoKSk7CisgIEVYUEVDVF9FUShzZWNvbmRfbWlkLCBjYWxsZXJfdHJhbnNj
ZWl2ZXJzWzFdLT5taWQoKSk7CisgIEVYUEVDVF9FUShzZWNvbmRfdHlwZV8sIGNhbGxlcl90cmFu
c2NlaXZlcnNbMV0tPm1lZGlhX3R5cGUoKSk7CisKKyAgLy8gVGhlIGFuc3dlciBzaG91bGQgaGF2
ZSBvbmx5IG9uZSBtZWRpYSBzZWN0aW9uIGZvciB0aGUgbmV3IHRyYW5zY2VpdmVyLgorICBhdXRv
IGFuc3dlciA9IGNhbGxlci0+Q3JlYXRlQW5zd2VyKCk7CisgIGF1dG8gYW5zd2VyX2NvbnRlbnRz
ID0gYW5zd2VyLT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygpOworICBBU1NFUlRfRVEoMXUsIGFu
c3dlcl9jb250ZW50cy5zaXplKCkpOworICBFWFBFQ1RfRkFMU0UoYW5zd2VyX2NvbnRlbnRzWzBd
LnJlamVjdGVkKTsKKyAgRVhQRUNUX0VRKHNlY29uZF9taWQsIGFuc3dlcl9jb250ZW50c1swXS5u
YW1lKTsKKyAgRVhQRUNUX0VRKHNlY29uZF90eXBlXywgYW5zd2VyX2NvbnRlbnRzWzBdLm1lZGlh
X2Rlc2NyaXB0aW9uKCktPnR5cGUoKSk7CisKKyAgLy8gU2V0dGluZyB0aGUgbG9jYWwgYW5zd2Vy
IHNob3VsZCBzdWNjZWVkLgorICBBU1NFUlRfVFJVRSgKKyAgICAgIGNhbGxlci0+U2V0TG9jYWxE
ZXNjcmlwdGlvbihDbG9uZVNlc3Npb25EZXNjcmlwdGlvbihhbnN3ZXIuZ2V0KCkpKSk7CisKKyAg
Ly8gU2V0dGluZyB0aGUgcmVtb3RlIGFuc3dlciBzaG91bGQgc3VjY2VlZCBhbmQgbm90IGNyZWF0
ZSBhbnkgbmV3CisgIC8vIHRyYW5zY2VpdmVycy4KKyAgQVNTRVJUX1RSVUUoY2FsbGVlLT5TZXRS
ZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUoYW5zd2VyKSkpOworICBBU1NFUlRfRVEoMnUsIGNh
bGxlZS0+cGMoKS0+R2V0VHJhbnNjZWl2ZXJzKCkuc2l6ZSgpKTsKKyAgQVNTRVJUX0VRKDJ1LCBj
YWxsZXItPnBjKCktPkdldFRyYW5zY2VpdmVycygpLnNpemUoKSk7Cit9CisKKy8vIFRlc3QgdGhh
dCBhIG09IHNlY3Rpb24gaXMgKm5vdCogcmVjeWNsZWQgaWYgdGhlIG1lZGlhIHNlY3Rpb24gaXMg
b25seQorLy8gcmVqZWN0ZWQgaW4gdGhlIHBlbmRpbmcgbG9jYWwgZGVzY3JpcHRpb24gYW5kIHRo
ZXJlIGlzIG5vIGN1cnJlbnQgcmVtb3RlCisvLyBkZXNjcmlwdGlvbi4KK1RFU1RfUChSZWN5Y2xl
TWVkaWFTZWN0aW9uVGVzdCwgUGVuZGluZ0xvY2FsUmVqZWN0ZWRBbmROb1JlbW90ZSkgeworICBh
dXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGF1dG8gY2FsbGVyX2ZpcnN0
X3RyYW5zY2VpdmVyID0gY2FsbGVyLT5BZGRUcmFuc2NlaXZlcihmaXJzdF90eXBlXyk7CisKKyAg
QVNTRVJUX1RSVUUoY2FsbGVyLT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2Zm
ZXIoKSkpOworCisgIHN0ZDo6c3RyaW5nIGZpcnN0X21pZCA9ICpjYWxsZXJfZmlyc3RfdHJhbnNj
ZWl2ZXItPm1pZCgpOworICBjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXItPlN0b3AoKTsKKworICAv
LyBUaGUgcmVvZmZlciB3aWxsIGhhdmUgYSByZWplY3RlZCBtPSBzZWN0aW9uLgorICBBU1NFUlRf
VFJVRShjYWxsZXItPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7
CisKKyAgYXV0byBjYWxsZXJfc2Vjb25kX3RyYW5zY2VpdmVyID0gY2FsbGVyLT5BZGRUcmFuc2Nl
aXZlcihzZWNvbmRfdHlwZV8pOworCisgIC8vIFRoZSByZW9mZmVyIHNob3VsZCBub3QgcmVjeWNs
ZSB0aGUgZXhpc3RpbmcgbT0gc2VjdGlvbiBzaW5jZSBpdCBpcyBub3QKKyAgLy8gcmVqZWN0ZWQg
aW4gZWl0aGVyIHRoZSAqY3VycmVudCogbG9jYWwgb3IgKmN1cnJlbnQqIHJlbW90ZSBkZXNjcmlw
dGlvbi4KKyAgYXV0byByZW9mZmVyID0gY2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBhdXRvIHJl
b2ZmZXJfY29udGVudHMgPSByZW9mZmVyLT5kZXNjcmlwdGlvbigpLT5jb250ZW50cygpOworICBB
U1NFUlRfRVEoMnUsIHJlb2ZmZXJfY29udGVudHMuc2l6ZSgpKTsKKyAgRVhQRUNUX1RSVUUocmVv
ZmZlcl9jb250ZW50c1swXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShmaXJzdF90eXBlXywgcmVv
ZmZlcl9jb250ZW50c1swXS5tZWRpYV9kZXNjcmlwdGlvbigpLT50eXBlKCkpOworICBFWFBFQ1Rf
RVEoZmlyc3RfbWlkLCByZW9mZmVyX2NvbnRlbnRzWzBdLm5hbWUpOworICBFWFBFQ1RfRkFMU0Uo
cmVvZmZlcl9jb250ZW50c1sxXS5yZWplY3RlZCk7CisgIEVYUEVDVF9FUShzZWNvbmRfdHlwZV8s
IHJlb2ZmZXJfY29udGVudHNbMV0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgc3Rk
OjpzdHJpbmcgc2Vjb25kX21pZCA9IHJlb2ZmZXJfY29udGVudHNbMV0ubmFtZTsKKyAgRVhQRUNU
X05FKGZpcnN0X21pZCwgc2Vjb25kX21pZCk7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVyLT5TZXRM
b2NhbERlc2NyaXB0aW9uKHN0ZDo6bW92ZShyZW9mZmVyKSkpOworCisgIC8vIEJvdGggUnRwVHJh
bnNjZWl2ZXJzIGFyZSBhc3NvY2lhdGVkLgorICBFWFBFQ1RfRVEoZmlyc3RfbWlkLCBjYWxsZXJf
Zmlyc3RfdHJhbnNjZWl2ZXItPm1pZCgpKTsKKyAgRVhQRUNUX0VRKHNlY29uZF9taWQsIGNhbGxl
cl9zZWNvbmRfdHJhbnNjZWl2ZXItPm1pZCgpKTsKK30KKworLy8gVGVzdCB0aGF0IGEgbT0gc2Vj
dGlvbiBpcyAqbm90KiByZWN5Y2xlZCBpZiB0aGUgbWVkaWEgc2VjdGlvbiBpcyBvbmx5CisvLyBy
ZWplY3RlZCBpbiB0aGUgcGVuZGluZyBsb2NhbCBkZXNjcmlwdGlvbiBhbmQgbm90IHJlamVjdGVk
IGluIHRoZSBjdXJyZW50CisvLyByZW1vdGUgZGVzY3JpcHRpb24uCitURVNUX1AoUmVjeWNsZU1l
ZGlhU2VjdGlvblRlc3QsIFBlbmRpbmdMb2NhbFJlamVjdGVkQW5kTm90UmVqZWN0ZWRSZW1vdGUp
IHsKKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBhdXRvIGNhbGxl
cl9maXJzdF90cmFuc2NlaXZlciA9IGNhbGxlci0+QWRkVHJhbnNjZWl2ZXIoZmlyc3RfdHlwZV8p
OworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisKKyAgQVNTRVJUX1RS
VUUoY2FsbGVyLT5FeGNoYW5nZU9mZmVyQW5zd2VyV2l0aChjYWxsZWUuZ2V0KCkpKTsKKworICBz
dGQ6OnN0cmluZyBmaXJzdF9taWQgPSAqY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyLT5taWQoKTsK
KyAgY2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyLT5TdG9wKCk7CisKKyAgLy8gVGhlIHJlb2ZmZXIg
d2lsbCBoYXZlIGEgcmVqZWN0ZWQgbT0gc2VjdGlvbi4KKyAgQVNTRVJUX1RSVUUoY2FsbGVyLT5T
ZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2ZmZXIoKSkpOworCisgIGF1dG8gY2Fs
bGVyX3NlY29uZF90cmFuc2NlaXZlciA9IGNhbGxlci0+QWRkVHJhbnNjZWl2ZXIoc2Vjb25kX3R5
cGVfKTsKKworICAvLyBUaGUgcmVvZmZlciBzaG91bGQgbm90IHJlY3ljbGUgdGhlIGV4aXN0aW5n
IG09IHNlY3Rpb24gc2luY2UgaXQgaXMgbm90CisgIC8vIHJlamVjdGVkIGluIGVpdGhlciB0aGUg
KmN1cnJlbnQqIGxvY2FsIG9yICpjdXJyZW50KiByZW1vdGUgZGVzY3JpcHRpb24uCisgIGF1dG8g
cmVvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIoKTsKKyAgYXV0byByZW9mZmVyX2NvbnRlbnRz
ID0gcmVvZmZlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKTsKKyAgQVNTRVJUX0VRKDJ1LCBy
ZW9mZmVyX2NvbnRlbnRzLnNpemUoKSk7CisgIEVYUEVDVF9UUlVFKHJlb2ZmZXJfY29udGVudHNb
MF0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoZmlyc3RfdHlwZV8sIHJlb2ZmZXJfY29udGVudHNb
MF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgRVhQRUNUX0VRKGZpcnN0X21pZCwg
cmVvZmZlcl9jb250ZW50c1swXS5uYW1lKTsKKyAgRVhQRUNUX0ZBTFNFKHJlb2ZmZXJfY29udGVu
dHNbMV0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoc2Vjb25kX3R5cGVfLCByZW9mZmVyX2NvbnRl
bnRzWzFdLm1lZGlhX2Rlc2NyaXB0aW9uKCktPnR5cGUoKSk7CisgIHN0ZDo6c3RyaW5nIHNlY29u
ZF9taWQgPSByZW9mZmVyX2NvbnRlbnRzWzFdLm5hbWU7CisgIEVYUEVDVF9ORShmaXJzdF9taWQs
IHNlY29uZF9taWQpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlv
bihzdGQ6Om1vdmUocmVvZmZlcikpKTsKKworICAvLyBCb3RoIFJ0cFRyYW5zY2VpdmVycyBhcmUg
YXNzb2NpYXRlZC4KKyAgRVhQRUNUX0VRKGZpcnN0X21pZCwgY2FsbGVyX2ZpcnN0X3RyYW5zY2Vp
dmVyLT5taWQoKSk7CisgIEVYUEVDVF9FUShzZWNvbmRfbWlkLCBjYWxsZXJfc2Vjb25kX3RyYW5z
Y2VpdmVyLT5taWQoKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBhbiBtPSBzZWN0aW9uIGlzICpub3Qq
IHJlY3ljbGVkIGlmIHRoZSBtZWRpYSBzZWN0aW9uIGlzIG9ubHkKKy8vIHJlamVjdGVkIGluIHRo
ZSBwZW5kaW5nIHJlbW90ZSBkZXNjcmlwdGlvbiBhbmQgdGhlcmUgaXMgbm8gY3VycmVudCBsb2Nh
bAorLy8gZGVzY3JpcHRpb24uCitURVNUX1AoUmVjeWNsZU1lZGlhU2VjdGlvblRlc3QsIFBlbmRp
bmdSZW1vdGVSZWplY3RlZEFuZE5vTG9jYWwpIHsKKyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVy
Q29ubmVjdGlvbigpOworICBhdXRvIGNhbGxlcl9maXJzdF90cmFuc2NlaXZlciA9IGNhbGxlci0+
QWRkVHJhbnNjZWl2ZXIoZmlyc3RfdHlwZV8pOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJD
b25uZWN0aW9uKCk7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlv
bihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2NhbCgpKSk7CisKKyAgQVNTRVJUX0VRKDF1
LCBjYWxsZWUtPnBjKCktPkdldFRyYW5zY2VpdmVycygpLnNpemUoKSk7CisgIGF1dG8gY2FsbGVl
X2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVlLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKVswXTsK
KyAgc3RkOjpzdHJpbmcgZmlyc3RfbWlkID0gKmNhbGxlZV9maXJzdF90cmFuc2NlaXZlci0+bWlk
KCk7CisgIGNhbGxlcl9maXJzdF90cmFuc2NlaXZlci0+U3RvcCgpOworCisgIC8vIFRoZSByZW9m
ZmVyIHdpbGwgaGF2ZSBhIHJlamVjdGVkIG09IHNlY3Rpb24uCisgIEFTU0VSVF9UUlVFKGNhbGxl
ZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oY2FsbGVyLT5DcmVhdGVPZmZlckFuZFNldEFzTG9jYWwo
KSkpOworCisgIGF1dG8gY2FsbGVlX3NlY29uZF90cmFuc2NlaXZlciA9IGNhbGxlZS0+QWRkVHJh
bnNjZWl2ZXIoc2Vjb25kX3R5cGVfKTsKKworICAvLyBUaGUgcmVvZmZlciBzaG91bGQgbm90IHJl
Y3ljbGUgdGhlIGV4aXN0aW5nIG09IHNlY3Rpb24gc2luY2UgaXQgaXMgbm90CisgIC8vIHJlamVj
dGVkIGluIGVpdGhlciB0aGUgKmN1cnJlbnQqIGxvY2FsIG9yICpjdXJyZW50KiByZW1vdGUgZGVz
Y3JpcHRpb24uCisgIGF1dG8gcmVvZmZlciA9IGNhbGxlZS0+Q3JlYXRlT2ZmZXIoKTsKKyAgYXV0
byByZW9mZmVyX2NvbnRlbnRzID0gcmVvZmZlci0+ZGVzY3JpcHRpb24oKS0+Y29udGVudHMoKTsK
KyAgQVNTRVJUX0VRKDJ1LCByZW9mZmVyX2NvbnRlbnRzLnNpemUoKSk7CisgIEVYUEVDVF9UUlVF
KHJlb2ZmZXJfY29udGVudHNbMF0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoZmlyc3RfdHlwZV8s
IHJlb2ZmZXJfY29udGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+dHlwZSgpKTsKKyAgRVhQ
RUNUX0VRKGZpcnN0X21pZCwgcmVvZmZlcl9jb250ZW50c1swXS5uYW1lKTsKKyAgRVhQRUNUX0ZB
TFNFKHJlb2ZmZXJfY29udGVudHNbMV0ucmVqZWN0ZWQpOworICBFWFBFQ1RfRVEoc2Vjb25kX3R5
cGVfLCByZW9mZmVyX2NvbnRlbnRzWzFdLm1lZGlhX2Rlc2NyaXB0aW9uKCktPnR5cGUoKSk7Cisg
IHN0ZDo6c3RyaW5nIHNlY29uZF9taWQgPSByZW9mZmVyX2NvbnRlbnRzWzFdLm5hbWU7CisgIEVY
UEVDVF9ORShmaXJzdF9taWQsIHNlY29uZF9taWQpOworCisgIC8vIE5vdGU6IENhbm5vdCBhY3R1
YWxseSBzZXQgdGhlIHJlb2ZmZXIgc2luY2UgdGhlIGNhbGxlZSBpcyBpbiB0aGUgc2lnbmFsaW5n
CisgIC8vIHN0YXRlICdoYXZlLXJlbW90ZS1vZmZlcicuCit9CisKKy8vIFRlc3QgdGhhdCBhbiBt
PSBzZWN0aW9uIGlzICpub3QqIHJlY3ljbGVkIGlmIHRoZSBtZWRpYSBzZWN0aW9uIGlzIG9ubHkK
Ky8vIHJlamVjdGVkIGluIHRoZSBwZW5kaW5nIHJlbW90ZSBkZXNjcmlwdGlvbiBhbmQgbm90IHJl
amVjdGVkIGluIHRoZSBjdXJyZW50CisvLyBsb2NhbCBkZXNjcmlwdGlvbi4KK1RFU1RfUChSZWN5
Y2xlTWVkaWFTZWN0aW9uVGVzdCwgUGVuZGluZ1JlbW90ZVJlamVjdGVkQW5kTm90UmVqZWN0ZWRM
b2NhbCkgeworICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGF1dG8g
Y2FsbGVyX2ZpcnN0X3RyYW5zY2VpdmVyID0gY2FsbGVyLT5BZGRUcmFuc2NlaXZlcihmaXJzdF90
eXBlXyk7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKworICBBU1NF
UlRfVFJVRShjYWxsZXItPkV4Y2hhbmdlT2ZmZXJBbnN3ZXJXaXRoKGNhbGxlZS5nZXQoKSkpOwor
CisgIEFTU0VSVF9FUSgxdSwgY2FsbGVlLT5wYygpLT5HZXRUcmFuc2NlaXZlcnMoKS5zaXplKCkp
OworICBhdXRvIGNhbGxlZV9maXJzdF90cmFuc2NlaXZlciA9IGNhbGxlZS0+cGMoKS0+R2V0VHJh
bnNjZWl2ZXJzKClbMF07CisgIHN0ZDo6c3RyaW5nIGZpcnN0X21pZCA9ICpjYWxsZWVfZmlyc3Rf
dHJhbnNjZWl2ZXItPm1pZCgpOworICBjYWxsZXJfZmlyc3RfdHJhbnNjZWl2ZXItPlN0b3AoKTsK
KworICAvLyBUaGUgcmVvZmZlciB3aWxsIGhhdmUgYSByZWplY3RlZCBtPSBzZWN0aW9uLgorICBB
U1NFUlRfVFJVRShjYWxsZWUtPlNldFJlbW90ZURlc2NyaXB0aW9uKGNhbGxlci0+Q3JlYXRlT2Zm
ZXJBbmRTZXRBc0xvY2FsKCkpKTsKKworICBhdXRvIGNhbGxlZV9zZWNvbmRfdHJhbnNjZWl2ZXIg
PSBjYWxsZWUtPkFkZFRyYW5zY2VpdmVyKHNlY29uZF90eXBlXyk7CisKKyAgLy8gVGhlIHJlb2Zm
ZXIgc2hvdWxkIG5vdCByZWN5Y2xlIHRoZSBleGlzdGluZyBtPSBzZWN0aW9uIHNpbmNlIGl0IGlz
IG5vdAorICAvLyByZWplY3RlZCBpbiBlaXRoZXIgdGhlICpjdXJyZW50KiBsb2NhbCBvciAqY3Vy
cmVudCogcmVtb3RlIGRlc2NyaXB0aW9uLgorICBhdXRvIHJlb2ZmZXIgPSBjYWxsZWUtPkNyZWF0
ZU9mZmVyKCk7CisgIGF1dG8gcmVvZmZlcl9jb250ZW50cyA9IHJlb2ZmZXItPmRlc2NyaXB0aW9u
KCktPmNvbnRlbnRzKCk7CisgIEFTU0VSVF9FUSgydSwgcmVvZmZlcl9jb250ZW50cy5zaXplKCkp
OworICBFWFBFQ1RfVFJVRShyZW9mZmVyX2NvbnRlbnRzWzBdLnJlamVjdGVkKTsKKyAgRVhQRUNU
X0VRKGZpcnN0X3R5cGVfLCByZW9mZmVyX2NvbnRlbnRzWzBdLm1lZGlhX2Rlc2NyaXB0aW9uKCkt
PnR5cGUoKSk7CisgIEVYUEVDVF9FUShmaXJzdF9taWQsIHJlb2ZmZXJfY29udGVudHNbMF0ubmFt
ZSk7CisgIEVYUEVDVF9GQUxTRShyZW9mZmVyX2NvbnRlbnRzWzFdLnJlamVjdGVkKTsKKyAgRVhQ
RUNUX0VRKHNlY29uZF90eXBlXywgcmVvZmZlcl9jb250ZW50c1sxXS5tZWRpYV9kZXNjcmlwdGlv
bigpLT50eXBlKCkpOworICBzdGQ6OnN0cmluZyBzZWNvbmRfbWlkID0gcmVvZmZlcl9jb250ZW50
c1sxXS5uYW1lOworICBFWFBFQ1RfTkUoZmlyc3RfbWlkLCBzZWNvbmRfbWlkKTsKKworICAvLyBO
b3RlOiBDYW5ub3QgYWN0dWFsbHkgc2V0IHRoZSByZW9mZmVyIHNpbmNlIHRoZSBjYWxsZWUgaXMg
aW4gdGhlIHNpZ25hbGluZworICAvLyBzdGF0ZSAnaGF2ZS1yZW1vdGUtb2ZmZXInLgorfQorCiAv
LyBUZXN0IGFsbCBjb21iaW5hdGlvbnMgb2YgYXVkaW8gYW5kIHZpZGVvIGFzIHRoZSBmaXJzdCBh
bmQgc2Vjb25kIG1lZGlhIHR5cGUKIC8vIGZvciB0aGUgbWVkaWEgc2VjdGlvbi4gVGhpcyBpcyBu
ZWVkZWQgZm9yIGZ1bGwgdGVzdCBjb3ZlcmFnZSBiZWNhdXNlCiAvLyBNZWRpYVNlc3Npb24gaGFz
IHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyBhdWRpbyBhbmQgdmlkZW8gbWVkaWEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOTRlNzU0MjQ5ODFjZTQ3YjdiZTg1Mjc4NzEyNWIwMGUyMjdhNGNlLi4yMDdjYmRm
ODUzYjVkM2JiNzY0MjNjMzMyMGI5MDdkYThkNDQxYTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTgtMTItMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlY3ljbGluZyB0aGUgbSBzZWN0aW9uIHNob3VsZCB3b3JrIGlmIGl0IHdhcyByZWplY3RlZCBy
ZW1vdGVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
d2VicnRjL21zZWN0aW9uLXJlY3ljbGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYnJ0Yy9tc2VjdGlvbi1yZWN5Y2xpbmcuaHRtbDogQWRkZWQuCisKIDIwMTgtMTItMTIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGcmVl
VHlwZV0gUmVtb3ZlIEhhcmZCdXp6RmFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRj
L21zZWN0aW9uLXJlY3ljbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvbXNl
Y3Rpb24tcmVjeWNsaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDI5ODQ1Y2U5MjczZWRm
MWZiYmUzODhmOWIwYTMxYzI1M2RhYjgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2VicnRjL21zZWN0aW9uLXJlY3ljbGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgUmVjeWNsZSBtLXNlY3Rpb24gd2l0aCBkaWZmZXJlbnQgbWVkaWEgdHlwZSAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL21zZWN0aW9uLXJlY3ljbGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvd2VicnRjL21zZWN0aW9uLXJlY3ljbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMDNl
NWIzZjE3NTY0MzUzZjZkMzE5MjNkZmYwYWE4NTAxYzNiNzQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvbXNlY3Rpb24tcmVjeWNsaW5nLmh0bWwKQEAgLTAsMCArMSw2OCBA
QAorPCFkb2N0eXBlIGh0bWw+DQorPGh0bWw+DQorICAgIDxoZWFkPg0KKyAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPg0KKyAgICAgICAgPHRpdGxlPlRyeWluZyB0byByZWN5Y2xlIG0gc2Vj
dGlvbnM8L3RpdGxlPg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+DQorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4NCisgICAgPC9oZWFkPg0KKyAgICA8Ym9keT4N
CisgICAgICAgIDxzY3JpcHQ+DQorcHJvbWlzZV90ZXN0KGFzeW5jIHRlc3QgPT4gew0KKyAgICBj
b25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
YXVkaW86IHRydWUsIHZpZGVvOiB0cnVlfSk7DQorDQorICAgIGNvbnN0IGZpcnN0Q29ubmVjdGlv
biA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7c2RwU2VtYW50aWNzOid1bmlmaWVkLXBsYW4nfSk7
DQorICAgIGNvbnN0IHNlY29uZENvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe3Nk
cFNlbWFudGljczondW5pZmllZC1wbGFuJ30pOw0KKw0KKyAgICBmaXJzdENvbm5lY3Rpb24uYWRk
VHJhY2soc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIHN0cmVhbSk7DQorICAgIGZpcnN0Q29u
bmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsNCisg
ICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHtkaXJlY3Rpb246ICJy
ZWN2b25seSJ9KTsNCisgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIs
IHtkaXJlY3Rpb246ICJyZWN2b25seSJ9KTsNCisNCisgICAgbGV0IGRlc2MgPSBhd2FpdCBmaXJz
dENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKTsNCisgICAgYXdhaXQgZmlyc3RDb25uZWN0aW9uLnNl
dExvY2FsRGVzY3JpcHRpb24oZGVzYyk7DQorDQorICAgIGF3YWl0IHNlY29uZENvbm5lY3Rpb24u
c2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzYyk7DQorICAgIGNvbnN0IGRlc2MyID0gYXdhaXQgc2Vj
b25kQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoKTsNCisNCisgICAgbGV0IGxpbmVzID0gZGVzYzIu
c2RwLnRyaW0oKS5zcGxpdCgnXHJcbicpOw0KKw0KKyAgICBsZXQgY291bnRlcjsNCisgICAgZm9y
IChjb3VudGVyID0gMDsgY291bnRlciA8IGxpbmVzLmxlbmd0aDsgKytjb3VudGVyKSB7DQorICAg
ICAgICBpZiAobGluZXNbY291bnRlcl0gPT0gImE9bWlkOjIiKQ0KKyAgICAgICAgICAgIGJyZWFr
Ow0KKyAgICB9DQorICAgIGZvciAoO2NvdW50ZXIgPCBsaW5lcy5sZW5ndGg7ICsrY291bnRlcikg
ew0KKyAgICAgICAgaWYgKGxpbmVzW2NvdW50ZXJdLnN0YXJ0c1dpdGgoIm09dmlkZW8gIikpIHsN
CisgICAgICAgICAgICBsaW5lc1tjb3VudGVyXSA9ICJtPXZpZGVvIDAgUlRQL1NBVlBGIDAiOw0K
KyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAoY291bnRl
ciA9IDA7IGNvdW50ZXIgPCBsaW5lcy5sZW5ndGg7ICsrY291bnRlcikgew0KKyAgICAgICAgaWYg
KGxpbmVzW2NvdW50ZXJdID09ICJhPW1pZDozIikNCisgICAgICAgICAgICBicmVhazsNCisgICAg
fQ0KKw0KKyAgICBmb3IgKDtjb3VudGVyIDwgbGluZXMubGVuZ3RoOyArK2NvdW50ZXIpIHsNCisg
ICAgICAgIGlmIChsaW5lc1tjb3VudGVyXS5zdGFydHNXaXRoKCJtPWF1ZGlvICIpKQ0KKyAgICAg
ICAgICAgIGxpbmVzW2NvdW50ZXJdID0gIm09YXVkaW8gMCBSVFAvU0FWUEYgMCI7DQorICAgICAg
ICBlbHNlIGlmIChsaW5lc1tjb3VudGVyXS5zdGFydHNXaXRoKCJtPXZpZGVvICIpKQ0KKyAgICAg
ICAgICAgIGxpbmVzW2NvdW50ZXJdID0gIm09dmlkZW8gMCBSVFAvU0FWUEYgMCI7DQorICAgICAg
ICBlbHNlIGlmIChsaW5lc1tjb3VudGVyXSA9PT0gImE9aW5hY3RpdmUiIHx8IGxpbmVzW2NvdW50
ZXJdLnN0YXJ0c1dpdGgoImE9bWlkIikpIHsNCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAg
IGxpbmVzW2NvdW50ZXJdID0gIlhYWCI7DQorICAgIH0NCisgICAgbGluZXMgPSBsaW5lcy5maWx0
ZXIoKGxpbmUpID0+IHsgcmV0dXJuIGxpbmUgIT0gIlhYWCI7IH0pOw0KKw0KKyAgICBkZXNjMi5z
ZHAgPSBsaW5lcy5qb2luKCdcclxuJykgKyAnXHJcbic7DQorDQorICAgIGF3YWl0IGZpcnN0Q29u
bmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjMik7DQorDQorICAgIGZpcnN0Q29ubmVj
dGlvbi5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKTsNCisgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRy
YW5zY2VpdmVyKCJhdWRpbyIpOw0KKw0KKyAgICBhd2FpdCBmaXJzdENvbm5lY3Rpb24uY3JlYXRl
T2ZmZXIoKTsNCit9LCAiUmVjeWNsZSBtLXNlY3Rpb24gd2l0aCBkaWZmZXJlbnQgbWVkaWEgdHlw
ZSIpOw0KKyAgICAgICAgPC9zY3JpcHQ+DQorICAgIDwvYm9keT4NCis8L2h0bWw+DQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>