<?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>157746</bug_id>
          
          <creation_ts>2016-05-16 12:20:10 -0700</creation_ts>
          <short_desc>FixupPhase should be more eager to demote bit math to untyped</short_desc>
          <delta_ts>2016-05-16 12:40:27 -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>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193462</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 12:20:10 -0700</bug_when>
    <thetext>It shouldn&apos;t take a past exit to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193465</commentid>
    <comment_count>1</comment_count>
      <attachid>279034</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 12:28:30 -0700</bug_when>
    <thetext>Created attachment 279034
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193469</commentid>
    <comment_count>2</comment_count>
      <attachid>279034</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-05-16 12:36:57 -0700</bug_when>
    <thetext>Comment on attachment 279034
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        This just makes the logic for how we fixup bit math match the way we do it in other places.
&gt; +        This doesn&apos;t affect performance on any major benchmark but it&apos;s a big win on new
&gt; +        microbenchmarks added in this change.

Would you mind adding some details for how much gain on the microbenchmarks or aternatively, post the numbers to bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193470</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 12:38:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 279034 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279034&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:10
&gt; &gt; +        This just makes the logic for how we fixup bit math match the way we do it in other places.
&gt; &gt; +        This doesn&apos;t affect performance on any major benchmark but it&apos;s a big win on new
&gt; &gt; +        microbenchmarks added in this change.
&gt; 
&gt; Would you mind adding some details for how much gain on the microbenchmarks
&gt; or aternatively, post the numbers to bugzilla?

Added:

        object-and                                     11.1610+-0.7602     ^      4.8105+-0.1690        ^ definitely 2.3201x faster
        object-or                                      11.0845+-0.2487     ^      4.7146+-0.0374        ^ definitely 2.3511x faster
        object-xor                                     10.2946+-0.9946     ^      4.7278+-0.0814        ^ definitely 2.1775x faster
        object-lshift                                  10.4896+-1.0867     ^      4.7699+-0.0721        ^ definitely 2.1991x faster
        object-rshift                                  11.1239+-0.5010     ^      4.7194+-0.0445        ^ definitely 2.3570x faster
        object-urshift                                 10.9745+-0.1315     ^      4.7848+-0.0479        ^ definitely 2.2936x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193471</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 12:40:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/200958</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279034</attachid>
            <date>2016-05-16 12:28:30 -0700</date>
            <delta_ts>2016-05-16 12:36:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16270</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE2LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4dXBQaGFzZSBzaG91bGQgYmUgbW9yZSBlYWdlciB0byBkZW1vdGUgYml0IG1hdGggdG8gdW50
eXBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3
NzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBUaGlzIGp1c3QgbWFrZXMgdGhlIGxvZ2ljIGZvciBob3cgd2UgZml4dXAgYml0IG1hdGgg
bWF0Y2ggdGhlIHdheSB3ZSBkbyBpdCBpbiBvdGhlciBwbGFjZXMuCisgICAgICAgIFRoaXMgZG9l
c24ndCBhZmZlY3QgcGVyZm9ybWFuY2Ugb24gYW55IG1ham9yIGJlbmNobWFyayBidXQgaXQncyBh
IGJpZyB3aW4gb24gbmV3CisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBhZGRlZCBpbiB0aGlzIGNo
YW5nZS4KKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorCiAyMDE2LTA1LTE1ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ0V4cCAveSBmbGFnIGluY29ycmVj
dCBoYW5kbGluZyBvZiBtaXhlZC1sZW5ndGggYWx0ZXJuYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjAwOTM3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1LDggKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQml0UlNoaWZ0Ogog
ICAgICAgICBjYXNlIEJpdExTaGlmdDoKICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OiB7Ci0gICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcyhub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkKLSAgICAgICAgICAgICAgICAm
JiBtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpIHsK
KyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQml0T3BzKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMDUtMTYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBGaXh1cFBoYXNlIHNob3VsZCBiZSBt
b3JlIGVhZ2VyIHRvIGRlbW90ZSBiaXQgbWF0aCB0byB1bnR5cGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvb2JqZWN0LWFuZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvb2JqZWN0LWFuZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1pbnQtYW5kLWFycmF5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9vYmplY3QtaW50LWFuZC1hcnJh
eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1sc2hpZnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1sc2hpZnQuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9vYmplY3Qtb3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL29iamVjdC1vci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL29iamVjdC1yc2hpZnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL29iamVjdC1yc2hpZnQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9vYmplY3QtdXJzaGlmdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvb2JqZWN0LXVyc2hpZnQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9v
YmplY3QteG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9vYmpl
Y3QteG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29i
amVjdC1hbmQuanM6IEFkZGVkLgorICAgICAgICAoby52YWx1ZU9mKToKKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtaW50LWFuZC1hcnJheS5qczogQWRkZWQuCisgICAg
ICAgIChpLm8udmFsdWVPZik6CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2Jq
ZWN0LWxzaGlmdC5qczogQWRkZWQuCisgICAgICAgIChvLnZhbHVlT2YpOgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1vci5qczogQWRkZWQuCisgICAgICAgIChvLnZh
bHVlT2YpOgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1yc2hpZnQu
anM6IEFkZGVkLgorICAgICAgICAoby52YWx1ZU9mKToKKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtdXJzaGlmdC5qczogQWRkZWQuCisgICAgICAgIChvLnZhbHVlT2Yp
OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC14b3IuanM6IEFkZGVk
LgorICAgICAgICAoby52YWx1ZU9mKToKKwogMjAxNi0wNS0xNiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdFeHAgL3kgZmxhZyBpbmNvcnJlY3QgaGFu
ZGxpbmcgb2YgbWl4ZWQtbGVuZ3RoIGFsdGVybmF0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL29iamVjdC1hbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvb2JqZWN0LWFuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1hbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9vYmplY3QtYW5kCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL29iamVjdC1hbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL29iamVjdC1hbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvb2JqZWN0LWFuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL29iamVjdC1hbmQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9vYmplY3QtaW50LWFuZC1hcnJheS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtaW50LWFuZC1hcnJheS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1pbnQtYW5kLWFycmF5
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
b2JqZWN0LWludC1hbmQtYXJyYXkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LWlu
dC1hbmQtYXJyYXkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29i
amVjdC1pbnQtYW5kLWFycmF5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL29iamVjdC1pbnQtYW5kLWFycmF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
b2JqZWN0LWludC1hbmQtYXJyYXkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtbHNoaWZ0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1sc2hpZnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtbHNoaWZ0
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
b2JqZWN0LWxzaGlmdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBl
eGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtbHNoaWZ0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtbHNoaWZ0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1sc2hpZnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmplY3QtbHNoaWZ0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LW9y
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVj
dC1vci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L29iamVjdC1vci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL29iamVjdC1vcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qtb3Iu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1vci5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3Qtb3IuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmplY3Qtb3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtcnNoaWZ0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC1yc2hp
ZnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9v
YmplY3QtcnNoaWZ0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3Mvb2JqZWN0LXJzaGlmdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmpl
Y3QtcnNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmpl
Y3QtcnNoaWZ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL29i
amVjdC1yc2hpZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9vYmplY3QtcnNoaWZ0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvb2JqZWN0LXVyc2hpZnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvb2JqZWN0LXVyc2hpZnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtdXJzaGlmdC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL29iamVjdC11cnNoaWZ0CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL29iamVjdC11cnNoaWZ0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtdXJzaGlmdC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QtdXJzaGlmdC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL29iamVjdC11cnNoaWZ0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LXhvci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QteG9yLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LXhvci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL29i
amVjdC14b3IKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LXhvci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvb2JqZWN0LXhvci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9vYmplY3QteG9yLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvb2JqZWN0LXhvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtYW5kLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVj
dC1hbmQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9vYmplY3QtYW5kLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKyhmdW5j
dGlvbigpIHsKKyAgICB2YXIgbSA9IDEwMDA7CisgICAgdmFyIG4gPSAxMDAwOworICAgIHZhciBv
ID0ge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gNDI7IH19OworICAgIHZhciByZXN1bHQg
PSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbTsgKytpKSB7CisgICAgICAgIHJlc3VsdCAr
PSBvICYgMjsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opCisgICAgICAgICAg
ICByZXN1bHQgKj0gMS4xOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikKKyAg
ICAgICAgICAgIHJlc3VsdCAvPSAyOworICAgIH0KKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IDQu
NjEwMTk3MDY1MDM3MDM5ZS0yNjApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL29iamVjdC1pbnQtYW5kLWFycmF5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1pbnQtYW5kLWFycmF5LmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWludC1h
bmQtYXJyYXkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorKGZ1bmN0aW9uKCkg
eworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBtID0gMTAwOworICAgIHZhciBuID0gMTAw
MDAwOworICAgIHZhciBhcnJheSA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyAr
K2kpCisgICAgICAgIGFycmF5LnB1c2goMTIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbTsg
KytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IDA7CisgICAgICAgIHZhciBvID0ge3ZhbHVlT2Y6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gNDI7IH19OworICAgICAgICB2YWx1ZSArPSBvOworICAgICAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opCisg
ICAgICAgICAgICByZXN1bHQgKz0gYXJyYXlbdmFsdWVdOworICAgIH0KKyAgICBpZiAocmVzdWx0
ICE9IG4gKiAxMikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVj
dC1sc2hpZnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvb2JqZWN0LWxzaGlmdC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1sc2hpZnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNyBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBtID0gMTAwMDsKKyAgICB2YXIgbiA9
IDEwMDA7CisgICAgdmFyIG8gPSB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9fTsK
KyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkgewor
ICAgICAgICByZXN1bHQgKz0gMSA8PCBvOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47
ICsraikKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxLjE7CisgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgbjsgKytqKQorICAgICAgICAgICAgcmVzdWx0IC89IDI7CisgICAgfQorICAgIAorICAg
IGlmIChyZXN1bHQgIT0gNC42MTAxOTcwNjUwMzcwMzllLTI2MCkKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LW9yLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1vci5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC1vci5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIG0gPSAx
MDAwOworICAgIHZhciBuID0gMTAwMDsKKyAgICB2YXIgbyA9IHt2YWx1ZU9mOiBmdW5jdGlvbigp
IHsgcmV0dXJuIDQyOyB9fTsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG07ICsraSkgeworICAgICAgICByZXN1bHQgKz0gbyB8IDE7CisgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbjsgKytqKQorICAgICAgICAgICAgcmVzdWx0ICo9IDEuMTsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opCisgICAgICAgICAgICByZXN1bHQgLz0gMjsK
KyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSA5LjkxMTkyMzY4OTgyOTYzNWUtMjU5KQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOworCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtcnNoaWZ0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVj
dC1yc2hpZnQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9vYmplY3QtcnNoaWZ0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICB2YXIgbSA9IDEwMDA7CisgICAgdmFyIG4gPSAxMDAwOworICAg
IHZhciBvID0ge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfX07CisgICAgdmFyIHJl
c3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyArK2kpIHsKKyAgICAgICAgcmVz
dWx0ICs9IDIgPj4gbzsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opCisgICAg
ICAgICAgICByZXN1bHQgKj0gMS4xOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG47ICsr
aikKKyAgICAgICAgICAgIHJlc3VsdCAvPSAyOworICAgIH0KKyAgICAKKyAgICBpZiAocmVzdWx0
ICE9IDIuMzA1MDk4NTMyNTE4NTE5NWUtMjYwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9vYmplY3QtdXJzaGlmdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9vYmplY3QtdXJzaGlmdC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL29iamVjdC11cnNoaWZ0Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIg
bSA9IDEwMDA7CisgICAgdmFyIG4gPSAxMDAwOworICAgIHZhciBvID0ge3ZhbHVlT2Y6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gMTsgfX07CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IDIgPj4+IG87CisgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKQorICAgICAgICAgICAgcmVzdWx0ICo9IDEuMTsK
KyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opCisgICAgICAgICAgICByZXN1bHQg
Lz0gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSAyLjMwNTA5ODUzMjUxODUxOTVl
LTI2MCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSko
KTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvb2JqZWN0LXhv
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9v
YmplY3QteG9yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvb2JqZWN0LXhvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgdmFyIG0gPSAxMDAwOworICAgIHZhciBuID0gMTAwMDsKKyAgICB2
YXIgbyA9IHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0dXJuIDQyOyB9fTsKKyAgICB2YXIgcmVz
dWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG07ICsraSkgeworICAgICAgICByZXN1
bHQgKz0gbyBeIDI7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKQorICAgICAg
ICAgICAgcmVzdWx0ICo9IDEuMTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2op
CisgICAgICAgICAgICByZXN1bHQgLz0gMjsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCAh
PSA5LjIyMDM5NDEzMDA3NDA4NmUtMjU5KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOworCg==
</data>
<flag name="review"
          id="303104"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>