<?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>49519</bug_id>
          
          <creation_ts>2010-11-14 16:08:42 -0800</creation_ts>
          <short_desc>check-webkit-style unit tests has some duplicate boilerplate code.</short_desc>
          <delta_ts>2010-12-16 15:39:38 -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>Tools / Tests</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>
          <dependson>49513</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>309123</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-11-14 16:08:42 -0800</bug_when>
    <thetext>Duplicate code is bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309124</commentid>
    <comment_count>1</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-11-14 16:09:37 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=49513#c2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323182</commentid>
    <comment_count>2</comment_count>
      <attachid>76771</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-16 08:19:57 -0800</bug_when>
    <thetext>Created attachment 76771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323218</commentid>
    <comment_count>3</comment_count>
      <attachid>76771</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-12-16 09:28:48 -0800</bug_when>
    <thetext>Comment on attachment 76771
Patch

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

Looks good.

&gt; WebKitTools/Scripts/webkitpy/style/checkers/cpp.py:2869
&gt; +

Do we need this blank line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323220</commentid>
    <comment_count>4</comment_count>
      <attachid>76771</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-16 09:29:46 -0800</bug_when>
    <thetext>Comment on attachment 76771
Patch

Will address feedback and land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323271</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-16 10:45:54 -0800</bug_when>
    <thetext>Committed r74200: &lt;http://trac.webkit.org/changeset/74200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323478</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-16 15:39:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74200 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76771</attachid>
            <date>2010-12-16 08:19:57 -0800</date>
            <delta_ts>2010-12-16 09:29:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49519-20101216081955.patch</filename>
            <type>text/plain</type>
            <size>21711</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjZTJjNzg3OTY5N2U1NjMzZjQxNDkxNjhkNGU3YzcwMzNhYmZjZmRiLi4zN2JmZDJi
