<?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>106184</bug_id>
          
          <creation_ts>2013-01-05 14:06:12 -0800</creation_ts>
          <short_desc>sheriffbot can&apos;t tell me who &quot;kov&quot; is</short_desc>
          <delta_ts>2013-01-16 23:37:25 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Alan Cutter">alancutter</assigned_to>
          <cc>abarth</cc>
    
    <cc>alancutter</cc>
    
    <cc>dpranke</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800991</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-05 14:06:12 -0800</bug_when>
    <thetext>sheriffbot can&apos;t tell me who &quot;kov&quot; is

I don&apos;t know of anyway to get an exact match. :(

2:00 PM &lt;eseidel&gt; sheriffbot: whois kov
2:00 PM &lt;sheriffbot&gt; eseidel: More than 5 contributors match &apos;kov&apos;, could you be more specific?
2:01 PM &lt;eseidel&gt; sheriffbot: whois kov@
2:01 PM &lt;sheriffbot&gt; eseidel: I&apos;m not sure who you mean?  MPozdnyakov, dglazkov, or kov could be &apos;kov@&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801068</commentid>
    <comment_count>1</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-06 04:20:10 -0800</bug_when>
    <thetext>Adding the ability to use double-quotes for exact searches.

23:13:42 @alancutter | sheriffbot: whois kov
23:13:44  sheriffbot | alancutter: More than 5 contributors match &apos;kov&apos;, could you be more specific? Try using double-quotes for an exact search.
23:13:46 @alancutter | sheriffbot: whois kov@
23:13:54  sheriffbot | alancutter: I&apos;m not sure who you mean?  MPozdnyakov, dglazkov, or kov could be &apos;kov@&apos;. Try using double-quotes for an exact search.
23:14:00 @alancutter | sheriffbot: whois &quot;kov&quot;
23:14:04  sheriffbot | alancutter: kov is kov (gns@gnome.org, kov@webkit.org, gustavo.noronha@collabora.co.uk, gustavo.noronha@collabora.com). Why do you ask?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801108</commentid>
    <comment_count>2</comment_count>
      <attachid>181467</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-06 15:33:55 -0800</bug_when>
    <thetext>Created attachment 181467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801109</commentid>
    <comment_count>3</comment_count>
      <attachid>181467</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-06 16:04:40 -0800</bug_when>
    <thetext>Comment on attachment 181467
Patch

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

Looks reasonable.   I&apos;m not sure I would have added the quotes feature.  I might instead have just had SB prefer exact matches, and display them, while still teling them there were 5 other matches.  Or more generally SB could just display the best match always, and tell you that it has 5 more...

&gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:275
&gt; +                else:
&gt; +                    return &quot;%s: %s is %s. Why do you ask?&quot; % (nick, search_string, self._nick_or_full_record(contributor))

No else needed after return.  The &quot;Why do you ask&quot; is a bit silly, but I guess that&apos;s part of SB&apos;s &quot;personality&quot; :)

&gt; Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py:42
&gt; +        self.assertEqual(&apos;tom: Usage: whois SEARCH_STRING\t// Surround with double-quotes for exact match eg. &quot;username&quot;&apos;,

Is the // supposed to feel like a c++ comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801110</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-06 16:06:48 -0800</bug_when>
    <thetext>An example of what I might have done:

2:00 PM &lt;eseidel&gt; sheriffbot: whois kov
2:00 PM &lt;sherrifbot&gt; eseidel: The best match for kov is kov (gns@gnome.org, kov@webkit.org, gustavo.noronha@collabora.co.uk, gustavo.noronha@collabora.com).
2:00 PM &lt;sheriffbot&gt; eseidel: But 4 other contributors match &apos;kov&apos;, could you be more specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801112</commentid>
    <comment_count>5</comment_count>
      <attachid>181468</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-06 16:20:59 -0800</bug_when>
    <thetext>Created attachment 181468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801113</commentid>
    <comment_count>6</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-06 16:25:37 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 181467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181467&amp;action=review
&gt; 
&gt; Looks reasonable.   I&apos;m not sure I would have added the quotes feature.  I might instead have just had SB prefer exact matches, and display them, while still teling them there were 5 other matches.  Or more generally SB could just display the best match always, and tell you that it has 5 more...
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:275
&gt; &gt; +                else:
&gt; &gt; +                    return &quot;%s: %s is %s. Why do you ask?&quot; % (nick, search_string, self._nick_or_full_record(contributor))
&gt; 
&gt; No else needed after return.  The &quot;Why do you ask&quot; is a bit silly, but I guess that&apos;s part of SB&apos;s &quot;personality&quot; :)
&gt; 

Removed else statement (existing code).

