<?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>133751</bug_id>
          
          <creation_ts>2014-06-11 11:01:30 -0700</creation_ts>
          <short_desc>[ftlopt] DFG get_by_id should inline chain accesses with a slightly polymorphic base</short_desc>
          <delta_ts>2014-06-12 10:43:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133229</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1014811</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 11:01:30 -0700</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014997</commentid>
    <comment_count>1</comment_count>
      <attachid>232924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 17:44:10 -0700</bug_when>
    <thetext>Created attachment 232924
proposed patch

Not yet ready for review because I&apos;m still testing performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015009</commentid>
    <comment_count>2</comment_count>
      <attachid>232924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-11 19:52:58 -0700</bug_when>
    <thetext>Comment on attachment 232924
proposed patch

The performance is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015146</commentid>
    <comment_count>3</comment_count>
      <attachid>232924</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-06-12 10:15:33 -0700</bug_when>
    <thetext>Comment on attachment 232924
proposed patch

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

&gt; Source/JavaScriptCore/bytecode/GetByIdVariant.cpp:56
&gt; +    if (!!m_chain != !!other.m_chain)

!m_chain != !other.m_chain is a bit clearer and logically equivalent.

&gt; Source/JavaScriptCore/bytecode/PutByIdStatus.cpp:312
&gt; -        if (!chain-&gt;isNormalized())
&gt; +        if (structure-&gt;isProxy() || !chain-&gt;isNormalized())

Does this belong in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015149</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-12 10:21:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 232924 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232924&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/GetByIdVariant.cpp:56
&gt; &gt; +    if (!!m_chain != !!other.m_chain)
&gt; 
&gt; !m_chain != !other.m_chain is a bit clearer and logically equivalent.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/PutByIdStatus.cpp:312
&gt; &gt; -        if (!chain-&gt;isNormalized())
&gt; &gt; +        if (structure-&gt;isProxy() || !chain-&gt;isNormalized())
&gt; 
&gt; Does this belong in this patch?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015153</commentid>
    <comment_count>5</comment_count>
      <attachid>232924</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-12 10:36:03 -0700</bug_when>
    <thetext>Comment on attachment 232924
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015155</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-12 10:43:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/169902</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232924</attachid>
            <date>2014-06-11 17:44:10 -0700</date>
            <delta_ts>2014-06-12 10:36:03 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23272</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE0LTA2LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gREZHIGdldF9ieV9pZCBzaG91bGQgaW5saW5lIGNoYWluIGFjY2Vzc2VzIHdpdGgg
