<?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>129055</bug_id>
          
          <creation_ts>2014-02-19 12:21:17 -0800</creation_ts>
          <short_desc>DFG&apos;s own loop analysis should be used for predicting block frequencies instead of relying on LLVM&apos;s loop analysis</short_desc>
          <delta_ts>2014-02-23 19:54:45 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>129129</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129054</dependson>
    
    <dependson>129083</dependson>
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982498</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 12:21:17 -0800</bug_when>
    <thetext>This is important because our OSR entrypoint transformation makes outer loops sometimes appear as sibling loops, which then messes up a lot of stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982669</commentid>
    <comment_count>1</comment_count>
      <attachid>224706</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 21:45:33 -0800</bug_when>
    <thetext>Created attachment 224706
WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982672</commentid>
    <comment_count>2</comment_count>
      <attachid>224706</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 21:45:57 -0800</bug_when>
    <thetext>Comment on attachment 224706
WRONG PATCH

Ugh, uploaded to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983787</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-23 19:54:45 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 129129 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224706</attachid>
            <date>2014-02-19 21:45:33 -0800</date>
            <delta_ts>2014-02-19 21:46:10 -0800</delta_ts>
            <desc>WRONG PATCH</desc>
            <filename>WRONG PATCH</filename>
            <type>text/plain</type>
            <size>56163</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NDE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDE0LTAyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGEgd2F5IG9mIGNhcnJ5aW5nIGFuZCBwcmVzZXJ2aW5nIGNvbmRpdGlv
