<?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>142569</bug_id>
          
          <creation_ts>2015-03-10 22:08:55 -0700</creation_ts>
          <short_desc>Use out-of-band messaging for RenderBox::firstLineBaseline() and RenderBox::inlineBlockBaseline()</short_desc>
          <delta_ts>2015-03-11 11:22:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076228</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-03-10 22:08:55 -0700</bug_when>
    <thetext>Use out-of-band messaging for RenderBox::firstLineBaseline() and RenderBox::inlineBlockBaseline()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076230</commentid>
    <comment_count>1</comment_count>
      <attachid>248398</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-03-10 22:11:35 -0700</bug_when>
    <thetext>Created attachment 248398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076361</commentid>
    <comment_count>2</comment_count>
      <attachid>248398</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-03-11 10:26:15 -0700</bug_when>
    <thetext>Comment on attachment 248398
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076378</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-03-11 11:22:36 -0700</bug_when>
    <thetext>Committed r181398: &lt;http://trac.webkit.org/changeset/181398&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248398</attachid>
            <date>2015-03-10 22:11:35 -0700</date>
            <delta_ts>2015-03-11 10:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142569-20150310221110.patch</filename>
            <type>text/plain</type>
            <size>50730</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhZTcyMDViYmJkZGQ2Y2NhMWQxMDJm