YSBzbGlnaHRseSBwb2x5bW9ycGhpYyBiYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRC
eUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50OjphdHRlbXB0VG9N
ZXJnZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFByb3RvdHlwZUNoZWNrcyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKiBydW50
aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpJbnRlbmRlZFN0
cnVjdHVyZUNoYWluOjpJbnRlbmRlZFN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKEpTQzo6SW50
ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6aXNTdGlsbFZhbGlkKToKKyAgICAgICAgKEpTQzo6SW50ZW5k
ZWRTdHJ1Y3R1cmVDaGFpbjo6aXNOb3JtYWxpemVkKToKKyAgICAgICAgKEpTQzo6SW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbjo6dGVybWluYWxQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRlbmRl
ZFN0cnVjdHVyZUNoYWluOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6SW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGVuZGVkU3RydWN0
dXJlQ2hhaW46OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpJbnRlbmRlZFN0cnVjdHVy
ZUNoYWluOjpjaGFpbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRlbmRlZFN0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OkludGVuZGVkU3RydWN0dXJlQ2hhaW46OnByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OkludGVuZGVkU3RydWN0dXJlQ2hhaW46Om9wZXJhdG9yIT0p
OgorICAgICAgICAoSlNDOjpJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpoZWFkKTogRGVsZXRlZC4K
KwogMjAxNC0wNi0xMSAgTWF0dGhldyBNaXJtYW4gIDxtbWlybWFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmVkIE5hdGl2ZSBDYWxscyBhbmQgQ29uc3RydWN0IGFuZCBhc3NvY2lhdGVkIGNo
ZWNrcyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE2OTgxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDIw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBib29sIEdldEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQo
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQpCiB7CisgICAgLy8gQXR0ZW1wdCB0byBtZXJn
ZSB0aGlzIHZhcmlhbnQgd2l0aCBhbiBhbHJlYWR5IGV4aXN0aW5nIHZhcmlhbnQuCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKG1fdmFyaWFudHNbaV0uYXR0ZW1wdFRvTWVyZ2UodmFyaWFudCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIG5vIG92
ZXJsYXAuIFdlIHNob3VsZCBoYXZlIHBydW5lZCBvdXQgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAv
LyBvdmVybGFwIGJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQgYW4gaW5saW5lIGNhY2hlIGdvdCBpbnRv
IGEgd2VpcmQgc3RhdGUuIFdlIGFyZQorICAgIC8vIGRlZmVuc2l2ZSBhbmQgYmFpbCBpZiB3ZSBk
ZXRlY3QgY3JhenkuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fdmFyaWFudHNbaV0uc3RydWN0dXJlU2V0KCkub3Zl
cmxhcHModmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQorICAgIAogICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTg3LDEwICsxOTcsMTIgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yUwogICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLCBzdHJ1
Y3R1cmUsIGxpc3QtPmF0KGxpc3RJbmRleCkuY2hhaW4oKSwKICAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXQobGlzdEluZGV4KS5jaGFpbkNvdW50KCkpKTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBpZiAoIWNoYWluLT5pc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaGFpbi0+aXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyB3b24ndCBldmVyIHJ1biBhZ2FpbiBzbyBza2lwIGl0LgorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaWYgKGNoYWluLT5oZWFkKCktPnRha2VzU2xvd1BhdGhJbkRGR0Zvcklt
cHVyZVByb3BlcnR5KCkpCisgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dGFrZXNTbG93
UGF0aEluREZHRm9ySW1wdXJlUHJvcGVydHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgc2l6ZV90IGNoYWluU2l6ZSA9IGNoYWluLT5zaXplKCk7CkBAIC0yMTcs
MzUgKzIyOSw2IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG15T2Zmc2V0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRlLCB0cnVlKTsK
LQotICAgICAgICAgICAgaWYgKCFjaGFpbiAmJiAhbGlzdC0+YXQobGlzdEluZGV4KS5kb2VzQ2Fs
bHMoKSkgewotICAgICAgICAgICAgICAgIC8vIEZvciBub24tY2hhaW4sIG5vbi1nZXR0ZXIgYWNj
ZXNzZXMsIHdlIHRyeSB0byBkbyBzb21lIGNvYWxlc2NpbmcuCi0gICAgICAgICAgICAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgdmFyaWFudElu
ZGV4ID0gMDsgdmFyaWFudEluZGV4IDwgcmVzdWx0Lm1fdmFyaWFudHMuc2l6ZSgpOyArK3Zhcmlh
bnRJbmRleCkgewotICAgICAgICAgICAgICAgICAgICBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA9
IHJlc3VsdC5tX3ZhcmlhbnRzW3ZhcmlhbnRJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2YXJpYW50Lm1fY2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQubV9vZmZzZXQg
IT0gbXlPZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuY2FsbExpbmtTdGF0dXMo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2YXJpYW50Lm1fc3RydWN0dXJlU2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZhcmlhbnQubV9zcGVjaWZpY1ZhbHVlICE9IEpTVmFsdWUoc3BlY2lmaWNWYWx1ZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFs
dWUoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFudC5tX3N0
cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGZvdW5k
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlu
a1N0YXR1czsKICAgICAgICAgICAgIHN3aXRjaCAobGlzdC0+YXQobGlzdEluZGV4KS50eXBlKCkp
IHsKQEAgLTI3Miw2ICsyNTUsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTCiAgICAgICAgICAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50KAogICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBteU9mZnNldCwgc3BlY2lmaWNWYWx1ZSwgY2hh
aW4sCiAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKGNhbGxMaW5rU3RhdHVzKSk7CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSwgdHJ1ZSk7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMTY5ODEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsMjUgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcgogICAg
IHJldHVybiAqdGhpczsKIH0KIAorYm9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1fY2hhaW4gIT0gISFv
dGhlci5tX2NoYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2hhaW4gJiYg
Km1fY2hhaW4gIT0gKm90aGVyLm1fY2hhaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9jYWxsTGlua1N0YXR1cyB8fCBvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fc3BlY2lmaWNWYWx1ZSAhPSBvdGhlci5t
X3NwZWNpZmljVmFsdWUpCisgICAgICAgIG1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKTsKKwor
ICAgIG1fc3RydWN0dXJlU2V0Lm1lcmdlKG90aGVyLm1fc3RydWN0dXJlU2V0KTsKKyAgICAKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lv
biAxNjk4MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBDYWxsTGlu
a1N0YXR1cyogY2FsbExpbmtTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rU3RhdHVz
LmdldCgpOyB9CiAgICAgCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFy
aWFudCYgb3RoZXIpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNjk4MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw3ICszMDks
NyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIC8v
IGRpY3Rpb25hcmllcyBpZiB3ZSBoYXZlIGV2aWRlbmNlIHRvIHN1Z2dlc3QgdGhhdCB0aG9zZSBv
YmplY3RzIHdlcmUgbmV2ZXIgdXNlZCBhcwogICAgICAgICAvLyBwcm90b3R5cGVzIGluIGEgY2Fj
aGVhYmxlIHByb3RvdHlwZSBhY2Nlc3MgLSBpLmUuIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSB0aGF0
IHNvbWUgb2YKICAgICAgICAgLy8gdGhlIG90aGVyIGNoZWNrcyBiZWxvdyB3aWxsIGZhaWwuCi0g
ICAgICAgIGlmICghY2hhaW4tPmlzTm9ybWFsaXplZCgpKQorICAgICAgICBpZiAoc3RydWN0dXJl
LT5pc1Byb3h5KCkgfHwgIWNoYWluLT5pc05vcm1hbGl6ZWQoKSkKICAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxNjk4MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wg
aXNEaXJlY3QpOwotICAgIE5vZGUqIGVtaXRQcm90b3R5cGVDaGVja3MoU3RydWN0dXJlKiwgSW50
ZW5kZWRTdHJ1Y3R1cmVDaGFpbiopOworICAgIE5vZGUqIGVtaXRQcm90b3R5cGVDaGVja3MoSW50
ZW5kZWRTdHJ1Y3R1cmVDaGFpbiopOwogCiAgICAgTm9kZSogZ2V0U2NvcGUoYm9vbCBza2lwVG9w
LCB1bnNpZ25lZCBza2lwQ291bnQpOwogICAgIApAQCAtMTY5NCwxOCArMTY5NCwxOCBAQCBOb2Rl
KiBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlPZmZzZXQoCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmVtaXRQcm90b3R5cGVDaGVja3MoCi0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEludGVuZGVkU3RydWN0dXJlQ2hhaW4qIGNoYWluKQorTm9kZSog
Qnl0ZUNvZGVQYXJzZXI6OmVtaXRQcm90b3R5cGVDaGVja3MoSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
biogY2hhaW4pCiB7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0gICAgTm9kZSogYmFzZSA9IDA7
CiAgICAgbV9ncmFwaC5jaGFpbnMoKS5hZGRMYXppbHkoY2hhaW4pOwotICAgIFN0cnVjdHVyZSog
Y3VycmVudFN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBKU09iamVjdCogY3VycmVudE9iamVj
dCA9IDA7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjaGFpbi0+cHJvdG90eXBlKCk7CisgICAg
aWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgTm9k
ZSogYmFzZSA9IG51bGxwdHI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYWluLT5z
aXplKCk7ICsraSkgewotICAgICAgICBjdXJyZW50T2JqZWN0ID0gYXNPYmplY3QoY3VycmVudFN0
cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
KSk7Ci0gICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSBjaGFpbi0+YXQoaSk7CisgICAgICAgIEpT
T2JqZWN0KiBjdXJyZW50T2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAgU3Ry
dWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gY2hhaW4tPmF0KGkpOwogICAgICAgICBiYXNlID0g
Y2VsbENvbnN0YW50V2l0aFN0cnVjdHVyZUNoZWNrKGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1
Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUgPSBjdXJyZW50U3RydWN0dXJlLT5wcm90b3R5cGVG
b3JMb29rdXAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2spOwogICAgIH0KICAgICByZXR1
cm4gYmFzZTsKIH0KQEAgLTE3MzcsMTEgKzE3MzcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgICAgICAvLyAgICBvcHRpbWFsLCBpZiB0aGVyZSBpcyBzb21lIHJh
cmVseSBleGVjdXRlZCBjYXNlIGluIHRoZSBjaGFpbiB0aGF0IHJlcXVpcmVzIGEgbG90CiAgICAg
ICAgIC8vICAgIG9mIGNoZWNrcyBhbmQgdGhvc2UgY2hlY2tzIGFyZSBub3Qgd2F0Y2hwb2ludGFi
bGUuCiAgICAgICAgIGZvciAodW5zaWduZWQgdmFyaWFudEluZGV4ID0gZ2V0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpOyB2YXJpYW50SW5kZXgtLTspIHsKLSAgICAgICAgICAgIGlmIChnZXRCeUlk
U3RhdHVzW3ZhcmlhbnRJbmRleF0uY2hhaW4oKSkgewotICAgICAgICAgICAgICAgIGVtaXRQcm90
b3R5cGVDaGVja3MoCi0gICAgICAgICAgICAgICAgICAgIGdldEJ5SWRTdGF0dXNbdmFyaWFudElu
ZGV4XS5zdHJ1Y3R1cmVTZXQoKS5vbmx5U3RydWN0dXJlKCksCi0gICAgICAgICAgICAgICAgICAg
IGdldEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jaGFpbigpKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uY2hhaW4oKSkKKyAgICAg
ICAgICAgICAgICBlbWl0UHJvdG90eXBlQ2hlY2tzKGdldEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4
XS5jaGFpbigpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gMikgRW1pdCBhIE11
bHRpR2V0QnlPZmZzZXQKQEAgLTE3NjMsMTAgKzE3NjAsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgoQ2hlY2tT
dHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVy
ZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGlmICh2YXJpYW50LmNoYWluKCkpIHsKLSAgICAg
ICAgYmFzZSA9IGVtaXRQcm90b3R5cGVDaGVja3MoCi0gICAgICAgICAgICB2YXJpYW50LnN0cnVj
dHVyZVNldCgpLm9ubHlTdHJ1Y3R1cmUoKSwgdmFyaWFudC5jaGFpbigpKTsKLSAgICB9CisgICAg
aWYgKHZhcmlhbnQuY2hhaW4oKSkKKyAgICAgICAgYmFzZSA9IGVtaXRQcm90b3R5cGVDaGVja3Mo
dmFyaWFudC5jaGFpbigpKTsKICAgICAKICAgICAvLyBVbmxlc3Mgd2Ugd2FudCBidWdzIGxpa2Ug
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NzgzLCB3ZSBuZWVkIHRv
CiAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIGJhc2Ugb2YgdGhlIG9yaWdpbmFsIGdldF9ieV9pZCBp
cyBrZXB0IGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aApAQCAtMTg2NSw5ICsxODYwLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRl
eF0uc3RydWN0dXJlQ2hhaW4oKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgZW1pdFByb3RvdHlwZUNoZWNrcygKLSAgICAgICAgICAgICAgICAgICAgcHV0
QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLm9sZFN0cnVjdHVyZSgpLAotICAgICAgICAgICAgICAg
ICAgICBwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uc3RydWN0dXJlQ2hhaW4oKSk7CisgICAg
ICAgICAgICAgICAgZW1pdFByb3RvdHlwZUNoZWNrcyhwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRl
eF0uc3RydWN0dXJlQ2hhaW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0xOTAzLDcgKzE4OTYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2Up
OwogICAgIGlmICghaXNEaXJlY3QpCi0gICAgICAgIGVtaXRQcm90b3R5cGVDaGVja3ModmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKSwgdmFyaWFudC5zdHJ1Y3R1cmVDaGFpbigpKTsKKyAgICAgICAgZW1p
dFByb3RvdHlwZUNoZWNrcyh2YXJpYW50LnN0cnVjdHVyZUNoYWluKCkpOwogCiAgICAgQVNTRVJU
KHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbklu
dmFsaWRhdGVkKCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDE2OTgx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNyArMzMsMzcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLUludGVuZGVkU3RydWN0dXJlQ2hhaW46OkludGVuZGVkU3RydWN0dXJlQ2hhaW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBoZWFkKQorSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbjo6SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKLSAgICAsIG1faGVhZChoZWFkKQorICAgICwgbV9wcm90b3R5cGUocHJvdG90eXBlKQog
ewotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gaGVhZC0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2Jh
bE9iamVjdCk7CisgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzTnVsbCgpIHx8IG1fcHJvdG90eXBl
LmlzT2JqZWN0KCkpOwogICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0
cnVjdHVyZSgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlU3Ry
dWN0dXJlKCkpCiAgICAgICAgIG1fdmVjdG9yLmFwcGVuZChjdXJyZW50KTsKIH0KIAorSW50ZW5k
ZWRTdHJ1Y3R1cmVDaGFpbjo6SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgOiBtX2dsb2JhbE9iamVjdChnbG9i
YWxPYmplY3QpCisgICAgLCBtX3Byb3RvdHlwZShoZWFkLT5wcm90b3R5cGVGb3JMb29rdXAobV9n
bG9iYWxPYmplY3QpKQoreworICAgIGlmIChtX3Byb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gYXNPYmplY3QobV9wcm90b3R5
cGUpLT5zdHJ1Y3R1cmUoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3Rv
dHlwZVN0cnVjdHVyZSgpKQorICAgICAgICBtX3ZlY3Rvci5hcHBlbmQoY3VycmVudCk7Cit9CisK
IEludGVuZGVkU3RydWN0dXJlQ2hhaW46OkludGVuZGVkU3RydWN0dXJlQ2hhaW4oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogaGVhZCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUpCiAgICAgOiBtX2dsb2JhbE9iamVjdChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQotICAg
ICwgbV9oZWFkKGhlYWQpCisgICAgLCBtX3Byb3RvdHlwZShoZWFkLT5wcm90b3R5cGVGb3JMb29r
dXAobV9nbG9iYWxPYmplY3QpKQogewogICAgIG1fdmVjdG9yLmFwcGVuZChwcm90b3R5cGVTdHJ1
Y3R1cmUpOwogfQogCiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpJbnRlbmRlZFN0cnVjdHVyZUNo
YWluKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGhlYWQsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbikKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
Ci0gICAgLCBtX2hlYWQoaGVhZCkKKyAgICAsIG1fcHJvdG90eXBlKGhlYWQtPnByb3RvdHlwZUZv
ckxvb2t1cChtX2dsb2JhbE9iamVjdCkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgY2hh
aW4tPmhlYWQoKVtpXTsgKytpKQogICAgICAgICBtX3ZlY3Rvci5hcHBlbmQoY2hhaW4tPmhlYWQo
KVtpXS5nZXQoKSk7CkBAIC02MSw3ICs3MSw3IEBAIEludGVuZGVkU3RydWN0dXJlQ2hhaW46Oklu
dGVuZGVkU3RydWN0dXIKIAogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6SW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBoZWFkLCBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4sIHVuc2lnbmVkIGNvdW50KQogICAgIDogbV9nbG9iYWxPYmplY3QoY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSkKLSAgICAsIG1faGVhZChoZWFkKQorICAgICwgbV9wcm90b3R5
cGUoaGVhZC0+cHJvdG90eXBlRm9yTG9va3VwKG1fZ2xvYmFsT2JqZWN0KSkKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgbV92ZWN0b3IuYXBwZW5k
KGNoYWluLT5oZWFkKClbaV0uZ2V0KCkpOwpAQCAtNzMsNyArODMsNyBAQCBJbnRlbmRlZFN0cnVj
dHVyZUNoYWluOjp+SW50ZW5kZWRTdHJ1Y3R1CiAKIGJvb2wgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bjo6aXNTdGlsbFZhbGlkKCkgY29uc3QKIHsKLSAgICBKU1ZhbHVlIGN1cnJlbnRQcm90b3R5cGUg
PSBtX2hlYWQtPnByb3RvdHlwZUZvckxvb2t1cChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1
ZSBjdXJyZW50UHJvdG90eXBlID0gbV9wcm90b3R5cGU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChhc09iamVjdChjdXJy
ZW50UHJvdG90eXBlKS0+c3RydWN0dXJlKCkgIT0gbV92ZWN0b3JbaV0pCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05MywxNCArMTAzLDYgQEAgYm9vbCBJbnRlbmRlZFN0cnVjdHVyZUNo
YWluOjptYXRjaGVzKFN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJ1Y3R1cmVDaGFpbiog
SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6Y2hhaW4oVk0mIHZtKSBjb25zdAotewotICAgIEFTU0VS
VChpc1N0aWxsVmFsaWQoKSk7Ci0gICAgU3RydWN0dXJlQ2hhaW4qIHJlc3VsdCA9IFN0cnVjdHVy
ZUNoYWluOjpjcmVhdGUodm0sIG1faGVhZCk7Ci0gICAgQVNTRVJUKG1hdGNoZXMocmVzdWx0KSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogYm9vbCBJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpt
YXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZlY3Rvci5zaXplKCk7ICsraSkgewpAQCAtMTE4LDggKzEy
MCw2IEBAIGJvb2wgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6bWF5SW50ZXJjZXAKIAogYm9vbCBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluOjppc05vcm1hbGl6ZWQoKQogewotICAgIGlmIChtX2hlYWQt
PmlzUHJveHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3ZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG1fdmVjdG9yW2ldOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1Byb3h5KCkpCkBA
IC0xMzQsMTQgKzEzNCwyMSBAQCBKU09iamVjdCogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6dGVy
bWluCiB7CiAgICAgQVNTRVJUKCFtX3ZlY3Rvci5pc0VtcHR5KCkpOwogICAgIGlmIChtX3ZlY3Rv
ci5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIGFzT2JqZWN0KG1faGVhZC0+cHJvdG90eXBl
Rm9yTG9va3VwKG1fZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhc09iamVjdChtX3By
b3RvdHlwZSk7CiAgICAgcmV0dXJuIGFzT2JqZWN0KG1fdmVjdG9yW21fdmVjdG9yLnNpemUoKSAt
IDJdLT5zdG9yZWRQcm90b3R5cGUoKSk7CiB9CiAKK2Jvb2wgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bjo6b3BlcmF0b3I9PShjb25zdCBJbnRlbmRlZFN0cnVjdHVyZUNoYWluJiBvdGhlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9nbG9iYWxPYmplY3QgPT0gb3RoZXIubV9nbG9iYWxPYmplY3QKKyAg
ICAgICAgJiYgbV9wcm90b3R5cGUgPT0gb3RoZXIubV9wcm90b3R5cGUKKyAgICAgICAgJiYgbV92
ZWN0b3IgPT0gb3RoZXIubV92ZWN0b3I7Cit9CisKIHZvaWQgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtX2hlYWQpOworICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWRWYWx1ZSgmbV9wcm90b3R5cGUpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fdmVjdG9y
LnNpemUoKTsgaS0tOykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIo
Jm1fdmVjdG9yW2ldKTsKIH0KQEAgLTE1NSw3ICsxNjIsNyBAQCB2b2lkIEludGVuZGVkU3RydWN0
dXJlQ2hhaW46OmR1bXBJbkNvbnRlCiB7CiAgICAgb3V0LnByaW50KAogICAgICAgICAiKGdsb2Jh
bCA9ICIsIFJhd1BvaW50ZXIobV9nbG9iYWxPYmplY3QpLCAiLCBoZWFkID0gIiwKLSAgICAgICAg
cG9pbnRlckR1bXBJbkNvbnRleHQobV9oZWFkLCBjb250ZXh0KSwgIiwgdmVjdG9yID0gWyIpOwor
ICAgICAgICBpbkNvbnRleHQobV9wcm90b3R5cGUsIGNvbnRleHQpLCAiLCB2ZWN0b3IgPSBbIik7
CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVt
cEluQ29udGV4dChtX3ZlY3RvcltpXSwgY29udGV4dCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uaAkocmV2
aXNpb24gMTY5ODEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBAIHN0cnVjdCBE
dW1wQ29udGV4dDsKIAogY2xhc3MgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBSZWZD
b3VudGVkPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IHsKIHB1YmxpYzoKLSAgICBJbnRlbmRlZFN0
cnVjdHVyZUNoYWluKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogaGVh
ZCk7CisgICAgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqKTsKICAgICBJbnRlbmRlZFN0cnVj
dHVyZUNoYWluKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGhlYWQsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlKTsKICAgICBJbnRlbmRlZFN0cnVjdHVyZUNoYWluKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGhlYWQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbik7
CiAgICAgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlKiBoZWFkLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHVuc2lnbmVkIGNvdW50KTsKQEAgLTQ3
LDExICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1N0aWxsVmFsaWQoKSBjb25z
dDsKICAgICBib29sIG1hdGNoZXMoU3RydWN0dXJlQ2hhaW4qKSBjb25zdDsKLSAgICBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4oVk0mKSBjb25zdDsKICAgICBib29sIG1heUludGVyY2VwdFN0b3JlVG8o
Vk0mLCBTdHJpbmdJbXBsKiB1aWQpOwogICAgIGJvb2wgaXNOb3JtYWxpemVkKCk7CiAgICAgCi0g
ICAgU3RydWN0dXJlKiBoZWFkKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkOyB9CisgICAgSlNWYWx1
ZSBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZTsgfQogICAgIAogICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgU3RydWN0
dXJlKiBhdChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsgfQpAQCAtNjEs
MTMgKzYxLDE5IEBAIHB1YmxpYzoKICAgICAKICAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdCB7
IHJldHVybiBtX3ZlY3Rvci5sYXN0KCk7IH0KICAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJbnRlbmRlZFN0cnVjdHVyZUNoYWluJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICAKIHByaXZhdGU6CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0Owot
ICAgIFN0cnVjdHVyZSogbV9oZWFkOworICAgIEpTVmFsdWUgbV9wcm90b3R5cGU7CiAgICAgVmVj
dG9yPFN0cnVjdHVyZSo+IG1fdmVjdG9yOwogfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5ODU5
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTQtMDYtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBbZnRsb3B0XSBERkcgZ2V0X2J5X2lkIHNob3VsZCBpbmxpbmUgY2hhaW4gYWNjZXNzZXMgd2l0
aCBhIHNsaWdodGx5IHBvbHltb3JwaGljIGJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3Mt
c2ltcGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcG9seS1j
aGFpbi1hY2Nlc3Mtc2ltcGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Bv
bHktY2hhaW4tYWNjZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLmpzOiBBZGRlZC4KKwogMjAx
NC0wNi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmdGxv
cHRdIEFJIHNob3VsZCBiZSBhYmxlIHRyYWNrIHN0cnVjdHVyZSBzZXRzIGxhcmdlciB0aGFuIDEK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nl
c3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9w
b2x5LWNoYWluLWFjY2Vzcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorSlNSZWdyZXNzL3BvbHktY2hhaW4tYWNjZXNzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3BvbHktY2hhaW4t
YWNjZXNzLXNpbXBsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKK0pTUmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1zaW1wbGVyCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3Mtc2lt
cGxlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBs
ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBv
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9wb2x5LWNoYWluLWFjY2Vzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9wb2x5LWNoYWluLWFj
Y2Vzcy1zaW1wbGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9wb2x5LWNoYWluLWFjY2Vzcy1zaW1w
bGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKyhmdW5jdGlvbigpIHsKKyAg
ICBmdW5jdGlvbiBGb28oKSB7IH0KKyAgICBGb28ucHJvdG90eXBlLmYgPSA0MjsKKyAgICBmdW5j
dGlvbiBCYXIoKSB7IH0KKyAgICBCYXIucHJvdG90eXBlID0gbmV3IEZvbygpOworCisgICAgZnVu
Y3Rpb24gZm9vKG8sIHApIHsKKyAgICAgICAgdmFyIG4gPSAxMDAwMDAwOworICAgICAgICB2YXIg
cmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSBvLmY7CisgICAgICAgICAgICB2YXIgdG1wID0gbzsKKyAgICAgICAg
ICAgIG8gPSBwOworICAgICAgICAgICAgcCA9IHRtcDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKHJlc3VsdCAhPSBuICogNDIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIG8gPSBuZXcgQmFyKCk7Cisg
ICAgdmFyIHAgPSBuZXcgQmFyKCk7CisgICAgcC5nID0gNDM7CisgICAgCisgICAgZm9vKG8sIHAp
OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3BvbHkt
Y2hhaW4tYWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIEZvbygp
IHsgfQorICAgIEZvby5wcm90b3R5cGUuZiA9IDQyOworICAgIGZ1bmN0aW9uIEJhcigpIHsgfQor
ICAgIEJhci5wcm90b3R5cGUgPSBuZXcgRm9vKCk7CisgICAgCisgICAgdmFyIG8gPSBuZXcgQmFy
KCk7CisgICAgdmFyIHAgPSBuZXcgQmFyKCk7CisgICAgcC5nID0gNDM7CisgICAgCisgICAgdmFy
IG4gPSAxMDAwMDAwOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbjsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBvLmY7CisgICAgICAgIHZhciB0bXAgPSBv
OworICAgICAgICBvID0gcDsKKyAgICAgICAgcCA9IHRtcDsKKyAgICB9CisgICAgCisgICAgaWYg
KHJlc3VsdCAhPSBuICogNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30pKCk7Cg==
</data>
<flag name="review"
          id="257429"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>