<?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>152668</bug_id>
          
          <creation_ts>2016-01-03 12:24:47 -0800</creation_ts>
          <short_desc>FTL B3 should do binary snippets</short_desc>
          <delta_ts>2016-01-04 15:09:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          <dependson>152669</dependson>
    
    <dependson>152705</dependson>
    
    <dependson>152709</dependson>
    
    <dependson>152713</dependson>
          <blocked>151808</blocked>
          <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>1152150</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-03 12:24:47 -0800</bug_when>
    <thetext>Patches forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152153</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-03 12:28:29 -0800</bug_when>
    <thetext>My approach here will be to beef up B3 to the point where the FTL B3 binary snippet code generators don&apos;t have to do weird things with scratch registers and tag registers.

We can already use patchpoint constraints to force the tag registers to contain tag values.  We just would use ValueRep::reg(...).  This will actually do the Right Thing, since the tag values are already forced into registers.  So, this will probably just force B3 to use the JSC tag registers to hold the tag values.  Even if this doesn&apos;t quite happen and B3 emits some mov&apos;s to put the tag values into the tag registers, the ValueRep::reg() constraint will ensure that as far as the snippet knows, the tag registers will already have the tags and not anything else.

The scratch register is the only issue.  We currently have no way of requesting scratch registers from B3 patchpoints.  We should fix that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152528</commentid>
    <comment_count>2</comment_count>
      <attachid>268239</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-04 15:01:59 -0800</bug_when>
    <thetext>Created attachment 268239
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152529</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-04 15:04:37 -0800</bug_when>
    <thetext>Attachment 268239 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7562:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:7575:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152531</commentid>
    <comment_count>4</comment_count>
      <attachid>268239</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-01-04 15:07:53 -0800</bug_when>
    <thetext>Comment on attachment 268239
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152532</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-04 15:09:02 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194561</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268239</attachid>
            <date>2016-01-04 15:01:59 -0800</date>
            <delta_ts>2016-01-04 15:07:53 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14949</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0NTYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE2LTAxLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIEIzIHNob3VsZCBkbyBiaW5hcnkgc25pcHBldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjY2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZmluaXNoZXMgYWxsIG9mIHRoZSByZXN0IG9m
