<?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>13004</bug_id>
          
          <creation_ts>2007-03-07 11:44:40 -0800</creation_ts>
          <short_desc>Repeatedly calling XPathExpression.evaluate() causes crashes or memory leaks</short_desc>
          <delta_ts>2007-03-07 20:01:10 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20029</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 11:44:40 -0800</bug_when>
    <thetext>Also, assertion failures on debug builds. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20030</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 11:52:35 -0800</bug_when>
    <thetext>Even worse than that - there is a case that causes a crash in release build, too. This seems way more broken than I thought, still investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20025</commentid>
    <comment_count>2</comment_count>
      <attachid>13520</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 11:53:39 -0800</bug_when>
    <thetext>Created attachment 13520
test case (will crash)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20020</commentid>
    <comment_count>3</comment_count>
      <attachid>13523</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 13:12:23 -0800</bug_when>
    <thetext>Created attachment 13523
kill Expression::optimize()

The expression optimization seems pretty much completely broken to me at the moment. Everything from optimize() to isConstant() has major problems (though it could be that I&apos;m misunderstanding the design, of course).  I suggest just removing it.

I have checked that fast/xpath tests take exactly the same time as they did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19994</commentid>
    <comment_count>4</comment_count>
      <attachid>13528</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-07 14:16:12 -0800</bug_when>
    <thetext>Created attachment 13528
kill Expression::optimize()

Oops, forgot to include ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19977</commentid>
    <comment_count>5</comment_count>
      <attachid>13528</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-07 15:05:31 -0800</bug_when>
    <thetext>Comment on attachment 13528
kill Expression::optimize()

r=me

If we want to do an optimization like this in the future we should make some performance test cases and make sure they actually get faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19871</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-03-07 20:01:10 -0800</bug_when>
    <thetext>Landed in r20051.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13520</attachid>
            <date>2007-03-07 11:53:39 -0800</date>
            <delta_ts>2007-03-07 11:53:39 -0800</delta_ts>
            <desc>test case (will crash)</desc>
            <filename>optimize-twice.html</filename>
            <type>text/html</type>
            <size>1599</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgo8aHRtbD4KPGhl
YWQ+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgoKPHNjcmlw
dD4KICAgIGRvYyA9IChuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoIjxkb2M+PGVsZW0+
MTwvZWxlbT48ZWxlbT4yPC9lbGVtPjwvZG9jPiIsICJhcHBsaWNhdGlvbi94bWwiKTsKCiAgICBl
eHByID0gZG9jLmNyZWF0ZUV4cHJlc3Npb24oIjEiLCBudWxsKTsKCiAgICBzaG91bGRCZSgiZXhw
ci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNU
UklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICInMSciKTsKICAgIHNob3VsZEJlKCJleHBy
LmV2YWx1YXRlKGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5uZXh0U2libGluZywgWFBh
dGhSZXN1bHQuU1RSSU5HX1RZUEUsIG51bGwpLnN0cmluZ1ZhbHVlIiwgIicxJyIpOwoKICAgIGV4
cHIgPSBkb2MuY3JlYXRlRXhwcmVzc2lvbigiLiIsIG51bGwpOwoKICAgIHNob3VsZEJlKCJleHBy
LmV2YWx1YXRlKGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZCwgWFBhdGhSZXN1bHQuU1RS
SU5HX1RZUEUsIG51bGwpLnN0cmluZ1ZhbHVlIiwgIicxJyIpOwogICAgc2hvdWxkQmUoImV4cHIu
ZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLCBYUGF0
aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUiLCAiJzInIik7CgogICAgZXhw
ciA9IGRvYy5jcmVhdGVFeHByZXNzaW9uKCJzdHJpbmcoLikiLCBudWxsKTsKCiAgICBzaG91bGRC
ZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVz
dWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICInMSciKTsKICAgIHNob3VsZEJl
KCJleHByLmV2YWx1YXRlKGRvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5uZXh0U2libGlu
ZywgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsIG51bGwpLnN0cmluZ1ZhbHVlIiwgIicyJyIpOwoK
ICAgIGV4cHIgPSBkb2MuY3JlYXRlRXhwcmVzc2lvbigiMSArIC4iLCBudWxsKTsKCiAgICBzaG91
bGRCZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRo
UmVzdWx0Lk5VTUJFUl9UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICIyIik7CiAgICBzaG91bGRC
ZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxp
bmcsIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICIzIik7Cgog
ICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cgo8L3NjcmlwdD4KPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13523</attachid>
            <date>2007-03-07 13:12:23 -0800</date>
            <delta_ts>2007-03-07 14:16:12 -0800</delta_ts>
            <desc>kill Expression::optimize()</desc>
            <filename>13004r1_patch.txt</filename>
            <type>text/plain</type>
            <size>26025</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9ldmFsdWF0