&gt; &gt; Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py:42
&gt; &gt; +        self.assertEqual(&apos;tom: Usage: whois SEARCH_STRING\t// Surround with double-quotes for exact match eg. &quot;username&quot;&apos;,
&gt; 
&gt; Is the // supposed to feel like a c++ comment?

I was unsure of how to add extra information to the usage response. At the moment sheriffbot can only to one-liner replies. I have a mind to add the ability to do multiline replies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803947</commentid>
    <comment_count>7</comment_count>
      <attachid>181468</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-09 19:12:29 -0800</bug_when>
    <thetext>Comment on attachment 181468
Patch

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

&gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:245
&gt; +            return &apos;%s: Usage: whois SEARCH_STRING\t// Surround with double-quotes for exact match eg. &quot;username&quot;&apos; % nick

Don&apos;t use &quot;//&quot; for the help string, use parenthesis or something that is otherwise grammatically correct.

&gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:248
&gt;          contributors = CommitterList().contributors_by_search_string(search_string)

Most of this patch feels like logic that should be pushed into CommitterList (the &quot;model&quot;) rather than done here (the view/controller). The other irc commands are very thin wrappers around functionality present elsewhere in  webkitpy.

Also, I&apos;m at least a bit puzzled that, for this specific example, we wouldn&apos;t just return one match for &quot;kov&quot; and leave it at that. Personally I would&apos;ve just done a glob-style match across all of the string fields (so &quot;kov&quot; would match only kov@webkit.org and you&apos;d have to specify &quot;sheriffbot: whois *kov*&quot; to get a list of other possible matches. I would also be fine with returning results ranked in some way. The &quot;fuzzy by default but add additional code for exact matching&quot; feels like overkill to me, but I wouldn&apos;t r- the patch just for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809024</commentid>
    <comment_count>8</comment_count>
      <attachid>183106</attachid>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-16 20:31:13 -0800</bug_when>
    <thetext>Created attachment 183106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809025</commentid>
    <comment_count>9</comment_count>
    <who name="Alan Cutter">alancutter</who>
    <bug_when>2013-01-16 20:32:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 181468 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181468&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:245
&gt; &gt; +            return &apos;%s: Usage: whois SEARCH_STRING\t// Surround with double-quotes for exact match eg. &quot;username&quot;&apos; % nick
&gt; 
&gt; Don&apos;t use &quot;//&quot; for the help string, use parenthesis or something that is otherwise grammatically correct.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/irc_command.py:248
&gt; &gt;          contributors = CommitterList().contributors_by_search_string(search_string)
&gt; 
&gt; Most of this patch feels like logic that should be pushed into CommitterList (the &quot;model&quot;) rather than done here (the view/controller). The other irc commands are very thin wrappers around functionality present elsewhere in  webkitpy.
&gt; 
&gt; Also, I&apos;m at least a bit puzzled that, for this specific example, we wouldn&apos;t just return one match for &quot;kov&quot; and leave it at that. Personally I would&apos;ve just done a glob-style match across all of the string fields (so &quot;kov&quot; would match only kov@webkit.org and you&apos;d have to specify &quot;sheriffbot: whois *kov*&quot; to get a list of other possible matches. I would also be fine with returning results ranked in some way. The &quot;fuzzy by default but add additional code for exact matching&quot; feels like overkill to me, but I wouldn&apos;t r- the patch just for that.


Excellent suggestion! I switched to glob style searching with the original search in string method as a fallback and moved the logic to committers.py. The complexity of the patch was significantly reduced.
Amendment attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809092</commentid>
    <comment_count>10</comment_count>
      <attachid>183106</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-16 22:41:49 -0800</bug_when>
    <thetext>Comment on attachment 183106
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809123</commentid>
    <comment_count>11</comment_count>
      <attachid>183106</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 23:37:21 -0800</bug_when>
    <thetext>Comment on attachment 183106
Patch

Clearing flags on attachment: 183106

Committed r139969: &lt;http://trac.webkit.org/changeset/139969&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809124</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 23:37:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181467</attachid>
            <date>2013-01-06 15:33:55 -0800</date>
            <delta_ts>2013-01-06 16:20:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106184-20130107103059.patch</filename>
            <type>text/plain</type>
            <size>10736</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4OTE3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTg0ZWE4ZGJjMjI1OGQxYTJkOWJiMWRiY2RmMjQ2NGYy
MDc3NGMyMS4uYzJiMzkyYWZhMzE1MjU0ZGJiZWM3Mjg4YzU2YmJjNDQzYzEzZWYwOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEzLTAxLTA2ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZGVkIGFuIGV4YWN0IHNlYXJjaCBhYmlsaXR5IGZvciBzaGVyaWZmYm90IHdo
b2lzIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNjE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weToKKyAgICAgICAg
KFdob2lzKToKKyAgICAgICAgKFdob2lzLl9wYXJzZV9hcmdzKToKKyAgICAgICAgKFdob2lzLmV4
ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRf
dW5pdHRlc3QucHk6CisgICAgICAgIChJUkNDb21tYW5kVGVzdC50ZXN0X3dob2lzKToKKwogMjAx
My0wMS0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
c3ZuOmV4ZWN1dGFibGUgdG8gYSBidW5jaCBvZiBzY3JpcHRzIGluIEJ1aWxkU2xhdmVTdXBwb3J0
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFu
ZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkKaW5k
ZXggYjQzNjRjNTBmOWI3ODEwZjQyMDQzMjRjNzU4ZTJkYjg3NDQ0ZjVhZi4uZjUzMjg3ZmE5YTY5
ZjMyMGQ1NmUxYjBhMDIxNjY0MmY2OTYwZTFhMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CkBAIC0yMjIsMjggKzIyMiw2MCBAQCBjbGFzcyBX
aG9pcyhJUkNDb21tYW5kKToKICAgICAgICAgICAgIHJldHVybiAnLCAnLmpvaW4oY29udHJpYnV0
b3IuaXJjX25pY2tuYW1lcykKICAgICAgICAgcmV0dXJuIHVuaWNvZGUoY29udHJpYnV0b3IpCiAK
KyAgICAjIFJldHVybnMgdHVwbGUgKGlzX3ZhbGlkLCBleGFjdF9tYXRjaCwgc2VhcmNoX3N0cmlu
ZykKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9wYXJzZV9hcmdzKGFyZ3MpOgorICAgICAg
ICBpc192YWxpZCA9IFRydWUKKyAgICAgICAgc2VhcmNoX3N0cmluZyA9ICcgJy5qb2luKGFyZ3Mp
CisgICAgICAgIGV4YWN0X21hdGNoID0gbGVuKHNlYXJjaF9zdHJpbmcpID49IDMgYW5kIHNlYXJj
aF9zdHJpbmdbMF0gPT0gJyInIGFuZCBzZWFyY2hfc3RyaW5nWy0xXSA9PSAnIicKKyAgICAgICAg
aWYgZXhhY3RfbWF0Y2g6CisgICAgICAgICAgICBzZWFyY2hfc3RyaW5nID0gc2VhcmNoX3N0cmlu
Z1sxOi0xXQorICAgICAgICAgICAgaWYgJyInIGluIHNlYXJjaF9zdHJpbmc6CisgICAgICAgICAg
ICAgICAgaXNfdmFsaWQgPSBGYWxzZQorICAgICAgICBlbGlmIGxlbihhcmdzKSAhPSAxOgorICAg
ICAgICAgICAgaXNfdmFsaWQgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBpc192YWxpZDoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZSwgTm9uZQorICAgICAgICByZXR1cm4gVHJ1ZSwg
ZXhhY3RfbWF0Y2gsIHNlYXJjaF9zdHJpbmcKKwogICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ss
IGFyZ3MsIHRvb2wsIHNoZXJpZmYpOgotICAgICAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAg
ICAgICAgIHJldHVybiAiJXM6IFVzYWdlOiB3aG9pcyBTRUFSQ0hfU1RSSU5HIiAlIG5pY2sKLSAg
ICAgICAgc2VhcmNoX3N0cmluZyA9IGFyZ3NbMF0KKyAgICAgICAgaXNfdmFsaWQsIGV4YWN0X21h
dGNoLCBzZWFyY2hfc3RyaW5nID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICBpZiBu
b3QgaXNfdmFsaWQ6CisgICAgICAgICAgICByZXR1cm4gJyVzOiBVc2FnZTogd2hvaXMgU0VBUkNI
X1NUUklOR1x0Ly8gU3Vycm91bmQgd2l0aCBkb3VibGUtcXVvdGVzIGZvciBleGFjdCBtYXRjaCBl
Zy4gInVzZXJuYW1lIicgJSBuaWNrCisKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGdldCB0
aGUgQ29udHJpYnV0b3JMaXN0IG9mZiB0aGUgdG9vbCBzb21ld2hlcmUuCiAgICAgICAgIGNvbnRy
aWJ1dG9ycyA9IENvbW1pdHRlckxpc3QoKS5jb250cmlidXRvcnNfYnlfc2VhcmNoX3N0cmluZyhz
ZWFyY2hfc3RyaW5nKQotICAgICAgICBpZiBub3QgY29udHJpYnV0b3JzOgotICAgICAgICAgICAg
cmV0dXJuICIlczogU29ycnksIEkgZG9uJ3Qga25vdyBhbnkgY29udHJpYnV0b3JzIG1hdGNoaW5n
ICclcycuIiAlIChuaWNrLCBzZWFyY2hfc3RyaW5nKQotICAgICAgICBpZiBsZW4oY29udHJpYnV0
b3JzKSA+IDU6Ci0gICAgICAgICAgICByZXR1cm4gIiVzOiBNb3JlIHRoYW4gNSBjb250cmlidXRv
cnMgbWF0Y2ggJyVzJywgY291bGQgeW91IGJlIG1vcmUgc3BlY2lmaWM/IiAlIChuaWNrLCBzZWFy
Y2hfc3RyaW5nKQotICAgICAgICBpZiBsZW4oY29udHJpYnV0b3JzKSA9PSAxOgotICAgICAgICAg
ICAgY29udHJpYnV0b3IgPSBjb250cmlidXRvcnNbMF0KLSAgICAgICAgICAgIGlmIG5vdCBjb250
cmlidXRvci5pcmNfbmlja25hbWVzOgotICAgICAgICAgICAgICAgIHJldHVybiAiJXM6ICVzIGhh
c24ndCB0b2xkIG1lIHRoZWlyIG5pY2suIEJvbyBob28gOi0oIiAlIChuaWNrLCBjb250cmlidXRv
cikKLSAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLmVtYWlscyBhbmQgc2VhcmNoX3N0cmluZy5s
b3dlcigpIG5vdCBpbiBtYXAobGFtYmRhIGVtYWlsOiBlbWFpbC5sb3dlcigpLCBjb250cmlidXRv
ci5lbWFpbHMpOgotICAgICAgICAgICAgICAgIGZvcm1hdHRlZEVtYWlscyA9ICcsICcuam9pbihj
b250cmlidXRvci5lbWFpbHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMgaXMgJXMg
KCVzKS4gV2h5IGRvIHlvdSBhc2s/IiAlIChuaWNrLCBzZWFyY2hfc3RyaW5nLCBzZWxmLl9uaWNr
X29yX2Z1bGxfcmVjb3JkKGNvbnRyaWJ1dG9yKSwgZm9ybWF0dGVkRW1haWxzKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiAlcyBpcyAlcy4gV2h5IGRvIHlv
dSBhc2s/IiAlIChuaWNrLCBzZWFyY2hfc3RyaW5nLCBzZWxmLl9uaWNrX29yX2Z1bGxfcmVjb3Jk
KGNvbnRyaWJ1dG9yKSkKLSAgICAgICAgY29udHJpYnV0b3Jfbmlja3MgPSBtYXAoc2VsZi5fbmlj
a19vcl9mdWxsX3JlY29yZCwgY29udHJpYnV0b3JzKQotICAgICAgICBjb250cmlidXRvcnNfc3Ry
aW5nID0gam9pbl93aXRoX3NlcGFyYXRvcnMoY29udHJpYnV0b3Jfbmlja3MsIG9ubHlfdHdvX3Nl
cGFyYXRvcj0iIG9yICIsIGxhc3Rfc2VwYXJhdG9yPScsIG9yICcpCi0gICAgICAgIHJldHVybiAi
JXM6IEknbSBub3Qgc3VyZSB3aG8geW91IG1lYW4/ICAlcyBjb3VsZCBiZSAnJXMnLiIgJSAobmlj
aywgY29udHJpYnV0b3JzX3N0cmluZywgc2VhcmNoX3N0cmluZykKKworICAgICAgICBpZiBleGFj
dF9tYXRjaDoKKyAgICAgICAgICAgIGxvd2VyZWRfc2VhcmNoX3N0cmluZyA9IHNlYXJjaF9zdHJp
bmcubG93ZXIoKQorICAgICAgICAgICAgZm9yIGNvbnRyaWJ1dG9yIGluIGNvbnRyaWJ1dG9yczoK
KyAgICAgICAgICAgICAgICBpZiBsb3dlcmVkX3NlYXJjaF9zdHJpbmcgPT0gY29udHJpYnV0b3Iu
ZnVsbF9uYW1lLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZEVtYWlscyA9
ICcsICcuam9pbihjb250cmlidXRvci5lbWFpbHMpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAnJXM6ICIlcyIgaXMgJXMgKCVzKS4gV2h5IGRvIHlvdSBhc2s/JyAlIChuaWNrLCBzZWFyY2hf
c3RyaW5nLCBzZWxmLl9uaWNrX29yX2Z1bGxfcmVjb3JkKGNvbnRyaWJ1dG9yKSwgZm9ybWF0dGVk
RW1haWxzKQorICAgICAgICAgICAgICAgIGVsaWYgbG93ZXJlZF9zZWFyY2hfc3RyaW5nIGluIG1h
cChsYW1iZGEgZW1haWw6IGVtYWlsLmxvd2VyKCksIGNvbnRyaWJ1dG9yLmVtYWlscyk6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAnJXM6ICIlcyIgaXMgJXMuIFdoeSBkbyB5b3UgYXNrPycg
JSAobmljaywgc2VhcmNoX3N0cmluZywgc2VsZi5fbmlja19vcl9mdWxsX3JlY29yZChjb250cmli
dXRvcikpCisgICAgICAgICAgICAgICAgZWxpZiBjb250cmlidXRvci5pcmNfbmlja25hbWVzIGFu
ZCBsb3dlcmVkX3NlYXJjaF9zdHJpbmcgaW4gY29udHJpYnV0b3IuaXJjX25pY2tuYW1lczoKKyAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRW1haWxzID0gJywgJy5qb2luKGNvbnRyaWJ1dG9y
LmVtYWlscykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICclczogIiVzIiBpcyAlcyAoJXMp
LiBXaHkgZG8geW91IGFzaz8nICUgKG5pY2ssIHNlYXJjaF9zdHJpbmcsIHNlbGYuX25pY2tfb3Jf
ZnVsbF9yZWNvcmQoY29udHJpYnV0b3IpLCBmb3JtYXR0ZWRFbWFpbHMpCisgICAgICAgICAgICBy
ZXR1cm4gJyVzOiBTb3JyeSwgSSBkb25cJ3Qga25vdyBhbnkgY29udHJpYnV0b3JzIG1hdGNoaW5n
ICIlcyIuIFRyeSB3aXRob3V0IGRvdWJsZS1xdW90ZXMgZm9yIGEgYnJvYWRlciBzZWFyY2guJyAl
IChuaWNrLCBzZWFyY2hfc3RyaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90
IGNvbnRyaWJ1dG9yczoKKyAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiBTb3JyeSwgSSBkb24n
dCBrbm93IGFueSBjb250cmlidXRvcnMgbWF0Y2hpbmcgJyVzJy4iICUgKG5pY2ssIHNlYXJjaF9z
dHJpbmcpCisgICAgICAgICAgICBpZiBsZW4oY29udHJpYnV0b3JzKSA+IDU6CisgICAgICAgICAg
ICAgICAgcmV0dXJuICIlczogTW9yZSB0aGFuIDUgY29udHJpYnV0b3JzIG1hdGNoICclcycsIGNv
dWxkIHlvdSBiZSBtb3JlIHNwZWNpZmljPyBUcnkgdXNpbmcgZG91YmxlLXF1b3RlcyBmb3IgYW4g
ZXhhY3Qgc2VhcmNoLiIgJSAobmljaywgc2VhcmNoX3N0cmluZykKKyAgICAgICAgICAgIGlmIGxl
bihjb250cmlidXRvcnMpID09IDE6CisgICAgICAgICAgICAgICAgY29udHJpYnV0b3IgPSBjb250
cmlidXRvcnNbMF0KKyAgICAgICAgICAgICAgICBpZiBub3QgY29udHJpYnV0b3IuaXJjX25pY2tu
YW1lczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMgaGFzbid0IHRvbGQgbWUg
dGhlaXIgbmljay4gQm9vIGhvbyA6LSgiICUgKG5pY2ssIGNvbnRyaWJ1dG9yKQorICAgICAgICAg
ICAgICAgIGlmIGNvbnRyaWJ1dG9yLmVtYWlscyBhbmQgc2VhcmNoX3N0cmluZy5sb3dlcigpIG5v
dCBpbiBtYXAobGFtYmRhIGVtYWlsOiBlbWFpbC5sb3dlcigpLCBjb250cmlidXRvci5lbWFpbHMp
OgorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFbWFpbHMgPSAnLCAnLmpvaW4oY29udHJp
YnV0b3IuZW1haWxzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiAlcyBpcyAlcyAo
JXMpLiBXaHkgZG8geW91IGFzaz8iICUgKG5pY2ssIHNlYXJjaF9zdHJpbmcsIHNlbGYuX25pY2tf
b3JfZnVsbF9yZWNvcmQoY29udHJpYnV0b3IpLCBmb3JtYXR0ZWRFbWFpbHMpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMgaXMgJXMuIFdo
eSBkbyB5b3UgYXNrPyIgJSAobmljaywgc2VhcmNoX3N0cmluZywgc2VsZi5fbmlja19vcl9mdWxs
X3JlY29yZChjb250cmlidXRvcikpCisgICAgICAgICAgICBjb250cmlidXRvcl9uaWNrcyA9IG1h
cChzZWxmLl9uaWNrX29yX2Z1bGxfcmVjb3JkLCBjb250cmlidXRvcnMpCisgICAgICAgICAgICBj
b250cmlidXRvcnNfc3RyaW5nID0gam9pbl93aXRoX3NlcGFyYXRvcnMoY29udHJpYnV0b3Jfbmlj
a3MsIG9ubHlfdHdvX3NlcGFyYXRvcj0iIG9yICIsIGxhc3Rfc2VwYXJhdG9yPScsIG9yICcpCisg
ICAgICAgICAgICByZXR1cm4gIiVzOiBJJ20gbm90IHN1cmUgd2hvIHlvdSBtZWFuPyAgJXMgY291
bGQgYmUgJyVzJy4gVHJ5IHVzaW5nIGRvdWJsZS1xdW90ZXMgZm9yIGFuIGV4YWN0IHNlYXJjaC4i
ICUgKG5pY2ssIGNvbnRyaWJ1dG9yc19zdHJpbmcsIHNlYXJjaF9zdHJpbmcpCiAKIAogY2xhc3Mg
Q3JlYXRlQnVnKElSQ0NvbW1hbmQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3QucHkKaW5kZXggMjc3NWQ4MDc3NzM0MjQ0
ZmRlMzE2NjQ5MTIzN2EyY2ZhOTIxNDRjZC4uYWZjNGU3M2M0YzM5MzYyMjQ0NjNmNTg0NmI1MTE5
Njc4ZDc5NmI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9p
cmNfY29tbWFuZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2lyY19jb21tYW5kX3VuaXR0ZXN0LnB5CkBAIC0zOCw5ICszOCwzNCBAQCBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGNs
YXNzIElSQ0NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF93aG9p
cyhzZWxmKToKICAgICAgICAgd2hvaXMgPSBXaG9pcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoInRvbTogVXNhZ2U6IHdob2lzIFNFQVJDSF9TVFJJTkciLAorICAgICAgICAjIEV4YWN0IHNl
YXJjaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogVXNhZ2U6IHdob2lzIFNFQVJD
SF9TVFJJTkdcdC8vIFN1cnJvdW5kIHdpdGggZG91YmxlLXF1b3RlcyBmb3IgZXhhY3QgbWF0Y2gg
ZWcuICJ1c2VybmFtZSInLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9pcy5leGVjdXRl
KCJ0b20iLCBbJyJBZGFtIicsICJCYXJ0aCJdLCBOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgndG9tOiBTb3JyeSwgSSBkb25cJ3Qga25vdyBhbnkgY29udHJpYnV0b3JzIG1h
dGNoaW5nICJObyBCb2R5Ii4gVHJ5IHdpdGhvdXQgZG91YmxlLXF1b3RlcyBmb3IgYSBicm9hZGVy
IHNlYXJjaC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20i
LCBbJyJObycsICdCb2R5IiddLCBOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgndG9tOiAiQWRhbSBCYXJ0aCIgaXMgYWJhcnRoIChhYmFydGhAd2Via2l0Lm9yZykuIFdoeSBk
byB5b3UgYXNrPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRv
bSIsIFsnIkFkYW0nLCAnQmFydGgiJ10sIE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCd0b206ICJBZEFtIEJhUnRIIiBpcyBhYmFydGggKGFiYXJ0aEB3ZWJraXQub3JnKS4g
V2h5IGRvIHlvdSBhc2s/JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0
ZSgidG9tIiwgWyciQWRBbScsICdCYVJ0SCInXSwgTm9uZSwgTm9uZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3RvbTogU29ycnksIEkgZG9uXCd0IGtub3cgYW55IGNvbnRyaWJ1dG9ycyBt
YXRjaGluZyAidW5rbm93bkBleGFtcGxlLmNvbSIuIFRyeSB3aXRob3V0IGRvdWJsZS1xdW90ZXMg
Zm9yIGEgYnJvYWRlciBzZWFyY2guJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMu
ZXhlY3V0ZSgidG9tIiwgWycidW5rbm93bkBleGFtcGxlLmNvbSInXSwgTm9uZSwgTm9uZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogImFkZW1hckB3ZWJraXQub3JnIiBpcyBhZGVt
YXIuIFdoeSBkbyB5b3UgYXNrPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4
ZWN1dGUoInRvbSIsIFsnImFkZW1hckB3ZWJraXQub3JnIiddLCBOb25lLCBOb25lKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiAiYWRlbWFyLnJlaXNAZ21haWwuY29tIiBpcyBhZGVt
YXIuIFdoeSBkbyB5b3UgYXNrPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4
ZWN1dGUoInRvbSIsIFsnImFkZW1hci5yZWlzQGdtYWlsLmNvbSInXSwgTm9uZSwgTm9uZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogImVWYU5AQ2hSb01pVW0ub1JnIiBpcyBldm1h
ci4gV2h5IGRvIHlvdSBhc2s/JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMuZXhl
Y3V0ZSgidG9tIiwgWyciZVZhTkBDaFJvTWlVbS5vUmciJ10sIE5vbmUsIE5vbmUpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCd0b206IFNvcnJ5LCBJIGRvblwndCBrbm93IGFueSBjb250cmli
dXRvcnMgbWF0Y2hpbmcgInVua25vd25faXJjX25pY2siLiBUcnkgd2l0aG91dCBkb3VibGUtcXVv
dGVzIGZvciBhIGJyb2FkZXIgc2VhcmNoLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
b2lzLmV4ZWN1dGUoInRvbSIsIFsnInVua25vd25faXJjX25pY2siJ10sIE5vbmUsIE5vbmUpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206ICJrb3YiIGlzIGtvdiAoZ25zQGdub21lLm9y
Zywga292QHdlYmtpdC5vcmcsIGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWssIGd1c3Rh
dm8ubm9yb25oYUBjb2xsYWJvcmEuY29tKS4gV2h5IGRvIHlvdSBhc2s/JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9tIiwgWycia292IiddLCBOb25lLCBOb25l
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiAiYWxwIiBpcyBhbHAgKGFscEBudWFu
dGkuY29tLCBhbHBAYXRva2VyLmNvbSwgYWxwQHdlYmtpdC5vcmcpLiBXaHkgZG8geW91IGFzaz8n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBbJyJhbHAi
J10sIE5vbmUsIE5vbmUpKQorCisgICAgICAgICMgSW5leGFjdCBzZWFyY2hlcworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCd0b206IFVzYWdlOiB3aG9pcyBTRUFSQ0hfU1RSSU5HXHQvLyBTdXJy
b3VuZCB3aXRoIGRvdWJsZS1xdW90ZXMgZm9yIGV4YWN0IG1hdGNoIGVnLiAidXNlcm5hbWUiJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9tIiwgW10sIE5vbmUs
IE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0b206IFVzYWdlOiB3aG9pcyBTRUFS
Q0hfU1RSSU5HIiwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiBVc2FnZTogd2hvaXMg
U0VBUkNIX1NUUklOR1x0Ly8gU3Vycm91bmQgd2l0aCBkb3VibGUtcXVvdGVzIGZvciBleGFjdCBt
YXRjaCBlZy4gInVzZXJuYW1lIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4
ZWN1dGUoInRvbSIsIFsiQWRhbSIsICJCYXJ0aCJdLCBOb25lLCBOb25lKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgidG9tOiBTb3JyeSwgSSBkb24ndCBrbm93IGFueSBjb250cmlidXRvcnMg
bWF0Y2hpbmcgJ3Vua25vd25AZXhhbXBsZS5jb20nLiIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsidW5rbm93bkBleGFtcGxlLmNvbSJdLCBOb25lLCBO
b25lKSkKQEAgLTU0LDkgKzc5LDkgQEAgY2xhc3MgSVJDQ29tbWFuZFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBb
ImxvcGV6Il0sIE5vbmUsIE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206ICJW
aWNraSBNdXJsZXkiIDx2aWNraUBhcHBsZS5jb20+IGhhc25cJ3QgdG9sZCBtZSB0aGVpciBuaWNr
LiBCb28gaG9vIDotKCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUo
InRvbSIsIFsidmlja2lAYXBwbGUuY29tIl0sIE5vbmUsIE5vbmUpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCd0b206IElcJ20gbm90IHN1cmUgd2hvIHlvdSBtZWFuPyAgZ2F2aW5wIG9yIGdi
YXJyYSBjb3VsZCBiZSBcJ0dhdmluXCcuJywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9t
OiBJXCdtIG5vdCBzdXJlIHdobyB5b3UgbWVhbj8gIGdhdmlucCBvciBnYmFycmEgY291bGQgYmUg
XCdHYXZpblwnLiBUcnkgdXNpbmcgZG91YmxlLXF1b3RlcyBmb3IgYW4gZXhhY3Qgc2VhcmNoLics
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsiR2F2aW4i
XSwgTm9uZSwgTm9uZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogTW9yZSB0aGFu
IDUgY29udHJpYnV0b3JzIG1hdGNoIFwnZGF2aWRcJywgY291bGQgeW91IGJlIG1vcmUgc3BlY2lm
aWM/JywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiBNb3JlIHRoYW4gNSBjb250cmli
dXRvcnMgbWF0Y2ggXCdkYXZpZFwnLCBjb3VsZCB5b3UgYmUgbW9yZSBzcGVjaWZpYz8gVHJ5IHVz
aW5nIGRvdWJsZS1xdW90ZXMgZm9yIGFuIGV4YWN0IHNlYXJjaC4nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBbImRhdmlkIl0sIE5vbmUsIE5vbmUpKQog
CiAgICAgQHN0YXRpY21ldGhvZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181468</attachid>
            <date>2013-01-06 16:20:59 -0800</date>
            <delta_ts>2013-01-16 20:31:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106184-20130107111803.patch</filename>
            <type>text/plain</type>
            <size>10589</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4OTE3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTg0ZWE4ZGJjMjI1OGQxYTJkOWJiMWRiY2RmMjQ2NGYy
MDc3NGMyMS4uYzJiMzkyYWZhMzE1MjU0ZGJiZWM3Mjg4YzU2YmJjNDQzYzEzZWYwOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEzLTAxLTA2ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZGVkIGFuIGV4YWN0IHNlYXJjaCBhYmlsaXR5IGZvciBzaGVyaWZmYm90IHdo
b2lzIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNjE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weToKKyAgICAgICAg
KFdob2lzKToKKyAgICAgICAgKFdob2lzLl9wYXJzZV9hcmdzKToKKyAgICAgICAgKFdob2lzLmV4
ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRf
dW5pdHRlc3QucHk6CisgICAgICAgIChJUkNDb21tYW5kVGVzdC50ZXN0X3dob2lzKToKKwogMjAx
My0wMS0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
c3ZuOmV4ZWN1dGFibGUgdG8gYSBidW5jaCBvZiBzY3JpcHRzIGluIEJ1aWxkU2xhdmVTdXBwb3J0
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFu
ZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkKaW5k
ZXggYjQzNjRjNTBmOWI3ODEwZjQyMDQzMjRjNzU4ZTJkYjg3NDQ0ZjVhZi4uZjA1OTUwMWIwYThm
YmM4NzNhNTc2M2I2M2VjMjQ5NjI4ZjIzNDA1OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CkBAIC0yMjIsMjggKzIyMiw1OSBAQCBjbGFzcyBX
aG9pcyhJUkNDb21tYW5kKToKICAgICAgICAgICAgIHJldHVybiAnLCAnLmpvaW4oY29udHJpYnV0
b3IuaXJjX25pY2tuYW1lcykKICAgICAgICAgcmV0dXJuIHVuaWNvZGUoY29udHJpYnV0b3IpCiAK
KyAgICAjIFJldHVybnMgdHVwbGUgKGlzX3ZhbGlkLCBleGFjdF9tYXRjaCwgc2VhcmNoX3N0cmlu
ZykKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9wYXJzZV9hcmdzKGFyZ3MpOgorICAgICAg
ICBpc192YWxpZCA9IFRydWUKKyAgICAgICAgc2VhcmNoX3N0cmluZyA9ICcgJy5qb2luKGFyZ3Mp
CisgICAgICAgIGV4YWN0X21hdGNoID0gbGVuKHNlYXJjaF9zdHJpbmcpID49IDMgYW5kIHNlYXJj
aF9zdHJpbmdbMF0gPT0gJyInIGFuZCBzZWFyY2hfc3RyaW5nWy0xXSA9PSAnIicKKyAgICAgICAg
aWYgZXhhY3RfbWF0Y2g6CisgICAgICAgICAgICBzZWFyY2hfc3RyaW5nID0gc2VhcmNoX3N0cmlu
Z1sxOi0xXQorICAgICAgICAgICAgaWYgJyInIGluIHNlYXJjaF9zdHJpbmc6CisgICAgICAgICAg
ICAgICAgaXNfdmFsaWQgPSBGYWxzZQorICAgICAgICBlbGlmIGxlbihhcmdzKSAhPSAxOgorICAg
ICAgICAgICAgaXNfdmFsaWQgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBpc192YWxpZDoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZSwgTm9uZQorICAgICAgICByZXR1cm4gVHJ1ZSwg
ZXhhY3RfbWF0Y2gsIHNlYXJjaF9zdHJpbmcKKwogICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ss
IGFyZ3MsIHRvb2wsIHNoZXJpZmYpOgotICAgICAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAg
ICAgICAgIHJldHVybiAiJXM6IFVzYWdlOiB3aG9pcyBTRUFSQ0hfU1RSSU5HIiAlIG5pY2sKLSAg
ICAgICAgc2VhcmNoX3N0cmluZyA9IGFyZ3NbMF0KKyAgICAgICAgaXNfdmFsaWQsIGV4YWN0X21h
dGNoLCBzZWFyY2hfc3RyaW5nID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICBpZiBu
b3QgaXNfdmFsaWQ6CisgICAgICAgICAgICByZXR1cm4gJyVzOiBVc2FnZTogd2hvaXMgU0VBUkNI
X1NUUklOR1x0Ly8gU3Vycm91bmQgd2l0aCBkb3VibGUtcXVvdGVzIGZvciBleGFjdCBtYXRjaCBl
Zy4gInVzZXJuYW1lIicgJSBuaWNrCisKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGdldCB0
aGUgQ29udHJpYnV0b3JMaXN0IG9mZiB0aGUgdG9vbCBzb21ld2hlcmUuCiAgICAgICAgIGNvbnRy
aWJ1dG9ycyA9IENvbW1pdHRlckxpc3QoKS5jb250cmlidXRvcnNfYnlfc2VhcmNoX3N0cmluZyhz
ZWFyY2hfc3RyaW5nKQotICAgICAgICBpZiBub3QgY29udHJpYnV0b3JzOgotICAgICAgICAgICAg
cmV0dXJuICIlczogU29ycnksIEkgZG9uJ3Qga25vdyBhbnkgY29udHJpYnV0b3JzIG1hdGNoaW5n
ICclcycuIiAlIChuaWNrLCBzZWFyY2hfc3RyaW5nKQotICAgICAgICBpZiBsZW4oY29udHJpYnV0
b3JzKSA+IDU6Ci0gICAgICAgICAgICByZXR1cm4gIiVzOiBNb3JlIHRoYW4gNSBjb250cmlidXRv
cnMgbWF0Y2ggJyVzJywgY291bGQgeW91IGJlIG1vcmUgc3BlY2lmaWM/IiAlIChuaWNrLCBzZWFy
Y2hfc3RyaW5nKQotICAgICAgICBpZiBsZW4oY29udHJpYnV0b3JzKSA9PSAxOgotICAgICAgICAg
ICAgY29udHJpYnV0b3IgPSBjb250cmlidXRvcnNbMF0KLSAgICAgICAgICAgIGlmIG5vdCBjb250
cmlidXRvci5pcmNfbmlja25hbWVzOgotICAgICAgICAgICAgICAgIHJldHVybiAiJXM6ICVzIGhh
c24ndCB0b2xkIG1lIHRoZWlyIG5pY2suIEJvbyBob28gOi0oIiAlIChuaWNrLCBjb250cmlidXRv
cikKLSAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLmVtYWlscyBhbmQgc2VhcmNoX3N0cmluZy5s
b3dlcigpIG5vdCBpbiBtYXAobGFtYmRhIGVtYWlsOiBlbWFpbC5sb3dlcigpLCBjb250cmlidXRv
ci5lbWFpbHMpOgotICAgICAgICAgICAgICAgIGZvcm1hdHRlZEVtYWlscyA9ICcsICcuam9pbihj
b250cmlidXRvci5lbWFpbHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMgaXMgJXMg
KCVzKS4gV2h5IGRvIHlvdSBhc2s/IiAlIChuaWNrLCBzZWFyY2hfc3RyaW5nLCBzZWxmLl9uaWNr
X29yX2Z1bGxfcmVjb3JkKGNvbnRyaWJ1dG9yKSwgZm9ybWF0dGVkRW1haWxzKQotICAgICAgICAg
ICAgZWxzZToKKworICAgICAgICBpZiBleGFjdF9tYXRjaDoKKyAgICAgICAgICAgIGxvd2VyZWRf
c2VhcmNoX3N0cmluZyA9IHNlYXJjaF9zdHJpbmcubG93ZXIoKQorICAgICAgICAgICAgZm9yIGNv
bnRyaWJ1dG9yIGluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAgICAgICAgICBpZiBsb3dlcmVkX3Nl
YXJjaF9zdHJpbmcgPT0gY29udHJpYnV0b3IuZnVsbF9uYW1lLmxvd2VyKCk6CisgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdHRlZEVtYWlscyA9ICcsICcuam9pbihjb250cmlidXRvci5lbWFpbHMp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXM6ICIlcyIgaXMgJXMgKCVzKS4gV2h5IGRv
IHlvdSBhc2s/JyAlIChuaWNrLCBzZWFyY2hfc3RyaW5nLCBzZWxmLl9uaWNrX29yX2Z1bGxfcmVj
b3JkKGNvbnRyaWJ1dG9yKSwgZm9ybWF0dGVkRW1haWxzKQorICAgICAgICAgICAgICAgIGVsaWYg
bG93ZXJlZF9zZWFyY2hfc3RyaW5nIGluIG1hcChsYW1iZGEgZW1haWw6IGVtYWlsLmxvd2VyKCks
IGNvbnRyaWJ1dG9yLmVtYWlscyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXM6ICIl
cyIgaXMgJXMuIFdoeSBkbyB5b3UgYXNrPycgJSAobmljaywgc2VhcmNoX3N0cmluZywgc2VsZi5f
bmlja19vcl9mdWxsX3JlY29yZChjb250cmlidXRvcikpCisgICAgICAgICAgICAgICAgZWxpZiBj
b250cmlidXRvci5pcmNfbmlja25hbWVzIGFuZCBsb3dlcmVkX3NlYXJjaF9zdHJpbmcgaW4gY29u
dHJpYnV0b3IuaXJjX25pY2tuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRW1h
aWxzID0gJywgJy5qb2luKGNvbnRyaWJ1dG9yLmVtYWlscykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICclczogIiVzIiBpcyAlcyAoJXMpLiBXaHkgZG8geW91IGFzaz8nICUgKG5pY2ssIHNl
YXJjaF9zdHJpbmcsIHNlbGYuX25pY2tfb3JfZnVsbF9yZWNvcmQoY29udHJpYnV0b3IpLCBmb3Jt
YXR0ZWRFbWFpbHMpCisgICAgICAgICAgICByZXR1cm4gJyVzOiBTb3JyeSwgSSBkb25cJ3Qga25v
dyBhbnkgY29udHJpYnV0b3JzIG1hdGNoaW5nICIlcyIuIFRyeSB3aXRob3V0IGRvdWJsZS1xdW90
ZXMgZm9yIGEgYnJvYWRlciBzZWFyY2guJyAlIChuaWNrLCBzZWFyY2hfc3RyaW5nKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGNvbnRyaWJ1dG9yczoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIiVzOiBTb3JyeSwgSSBkb24ndCBrbm93IGFueSBjb250cmlidXRvcnMgbWF0Y2hp
bmcgJyVzJy4iICUgKG5pY2ssIHNlYXJjaF9zdHJpbmcpCisgICAgICAgICAgICBpZiBsZW4oY29u
dHJpYnV0b3JzKSA+IDU6CisgICAgICAgICAgICAgICAgcmV0dXJuICIlczogTW9yZSB0aGFuIDUg
Y29udHJpYnV0b3JzIG1hdGNoICclcycsIGNvdWxkIHlvdSBiZSBtb3JlIHNwZWNpZmljPyBUcnkg
dXNpbmcgZG91YmxlLXF1b3RlcyBmb3IgYW4gZXhhY3Qgc2VhcmNoLiIgJSAobmljaywgc2VhcmNo
X3N0cmluZykKKyAgICAgICAgICAgIGlmIGxlbihjb250cmlidXRvcnMpID09IDE6CisgICAgICAg
ICAgICAgICAgY29udHJpYnV0b3IgPSBjb250cmlidXRvcnNbMF0KKyAgICAgICAgICAgICAgICBp
ZiBub3QgY29udHJpYnV0b3IuaXJjX25pY2tuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICIlczogJXMgaGFzbid0IHRvbGQgbWUgdGhlaXIgbmljay4gQm9vIGhvbyA6LSgiICUgKG5p
Y2ssIGNvbnRyaWJ1dG9yKQorICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yLmVtYWlscyBh
bmQgc2VhcmNoX3N0cmluZy5sb3dlcigpIG5vdCBpbiBtYXAobGFtYmRhIGVtYWlsOiBlbWFpbC5s
b3dlcigpLCBjb250cmlidXRvci5lbWFpbHMpOgorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRFbWFpbHMgPSAnLCAnLmpvaW4oY29udHJpYnV0b3IuZW1haWxzKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gIiVzOiAlcyBpcyAlcyAoJXMpLiBXaHkgZG8geW91IGFzaz8iICUgKG5pY2ss
IHNlYXJjaF9zdHJpbmcsIHNlbGYuX25pY2tfb3JfZnVsbF9yZWNvcmQoY29udHJpYnV0b3IpLCBm
b3JtYXR0ZWRFbWFpbHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMgaXMgJXMuIFdo
eSBkbyB5b3UgYXNrPyIgJSAobmljaywgc2VhcmNoX3N0cmluZywgc2VsZi5fbmlja19vcl9mdWxs
X3JlY29yZChjb250cmlidXRvcikpCi0gICAgICAgIGNvbnRyaWJ1dG9yX25pY2tzID0gbWFwKHNl
bGYuX25pY2tfb3JfZnVsbF9yZWNvcmQsIGNvbnRyaWJ1dG9ycykKLSAgICAgICAgY29udHJpYnV0
b3JzX3N0cmluZyA9IGpvaW5fd2l0aF9zZXBhcmF0b3JzKGNvbnRyaWJ1dG9yX25pY2tzLCBvbmx5
X3R3b19zZXBhcmF0b3I9IiBvciAiLCBsYXN0X3NlcGFyYXRvcj0nLCBvciAnKQotICAgICAgICBy
ZXR1cm4gIiVzOiBJJ20gbm90IHN1cmUgd2hvIHlvdSBtZWFuPyAgJXMgY291bGQgYmUgJyVzJy4i
ICUgKG5pY2ssIGNvbnRyaWJ1dG9yc19zdHJpbmcsIHNlYXJjaF9zdHJpbmcpCisgICAgICAgICAg
ICBjb250cmlidXRvcl9uaWNrcyA9IG1hcChzZWxmLl9uaWNrX29yX2Z1bGxfcmVjb3JkLCBjb250
cmlidXRvcnMpCisgICAgICAgICAgICBjb250cmlidXRvcnNfc3RyaW5nID0gam9pbl93aXRoX3Nl
cGFyYXRvcnMoY29udHJpYnV0b3Jfbmlja3MsIG9ubHlfdHdvX3NlcGFyYXRvcj0iIG9yICIsIGxh
c3Rfc2VwYXJhdG9yPScsIG9yICcpCisgICAgICAgICAgICByZXR1cm4gIiVzOiBJJ20gbm90IHN1
cmUgd2hvIHlvdSBtZWFuPyAgJXMgY291bGQgYmUgJyVzJy4gVHJ5IHVzaW5nIGRvdWJsZS1xdW90
ZXMgZm9yIGFuIGV4YWN0IHNlYXJjaC4iICUgKG5pY2ssIGNvbnRyaWJ1dG9yc19zdHJpbmcsIHNl
YXJjaF9zdHJpbmcpCiAKIAogY2xhc3MgQ3JlYXRlQnVnKElSQ0NvbW1hbmQpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3Qu
cHkKaW5kZXggMjc3NWQ4MDc3NzM0MjQ0ZmRlMzE2NjQ5MTIzN2EyY2ZhOTIxNDRjZC4uYWZjNGU3
M2M0YzM5MzYyMjQ0NjNmNTg0NmI1MTE5Njc4ZDc5NmI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kX3VuaXR0ZXN0LnB5CkBAIC0z
OCw5ICszOCwzNCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUKIGNsYXNzIElSQ0NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF93aG9pcyhzZWxmKToKICAgICAgICAgd2hvaXMgPSBXaG9pcygp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRvbTogVXNhZ2U6IHdob2lzIFNFQVJDSF9TVFJJ
TkciLAorICAgICAgICAjIEV4YWN0IHNlYXJjaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3RvbTogVXNhZ2U6IHdob2lzIFNFQVJDSF9TVFJJTkdcdC8vIFN1cnJvdW5kIHdpdGggZG91Ymxl
LXF1b3RlcyBmb3IgZXhhY3QgbWF0Y2ggZWcuICJ1c2VybmFtZSInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBbJyJBZGFtIicsICJCYXJ0aCJdLCBOb25l
LCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiBTb3JyeSwgSSBkb25cJ3Qg
a25vdyBhbnkgY29udHJpYnV0b3JzIG1hdGNoaW5nICJObyBCb2R5Ii4gVHJ5IHdpdGhvdXQgZG91
YmxlLXF1b3RlcyBmb3IgYSBicm9hZGVyIHNlYXJjaC4nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBbJyJObycsICdCb2R5IiddLCBOb25lLCBOb25lKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiAiQWRhbSBCYXJ0aCIgaXMgYWJhcnRoIChh
YmFydGhAd2Via2l0Lm9yZykuIFdoeSBkbyB5b3UgYXNrPycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsnIkFkYW0nLCAnQmFydGgiJ10sIE5vbmUsIE5v
bmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206ICJBZEFtIEJhUnRIIiBpcyBhYmFy
dGggKGFiYXJ0aEB3ZWJraXQub3JnKS4gV2h5IGRvIHlvdSBhc2s/JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9tIiwgWyciQWRBbScsICdCYVJ0SCInXSwgTm9u
ZSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogU29ycnksIEkgZG9uXCd0
IGtub3cgYW55IGNvbnRyaWJ1dG9ycyBtYXRjaGluZyAidW5rbm93bkBleGFtcGxlLmNvbSIuIFRy
eSB3aXRob3V0IGRvdWJsZS1xdW90ZXMgZm9yIGEgYnJvYWRlciBzZWFyY2guJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9tIiwgWycidW5rbm93bkBleGFtcGxl
LmNvbSInXSwgTm9uZSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogImFk
ZW1hckB3ZWJraXQub3JnIiBpcyBhZGVtYXIuIFdoeSBkbyB5b3UgYXNrPycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsnImFkZW1hckB3ZWJraXQub3Jn
IiddLCBOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiAiYWRlbWFy
LnJlaXNAZ21haWwuY29tIiBpcyBhZGVtYXIuIFdoeSBkbyB5b3UgYXNrPycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsnImFkZW1hci5yZWlzQGdtYWls
LmNvbSInXSwgTm9uZSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3RvbTogImVW
YU5AQ2hSb01pVW0ub1JnIiBpcyBldm1hci4gV2h5IGRvIHlvdSBhc2s/JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9tIiwgWyciZVZhTkBDaFJvTWlVbS5vUmci
J10sIE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206IFNvcnJ5LCBJ
IGRvblwndCBrbm93IGFueSBjb250cmlidXRvcnMgbWF0Y2hpbmcgInVua25vd25faXJjX25pY2si
LiBUcnkgd2l0aG91dCBkb3VibGUtcXVvdGVzIGZvciBhIGJyb2FkZXIgc2VhcmNoLicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsnInVua25vd25faXJj
X25pY2siJ10sIE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206ICJr
b3YiIGlzIGtvdiAoZ25zQGdub21lLm9yZywga292QHdlYmtpdC5vcmcsIGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWssIGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tKS4gV2h5IGRv
IHlvdSBhc2s/JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMuZXhlY3V0ZSgidG9t
IiwgWycia292IiddLCBOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndG9t
OiAiYWxwIiBpcyBhbHAgKGFscEBudWFudGkuY29tLCBhbHBAYXRva2VyLmNvbSwgYWxwQHdlYmtp
dC5vcmcpLiBXaHkgZG8geW91IGFzaz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9p
cy5leGVjdXRlKCJ0b20iLCBbJyJhbHAiJ10sIE5vbmUsIE5vbmUpKQorCisgICAgICAgICMgSW5l
eGFjdCBzZWFyY2hlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206IFVzYWdlOiB3aG9p
cyBTRUFSQ0hfU1RSSU5HXHQvLyBTdXJyb3VuZCB3aXRoIGRvdWJsZS1xdW90ZXMgZm9yIGV4YWN0
IG1hdGNoIGVnLiAidXNlcm5hbWUiJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvaXMu
ZXhlY3V0ZSgidG9tIiwgW10sIE5vbmUsIE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCJ0b206IFVzYWdlOiB3aG9pcyBTRUFSQ0hfU1RSSU5HIiwKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgndG9tOiBVc2FnZTogd2hvaXMgU0VBUkNIX1NUUklOR1x0Ly8gU3Vycm91bmQgd2l0aCBk
b3VibGUtcXVvdGVzIGZvciBleGFjdCBtYXRjaCBlZy4gInVzZXJuYW1lIicsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsiQWRhbSIsICJCYXJ0aCJdLCBO
b25lLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidG9tOiBTb3JyeSwgSSBkb24n
dCBrbm93IGFueSBjb250cmlidXRvcnMgbWF0Y2hpbmcgJ3Vua25vd25AZXhhbXBsZS5jb20nLiIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsidW5rbm93
bkBleGFtcGxlLmNvbSJdLCBOb25lLCBOb25lKSkKQEAgLTU0LDkgKzc5LDkgQEAgY2xhc3MgSVJD
Q29tbWFuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aG9pcy5leGVjdXRlKCJ0b20iLCBbImxvcGV6Il0sIE5vbmUsIE5vbmUpKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCd0b206ICJWaWNraSBNdXJsZXkiIDx2aWNraUBhcHBsZS5jb20+IGhh
c25cJ3QgdG9sZCBtZSB0aGVpciBuaWNrLiBCb28gaG9vIDotKCcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdob2lzLmV4ZWN1dGUoInRvbSIsIFsidmlja2lAYXBwbGUuY29tIl0sIE5vbmUs
IE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0b206IElcJ20gbm90IHN1cmUgd2hv
IHlvdSBtZWFuPyAgZ2F2aW5wIG9yIGdiYXJyYSBjb3VsZCBiZSBcJ0dhdmluXCcuJywKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgndG9tOiBJXCdtIG5vdCBzdXJlIHdobyB5b3UgbWVhbj8gIGdh
dmlucCBvciBnYmFycmEgY291bGQgYmUgXCdHYXZpblwnLiBUcnkgdXNpbmcgZG91YmxlLXF1b3Rl
cyBmb3IgYW4gZXhhY3Qgc2VhcmNoLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdob2lz
LmV4ZWN1dGUoInRvbSIsIFsiR2F2aW4iXSwgTm9uZSwgTm9uZSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3RvbTogTW9yZSB0aGFuIDUgY29udHJpYnV0b3JzIG1hdGNoIFwnZGF2aWRcJywg
Y291bGQgeW91IGJlIG1vcmUgc3BlY2lmaWM/JywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
dG9tOiBNb3JlIHRoYW4gNSBjb250cmlidXRvcnMgbWF0Y2ggXCdkYXZpZFwnLCBjb3VsZCB5b3Ug
YmUgbW9yZSBzcGVjaWZpYz8gVHJ5IHVzaW5nIGRvdWJsZS1xdW90ZXMgZm9yIGFuIGV4YWN0IHNl
YXJjaC4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICB3aG9pcy5leGVjdXRlKCJ0b20iLCBb
ImRhdmlkIl0sIE5vbmUsIE5vbmUpKQogCiAgICAgQHN0YXRpY21ldGhvZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183106</attachid>
            <date>2013-01-16 20:31:13 -0800</date>
            <delta_ts>2013-01-16 23:37:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106184-20130117152813.patch</filename>
            <type>text/plain</type>
            <size>4764</size>
            <attacher name="Alan Cutter">alancutter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzk0M2Y1YjM0ZGFlMTk5OTAwZjAyMWE1ZGVlYTRkMzlk
Mjc0MzAxMC4uMGU4NGMwN2JkNjlhOWIzNzdhMTEzNGEwOTVlODhhNWE4YzRlYWRkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIy
IEBACiAyMDEzLTAxLTE2ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgog
CisgICAgICAgIHNoZXJpZmZib3QgY2FuJ3QgdGVsbCBtZSB3aG8gImtvdiIgaXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGdsb2Igc3R5bGUg
c2VhcmNoaW5nIHRvIHRoZSBDb21taXR0ZXJMaXN0IGNvbnRyaWJ1dG9yc19ieV9zZWFyY2hfc3Ry
aW5nIGZ1bmN0aW9uIHNvIGV4YWN0IG1hdGNoZXMgYXJlIGZhdm91cmVkLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHk6CisgICAgICAgIChB
Y2NvdW50Lm1hdGNoZXNfZ2xvYik6CisgICAgICAgIChDb21taXR0ZXJMaXN0LmNvbnRyaWJ1dG9y
c19ieV9zZWFyY2hfc3RyaW5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvY29tbWl0dGVyc191bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LnRl
c3RfY29tbWl0dGVyX2xvb2t1cCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9pcmNfY29tbWFuZC5weToKKyAgICAgICAgKFdob2lzKToKKworMjAxMy0wMS0xNiAgQWxhbiBD
dXR0ZXIgIDxhbGFuY3V0dGVyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBzdGFydC1xdWV1ZS5z
aCBkb2VzIG5vdCBwYXNzIHJlbWFpbmluZyBwYXJhbWV0ZXJzIGNvcnJlY3RseQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDU0CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkKaW5kZXgg
MTIyYzRmZGEyOTc0MmEzZTc5ZjQ3Y2Q5YThjMWUyNTc3ZDFlNGQzNS4uNjY3MzczZTlkODdkN2Ni
MzQ3Y2IyZGU1ZWFlOGVmMTVkMzdhN2QzZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkKQEAgLTMwLDYgKzMwLDcgQEAKICMgV2Vi
S2l0J3MgUHl0aG9uIG1vZHVsZSBmb3IgY29tbWl0dGVyIGFuZCByZXZpZXdlciB2YWxpZGF0aW9u
LgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5lZGl0ZGlzdGFuY2UgaW1wb3J0IGVkaXRfZGlzdGFu
Y2UKK2ltcG9ydCBmbm1hdGNoCiAKIGNsYXNzIEFjY291bnQob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgZW1haWxfb3JfZW1haWxzLCBpcmNfbmlja25hbWVfb3Jfbmlja25h
bWVzPU5vbmUpOgpAQCAtNjksNiArNzAsMTggQEAgY2xhc3MgQWNjb3VudChvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVm
IG1hdGNoZXNfZ2xvYihzZWxmLCBnbG9iX3N0cmluZyk6CisgICAgICAgIGlmIGZubWF0Y2guZm5t
YXRjaChzZWxmLmZ1bGxfbmFtZSwgZ2xvYl9zdHJpbmcpOgorICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgaWYgc2VsZi5pcmNfbmlja25hbWVzOgorICAgICAgICAgICAgZm9yIG5pY2tu
YW1lIGluIHNlbGYuaXJjX25pY2tuYW1lczoKKyAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZu
bWF0Y2gobmlja25hbWUsIGdsb2Jfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKKyAgICAgICAgZm9yIGVtYWlsIGluIHNlbGYuZW1haWxzOgorICAgICAgICAgICAgaWYg
Zm5tYXRjaC5mbm1hdGNoKGVtYWlsLCBnbG9iX3N0cmluZyk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKIAogY2xhc3MgQ29udHJpYnV0b3IoQWNj
b3VudCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGVtYWlsX29yX2VtYWlscywgaXJj
X25pY2tuYW1lPU5vbmUpOgpAQCAtNjU3LDcgKzY3MCw4IEBAIGNsYXNzIENvbW1pdHRlckxpc3Qo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBjb250cmlidXRvcnNfYnlf
c2VhcmNoX3N0cmluZyhzZWxmLCBzdHJpbmcpOgotICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJk
YSBjb250cmlidXRvcjogY29udHJpYnV0b3IuY29udGFpbnNfc3RyaW5nKHN0cmluZyksIHNlbGYu
Y29udHJpYnV0b3JzKCkpCisgICAgICAgIGdsb2JfbWF0Y2hlcyA9IGZpbHRlcihsYW1iZGEgY29u
dHJpYnV0b3I6IGNvbnRyaWJ1dG9yLm1hdGNoZXNfZ2xvYihzdHJpbmcpLCBzZWxmLmNvbnRyaWJ1
dG9ycygpKQorICAgICAgICByZXR1cm4gZ2xvYl9tYXRjaGVzIG9yIGZpbHRlcihsYW1iZGEgY29u
dHJpYnV0b3I6IGNvbnRyaWJ1dG9yLmNvbnRhaW5zX3N0cmluZyhzdHJpbmcpLCBzZWxmLmNvbnRy
aWJ1dG9ycygpKQogCiAgICAgZGVmIGNvbnRyaWJ1dG9yc19ieV9lbWFpbF91c2VybmFtZShzZWxm
LCBzdHJpbmcpOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcgKyAnQCcKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNfdW5pdHRl
c3QucHkKaW5kZXggMWM4Yzg2YTFhNmJjNjc1YjE2NjUwZTAyZGU0YTdlZDc1ZjVlNjMzMy4uN2Y0
ZjY3N2U1YWVlYjg5NDBkNTZlNzUxOGJlOTkzNjU2ZWU3YmQwMCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNfdW5pdHRl
c3QucHkKQEAgLTk1LDYgKzk1LDggQEAgY2xhc3MgQ29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHRlcl9saXN0LmNvbnRyaWJ1
dG9yc19ieV9zZWFyY2hfc3RyaW5nKCd0ZXN0JyksIFtjb250cmlidXRvciwgY29tbWl0dGVyLCBy
ZXZpZXdlcl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0dGVyX2xpc3QuY29udHJp
YnV0b3JzX2J5X3NlYXJjaF9zdHJpbmcoJ3JhZCcpLCBbcmV2aWV3ZXJdKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yc19ieV9zZWFyY2hfc3RyaW5n
KCdUd28nKSwgW3Jldmlld2VyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXR0ZXJf
bGlzdC5jb250cmlidXRvcnNfYnlfc2VhcmNoX3N0cmluZygnb3RoZXJmb3VyJyksIFtjb250cmli
dXRvcl93aXRoX3R3b19uaWNrbmFtZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1p
dHRlcl9saXN0LmNvbnRyaWJ1dG9yc19ieV9zZWFyY2hfc3RyaW5nKCcqb3RoZXJmb3VyKicpLCBb
Y29udHJpYnV0b3Jfd2l0aF90d29fbmlja25hbWVzLCBjb250cmlidXRvcl93aXRoX3NhbWVfZW1h
aWxfdXNlcm5hbWVdKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0dGVyX2xpc3Qu
Y29udHJpYnV0b3JzX2J5X2VtYWlsX3VzZXJuYW1lKCJvbmUiKSwgW2NvbW1pdHRlcl0pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JzX2J5X2VtYWls
X3VzZXJuYW1lKCJmb3VyIiksIFtdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9pcmNfY29tbWFuZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvaXJjX2NvbW1hbmQucHkKaW5kZXggYmM3NWUwODhiOWU5OTczNTk4NDgwYTA5Njc5NjlmMDJl
MWUyYmQ3Ni4uNDk4ZGQyNWIxMDk4NzI1OTQ4NGIxNDFiYTdkYTA2ZmJkYjE5ZWU5YSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CkBAIC0yODks
NyArMjg5LDcgQEAgY2xhc3MgU2hlcmlmZnMoSVJDQ29tbWFuZCk6CiAKIGNsYXNzIFdob2lzKElS
Q0NvbW1hbmQpOgogICAgIHVzYWdlX3N0cmluZyA9ICJ3aG9pcyBTRUFSQ0hfU1RSSU5HIgotICAg
IGhlbHBfc3RyaW5nID0gIlNlYXJjaGVzIGtub3duIGNvbnRyaWJ1dG9ycyBhbmQgcmV0dXJucyBh
bnkgbWF0Y2hlcyB3aXRoIGlyYywgZW1haWwgYW5kIGZ1bGwgbmFtZS4iCisgICAgaGVscF9zdHJp
bmcgPSAiU2VhcmNoZXMga25vd24gY29udHJpYnV0b3JzIGFuZCByZXR1cm5zIGFueSBtYXRjaGVz
IHdpdGggaXJjLCBlbWFpbCBhbmQgZnVsbCBuYW1lLiBXaWxkIGNhcmQgKiBwZXJtaXR0ZWQuIgog
CiAgICAgZGVmIF9uaWNrX29yX2Z1bGxfcmVjb3JkKHNlbGYsIGNvbnRyaWJ1dG9yKToKICAgICAg
ICAgaWYgY29udHJpYnV0b3IuaXJjX25pY2tuYW1lczoK
</data>

          </attachment>
      

    </bug>

</bugzilla>