bmFsIGJyYW5jaCB3ZWlnaHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjkwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEJyYW5jaCBhbmQgU3dpdGNoIG5vdyBoYXZlIGJyYW5jaCBjb3Vu
dHMvd2VpZ2h0cyBmb3IgZWFjaCB0YXJnZXQuIFRoaXMgaXMgZW5jYXBzdWxhdGVkCisgICAgICAg
IGJlaGluZCBERkc6OkJyYW5jaFRhcmdldC4gV2UgY2FycnkgdGhpcyBkYXRhIGFsbCB0aGUgd2F5
IHRvIHRoZSBGVEwsIGFuZCB0aGUgREZHCisgICAgICAgIGJhY2tlbmQgaWdub3JlcyBpdC4KKyAg
ICAgICAgCisgICAgICAgIFdlIGRvbid0IHNldCB0aGlzIGRhdGEgeWV0OyB0aGF0J3MgZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwNTUuCisKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpicmFuY2hEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q0ZHU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFj
dFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICog
ZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJyYW5jaFRhcmdldDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpCcmFuY2hUYXJn
ZXQ6OkJyYW5jaFRhcmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6QnJhbmNoVGFyZ2V0OjpzZXRC
eXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpCcmFuY2hUYXJnZXQ6OmJ5dGVjb2Rl
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkJyYW5jaERhdGE6OndpdGhCeXRlY29kZUluZGlj
ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkJyYW5jaERhdGE6OnRha2VuQnl0ZWNvZGVJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6QnJhbmNoRGF0YTo6bm90VGFrZW5CeXRlY29kZUluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCcmFuY2hEYXRhOjpmb3JDb25kaXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlN3
aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpTd2l0Y2hE
YXRhOjpTd2l0Y2hEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp0YXJnZXRCeXRlY29k
ZU9mZnNldER1cmluZ1BhcnNpbmcpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnRhcmdldEJs
b2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpicmFuY2hEYXRhKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpzdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN1Y2Nl
c3NvckZvckNvbmRpdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlRG91Ymxl
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9y
T3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZUludDUyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVKdW1wKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVTd2l0Y2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpidWlsZFN3aXRjaCk6CisKIDIwMTQtMDItMTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBhZnRlciAtW0pTQ29udGV4dCBldmFsdWF0ZVNj
cmlwdDpdIHdoZW4gaW5pdGlhbGl6aW5nIEpTQ29udGV4dCB3aXRoIEpTVmlydHVhbE1hY2hpbmUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNjQ0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIzLDYgKzcyMywxMyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gdmFsdWUuaXNCb29sZWFuKCkgfHwgdmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKTsKICAgICB9CiAgICAgCisgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSh1bnNp
Z25lZCB0YWtlbiwgdW5zaWduZWQgbm90VGFrZW4pCisgICAgeworICAgICAgICBCcmFuY2hEYXRh
KiBkYXRhID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CisgICAgICAgICpkYXRhID0gQnJh
bmNoRGF0YTo6d2l0aEJ5dGVjb2RlSW5kaWNlcyh0YWtlbiwgbm90VGFrZW4pOworICAgICAgICBy
ZXR1cm4gZGF0YTsKKyAgICB9CisgICAgCiAgICAgTm9kZSogYWRkVG9HcmFwaChOb2RlVHlwZSBv
cCwgTm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwgTm9kZSogY2hpbGQzID0gMCkK
ICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKQEAgLTE0NTgs
OCArMTQ2NSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUKICAg
ICAgICAgQVNTRVJUKCFibG9ja1RvTGluay0+aXNMaW5rZWQpOwogICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2tUb0xpbmstPmxhc3QoKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gSnVt
cCk7Ci0gICAgICAgIEFTU0VSVChub2RlLT50YWtlbkJsb2NrKCkgPT0gMCk7Ci0gICAgICAgIG5v
ZGUtPnNldFRha2VuQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICBBU1NFUlQobm9kZS0+dGFy
Z2V0QmxvY2soKSA9PSAwKTsKKyAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLmdl
dCgpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVk
c0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgYmxvY2tUb0xpbmstPmlzTGlua2VkID0gdHJ1ZTsKQEAgLTI2OTcsNyArMjcwNCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfanRydWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5kZXgg
KyByZWxhdGl2ZU9mZnNldCksIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgo
b3BfanRydWUpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBP
cEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJl
bnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfanRydWUpKSksIGNvbmRpdGlvbik7CiAgICAgICAg
ICAgICBMQVNUX09QQ09ERShvcF9qdHJ1ZSk7CiAgICAgICAgIH0KIApAQCAtMjcxNiw3ICsyNzIz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9qZmFsc2UpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJy
ZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pmYWxzZSkpLCBPcEluZm8obV9jdXJyZW50SW5k
ZXggKyByZWxhdGl2ZU9mZnNldCksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RI
KG9wX2pmYWxzZSksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9u
KTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pmYWxzZSk7CiAgICAgICAgIH0KIApAQCAt
MjcyNCw3ICsyNzMxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5v
ZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUVxQ29uc3RhbnQsIHZhbHVlLCBjb25z
dGFudE51bGwoKSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3Vy
cmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENP
REVfTEVOR1RIKG9wX2plcV9udWxsKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9m
ZnNldCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2plcV9udWxsKSkpLCBjb25k
aXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamVxX251bGwpOwogICAgICAgICB9
CiAKQEAgLTI3MzIsNyArMjczOSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgICAg
ICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcUNvbnN0YW50LCB2YWx1
ZSwgY29uc3RhbnROdWxsKCkpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5m
byhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5lcV9udWxsKSksIE9wSW5mbyht
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9Q
Q09ERV9MRU5HVEgob3Bfam5lcV9udWxsKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNl
dCkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5lcV9udWxsKTsK
ICAgICAgICAgfQogCkBAIC0yNzU4LDcgKzI3NjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlTGVzcywgb3AxLCBv
cDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRl
eCArIHJlbGF0aXZlT2Zmc2V0KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdU
SChvcF9qbGVzcykpLCBjb25kaXRpb24pOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gs
IE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQsIG1fY3Vy
cmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9qbGVzcykpKSwgY29uZGl0aW9uKTsKICAgICAg
ICAgICAgIExBU1RfT1BDT0RFKG9wX2psZXNzKTsKICAgICAgICAgfQogCkBAIC0yNzg0LDcgKzI3
OTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0g
YWRkVG9HcmFwaChDb21wYXJlTGVzc0VxLCBvcDEsIG9wMik7Ci0gICAgICAgICAgICBhZGRUb0dy
YXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcElu
Zm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpKSwgY29uZGl0aW9u
KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1
cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0LCBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5H
VEgob3Bfamxlc3NlcSkpKSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X2psZXNzZXEpOwogICAgICAgICB9CiAKQEAgLTI4MTAsNyArMjgxNyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVH
cmVhdGVyLCBvcDEsIG9wMik7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZv
KG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXgg
KyBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJyYW5jaERhdGEobV9jdXJyZW50SW5kZXggKyByZWxh
dGl2ZU9mZnNldCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyKSkp
LCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamdyZWF0ZXIpOwogICAg
ICAgICB9CiAKQEAgLTI4MzYsNyArMjg0Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIG9wMSwg
b3AyKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5k
ZXggKyByZWxhdGl2ZU9mZnNldCksIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5H
VEgob3BfamdyZWF0ZXJlcSkpLCBjb25kaXRpb24pOworICAgICAgICAgICAgYWRkVG9HcmFwaChC
cmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQs
IG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9qZ3JlYXRlcmVxKSkpLCBjb25kaXRp
b24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfamdyZWF0ZXJlcSk7CiAgICAgICAgIH0K
IApAQCAtMjg2Miw3ICsyODY5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5v
ZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxlc3MsIG9wMSwgb3AyKTsKLSAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVf
TEVOR1RIKG9wX2pubGVzcykpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNl
dCksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKGJy
YW5jaERhdGEobV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pubGVzcyksIG1fY3Vy
cmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgIExB
U1RfT1BDT0RFKG9wX2pubGVzcyk7CiAgICAgICAgIH0KIApAQCAtMjg4OCw3ICsyODk1LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGFkZFRvR3Jh
cGgoQ29tcGFyZUxlc3NFcSwgb3AxLCBvcDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFu
Y2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5sZXNzZXEpKSwg
T3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBjb25kaXRpb24pOworICAg
ICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudElu
ZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9qbmxlc3NlcSksIG1fY3VycmVudEluZGV4ICsgcmVsYXRp
dmVPZmZzZXQpKSwgY29uZGl0aW9uKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pubGVz
c2VxKTsKICAgICAgICAgfQogCkBAIC0yOTE0LDcgKzI5MjEsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRl
ciwgb3AxLCBvcDIpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1
cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyKSksIE9wSW5mbyhtX2N1cnJl
bnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9M
RU5HVEgob3Bfam5ncmVhdGVyKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNldCkpLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5ncmVhdGVyKTsKICAgICAg
ICAgfQogCkBAIC0yOTQwLDY2ICsyOTQ3LDYzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBOb2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyRXEsIG9wMSwg
b3AyKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5k
ZXggKyBPUENPREVfTEVOR1RIKG9wX2puZ3JlYXRlcmVxKSksIE9wSW5mbyhtX2N1cnJlbnRJbmRl
eCArIHJlbGF0aXZlT2Zmc2V0KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
QnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgo
b3Bfam5ncmVhdGVyZXEpLCBtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSksIGNvbmRp
dGlvbik7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmdyZWF0ZXJlcSk7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06IHsKLSAgICAgICAg
ICAgIFN3aXRjaERhdGEgZGF0YTsKKyAgICAgICAgICAgIFN3aXRjaERhdGEmIGRhdGEgPSAqbV9n
cmFwaC5tX3N3aXRjaERhdGEuYWRkKCk7CiAgICAgICAgICAgICBkYXRhLmtpbmQgPSBTd2l0Y2hJ
bW07CiAgICAgICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBtX2lubGluZVN0YWNrVG9w
LT5tX3N3aXRjaFJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmRdOwotICAgICAg
ICAgICAgZGF0YS5zZXRGYWxsVGhyb3VnaEJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXggKyBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGRhdGEuZmFsbFRo
cm91Z2guc2V0Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1f
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0YWJsZS5icmFuY2hPZmZzZXRzW2ldKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBtX2N1cnJlbnRJbmRleCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoQnl0ZWNvZGVJbmRleCgpKQor
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gZGF0YS5mYWxsVGhyb3VnaC5ieXRlY29kZUlu
ZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGRh
dGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4KGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KHRhYmxlLm1pbiArIGkpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBtX2dyYXBoLm1fc3dpdGNoRGF0YS5hcHBlbmQoZGF0YSk7Ci0gICAg
ICAgICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZtX2dyYXBoLm1fc3dpdGNoRGF0YS5s
YXN0KCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOwogICAg
ICAgICAgICAgTEFTVF9PUENPREUob3Bfc3dpdGNoX2ltbSk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7Ci0gICAgICAgICAgICBTd2l0Y2hE
YXRhIGRhdGE7CisgICAgICAgICAgICBTd2l0Y2hEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zd2l0
Y2hEYXRhLmFkZCgpOwogICAgICAgICAgICAgZGF0YS5raW5kID0gU3dpdGNoQ2hhcjsKICAgICAg
ICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRleCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dpdGNo
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBkYXRh
LnNldEZhbGxUaHJvdWdoQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4ICsgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxvY2st
PnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5jaE9mZnNldHNbaV0pCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IG1f
Y3VycmVudEluZGV4ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXTsKLSAgICAgICAgICAgICAgICBp
ZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2hCeXRlY29kZUluZGV4KCkpCisgICAgICAgICAg
ICAgICAgaWYgKHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoLmJ5dGVjb2RlSW5kZXgoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgZGF0YS5jYXNlcy5h
cHBlbmQoCiAgICAgICAgICAgICAgICAgICAgIFN3aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4
KExhenlKU1ZhbHVlOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcodGFibGUubWluICsgaSksIHRhcmdl
dCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9ncmFwaC5tX3N3aXRjaERhdGEuYXBw
ZW5kKGRhdGEpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmbV9ncmFw
aC5tX3N3aXRjaERhdGEubGFzdCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9w
SW5mbygmZGF0YSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCkpKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3N3aXRjaF9jaGFyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewotICAgICAgICAgICAg
U3dpdGNoRGF0YSBkYXRhOworICAgICAgICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9ICptX2dyYXBo
Lm1fc3dpdGNoRGF0YS5hZGQoKTsKICAgICAgICAgICAgIGRhdGEua2luZCA9IFN3aXRjaFN0cmlu
ZzsKICAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhLnNldEZhbGxUaHJvdWdoQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleCArIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaC5zZXRCeXRlY29kZUluZGV4KG1fY3VycmVudElu
ZGV4ICsgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBTdHJp
bmdKdW1wVGFibGUmIHRhYmxlID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShk
YXRhLnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlcjsKICAgICAgICAgICAgIFN0cmluZ0p1bXBUYWJs
ZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVu
ZCgpOwogICAgICAgICAgICAgZm9yIChpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9
IG1fY3VycmVudEluZGV4ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwotICAgICAgICAgICAg
ICAgIGlmICh0YXJnZXQgPT0gZGF0YS5mYWxsVGhyb3VnaEJ5dGVjb2RlSW5kZXgoKSkKKyAgICAg
ICAgICAgICAgICBpZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2guYnl0ZWNvZGVJbmRleCgp
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBkYXRhLmNh
c2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZTo6d2l0aEJ5dGVjb2Rl
SW5kZXgoTGF6eUpTVmFsdWU6Omtub3duU3RyaW5nSW1wbChpdGVyLT5rZXkuZ2V0KCkpLCB0YXJn
ZXQpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fZ3JhcGgubV9zd2l0Y2hEYXRhLmFw
cGVuZChkYXRhKTsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8oJm1fZ3Jh
cGgubV9zd2l0Y2hEYXRhLmxhc3QoKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBP
cEluZm8oJmRhdGEpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9zd2l0Y2hfc3RyaW5nKTsK
ICAgICAgICAgfQogCkBAIC0zNDIzLDE5ICszNDI3LDIzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9jayhCYXNpY0Jsb2MKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAg
ICBjYXNlIEp1bXA6Ci0gICAgICAgIG5vZGUtPnNldFRha2VuQmxvY2soYmxvY2tGb3JCeXRlY29k
ZU9mZnNldChwb3NzaWJsZVRhcmdldHMsIG5vZGUtPnRha2VuQnl0ZWNvZGVPZmZzZXREdXJpbmdQ
YXJzaW5nKCkpKTsKKyAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrRm9yQnl0ZWNv
ZGVPZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLT50YXJnZXRCeXRlY29kZU9mZnNldER1cmlu
Z1BhcnNpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIEJyYW5jaDoK
LSAgICAgICAgbm9kZS0+c2V0VGFrZW5CbG9jayhibG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHBvc3Np
YmxlVGFyZ2V0cywgbm9kZS0+dGFrZW5CeXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKSkpOwot
ICAgICAgICBub2RlLT5zZXROb3RUYWtlbkJsb2NrKGJsb2NrRm9yQnl0ZWNvZGVPZmZzZXQocG9z
c2libGVUYXJnZXRzLCBub2RlLT5ub3RUYWtlbkJ5dGVjb2RlT2Zmc2V0RHVyaW5nUGFyc2luZygp
KSk7CisgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgQnJhbmNoRGF0YSogZGF0YSA9IG5vZGUt
PmJyYW5jaERhdGEoKTsKKyAgICAgICAgZGF0YS0+dGFrZW4uYmxvY2sgPSBibG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0cywgZGF0YS0+dGFrZW5CeXRlY29kZUluZGV4KCkpOwor
ICAgICAgICBkYXRhLT5ub3RUYWtlbi5ibG9jayA9IGJsb2NrRm9yQnl0ZWNvZGVPZmZzZXQocG9z
c2libGVUYXJnZXRzLCBkYXRhLT5ub3RUYWtlbkJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBTd2l0Y2g6
IHsKKyAgICAgICAgU3dpdGNoRGF0YSogZGF0YSA9IG5vZGUtPnN3aXRjaERhdGEoKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+c3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCk7IGkt
LTspCi0gICAgICAgICAgICBub2RlLT5zd2l0Y2hEYXRhKCktPmNhc2VzW2ldLnRhcmdldCA9IGJs
b2NrRm9yQnl0ZWNvZGVPZmZzZXQocG9zc2libGVUYXJnZXRzLCBub2RlLT5zd2l0Y2hEYXRhKCkt
PmNhc2VzW2ldLnRhcmdldEJ5dGVjb2RlSW5kZXgoKSk7Ci0gICAgICAgIG5vZGUtPnN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2ggPSBibG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHBvc3NpYmxlVGFyZ2V0
cywgbm9kZS0+c3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaEJ5dGVjb2RlSW5kZXgoKSk7CisgICAg
ICAgICAgICBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2sgPSBibG9ja0ZvckJ5dGVjb2RlT2Zm
c2V0KHBvc3NpYmxlVGFyZ2V0cywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJ5dGVjb2RlSW5kZXgo
KSk7CisgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrID0gYmxvY2tGb3JCeXRlY29kZU9m
ZnNldChwb3NzaWJsZVRhcmdldHMsIGRhdGEtPmZhbGxUaHJvdWdoLmJ5dGVjb2RlSW5kZXgoKSk7
CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE2NDQxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMywxNCArMTMzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIC8vIFBydW5lIG91dCBjYXNlcyB0aGF0IGVuZCB1cCBqdW1w
aW5nIHRvIGRlZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkYXRhLT5jYXNlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGRhdGEtPmNhc2VzW2ldLnRhcmdldCA9PSBkYXRhLT5mYWxsVGhyb3VnaCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlc1tpLS1dID0gZGF0YS0+Y2FzZXMudGFrZUxh
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2sgPT0gZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5jb3VudCArPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQu
Y291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+Y2FzZXNbaS0tXSA9IGRh
dGEtPmNhc2VzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNl
cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIElm
IHRoZXJlIGFyZSBubyBjYXNlcyBvdGhlciB0aGFuIGRlZmF1bHQgdGhlbiB0aGlzIHR1cm5zCiAg
ICAgICAgICAgICAgICAgICAgIC8vIGludG8gYSBqdW1wLgogICAgICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS0+Y2FzZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb252
ZXJ0VG9KdW1wKGJsb2NrLCBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb252ZXJ0VG9KdW1wKGJsb2NrLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbm5lckNoYW5nZWQgPSBvdXRlckNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTE1MywxMyArMTU2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGRhdGEtPmNhc2VzLnNpemUoKTsgZm91bmQgPT0gRmFsc2VUcmlTdGF0ZSAm
JiBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBkYXRhLT5jYXNl
c1tpXS52YWx1ZS5zdHJpY3RFcXVhbCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGZvdW5kID09IFRydWVUcmlTdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0QmxvY2sgPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldEJsb2NrID0gZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJs
b2NrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gTWl4ZWRUcmlTdGF0ZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmb3VuZCA9PSBGYWxzZVRyaVN0YXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmdldEJsb2NrID0gZGF0YS0+ZmFsbFRocm91Z2g7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0QmxvY2sgPSBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRCbG9jayk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gamV0dGlz
b25lZEJsb2NrczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTY0NDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDEwICs2NjksOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAobmV3Q2hpbGRFZGdlLT5oYXNCb29sZWFuUmVz
dWx0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxk
MShuZXdDaGlsZEVkZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiB0b0JlVGFrZW4gPSBub2RlLT5ub3RUYWtlbkJsb2NrKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiB0b0JlTm90VGFrZW4gPSBub2Rl
LT50YWtlbkJsb2NrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRUYWtlbkJs
b2NrKHRvQmVUYWtlbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXROb3RUYWtl
bkJsb2NrKHRvQmVOb3RUYWtlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRh
KiBkYXRhID0gbm9kZS0+YnJhbmNoRGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojpzd2FwKGRhdGEtPnRha2VuLCBkYXRhLT5ub3RUYWtlbik7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTY0NDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSwxNiArMzE1
LDE2IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICB9CiAg
ICAgaWYgKG9wID09IFdlYWtKU0NvbnN0YW50KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIFJh
d1BvaW50ZXIobm9kZS0+d2Vha0NvbnN0YW50KCkpLCAiICgiLCBpbkNvbnRleHQoKm5vZGUtPndl
YWtDb25zdGFudCgpLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCksICIpIik7Ci0gICAgaWYgKG5vZGUt
PmlzQnJhbmNoKCkgfHwgbm9kZS0+aXNKdW1wKCkpCi0gICAgICAgIG91dC5wcmludChjb21tYSwg
IlQ6IiwgKm5vZGUtPnRha2VuQmxvY2soKSk7CisgICAgaWYgKG5vZGUtPmlzSnVtcCgpKQorICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJUOiIsICpub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICBp
ZiAobm9kZS0+aXNCcmFuY2goKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRjoiLCAqbm9k
ZS0+bm90VGFrZW5CbG9jaygpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCBub2Rl
LT5icmFuY2hEYXRhKCktPnRha2VuLCAiLCBGOiIsIG5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFr
ZW4pOwogICAgIGlmIChub2RlLT5pc1N3aXRjaCgpKSB7CiAgICAgICAgIFN3aXRjaERhdGEqIGRh
dGEgPSBub2RlLT5zd2l0Y2hEYXRhKCk7CiAgICAgICAgIG91dC5wcmludChjb21tYSwgZGF0YS0+
a2luZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEtPmNh
c2VzW2ldLnZhbHVlLCBjb250ZXh0KSwgIjoiLCAqZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKLSAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiZGVmYXVsdDoiLCAqZGF0YS0+ZmFsbFRocm91Z2gpOwor
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS0+Y2FzZXNbaV0udmFs
dWUsIGNvbnRleHQpLCAiOiIsIGRhdGEtPmNhc2VzW2ldLnRhcmdldCk7CisgICAgICAgIG91dC5w
cmludChjb21tYSwgImRlZmF1bHQ6IiwgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgIH0KICAgICBD
bG9iYmVyU2V0IHJlYWRzOwogICAgIENsb2JiZXJTZXQgd3JpdGVzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTY0NDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjksNyArODI5LDgg
QEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVj
dHVyZVNldDsKICAgICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlVHJhbnNpdGlvbkRhdGEsIDg+
IG1fc3RydWN0dXJlVHJhbnNpdGlvbkRhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5
QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7Ci0gICAgU2VnbWVudGVkVmVjdG9y
PFN3aXRjaERhdGEsIDQ+IG1fc3dpdGNoRGF0YTsKKyAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFu
Y2hEYXRhOworICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CiAgICAgQmFnPE11bHRp
R2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIFZlY3RvcjxJbmxp
bmVWYXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIE93blB0cjxJbmxp
bmVDYWxsRnJhbWVTZXQ+IG1faW5saW5lQ2FsbEZyYW1lczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAxNjQ0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDE2ICszNjMsMTYgQEAgaW5saW5l
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgIHN3aXRjaCAodGVybWluYWwt
Pm9wKCkpIHsKICAgICBjYXNlIEp1bXA6IHsKICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2stPmNm
YUJyYW5jaERpcmVjdGlvbiA9PSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKLSAgICAgICAgcmV0
dXJuIG1lcmdlKGJhc2ljQmxvY2ssIHRlcm1pbmFsLT50YWtlbkJsb2NrKCkpOworICAgICAgICBy
ZXR1cm4gbWVyZ2UoYmFzaWNCbG9jaywgdGVybWluYWwtPnRhcmdldEJsb2NrKCkpOwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBCcmFuY2g6IHsKICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2st
PmNmYUJyYW5jaERpcmVjdGlvbiAhPSBJbnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKICAgICAgICAg
Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGlmIChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hE
aXJlY3Rpb24gIT0gVGFrZUZhbHNlKQotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNp
Y0Jsb2NrLCB0ZXJtaW5hbC0+dGFrZW5CbG9jaygpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2UoYmFzaWNCbG9jaywgdGVybWluYWwtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2spOwog
ICAgICAgICBpZiAoYmFzaWNCbG9jay0+Y2ZhQnJhbmNoRGlyZWN0aW9uICE9IFRha2VUcnVlKQot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCB0ZXJtaW5hbC0+bm90VGFr
ZW5CbG9jaygpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGVy
bWluYWwtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2spOwogICAgICAgICByZXR1cm4gY2hh
bmdlZDsKICAgICB9CiAgICAgICAgIApAQCAtMzgxLDkgKzM4MSw5IEBAIGlubGluZSBib29sIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgLy8gd2UncmUgbm90LiBIb3dldmVy
IEkgc29tZWhvdyBkb3VidCB0aGF0IHRoaXMgd2lsbCBldmVyIGJlIGEgYmlnIGRlYWwuCiAgICAg
ICAgIEFTU0VSVChiYXNpY0Jsb2NrLT5jZmFCcmFuY2hEaXJlY3Rpb24gPT0gSW52YWxpZEJyYW5j
aERpcmVjdGlvbik7CiAgICAgICAgIFN3aXRjaERhdGEqIGRhdGEgPSB0ZXJtaW5hbC0+c3dpdGNo
RGF0YSgpOwotICAgICAgICBib29sIGNoYW5nZWQgPSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5m
YWxsVGhyb3VnaCk7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IG1lcmdlKGJhc2ljQmxvY2ssIGRh
dGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+
Y2FzZXMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Js
b2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1
cm4gY2hhbmdlZDsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2NDQxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVy
JiBsaW5rQgogICAgIG1faml0Q29kZS0+Y29tbW9uLnNsb3dBcmd1bWVudHMgPSBzdGQ6Om1vdmUo
bV9ncmFwaC5tX3Nsb3dBcmd1bWVudHMpOwogCiAgICAgQml0VmVjdG9yIHVzZWRKdW1wVGFibGVz
OwotICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9zd2l0Y2hEYXRhLnNpemUoKTsgaS0t
OykgewotICAgICAgICBTd2l0Y2hEYXRhJiBkYXRhID0gbV9ncmFwaC5tX3N3aXRjaERhdGFbaV07
CisgICAgZm9yIChCYWc8U3dpdGNoRGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX2dyYXBoLm1fc3dp
dGNoRGF0YS5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICBTd2l0Y2hEYXRhJiBk
YXRhID0gKippdGVyOwogICAgICAgICBpZiAoIWRhdGEuZGlkVXNlSnVtcFRhYmxlKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMTcyLDE0ICsxNzIsMTQgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAKICAgICAgICAgdXNlZEp1
bXBUYWJsZXMuc2V0KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgIFNpbXBsZUp1bXBU
YWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFi
bGVJbmRleCk7Ci0gICAgICAgIHRhYmxlLmN0aURlZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9ibG9ja0hlYWRzW2RhdGEuZmFsbFRocm91Z2gtPmluZGV4XSk7CisgICAgICAgIHRhYmxl
LmN0aURlZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW2RhdGEuZmFs
bFRocm91Z2guYmxvY2stPmluZGV4XSk7CiAgICAgICAgIHRhYmxlLmN0aU9mZnNldHMuZ3Jvdyh0
YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IHRh
YmxlLmN0aU9mZnNldHMuc2l6ZSgpOyBqLS07KQogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0
c1tqXSA9IHRhYmxlLmN0aURlZmF1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRhdGEu
Y2FzZXMuc2l6ZSgpOyBqLS07KSB7CiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBk
YXRhLmNhc2VzW2pdOwogICAgICAgICAgICAgdGFibGUuY3RpT2Zmc2V0c1tteUNhc2UudmFsdWUu
c3dpdGNoTG9va3VwVmFsdWUoKSAtIHRhYmxlLm1pbl0gPQotICAgICAgICAgICAgICAgIGxpbmtC
dWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbbXlDYXNlLnRhcmdldC0+aW5kZXhdKTsKKyAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50
YXJnZXQuYmxvY2stPmluZGV4XSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xOTMsOCAr
MTkzLDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIC8v
IE5PVEU6IHdlIGNhbm5vdCBjbGVhciBzdHJpbmcgc3dpdGNoIHRhYmxlcyBiZWNhdXNlICgxKSB3
ZSdyZSBydW5uaW5nIGNvbmN1cnJlbnRseQogICAgIC8vIGFuZCB3ZSBjYW5ub3QgZGVyZWYgU3Ry
aW5nSW1wbCdzIGFuZCAoMikgaXQgd291bGQgYmUgd2VpcmQgdG8gZGVyZWYgdGhvc2UKICAgICAv
LyBTdHJpbmdJbXBsJ3Mgc2luY2Ugd2UgcmVmZXIgdG8gdGhlbS4KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2dyYXBoLm1fc3dpdGNoRGF0YS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgU3dpdGNo
RGF0YSYgZGF0YSA9IG1fZ3JhcGgubV9zd2l0Y2hEYXRhW2ldOworICAgIGZvciAoQmFnPFN3aXRj
aERhdGE+OjppdGVyYXRvciBzd2l0Y2hEYXRhSXRlciA9IG1fZ3JhcGgubV9zd2l0Y2hEYXRhLmJl
Z2luKCk7ICEhc3dpdGNoRGF0YUl0ZXI7ICsrc3dpdGNoRGF0YUl0ZXIpIHsKKyAgICAgICAgU3dp
dGNoRGF0YSYgZGF0YSA9ICoqc3dpdGNoRGF0YUl0ZXI7CiAgICAgICAgIGlmICghZGF0YS5kaWRV
c2VKdW1wVGFibGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yMDIsNyAr
MjAyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHRhYmxl
ID0gbV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5k
ZXgpOwotICAgICAgICB0YWJsZS5jdGlEZWZhdWx0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1f
YmxvY2tIZWFkc1tkYXRhLmZhbGxUaHJvdWdoLT5pbmRleF0pOworICAgICAgICB0YWJsZS5jdGlE
ZWZhdWx0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fYmxvY2tIZWFkc1tkYXRhLmZhbGxUaHJv
dWdoLmJsb2NrLT5pbmRleF0pOwogICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNl
dFRhYmxlOjppdGVyYXRvciBpdGVyOwogICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09m
ZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAg
ICAgZm9yIChpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZm
ZXImIGxpbmtCCiAgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2UgPSBkYXRhLmNhc2VzW2pd
OwogICAgICAgICAgICAgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmZpbmQobXlDYXNlLnZhbHVl
LnN0cmluZ0ltcGwoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IGVuZCk7
Ci0gICAgICAgICAgICBpdGVyLT52YWx1ZS5jdGlPZmZzZXQgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQtPmluZGV4XSk7CisgICAgICAgICAgICBpdGVy
LT52YWx1ZS5jdGlPZmZzZXQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215
Q2FzZS50YXJnZXQuYmxvY2stPmluZGV4XSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTY0NDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCit2b2lkIEJy
YW5jaFRhcmdldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGlmICghYmxv
Y2spCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBvdXQucHJpbnQoKmJsb2NrKTsKKyAgICAK
KyAgICBpZiAoY291bnQgPT0gY291bnQpCisgICAgICAgIG91dC5wcmludCgiL3c6IiwgY291bnQp
OworfQorCiB1bnNpZ25lZCBOb2RlOjppbmRleCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5vZGVB
bGxvY2F0b3I6OmFsbG9jYXRvck9mKHRoaXMpLT5pbmRleE9mKHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE2NDQxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw0NyBA
QCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlOwogfTsKIAorc3RydWN0IEJyYW5jaFRhcmdldCB7CisgICAgQnJhbmNoVGFyZ2V0KCkgOiBi
bG9jaygwKSwgY291bnQoUU5hTikgeyB9CisgICAgCisgICAgZXhwbGljaXQgQnJhbmNoVGFyZ2V0
KEJhc2ljQmxvY2sqIGJsb2NrKSA6IGJsb2NrKGJsb2NrKSwgY291bnQoUU5hTikgeyB9CisgICAg
CisgICAgdm9pZCBzZXRCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
eworICAgICAgICBibG9jayA9IGJpdHdpc2VfY2FzdDxCYXNpY0Jsb2NrKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PihieXRlY29kZUluZGV4KSk7CisgICAgfQorICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihibG9jayk7IH0K
KyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICBCYXNp
Y0Jsb2NrKiBibG9jazsKKyAgICBmbG9hdCBjb3VudDsKK307CisKK3N0cnVjdCBCcmFuY2hEYXRh
IHsKKyAgICBzdGF0aWMgQnJhbmNoRGF0YSB3aXRoQnl0ZWNvZGVJbmRpY2VzKAorICAgICAgICB1
bnNpZ25lZCB0YWtlbkJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG5vdFRha2VuQnl0ZWNvZGVJbmRl
eCkKKyAgICB7CisgICAgICAgIEJyYW5jaERhdGEgcmVzdWx0OworICAgICAgICByZXN1bHQudGFr
ZW4uYmxvY2sgPSBiaXR3aXNlX2Nhc3Q8QmFzaWNCbG9jayo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4odGFrZW5CeXRlY29kZUluZGV4KSk7CisgICAgICAgIHJlc3VsdC5ub3RUYWtlbi5ibG9jayA9
IGJpdHdpc2VfY2FzdDxCYXNpY0Jsb2NrKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pihub3RUYWtl
bkJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgdGFrZW5CeXRlY29kZUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFrZW4uYnl0
ZWNvZGVJbmRleCgpOyB9CisgICAgdW5zaWduZWQgbm90VGFrZW5CeXRlY29kZUluZGV4KCkgY29u
c3QgeyByZXR1cm4gbm90VGFrZW4uYnl0ZWNvZGVJbmRleCgpOyB9CisgICAgCisgICAgQmFzaWNC
bG9jayomIGZvckNvbmRpdGlvbihib29sIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIGlmIChj
b25kaXRpb24pCisgICAgICAgICAgICByZXR1cm4gdGFrZW4uYmxvY2s7CisgICAgICAgIHJldHVy
biBub3RUYWtlbi5ibG9jazsKKyAgICB9CisgICAgCisgICAgQnJhbmNoVGFyZ2V0IHRha2VuOwor
ICAgIEJyYW5jaFRhcmdldCBub3RUYWtlbjsKK307CisKIC8vIFRoZSBTd2l0Y2hEYXRhIGFuZCBh
c3NvY2lhdGVkIGRhdGEgc3RydWN0dXJlcyBkdXBsaWNhdGUgdGhlIGluZm9ybWF0aW9uIGluCiAv
LyBKdW1wVGFibGUuIFRoZSBERkcgbWF5IHVsdGltYXRlbHkgZW5kIHVwIHVzaW5nIHRoZSBKdW1w
VGFibGUsIHRob3VnaCBpdCBtYXkKIC8vIGluc3RlYWQgZGVjaWRlIHRvIGRvIHNvbWV0aGluZyBk
aWZmZXJlbnQgLSB0aGlzIGlzIGVudGlyZWx5IHVwIHRvIHRoZSBERkcuCkBAIC05MSw3ICsxMzIs
NiBAQCBzdHJ1Y3QgTmV3QXJyYXlCdWZmZXJEYXRhIHsKIC8vIHZhbHVlcy4KIHN0cnVjdCBTd2l0
Y2hDYXNlIHsKICAgICBTd2l0Y2hDYXNlKCkKLSAgICAgICAgOiB0YXJnZXQoMCkKICAgICB7CiAg
ICAgfQogICAgIApAQCAtMTA1LDE0ICsxNDUsMTIgQEAgc3RydWN0IFN3aXRjaENhc2UgewogICAg
IHsKICAgICAgICAgU3dpdGNoQ2FzZSByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHZh
bHVlOwotICAgICAgICByZXN1bHQudGFyZ2V0ID0gYml0d2lzZV9jYXN0PEJhc2ljQmxvY2sqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgcmVzdWx0LnRh
cmdldC5zZXRCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCB0YXJnZXRCeXRlY29kZUluZGV4KCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGFyZ2V0KTsgfQotICAgIAogICAg
IExhenlKU1ZhbHVlIHZhbHVlOwotICAgIEJhc2ljQmxvY2sqIHRhcmdldDsKKyAgICBCcmFuY2hU
YXJnZXQgdGFyZ2V0OwogfTsKIAogZW51bSBTd2l0Y2hLaW5kIHsKQEAgLTEyNiwyMSArMTY0LDE0
IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICAvLyBjb25zdHJ1Y3RpbmcgdGhpcyBzaG91bGQg
bWFrZSBzdXJlIHRvIGluaXRpYWxpemUgZXZlcnl0aGluZyB0aGV5CiAgICAgLy8gY2FyZSBhYm91
dCBtYW51YWxseS4KICAgICBTd2l0Y2hEYXRhKCkKLSAgICAgICAgOiBmYWxsVGhyb3VnaCgwKQot
ICAgICAgICAsIGtpbmQoc3RhdGljX2Nhc3Q8U3dpdGNoS2luZD4oLTEpKQorICAgICAgICA6IGtp
bmQoc3RhdGljX2Nhc3Q8U3dpdGNoS2luZD4oLTEpKQogICAgICAgICAsIHN3aXRjaFRhYmxlSW5k
ZXgoVUlOVF9NQVgpCiAgICAgICAgICwgZGlkVXNlSnVtcFRhYmxlKGZhbHNlKQogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBzZXRGYWxsVGhyb3VnaEJ5dGVjb2RlSW5kZXgodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIGZhbGxUaHJvdWdoID0gYml0d2lzZV9jYXN0
PEJhc2ljQmxvY2sqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGJ5dGVjb2RlSW5kZXgpKTsKLSAg
ICB9Ci0gICAgdW5zaWduZWQgZmFsbFRocm91Z2hCeXRlY29kZUluZGV4KCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZmFsbFRocm91Z2gpOyB9Ci0gICAgCiAgICAgVmVj
dG9yPFN3aXRjaENhc2U+IGNhc2VzOwotICAgIEJhc2ljQmxvY2sqIGZhbGxUaHJvdWdoOworICAg
IEJyYW5jaFRhcmdldCBmYWxsVGhyb3VnaDsKICAgICBTd2l0Y2hLaW5kIGtpbmQ7CiAgICAgdW5z
aWduZWQgc3dpdGNoVGFibGVJbmRleDsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKQEAgLTgx
OSw0MCArODUwLDIyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHVu
c2lnbmVkIHRha2VuQnl0ZWNvZGVPZmZzZXREdXJpbmdQYXJzaW5nKCkKKyAgICB1bnNpZ25lZCB0
YXJnZXRCeXRlY29kZU9mZnNldER1cmluZ1BhcnNpbmcoKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KGlzQnJhbmNoKCkgfHwgaXNKdW1wKCkpOworICAgICAgICBBU1NFUlQoaXNKdW1wKCkpOwogICAg
ICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogCi0gICAgdW5zaWduZWQgbm90VGFrZW5CeXRl
Y29kZU9mZnNldER1cmluZ1BhcnNpbmcoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQnJhbmNo
KCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8yOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHNl
dFRha2VuQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgQmFzaWNCbG9jayomIHRhcmdldEJs
b2NrKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc0JyYW5jaCgpIHx8IGlzSnVtcCgpKTsKLSAg
ICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihibG9jayk7Ci0gICAgfQot
ICAgIAotICAgIHZvaWQgc2V0Tm90VGFrZW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChpc0JyYW5jaCgpKTsKLSAgICAgICAgbV9vcEluZm8yID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oYmxvY2spOwotICAgIH0KLSAgICAKLSAgICBCYXNpY0Jsb2NrKiYg
dGFrZW5CbG9jaygpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNCcmFuY2goKSB8fCBpc0p1bXAo
KSk7CisgICAgICAgIEFTU0VSVChpc0p1bXAoKSk7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9j
YXN0PEJhc2ljQmxvY2sqKj4oJm1fb3BJbmZvKTsKICAgICB9CiAgICAgCi0gICAgQmFzaWNCbG9j
ayomIG5vdFRha2VuQmxvY2soKQorICAgIEJyYW5jaERhdGEqIGJyYW5jaERhdGEoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzQnJhbmNoKCkpOwotICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2Fz
dDxCYXNpY0Jsb2NrKio+KCZtX29wSW5mbzIpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEJyYW5jaERhdGEqPihtX29wSW5mbyk7CiAgICAgfQogICAgIAogICAgIFN3aXRjaERhdGEqIHN3
aXRjaERhdGEoKQpAQCAtODc5LDI1ICs4OTIsMjYgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAg
ICAgICAgaWYgKGlzU3dpdGNoKCkpIHsKICAgICAgICAgICAgIGlmIChpbmRleCA8IHN3aXRjaERh
dGEoKS0+Y2FzZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCkt
PmNhc2VzW2luZGV4XS50YXJnZXQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEo
KS0+Y2FzZXNbaW5kZXhdLnRhcmdldC5ibG9jazsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIHJldHVy
biBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoOworICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KICAgICAgICAgc3dpdGNoIChpbmRl
eCkgewogICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICByZXR1cm4gdGFrZW5CbG9jaygpOwor
ICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRC
bG9jaygpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CiAg
ICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIHJldHVybiBub3RUYWtlbkJsb2NrKCk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdGFrZW5CbG9jaygpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldEJsb2Nr
KCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgQmFzaWNCbG9jayomIHN1Y2Nlc3NvckZv
ckNvbmRpdGlvbihib29sIGNvbmRpdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc0JyYW5j
aCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbmRpdGlvbiA/IHRha2VuQmxvY2soKSA6IG5vdFRha2Vu
QmxvY2soKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaERhdGEoKS0+Zm9yQ29uZGl0aW9uKGNvbmRp
dGlvbik7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSGVhcFByZWRpY3Rpb24oKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCShyZXZpc2lvbiAxNjQ0MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbChFZGdlIG9wZXJhbmQs
IE5vZGUqIGJyYW5jaE5vZGUsIGJvb2wgaW52ZXJ0KQogewotICAgIEJhc2ljQmxvY2sqIHRha2Vu
ID0gYnJhbmNoTm9kZS0+dGFrZW5CbG9jaygpOwotICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0g
YnJhbmNoTm9kZS0+bm90VGFrZW5CbG9jaygpOworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJh
bmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RU
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CiAgICAgCiAg
ICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CiAgICAgICAgIGludmVydCA9ICFpbnZlcnQ7
CkBAIC0zNjEsOCArMzYxLDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVD
b21wYQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNo
KE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFNfSklUT3BlcmF0aW9uX0VKSiBoZWxwZXJGdW5jdGlvbikKIHsKLSAg
ICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBCYXNp
Y0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7Cisg
ICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRh
a2VuLmJsb2NrOwogCiAgICAgSklUQ29tcGlsZXI6OlJlc3VsdENvbmRpdGlvbiBjYWxsUmVzdWx0
Q29uZGl0aW9uID0gSklUQ29tcGlsZXI6Ok5vblplcm87CiAKQEAgLTUxNCw4ICs1MTQsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlLCBib29sIGludmVydCkKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5j
aE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5v
ZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUt
PmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBi
cmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogCiAgICAgLy8gVGhlIGJy
YW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCiAgICAgLy8g
SWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhl
IGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4KQEAgLTEyOTEsOCArMTI5
MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxp
dHkoRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCwgTm9kZSogYnJhbmNoTm9kZSkKIHsK
LSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBC
YXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBC
YXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7
CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5v
dFRha2VuLmJsb2NrOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBs
ZWZ0Q2hpbGQpOwogICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOwpAQCAtMTYxNSw4ICsxNjE1LDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
QnJhbmNoKE5vZGUqIG5vZGUpCiB7Ci0gICAgQmFzaWNCbG9jayogdGFrZW4gPSBub2RlLT50YWtl
bkJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBub2RlLT5ub3RUYWtlbkJsb2Nr
KCk7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBub2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJs
b2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gbm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RU
YWtlbi5ibG9jazsKIAogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAg
ICAgY2FzZSBCb29sZWFuVXNlOiB7CkBAIC0zMDA5LDcgKzMwMDksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBERkc6Okp1bXA6
IHsKLSAgICAgICAganVtcChub2RlLT50YWtlbkJsb2NrKCkpOworICAgICAgICBqdW1wKG5vZGUt
PmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2spOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjQ0MTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODUsOCArMjg1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNo
TnVsbChFZGdlIG9wZXJhbmQsIE5vZGUqIGJyYW5jaE5vZGUsIGJvb2wgaW52ZXJ0KQogewotICAg
IEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+dGFrZW5CbG9jaygpOwotICAgIEJhc2lj
QmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+bm90VGFrZW5CbG9jaygpOworICAgIEJhc2lj
QmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAg
ICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFr
ZW4uYmxvY2s7CiAgICAgCiAgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CiAgICAgICAg
IGludmVydCA9ICFpbnZlcnQ7CkBAIC0zNjMsOCArMzYzLDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVDb21wYQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIE1hY3JvQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFNfSklUT3BlcmF0aW9uX0VKSiBoZWxw
ZXJGdW5jdGlvbikKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2Vu
QmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2Vu
QmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEo
KS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5i
cmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogCiAgICAgSklUQ29tcGlsZXI6OlJlc3VsdENv
bmRpdGlvbiBjYWxsUmVzdWx0Q29uZGl0aW9uID0gSklUQ29tcGlsZXI6Ok5vblplcm87CiAKQEAg
LTUwNyw4ICs1MDcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBib29sIGludmVydCkKIHsKLSAgICBCYXNpY0Js
b2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBu
b3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNC
bG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2Nr
OwogCiAgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFr
ZW4gYmxvY2suCiAgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90
VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3Vn
aC4KQEAgLTE2NjksOCArMTY2OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RUb09iamUKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9P
YmplY3RPck90aGVyRXF1YWxpdHkoRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCwgTm9k
ZSogYnJhbmNoTm9kZSkKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRh
a2VuQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRh
a2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERh
dGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2Rl
LT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlz
LCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwpAQCAtMTc5Miw4ICsxNzky
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDUyQ29tcGFyZQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24p
CiB7Ci0gICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT50YWtlbkJsb2NrKCk7Ci0g
ICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5ub3RUYWtlbkJsb2NrKCk7Cisg
ICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJs
b2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgp
LT5ub3RUYWtlbi5ibG9jazsKIAogICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBi
cmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgogICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRj
aCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdl
IGNhbiBmYWxsIHRocm91Z2guCkBAIC0yMDMyLDggKzIwMzIsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0T2JqZWN0T3JPdGhlckJyCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFu
Y2goTm9kZSogbm9kZSkKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IG5vZGUtPnRha2VuQmxv
Y2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IG5vZGUtPm5vdFRha2VuQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IG5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7
CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBub2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2Vu
LmJsb2NrOwogICAgIAogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAg
ICAgY2FzZSBPYmplY3RPck90aGVyVXNlOiB7CkBAIC0zMzY5LDcgKzMzNjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBERkc6
Okp1bXA6IHsKLSAgICAgICAganVtcChub2RlLT50YWtlbkJsb2NrKCkpOworICAgICAgICBqdW1w
KG5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2NDQxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMDk3LDggKzEwOTcsOCBAQCBGUFJUZW1wb3Jhcnk6OkZQUlRlbXBvcmFy
eShTcGVjdWxhdGl2ZUpJCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZURv
dWJsZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91
YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5j
aE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5v
ZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUt
PmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBi
cmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogICAgIAogICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMTA5LDggKzEx
MDksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVEb3ViCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqIG5vZGUs
IE5vZGUqIGJyYW5jaE5vZGUpCiB7Ci0gICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2Rl
LT50YWtlbkJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5u
b3RUYWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFu
Y2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNo
Tm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpFcXVhbDsK
ICAgICAKQEAgLTExODUsOCArMTE4NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQm9vbGVh
bkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7Ci0gICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFu
Y2hOb2RlLT50YWtlbkJsb2NrKCk7Ci0gICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hO
b2RlLT5ub3RUYWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2Rl
LT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0g
YnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKIAogICAgIC8vIFRoZSBi
cmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgogICAgIC8v
IElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRo
ZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCkBAIC0xMjE2LDggKzEy
MTYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCb29sCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKE5vZGUqIG5vZGUsIE5v
ZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlv
bikKIHsKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsK
LSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4u
YmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRh
KCktPm5vdFRha2VuLmJsb2NrOwogCiAgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxs
IGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCiAgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dp
dGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28g
d2UgY2FuIGZhbGwgdGhyb3VnaC4KQEAgLTM2MzcsOCArMzYzNyw4IEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpY3RFcUZvckMKICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxv
Y2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sg
IT0gVUlOVF9NQVgpIHsKICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJy
YW5jaEluZGV4SW5CbG9jayk7Ci0gICAgICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9k
ZS0+dGFrZW5CbG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5v
ZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hO
b2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgICAgICBCYXNpY0Jsb2NrKiBub3RU
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiA9IE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbDsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rp
b24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgpAQCAtNDIxMyw4ICs0MjEzLDggQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cEV4ZWMoTgogICAgIE5vZGUqIGJyYW5j
aE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwogICAgIEFTU0VSVChub2Rl
LT5hZGp1c3RlZFJlZkNvdW50KCkgPT0gMSk7CiAKLSAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJy
YW5jaE5vZGUtPnRha2VuQmxvY2soKTsKLSAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5j
aE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5v
ZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4g
PSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogICAgIAogICAgIGJv
b2wgaW52ZXJ0ID0gZmFsc2U7CiAgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CkBAIC00
ODk1LDcgKzQ4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgK
ICAgICBtX2ppdC5zdWIzMihJbW0zMih0YWJsZS5taW4pLCB2YWx1ZSk7CiAgICAgYWRkQnJhbmNo
KAogICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1
ZSwgSW1tMzIodGFibGUuY3RpT2Zmc2V0cy5zaXplKCkpKSwKLSAgICAgICAgZGF0YS0+ZmFsbFRo
cm91Z2gpOworICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHRhYmxlLmN0aU9mZnNldHMuYmVnaW4oKSksIHNjcmF0Y2gpOwogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoLCB2YWx1ZSwgSklU
Q29tcGlsZXI6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKICAgICBtX2ppdC5qdW1wKHNjcmF0Y2gp
OwpAQCAtNDkyOSw3ICs0OTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaElt
bShOb2RlKgogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
NjQoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIHZhbHVlUmVncy5ncHIoKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSwKLSAgICAgICAgICAgIGRhdGEtPmZhbGxU
aHJvdWdoKTsKKyAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgc2NyYXRjaCwgdmFsdWVSZWdz
LmdwcigpLCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJl
Z2lzdGVycyhzY3JhdGNoKTsKQEAgLTQ5NjcsNyArNDk2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW4KICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZMZW5ndGgoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoMSkpLAotICAg
ICAgICBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2Nr
KTsKICAgICAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
LCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaCk7CiAgICAgCkBAIC01MDI1LDEy
ICs1MDI1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAg
ICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFSZWdzLmdwcigpLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpLAotICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOworICAg
ICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogI2Vsc2UKICAgICAgICAgYWRkQnJh
bmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpLAotICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgICAgICAg
ICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBh
ZGRCcmFuY2goCkBAIC01MDM4LDcgKzUwMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoQ2hhcihOb2RlCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSwKLSAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAgICAgIGRhdGEt
PmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3Ry
aW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CiAgICAgICAgIG5v
UmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01MDkzLDcgKzUw
OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QmluYXJ5U3dpdGNoU3RyCiAgICAgfQog
ICAgIAogICAgIGlmIChiZWdpbiA9PSBlbmQpIHsKLSAgICAgICAganVtcChkYXRhLT5mYWxsVGhy
b3VnaCwgRm9yY2VKdW1wKTsKKyAgICAgICAganVtcChkYXRhLT5mYWxsVGhyb3VnaC5ibG9jaywg
Rm9yY2VKdW1wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTUxMjksMTQgKzUx
MjksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJpbmFyeVN3aXRjaFN0cgogICAgICAg
ICBkYXRhTG9nKCJsZW5ndGggPSAiLCBtaW5MZW5ndGgsICIsIGNvbW1vbkNoYXJzID0gIiwgY29t
bW9uQ2hhcnMsICIsIGFsbExlbmd0aHNFcXVhbCA9ICIsIGFsbExlbmd0aHNFcXVhbCwgIlxuIik7
CiAgICAgCiAgICAgaWYgKCFhbGxMZW5ndGhzRXF1YWwgJiYgYWxyZWFkeUNoZWNrZWRMZW5ndGgg
PCBtaW5MZW5ndGgpCi0gICAgICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgbGVu
Z3RoLCBJbW0zMihtaW5MZW5ndGgpLCBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgIGJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgbGVuZ3RoLCBJbW0zMihtaW5MZW5ndGgpLCBkYXRh
LT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgaWYgKGFsbExlbmd0aHNFcXVhbCAmJiAoYWxyZWFk
eUNoZWNrZWRMZW5ndGggPCBtaW5MZW5ndGggfHwgIWNoZWNrZWRFeGFjdExlbmd0aCkpCi0gICAg
ICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbGVuZ3RoLCBJbW0zMihtaW5M
ZW5ndGgpLCBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgbGVuZ3RoLCBJbW0zMihtaW5MZW5ndGgpLCBkYXRhLT5mYWxsVGhyb3Vn
aC5ibG9jayk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtQ2hlY2tlZDsgaSA8IGNv
bW1vbkNoYXJzOyArK2kpIHsKICAgICAgICAgYnJhbmNoOCgKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyLCBpKSwKLSAg
ICAgICAgICAgIFRydXN0ZWRJbW0zMihjYXNlc1tiZWdpbl0uc3RyaW5nLT5hdChpKSksIGRhdGEt
PmZhbGxUaHJvdWdoKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihjYXNlc1tiZWdpbl0uc3Ry
aW5nLT5hdChpKSksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICB9CiAgICAgCiAgICAg
aWYgKG1pbkxlbmd0aCA9PSBjb21tb25DaGFycykgewpAQCAtNTIwNiw3ICs1MjA2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJpbmFyeVN3aXRjaFN0cgogICAgICAgICAgICAgdGVtcCwg
bWluTGVuZ3RoLCBhbGxMZW5ndGhzRXF1YWwpOwogICAgIH0KICAgICAKLSAgICBhZGRCcmFuY2go
YmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICBhZGRC
cmFuY2goYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2Nr
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKFN3
aXRjaERhdGEqIGRhdGEsIEdQUlJlZyBzdHJpbmcpCkBAIC01MjU4LDcgKzUyNTgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TCiAgICAgVmVjdG9yPFN0cmluZ1N3
aXRjaENhc2U+IGNhc2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBjYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICBTdHJp
bmdTd2l0Y2hDYXNlKGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmluZ0ltcGwoKSwgZGF0YS0+Y2Fz
ZXNbaV0udGFyZ2V0KSk7CisgICAgICAgICAgICBTdHJpbmdTd2l0Y2hDYXNlKGRhdGEtPmNhc2Vz
W2ldLnZhbHVlLnN0cmluZ0ltcGwoKSwgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKSk7CiAg
ICAgfQogICAgIAogICAgIHN0ZDo6c29ydChjYXNlcy5iZWdpbigpLCBjYXNlcy5lbmQoKSk7CkBA
IC01Mjk0LDggKzUyOTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5n
KE5vCiAgICAgICAgIAogICAgICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKHRlbXBHUFIs
IGlkZW50aWZpZXJDYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CiAgICAgICAgIHdo
aWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShtX2ppdCkpCi0gICAgICAgICAgICBqdW1wKGRhdGEt
PmNhc2VzW2JpbmFyeVN3aXRjaC5jYXNlSW5kZXgoKV0udGFyZ2V0LCBGb3JjZUp1bXApOwotICAg
ICAgICBhZGRCcmFuY2goYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCksIGRhdGEtPmZhbGxUaHJv
dWdoKTsKKyAgICAgICAgICAgIGp1bXAoZGF0YS0+Y2FzZXNbYmluYXJ5U3dpdGNoLmNhc2VJbmRl
eCgpXS50YXJnZXQuYmxvY2ssIEZvcmNlSnVtcCk7CisgICAgICAgIGFkZEJyYW5jaChiaW5hcnlT
d2l0Y2guZmFsbFRocm91Z2goKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAK
ICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTMyNSwxMiArNTMy
NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5vCiAgICAgICAg
IGFkZEJyYW5jaCgKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgb3AxUmVncy5ncHIoKSwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSwKLSAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAg
ICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICNlbHNlCiAgICAgICAgIGFkZEJyYW5jaCgK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgb3AxUmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSwKLSAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAgICAgIGRh
dGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJh
bmNoKApAQCAtNTMzOCw3ICs1MzM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aFN0cmluZyhObwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSks
Ci0gICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgICAgICBkYXRhLT5mYWxs
VGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNoU3RyaW5nT25TdHJp
bmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2NDQxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDg3LDI1ICszNDg3LDIzIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlSnVtcCgpCiAgICAgewotICAgICAgICBtX291dC5qdW1wKGxvd0Jsb2NrKG1fbm9kZS0+dGFr
ZW5CbG9jaygpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAobG93QmxvY2sobV9ub2RlLT50YXJnZXRC
bG9jaygpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUJyYW5jaCgpCiAgICAgewot
ICAgICAgICAvLyBGSVhNRTogREZHIHNob3VsZCBiZSBhYmxlIHRvIHRlbGwgdXMgYnJhbmNoIHdl
aWdodHMgaGVyZS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyOTA1NQotICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAg
ICAgYm9vbGlmeShtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIHVuc3VyZShsb3dCbG9j
ayhtX25vZGUtPnRha2VuQmxvY2soKSkpLAotICAgICAgICAgICAgdW5zdXJlKGxvd0Jsb2NrKG1f
bm9kZS0+bm90VGFrZW5CbG9jaygpKSkpOworICAgICAgICAgICAgV2VpZ2h0ZWRUYXJnZXQoCisg
ICAgICAgICAgICAgICAgbG93QmxvY2sobV9ub2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2Nr
KSwKKyAgICAgICAgICAgICAgICBtX25vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uY291bnQpLAor
ICAgICAgICAgICAgV2VpZ2h0ZWRUYXJnZXQoCisgICAgICAgICAgICAgICAgbG93QmxvY2sobV9u
b2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrKSwKKyAgICAgICAgICAgICAgICBtX25v
ZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uY291bnQpKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlU3dpdGNoKCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBERkcgc2hvdWxkIGJl
IGFibGUgdG8gdGVsbCB1cyBicmFuY2ggd2VpZ2h0cyBoZXJlLgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDU1Ci0gICAgICAgIAogICAgICAg
ICBTd2l0Y2hEYXRhKiBkYXRhID0gbV9ub2RlLT5zd2l0Y2hEYXRhKCk7CiAgICAgICAgIHN3aXRj
aCAoZGF0YS0+a2luZCkgewogICAgICAgICBjYXNlIFN3aXRjaEltbTogewpAQCAtMzUzNyw3ICsz
NTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdElu
dCwgaXNEb3VibGUpOwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAg
ICAgICAgICAgaXNDZWxsT3JNaXNjKGJveGVkVmFsdWUpLAotICAgICAgICAgICAgICAgICAgICB1
c3VhbGx5KGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSksIHJhcmVseShpc0RvdWJsZSkpOwor
ICAgICAgICAgICAgICAgICAgICB1c3VhbGx5KGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoLmJs
b2NrKSksIHJhcmVseShpc0RvdWJsZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGlzRG91YmxlLCBpbm5lckxhc3ROZXh0KTsKICAgICAgICAgICAg
ICAgICBMVmFsdWUgZG91YmxlVmFsdWUgPSB1bmJveERvdWJsZShib3hlZFZhbHVlKTsKQEAgLTM1
NDUsNyArMzU0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVu
ZChtX291dC5hbmNob3IoaW50SW5Eb3VibGUpKTsKICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKG1fb3V0LmludFRvRG91
YmxlKGludEluRG91YmxlKSwgZG91YmxlVmFsdWUpLAotICAgICAgICAgICAgICAgICAgICB1bnN1
cmUoc3dpdGNoT25JbnRzKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSkpOwor
ICAgICAgICAgICAgICAgICAgICB1bnN1cmUoc3dpdGNoT25JbnRzKSwgdW5zdXJlKGxvd0Jsb2Nr
KGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMzU2Miw2ICszNTYwLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjogewogICAgICAgICAgICAgTFZhbHVlIHN0cmlu
Z1ZhbHVlOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVz
ZSBzb21ldGhpbmcgb3RoZXIgdGhhbiB1bnN1cmUoKSBmb3IgdGhlIGJyYW5jaCB3ZWlnaHQKKyAg
ICAgICAgICAgIC8vIG9mIHRoZSBmYWxsVGhyb3VnaCBibG9jay4gVGhlIG1haW4gY2hhbGxlbmdl
IGlzIGp1c3QgdGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBicmFuY2hlcyB0
byBmYWxsVGhyb3VnaCBidXQgYSBzaW5nbGUgY291bnQsIHNvIHdlIHdvdWxkIG5lZWQgdG8gZGl2
dnkgaXQgdXAKKyAgICAgICAgICAgIC8vIGFtb25nIHRoZSBkaWZmZXJlbnQgbG93ZXJlZCBicmFu
Y2hlcy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkwODIKKyAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKICAgICAg
ICAgICAgICAgICBzdHJpbmdWYWx1ZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKQEAg
LTM1NzYsMTMgKzM1ODAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgICAgIGlzTm90Q2VsbCh1bmJv
eGVkVmFsdWUpLAotICAgICAgICAgICAgICAgICAgICB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFs
bFRocm91Z2gpKSwgdW5zdXJlKGlzQ2VsbENhc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgdW5z
dXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKSksIHVuc3VyZShpc0NlbGxDYXNl
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBpc1N0cmluZ0Nhc2UpOwogICAgICAgICAg
ICAgICAgIExWYWx1ZSBjZWxsVmFsdWUgPSB1bmJveGVkVmFsdWU7CiAgICAgICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgICAgICBpc05vdFN0cmluZyhjZWxsVmFsdWUp
LAotICAgICAgICAgICAgICAgICAgICB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gp
KSwgdW5zdXJlKGlzU3RyaW5nQ2FzZSkpOworICAgICAgICAgICAgICAgICAgICB1bnN1cmUobG93
QmxvY2soZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spKSwgdW5zdXJlKGlzU3RyaW5nQ2FzZSkpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3RyaW5n
Q2FzZSwgbGFzdE5leHQpOwogICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gY2VsbFZhbHVl
OwpAQCAtMzYwNSw3ICszNjA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5u
b3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3Ry
aW5nVmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAg
bV9vdXQuaW50MzJPbmUpLAotICAgICAgICAgICAgICAgIHVuc3VyZShsb3dCbG9jayhkYXRhLT5m
YWxsVGhyb3VnaCkpLCB1bnN1cmUobGVuZ3RoSXMxKSk7CisgICAgICAgICAgICAgICAgdW5zdXJl
KGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKSksIHVuc3VyZShsZW5ndGhJczEpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhsZW5ndGhJczEsIG5lZWRSZXNvbHV0aW9uKTsKICAgICAgICAgICAgIFZlY3RvcjxW
YWx1ZUZyb21CbG9jaywgMj4gdmFsdWVzOwpAQCAtNDE4OCwxMCArNDE5MiwxMiBAQCBwcml2YXRl
OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAogICAgICAgICAgICAg
ICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVl
KCkpLAotICAgICAgICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldCksIFdl
aWdodCgpKSk7CisgICAgICAgICAgICAgICAgbG93QmxvY2soZGF0YS0+Y2FzZXNbaV0udGFyZ2V0
LmJsb2NrKSwgV2VpZ2h0KGRhdGEtPmNhc2VzW2ldLnRhcmdldC5jb3VudCkpKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oc3dpdGNoVmFsdWUs
IGNhc2VzLCBsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCksIFdlaWdodCgpKTsKKyAgICAgICAg
bV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICBzd2l0Y2hWYWx1ZSwgY2FzZXMs
CisgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayksIFdlaWdodChk
YXRhLT5mYWxsVGhyb3VnaC5jb3VudCkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgZG91Ymxl
VG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUsIGRvdWJsZSBsb3csIGRvdWJsZSBoaWdoLCBib29s
IGlzU2lnbmVkID0gdHJ1ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>