ZS10d2ljZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1BBU1Mg
ZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0
LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0
ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0
LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0
ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBF
LCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1l
bnRFbGVtZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBF
LCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMicKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1l
bnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJp
bmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZp
cnN0Q2hpbGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJp
bmdWYWx1ZSBpcyAnMicKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZp
cnN0Q2hpbGQsIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFLCBudWxsKS5udW1iZXJWYWx1ZSBpcyAy
CitQQVNTIGV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLm5leHRT
aWJsaW5nLCBYUGF0aFJlc3VsdC5OVU1CRVJfVFlQRSwgbnVsbCkubnVtYmVyVmFsdWUgaXMgMwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhw
ZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxhaW4K
TmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
eHBhdGgvZXZhbHVhdGUtdHdpY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3hwYXRoL2V2YWx1YXRlLXR3aWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3hwYXRoL2V2YWx1YXRlLXR3aWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CisgICAgZG9jID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmlu
ZygiPGRvYz48ZWxlbT4xPC9lbGVtPjxlbGVtPjI8L2VsZW0+PC9kb2M+IiwgImFwcGxpY2F0aW9u
L3htbCIpOworCisgICAgZXhwciA9IGRvYy5jcmVhdGVFeHByZXNzaW9uKCIxIiwgbnVsbCk7CisK
KyAgICBzaG91bGRCZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hp
bGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICInMSciKTsK
KyAgICBzaG91bGRCZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hp
bGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1
ZSIsICInMSciKTsKKworICAgIGV4cHIgPSBkb2MuY3JlYXRlRXhwcmVzc2lvbigiLiIsIG51bGwp
OworCisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJz
dENoaWxkLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUiLCAiJzEn
Iik7CisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJz
dENoaWxkLm5leHRTaWJsaW5nLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5n
VmFsdWUiLCAiJzInIik7CisKKyAgICBleHByID0gZG9jLmNyZWF0ZUV4cHJlc3Npb24oInN0cmlu
ZyguKSIsIG51bGwpOworCisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50
RWxlbWVudC5maXJzdENoaWxkLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5n
VmFsdWUiLCAiJzEnIik7CisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50
RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwg
bnVsbCkuc3RyaW5nVmFsdWUiLCAiJzInIik7CisKKyAgICBleHByID0gZG9jLmNyZWF0ZUV4cHJl
c3Npb24oIjEgKyAuIiwgbnVsbCk7CisKKyAgICBzaG91bGRCZSgiZXhwci5ldmFsdWF0ZShkb2Mu
ZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFLCBudWxs
KS5udW1iZXJWYWx1ZSIsICIyIik7CisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRv
Y3VtZW50RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLCBYUGF0aFJlc3VsdC5OVU1CRVJf
VFlQRSwgbnVsbCkubnVtYmVyVmFsdWUiLCAiMyIpOworCisgICAgdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9ldmFsdWF0ZS10d2ljZS5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IFdlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhF
eHByZXNzaW9uLmNwcAkocmV2aXNpb24gMjAwMjEpCisrKyBXZWJDb3JlL3htbC9YUGF0aEV4cHJl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIFBhc3NSZWZQdHI8WFBh
dGhSZXN1bHQ+IFhQYXRoRXhwcmVzc2lvbjoKICAgICBFeHByZXNzaW9uOjpldmFsdWF0aW9uQ29u
dGV4dCgpLm5vZGUgPSBjb250ZXh0Tm9kZTsKICAgICBFeHByZXNzaW9uOjpldmFsdWF0aW9uQ29u
dGV4dCgpLnNpemUgPSAxOwogICAgIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkucG9z
aXRpb24gPSAxOwotICAgIG1fdG9wRXhwcmVzc2lvbi0+b3B0aW1pemUoKTsKICAgICBSZWZQdHI8
WFBhdGhSZXN1bHQ+IHJlc3VsdCA9IG5ldyBYUGF0aFJlc3VsdChldmVudFRhcmdldCwgbV90b3BF
eHByZXNzaW9uLT5ldmFsdWF0ZSgpKTsKIAogICAgIGlmICh0eXBlICE9IFhQYXRoUmVzdWx0OjpB
TllfVFlQRSkgewpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAJKHJldmlzaW9u
IDIwMDIxKQorKysgV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDIxICs0MiwxMiBAQCBFdmFsdWF0aW9uQ29udGV4dCAmRXhwcmVzc2lvbjo6
ZXZhbHVhdGlvCiB9CiAKIEV4cHJlc3Npb246OkV4cHJlc3Npb24oKQotICAgIDogbV9jb25zdGFu
dFZhbHVlKDApCiB7CiB9CiAKIEV4cHJlc3Npb246On5FeHByZXNzaW9uKCkKIHsKICAgICBkZWxl
dGVBbGxWYWx1ZXMobV9zdWJFeHByZXNzaW9ucyk7Ci0gICAgZGVsZXRlIG1fY29uc3RhbnRWYWx1
ZTsKLX0KLQotVmFsdWUgRXhwcmVzc2lvbjo6ZXZhbHVhdGUoKSBjb25zdAotewotICAgIGlmICht
X2NvbnN0YW50VmFsdWUpCi0gICAgICAgIHJldHVybiAqbV9jb25zdGFudFZhbHVlOwotICAgIHJl
dHVybiBkb0V2YWx1YXRlKCk7CiB9CiAKIHZvaWQgRXhwcmVzc2lvbjo6YWRkU3ViRXhwcmVzc2lv
bihFeHByZXNzaW9uKiBleHByKQpAQCAtNjQsMjUgKzU1LDYgQEAgdm9pZCBFeHByZXNzaW9uOjph
ZGRTdWJFeHByZXNzaW9uKEV4cHJlcwogICAgIG1fc3ViRXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIp
OwogfQogCi12b2lkIEV4cHJlc3Npb246Om9wdGltaXplKCkKLXsKLSAgICBib29sIGFsbFN1YkV4
cHJlc3Npb25zQ29uc3RhbnQgPSB0cnVlOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3N1YkV4cHJlc3Npb25zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChtX3N1YkV4
cHJlc3Npb25zW2ldLT5pc0NvbnN0YW50KCkpCi0gICAgICAgICAgICBtX3N1YkV4cHJlc3Npb25z
W2ldLT5vcHRpbWl6ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhbGxTdWJFeHByZXNz
aW9uc0NvbnN0YW50ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGFsbFN1YkV4cHJlc3Npb25z
Q29uc3RhbnQpIHsKLSAgICAgICAgQVNTRVJUICghbV9jb25zdGFudFZhbHVlKTsKLSAgICAgICAg
bV9jb25zdGFudFZhbHVlID0gbmV3IFZhbHVlKGRvRXZhbHVhdGUoKSk7Ci0gICAgICAgIGRlbGV0
ZUFsbFZhbHVlcyhtX3N1YkV4cHJlc3Npb25zKTsKLSAgICAgICAgbV9zdWJFeHByZXNzaW9ucy5j
bGVhcigpOwotICAgIH0KLX0KLQogdW5zaWduZWQgRXhwcmVzc2lvbjo6c3ViRXhwckNvdW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdWJFeHByZXNzaW9ucy5zaXplKCk7CkBAIC0xMDAsMTQg
KzcyLDYgQEAgY29uc3QgRXhwcmVzc2lvbiogRXhwcmVzc2lvbjo6c3ViRXhwcih1bgogICAgIHJl
dHVybiBtX3N1YkV4cHJlc3Npb25zW2ldOwogfQogCi1ib29sIEV4cHJlc3Npb246OmlzQ29uc3Rh
bnQoKSBjb25zdAotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N1YkV4cHJlc3Np
b25zLnNpemUoKTsgaSsrKQotICAgICAgICBpZiAoIW1fc3ViRXhwcmVzc2lvbnNbaV0tPmlzQ29u
c3RhbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQogfQogfQogCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5oCShyZXZpc2lvbiAyMDAy
MSkKKysrIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMTEgKzYzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRXhwcmVz
c2lvbigpOwogICAgICAgICAgICAgdmlydHVhbCB+RXhwcmVzc2lvbigpOwogCi0gICAgICAgICAg
ICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgICAgICAgICB2aXJ0dWFsIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3QgPSAwOwogCiAgICAgICAgICAgICB2b2lkIGFkZFN1YkV4cHJl
c3Npb24oRXhwcmVzc2lvbiopOwotICAgICAgICAgICAgdm9pZCBvcHRpbWl6ZSgpOwotICAgICAg
ICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKIAogICAgICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICB1bnNpZ25lZCBzdWJFeHByQ291bnQoKSBjb25zdDsKQEAgLTc1LDEw
ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGNvbnN0IEV4cHJlc3Np
b24qIHN1YkV4cHIodW5zaWduZWQpIGNvbnN0OwogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAg
ICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdCA9IDA7Ci0KICAgICAgICAgICAg
IFZlY3RvcjxFeHByZXNzaW9uKj4gbV9zdWJFeHByZXNzaW9uczsKLSAgICAgICAgICAgIFZhbHVl
KiBtX2NvbnN0YW50VmFsdWU7CiAgICAgICAgIH07CiAKICAgICB9CkluZGV4OiBXZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIxICs3MSwxMTEgQEAgc3RydWN0IEZ1bmN0aW9u
UmVjIHsKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgRnVuY3Rpb25SZWM+KiBmdW5jdGlvbk1hcDsK
IAogY2xhc3MgRnVuTGFzdCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBib29sIGlz
Q29uc3RhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5Qb3Np
dGlvbiA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5Db3VudCA6IHB1YmxpYyBG
dW5jdGlvbiB7Ci0gICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5JZCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmly
dHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVh
dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBj
bGFzcyBGdW5Mb2NhbE5hbWUgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnN0YW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuTmFt
ZXNwYWNlVVJJIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFu
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bk5hbWUgOiBwdWJs
aWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFs
dWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuU3RyaW5nIDogcHVibGljIEZ1bmN0aW9uIHsK
LSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVl
IGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5Db25jYXQgOiBwdWJsaWMgRnVuY3Rp
b24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1blN0YXJ0c1dpdGggOiBwdWJs
aWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkNvbnRhaW5z
IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5T
dWJzdHJpbmdCZWZvcmUgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9F
dmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07
CiAKIGNsYXNzIEZ1blN1YnN0cmluZ0FmdGVyIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0
dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5TdWJzdHJpbmcgOiBwdWJsaWMgRnVuY3Rpb24gewot
ICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1blN0cmluZ0xlbmd0aCA6IHB1YmxpYyBG
dW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuTm9ybWFsaXplU3Bh
Y2UgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1
blRyYW5zbGF0ZSA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1
YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAog
Y2xhc3MgRnVuQm9vbGVhbiA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBk
b0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Owog
fTsKIAogY2xhc3MgRnVuTm90IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVl
IGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7
CiB9OwogCiBjbGFzcyBGdW5UcnVlIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNDb25zdGFudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1
bkZhbHNlIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkxhbmcgOiBwdWJsaWMg
RnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0
ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuTnVtYmVyIDogcHVibGljIEZ1bmN0aW9uIHsKLSAg
ICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2
YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5TdW0gOiBwdWJsaWMgRnVuY3Rpb24gewot
ICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkZsb29yIDogcHVibGljIEZ1bmN0aW9u
IHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5DZWlsaW5nIDogcHVibGljIEZ1
bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5Sb3VuZCA6IHB1Ymxp
YyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogcHVibGljOgogICAgIHN0YXRpYyBkb3Vi
bGUgcm91bmQoZG91YmxlKTsKIH07CkBAIC0yODUsMzIgKzI3NSwxNyBAQCBTdHJpbmcgRnVuY3Rp
b246Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX25hbWU7CiB9CiAKLVZhbHVlIEZ1bkxhc3Q6
OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuTGFzdDo6ZXZhbHVhdGUoKSBjb25zdAogewog
ICAgIHJldHVybiBFeHByZXNzaW9uOjpldmFsdWF0aW9uQ29udGV4dCgpLnNpemU7CiB9CiAKLWJv
b2wgRnVuTGFzdDo6aXNDb25zdGFudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1WYWx1ZSBGdW5Qb3NpdGlvbjo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Qb3NpdGlv
bjo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIHJldHVybiBFeHByZXNzaW9uOjpldmFsdWF0aW9u
Q29udGV4dCgpLnBvc2l0aW9uOwogfQogCi1ib29sIEZ1blBvc2l0aW9uOjppc0NvbnN0YW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRnVuSWQ6OmlzQ29uc3RhbnQo
KSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmFsdWUgRnVuSWQ6OmRvRXZhbHVh
dGUoKSBjb25zdAorVmFsdWUgRnVuSWQ6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogdGhpcyBhbGdvcml0aG0gZG9lcyBub3QgcHJvZHVjZSBhbiBvcmRlcmVkIG5vZGUtc2V0LCBh
cyBpdCBzaG91bGQuCiAKQEAgLTM1OCwxMiArMzMzLDcgQEAgVmFsdWUgRnVuSWQ6OmRvRXZhbHVh
dGUoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRnVuTG9jYWxOYW1lOjpp
c0NvbnN0YW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVlIEZ1bkxv
Y2FsTmFtZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Mb2NhbE5hbWU6OmV2YWx1YXRl
KCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBpZiAoYXJnQ291bnQoKSA+IDAp
IHsKQEAgLTM4MCwxMiArMzUwLDcgQEAgVmFsdWUgRnVuTG9jYWxOYW1lOjpkb0V2YWx1YXRlKCkg
Y29uc3QKICAgICByZXR1cm4gVmFsdWUobm9kZS0+bG9jYWxOYW1lKCkpOwogfQogCi1ib29sIEZ1
bk5hbWVzcGFjZVVSSTo6aXNDb25zdGFudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1WYWx1ZSBGdW5OYW1lc3BhY2VVUkk6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVu
TmFtZXNwYWNlVVJJOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IDA7CiAg
ICAgaWYgKGFyZ0NvdW50KCkgPiAwKSB7CkBAIC00MDIsMTIgKzM2Nyw3IEBAIFZhbHVlIEZ1bk5h
bWVzcGFjZVVSSTo6ZG9FdmFsdWF0ZSgpIGNvbnMKICAgICByZXR1cm4gVmFsdWUobm9kZS0+bmFt
ZXNwYWNlVVJJKCkpOwogfQogCi1ib29sIEZ1bk5hbWU6OmlzQ29uc3RhbnQoKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmFsdWUgRnVuTmFtZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0
CitWYWx1ZSBGdW5OYW1lOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IDA7
CiAgICAgaWYgKGFyZ0NvdW50KCkgPiAwKSB7CkBAIC00MjUsNyArMzg1LDcgQEAgVmFsdWUgRnVu
TmFtZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHByZWZpeC5pc0VtcHR5KCkgPyBu
b2RlLT5sb2NhbE5hbWUoKS5kb21TdHJpbmcoKSA6IG5vZGUtPnByZWZpeCgpICsgIjoiICsgbm9k
ZS0+bG9jYWxOYW1lKCk7CiB9CiAKLVZhbHVlIEZ1bkNvdW50Ojpkb0V2YWx1YXRlKCkgY29uc3QK
K1ZhbHVlIEZ1bkNvdW50OjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgVmFsdWUgYSA9IGFyZygw
KS0+ZXZhbHVhdGUoKTsKICAgICAKQEAgLTQzNSwxOSArMzk1LDE0IEBAIFZhbHVlIEZ1bkNvdW50
Ojpkb0V2YWx1YXRlKCkgY29uc3QKICAgICByZXR1cm4gYS50b05vZGVWZWN0b3IoKS5zaXplKCk7
CiB9CiAKLWJvb2wgRnVuQ291bnQ6OmlzQ29uc3RhbnQoKSBjb25zdAotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotVmFsdWUgRnVuU3RyaW5nOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1
blN0cmluZzo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIGlmICghYXJnQ291bnQoKSkKICAgICAg
ICAgcmV0dXJuIFZhbHVlKEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkubm9kZS5nZXQo
KSkudG9TdHJpbmcoKTsKICAgICByZXR1cm4gYXJnKDApLT5ldmFsdWF0ZSgpLnRvU3RyaW5nKCk7
CiB9CiAKLVZhbHVlIEZ1bkNvbmNhdDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Db25j
YXQ6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBTdHJpbmcgc3RyID0gIiI7CiAKQEAgLTQ1Nyw3
ICs0MTIsNyBAQCBWYWx1ZSBGdW5Db25jYXQ6OmRvRXZhbHVhdGUoKSBjb25zdAogICAgIHJldHVy
biBzdHI7CiB9CiAKLVZhbHVlIEZ1blN0YXJ0c1dpdGg6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFs
dWUgRnVuU3RhcnRzV2l0aDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIFN0cmluZyBzMSA9IGFy
ZygwKS0+ZXZhbHVhdGUoKS50b1N0cmluZygpOwogICAgIFN0cmluZyBzMiA9IGFyZygxKS0+ZXZh
bHVhdGUoKS50b1N0cmluZygpOwpAQCAtNDY4LDcgKzQyMyw3IEBAIFZhbHVlIEZ1blN0YXJ0c1dp
dGg6OmRvRXZhbHVhdGUoKSBjb25zdAogICAgIHJldHVybiBzMS5zdGFydHNXaXRoKHMyKTsKIH0K
IAotVmFsdWUgRnVuQ29udGFpbnM6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuQ29udGFp
bnM6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBTdHJpbmcgczEgPSBhcmcoMCktPmV2YWx1YXRl
KCkudG9TdHJpbmcoKTsKICAgICBTdHJpbmcgczIgPSBhcmcoMSktPmV2YWx1YXRlKCkudG9TdHJp
bmcoKTsKQEAgLTQ3OSw3ICs0MzQsNyBAQCBWYWx1ZSBGdW5Db250YWluczo6ZG9FdmFsdWF0ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHMxLmNvbnRhaW5zKHMyKSAhPSAwOwogfQogCi1WYWx1ZSBGdW5T
dWJzdHJpbmdCZWZvcmU6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuU3Vic3RyaW5nQmVm
b3JlOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHMxID0gYXJnKDApLT5ldmFsdWF0
ZSgpLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHMyID0gYXJnKDEpLT5ldmFsdWF0ZSgpLnRvU3Ry
aW5nKCk7CkBAIC00OTUsNyArNDUwLDcgQEAgVmFsdWUgRnVuU3Vic3RyaW5nQmVmb3JlOjpkb0V2
YWx1YXRlKCkgYwogICAgIHJldHVybiBzMS5sZWZ0KGkpOwogfQogCi1WYWx1ZSBGdW5TdWJzdHJp
bmdBZnRlcjo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5TdWJzdHJpbmdBZnRlcjo6ZXZh
bHVhdGUoKSBjb25zdAogewogICAgIFN0cmluZyBzMSA9IGFyZygwKS0+ZXZhbHVhdGUoKS50b1N0
cmluZygpOwogICAgIFN0cmluZyBzMiA9IGFyZygxKS0+ZXZhbHVhdGUoKS50b1N0cmluZygpOwpA
QCAtNTEwLDcgKzQ2NSw3IEBAIFZhbHVlIEZ1blN1YnN0cmluZ0FmdGVyOjpkb0V2YWx1YXRlKCkg
Y28KICAgICByZXR1cm4gczEuc3Vic3RyaW5nKHMyLmxlbmd0aCgpKTsKIH0KIAotVmFsdWUgRnVu
U3Vic3RyaW5nOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1blN1YnN0cmluZzo6ZXZhbHVh
dGUoKSBjb25zdAogewogICAgIFN0cmluZyBzID0gYXJnKDApLT5ldmFsdWF0ZSgpLnRvU3RyaW5n
KCk7CiAgICAgbG9uZyBwb3MgPSBzdGF0aWNfY2FzdDxsb25nPihGdW5Sb3VuZDo6cm91bmQoYXJn
KDEpLT5ldmFsdWF0ZSgpLnRvTnVtYmVyKCkpKTsKQEAgLTUzNiwxNCArNDkxLDE0IEBAIFZhbHVl
IEZ1blN1YnN0cmluZzo6ZG9FdmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHMuc3Vic3RyaW5n
KHBvcyAtIDEsIGxlbik7CiB9CiAKLVZhbHVlIEZ1blN0cmluZ0xlbmd0aDo6ZG9FdmFsdWF0ZSgp
IGNvbnN0CitWYWx1ZSBGdW5TdHJpbmdMZW5ndGg6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBp
ZiAoIWFyZ0NvdW50KCkpCiAgICAgICAgIHJldHVybiBWYWx1ZShFeHByZXNzaW9uOjpldmFsdWF0
aW9uQ29udGV4dCgpLm5vZGUuZ2V0KCkpLnRvU3RyaW5nKCkubGVuZ3RoKCk7CiAgICAgcmV0dXJu
IGFyZygwKS0+ZXZhbHVhdGUoKS50b1N0cmluZygpLmxlbmd0aCgpOwogfQogCi1WYWx1ZSBGdW5O
b3JtYWxpemVTcGFjZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Ob3JtYWxpemVTcGFj
ZTo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIGlmICghYXJnQ291bnQoKSkgewogICAgICAgICBT
dHJpbmcgcyA9IFZhbHVlKEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkubm9kZS5nZXQo
KSkudG9TdHJpbmcoKTsKQEAgLTU1NCw3ICs1MDksNyBAQCBWYWx1ZSBGdW5Ob3JtYWxpemVTcGFj
ZTo6ZG9FdmFsdWF0ZSgpIGNvCiAgICAgcmV0dXJuIFZhbHVlKHMuc2ltcGxpZnlXaGl0ZVNwYWNl
KCkpOwogfQogCi1WYWx1ZSBGdW5UcmFuc2xhdGU6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUg
RnVuVHJhbnNsYXRlOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHMxID0gYXJnKDAp
LT5ldmFsdWF0ZSgpLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHMyID0gYXJnKDEpLT5ldmFsdWF0
ZSgpLnRvU3RyaW5nKCk7CkBAIC01NzcsMjcgKzUzMiwyMiBAQCBWYWx1ZSBGdW5UcmFuc2xhdGU6
OmRvRXZhbHVhdGUoKSBjb25zdAogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9CiAKLVZhbHVlIEZ1
bkJvb2xlYW46OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuQm9vbGVhbjo6ZXZhbHVhdGUo
KSBjb25zdAogewogICAgIHJldHVybiBhcmcoMCktPmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiB9
CiAKLVZhbHVlIEZ1bk5vdDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Ob3Q6OmV2YWx1
YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWFyZygwKS0+ZXZhbHVhdGUoKS50b0Jvb2xlYW4o
KTsKIH0KIAotVmFsdWUgRnVuVHJ1ZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgRnVuVHJ1ZTo6aXNDb25zdGFudCgpIGNvbnN0CitWYWx1ZSBGdW5U
cnVlOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVZhbHVlIEZ1
bkxhbmc6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuTGFuZzo6ZXZhbHVhdGUoKSBjb25z
dAogewogICAgIFN0cmluZyBsYW5nID0gYXJnKDApLT5ldmFsdWF0ZSgpLnRvU3RyaW5nKCk7CiAK
QEAgLTYzMCwyOSArNTgwLDE5IEBAIFZhbHVlIEZ1bkxhbmc6OmRvRXZhbHVhdGUoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBGdW5MYW5nOjppc0NvbnN0YW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVlIEZ1bkZhbHNlOjpkb0V2YWx1YXRlKCkg
Y29uc3QKK1ZhbHVlIEZ1bkZhbHNlOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEZ1bkZhbHNlOjppc0NvbnN0YW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotVmFsdWUgRnVuTnVtYmVyOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVl
IEZ1bk51bWJlcjo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIGlmICghYXJnQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIFZhbHVlKEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkubm9kZS5n
ZXQoKSkudG9OdW1iZXIoKTsKICAgICByZXR1cm4gYXJnKDApLT5ldmFsdWF0ZSgpLnRvTnVtYmVy
KCk7CiB9CiAKLVZhbHVlIEZ1blN1bTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5TdW06
OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBWYWx1ZSBhID0gYXJnKDApLT5ldmFsdWF0ZSgpOwog
ICAgIGlmICghYS5pc05vZGVWZWN0b3IoKSkKQEAgLTY2NywxMiArNjA3LDEyIEBAIFZhbHVlIEZ1
blN1bTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1bTsKIH0KIAotVmFsdWUgRnVu
Rmxvb3I6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuRmxvb3I6OmV2YWx1YXRlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZmxvb3IoYXJnKDApLT5ldmFsdWF0ZSgpLnRvTnVtYmVyKCkpOwog
fQogCi1WYWx1ZSBGdW5DZWlsaW5nOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1bkNlaWxp
bmc6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2VpbChhcmcoMCktPmV2YWx1YXRl
KCkudG9OdW1iZXIoKSk7CiB9CkBAIC02ODgsNyArNjI4LDcgQEAgZG91YmxlIEZ1blJvdW5kOjpy
b3VuZChkb3VibGUgdmFsKQogICAgIHJldHVybiB2YWw7CiB9CiAKLVZhbHVlIEZ1blJvdW5kOjpk
b0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1blJvdW5kOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJvdW5kKGFyZygwKS0+ZXZhbHVhdGUoKS50b051bWJlcigpKTsKIH0KSW5kZXg6
IFdlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBh
dGhQYXRoLmNwcAkocmV2aXNpb24gMjAwMjEpCisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIEZpbHRlcjo6fkZpbHRlcigpCiAgICAg
ZGVsZXRlQWxsVmFsdWVzKG1fcHJlZGljYXRlcyk7CiB9CiAKLVZhbHVlIEZpbHRlcjo6ZG9FdmFs
dWF0ZSgpIGNvbnN0CitWYWx1ZSBGaWx0ZXI6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBWYWx1
ZSB2ID0gbV9leHByLT5ldmFsdWF0ZSgpOwogICAgIApAQCAtODYsMTMgKzg2LDcgQEAgTG9jYXRp
b25QYXRoOjp+TG9jYXRpb25QYXRoKCkKICAgICBkZWxldGVBbGxWYWx1ZXMobV9zdGVwcyk7CiB9
CiAKLXZvaWQgTG9jYXRpb25QYXRoOjpvcHRpbWl6ZSgpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc3RlcHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fc3RlcHNbaV0tPm9wdGlt
aXplKCk7Ci19Ci0KLVZhbHVlIExvY2F0aW9uUGF0aDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1
ZSBMb2NhdGlvblBhdGg6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICAvKiBGb3IgYWJzb2x1dGUg
bG9jYXRpb24gcGF0aHMsIHRoZSBjb250ZXh0IG5vZGUgaXMgaWdub3JlZCAtIHRoZQogICAgICAq
IGRvY3VtZW50J3Mgcm9vdCBub2RlIGlzIHVzZWQgaW5zdGVhZC4KQEAgLTE0NCw3ICsxMzgsNyBA
QCBQYXRoOjp+UGF0aCgpCiAgICAgZGVsZXRlIG1fcGF0aDsKIH0KIAotVmFsdWUgUGF0aDo6ZG9F
dmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBQYXRoOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcGF0aC0+ZXZhbHVhdGUobV9maWx0ZXItPmV2YWx1YXRlKCkudG9Ob2RlVmVjdG9yKCkp
OwogfQpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS94bWwvWFBhdGhQYXRoLmgJKHJldmlzaW9uIDIwMDIxKQorKysgV2ViQ29yZS94bWwvWFBhdGhQ
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgRmlsdGVyKEV4cHJlc3Npb24qLCBjb25zdCBWZWN0b3I8UHJlZGljYXRl
Kj4mID0gVmVjdG9yPFByZWRpY2F0ZSo+KCkpOwogICAgICAgICAgICAgdmlydHVhbCB+RmlsdGVy
KCk7CiAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFs
dWF0ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0
OwogCisgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBFeHByZXNzaW9uKiBtX2V4cHI7CiAg
ICAgICAgICAgICBWZWN0b3I8UHJlZGljYXRlKj4gbV9wcmVkaWNhdGVzOwogICAgICAgICB9OwpA
QCAtNTgsMTQgKzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExvY2F0
aW9uUGF0aCgpOwogICAgICAgICAgICAgdmlydHVhbCB+TG9jYXRpb25QYXRoKCk7CiAKLSAgICAg
ICAgICAgIHVzaW5nIEV4cHJlc3Npb246OmV2YWx1YXRlOworICAgICAgICAgICAgdmlydHVhbCBW
YWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogICAgICAgICAgICAgVmFsdWUgZXZhbHVhdGUoY29uc3Qg
Tm9kZVZlY3RvciYgc3RhcnROb2RlcykgY29uc3Q7CiAKLSAgICAgICAgICAgIHZvaWQgb3B0aW1p
emUoKTsKLQogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2
YWx1YXRlKCkgY29uc3Q7Ci0KICAgICAgICAgICAgIFZlY3RvcjxTdGVwKj4gbV9zdGVwczsKICAg
ICAgICAgICAgIGJvb2wgbV9hYnNvbHV0ZTsKIApAQCAtNzgsOSArNzQsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBQYXRoKEZpbHRlciosIExvY2F0aW9uUGF0aCopOwogICAg
ICAgICAgICAgdmlydHVhbCB+UGF0aCgpOwogCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAg
ICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIAorICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAg
RmlsdGVyKiBtX2ZpbHRlcjsKICAgICAgICAgICAgIExvY2F0aW9uUGF0aCogbV9wYXRoOwogICAg
ICAgICB9OwpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAkocmV2aXNpb24gMjAwMjEpCisrKyBX
ZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0
Nyw3IEBAIE51bWJlcjo6TnVtYmVyKGRvdWJsZSB2YWx1ZSkKIHsKIH0KIAotYm9vbCBOdW1iZXI6
OmlzQ29uc3RhbnQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi1WYWx1ZSBOdW1i
ZXI6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgTnVtYmVyOjpldmFsdWF0ZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdmFsdWU7CiB9CkBAIC02MiwxNyArNTcsMTIgQEAgU3RyaW5nRXhwcmVz
c2lvbjo6U3RyaW5nRXhwcmVzc2lvbihjb25zdAogewogfQogCi1ib29sIFN0cmluZ0V4cHJlc3Np
b246OmlzQ29uc3RhbnQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi1WYWx1ZSBT
dHJpbmdFeHByZXNzaW9uOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIFN0cmluZ0V4cHJlc3Np
b246OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV92YWx1ZTsKIH0KIAotVmFsdWUg
TmVnYXRpdmU6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgTmVnYXRpdmU6OmV2YWx1YXRlKCkg
Y29uc3QKIHsKICAgICBWYWx1ZSBwKHN1YkV4cHIoMCktPmV2YWx1YXRlKCkpOwogICAgIHJldHVy
biAtcC50b051bWJlcigpOwpAQCAtODUsNyArNzUsNyBAQCBOdW1lcmljT3A6Ok51bWVyaWNPcChP
cGNvZGUgb3Bjb2RlLCBFeHByCiAgICAgYWRkU3ViRXhwcmVzc2lvbihyaHMpOwogfQogCi1WYWx1
ZSBOdW1lcmljT3A6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgTnVtZXJpY09wOjpldmFsdWF0
ZSgpIGNvbnN0CiB7CiAgICAgVmFsdWUgbGhzKHN1YkV4cHIoMCktPmV2YWx1YXRlKCkpOwogICAg
IFZhbHVlIHJocyhzdWJFeHByKDEpLT5ldmFsdWF0ZSgpKTsKQEAgLTIwNCw3ICsxOTQsNyBAQCBi
b29sIEVxVGVzdE9wOjpjb21wYXJlKGNvbnN0IFZhbHVlJiBsaHMsCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1WYWx1ZSBFcVRlc3RPcDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBFcVRlc3RP
cDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIFZhbHVlIGxocyhzdWJFeHByKDApLT5ldmFsdWF0
ZSgpKTsKICAgICBWYWx1ZSByaHMoc3ViRXhwcigxKS0+ZXZhbHVhdGUoKSk7CkBAIC0yMjcsMTMg
KzIxNyw3IEBAIGJvb2wgTG9naWNhbE9wOjpzaG9ydENpcmN1aXRPbigpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7ICAvL3RydWUgb3IgYmFyCiB9CiAKLWJvb2wgTG9naWNhbE9wOjppc0NvbnN0YW50
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3ViRXhwcigwKS0+aXNDb25zdGFudCgpICYmCi0gICAg
ICAgICAgIHN1YkV4cHIoMCktPmV2YWx1YXRlKCkudG9Cb29sZWFuKCkgPT0gc2hvcnRDaXJjdWl0
T24oKTsKLX0KLQotVmFsdWUgTG9naWNhbE9wOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIExv
Z2ljYWxPcDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIFZhbHVlIGxocyhzdWJFeHByKDApLT5l
dmFsdWF0ZSgpKTsKIApAQCAtMjQ2LDcgKzIzMCw3IEBAIFZhbHVlIExvZ2ljYWxPcDo6ZG9FdmFs
dWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1YkV4cHIoMSktPmV2YWx1YXRlKCkudG9Cb29sZWFu
KCk7CiB9CiAKLVZhbHVlIFVuaW9uOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIFVuaW9uOjpl
dmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgYWxnb3JpdGhtIGRvZXNuJ3Qg
cmV0dXJuIG5vZGVzIGluIGRvY3VtZW50IG9yZGVyLCBhcyBpdCBzaG91bGQuCiAgICAgVmFsdWUg
bGhzID0gc3ViRXhwcigwKS0+ZXZhbHVhdGUoKTsKQEAgLTI5NCwxMSArMjc4LDYgQEAgYm9vbCBQ
cmVkaWNhdGU6OmV2YWx1YXRlKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigp
OwogfQogCi12b2lkIFByZWRpY2F0ZTo6b3B0aW1pemUoKQotewotICAgIG1fZXhwci0+b3B0aW1p
emUoKTsKLX0KLQogfQogfQogCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmgJKHJldmlzaW9uIDIwMDIx
KQorKysgV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MjQgKzM4LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTnVtYmVyIDog
cHVibGljIEV4cHJlc3Npb24gewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBOdW1iZXIo
ZG91YmxlKTsKLSAgICAgICAgICAgIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0OwogICAgICAgICBw
cml2YXRlOgotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7Cisg
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgICAgICBk
b3VibGUgbV92YWx1ZTsKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBTdHJpbmdFeHByZXNz
aW9uIDogcHVibGljIEV4cHJlc3Npb24gewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBT
dHJpbmdFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYpOwotICAgICAgICAgICAgYm9vbCBpc0NvbnN0
YW50KCkgY29uc3Q7CiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVl
IGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUo
KSBjb25zdDsKICAgICAgICAgICAgIFN0cmluZyBtX3ZhbHVlOwogICAgICAgICB9OwogCiAgICAg
ICAgIGNsYXNzIE5lZ2F0aXZlIDogcHVibGljIEV4cHJlc3Npb24gewogICAgICAgICBwcml2YXRl
OgotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgICAg
ICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgIH07CiAKICAgICAg
ICAgY2xhc3MgTnVtZXJpY09wIDogcHVibGljIEV4cHJlc3Npb24gewpAQCAtNjUsNyArNjMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgTnVtZXJp
Y09wKE9wY29kZSwgRXhwcmVzc2lvbiogbGhzLCBFeHByZXNzaW9uKiByaHMpOwogICAgICAgICBw
cml2YXRlOgotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7Cisg
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgICAgICBP
cGNvZGUgbV9vcGNvZGU7CiAgICAgICAgIH07CiAKQEAgLTczLDggKzcxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBlbnVtIE9wY29kZSB7IE9Q
X0VRLCBPUF9ORSwgT1BfR1QsIE9QX0xULCBPUF9HRSwgT1BfTEUgfTsKICAgICAgICAgICAgIEVx
VGVzdE9wKE9wY29kZSwgRXhwcmVzc2lvbiogbGhzLCBFeHByZXNzaW9uKiByaHMpOworICAgICAg
ICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgICAg
ICBib29sIGNvbXBhcmUoY29uc3QgVmFsdWUmLCBjb25zdCBWYWx1ZSYpIGNvbnN0OwogICAgICAg
ICAgICAgT3Bjb2RlIG1fb3Bjb2RlOwogICAgICAgICB9OwpAQCAtODMsMTYgKzgxLDE1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgZW51bSBPcGNv
ZGUgeyBPUF9BbmQsIE9QX09yIH07CiAgICAgICAgICAgICBMb2dpY2FsT3AoT3Bjb2RlLCBFeHBy
ZXNzaW9uKiBsaHMsIEV4cHJlc3Npb24qIHJocyk7Ci0gICAgICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNDb25zdGFudCgpIGNvbnN0OwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgYm9vbCBz
aG9ydENpcmN1aXRPbigpIGNvbnN0OwotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1
YXRlKCkgY29uc3Q7CisgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7
CiAgICAgICAgICAgICBPcGNvZGUgbV9vcGNvZGU7CiAgICAgICAgIH07CiAKICAgICAgICAgY2xh
c3MgVW5pb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAg
ICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBQ
cmVkaWNhdGUgOiBOb25jb3B5YWJsZSB7CkBAIC0xMDAsNyArOTcsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBQcmVkaWNhdGUoRXhwcmVzc2lvbiopOwogICAgICAgICAgICAg
flByZWRpY2F0ZSgpOwogICAgICAgICAgICAgYm9vbCBldmFsdWF0ZSgpIGNvbnN0OwotICAgICAg
ICAgICAgdm9pZCBvcHRpbWl6ZSgpOwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgRXhw
cmVzc2lvbiogbV9leHByOwogICAgICAgICB9OwpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhTdGVw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCShyZXZpc2lvbiAy
MDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
NCwxMiArMjY0LDYgQEAgTm9kZVZlY3RvciBTdGVwOjpub2RlVGVzdE1hdGNoZXMoY29uc3QgTgog
ICAgIHJldHVybiBtYXRjaGVzOwogfQogCi12b2lkIFN0ZXA6Om9wdGltaXplKCkKLXsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVkaWNhdGVzLnNpemUoKTsgaSsrKQotICAgICAg
ICBtX3ByZWRpY2F0ZXNbaV0tPm9wdGltaXplKCk7Ci19Ci0KIE5vZGU6Ok5vZGVUeXBlIFN0ZXA6
OnByaW1hcnlOb2RlVHlwZShBeGlzIGF4aXMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChheGlzKSB7
CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFN0ZXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuaAkocmV2aXNpb24gMjAwMjEpCisrKyBXZWJDb3JlL3htbC9YUGF0aFN0ZXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgICAgIE5vZGVWZWN0b3IgZXZhbHVhdGUoTm9kZSogY29udGV4dCkgY29uc3Q7CiAK
LSAgICAgICAgICAgIHZvaWQgb3B0aW1pemUoKTsKLQogICAgICAgICBwcml2YXRlOgogICAgICAg
ICAgICAgTm9kZVZlY3RvciBub2Rlc0luQXhpcyhOb2RlKiBjb250ZXh0KSBjb25zdDsKICAgICAg
ICAgICAgIE5vZGVWZWN0b3Igbm9kZVRlc3RNYXRjaGVzKGNvbnN0IE5vZGVWZWN0b3ImIG5vZGVz
KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2UuY3BwCShyZXZp
c2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsNyBAQCBWYXJpYWJsZVJlZmVyZW5jZTo6VmFyaWFi
bGVSZWZlcmVuY2UoY29uCiB7CiB9CiAKLWJvb2wgVmFyaWFibGVSZWZlcmVuY2U6OmlzQ29uc3Rh
bnQoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmFsdWUgVmFyaWFibGVSZWZl
cmVuY2U6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgVmFyaWFibGVSZWZlcmVuY2U6OmV2YWx1
YXRlKCkgY29uc3QKIHsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgYmluZGluZ3MgPSBl
dmFsdWF0aW9uQ29udGV4dCgpLnZhcmlhYmxlQmluZGluZ3M7CiAgICAgaWYgKCFiaW5kaW5ncy5j
b250YWlucyhtX25hbWUpKQpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5j
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2UuaAko
cmV2aXNpb24gMjAwMjEpCisrKyBXZWJDb3JlL3htbC9YUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICAg
ICAgcHVibGljOgogICAgICAgICAgICAgVmFyaWFibGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7CiAgICAg
ICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25z
dDsKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAg
ICAgIFN0cmluZyBtX25hbWU7CiAgICAgICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13528</attachid>
            <date>2007-03-07 14:16:12 -0800</date>
            <delta_ts>2007-03-07 15:05:31 -0800</delta_ts>
            <desc>kill Expression::optimize()</desc>
            <filename>13004r2_patch.txt</filename>
            <type>text/plain</type>
            <size>29834</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMDI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDctMDMtMDggIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA0