YTI5NDNjMmRmMWFhZmRjZmEuLjFmNTk2MTJmMGUwYjdhY2JjYzIxYzNjYTJmNDAyYWVjZjk5MzZm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugb3V0LW9mLWJhbmQgbWVzc2FnaW5n
IGZvciBSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgYW5kIFJlbmRlckJveDo6aW5saW5l
QmxvY2tCYXNlbGluZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDI1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcm92aWRlIGEgY2FsbGJhY2sgdG8gT3B0aW9uYWw6OnZhbHVlT3JDb21wdXRlKCkg
d2hpY2ggaXMgZXZhbHVhdGVkIG9ubHkgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgICogd3RmL09w
dGlvbmFsLmg6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9yQ29tcHV0ZSk6CisKIDIw
MTUtMDMtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBVc2UgdW5zaWduZWQgZm9yIEhhc2hTZXQgc2l6ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMGI1
NTkzNTMzOGJhMGNlN2NjZGRkZTM3MzE5YmRlZDgwZjk2YTg4Li4yZDMyOTZmZjIyZDFhNjc1NmZl
ZDE1YTY4YjczMjFmNzQ2ZWE3ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTUt
MDMtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2Ugb3V0LW9mLWJhbmQgbWVzc2FnaW5nIGZvciBSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgYW5kIFJlbmRlckJveDo6aW5saW5lQmxvY2tCYXNlbGluZSgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIFJlbmRlckJveDo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBhbmQgUmVuZGVyQm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lKCkg
cmV0dXJuIC0xIHRvIG1lYW4KKyAgICAgICAgdGhhdCBpdHMgYmFzZWxpbmUgc2hvdWxkIGJlIHNr
aXBwZWQuIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBzZW50aW5lbCB2YWx1ZSwgdGhpcyBwYXRjaCBj
aGFuZ2VzIHRoZQorICAgICAgICByZXR1cm4gdHlwZSBmcm9tIGludCB0byBPcHRpb25hbDxpbnQ+
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2Vs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxvY2tCYXNlbGluZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6
b250YWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZv
ckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNlbGxBYm92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2VsbEJlbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlOjpjZWxsQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlOjpjZWxsQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmZpcnN0
TGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2VsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNl
bGxCYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5l
QmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJh
Y3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6Zmlyc3RMaW5l
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxSb3c6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNj
cmlwdHM6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpm
aXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFz
ZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmZpcnN0TGluZUJhc2VsaW5l
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgor
CiAyMDE1LTAzLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBT
b21lIGV2ZW50IGhhbmRsZXIgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlv
bmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCmluZGV4IGFmODQ2MTcxODU4MDQ5YTMx
ZTk3ZjRjYWMzMzRlODYzMjlkNDA1MmYuLjhlN2RiYmU3NGY5NmFiM2Q5OWFmODM3MDJhMDUwYjky
MGFlMTNkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKKysrIGIvU291
cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAtMTU0LDYgKzE1NCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+CisgICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQorICAgICAgICAgICAgcmV0dXJuICphc1B0cigp
OworCisgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBj
b25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+
KCZtX3ZhbHVlKTsgfQogICAgIFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
Kj4oJm1fdmFsdWUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCBlZGUzNDNmOWIyNTliN2U5NGIxZTYwODM4NWI0OThkZDUxZTk1OWM3Li5mYTYwNGJmMGM5
N2UwZDU3ZjQ3MDkwYjA2ZmIzZmIyZTY3ZTcwMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTI4NDgsNyArMjg0OCw3IEBAIGludCBSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGlu
ZSwgTGluCiAgICAgICAgIGJvb2wgaWdub3JlQmFzZWxpbmUgPSAobGF5ZXIoKSAmJiAobGF5ZXIo
KS0+bWFycXVlZSgpIHx8IChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyAobGF5ZXIoKS0+
dmVydGljYWxTY3JvbGxiYXIoKSB8fCBsYXllcigpLT5zY3JvbGxZT2Zmc2V0KCkgIT0gMCkKICAg
ICAgICAgICAgIDogKGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSB8fCBsYXllcigpLT5z
Y3JvbGxYT2Zmc2V0KCkgIT0gMCkpKSkgfHwgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVi
eVJ1bigpKTsKICAgICAgICAgCi0gICAgICAgIGludCBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2Vs
aW5lID8gLTEgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIE9wdGlv
bmFsPGludD4gYmFzZWxpbmVQb3MgPSBpZ25vcmVCYXNlbGluZSA/IE9wdGlvbmFsPGludD4oKSA6
IGlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChp
c0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBIaXN0b3JpY2FsbHks
IHdlIGRpZCB0aGlzIGNoZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQgd2UgY2FuJ3QKQEAgLTI4
NTcsMTEgKzI4NTcsMTEgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAgIC8v
IGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgYXMgaWYgLXdlYmtpdC1saW5lLWNsYW1wIHdhc24ndCB1
c2VkLgogICAgICAgICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIHVzZSB0aGlzIGZvciBhbGwg
dXNlcyBvZiBkZXByZWNhdGVkIGZsZXhib3guCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRv
bU9mQ29udGVudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsg
cGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdS
aWdodCgpICsgY29udGVudFdpZHRoKCk7Ci0gICAgICAgICAgICBpZiAoYmFzZWxpbmVQb3MgPiBi
b3R0b21PZkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgYmFzZWxpbmVQb3MgPSAtMTsKKyAgICAg
ICAgICAgIGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGluZVBvcy52YWx1ZSgpID4gYm90dG9tT2ZD
b250ZW50KQorICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gT3B0aW9uYWw8aW50PigpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChiYXNlbGluZVBvcyAhPSAtMSkKLSAgICAgICAgICAgIHJl
dHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSArIGJhc2VsaW5l
UG9zIDogbWFyZ2luUmlnaHQoKSArIGJhc2VsaW5lUG9zOworICAgICAgICBpZiAoYmFzZWxpbmVQ
b3MpCisgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFy
Z2luVG9wKCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSArIGJhc2VsaW5l
UG9zLnZhbHVlKCk7CiAKICAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsK
ICAgICB9CkBAIC0yODgzLDQ1ICsyODgzLDQzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1p
bkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAg
ICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0
KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1pbnQg
UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPGludD4gUmVu
ZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5n
TW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjdXJyID0gZmly
c3RDaGlsZEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmdCb3goKSkgewogICAg
ICAgICBpZiAoIWN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAg
ICAgICAgICAgaW50IHJlc3VsdCA9IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCk7Ci0gICAgICAg
ICAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBjdXJyLT5sb2dp
Y2FsVG9wKCkgKyByZXN1bHQ7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4K
KyAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGN1cnItPmZpcnN0TGluZUJh
c2VsaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Vyci0+bG9n
aWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5h
dGUgc3BhY2UuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJu
IE9wdGlvbmFsPGludD4oKTsKIH0KIAotaW50IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitPcHRpb25hbDxpbnQ+
IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVE
aXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVi
eVJ1bigpKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KCk7CiAKICAgICBib29sIGhhdmVOb3JtYWxGbG93Q2hpbGQgPSBmYWxzZTsKICAgICBmb3IgKGF1
dG8gYm94ID0gbGFzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdC
b3goKSkgewogICAgICAgICBpZiAoYm94LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9
IHRydWU7Ci0gICAgICAgIGludCByZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGlu
ZURpcmVjdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gLTEpCi0gICAgICAgICAgICByZXR1
cm4gYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQ7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRp
bmF0ZSBzcGFjZS4KKyAgICAgICAgaWYgKE9wdGlvbmFsPGludD4gcmVzdWx0ID0gYm94LT5pbmxp
bmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0
ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxG
bG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBhdXRvJiBmb250TWV0cmlj
cyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgcmV0dXJuIGZvbnRN
ZXRyaWNzLmFzY2VudCgpCi0gICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGly
ZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0
KCkpIC8gMgotICAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUg
PyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmln
aHQoKSk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgp
CisgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyCisgICAgICAg
ICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKTsKICAgICB9CiAK
LSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIGlzUmVuZGVyQmxvY2tGbG93T3JSZW5kZXJCdXR0b24oUmVuZGVyRWxlbWVu
dCYgcmVuZGVyRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggMTdlNTIwMmNlM2RlNGY2M2ZjMThiY2E0Njc1MjIzMjZmNjI1MzM1OC4uM2I0OTE4MmM0YmFh
NzJjZTgyOWJkNDgxOGE0MTIxN2U1OTE0NDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTM0Niw4ICszNDYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKICAg
ICAKLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgaW50IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9j
a0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERl
bGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
dXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRz
LiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggZTUzMjQzODIzMDE2Yzk3ZGNmNjEyOWYwYTYwMTQxNWU3YWU0ZTEw
NS4uN2ZiZmRmNjc5YjFmMjI3MWY5N2E0NGUwMTgyNTRlOWE5ZWYxMDhjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTI5ODgsMzkgKzI5ODgs
MzkgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW4KICAgICB9CiB9CiAKLWludCBSZW5kZXJCbG9j
a0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01v
ZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KCk7CiAKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCiAgICAg
ICAgIHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIAogICAgIGlmICgh
aGFzTGluZXMoKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOwogCiAgICAgaWYgKGF1dG8gc2ltcGxlTGluZUxheW91dCA9IHRoaXMtPnNpbXBsZUxp
bmVMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93
Rmlyc3RMaW5lQmFzZWxpbmUoKnRoaXMsICpzaW1wbGVMaW5lTGF5b3V0KTsKKyAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oU2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUZsb3dGaXJzdExpbmVC
YXNlbGluZSgqdGhpcywgKnNpbXBsZUxpbmVMYXlvdXQpKTsKIAogICAgIEFTU0VSVChmaXJzdFJv
b3RCb3goKSk7CiAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJz
dExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGlu
ZVR5cGUoKSk7CiB9CiAKLWludCBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK09wdGlvbmFsPGludD4gUmVu
ZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVE
aXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVi
eVJ1bigpKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KCk7CiAKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJC
bG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKIAogICAgIGlmICghaGFz
TGluZXMoKSkgewogICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwogICAgICAgICBj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRy
aWNzKCk7Ci0gICAgICAgIHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoKQotICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKLSAgICAgICAgICAgICArIChsaW5l
RGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkg
OiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpOworICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQoKQorICAgICAgICAgICAgKyAobGluZUhlaWdodCh0
cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1l
dHJpY3MuaGVpZ2h0KCkpIC8gMgorICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jp
em9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSAr
IHBhZGRpbmdSaWdodCgpKSk7CiAgICAgfQogCiAgICAgLy8gTm90ZSB0aGF0IGhlcmUgd2Ugb25s
eSB0YWtlIHRoZSBsZWZ0IGFuZCBib3R0b20gaW50byBjb25zaWRlcmF0aW9uLiBPdXIgY2FsbGVy
IHRha2VzIHRoZSByaWdodCBhbmQgdG9wIGludG8gY29uc2lkZXJhdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCAyYWRmZDcwOGFhOGI3YTA5OWUw
NGFjMzRmZTQzNjY1NmFjYzNkMjc5Li4zMzBmZDM3YzVmYzY2ZjRiMDBhN2NlMWVjMDk0NDgwYmJi
NmYyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBA
IC00NDQsOCArNDQ0LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09i
amVjdHMoKTsKIAotICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGlu
bGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBib29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IDVjN2RiYWIzMGFkMDQ3NjIxYzdkNTE3NTQwZmM3YWI5ZDdi
MDBjNjAuLmYyNGIyMWE2MWM0YzY4OGVlMTExMzg2OTE0NmM4ZDRmOTM1YzQ3MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTUyMSw4ICs1MjEsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpIGNvbnN0
OwogICAgIAotICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgeyByZXR1
cm4gLTE7IH0KLSAgICB2aXJ0dWFsIGludCBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCB7IHJldHVybiAtMTsgfSAvLyBSZXR1cm5zIC0xIGlmIHdlIHNob3VsZCBz
a2lwIHRoaXMgYm94IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxv
Y2suCisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
eyByZXR1cm4gT3B0aW9uYWw8aW50PigpOyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGlu
bGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJuIE9wdGlv
bmFsPGludD4oKTsgfSAvLyBSZXR1cm5zIGVtcHR5IGlmIHdlIHNob3VsZCBza2lwIHRoaXMgYm94
IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCiAKICAgICBi
b29sIHNocmlua1RvQXZvaWRGbG9hdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRz
RmxvYXRzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDJjMWE1MDdhNDk5MjNkYmI1NWVh
YTg0N2MwMWFiNzVjN2IyZWQ5ZWYuLjk3ZTc1NTBiOGZhMWZhNDJhOWMyNjE0MGI2ZmNjYzg3MWJl
OTM2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC00MzMsOSArNDMzLDcgQEAgdm9pZCBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENo
aWxkcmVuKQogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cg
aGVpZ2h0LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCQkFTRUxJTkUp
IHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVC
YXNlbGluZSgpOwotICAgICAgICAgICAgICAgIGlmIChhc2NlbnQgPT0gLTEpCi0gICAgICAgICAg
ICAgICAgICAgIGFzY2VudCA9IGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20o
KTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVC
YXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgp
KTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+
dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUxMCw5ICs1MDgsNyBAQCB2
b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29s
IHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBjaGlsZC0+
bWFyZ2luVG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhlaWdodCgpIC0g
KGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSkgLyAyKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCQkFTRUxJ
TkU6IHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmly
c3RMaW5lQmFzZWxpbmUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFzY2VudCA9PSAtMSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFzY2VudCA9IGNoaWxkLT5oZWlnaHQoKSArIGNoaWxk
LT5tYXJnaW5Cb3R0b20oKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQg
PSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNo
aWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGls
ZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBjaGlsZC0+bWFy
Z2luVG9wKCkgKyAobWF4QXNjZW50IC0gYXNjZW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApp
bmRleCA1ZjMyZTk0ZWQ1ZDU4NDk5OTBhNjM3YWVhOWQ2OGRmMDkwN2UyZTNkLi5lOTEzOWI4MDc5
YWRmMGQ5MmQ4YzRkZWI5OTExMWRkNDY2ZTc4ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE2OSwxOCArMTY5LDE2IEBAIHN0YXRp
YyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYg
Ym94LCBMaW5lRGlyZWN0aW9uCiAKIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNl
bGluZSgpOwotICAgIGlmIChiYXNlbGluZSA9PSAtMSkKLSAgICAgICAgYmFzZWxpbmUgPSBzeW50
aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbik7CisgICAgaW50
IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRoZXNpemVkQmFzZWxp
bmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CiAKICAgICBpbnQgbWFyZ2luQXNj
ZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5S
aWdodCgpOwogICAgIHJldHVybiBiYXNlbGluZSArIG1hcmdpbkFzY2VudDsKIH0KIAotaW50IFJl
bmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxpbnQ+
IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzV3JpdGluZ01vZGVSb290KCkgfHwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExp
bmUgPD0gMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50
PigpOwogICAgIFJlbmRlckJveCogYmFzZWxpbmVDaGlsZCA9IDA7CiAgICAgaW50IGNoaWxkTnVt
YmVyID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBtX29yZGVySXRlcmF0b3IuZmly
c3QoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkgewpAQCAtMTk5LDI4
ICsxOTcsMjcgQEAgaW50IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gLTE7
CisgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CiAKICAgICBpZiAoIWlzQ29sdW1uRmxv
dygpICYmIGhhc09ydGhvZ29uYWxGbG93KCpiYXNlbGluZUNoaWxkKSkKLSAgICAgICAgcmV0dXJu
IGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQt
PmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Jvc3NBeGlzRXh0
ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgp
KTsKICAgICBpZiAoaXNDb2x1bW5GbG93KCkgJiYgIWhhc09ydGhvZ29uYWxGbG93KCpiYXNlbGlu
ZUNoaWxkKSkKLSAgICAgICAgcmV0dXJuIG1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5l
Q2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PihtYWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2Vs
aW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CiAKLSAgICBpbnQgYmFzZWxpbmUgPSBiYXNlbGluZUNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpOwotICAgIGlmIChiYXNlbGluZSA9PSAtMSkgeworICAg
IE9wdGlvbmFsPGludD4gYmFzZWxpbmUgPSBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGlu
ZSgpOworICAgIGlmICghYmFzZWxpbmUpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBw
YXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQm94QmFzZWxpbmUgYW5kIHN0b3AgYmFpbGlu
ZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUgcm9vdC4KICAgICAgICAgLy8gVGhpcyB3b3Vs
ZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBmbGV4Ym94IGlzIG9ydGhvZ29uYWwgdG8g
aXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uID0gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwot
ICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCpiYXNlbGlu
ZUNoaWxkLCBkaXJlY3Rpb24pICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpOworICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3go
KmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkp
OwogICAgIH0KIAotICAgIHJldHVybiBiYXNlbGluZSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxU
b3AoKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8aW50PihiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKIH0KIAotaW50IFJlbmRlckZsZXhpYmxlQm94Ojppbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3QKK09wdGlv
bmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVj
dGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAogewotICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGlu
ZUJhc2VsaW5lKCk7Ci0gICAgaWYgKGJhc2VsaW5lICE9IC0xKQorICAgIGlmIChPcHRpb25hbDxp
bnQ+IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKSkKICAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsKQEAgLTgxOCw5ICs4MTUsNyBAQCBib29s
IFJlbmRlckZsZXhpYmxlQm94Ojp1cGRhdGVBdXRvTWFyZ2luc0luQ3Jvc3NBeGlzKFJlbmRlckJv
eCYgY2hpbGQsIExheW91dFVuaQogCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjptYXJn
aW5Cb3hBc2NlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkKQogewotICAgIExheW91dFVuaXQg
YXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKTsKLSAgICBpZiAoYXNjZW50ID09IC0x
KQotICAgICAgICBhc2NlbnQgPSBjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCk7CisgICAg
TGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY3Jv
c3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxvd0F3
YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDYzOTI1NzM1MzBmMmRkN2E5M2Y3MThh
OTUyNzI2N2FlZmIzNjg2NGYuLmJiYmMzZWRlODcwODRmMzIxM2MwN2QyZjk2NzVlZTdlMGFkMDk0
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBA
IC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3Zl
cnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2Rl
ID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50
IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludENo
aWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWludEluZm8m
IGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggNDAwYmM3YWY0MGU2MDQxOGYxZDc4YmJi
ZTdjODBlZDZlZmVlYzNjYi4uNzEzZGMyZDY5MjAxNzBlNDgzOTRlMzA5NzdjNmI2YjgxMDkzODZi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTEyMyw4
ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpi
YXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgcG9zaXRpb24p
OwogICAgIH0KLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9Ci0gICAgdmly
dHVhbCBpbnQgaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24p
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5l
KGRpcmVjdGlvbik7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxp
bmUoKTsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVy
QmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQogCiAgICAgdm9pZCBnZXRJ
dGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImLCBib29sJiBpdGVt
SGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggYzAwYzhkN2MyYjY4Y2RhMWE1NzkyOGVkZDRhZmFhZGZm
ZTQ5NzAxMS4uNThmNzgyODM5ODEyM2ZmNGZmOTNkMzc5MDZjM2NhZjA2MzQyNGZhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBA
QCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWJvdmUoY29uc3QgUmVuZGVyVGFi
bGVDZWxsKiBjZWxsKSBjb25zdAogCiAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiBhbmQgcm93IHRv
IGxvb2sgaW4KICAgICB1bnNpZ25lZCByID0gY2VsbC0+cm93SW5kZXgoKTsKLSAgICBSZW5kZXJU
YWJsZVNlY3Rpb24qIHNlY3Rpb24gPSAwOworICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlv
biA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgckFib3ZlID0gMDsKICAgICBpZiAociA+IDApIHsK
ICAgICAgICAgLy8gY2VsbCBpcyBub3QgaW4gdGhlIGZpcnN0IHJvdywgc28gdXNlIHRoZSBhYm92
ZSByb3cgaW4gaXRzIG93biBzZWN0aW9uCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBSZW5kZXJUYWJs
ZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWJvdmUoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxs
KSBjb25zdAogICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3QmIGFib3ZlQ2Vs
bCA9IHNlY3Rpb24tPmNlbGxBdChyQWJvdmUsIGVmZkNvbCk7CiAgICAgICAgIHJldHVybiBhYm92
ZUNlbGwucHJpbWFyeUNlbGwoKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpj
ZWxsQmVsb3coY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdApAQCAtMTM2MSw3ICsx
MzYxLDcgQEAgUmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZTo6Y2VsbEJlbG93KGNvbnN0IFJl
bmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKIAogICAgIC8vIEZpbmQgdGhlIHNlY3Rpb24gYW5k
IHJvdyB0byBsb29rIGluCiAgICAgdW5zaWduZWQgciA9IGNlbGwtPnJvd0luZGV4KCkgKyBjZWxs
LT5yb3dTcGFuKCkgLSAxOwotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IDA7Cisg
ICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBy
QmVsb3cgPSAwOwogICAgIGlmIChyIDwgY2VsbC0+c2VjdGlvbigpLT5udW1Sb3dzKCkgLSAxKSB7
CiAgICAgICAgIC8vIFRoZSBjZWxsIGlzIG5vdCBpbiB0aGUgbGFzdCByb3csIHNvIHVzZSB0aGUg
bmV4dCByb3cgaW4gdGhlIHNlY3Rpb24uCkBAIC0xMzc5LDcgKzEzNzksNyBAQCBSZW5kZXJUYWJs
ZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQmVsb3coY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxs
KSBjb25zdAogICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb246OkNlbGxTdHJ1Y3QmIGJlbG93Q2Vs
bCA9IHNlY3Rpb24tPmNlbGxBdChyQmVsb3csIGVmZkNvbCk7CiAgICAgICAgIHJldHVybiBiZWxv
d0NlbGwucHJpbWFyeUNlbGwoKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpj
ZWxsQmVmb3JlKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKQEAgLTEzODksNyAr
MTM4OSw3IEBAIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVyVGFibGU6OmNlbGxCZWZvcmUoY29uc3Qg
UmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2Vj
dGlvbiA9IGNlbGwtPnNlY3Rpb24oKTsKICAgICB1bnNpZ25lZCBlZmZDb2wgPSBjb2xUb0VmZkNv
bChjZWxsLT5jb2woKSk7CiAgICAgaWYgKCFlZmZDb2wpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBJZiB3ZSBoaXQgYSBjb2xzcGFuIGJh
Y2sgdXAgdG8gYSByZWFsIGNlbGwuCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0
JiBwcmV2Q2VsbCA9IHNlY3Rpb24tPmNlbGxBdChjZWxsLT5yb3dJbmRleCgpLCBlZmZDb2wgLSAx
KTsKQEAgLTE0MDIsMTMgKzE0MDIsMTMgQEAgUmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZTo6
Y2VsbEFmdGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKIAogICAgIHVuc2ln
bmVkIGVmZkNvbCA9IGNvbFRvRWZmQ29sKGNlbGwtPmNvbCgpICsgY2VsbC0+Y29sU3BhbigpKTsK
ICAgICBpZiAoZWZmQ29sID49IG51bUVmZkNvbHMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlD
ZWxsQXQoY2VsbC0+cm93SW5kZXgoKSwgZWZmQ29sKTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRl
clRhYmxlOjpmaXJzdExpbmVCbG9jaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUZpcnN0TGV0dGVyKCkK
QEAgLTE0MTcsNDAgKzE0MTcsMzcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlRmlyc3RMZXR0
ZXIoKQogCiBpbnQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwg
TGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIExheW91dFVu
aXQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwotICAgIGlmIChiYXNlbGluZSAhPSAt
MSkKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lOwotCi0gICAgcmV0dXJuIFJlbmRlckJveDo6YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9z
aXRpb25Nb2RlKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yQ29tcHV0
ZShbJl0geworICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2Vs
aW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOworICAgIH0p
OwogfQogCi1pbnQgUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUpIGNvbnN0CitPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAogewogICAgIC8vIFRhYmxlcyBhcmUgc2tpcHBl
ZCB3aGVuIGNvbXB1dGluZyBhbiBpbmxpbmUtYmxvY2sncyBiYXNlbGluZS4KLSAgICByZXR1cm4g
LTE7CisgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKIH0KIAotaW50IFJlbmRlclRhYmxlOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJhc2VsaW5lIG9mIGEgJ3RhYmxl
JyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFzZWxpbmUgcGVyIENTUyAzIEZs
ZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0aGUgYmFzZWxpbmUgb2YgYSAn
dGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8vIFRoaXMgaXMgYWxzbyBuZWVk
ZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaWYgaXQgaGFz
IGEgdGFibGUgY2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSkKLSAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwogCiAgICAgcmVjYWxj
U2VjdGlvbnNJZk5lZWRlZCgpOwogCiAgICAgY29uc3QgUmVuZGVyVGFibGVTZWN0aW9uKiB0b3BO
b25FbXB0eVNlY3Rpb24gPSB0aGlzLT50b3BOb25FbXB0eVNlY3Rpb24oKTsKICAgICBpZiAoIXRv
cE5vbkVtcHR5U2VjdGlvbikKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PigpOwogCi0gICAgaW50IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5m
aXJzdExpbmVCYXNlbGluZSgpOwotICAgIGlmIChiYXNlbGluZSA+IDApCi0gICAgICAgIHJldHVy
biB0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lOworICAgIGlmIChP
cHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNl
bGluZSgpKQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pih0b3BOb25FbXB0eVNlY3Rpb24t
PmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IEEgdGFi
bGUgcm93IGFsd2F5cyBoYXMgYSBiYXNlbGluZSBwZXIgQ1NTIDIuMS4gV2lsbCB0aGlzIHJldHVy
biB0aGUgcmlnaHQgdmFsdWU/Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyVGFibGU6Om92ZXJmbG93Q2xpcFJlY3QoY29u
c3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxheVNj
cm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5LCBQYWludFBoYXNlIHBoYXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBlMTZhYjkzODQ5NDk1OGM5NDlmZjE0
MzA3MDU4MDZjNTgxOWY2OTk5Li5lZjgzYzIxNzEwNjAxMzFhNGY3ODA2ZGUzZWYyM2EzMGFlYjA5
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjk5LDggKzI5
OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBpbnQgaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwog
CiAgICAgUmVuZGVyVGFibGVDb2wqIHNsb3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCog
c3RhcnRFZGdlLCBib29sKiBlbmRFZGdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCA4NmU5ZDYxNjA3MzBmNzM4NjJmYzVlZGQ4
Y2ZkZmRlMzZjMGNiNDhjLi5hYjcxMzdkNzNiOTc4NTg2YWRkODk5ZGFiYjY4NGEwOWMzODU0Njk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAt
MzkzLDEwICszOTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5l
UG9zaXRpb24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L0NSLUNT
UzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFzZWxpbmUgb2Yg
YSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1mbG93IGxpbmUg
Ym94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgaW4gdGhlIGNl
bGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBubyBzdWNoIGxp
bmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVu
dCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICBMYXlvdXRVbml0IGJhc2VsaW5lID0gZmlyc3RM
aW5lQmFzZWxpbmUoKTsKLSAgICBpZiAoYmFzZWxpbmUgIT0gLTEpCi0gICAgICAgIHJldHVybiBi
YXNlbGluZTsKLSAgICByZXR1cm4gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExv
Z2ljYWxIZWlnaHQoKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCiB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggMDE2MjA2ZDNjM2Y5MjhmYTAxNGUyZGE4
ZTUyY2RiNjI3MThkOWZiNC4uMzliMTg5ZTQ0ZWYyNjI1ZDVkN2FjNWUxM2EyYWI4NGE2YmRlNjY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKQEAgLTkwOCwyNiArOTA4LDI4IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNP
dXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVuZCgp
OwogfQogCi1pbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogewogICAgIGlmICghbV9ncmlkLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwogCiAgICAgaW50IGZpcnN0TGluZUJhc2VsaW5l
ID0gbV9ncmlkWzBdLmJhc2VsaW5lOwogICAgIGlmIChmaXJzdExpbmVCYXNlbGluZSkKICAgICAg
ICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgbV9yb3dQb3NbMF07CiAKLSAgICBmaXJzdExp
bmVCYXNlbGluZSA9IC0xOworICAgIE9wdGlvbmFsPGludD4gcmVzdWx0OwogICAgIGNvbnN0IFJv
dyYgZmlyc3RSb3cgPSBtX2dyaWRbMF0ucm93OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Zmlyc3RSb3cuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3MgPSBm
aXJzdFJvdy5hdChpKTsKICAgICAgICAgY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3Mu
cHJpbWFyeUNlbGwoKTsKICAgICAgICAgLy8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBh
IGJhc2VsaW5lCi0gICAgICAgIGlmIChjZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0
KCkpCi0gICAgICAgICAgICBmaXJzdExpbmVCYXNlbGluZSA9IHN0ZDo6bWF4PGludD4oZmlyc3RM
aW5lQmFzZWxpbmUsIGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRlckFuZFBhZGRpbmdC
ZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBpZiAoY2Vs
bCAmJiBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKSB7CisgICAgICAgICAgICBpbnQgY2Fu
ZGlkYXRlID0gY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9y
ZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CisgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmU7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNDNlNzg4ODk3YWUwMmNiMWMx
MmNlNzM3MTU4ODg5YTRkNjEzNmVhMC4uMmE3MTYxOTQ2ODQ4YTI5MDBmOWVmYjQ3ZWQ5ODUyNmJi
MTI5ODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwqLCBSZW5kZXJU
YWJsZVJvdyogcm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaAppbmRleCAxMjczOTRhOGJjMmQ0MWIwMDg1ZmI3NmE4ODJmMzg2OTdkMmVhZjAyLi40
YmQxOTMwZWM1YWE4ZjhjZGI4OGY4Mzg5MDM0M2MwNDI4ZGY1MzQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAg
dmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBS
ZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIHZpcnR1YWwgaW50IGlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9
CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KKyAgICB2
aXJ0dWFsIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVC
bG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCA2NTdmY2Nj
YTMyYjYxZjkzMzE3YTZmOGJiN2MxZmE1N2ZjNTZhYWJmLi43YWE1NGZiOGMyMTNkMDM4ZTE5ODMx
YmQ5MjUxMTBhMTg3Y2U0ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtNzIsMTEgKzcyLDEwIEBAIGludCBS
ZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlLCBib29sIGZpcnN0TGluCiAgICAgaWYgKGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25P
ZkludGVyaW9yTGluZUJveGVzKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBMYXlvdXRV
bml0IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKTsgLy8gRklYTUU6IFRoaXMgbWF5IGJl
IHVubmVjZXNzYXJ5IGFmdGVyIGZsZXggYmFzZWxpbmVzIGFyZSBpbXBsZW1lbnRlZCAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTg4KS4KLSAgICBpZiAoYmFzZWxp
bmUgIT0gLTEpCi0gICAgICAgIHJldHVybiBiYXNlbGluZTsKLSAgICAKLSAgICByZXR1cm4gUmVu
ZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUs
IGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CisgICAgLy8gRklYTUU6IFRoaXMgbWF5IGJl
IHVubmVjZXNzYXJ5IGFmdGVyIGZsZXggYmFzZWxpbmVzIGFyZSBpbXBsZW1lbnRlZCAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTg4KS4KKyAgICByZXR1cm4gZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgICAgICByZXR1cm4gUmVu
ZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUs
IGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CisgICAgfSk7CiB9CiAKIGNvbnN0IGNoYXIq
IFJlbmRlck1hdGhNTEJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKQEAgLTI5OSw3ICsyOTgsNyBA
QCBib29sIHBhcnNlTWF0aE1MTmFtZWRTcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZywgTGF5b3V0
VW5pdCYgbGVuZ3RoVmFsdWUsIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgUmVu
ZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPGludD4g
UmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBJ
biBsZWdhbCBNYXRoTUwsIHdlJ2xsIGhhdmUgYSBNYXRoTUwgcGFyZW50LiBUaGF0IFJlbmRlckZs
ZXhpYmxlQm94IHBhcmVudCB3aWxsIHVzZSBvdXIgZmlyc3RMaW5lQmFzZWxpbmUoKSBmb3IgYmFz
ZWxpbmUgYWxpZ25tZW50LCBwZXIKICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mz
LWZsZXhib3gvI2ZsZXgtYmFzZWxpbmVzLiBXZSB3YW50IHRvIHZlcnRpY2FsbHkgY2VudGVyIGFu
IDxtdGFibGU+LCBzdWNoIGFzIGEgbWF0cml4LiBFc3NlbnRpYWxseSB0aGUgd2hvbGUgPG10YWJs
ZT4gZWxlbWVudCBmaXRzIG9uIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBiNDk0MDE3ZGEwMzk5NzU1ZmFjYTViNTZl
Zjc5MDg1NWQ3NTE5ZTIxLi5mMmNlZmU2MmQyZTNhZWRkMDNlZmU5NTg1N2IxNjQ3Yjc3NDE1MWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1OWZm
YjA3MzM5NmY4NWYzZWEyMDUzNmFhMGQ2MGI2M2M1YjM5ZjkwLi45NzU2YmE2NmU4MTM5MTNiODZm
Nzg5MTdlOGQ0ZWNmMTgzZWU2MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtMTU5LDEwICsxNTks
MTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5l
KGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsg
ZGVub21pbmF0b3JXcmFwcGVyLT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSkpOwogfQogCi1pbnQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyQm94KiBkZW5vbWluYXRv
cldyYXBwZXIgPSBsYXN0Q2hpbGRCb3goKSkKLSAgICAgICAgcmV0dXJuIGRlbm9taW5hdG9yV3Jh
cHBlci0+bG9naWNhbFRvcCgpICsgc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKChtX2xpbmVUaGlj
a25lc3MgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKSAvIDIpKTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oZGVub21pbmF0b3JXcmFwcGVyLT5sb2dpY2FsVG9wKCkgKyBz
dGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoKG1fbGluZVRoaWNrbmVzcyArIHN0eWxlKCkuZm9udE1l
dHJpY3MoKS54SGVpZ2h0KCkpIC8gMikpKTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6
OmZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCAzNmY1NDRhYzc3NGY2
NDY4ODkzZDg1YWQ4YWM5ODEwMmZhODYwM2QyLi43M2MwYjZjNDlkNmRkZDliYzg0YjRiNTdiZGVk
NjI5ZTFiYjM0ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IGNkM2QyMjFiMTE0ZjZl
YWRiNzNiNzBlMWYwYjQxZTExMTIxOGM3YjYuLjkzOGY2YmM4ZTBkMGY1OWM0NzMyYzk5MzFjODU4
MjMyMWNlY2U3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0xNzM3LDEwICsxNzM3LDEwIEBAIHZv
aWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZVN0eWxlKCkKICAgICB9CiB9CiAKLWludCBS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8
aW50PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewog
ICAgIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgIT0gRHJhd05vcm1hbCkKLSAgICAgICAgcmV0
dXJuIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmU7CisgICAgICAgIHJldHVybiBPcHRpb25h
bDxpbnQ+KG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUpOwogICAgIHJldHVybiBSZW5kZXJN
YXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDM4
Y2Q4MzBmZjAwODRhZjRmYzQyMDRiOTA2ZjQ2NzgwMjI5NmE5MTEuLjFhM2JlYmE2ZTM3ZDgxZGI1
NGYzYWYwZTMzYjRiMjNhY2I2NzIwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTE1NCw3ICsxNTQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNJbnZpc2libGVPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJu
IDB4MjA2MSA8PSBtX3RleHRDb250ZW50ICYmIG1fdGV4dENvbnRlbnQgPD0gMHgyMDY0OyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlIHsgcmV0dXJuIHRo
aXM7IH0KICAgICB2b2lkIHJlYnVpbGRUb2tlbkNvbnRlbnQoY29uc3QgU3RyaW5nJiBvcGVyYXRv
clN0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcAppbmRleCAzZTRhZWU5MzBlODUxNTg4YjdjNjE2NjJkYTQyNjgwYjY4ZjRmNWNhLi44
NzVhNmZkN2JjMTQ4YzY4ZGZhYTFlMGJiNDk5YTZjMzNjOTQyNjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTI1
MCwxMSArMjUwLDExIEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6dXBkYXRlU3R5bGUoKQogICAg
IH0KIH0KIAotaW50IFJlbmRlck1hdGhNTFJvb3Q6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
K09wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUm9vdDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAogewogICAgIGlmICghaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gYmFzZSA9IGJhc2VXcmFw
cGVyKCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYmFzZS0+Zmly
c3RMaW5lQmFzZWxpbmUoKSArIGJhc2UtPm1hcmdpblRvcCgpKSk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYmFzZS0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9y
KC0xKSArIGJhc2UtPm1hcmdpblRvcCgpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFJlbmRlck1h
dGhNTEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwpAQCAtMjg1LDkgKzI4NSw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkKICAgICBpZiAocmFkaWNhbCkgewogICAgICAgICAv
LyBXZSBzdHJldGNoIHRoZSByYWRpY2FsIHNpZ24gdG8gY292ZXIgdGhlIGhlaWdodCBvZiB0aGUg
YmFzZSB3cmFwcGVyLgogICAgICAgICBmbG9hdCBiYXNlSGVpZ2h0ID0gYmFzZS0+bG9naWNhbEhl
aWdodCgpOwotICAgICAgICBmbG9hdCBiYXNlSGVpZ2h0QWJvdmVCYXNlbGluZSA9IGJhc2UtPmZp
cnN0TGluZUJhc2VsaW5lKCk7Ci0gICAgICAgIGlmIChiYXNlSGVpZ2h0QWJvdmVCYXNlbGluZSA9
PSAtMSkKLSAgICAgICAgICAgIGJhc2VIZWlnaHRBYm92ZUJhc2VsaW5lID0gYmFzZUhlaWdodDsK
KyAgICAgICAgZmxvYXQgYmFzZUhlaWdodEFib3ZlQmFzZWxpbmUgPSBiYXNlLT5maXJzdExpbmVC
YXNlbGluZSgpLnZhbHVlT3IoYmFzZUhlaWdodCk7CiAgICAgICAgIGZsb2F0IGJhc2VEZXB0aEJl
bG93QmFzZWxpbmUgPSBiYXNlSGVpZ2h0IC0gYmFzZUhlaWdodEFib3ZlQmFzZWxpbmU7CiAgICAg
ICAgIGJhc2VIZWlnaHRBYm92ZUJhc2VsaW5lICs9IG1fdmVydGljYWxHYXA7CiAgICAgICAgIHJh
ZGljYWwtPnN0cmV0Y2hUbyhiYXNlSGVpZ2h0QWJvdmVCYXNlbGluZSwgYmFzZURlcHRoQmVsb3dC
YXNlbGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm9vdC5oCmluZGV4IGFhNGM4OTk3MTI0MDhkMTIzNjdlYjRlMjA1NjJjNGNhOGQ5N2Ji
ODkuLmJiZjJkOWIyNTQ3MDM0OWM1NGIxZmZlNjg2MDhhNzkyNWUxZmY2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCkBAIC02
MCw3ICs2MCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTWF0aE1MUm9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWF0aE1MUm9vdCI7IH0KLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3R5bGUoKTsKICAgICB2
b2lkIHJlc3RydWN0dXJlV3JhcHBlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCmluZGV4IDY2OTNmNjcyYWYxNThhOTU2
NDA2NDI5ZGEwMGI1NGQ0MTE3ZWIwYjEuLmNjN2EzMDI1NGI4NTM4ZjczMjVmY2VhYzI2MWU4Yzhk
NjE3ZDQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvdy5jcHAKQEAgLTgxLDEzICs4MSwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTFJv
dzo6bGF5b3V0KCkKICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZEhlaWdodEFib3ZlQmFzZWxpbmUg
PSAwLCBjaGlsZERlcHRoQmVsb3dCYXNlbGluZSA9IDA7CiAgICAgICAgIGlmIChpczxSZW5kZXJN
YXRoTUxCbG9jaz4oKmNoaWxkKSkgewogICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2smIG1h
dGhtbENoaWxkID0gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpjaGlsZCk7Ci0gICAgICAg
ICAgICBjaGlsZEhlaWdodEFib3ZlQmFzZWxpbmUgPSBtYXRobWxDaGlsZC5maXJzdExpbmVCYXNl
bGluZSgpOwotICAgICAgICAgICAgaWYgKGNoaWxkSGVpZ2h0QWJvdmVCYXNlbGluZSA9PSAtMSkK
LSAgICAgICAgICAgICAgICBjaGlsZEhlaWdodEFib3ZlQmFzZWxpbmUgPSBtYXRobWxDaGlsZC5s
b2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBjaGlsZEhlaWdodEFib3ZlQmFzZWxpbmUgPSBt
YXRobWxDaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IobWF0aG1sQ2hpbGQubG9naWNh
bEhlaWdodCgpKTsKICAgICAgICAgICAgIGNoaWxkRGVwdGhCZWxvd0Jhc2VsaW5lID0gbWF0aG1s
Q2hpbGQubG9naWNhbEhlaWdodCgpIC0gY2hpbGRIZWlnaHRBYm92ZUJhc2VsaW5lOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzPFJlbmRlck1hdGhNTFRhYmxlPigqY2hpbGQpKSB7CiAgICAgICAgICAg
ICBSZW5kZXJNYXRoTUxUYWJsZSYgdGFibGVDaGlsZCA9IGRvd25jYXN0PFJlbmRlck1hdGhNTFRh
YmxlPigqY2hpbGQpOwotICAgICAgICAgICAgY2hpbGRIZWlnaHRBYm92ZUJhc2VsaW5lID0gdGFi
bGVDaGlsZC5maXJzdExpbmVCYXNlbGluZSgpOworICAgICAgICAgICAgY2hpbGRIZWlnaHRBYm92
ZUJhc2VsaW5lID0gdGFibGVDaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoLTEpOwog
ICAgICAgICAgICAgY2hpbGREZXB0aEJlbG93QmFzZWxpbmUgPSB0YWJsZUNoaWxkLmxvZ2ljYWxI
ZWlnaHQoKSAtIGNoaWxkSGVpZ2h0QWJvdmVCYXNlbGluZTsKICAgICAgICAgfSBlbHNlIGlmIChp
czxSZW5kZXJCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNoaWxkSGVpZ2h0QWJvdmVCYXNl
bGluZSA9IGRvd25jYXN0PFJlbmRlckJveD4oKmNoaWxkKS5sb2dpY2FsSGVpZ2h0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcAppbmRleCAwNTY2NGQ3M2I5OTVkMWIxZWIzNWMxNzY2ZTA1NWM4ZmY3Nzc2NDlmLi5k
NzBiNmE5Y2UyZjI2ZmEyM2M0YmZjNjQxNjBiNzBiODU3MDAxNTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAK
QEAgLTI4MCw5ICsyODAsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgpCiAg
ICAgLy8gYmVsb3cgdGhlIGJhc2UncyB0b3AgZWRnZSwgb3IgdGhlIHN1YnNjcmlwdCdzIGJvdHRv
bSBlZGdlIGFib3ZlIHRoZSBiYXNlJ3MgYm90dG9tIGVkZ2UuCiAKICAgICBMYXlvdXRVbml0IGJh
c2VIZWlnaHQgPSBiYXNlLT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgTGF5b3V0VW5pdCBiYXNlQmFz
ZWxpbmUgPSBiYXNlLT5maXJzdExpbmVCYXNlbGluZSgpOwotICAgIGlmIChiYXNlQmFzZWxpbmUg
PT0gLTEpCi0gICAgICAgIGJhc2VCYXNlbGluZSA9IGJhc2VIZWlnaHQ7CisgICAgTGF5b3V0VW5p
dCBiYXNlQmFzZWxpbmUgPSBiYXNlLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYmFzZUhl
aWdodCk7CiAgICAgTGF5b3V0VW5pdCBheGlzID0gc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWln
aHQoKSAvIDI7CiAgICAgaW50IGZvbnRTaXplID0gc3R5bGUoKS5mb250U2l6ZSgpOwogCkBAIC0z
MTQsOSArMzEyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQogCiAgICAg
ICAgIGlmIChSZW5kZXJCb3gqIHN1cGVyc2NyaXB0ID0gbV9raW5kID09IFN1YiA/IDAgOiBzdWJT
dXBQYWlyLT5sYXN0Q2hpbGRCb3goKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBzdXBlcnNj
cmlwdEhlaWdodCA9IHN1cGVyc2NyaXB0LT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBM
YXlvdXRVbml0IHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdC0+Zmlyc3RMaW5lQmFz
ZWxpbmUoKTsKLSAgICAgICAgICAgIGlmIChzdXBlcnNjcmlwdEJhc2VsaW5lID09IC0xKQotICAg
ICAgICAgICAgICAgIHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdEhlaWdodDsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgc3VwZXJzY3JpcHRCYXNlbGluZSA9IHN1cGVyc2NyaXB0LT5m
aXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Ioc3VwZXJzY3JpcHRIZWlnaHQpOwogICAgICAgICAg
ICAgTGF5b3V0VW5pdCBtaW5CYXNlbGluZSA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGZvbnRTaXpl
IC8gMyArIDEgKyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNjcmlwdEhlaWdodCArIGF4aXMg
KyBzdXBlcnNjcmlwdFNoaWZ0VmFsdWUpOwogCiAgICAgICAgICAgICB0b3BQYWRkaW5nID0gc3Rk
OjptYXg8TGF5b3V0VW5pdD4odG9wUGFkZGluZywgbWluQmFzZWxpbmUgLSBiYXNlQmFzZWxpbmUp
OwpAQCAtMzI0LDkgKzMyMCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KCkK
IAogICAgICAgICBpZiAoUmVuZGVyQm94KiBzdWJzY3JpcHQgPSBtX2tpbmQgPT0gU3VwZXIgPyAw
IDogc3ViU3VwUGFpci0+Zmlyc3RDaGlsZEJveCgpKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0
IHN1YnNjcmlwdEhlaWdodCA9IHN1YnNjcmlwdC0+bG9naWNhbEhlaWdodCgpOwotICAgICAgICAg
ICAgTGF5b3V0VW5pdCBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNjcmlwdC0+Zmlyc3RMaW5lQmFz
ZWxpbmUoKTsKLSAgICAgICAgICAgIGlmIChzdWJzY3JpcHRCYXNlbGluZSA9PSAtMSkKLSAgICAg
ICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNjcmlwdEhlaWdodDsKKyAgICAgICAg
ICAgIExheW91dFVuaXQgc3Vic2NyaXB0QmFzZWxpbmUgPSBzdWJzY3JpcHQtPmZpcnN0TGluZUJh
c2VsaW5lKCkudmFsdWVPcihzdWJzY3JpcHRIZWlnaHQpOwogICAgICAgICAgICAgTGF5b3V0VW5p
dCBiYXNlRXh0ZW5kVW5kZXJCYXNlbGluZSA9IGJhc2VIZWlnaHQgLSBiYXNlQmFzZWxpbmU7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUgPSBzdWJzY3Jp
cHRIZWlnaHQgLSBzdWJzY3JpcHRCYXNlbGluZTsKICAgICAgICAgICAgIExheW91dFVuaXQgbWlu
RXh0ZW5kVW5kZXJCYXNlbGluZSA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8gNSAr
IDEgKyBzdWJzY3JpcHRVbmRlckl0c0Jhc2VsaW5lLCBzdWJzY3JpcHRIZWlnaHQgKyBzdWJzY3Jp
cHRTaGlmdFZhbHVlIC0gYXhpcyk7CkBAIC0zNTYsMTEgKzM1MCwxMCBAQCB2b2lkIFJlbmRlck1h
dGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmxheW91dCgpOwog
fQogCi1pbnQgUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAor
T3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYmFzZVdyYXBwZXIpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBiYXNl
bGluZSA9IG1fYmFzZVdyYXBwZXItPmZpcnN0TGluZUJhc2VsaW5lKCk7Ci0gICAgICAgIGlmIChi
YXNlbGluZSAhPSAtMSkKKyAgICAgICAgaWYgKE9wdGlvbmFsPGludD4gYmFzZWxpbmUgPSBtX2Jh
c2VXcmFwcGVyLT5maXJzdExpbmVCYXNlbGluZSgpKQogICAgICAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lOwogICAgIH0KICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0TGluZUJhc2Vs
aW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5oCmluZGV4IGE4NmYxN2RjOGYzMDI1Y2UzODRiZjYyN2ExYzNhZTQyNmU2
NTQ4ZjYuLjVjNGIxNzkxOWI3MTU4NTEzODg2NDRhYTQ2ZTc3N2JhOTU4NmJmZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hp
bGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCBSZW5kZXJNYXRo
TUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKaW5kZXgg
ZWJhNjhiODc5M2M5Nzc1NzM0MjI2YjNiMDkwNjc1MmNiYWZkYmNjYi4uZGIzN2ViMmNmZGQ0NDdl
OTlkMmI4ZGZkODg0ZDYxMGYzOGQxNTJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTkxLDkgKzkxLDkgQEAg
dm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKgogICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLWlu
dCBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8
aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewotICAg
IHJldHVybiBtX2hlaWdodDsKKyAgICByZXR1cm4gT3B0aW9uYWw8aW50PihtX2hlaWdodCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3BhY2UuaAppbmRleCA2NGU0OWYyNzg0MWQxOGNlYTM5YzA3Y2Q4YjAxZjM2MDQ3MTZjZjcx
Li44MTIwODdmNjBjOGZlYTExYTBjNTQ0Y2QzZDFmYmFjZDVkOThiZjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00
NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2Fs
V2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVu
dCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcAppbmRleCA3OWE3MzJjODRkNGU1NTYyOGYyMzg0ZWVhY2VlMWY3
YzQwZTFhYTIyLi5kMmYwMDViYTNmMjU5N2U1MDFlYmY5MGUyNGY2NmIxYTljNjQzZTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxVbmRlck92ZXIuY3BwCkBAIC02MCwxNCArNjAsMTQgQEAgUmVuZGVyTWF0aE1MT3BlcmF0b3Iq
IFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkKICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KCpiYXNlKS51bmVtYmVsbGlzaGVkT3BlcmF0
b3IoKTsKIH0KIAotaW50IFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAorT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OmZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QKIHsKICAgICBSZW5kZXJCb3gqIGJhc2UgPSBmaXJzdENoaWxkQm94KCk7
CiAgICAgaWYgKCFiYXNlKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgTGF5b3V0VW5pdCBiYXNl
bGluZSA9IGJhc2UtPmZpcnN0TGluZUJhc2VsaW5lKCk7Ci0gICAgaWYgKGJhc2VsaW5lICE9IC0x
KQotICAgICAgICBiYXNlbGluZSArPSBiYXNlLT5sb2dpY2FsVG9wKCk7CisgICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KCk7CisgICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGJhc2UtPmZp
cnN0TGluZUJhc2VsaW5lKCk7CisgICAgaWYgKGJhc2VsaW5lKQorICAgICAgICBiYXNlbGluZS52
YWx1ZSgpICs9IHN0YXRpY19jYXN0PGludD4oYmFzZS0+bG9naWNhbFRvcCgpKTsKICAgICByZXR1
cm4gYmFzZWxpbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCmluZGV4IGQ0Njk0ZDZiMGM2YzJiNjRiNGM3
NDg3ZDMzMTEyMjJiZjhlMWJiODkuLmYwODgyOWEzMTMxYjkwNGVjNDNhMmRiMzM4NjBhZmRlOWJl
NWJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0NWU4NGI2MmNiNDk0ZTI1ZWY0YzEwMmY5ZTI2Njk3NGNiZmE2ZTQzLi5jNTYwMDZh
YTY3NzA5ZWRkYzVmMzZhM2Q3ODIzZGY4NGMxZmNiNzFlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMTAg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
b3V0LW9mLWJhbmQgbWVzc2FnaW5nIGZvciBSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkg
YW5kIFJlbmRlckJveDo6aW5saW5lQmxvY2tCYXNlbGluZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IE9wdGlvbmFsOjp2YWx1ZU9yQ29tcHV0
ZSgpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTUtMDMtMTAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdW5zaWduZWQg
Zm9yIEhhc2hTZXQgc2l6ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL09wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFs
LmNwcAppbmRleCA2NGQyMDE5ODViOTJkNjI2ODRlMWQ1NWJiOWEyZGY0NGRhMmQ3MmQxLi4wNWY0
MTNiOTdiYjBjNzFiNTU3NDU5N2UwMmIzZGEwZDEwMmVmNmFkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCkBAIC03Miw0ICs3MiwyNSBAQCBURVNUKFdURl9P
cHRpb25hbCwgRGVzdHJ1Y3RvcikKICAgICBFWFBFQ1RfVFJVRShkaWRDYWxsRGVzdHJ1Y3Rvcik7
CiB9CiAKK1RFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykKK3sKKyAgICBib29sIGNhbGxlZCA9
IGZhbHNlOworICAgIE9wdGlvbmFsPGludD4gYTsKKyAgICBpbnQgcmVzdWx0ID0gYS52YWx1ZU9y
Q29tcHV0ZShbJl0geworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gMzAw
OworICAgIH0pOworICAgIEVYUEVDVF9UUlVFKGNhbGxlZCk7CisgICAgRVhQRUNUX0VRKHJlc3Vs
dCwgMzAwKTsKKworICAgIGEgPSAyNTA7CisgICAgY2FsbGVkID0gZmFsc2U7CisgICAgcmVzdWx0
ID0gYS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAg
ICByZXR1cm4gMzAwOworICAgIH0pOworICAgIEVYUEVDVF9GQUxTRShjYWxsZWQpOworICAgIEVY
UEVDVF9FUShyZXN1bHQsIDI1MCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="273291"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>