IHRoZSBzbmlwcGV0cy4KKworICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUJpdE9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQml0WG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQml0UlNoaWZ0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQml0TFNoaWZ0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQml0VVJT
aGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6ZW1pdEJpbmFy
eUJpdE9wU25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
ZW1pdFJpZ2h0U2hpZnRTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9vYmplY3QtYml0
LW9yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0aGluZ3MudmFsdWVPZik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL29iamVjdC1iaXQteG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICh0aGluZ3MudmFsdWVPZik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL29iamVjdC1sc2hpZnQuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRo
aW5ncy52YWx1ZU9mKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvb2JqZWN0LXJzaGlmdC5qczog
QWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAodGhpbmdzLnZhbHVlT2YpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9vYmplY3QtdXJzaGlmdC5qczogQWRkZWQuCisgICAgICAgIChmb28p
OgorICAgICAgICAodGhpbmdzLnZhbHVlT2YpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy91bnR5
cGVkLWJpdC1vci5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAodmFsdWVPZik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL3VudHlwZWQtYml0LXhvci5qczogQWRkZWQuCisgICAg
ICAgIChmb28pOgorICAgICAgICAodmFsdWVPZik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Vu
dHlwZWQtbHNoaWZ0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh2YWx1ZU9m
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdW50eXBlZC1yc2hpZnQuanM6IEFkZGVkLgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKHZhbHVlT2YpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy91
bnR5cGVkLXVyc2hpZnQuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHZhbHVl
T2YpOgorCiAyMDE2LTAxLTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBpc1VudHlwZWRTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMgaXMgd3JvbmcuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2
aXNpb24gMTk0NTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEyIEBACiAjaW5jbHVkZSAiRlRM
V2VpZ2h0ZWRUYXJnZXQuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkpJVEJpdFhvckdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVERpdkdlbmVyYXRv
ci5oIgorI2luY2x1ZGUgIkpJVExlZnRTaGlmdEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVE11
bEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJKSVRTdWJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0Fycm93RnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0yMzAzLDggKzIzMDcsMTIgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGNvbXBpbGVCaXRPcigpCiAgICAgewotICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBtX25vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlKSkgeworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgICAgICBlbWl0QmluYXJ5
Qml0T3BTbmlwcGV0PEpJVEJpdE9yR2VuZXJhdG9yPihvcGVyYXRpb25WYWx1ZUJpdE9yKTsKKyNl
bHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgICAgICAgICBjb21waWxlVW50eXBlZEJpbmFyeU9wPEJp
dE9yRGVzY3JpcHRvcj4oKTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIHNldEludDMyKG1fb3V0LmJpdE9yKGxvd0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAtMjMxMiw4
ICsyMzIwLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlQml0WG9yKCkKICAg
ICB7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
IHx8IG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7CisjaWYgRlRMX1VTRVNf
QjMKKyAgICAgICAgICAgIGVtaXRCaW5hcnlCaXRPcFNuaXBwZXQ8SklUQml0WG9yR2VuZXJhdG9y
PihvcGVyYXRpb25WYWx1ZUJpdFhvcik7CisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgICAgICAg
ICAgY29tcGlsZVVudHlwZWRCaW5hcnlPcDxCaXRYb3JEZXNjcmlwdG9yPigpOworI2VuZGlmIC8v
IEZUTF9VU0VTX0IzCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2V0
SW50MzIobV9vdXQuYml0WG9yKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMiht
X25vZGUtPmNoaWxkMigpKSkpOwpAQCAtMjMyMSw4ICsyMzMzLDEyIEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdm9pZCBjb21waWxlQml0UlNoaWZ0KCkKICAgICB7Ci0gICAgICAgIGlmIChtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG1fbm9kZS0+Y2hpbGQyKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFVudHlwZWRVc2UpKSB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgICAgIGVtaXRSaWdo
dFNoaWZ0U25pcHBldChKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaWduZWRTaGlmdCk7CisjZWxz
ZSAvLyBGVExfVVNFU19CMwogICAgICAgICAgICAgY29tcGlsZVVudHlwZWRCaW5hcnlPcDxCaXRS
U2hpZnREZXNjcmlwdG9yPigpOworI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2V0SW50MzIobV9vdXQuYVNocigKQEAgLTIzMzIs
OCArMjM0OCwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29tcGlsZUJpdExTaGlmdCgp
CiAgICAgewotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSB8fCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisgICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgeworI2lmIEZUTF9V
U0VTX0IzCisgICAgICAgICAgICBlbWl0QmluYXJ5Qml0T3BTbmlwcGV0PEpJVExlZnRTaGlmdEdl
bmVyYXRvcj4ob3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQpOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMK
ICAgICAgICAgICAgIGNvbXBpbGVVbnR5cGVkQmluYXJ5T3A8Qml0TFNoaWZ0RGVzY3JpcHRvcj4o
KTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKQEAgLTIzNDMsOCArMjM2MywxMiBAQCBwcml2
YXRlOgogICAgIAogICAgIHZvaWQgY29tcGlsZUJpdFVSU2hpZnQoKQogICAgIHsKLSAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgeworICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsKKyNpZiBGVExfVVNFU19CMworICAgICAgICAg
ICAgZW1pdFJpZ2h0U2hpZnRTbmlwcGV0KEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OlVuc2lnbmVk
U2hpZnQpOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICAgICAgICAgIGNvbXBpbGVVbnR5cGVk
QmluYXJ5T3A8Qml0VVJTaGlmdERlc2NyaXB0b3I+KCk7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBzZXRJbnQzMihtX291dC5s
U2hyKApAQCAtNzUxMSw2ICs3NTM1LDY1IEBAIHByaXZhdGU6CiAKICAgICAgICAgc2V0SlNWYWx1
ZShwYXRjaHBvaW50KTsKICAgICB9CisKKyAgICB2b2lkIGVtaXRSaWdodFNoaWZ0U25pcHBldChK
SVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaGlmdFR5cGUgc2hpZnRUeXBlKQorICAgIHsKKyAgICAg
ICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBNYWtl
IHRoaXMgZG8gZXhjZXB0aW9ucy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTY4NgorICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRP
cGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKKyAg
ICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDIoKSkucmVzdWx0VHlwZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKGxlZnQsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQocmlnaHQsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVt
YmVyLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRj
aHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIFN0
YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUmlnaHRTaGlmdEdlbmVy
YXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgbGVmdE9wZXJhbmQsIHJpZ2h0T3Bl
cmFuZCwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKKyAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZwU2NyYXRjaCgwKSwgcGFyYW1zLmdwU2Ny
YXRjaCgwKSwgSW52YWxpZEZQUlJlZywgc2hpZnRUeXBlKTsKKworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+ZW5kSnVtcExpc3QoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFyYW1zLmFk
ZExhdGVQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGRvIHNvbWV0aGluZy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZXhjZXB0aW9uczsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXBMaXN0KCkubGlu
aygmaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpKIHNs
b3dQYXRoRnVuY3Rpb24gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VHlwZSA9
PSBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpTaWduZWRTaGlmdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQgOiBvcGVyYXRpb25WYWx1ZUJpdFVS
U2hpZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4Y2VwdGlvbnMsIHNsb3dQYXRoRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOworICAgIH0KICNlbmRp
ZiAvLyBGVExfVVNFU19CMwogCiAgICAgTFZhbHVlIGFsbG9jYXRlQ2VsbChMVmFsdWUgYWxsb2Nh
dG9yLCBMQmFzaWNCbG9jayBzbG93UGF0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3Mvb2JqZWN0LWJpdC1vci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1iaXQtb3IuanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1iaXQtb3IuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1
cm4gYSB8IGI7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciB0aGluZ3MgPSBbe3ZhbHVlT2Y6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gNjsgfX1dOwordmFyIHJlc3VsdHMgPSBbMTRdOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyh0aGlu
Z3NbaSAlIHRoaW5ncy5sZW5ndGhdLCAxMCk7CisgICAgdmFyIGV4cGVjdGVkID0gcmVzdWx0c1tp
ICUgcmVzdWx0cy5sZW5ndGhdOworICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsK
K30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtYml0
LXhvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L29iamVjdC1iaXQteG9yLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9vYmplY3QtYml0LXhvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE2IEBACitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhIF4gYjsKK30KKworbm9J
bmxpbmUoZm9vKTsKKwordmFyIHRoaW5ncyA9IFt7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVy
biA2OyB9fV07Cit2YXIgcmVzdWx0cyA9IFsxMl07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKHRoaW5nc1tpICUgdGhpbmdzLmxlbmd0
aF0sIDEwKTsKKyAgICB2YXIgZXhwZWN0ZWQgPSByZXN1bHRzW2kgJSByZXN1bHRzLmxlbmd0aF07
CisgICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGZvciBpID0gIiArIGkgKyAiOiAiICsgcmVzdWx0OworfQorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVjdC1sc2hpZnQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtbHNoaWZ0LmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3Qt
bHNoaWZ0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK2Z1bmN0aW9uIGZvbyhh
LCBiKSB7CisgICAgcmV0dXJuIGEgPDwgYjsKK30KKworbm9JbmxpbmUoZm9vKTsKKwordmFyIHRo
aW5ncyA9IFt7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiA0OyB9fV07Cit2YXIgcmVzdWx0
cyA9IFs4XTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBmb28odGhpbmdzW2kgJSB0aGluZ3MubGVuZ3RoXSwgMSk7CisgICAgdmFyIGV4cGVj
dGVkID0gcmVzdWx0c1tpICUgcmVzdWx0cy5sZW5ndGhdOworICAgIGlmIChyZXN1bHQgIT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsg
IjogIiArIHJlc3VsdDsKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9vYmplY3QtcnNoaWZ0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LXJzaGlmdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvb2JqZWN0LXJzaGlmdC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2IEBACitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhID4+
IGI7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciB0aGluZ3MgPSBbe3ZhbHVlT2Y6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gLTQ7IH19XTsKK3ZhciByZXN1bHRzID0gWy0yXTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28odGhpbmdzW2kg
JSB0aGluZ3MubGVuZ3RoXSwgMSk7CisgICAgdmFyIGV4cGVjdGVkID0gcmVzdWx0c1tpICUgcmVz
dWx0cy5sZW5ndGhdOworICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30KKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9vYmplY3QtdXJzaGlmdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL29iamVj
dC11cnNoaWZ0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9vYmplY3QtdXJzaGlmdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBA
CitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhID4+PiBiOworfQorCitub0lubGlu
ZShmb28pOworCit2YXIgdGhpbmdzID0gW3t2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0dXJuIC00
OyB9fV07Cit2YXIgcmVzdWx0cyA9IFsyMTQ3NDgzNjQ2XTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28odGhpbmdzW2kgJSB0aGluZ3Mu
bGVuZ3RoXSwgMSk7CisgICAgdmFyIGV4cGVjdGVkID0gcmVzdWx0c1tpICUgcmVzdWx0cy5sZW5n
dGhdOworICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30KKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy91bnR5cGVkLWJpdC1vci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3VudHlwZWQtYml0LW9y
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy91
bnR5cGVkLWJpdC1vci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACitmdW5jdGlv
biBmb28oYSwgYikgeworICAgIHJldHVybiBhIHwgYjsKK30KKworbm9JbmxpbmUoZm9vKTsKKwor
dmFyIHRoaW5ncyA9IFsxLCAyLjUsICIzIiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
NDsgfX1dOwordmFyIHJlc3VsdHMgPSBbMywgMiwgMywgNl07CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKHRoaW5nc1tpICUgdGhpbmdz
Lmxlbmd0aF0sIDIpOworICAgIHZhciBleHBlY3RlZCA9IHJlc3VsdHNbaSAlIHJlc3VsdHMubGVu
Z3RoXTsKKyAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQgZm9yIGkgPSAiICsgaSArICI6ICIgKyByZXN1bHQ7Cit9CisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdW50eXBlZC1iaXQteG9yLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdW50eXBlZC1iaXQt
eG9yLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy91bnR5cGVkLWJpdC14b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorZnVu
Y3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1cm4gYSBeIGI7Cit9CisKK25vSW5saW5lKGZvbyk7
CisKK3ZhciB0aGluZ3MgPSBbMSwgMi41LCAiMyIsIHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0
dXJuIDQ7IH19XTsKK3ZhciByZXN1bHRzID0gWzMsIDAsIDEsIDZdOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyh0aGluZ3NbaSAlIHRo
aW5ncy5sZW5ndGhdLCAyKTsKKyAgICB2YXIgZXhwZWN0ZWQgPSByZXN1bHRzW2kgJSByZXN1bHRz
Lmxlbmd0aF07CisgICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0IGZvciBpID0gIiArIGkgKyAiOiAiICsgcmVzdWx0OworfQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3VudHlwZWQtbHNoaWZ0LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdW50eXBlZC1s
c2hpZnQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3VudHlwZWQtbHNoaWZ0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK2Z1
bmN0aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEgPDwgYjsKK30KKworbm9JbmxpbmUoZm9v
KTsKKwordmFyIHRoaW5ncyA9IFsxLCAyLjUsICIzIiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gNDsgfX1dOwordmFyIHJlc3VsdHMgPSBbMiwgNCwgNiwgOF07CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKHRoaW5nc1tpICUg
dGhpbmdzLmxlbmd0aF0sIDEpOworICAgIHZhciBleHBlY3RlZCA9IHJlc3VsdHNbaSAlIHJlc3Vs
dHMubGVuZ3RoXTsKKyAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQgZm9yIGkgPSAiICsgaSArICI6ICIgKyByZXN1bHQ7Cit9CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdW50eXBlZC1yc2hpZnQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy91bnR5cGVk
LXJzaGlmdC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvdW50eXBlZC1yc2hpZnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAor
ZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1cm4gYSA+PiBiOworfQorCitub0lubGluZShm
b28pOworCit2YXIgdGhpbmdzID0gWzEsIDIuNSwgIjMiLCB7dmFsdWVPZjogZnVuY3Rpb24oKSB7
IHJldHVybiA0OyB9fV07Cit2YXIgcmVzdWx0cyA9IFswLCAxLCAxLCAyXTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28odGhpbmdzW2kg
JSB0aGluZ3MubGVuZ3RoXSwgMSk7CisgICAgdmFyIGV4cGVjdGVkID0gcmVzdWx0c1tpICUgcmVz
dWx0cy5sZW5ndGhdOworICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30KKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy91bnR5cGVkLXVyc2hpZnQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy91bnR5
cGVkLXVyc2hpZnQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3VudHlwZWQtdXJzaGlmdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
IEBACitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhID4+PiBiOworfQorCitub0lu
bGluZShmb28pOworCit2YXIgdGhpbmdzID0gWzEsIDIuNSwgIi0zIiwge3ZhbHVlT2Y6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gNDsgfX1dOwordmFyIHJlc3VsdHMgPSBbMCwgMSwgMjE0NzQ4MzY0Niwg
Ml07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKHRoaW5nc1tpICUgdGhpbmdzLmxlbmd0aF0sIDEpOworICAgIHZhciBleHBlY3RlZCA9
IHJlc3VsdHNbaSAlIHJlc3VsdHMubGVuZ3RoXTsKKyAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgZm9yIGkgPSAiICsgaSArICI6ICIg
KyByZXN1bHQ7Cit9CisK
</data>
<flag name="review"
          id="293184"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>