CisgICAgICAgIFJlcGVhdGVkbHkgY2FsbGluZyBYUGF0aEV4cHJlc3Npb24uZXZhbHVhdGUoKSBj
YXVzZXMgY3Jhc2hlcyBvciBtZW1vcnkgbGVha3MKKworICAgICAgICAqIGZhc3QveHBhdGgvZXZh
bHVhdGUtdHdpY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3hwYXRoL2V2
YWx1YXRlLXR3aWNlLmh0bWw6IEFkZGVkLgorCiAyMDA3LTAzLTA3ICBSb2IgQnVpcyAgPGJ1aXNA
a2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9ldmFsdWF0ZS10d2ljZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2Mu
ZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxs
KS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVt
ZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxs
KS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVt
ZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1
ZSBpcyAnMScKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hp
bGQubmV4dFNpYmxpbmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1
ZSBpcyAnMicKK1BBU1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hp
bGQsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMScKK1BB
U1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxp
bmcsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSBpcyAnMicKK1BB
U1MgZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVz
dWx0Lk5VTUJFUl9UWVBFLCBudWxsKS5udW1iZXJWYWx1ZSBpcyAyCitQQVNTIGV4cHIuZXZhbHVh
dGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLCBYUGF0aFJlc3Vs
dC5OVU1CRVJfVFlQRSwgbnVsbCkubnVtYmVyVmFsdWUgaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdpY2UtZXhwZWN0ZWQudHh0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveHBhdGgvZXZhbHVhdGUtdHdp
Y2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL2V2YWx1YXRlLXR3
aWNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL2V2YWx1YXRl
LXR3aWNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Cisg
ICAgZG9jID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZygiPGRvYz48ZWxlbT4xPC9l
bGVtPjxlbGVtPjI8L2VsZW0+PC9kb2M+IiwgImFwcGxpY2F0aW9uL3htbCIpOworCisgICAgZXhw
ciA9IGRvYy5jcmVhdGVFeHByZXNzaW9uKCIxIiwgbnVsbCk7CisKKyAgICBzaG91bGRCZSgiZXhw
ci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQsIFhQYXRoUmVzdWx0LlNU
UklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICInMSciKTsKKyAgICBzaG91bGRCZSgiZXhw
ci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcsIFhQ
YXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSIsICInMSciKTsKKworICAg
IGV4cHIgPSBkb2MuY3JlYXRlRXhwcmVzc2lvbigiLiIsIG51bGwpOworCisgICAgc2hvdWxkQmUo
ImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLCBYUGF0aFJlc3Vs
dC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUiLCAiJzEnIik7CisgICAgc2hvdWxkQmUo
ImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5n
LCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUiLCAiJzInIik7CisK
KyAgICBleHByID0gZG9jLmNyZWF0ZUV4cHJlc3Npb24oInN0cmluZyguKSIsIG51bGwpOworCisg
ICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxk
LCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUiLCAiJzEnIik7Cisg
ICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxk
Lm5leHRTaWJsaW5nLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSwgbnVsbCkuc3RyaW5nVmFsdWUi
LCAiJzInIik7CisKKyAgICBleHByID0gZG9jLmNyZWF0ZUV4cHJlc3Npb24oIjEgKyAuIiwgbnVs
bCk7CisKKyAgICBzaG91bGRCZSgiZXhwci5ldmFsdWF0ZShkb2MuZG9jdW1lbnRFbGVtZW50LmZp
cnN0Q2hpbGQsIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFLCBudWxsKS5udW1iZXJWYWx1ZSIsICIy
Iik7CisgICAgc2hvdWxkQmUoImV4cHIuZXZhbHVhdGUoZG9jLmRvY3VtZW50RWxlbWVudC5maXJz
dENoaWxkLm5leHRTaWJsaW5nLCBYUGF0aFJlc3VsdC5OVU1CRVJfVFlQRSwgbnVsbCkubnVtYmVy
VmFsdWUiLCAiMyIpOworCisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvZmFzdC94cGF0aC9ldmFsdWF0ZS10d2ljZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1p
bWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDAyOCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDctMDMtMDcgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDA0CisgICAgICAgIFJlcGVhdGVkbHkgY2FsbGluZyBYUGF0aEV4cHJlc3Npb24u
ZXZhbHVhdGUoKSBjYXVzZXMgY3Jhc2hlcyBvciBtZW1vcnkgbGVha3MKKworICAgICAgICBSZW1v
dmVkIFhQYXRoOjpFeHByZXNzaW9uOjpvcHRpbWl6ZSgpIGFuZCByZWxhdGVkIG1ldGhvZHMsIHNp
bmNlIHRoZXkgd2VyZSBidWdneSBhbmQgYWxtb3N0IHVzZWxlc3MuCisgICAgICAgIE1lcmdlZCBk
b0V2YWx1YXRlKCkgaW50byBldmFsdWF0ZSgpLCBzaW5jZSB0aGlzIHdhcyBhbGwgZXZhbHVhdGUo
KSB3YXMgZG9pbmcgYWZ0ZXIgdGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC94cGF0aC9ldmFsdWF0ZS10d2ljZS5odG1sCisKKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhQYXRoOjpFeHByZXNzaW9uOjpFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
OjpFeHByZXNzaW9uOjp+RXhwcmVzc2lvbik6CisgICAgICAgICogeG1sL1hQYXRoRXhwcmVzc2lv
bk5vZGUuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFBhdGg6OkZ1bkxhc3Q6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
OjpGdW5Qb3NpdGlvbjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bklk
OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTG9jYWxOYW1lOjpldmFs
dWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTmFtZXNwYWNlVVJJOjpldmFsdWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTmFtZTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkNvdW50OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6RnVuU3RyaW5nOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
RnVuQ29uY2F0OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuU3RhcnRz
V2l0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkNvbnRhaW5zOjpl
dmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuU3Vic3RyaW5nQmVmb3JlOjpl
dmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuU3Vic3RyaW5nQWZ0ZXI6OmV2
YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5TdWJzdHJpbmc6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5TdHJpbmdMZW5ndGg6OmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5Ob3JtYWxpemVTcGFjZTo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1blRyYW5zbGF0ZTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkJvb2xlYW46OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpGdW5Ob3Q6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpG
dW5UcnVlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTGFuZzo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkZhbHNlOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTnVtYmVyOjpldmFsdWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6RnVuU3VtOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0
aDo6RnVuRmxvb3I6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5DZWls
aW5nOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuUm91bmQ6OmV2YWx1
YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQ
YXRoOjpGaWx0ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlv
blBhdGg6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpQYXRoOjpldmFsdWF0
ZSk6CisgICAgICAgICogeG1sL1hQYXRoUGF0aC5oOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRp
Y2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6TnVtYmVyOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6U3RyaW5nRXhwcmVzc2lvbjo6ZXZhbHVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5lZ2F0aXZlOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6TnVtZXJpY09wOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0
aDo6RXFUZXN0T3A6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2dpY2Fs
T3A6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpVbmlvbjo6ZXZhbHVhdGUp
OgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5oOgorICAgICAgICAqIHhtbC9YUGF0aFN0
ZXAuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhW
YXJpYWJsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VmFyaWFibGVS
ZWZlcmVuY2U6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5j
ZS5oOgorCiAyMDA3LTAzLTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5LgpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhF
eHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24u
Y3BwCShyZXZpc2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgUGFzc1JlZlB0cjxYUGF0aFJlc3VsdD4g
WFBhdGhFeHByZXNzaW9uOgogICAgIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkubm9k
ZSA9IGNvbnRleHROb2RlOwogICAgIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkuc2l6
ZSA9IDE7CiAgICAgRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKS5wb3NpdGlvbiA9IDE7
Ci0gICAgbV90b3BFeHByZXNzaW9uLT5vcHRpbWl6ZSgpOwogICAgIFJlZlB0cjxYUGF0aFJlc3Vs
dD4gcmVzdWx0ID0gbmV3IFhQYXRoUmVzdWx0KGV2ZW50VGFyZ2V0LCBtX3RvcEV4cHJlc3Npb24t
PmV2YWx1YXRlKCkpOwogCiAgICAgaWYgKHR5cGUgIT0gWFBhdGhSZXN1bHQ6OkFOWV9UWVBFKSB7
CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAkocmV2aXNpb24gMjAwMjEpCisr
KyBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMjEgKzQyLDEyIEBAIEV2YWx1YXRpb25Db250ZXh0ICZFeHByZXNzaW9uOjpldmFsdWF0aW8K
IH0KIAogRXhwcmVzc2lvbjo6RXhwcmVzc2lvbigpCi0gICAgOiBtX2NvbnN0YW50VmFsdWUoMCkK
IHsKIH0KIAogRXhwcmVzc2lvbjo6fkV4cHJlc3Npb24oKQogewogICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX3N1YkV4cHJlc3Npb25zKTsKLSAgICBkZWxldGUgbV9jb25zdGFudFZhbHVlOwotfQotCi1W
YWx1ZSBFeHByZXNzaW9uOjpldmFsdWF0ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY29uc3RhbnRW
YWx1ZSkKLSAgICAgICAgcmV0dXJuICptX2NvbnN0YW50VmFsdWU7Ci0gICAgcmV0dXJuIGRvRXZh
bHVhdGUoKTsKIH0KIAogdm9pZCBFeHByZXNzaW9uOjphZGRTdWJFeHByZXNzaW9uKEV4cHJlc3Np
b24qIGV4cHIpCkBAIC02NCwyNSArNTUsNiBAQCB2b2lkIEV4cHJlc3Npb246OmFkZFN1YkV4cHJl
c3Npb24oRXhwcmVzCiAgICAgbV9zdWJFeHByZXNzaW9ucy5hcHBlbmQoZXhwcik7CiB9CiAKLXZv
aWQgRXhwcmVzc2lvbjo6b3B0aW1pemUoKQotewotICAgIGJvb2wgYWxsU3ViRXhwcmVzc2lvbnND
b25zdGFudCA9IHRydWU7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3Vi
RXhwcmVzc2lvbnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKG1fc3ViRXhwcmVzc2lvbnNb
aV0tPmlzQ29uc3RhbnQoKSkKLSAgICAgICAgICAgIG1fc3ViRXhwcmVzc2lvbnNbaV0tPm9wdGlt
aXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFsbFN1YkV4cHJlc3Npb25zQ29uc3Rh
bnQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYWxsU3ViRXhwcmVzc2lvbnNDb25zdGFudCkg
ewotICAgICAgICBBU1NFUlQgKCFtX2NvbnN0YW50VmFsdWUpOwotICAgICAgICBtX2NvbnN0YW50
VmFsdWUgPSBuZXcgVmFsdWUoZG9FdmFsdWF0ZSgpKTsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVz
KG1fc3ViRXhwcmVzc2lvbnMpOwotICAgICAgICBtX3N1YkV4cHJlc3Npb25zLmNsZWFyKCk7Ci0g
ICAgfQotfQotCiB1bnNpZ25lZCBFeHByZXNzaW9uOjpzdWJFeHByQ291bnQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N1YkV4cHJlc3Npb25zLnNpemUoKTsKQEAgLTEwMCwxNCArNzIsNiBAQCBj
b25zdCBFeHByZXNzaW9uKiBFeHByZXNzaW9uOjpzdWJFeHByKHVuCiAgICAgcmV0dXJuIG1fc3Vi
RXhwcmVzc2lvbnNbaV07CiB9CiAKLWJvb2wgRXhwcmVzc2lvbjo6aXNDb25zdGFudCgpIGNvbnN0
Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3ViRXhwcmVzc2lvbnMuc2l6ZSgp
OyBpKyspCi0gICAgICAgIGlmICghbV9zdWJFeHByZXNzaW9uc1tpXS0+aXNDb25zdGFudCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCiB9CiB9CiAK
SW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmgJKHJldmlzaW9uIDIwMDIxKQorKysgV2Vi
Q29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSAr
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBFeHByZXNzaW9uKCk7CiAg
ICAgICAgICAgICB2aXJ0dWFsIH5FeHByZXNzaW9uKCk7CiAKLSAgICAgICAgICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVh
dGUoKSBjb25zdCA9IDA7CiAKICAgICAgICAgICAgIHZvaWQgYWRkU3ViRXhwcmVzc2lvbihFeHBy
ZXNzaW9uKik7Ci0gICAgICAgICAgICB2b2lkIG9wdGltaXplKCk7Ci0gICAgICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0OwogCiAgICAgICAgIHByb3RlY3RlZDoKICAgICAg
ICAgICAgIHVuc2lnbmVkIHN1YkV4cHJDb3VudCgpIGNvbnN0OwpAQCAtNzUsMTAgKzczLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgY29uc3QgRXhwcmVzc2lvbiogc3ViRXhw
cih1bnNpZ25lZCkgY29uc3Q7CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1
YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0ID0gMDsKLQogICAgICAgICAgICAgVmVjdG9yPEV4
cHJlc3Npb24qPiBtX3N1YkV4cHJlc3Npb25zOwotICAgICAgICAgICAgVmFsdWUqIG1fY29uc3Rh
bnRWYWx1ZTsKICAgICAgICAgfTsKIAogICAgIH0KSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoRnVu
Y3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwMDIxKQorKysgV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSwxMjEgKzcxLDExMSBAQCBzdHJ1Y3QgRnVuY3Rpb25SZWMgewogc3Rh
dGljIEhhc2hNYXA8U3RyaW5nLCBGdW5jdGlvblJlYz4qIGZ1bmN0aW9uTWFwOwogCiBjbGFzcyBG
dW5MYXN0IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1blBvc2l0aW9uIDogcHVi
bGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZh
bHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkNvdW50IDogcHVibGljIEZ1bmN0aW9uIHsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUg
ZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsK
IH07CiAKIGNsYXNzIEZ1bklkIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNDb25zdGFudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkxv
Y2FsTmFtZSA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5OYW1lc3BhY2VVUkkg
OiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1
ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuTmFtZSA6IHB1YmxpYyBGdW5jdGlv
biB7Ci0gICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZh
bHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29u
c3Q7CiB9OwogCiBjbGFzcyBGdW5TdHJpbmcgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1
YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUo
KSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkNvbmNhdCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAg
dmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFs
dWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuU3RhcnRzV2l0aCA6IHB1YmxpYyBGdW5jdGlv
biB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBW
YWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuQ29udGFpbnMgOiBwdWJsaWMg
RnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1blN1YnN0cmluZ0Jl
Zm9yZSA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3Mg
RnVuU3Vic3RyaW5nQWZ0ZXIgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUg
ZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsK
IH07CiAKIGNsYXNzIEZ1blN1YnN0cmluZyA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVh
bCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgp
IGNvbnN0OwogfTsKIAogY2xhc3MgRnVuU3RyaW5nTGVuZ3RoIDogcHVibGljIEZ1bmN0aW9uIHsK
LSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVl
IGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5Ob3JtYWxpemVTcGFjZSA6IHB1Ymxp
YyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuVHJhbnNsYXRl
IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFzcyBGdW5C
b29sZWFuIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiB9OwogCiBjbGFz
cyBGdW5Ob3QgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNs
YXNzIEZ1blRydWUgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0
YW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuRmFsc2UgOiBw
dWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBl
dmFsdWF0ZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgRnVuTGFuZyA6IHB1YmxpYyBGdW5jdGlvbiB7
Ci0gICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZhbHVl
IGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7
CiB9OwogCiBjbGFzcyBGdW5OdW1iZXIgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwg
VmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBj
b25zdDsKIH07CiAKIGNsYXNzIEZ1blN1bSA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVh
bCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgp
IGNvbnN0OwogfTsKIAogY2xhc3MgRnVuRmxvb3IgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZp
cnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVh
dGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1bkNlaWxpbmcgOiBwdWJsaWMgRnVuY3Rpb24gewot
ICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdDsKIH07CiAKIGNsYXNzIEZ1blJvdW5kIDogcHVibGljIEZ1bmN0aW9u
IHsKLSAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3Q7CiBwdWJsaWM6CiAgICAgc3RhdGljIGRvdWJsZSByb3VuZChk
b3VibGUpOwogfTsKQEAgLTI4NSwzMiArMjc1LDE3IEBAIFN0cmluZyBGdW5jdGlvbjo6bmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZTsKIH0KIAotVmFsdWUgRnVuTGFzdDo6ZG9FdmFsdWF0
ZSgpIGNvbnN0CitWYWx1ZSBGdW5MYXN0OjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkuc2l6ZTsKIH0KIAotYm9vbCBGdW5MYXN0
Ojppc0NvbnN0YW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVlIEZ1
blBvc2l0aW9uOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1blBvc2l0aW9uOjpldmFsdWF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCku
cG9zaXRpb247CiB9CiAKLWJvb2wgRnVuUG9zaXRpb246OmlzQ29uc3RhbnQoKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBGdW5JZDo6aXNDb25zdGFudCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1WYWx1ZSBGdW5JZDo6ZG9FdmFsdWF0ZSgpIGNvbnN0
CitWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiB0aGlzIGFs
Z29yaXRobSBkb2VzIG5vdCBwcm9kdWNlIGFuIG9yZGVyZWQgbm9kZS1zZXQsIGFzIGl0IHNob3Vs
ZC4KIApAQCAtMzU4LDEyICszMzMsNyBAQCBWYWx1ZSBGdW5JZDo6ZG9FdmFsdWF0ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBGdW5Mb2NhbE5hbWU6OmlzQ29uc3RhbnQo
KSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmFsdWUgRnVuTG9jYWxOYW1lOjpk
b0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1bkxvY2FsTmFtZTo6ZXZhbHVhdGUoKSBjb25zdAog
ewogICAgIE5vZGUqIG5vZGUgPSAwOwogICAgIGlmIChhcmdDb3VudCgpID4gMCkgewpAQCAtMzgw
LDEyICszNTAsNyBAQCBWYWx1ZSBGdW5Mb2NhbE5hbWU6OmRvRXZhbHVhdGUoKSBjb25zdAogICAg
IHJldHVybiBWYWx1ZShub2RlLT5sb2NhbE5hbWUoKSk7CiB9CiAKLWJvb2wgRnVuTmFtZXNwYWNl
VVJJOjppc0NvbnN0YW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVl
IEZ1bk5hbWVzcGFjZVVSSTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5OYW1lc3BhY2VV
Ukk6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBpZiAoYXJn
Q291bnQoKSA+IDApIHsKQEAgLTQwMiwxMiArMzY3LDcgQEAgVmFsdWUgRnVuTmFtZXNwYWNlVVJJ
Ojpkb0V2YWx1YXRlKCkgY29ucwogICAgIHJldHVybiBWYWx1ZShub2RlLT5uYW1lc3BhY2VVUkko
KSk7CiB9CiAKLWJvb2wgRnVuTmFtZTo6aXNDb25zdGFudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1WYWx1ZSBGdW5OYW1lOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1
bk5hbWU6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gMDsKICAgICBpZiAo
YXJnQ291bnQoKSA+IDApIHsKQEAgLTQyNSw3ICszODUsNyBAQCBWYWx1ZSBGdW5OYW1lOjpkb0V2
YWx1YXRlKCkgY29uc3QKICAgICByZXR1cm4gcHJlZml4LmlzRW1wdHkoKSA/IG5vZGUtPmxvY2Fs
TmFtZSgpLmRvbVN0cmluZygpIDogbm9kZS0+cHJlZml4KCkgKyAiOiIgKyBub2RlLT5sb2NhbE5h
bWUoKTsKIH0KIAotVmFsdWUgRnVuQ291bnQ6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVu
Q291bnQ6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBWYWx1ZSBhID0gYXJnKDApLT5ldmFsdWF0
ZSgpOwogICAgIApAQCAtNDM1LDE5ICszOTUsMTQgQEAgVmFsdWUgRnVuQ291bnQ6OmRvRXZhbHVh
dGUoKSBjb25zdAogICAgIHJldHVybiBhLnRvTm9kZVZlY3RvcigpLnNpemUoKTsKIH0KIAotYm9v
bCBGdW5Db3VudDo6aXNDb25zdGFudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1WYWx1ZSBGdW5TdHJpbmc6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuU3RyaW5nOjpl
dmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmdDb3VudCgpKQogICAgICAgICByZXR1cm4g
VmFsdWUoRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKS5ub2RlLmdldCgpKS50b1N0cmlu
ZygpOwogICAgIHJldHVybiBhcmcoMCktPmV2YWx1YXRlKCkudG9TdHJpbmcoKTsKIH0KIAotVmFs
dWUgRnVuQ29uY2F0Ojpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1bkNvbmNhdDo6ZXZhbHVh
dGUoKSBjb25zdAogewogICAgIFN0cmluZyBzdHIgPSAiIjsKIApAQCAtNDU3LDcgKzQxMiw3IEBA
IFZhbHVlIEZ1bkNvbmNhdDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cjsKIH0K
IAotVmFsdWUgRnVuU3RhcnRzV2l0aDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5TdGFy
dHNXaXRoOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHMxID0gYXJnKDApLT5ldmFs
dWF0ZSgpLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHMyID0gYXJnKDEpLT5ldmFsdWF0ZSgpLnRv
U3RyaW5nKCk7CkBAIC00NjgsNyArNDIzLDcgQEAgVmFsdWUgRnVuU3RhcnRzV2l0aDo6ZG9FdmFs
dWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHMxLnN0YXJ0c1dpdGgoczIpOwogfQogCi1WYWx1ZSBG
dW5Db250YWluczo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Db250YWluczo6ZXZhbHVh
dGUoKSBjb25zdAogewogICAgIFN0cmluZyBzMSA9IGFyZygwKS0+ZXZhbHVhdGUoKS50b1N0cmlu
ZygpOwogICAgIFN0cmluZyBzMiA9IGFyZygxKS0+ZXZhbHVhdGUoKS50b1N0cmluZygpOwpAQCAt
NDc5LDcgKzQzNCw3IEBAIFZhbHVlIEZ1bkNvbnRhaW5zOjpkb0V2YWx1YXRlKCkgY29uc3QKICAg
ICByZXR1cm4gczEuY29udGFpbnMoczIpICE9IDA7CiB9CiAKLVZhbHVlIEZ1blN1YnN0cmluZ0Jl
Zm9yZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5TdWJzdHJpbmdCZWZvcmU6OmV2YWx1
YXRlKCkgY29uc3QKIHsKICAgICBTdHJpbmcgczEgPSBhcmcoMCktPmV2YWx1YXRlKCkudG9TdHJp
bmcoKTsKICAgICBTdHJpbmcgczIgPSBhcmcoMSktPmV2YWx1YXRlKCkudG9TdHJpbmcoKTsKQEAg
LTQ5NSw3ICs0NTAsNyBAQCBWYWx1ZSBGdW5TdWJzdHJpbmdCZWZvcmU6OmRvRXZhbHVhdGUoKSBj
CiAgICAgcmV0dXJuIHMxLmxlZnQoaSk7CiB9CiAKLVZhbHVlIEZ1blN1YnN0cmluZ0FmdGVyOjpk
b0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1blN1YnN0cmluZ0FmdGVyOjpldmFsdWF0ZSgpIGNv
bnN0CiB7CiAgICAgU3RyaW5nIHMxID0gYXJnKDApLT5ldmFsdWF0ZSgpLnRvU3RyaW5nKCk7CiAg
ICAgU3RyaW5nIHMyID0gYXJnKDEpLT5ldmFsdWF0ZSgpLnRvU3RyaW5nKCk7CkBAIC01MTAsNyAr
NDY1LDcgQEAgVmFsdWUgRnVuU3Vic3RyaW5nQWZ0ZXI6OmRvRXZhbHVhdGUoKSBjbwogICAgIHJl
dHVybiBzMS5zdWJzdHJpbmcoczIubGVuZ3RoKCkpOwogfQogCi1WYWx1ZSBGdW5TdWJzdHJpbmc6
OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuU3Vic3RyaW5nOjpldmFsdWF0ZSgpIGNvbnN0
CiB7CiAgICAgU3RyaW5nIHMgPSBhcmcoMCktPmV2YWx1YXRlKCkudG9TdHJpbmcoKTsKICAgICBs
b25nIHBvcyA9IHN0YXRpY19jYXN0PGxvbmc+KEZ1blJvdW5kOjpyb3VuZChhcmcoMSktPmV2YWx1
YXRlKCkudG9OdW1iZXIoKSkpOwpAQCAtNTM2LDE0ICs0OTEsMTQgQEAgVmFsdWUgRnVuU3Vic3Ry
aW5nOjpkb0V2YWx1YXRlKCkgY29uc3QKICAgICByZXR1cm4gcy5zdWJzdHJpbmcocG9zIC0gMSwg
bGVuKTsKIH0KIAotVmFsdWUgRnVuU3RyaW5nTGVuZ3RoOjpkb0V2YWx1YXRlKCkgY29uc3QKK1Zh
bHVlIEZ1blN0cmluZ0xlbmd0aDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIGlmICghYXJnQ291
bnQoKSkKICAgICAgICAgcmV0dXJuIFZhbHVlKEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0
KCkubm9kZS5nZXQoKSkudG9TdHJpbmcoKS5sZW5ndGgoKTsKICAgICByZXR1cm4gYXJnKDApLT5l
dmFsdWF0ZSgpLnRvU3RyaW5nKCkubGVuZ3RoKCk7CiB9CiAKLVZhbHVlIEZ1bk5vcm1hbGl6ZVNw
YWNlOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1bk5vcm1hbGl6ZVNwYWNlOjpldmFsdWF0
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmdDb3VudCgpKSB7CiAgICAgICAgIFN0cmluZyBzID0g
VmFsdWUoRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKS5ub2RlLmdldCgpKS50b1N0cmlu
ZygpOwpAQCAtNTU0LDcgKzUwOSw3IEBAIFZhbHVlIEZ1bk5vcm1hbGl6ZVNwYWNlOjpkb0V2YWx1
YXRlKCkgY28KICAgICByZXR1cm4gVmFsdWUocy5zaW1wbGlmeVdoaXRlU3BhY2UoKSk7CiB9CiAK
LVZhbHVlIEZ1blRyYW5zbGF0ZTo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5UcmFuc2xh
dGU6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICBTdHJpbmcgczEgPSBhcmcoMCktPmV2YWx1YXRl
KCkudG9TdHJpbmcoKTsKICAgICBTdHJpbmcgczIgPSBhcmcoMSktPmV2YWx1YXRlKCkudG9TdHJp
bmcoKTsKQEAgLTU3NywyNyArNTMyLDIyIEBAIFZhbHVlIEZ1blRyYW5zbGF0ZTo6ZG9FdmFsdWF0
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0KIAotVmFsdWUgRnVuQm9vbGVhbjo6
ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5Cb29sZWFuOjpldmFsdWF0ZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGFyZygwKS0+ZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKIH0KIAotVmFsdWUg
RnVuTm90Ojpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1bk5vdDo6ZXZhbHVhdGUoKSBjb25z
dAogewogICAgIHJldHVybiAhYXJnKDApLT5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogfQogCi1W
YWx1ZSBGdW5UcnVlOjpkb0V2YWx1YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBGdW5UcnVlOjppc0NvbnN0YW50KCkgY29uc3QKK1ZhbHVlIEZ1blRydWU6OmV2YWx1
YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmFsdWUgRnVuTGFuZzo6ZG9F
dmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5MYW5nOjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAg
U3RyaW5nIGxhbmcgPSBhcmcoMCktPmV2YWx1YXRlKCkudG9TdHJpbmcoKTsKIApAQCAtNjMwLDI5
ICs1ODAsMTkgQEAgVmFsdWUgRnVuTGFuZzo6ZG9FdmFsdWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIEZ1bkxhbmc6OmlzQ29uc3RhbnQoKSBjb25zdAotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotVmFsdWUgRnVuRmFsc2U6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFs
dWUgRnVuRmFsc2U6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRnVuRmFsc2U6OmlzQ29uc3RhbnQoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwot
fQotCi1WYWx1ZSBGdW5OdW1iZXI6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuTnVtYmVy
OjpldmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmdDb3VudCgpKQogICAgICAgICByZXR1
cm4gVmFsdWUoRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKS5ub2RlLmdldCgpKS50b051
bWJlcigpOwogICAgIHJldHVybiBhcmcoMCktPmV2YWx1YXRlKCkudG9OdW1iZXIoKTsKIH0KIAot
VmFsdWUgRnVuU3VtOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEZ1blN1bTo6ZXZhbHVhdGUo
KSBjb25zdAogewogICAgIFZhbHVlIGEgPSBhcmcoMCktPmV2YWx1YXRlKCk7CiAgICAgaWYgKCFh
LmlzTm9kZVZlY3RvcigpKQpAQCAtNjY3LDEyICs2MDcsMTIgQEAgVmFsdWUgRnVuU3VtOjpkb0V2
YWx1YXRlKCkgY29uc3QKICAgICByZXR1cm4gc3VtOwogfQogCi1WYWx1ZSBGdW5GbG9vcjo6ZG9F
dmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBGdW5GbG9vcjo6ZXZhbHVhdGUoKSBjb25zdAogewogICAg
IHJldHVybiBmbG9vcihhcmcoMCktPmV2YWx1YXRlKCkudG9OdW1iZXIoKSk7CiB9CiAKLVZhbHVl
IEZ1bkNlaWxpbmc6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgRnVuQ2VpbGluZzo6ZXZhbHVh
dGUoKSBjb25zdAogewogICAgIHJldHVybiBjZWlsKGFyZygwKS0+ZXZhbHVhdGUoKS50b051bWJl
cigpKTsKIH0KQEAgLTY4OCw3ICs2MjgsNyBAQCBkb3VibGUgRnVuUm91bmQ6OnJvdW5kKGRvdWJs
ZSB2YWwpCiAgICAgcmV0dXJuIHZhbDsKIH0KIAotVmFsdWUgRnVuUm91bmQ6OmRvRXZhbHVhdGUo
KSBjb25zdAorVmFsdWUgRnVuUm91bmQ6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
cm91bmQoYXJnKDApLT5ldmFsdWF0ZSgpLnRvTnVtYmVyKCkpOwogfQpJbmRleDogV2ViQ29yZS94
bWwvWFBhdGhQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFBhdGguY3Bw
CShyZXZpc2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgRmlsdGVyOjp+RmlsdGVyKCkKICAgICBkZWxldGVBbGxW
YWx1ZXMobV9wcmVkaWNhdGVzKTsKIH0KIAotVmFsdWUgRmlsdGVyOjpkb0V2YWx1YXRlKCkgY29u
c3QKK1ZhbHVlIEZpbHRlcjo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIFZhbHVlIHYgPSBtX2V4
cHItPmV2YWx1YXRlKCk7CiAgICAgCkBAIC04NiwxMyArODYsNyBAQCBMb2NhdGlvblBhdGg6On5M
b2NhdGlvblBhdGgoKQogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3N0ZXBzKTsKIH0KIAotdm9pZCBM
b2NhdGlvblBhdGg6Om9wdGltaXplKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9zdGVwcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9zdGVwc1tpXS0+b3B0aW1pemUoKTsKLX0K
LQotVmFsdWUgTG9jYXRpb25QYXRoOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIExvY2F0aW9u
UGF0aDo6ZXZhbHVhdGUoKSBjb25zdAogewogICAgIC8qIEZvciBhYnNvbHV0ZSBsb2NhdGlvbiBw
YXRocywgdGhlIGNvbnRleHQgbm9kZSBpcyBpZ25vcmVkIC0gdGhlCiAgICAgICogZG9jdW1lbnQn
cyByb290IG5vZGUgaXMgdXNlZCBpbnN0ZWFkLgpAQCAtMTQ0LDcgKzEzOCw3IEBAIFBhdGg6On5Q
YXRoKCkKICAgICBkZWxldGUgbV9wYXRoOwogfQogCi1WYWx1ZSBQYXRoOjpkb0V2YWx1YXRlKCkg
Y29uc3QKK1ZhbHVlIFBhdGg6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXRo
LT5ldmFsdWF0ZShtX2ZpbHRlci0+ZXZhbHVhdGUoKS50b05vZGVWZWN0b3IoKSk7CiB9CkluZGV4
OiBXZWJDb3JlL3htbC9YUGF0aFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0
aFBhdGguaAkocmV2aXNpb24gMjAwMjEpCisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGguaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBGaWx0ZXIoRXhwcmVzc2lvbiosIGNvbnN0IFZlY3RvcjxQcmVkaWNhdGUqPiYgPSBWZWN0
b3I8UHJlZGljYXRlKj4oKSk7CiAgICAgICAgICAgICB2aXJ0dWFsIH5GaWx0ZXIoKTsKIAotICAg
ICAgICBwcml2YXRlOgotICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29u
c3Q7CisgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAKKyAgICAg
ICAgcHJpdmF0ZToKICAgICAgICAgICAgIEV4cHJlc3Npb24qIG1fZXhwcjsKICAgICAgICAgICAg
IFZlY3RvcjxQcmVkaWNhdGUqPiBtX3ByZWRpY2F0ZXM7CiAgICAgICAgIH07CkBAIC01OCwxNCAr
NTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgTG9jYXRpb25QYXRoKCk7
CiAgICAgICAgICAgICB2aXJ0dWFsIH5Mb2NhdGlvblBhdGgoKTsKIAotICAgICAgICAgICAgdXNp
bmcgRXhwcmVzc2lvbjo6ZXZhbHVhdGU7CisgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1
YXRlKCkgY29uc3Q7CiAgICAgICAgICAgICBWYWx1ZSBldmFsdWF0ZShjb25zdCBOb2RlVmVjdG9y
JiBzdGFydE5vZGVzKSBjb25zdDsKIAotICAgICAgICAgICAgdm9pZCBvcHRpbWl6ZSgpOwotCiAg
ICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBj
b25zdDsKLQogICAgICAgICAgICAgVmVjdG9yPFN0ZXAqPiBtX3N0ZXBzOwogICAgICAgICAgICAg
Ym9vbCBtX2Fic29sdXRlOwogCkBAIC03OCw5ICs3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIFBhdGgoRmlsdGVyKiwgTG9jYXRpb25QYXRoKik7CiAgICAgICAgICAgICB2
aXJ0dWFsIH5QYXRoKCk7CiAKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1YWwg
VmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFs
dWF0ZSgpIGNvbnN0OwogCisgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBGaWx0ZXIqIG1f
ZmlsdGVyOwogICAgICAgICAgICAgTG9jYXRpb25QYXRoKiBtX3BhdGg7CiAgICAgICAgIH07Cklu
ZGV4OiBXZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCShyZXZpc2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDcgQEAgTnVt
YmVyOjpOdW1iZXIoZG91YmxlIHZhbHVlKQogewogfQogCi1ib29sIE51bWJlcjo6aXNDb25zdGFu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVZhbHVlIE51bWJlcjo6ZG9FdmFs
dWF0ZSgpIGNvbnN0CitWYWx1ZSBOdW1iZXI6OmV2YWx1YXRlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV92YWx1ZTsKIH0KQEAgLTYyLDE3ICs1NywxMiBAQCBTdHJpbmdFeHByZXNzaW9uOjpTdHJp
bmdFeHByZXNzaW9uKGNvbnN0CiB7CiB9CiAKLWJvb2wgU3RyaW5nRXhwcmVzc2lvbjo6aXNDb25z
dGFudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVZhbHVlIFN0cmluZ0V4cHJl
c3Npb246OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgU3RyaW5nRXhwcmVzc2lvbjo6ZXZhbHVh
dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3ZhbHVlOwogfQogCi1WYWx1ZSBOZWdhdGl2ZTo6
ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBOZWdhdGl2ZTo6ZXZhbHVhdGUoKSBjb25zdAogewog
ICAgIFZhbHVlIHAoc3ViRXhwcigwKS0+ZXZhbHVhdGUoKSk7CiAgICAgcmV0dXJuIC1wLnRvTnVt
YmVyKCk7CkBAIC04NSw3ICs3NSw3IEBAIE51bWVyaWNPcDo6TnVtZXJpY09wKE9wY29kZSBvcGNv
ZGUsIEV4cHIKICAgICBhZGRTdWJFeHByZXNzaW9uKHJocyk7CiB9CiAKLVZhbHVlIE51bWVyaWNP
cDo6ZG9FdmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBOdW1lcmljT3A6OmV2YWx1YXRlKCkgY29uc3QK
IHsKICAgICBWYWx1ZSBsaHMoc3ViRXhwcigwKS0+ZXZhbHVhdGUoKSk7CiAgICAgVmFsdWUgcmhz
KHN1YkV4cHIoMSktPmV2YWx1YXRlKCkpOwpAQCAtMjA0LDcgKzE5NCw3IEBAIGJvb2wgRXFUZXN0
T3A6OmNvbXBhcmUoY29uc3QgVmFsdWUmIGxocywKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZh
bHVlIEVxVGVzdE9wOjpkb0V2YWx1YXRlKCkgY29uc3QKK1ZhbHVlIEVxVGVzdE9wOjpldmFsdWF0
ZSgpIGNvbnN0CiB7CiAgICAgVmFsdWUgbGhzKHN1YkV4cHIoMCktPmV2YWx1YXRlKCkpOwogICAg
IFZhbHVlIHJocyhzdWJFeHByKDEpLT5ldmFsdWF0ZSgpKTsKQEAgLTIyNywxMyArMjE3LDcgQEAg
Ym9vbCBMb2dpY2FsT3A6OnNob3J0Q2lyY3VpdE9uKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsg
IC8vdHJ1ZSBvciBiYXIKIH0KIAotYm9vbCBMb2dpY2FsT3A6OmlzQ29uc3RhbnQoKSBjb25zdAot
ewotICAgIHJldHVybiBzdWJFeHByKDApLT5pc0NvbnN0YW50KCkgJiYKLSAgICAgICAgICAgc3Vi
RXhwcigwKS0+ZXZhbHVhdGUoKS50b0Jvb2xlYW4oKSA9PSBzaG9ydENpcmN1aXRPbigpOwotfQot
Ci1WYWx1ZSBMb2dpY2FsT3A6OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgTG9naWNhbE9wOjpl
dmFsdWF0ZSgpIGNvbnN0CiB7CiAgICAgVmFsdWUgbGhzKHN1YkV4cHIoMCktPmV2YWx1YXRlKCkp
OwogCkBAIC0yNDYsNyArMjMwLDcgQEAgVmFsdWUgTG9naWNhbE9wOjpkb0V2YWx1YXRlKCkgY29u
c3QKICAgICByZXR1cm4gc3ViRXhwcigxKS0+ZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKIH0KIAot
VmFsdWUgVW5pb246OmRvRXZhbHVhdGUoKSBjb25zdAorVmFsdWUgVW5pb246OmV2YWx1YXRlKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBhbGdvcml0aG0gZG9lc24ndCByZXR1cm4gbm9k
ZXMgaW4gZG9jdW1lbnQgb3JkZXIsIGFzIGl0IHNob3VsZC4KICAgICBWYWx1ZSBsaHMgPSBzdWJF
eHByKDApLT5ldmFsdWF0ZSgpOwpAQCAtMjk0LDExICsyNzgsNiBAQCBib29sIFByZWRpY2F0ZTo6
ZXZhbHVhdGUoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKCk7CiB9CiAKLXZv
aWQgUHJlZGljYXRlOjpvcHRpbWl6ZSgpCi17Ci0gICAgbV9leHByLT5vcHRpbWl6ZSgpOwotfQot
CiB9CiB9CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuaAkocmV2aXNpb24gMjAwMjEpCisrKyBXZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBOdW1iZXIgOiBwdWJsaWMgRXhw
cmVzc2lvbiB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIE51bWJlcihkb3VibGUpOwot
ICAgICAgICAgICAgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Q7CiAgICAgICAgIHByaXZhdGU6Ci0g
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAg
IHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAgICAgIGRvdWJsZSBtX3Zh
bHVlOwogICAgICAgICB9OwogCiAgICAgICAgIGNsYXNzIFN0cmluZ0V4cHJlc3Npb24gOiBwdWJs
aWMgRXhwcmVzc2lvbiB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFN0cmluZ0V4cHJl
c3Npb24oY29uc3QgU3RyaW5nJik7Ci0gICAgICAgICAgICBib29sIGlzQ29uc3RhbnQoKSBjb25z
dDsKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0
ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Owog
ICAgICAgICAgICAgU3RyaW5nIG1fdmFsdWU7CiAgICAgICAgIH07CiAKICAgICAgICAgY2xhc3Mg
TmVnYXRpdmUgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAg
ICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBO
dW1lcmljT3AgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CkBAIC02NSw3ICs2Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBOdW1lcmljT3AoT3Bjb2Rl
LCBFeHByZXNzaW9uKiBsaHMsIEV4cHJlc3Npb24qIHJocyk7CiAgICAgICAgIHByaXZhdGU6Ci0g
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAg
IHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAgICAgIE9wY29kZSBtX29w
Y29kZTsKICAgICAgICAgfTsKIApAQCAtNzMsOCArNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIGVudW0gT3Bjb2RlIHsgT1BfRVEsIE9QX05F
LCBPUF9HVCwgT1BfTFQsIE9QX0dFLCBPUF9MRSB9OwogICAgICAgICAgICAgRXFUZXN0T3AoT3Bj
b2RlLCBFeHByZXNzaW9uKiBsaHMsIEV4cHJlc3Npb24qIHJocyk7CisgICAgICAgICAgICB2aXJ0
dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAg
ICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAgICAgIGJvb2wgY29t
cGFyZShjb25zdCBWYWx1ZSYsIGNvbnN0IFZhbHVlJikgY29uc3Q7CiAgICAgICAgICAgICBPcGNv
ZGUgbV9vcGNvZGU7CiAgICAgICAgIH07CkBAIC04MywxNiArODEsMTUgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBlbnVtIE9wY29kZSB7IE9QX0Fu
ZCwgT1BfT3IgfTsKICAgICAgICAgICAgIExvZ2ljYWxPcChPcGNvZGUsIEV4cHJlc3Npb24qIGxo
cywgRXhwcmVzc2lvbiogcmhzKTsKLSAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50
KCkgY29uc3Q7CiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBib29sIHNob3J0Q2lyY3Vp
dE9uKCkgY29uc3Q7Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGRvRXZhbHVhdGUoKSBjb25z
dDsKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKICAgICAgICAg
ICAgIE9wY29kZSBtX29wY29kZTsKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBVbmlvbiA6
IHB1YmxpYyBFeHByZXNzaW9uIHsKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1
YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBl
dmFsdWF0ZSgpIGNvbnN0OwogICAgICAgICB9OwogCiAgICAgICAgIGNsYXNzIFByZWRpY2F0ZSA6
IE5vbmNvcHlhYmxlIHsKQEAgLTEwMCw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIFByZWRpY2F0ZShFeHByZXNzaW9uKik7CiAgICAgICAgICAgICB+UHJlZGljYXRl
KCk7CiAgICAgICAgICAgICBib29sIGV2YWx1YXRlKCkgY29uc3Q7Ci0gICAgICAgICAgICB2b2lk
IG9wdGltaXplKCk7CiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBFeHByZXNzaW9uKiBt
X2V4cHI7CiAgICAgICAgIH07CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAJKHJldmlzaW9uIDIwMDIxKQorKysg
V2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDEyICsyNjQs
NiBAQCBOb2RlVmVjdG9yIFN0ZXA6Om5vZGVUZXN0TWF0Y2hlcyhjb25zdCBOCiAgICAgcmV0dXJu
IG1hdGNoZXM7CiB9CiAKLXZvaWQgU3RlcDo6b3B0aW1pemUoKQotewotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3ByZWRpY2F0ZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fcHJlZGlj
YXRlc1tpXS0+b3B0aW1pemUoKTsKLX0KLQogTm9kZTo6Tm9kZVR5cGUgU3RlcDo6cHJpbWFyeU5v
ZGVUeXBlKEF4aXMgYXhpcykgY29uc3QKIHsKICAgICBzd2l0Y2ggKGF4aXMpIHsKSW5kZXg6IFdl
YkNvcmUveG1sL1hQYXRoU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoU3Rl
cC5oCShyZXZpc2lvbiAyMDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAg
ICAgTm9kZVZlY3RvciBldmFsdWF0ZShOb2RlKiBjb250ZXh0KSBjb25zdDsKIAotICAgICAgICAg
ICAgdm9pZCBvcHRpbWl6ZSgpOwotCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBOb2Rl
VmVjdG9yIG5vZGVzSW5BeGlzKE5vZGUqIGNvbnRleHQpIGNvbnN0OwogICAgICAgICAgICAgTm9k
ZVZlY3RvciBub2RlVGVzdE1hdGNoZXMoY29uc3QgTm9kZVZlY3RvciYgbm9kZXMpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS94bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS94bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIwMDIx
KQorKysgV2ViQ29yZS94bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDEyICs0MCw3IEBAIFZhcmlhYmxlUmVmZXJlbmNlOjpWYXJpYWJsZVJlZmVyZW5j
ZShjb24KIHsKIH0KIAotYm9vbCBWYXJpYWJsZVJlZmVyZW5jZTo6aXNDb25zdGFudCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1WYWx1ZSBWYXJpYWJsZVJlZmVyZW5jZTo6ZG9F
dmFsdWF0ZSgpIGNvbnN0CitWYWx1ZSBWYXJpYWJsZVJlZmVyZW5jZTo6ZXZhbHVhdGUoKSBjb25z
dAogewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBiaW5kaW5ncyA9IGV2YWx1YXRpb25D
b250ZXh0KCkudmFyaWFibGVCaW5kaW5nczsKICAgICBpZiAoIWJpbmRpbmdzLmNvbnRhaW5zKG1f
bmFtZSkpCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAy
MDAyMSkKKysrIFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOSArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNz
IFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGljIEV4cHJlc3Npb24gewogICAgICAgICBwdWJsaWM6
CiAgICAgICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAg
ICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdDsKICAgICAgICAgcHJpdmF0
ZToKLSAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZG9FdmFsdWF0ZSgpIGNvbnN0OworICAgICAg
ICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogICAgICAgICAgICAgU3RyaW5n
IG1fbmFtZTsKICAgICAgICAgfTsKIAo=
</data>
<flag name="review"
          id="5354"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>