NjZmNDg5NmI3YjVmNjIwZTgwYzVlNjk4OTdmYTM0ODFlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTAtMTItMTYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNoZWNrLXdlYmtpdC1zdHls
ZSB1bml0IHRlc3RzIGhhcyBzb21lIGR1cGxpY2F0ZSBib2lsZXJwbGF0ZSBjb2RlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk1MTkKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAodXBk
YXRlX2luY2x1ZGVfc3RhdGUpOiBSZXBsYWNlZCB0aGUgImlvIiBwYXJhbWV0ZXIgd2l0aCB0aGUg
Z2xvYmFsCisgICAgICAgIGNvbmZpZ3VyYXRpb24gX3VuaXRfdGVzdF9jb25maWcuIFRoaXMgYWxs
b3dlZCBub3QgY2FsbGluZyBpbnRvCisgICAgICAgIGZ1bmN0aW9ucyBhdCBhIGxvdyBsZXZlbCBh
bmQgYWxzbyBub3QgcGx1bWJpbmcgdGhyb3VnaCB0aGUgaW5qZWN0aW9uCisgICAgICAgIGluZm9y
bWF0aW9uIHRocm91Z2ggbWFueSBsZXZlbHMgb2YgY29kZS4KKyAgICAgICAgKGNoZWNrX2Zvcl9p
bmNsdWRlX3doYXRfeW91X3VzZSk6IERpdHRvLgorICAgICAgICAocHJvY2Vzc19maWxlX2RhdGEp
OiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzZXQgdXAgdGhlIHVuaXQgdGVzdCBjb25maWcKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGluamVjdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weToKKyAgICAgICAgKEVycm9yQ29sbGVjdG9yLl9f
aW5pdF9fKTogQWRkZWQgc3VwcG9ydCBmb3IgaGF2aW5nIGEgZmlsdGVyIGZvciBlcnJvcnMuCisg
ICAgICAgIChFcnJvckNvbGxlY3Rvci5fX2NhbGxfXyk6IERpdHRvLgorICAgICAgICAoQ3BwU3R5
bGVUZXN0QmFzZS5wcm9jZXNzX2ZpbGVfZGF0YSk6IEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCB1
bml0X3Rlc3RfY29uZmlnLgorICAgICAgICAoQ3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2xpbnQp
OiBDb25zb2xpZGF0ZWQgbG9naWMgZm9yIHRoZSBwZXJmb3JtIGZ1bmN0aW9ucy4KKyAgICAgICAg
KENwcFN0eWxlVGVzdEJhc2UucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KTogUmVwbGFjZSBzcGVj
aWZpYyBjYWxscyB0bworICAgICAgICBmdW5jdGlvbnMgaW4gdGhlIGNwcC5weSB3aXRoIGdlbmVy
aWMgcHJvY2Vzc2luZyBhbmQgYSBmaWx0ZXIgdGhhdAorICAgICAgICBpbmRpY2F0ZXMgd2hhdCBl
cnJvcnMgc2hvdWxkIGJlIGtlcHQuCisgICAgICAgIChDcHBTdHlsZVRlc3RCYXNlLnBlcmZvcm1f
bXVsdGlfbGluZV9saW50KTogRGl0dG8uCisgICAgICAgIChDcHBTdHlsZVRlc3RCYXNlLnBlcmZv
cm1fbGFuZ3VhZ2VfcnVsZXNfY2hlY2spOiBEaXR0by4KKyAgICAgICAgKENwcFN0eWxlVGVzdEJh
c2UucGVyZm9ybV9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKTogRGl0dG8uCisgICAgICAgIChDcHBT
dHlsZVRlc3RCYXNlLnBlcmZvcm1fcGFzc19wdHJfY2hlY2spOiBEaXR0by4KKyAgICAgICAgKENw
cFN0eWxlVGVzdEJhc2UucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSk6IERpdHRvLgorICAg
ICAgICAoQ3BwU3R5bGVUZXN0LnRlc3RfbXVsdGlfbGluZV9jb21tZW50cyk6IEFkZGVkIGFub3Ro
ZXIKKyAgICAgICAgZXJyb3IgbWVzc2FnZSB3aGljaCBhcHBsaWVzIHRvIHRoZSB0ZXN0IGNhc2Uu
CisgICAgICAgIChDcHBTdHlsZVRlc3QudGVzdF9zcGFjaW5nX2Zvcl9iaW5hcnlfb3BzKTogRml4
ZWQgdGVzdAorICAgICAgICB0byBub3QgaGF2ZSBjb25maWcuaCwgc2luY2UgaXQgaXMgcHJvY2Vz
c2VkIGFzIGEgaGVhZGVyIGZpbGUuCisgICAgICAgIChDcHBTdHlsZVRlc3QudGVzdF9zdGF0aWNf
b3JfZ2xvYmFsX3N0bHN0cmluZ3MpOiBGaXhlZCB2YXJpYWJsZSBuYW1lCisgICAgICAgIHN0eWxl
IGFuZCBpbmRlbnRhdGlvbiBpbiBjaGVja2VkIGNvZGUuCisgICAgICAgIChPcmRlck9mSW5jbHVk
ZXNUZXN0LnRlc3RfY2hlY2tfcHJlcHJvY2Vzc29yX2luX2luY2x1ZGVfc2VjdGlvbik6CisgICAg
ICAgIEZpeGVkIGxpbmUgbnVtYmVyLgorICAgICAgICAoTm9Ob25WaXJ0dWFsRGVzdHJ1Y3RvcnNU
ZXN0LnRlc3RfbXVsdGlfbGluZV9kZWNsYXJhdGlvbl93aXRoX2Vycm9yKToKKyAgICAgICAgRGl0
dG8uCisKIDIwMTAtMTItMTUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NDEzNi4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKaW5kZXgg
NTgwZWI1ODQzNjFkMzIyNzA3MWZkMTBmMjY5OTE2MjRmMjY3MDM5Ny4uYWQxZDUwZmY5NDYwMzE4
ZTdlYzViM2Q0Y2YxZTQ3YjkzMzg5YjIwYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTQ3LDYgKzQ3LDggQEAgaW1wb3J0
IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKKyMgVGhlIGtleSB0byB1
c2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRvIGZha2UgbG9hZGluZyBhIGhlYWRlciBmaWxlLgorSU5D
TFVERV9JT19JTkpFQ1RJT05fS0VZID0gJ2luY2x1ZGVfaGVhZGVyX2lvJwogCiAjIEhlYWRlcnMg
dGhhdCB3ZSBjb25zaWRlciBTVEwgaGVhZGVycy4KIF9TVExfSEVBREVSUyA9IGZyb3plbnNldChb
CkBAIC0xMTgsNiArMTIwLDEyIEBAIF9PVEhFUl9IRUFERVIgPSAyCiBfTU9DX0hFQURFUiA9IDMK
IAogCisjIEEgZGljdGlvbmFyeSBvZiBpdGVtcyBjdXN0b21pemUgYmVoYXZpb3IgZm9yIHVuaXQg
dGVzdC4gRm9yIGV4YW1wbGUsCisjIElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSBhbGxvd3MgcHJv
dmlkaW5nIGEgY3VzdG9tIGlvIGNsYXNzIHdoaWNoIGFsbG93cworIyBmb3IgZmFraW5nIGEgaGVh
ZGVyIGZpbGUuCitfdW5pdF90ZXN0X2NvbmZpZyA9IHt9CisKKwogIyBUaGUgcmVnZXhwIGNvbXBp
bGF0aW9uIGNhY2hpbmcgaXMgaW5saW5lZCBpbiBhbGwgcmVnZXhwIGZ1bmN0aW9ucyBmb3IKICMg
cGVyZm9ybWFuY2UgcmVhc29uczsgZmFjdG9yaW5nIGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgZnVu
Y3Rpb24gdHVybnMgb3V0CiAjIHRvIGJlIG5vdGljZWFibHkgZXhwZW5zaXZlLgpAQCAtMjgyNCw2
ICsyODMyLDcgQEAgZGVmIHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZpbGVuYW1lLCBpbmNsdWRlX3N0
YXRlLCBpbz1jb2RlY3MpOgogICAgIFJldHVybnM6CiAgICAgICBUcnVlIGlmIGEgaGVhZGVyIHdh
cyBzdWNjZXNmdWxseSBhZGRlZC4gRmFsc2Ugb3RoZXJ3aXNlLgogICAgICIiIgorICAgIGlvID0g
X3VuaXRfdGVzdF9jb25maWcuZ2V0KElOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWSwgY29kZWNzKQog
ICAgIGhlYWRlcl9maWxlID0gTm9uZQogICAgIHRyeToKICAgICAgICAgaGVhZGVyX2ZpbGUgPSBp
by5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKQpAQCAtMjg0Miw4ICsyODUx
LDcgQEAgZGVmIHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZpbGVuYW1lLCBpbmNsdWRlX3N0YXRlLCBp
bz1jb2RlY3MpOgogICAgIHJldHVybiBUcnVlCiAKIAotZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3do
YXRfeW91X3VzZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVfc3RhdGUsIGVycm9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbz1jb2RlY3MpOgorZGVmIGNoZWNr
X2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVf
c3RhdGUsIGVycm9yKToKICAgICAiIiJSZXBvcnRzIGZvciBtaXNzaW5nIHN0bCBpbmNsdWRlcy4K
IAogICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBvdXRwdXQgd2FybmluZ3MgdG8gbWFrZSBzdXJlIHlv
dSBhcmUgaW5jbHVkaW5nIHRoZSBoZWFkZXJzCkBAIC0yODU3LDkgKzI4NjUsOCBAQCBkZWYgY2hl
Y2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5jbHVk
ZV9zdGF0ZSwgZXJyb3IsCiAgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3Rh
bmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCiAgICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVk
ZVN0YXRlIGluc3RhbmNlLgogICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgg
YW55IGVycm9ycyBmb3VuZC4KLSAgICAgIGlvOiBUaGUgSU8gZmFjdG9yeSB0byB1c2UgdG8gcmVh
ZCB0aGUgaGVhZGVyIGZpbGUuIFByb3ZpZGVkIGZvciB1bml0dGVzdAotICAgICAgICAgIGluamVj
dGlvbi4KICAgICAiIiIKKwogICAgIHJlcXVpcmVkID0ge30gICMgQSBtYXAgb2YgaGVhZGVyIG5h
bWUgdG8gbGluZV9udW1iZXIgYW5kIHRoZSB0ZW1wbGF0ZSBlbnRpdHkuCiAgICAgICAgICMgRXhh
bXBsZSBvZiByZXF1aXJlZDogeyAnPGZ1bmN0aW9uYWw+JzogKDEyMTksICdsZXNzPD4nKSB9CiAK
QEAgLTI5MDksNyArMjkxNiw3IEBAIGRlZiBjaGVja19mb3JfaW5jbHVkZV93aGF0X3lvdV91c2Uo
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRlX3N0YXRlLCBlcnJvciwKICAgICBmb3IgaGVh
ZGVyIGluIGluY2x1ZGVfc3RhdGUua2V5cygpOiAgI05PTElOVAogICAgICAgICAoc2FtZV9tb2R1
bGUsIGNvbW1vbl9wYXRoKSA9IGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZShhYnNfZmlsZW5h
bWUsIGhlYWRlcikKICAgICAgICAgZnVsbHBhdGggPSBjb21tb25fcGF0aCArIGhlYWRlcgotICAg
ICAgICBpZiBzYW1lX21vZHVsZSBhbmQgdXBkYXRlX2luY2x1ZGVfc3RhdGUoZnVsbHBhdGgsIGlu
Y2x1ZGVfc3RhdGUsIGlvKToKKyAgICAgICAgaWYgc2FtZV9tb2R1bGUgYW5kIHVwZGF0ZV9pbmNs
dWRlX3N0YXRlKGZ1bGxwYXRoLCBpbmNsdWRlX3N0YXRlKToKICAgICAgICAgICAgIGhlYWRlcl9m
b3VuZCA9IFRydWUKIAogICAgICMgSWYgd2UgY2FuJ3QgZmluZCB0aGUgaGVhZGVyIGZpbGUgZm9y
IGEgLmNwcCwgYXNzdW1lIGl0J3MgYmVjYXVzZSB3ZSBkb24ndApAQCAtMzEyMSw2ICszMTI4LDkg
QEAgY2xhc3MgQ3BwQ2hlY2tlcihvYmplY3QpOgogCiAKICMgRklYTUU6IFJlbW92ZSB0aGlzIGZ1
bmN0aW9uIChyZXF1aXJlcyByZWZhY3RvcmluZyB1bml0IHRlc3RzKS4KLWRlZiBwcm9jZXNzX2Zp
bGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgbWluX2NvbmZp
ZGVuY2UpOgorZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwg
bGluZXMsIGVycm9yLCBtaW5fY29uZmlkZW5jZSwgdW5pdF90ZXN0X2NvbmZpZyk6CisgICAgZ2xv
YmFsIF91bml0X3Rlc3RfY29uZmlnCisgICAgX3VuaXRfdGVzdF9jb25maWcgPSB1bml0X3Rlc3Rf
Y29uZmlnCiAgICAgY2hlY2tlciA9IENwcENoZWNrZXIoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9u
LCBlcnJvciwgbWluX2NvbmZpZGVuY2UpCiAgICAgY2hlY2tlci5jaGVjayhsaW5lcykKKyAgICBf
dW5pdF90ZXN0X2NvbmZpZyA9IHt9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CmluZGV4IDUzZmIxNWUz
M2I0MGRhZTEwMzc2YzA1Y2E5MzE1OWM3NWI0NDk3N2EuLmU3ODlmNTc4NTlmY2ZhYjJmNzczNDA1
Nzg2M2RjMjc5NDU0NzBhZTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC00Myw2ICs0Myw3
IEBAIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQog
ZnJvbSBjcHAgaW1wb3J0IENwcENoZWNrZXIKK2Zyb20gLi5maWx0ZXIgaW1wb3J0IEZpbHRlckNv
bmZpZ3VyYXRpb24KIAogIyBUaGlzIGNsYXNzIHdvcmtzIGFzIGFuIGVycm9yIGNvbGxlY3RvciBh
bmQgcmVwbGFjZXMgY3BwX3N0eWxlLkVycm9yCiAjIGZ1bmN0aW9uIGZvciB0aGUgdW5pdCB0ZXN0
cy4gIFdlIGFsc28gdmVyaWZ5IGVhY2ggY2F0ZWdvcnkgd2Ugc2VlCkBAIC01MiwxNyArNTMsMjIg
QEAgY2xhc3MgRXJyb3JDb2xsZWN0b3I6CiAgICAgIyBUaGlzIGlzIGEgbGlzdCBpbmNsdWRpbmcg
YWxsIGNhdGVnb3JpZXMgc2VlbiBpbiBhbnkgdW5pdCB0ZXN0LgogICAgIF9zZWVuX3N0eWxlX2Nh
dGVnb3JpZXMgPSB7fQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzc2VydF9mbik6Ci0gICAg
ICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gd2Ugbm90aWNlIGEgcHJv
YmxlbS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXNzZXJ0X2ZuLCBmaWx0ZXI9Tm9uZSk6
CisgICAgICAgICIiImFzc2VydF9mbjogYSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gd2Ugbm90aWNl
IGEgcHJvYmxlbS4KKyAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXJzIHRoZSBlcnJvcnMgdGhhdCB3
ZSBhcmUgY29uY2VybmVkIGFib3V0LiIiIgogICAgICAgICBzZWxmLl9hc3NlcnRfZm4gPSBhc3Nl
cnRfZm4KICAgICAgICAgc2VsZi5fZXJyb3JzID0gW10KKyAgICAgICAgaWYgbm90IGZpbHRlcjoK
KyAgICAgICAgICAgIGZpbHRlciA9IEZpbHRlckNvbmZpZ3VyYXRpb24oKQorICAgICAgICBzZWxm
Ll9maWx0ZXIgPSBmaWx0ZXIKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVzZWRfbGluZW51
bSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLl9hc3NlcnRf
Zm4oY2F0ZWdvcnkgaW4gc2VsZi5fYWxsX3N0eWxlX2NhdGVnb3JpZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29yeSAiJXMiLCcKICAgICAgICAgICAg
ICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90IGluIFNUWUxFX0NBVEVHT1JJRVMnICUgKG1lc3Nh
Z2UsIGNhdGVnb3J5KSkKLSAgICAgICAgc2VsZi5fc2Vlbl9zdHlsZV9jYXRlZ29yaWVzW2NhdGVn
b3J5XSA9IDEKLSAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnJXMgIFslc10gWyVkXScgJSAo
bWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQorICAgICAgICBpZiBzZWxmLl9maWx0ZXIu
c2hvdWxkX2NoZWNrKGNhdGVnb3J5LCAiIik6CisgICAgICAgICAgICBzZWxmLl9zZWVuX3N0eWxl
X2NhdGVnb3JpZXNbY2F0ZWdvcnldID0gMQorICAgICAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVu
ZCgnJXMgIFslc10gWyVkXScgJSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQogCiAg
ICAgZGVmIHJlc3VsdHMoc2VsZik6CiAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIDwgMjoK
QEAgLTg3LDEyICs5Myw2IEBAIGNsYXNzIEVycm9yQ29sbGVjdG9yOgogICAgICAgICAgICAgICAg
IGltcG9ydCBzeXMKICAgICAgICAgICAgICAgICBzeXMuZXhpdCgnRkFUQUwgRVJST1I6IFRoZXJl
IGFyZSBubyB0ZXN0cyBmb3IgY2F0ZWdvcnkgIiVzIicgJSBjYXRlZ29yeSkKIAotICAgIGRlZiBy
ZW1vdmVfaWZfcHJlc2VudChzZWxmLCBzdWJzdHIpOgotICAgICAgICBmb3IgKGluZGV4LCBlcnJv
cikgaW4gZW51bWVyYXRlKHNlbGYuX2Vycm9ycyk6Ci0gICAgICAgICAgICBpZiBlcnJvci5maW5k
KHN1YnN0cikgIT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JzID0gc2VsZi5fZXJy
b3JzWzA6aW5kZXhdICsgc2VsZi5fZXJyb3JzWyhpbmRleCArIDEpOl0KLSAgICAgICAgICAgICAg
ICBicmVhawotCiAKICMgVGhpcyBjbGFzcyBpcyBhIGxhbWUgbW9jayBvZiBjb2RlY3MuIFdlIGRv
IG5vdCB2ZXJpZnkgZmlsZW5hbWUsIG1vZGUsIG9yCiAjIGVuY29kaW5nLCBidXQgZm9yIHRoZSBj
dXJyZW50IHVzZSBjYXNlIGl0IGlzIG5vdCBuZWVkZWQuCkBAIC0xMzAsMTIxICsxMzAsNjEgQEAg
Y2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIEhlbHBl
ciBmdW5jdGlvbiB0byBhdm9pZCBuZWVkaW5nIHRvIGV4cGxpY2l0bHkgcGFzcyBjb25maWRlbmNl
CiAgICAgIyBpbiBhbGwgdGhlIHVuaXQgdGVzdCBjYWxscyB0byBjcHBfc3R5bGUucHJvY2Vzc19m
aWxlX2RhdGEoKS4KLSAgICBkZWYgcHJvY2Vzc19maWxlX2RhdGEoc2VsZiwgZmlsZW5hbWUsIGZp
bGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IpOgorICAgIGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShz
ZWxmLCBmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdW5pdF90ZXN0X2Nv
bmZpZz17fSk6CiAgICAgICAgICIiIkNhbGwgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCkg
d2l0aCB0aGUgbWluX2NvbmZpZGVuY2UuIiIiCiAgICAgICAgIHJldHVybiBjcHBfc3R5bGUucHJv
Y2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc2VsZi5taW5fY29uZmlk
ZW5jZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwg
c2VsZi5taW5fY29uZmlkZW5jZSwgdW5pdF90ZXN0X2NvbmZpZykKIAotICAgICMgUGVyZm9ybSBs
aW50IG9uIHNpbmdsZSBsaW5lIG9mIGlucHV0IGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2Uu
Ci0gICAgZGVmIHBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUp
OgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8p
CisgICAgZGVmIHBlcmZvcm1fbGludChzZWxmLCBjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3Jf
cnVsZXMsIHVuaXRfdGVzdF9jb25maWc9e30pOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8sIEZpbHRlckNvbmZpZ3VyYXRpb24oYmFzaWNfZXJy
b3JfcnVsZXMpKQogICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3Bw
X3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcl9jb2xsZWN0b3Ip
Ci0gICAgICAgIGNsZWFuX2xpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0g
ICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCi0gICAgICAg
IGZ1bmN0aW9uX3N0YXRlID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlKHNlbGYubWluX2NvbmZp
ZGVuY2UpCi0gICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6
XQotICAgICAgICBjbGFzc19zdGF0ZSA9IGNwcF9zdHlsZS5fQ2xhc3NTdGF0ZSgpCi0gICAgICAg
IGZpbGVfc3RhdGUgPSBjcHBfc3R5bGUuX0ZpbGVTdGF0ZSgpCi0gICAgICAgIGNwcF9zdHlsZS5w
cm9jZXNzX2xpbmUoZmlsZV9uYW1lLCBleHQsIGNsZWFuX2xpbmVzLCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlcnJvcl9j
b2xsZWN0b3IpCi0gICAgICAgICMgU2luZ2xlLWxpbmUgbGludCB0ZXN0cyBhcmUgYWxsb3dlZCB0
byBmYWlsIHRoZSAndW5saW50YWJsZSBmdW5jdGlvbicKLSAgICAgICAgIyBjaGVjay4KLSAgICAg
ICAgZXJyb3JfY29sbGVjdG9yLnJlbW92ZV9pZl9wcmVzZW50KAotICAgICAgICAgICAgJ0xpbnQg
ZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQorICAgICAgICBleHRlbnNp
b24gPSBmaWxlbmFtZS5zcGxpdCgnLicpWzFdCisgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2Rh
dGEoZmlsZW5hbWUsIGV4dGVuc2lvbiwgbGluZXMsIGVycm9yX2NvbGxlY3RvciwgdW5pdF90ZXN0
X2NvbmZpZykKICAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKIAorICAg
ICMgUGVyZm9ybSBsaW50IG9uIHNpbmdsZSBsaW5lIG9mIGlucHV0IGFuZCByZXR1cm4gdGhlIGVy
cm9yIG1lc3NhZ2UuCisgICAgZGVmIHBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChzZWxmLCBjb2Rl
LCBmaWxlbmFtZSk6CisgICAgICAgIGJhc2ljX2Vycm9yX3J1bGVzID0gKCctYnVpbGQvaGVhZGVy
X2d1YXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1sZWdhbC9jb3B5cmlnaHQn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXJlYWRhYmlsaXR5L2ZuX3NpemUnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXdoaXRlc3BhY2UvZW5kaW5nX25ld2xpbmUn
KQorICAgICAgICByZXR1cm4gc2VsZi5wZXJmb3JtX2xpbnQoY29kZSwgZmlsZW5hbWUsIGJhc2lj
X2Vycm9yX3J1bGVzKQorCiAgICAgIyBQZXJmb3JtIGxpbnQgb3ZlciBtdWx0aXBsZSBsaW5lcyBh
bmQgcmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgogICAgIGRlZiBwZXJmb3JtX211bHRpX2xpbmVf
bGludChzZWxmLCBjb2RlLCBmaWxlX2V4dGVuc2lvbik6Ci0gICAgICAgIGVycm9yX2NvbGxlY3Rv
ciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgbGluZXMgPSBjb2RlLnNw
bGl0KCdcbicpCi0gICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhs
aW5lcywgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBsaW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNl
ZExpbmVzKGxpbmVzKQotICAgICAgICBjbGFzc19zdGF0ZSA9IGNwcF9zdHlsZS5fQ2xhc3NTdGF0
ZSgpCi0gICAgICAgIGZpbGVfc3RhdGUgPSBjcHBfc3R5bGUuX0ZpbGVTdGF0ZSgpCi0gICAgICAg
IGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5
bGUuY2hlY2tfc3R5bGUobGluZXMsIGksIGZpbGVfZXh0ZW5zaW9uLCBjbGFzc19zdGF0ZSwgZmls
ZV9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zv
cl9ub25fc3RhbmRhcmRfY29uc3RydWN0cyhsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvcikKLSAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZXJyb3JfY29sbGVj
dG9yKQotICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgIyBT
aW1pbGFyIHRvIHBlcmZvcm1fbXVsdGlfbGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tfbGFuZ3Vh
Z2UgaW5zdGVhZCBvZgotICAgICMgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzCi0g
ICAgZGVmIHBlcmZvcm1fbGFuZ3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2Rl
KToKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRf
KQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQotICAg
ICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9t
dWx0aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVz
ID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGV4dCA9IGZpbGVfbmFt
ZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGlu
ZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2xhbmd1YWdlKGZp
bGVfbmFtZSwgbGluZXMsIGksIGV4dCwgaW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHJldHVybiBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0cygpCi0KKyAgICAgICAgYmFzaWNfZXJyb3JfcnVsZXMgPSAoJy1i
dWlsZC9oZWFkZXJfZ3VhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWxlZ2Fs
L2NvcHlyaWdodCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbXVsdGlfbGluZV9m
aWx0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXdoaXRlc3BhY2UvZW5kaW5n
X25ld2xpbmUnKQorICAgICAgICByZXR1cm4gc2VsZi5wZXJmb3JtX2xpbnQoY29kZSwgJ3Rlc3Qu
JyArIGZpbGVfZXh0ZW5zaW9uLCBiYXNpY19lcnJvcl9ydWxlcykKKworICAgICMgT25seSBrZWVw
IHNvbWUgZXJyb3JzIHJlbGF0ZWQgdG8gaW5jbHVkZXMsIG5hbWVzcGFjZXMgYW5kIHJ0dGkuCisg
ICAgZGVmIHBlcmZvcm1fbGFuZ3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZW5hbWUsIGNvZGUp
OgorICAgICAgICBiYXNpY19lcnJvcl9ydWxlcyA9ICgnLScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcrYnVpbGQvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcrYnVpbGQvaW5jbHVkZV9vcmRlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcr
YnVpbGQvbmFtZXNwYWNlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcrcnVudGlt
ZS9ydHRpJykKKyAgICAgICAgcmV0dXJuIHNlbGYucGVyZm9ybV9saW50KGNvZGUsIGZpbGVuYW1l
LCBiYXNpY19lcnJvcl9ydWxlcykKKworICAgICMgT25seSBrZWVwIGZ1bmN0aW9uIGxlbmd0aCBl
cnJvcnMuCiAgICAgZGVmIHBlcmZvcm1fZnVuY3Rpb25fbGVuZ3Roc19jaGVjayhzZWxmLCBjb2Rl
KToKLSAgICAgICAgIiIiUGVyZm9ybSBMaW50IGZ1bmN0aW9uIGxlbmd0aCBjaGVjayBvbiBibG9j
ayBvZiBjb2RlIGFuZCByZXR1cm4gd2FybmluZ3MuCi0KLSAgICAgICAgQnVpbGRzIHVwIGFuIGFy
cmF5IG9mIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvZGUgYW5kIHN0cmlwcyBjb21tZW50
cwotICAgICAgICB1c2luZyBjcHBfc3R5bGUgZnVuY3Rpb25zLgotCi0gICAgICAgIEVzdGFibGlz
aGVzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgaW52b2tlcyB0aGUgZnVuY3Rpb24gbGVuZ3RoIGNo
ZWNraW5nCi0gICAgICAgIGZ1bmN0aW9uIGZvbGxvd2luZyBjcHBfc3R5bGUncyBwYXR0ZXJuLgor
ICAgICAgICBiYXNpY19lcnJvcl9ydWxlcyA9ICgnLScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcrcmVhZGFiaWxpdHkvZm5fc2l6ZScpCisgICAgICAgIHJldHVybiBzZWxmLnBlcmZv
cm1fbGludChjb2RlLCAndGVzdC5jcHAnLCBiYXNpY19lcnJvcl9ydWxlcykKIAotICAgICAgICBB
cmdzOgotICAgICAgICAgIGNvZGU6IEMrKyBzb3VyY2UgY29kZSBleHBlY3RlZCB0byBnZW5lcmF0
ZSBhIHdhcm5pbmcgbWVzc2FnZS4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRoZSBh
Y2N1bXVsYXRlZCBlcnJvcnMuCi0gICAgICAgICIiIgotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGZ1bmN0aW9uX3N0YXRlID0g
Y3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlKHNlbGYubWluX2NvbmZpZGVuY2UpCi0gICAgICAgIGxp
bmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xp
bmVfY29tbWVudHMobGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBf
c3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxpbmVz
Lm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5kZXRlY3RfZnVuY3Rpb25zKGxp
bmVzLCBpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25f
c3RhdGUsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19mb3Jf
ZnVuY3Rpb25fbGVuZ3RocyhsaW5lcywgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQotICAg
ICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgIyBTaW1pbGFyIHRv
IHBlcmZvcm1fZnVuY3Rpb25fbGVuZ3Roc19jaGVjaywgYnV0IGNhbGxzIGNoZWNrX3Bhc3NfcHRy
X3VzYWdlCi0gICAgIyBpbnN0ZWFkIG9mIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzLgorICAg
ICMgT25seSBrZWVwIHBhc3MgcHRyIGVycm9ycy4KICAgICBkZWYgcGVyZm9ybV9wYXNzX3B0cl9j
aGVjayhzZWxmLCBjb2RlKToKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0
b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcF9zdHlsZS5fRnVu
Y3Rpb25TdGF0ZShzZWxmLm1pbl9jb25maWRlbmNlKQotICAgICAgICBsaW5lcyA9IGNvZGUuc3Bs
aXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGxp
bmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2Vk
TGluZXMobGluZXMpCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMoKSk6
Ci0gICAgICAgICAgICBjcHBfc3R5bGUuZGV0ZWN0X2Z1bmN0aW9ucyhsaW5lcywgaSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcl9j
b2xsZWN0b3IpCi0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfcGFzc19wdHJfdXNhZ2UobGlu
ZXMsIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b25fc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRzKCkKKyAgICAgICAgYmFzaWNfZXJyb3JfcnVsZXMgPSAoJy0nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnK3JlYWRhYmlsaXR5L3Bhc3NfcHRyJykKKyAgICAgICAgcmV0
dXJuIHNlbGYucGVyZm9ybV9saW50KGNvZGUsICd0ZXN0LmNwcCcsIGJhc2ljX2Vycm9yX3J1bGVz
KQogCisgICAgIyBPbmx5IGluY2x1ZGUgd2hhdCB5b3UgdXNlIGVycm9ycy4KICAgICBkZWYgcGVy
Zm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmLCBjb2RlLCBmaWxlbmFtZT0nZm9vLmgnLCBp
bz1jb2RlY3MpOgotICAgICAgICAjIEZpcnN0LCBidWlsZCB1cCB0aGUgaW5jbHVkZSBzdGF0ZS4K
LSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQot
ICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQotICAgICAg
ICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0
aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0g
Y3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGZpbGVfZXh0ZW5zaW9uID0g
ZmlsZW5hbWVbZmlsZW5hbWUucmZpbmQoJy4nKSArIDE6XQotICAgICAgICBmb3IgaSBpbiB4cmFu
Z2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2xhbmd1
YWdlKGZpbGVuYW1lLCBsaW5lcywgaSwgZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAg
ICAgICAjIFdlIGNvdWxkIGNsZWFyIHRoZSBlcnJvcl9jb2xsZWN0b3IgaGVyZSwgYnV0IHRoaXMg
c2hvdWxkCi0gICAgICAgICMgYWxzbyBiZSBmaW5lLCBzaW5jZSBvdXIgSW5jbHVkZVdoYXRZb3VV
c2UgdW5pdHRlc3RzIGRvIG5vdAotICAgICAgICAjIGhhdmUgbGFuZ3VhZ2UgcHJvYmxlbXMuCi0K
LSAgICAgICAgIyBTZWNvbmQsIGxvb2sgZm9yIG1pc3NpbmcgaW5jbHVkZXMuCi0gICAgICAgIGNw
cF9zdHlsZS5jaGVja19mb3JfaW5jbHVkZV93aGF0X3lvdV91c2UoZmlsZW5hbWUsIGxpbmVzLCBp
bmNsdWRlX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3RvciwgaW8pCi0gICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0
b3IucmVzdWx0cygpCisgICAgICAgIGJhc2ljX2Vycm9yX3J1bGVzID0gKCctJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJytidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScpCisgICAg
ICAgIHVuaXRfdGVzdF9jb25maWcgPSB7Y3BwX3N0eWxlLklOQ0xVREVfSU9fSU5KRUNUSU9OX0tF
WTogaW99CisgICAgICAgIHJldHVybiBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwg
YmFzaWNfZXJyb3JfcnVsZXMsIHVuaXRfdGVzdF9jb25maWcpCiAKICAgICAjIFBlcmZvcm0gbGlu
dCBhbmQgY29tcGFyZSB0aGUgZXJyb3IgbWVzc2FnZSB3aXRoICJleHBlY3RlZF9tZXNzYWdlIi4K
ICAgICBkZWYgYXNzZXJ0X2xpbnQoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSwgZmlsZV9u
YW1lPSdmb28uY3BwJyk6CkBAIC03MTUsMTEgKzY1NSwxOSBAQCBjbGFzcyBDcHBTdHlsZVRlc3Qo
Q3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
ICAgICAgICAgICAgIHInJycvKiBpbnQgYSA9IDA7IG11bHRpLWxpbmVyCiAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGIgPSAwOycnJywKLSAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2Yg
bXVsdGktbGluZSBjb21tZW50JwotICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21t
ZW50XSBbNV0nKQorICAgICAgICAgICAgWydDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGlu
ZSBjb21tZW50JworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVu
dF0gWzVdJywKKyAgICAgICAgICAgICAnQ29tcGxleCBtdWx0aS1saW5lIC8qLi4uKi8tc3R5bGUg
Y29tbWVudCBmb3VuZC4gJworICAgICAgICAgICAgICdMaW50IG1heSBnaXZlIGJvZ3VzIHdhcm5p
bmdzLiAgQ29uc2lkZXIgcmVwbGFjaW5nIHRoZXNlIHdpdGggJworICAgICAgICAgICAgICcvLy1z
dHlsZSBjb21tZW50cywgd2l0aCAjaWYgMC4uLiNlbmRpZiwgb3Igd2l0aCBtb3JlIGNsZWFybHkg
JworICAgICAgICAgICAgICdzdHJ1Y3R1cmVkIG11bHRpLWxpbmUgY29tbWVudHMuICBbcmVhZGFi
aWxpdHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1XSddKQogICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQocicnJyAgICAvKiBtdWx0aS1saW5lIGNvbW1lbnQnJycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxp
bmUgY29tbWVudCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVs
dGlsaW5lX2NvbW1lbnRdIFs1XScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvbXBsZXggbXVsdGktbGluZSAvKi4uLiovLXN0eWxlIGNvbW1lbnQgZm91bmQuICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGludCBtYXkgZ2l2ZSBib2d1cyB3
YXJuaW5ncy4gIENvbnNpZGVyIHJlcGxhY2luZyB0aGVzZSB3aXRoICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLy8tc3R5bGUgY29tbWVudHMsIHdpdGggI2lmIDAuLi4j
ZW5kaWYsIG9yIHdpdGggbW9yZSBjbGVhcmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc3RydWN0dXJlZCBtdWx0aS1saW5lIGNvbW1lbnRzLiAgW3JlYWRhYmlsaXR5
L211bHRpbGluZV9jb21tZW50XSBbNV0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KHInJycgICAgLy8gLyogY29tbWVudCwgYnV0IG5vdCBtdWx0aS1saW5lJycnLCAnJykK
IAogICAgIGRlZiB0ZXN0X211bHRpbGluZV9zdHJpbmdzKHNlbGYpOgpAQCAtMTMyNSwxMCArMTI3
Myw4IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnYSA9IDE8PDIwJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PCAgW3do
aXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAo
YSA9IGIgPT0gMSknLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYSA9IDEgPDwgMjAn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcjaW5jbHVkZSAiY29u
ZmlnLmgiXG4jaW5jbHVkZSA8c3lzL2lvLmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgnI2lu
Y2x1ZGUgImNvbmZpZy5oIlxuI2ltcG9ydCA8Zm9vL2Jhci5oPlxuJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoJyNpbmNsdWRlIDxzeXMvaW8uaD5cbicsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoJyNpbXBvcnQgPGZvby9iYXIuaD5cbicsICcnKQogCiAgICAgZGVmIHRl
c3Rfb3BlcmF0b3JfbWV0aG9kcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnU3Ry
aW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsnLCAnJykKQEAgLTEz
OTQsNyArMTM0MCw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5nKCkgeyByZXR1cm4gIiI7
IH0nLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEVtcHR5U3RyaW5nICgp
IHsgcmV0dXJuICIiOyB9JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBW
ZXJ5TG9uZ05hbWVGdW5jdGlvblNvbWV0aW1lc0VuZHNXaXRoKFxuJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgICAgVmVyeUxvbmdOYW1lVHlwZSB2ZXJ5X2xvbmdfbmFtZV92YXJpYWJsZSkg
e30nLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIFZlcnlMb25nTmFtZVR5cGUg
dmVyeUxvbmdOYW1lVmFyaWFibGUpIHt9JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3RlbXBsYXRlPD5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0aW9u
VGVtcGxhdGVTcGVjaWFsaXphdGlvbjxTb21lVHlwZT4oXG4nCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQpAQCAtMTQwNSwxMiArMTM1
MSwxMiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICMg
c2hvdWxkIG5vdCBjYXRjaCBtZXRob2RzIG9mIHRlbXBsYXRlIGNsYXNzZXMuCiAgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKCkgY29uc3RcbicKICAg
ICAgICAgICAgICAgICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IHJldHVybiAiIjtcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHJldHVybiAiIjtc
bicKICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3N0cmluZyBDbGFzczxUeXBlPjo6TWV0aG9kKFxuJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgICBpbnQgYXJnKSBjb25zdFxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICcgICAgaW50IGFyZykgY29uc3RcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAne1xuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJldHVybiAiIjtcbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnICAgIHJldHVybiAiIjtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAn
fVxuJywgJycpCiAKICAgICBkZWYgdGVzdF9ub19zcGFjZXNfaW5fZnVuY3Rpb25fY2FsbHMoc2Vs
Zik6CkBAIC0yMTgyLDcgKzIxMjgsNyBAQCBjbGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcFN0
eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
Zm9vLmgiXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5j
bHVkZSAiZy5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyJmb28uaCIgYWxyZWFkeSBpbmNsdWRlZCBhdCBmb28uY3BwOjEgIFtidWlsZC9pbmNsdWRlXSBb
NF0nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnImZvby5oIiBh
bHJlYWR5IGluY2x1ZGVkIGF0IGZvby5jcHA6MiAgW2J1aWxkL2luY2x1ZGVdIFs0XScpCiAKICAg
ICBkZWYgdGVzdF9jaGVja193dGZfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKQEAgLTI3NDIsNyArMjY4OCw3IEBAIGNs
YXNzIE5vTm9uVmlydHVhbERlc3RydWN0b3JzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAg
ICAgICAgIFsnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5l
ICAnCiAgICAgICAgICAgICAgJ1t3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJywKICAgICAgICAgICAg
ICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvciBkdWUg
dG8gaGF2aW5nICcKLSAgICAgICAgICAgICAndmlydHVhbCBtZXRob2QocyksIG9uZSBkZWNsYXJl
ZCBhdCBsaW5lIDIuICBbcnVudGltZS92aXJ0dWFsXSBbNF0nXSkKKyAgICAgICAgICAgICAndmly
dHVhbCBtZXRob2QocyksIG9uZSBkZWNsYXJlZCBhdCBsaW5lIDMuICBbcnVudGltZS92aXJ0dWFs
XSBbNF0nXSkKIAogCiBjbGFzcyBQYXNzUHRyVGVzdChDcHBTdHlsZVRlc3RCYXNlKToK
</data>
<flag name="review"
          id="67776"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="67777"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>