<?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>74485</bug_id>
          
          <creation_ts>2011-12-13 23:08:24 -0800</creation_ts>
          <short_desc>[Refactoring] In prepare-ChangeLog, make $isGit and $isSVN be used only through parameter passing</short_desc>
          <delta_ts>2011-12-14 22:32:49 -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>
          
          <blocked>73531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520703</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-13 23:08:24 -0800</bug_when>
    <thetext>We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest manner. This bug is one of the incremental refactorings to remove all top-level code and global variables from prepare-ChangeLog.

Global variables in prepare-ChangeLog can be categorized as follows:

[A: Constant variables]
$changeLogTimeZone
$SVN
$GIT
%supportedTestExtensions

[B: Arguments]
$bugDescription
$bugNumber
$name
$emailAddress
$mergeBase
$gitCommit
$gitIndex
$gitReviewer
$openChangeLogs
$writeChangeLogs
$showHelp
$spewDiff
$updateChangeLogs
$parseOptionsResult

[C: Global variables that are used many times here and there]
$isSVN
$isGit

[D: Global variables that are used only a few times]
%paths
$changedFiles
$conflictFiles
$functionLists
$addedRegressionTests
$bugURL
$filesInChangeLog
$prefixes
$changeLogs

In this bug, we remove all global variables in [C]. More accurately, we make $isGit and $isSVN be used only through parameter passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520708</commentid>
    <comment_count>1</comment_count>
      <attachid>119161</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-13 23:13:30 -0800</bug_when>
    <thetext>Created attachment 119161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520811</commentid>
    <comment_count>2</comment_count>
      <attachid>119161</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 02:31:49 -0800</bug_when>
    <thetext>Comment on attachment 119161
Patch

Clearing flags on attachment: 119161

Committed r102761: &lt;http://trac.webkit.org/changeset/102761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520812</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 02:31:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521069</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-14 10:53:24 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=119161) [details]
&gt; Patch

Instead of plumbing $isGit and $isSVN through a bunch of methods, why not use the isGit() and isSVN() methods where they&apos;re needed from the VCSUtils module (which is already imported)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521118</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 11:21:40 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=119161) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Instead of plumbing $isGit and $isSVN through a bunch of methods, why not use the isGit() and isSVN() methods where they&apos;re needed from the VCSUtils module (which is already imported)?

Do they cache the return value? If not, calling those two functions every time might be quite expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521133</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-14 11:33:50 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Instead of plumbing $isGit and $isSVN through a bunch of methods, why not use the isGit() and isSVN() methods where they&apos;re needed from the VCSUtils module (which is already imported)?
&gt; 
&gt; Do they cache the return value? If not, calling those two functions every time might be quite expensive.

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521389</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 15:52:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Do they cache the return value? If not, calling those two functions every time might be quite expensive.
&gt; 
&gt; Yes.

I see. That sounds like a good change then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521392</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 15:53:19 -0800</bug_when>
    <thetext>Hara-san, can we revert this change and do what David suggested? (i.e. just call isGit / isSVN).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521394</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-14 15:54:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Hara-san, can we revert this change and do what David suggested? (i.e. just call isGit / isSVN).

Of course!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521421</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-14 16:12:41 -0800</bug_when>
    <thetext>Reverted r102761 for reason:

we came up with a better fix than this (see comments in bug 74485)

Committed r102841: &lt;http://trac.webkit.org/changeset/102841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521480</commentid>
    <comment_count>11</comment_count>
      <attachid>119334</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-14 16:57:25 -0800</bug_when>
    <thetext>Created attachment 119334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521489</commentid>
    <comment_count>12</comment_count>
      <attachid>119334</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 17:05:10 -0800</bug_when>
    <thetext>Comment on attachment 119334
Patch

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

&gt; Tools/ChangeLog:16
&gt; +        (isGit): Judges whether the first argument is a Git-managed directory, if the first argument is defined. Otherwise, judges whether the current working directory is a Git-managed directory.
&gt; +        (isSVN): Judges whether the first argument is a SVN-managed directory, if the first argument is defined. Otherwise, judges whether the current working directory is a SVN-managed directory.

Please line-break somewhere.

&gt; Tools/Scripts/prepare-ChangeLog:173
&gt; +# First, cache isGit() and isSVN() results for future use.
&gt;  my %paths = processPaths(@ARGV);
&gt; +isGit(firstDirectoryOrCwd(%paths));
&gt; +isSVN(firstDirectoryOrCwd(%paths));

Why do we need to do that? Are there cases where just calling isGit/isSVN isn&apos;t sufficient? I mean people don&apos;t mix git/svn checkouts, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521513</commentid>
    <comment_count>13</comment_count>
      <attachid>119348</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-14 17:29:06 -0800</bug_when>
    <thetext>Created attachment 119348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521515</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-14 17:29:34 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 119334 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119334&amp;action=review
&gt; &gt; Tools/Scripts/prepare-ChangeLog:173
&gt; &gt; +# First, cache isGit() and isSVN() results for future use.
&gt; &gt;  my %paths = processPaths(@ARGV);
&gt; &gt; +isGit(firstDirectoryOrCwd(%paths));
&gt; &gt; +isSVN(firstDirectoryOrCwd(%paths));
&gt; 
&gt; Why do we need to do that? Are there cases where just calling isGit/isSVN isn&apos;t sufficient? I mean people don&apos;t mix git/svn checkouts, right?

I agree. I removed firstDirectoryOrCwd() and just used isGit()/isSVN().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521630</commentid>
    <comment_count>15</comment_count>
      <attachid>119348</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-14 21:15:38 -0800</bug_when>
    <thetext>Comment on attachment 119348
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521667</commentid>
    <comment_count>16</comment_count>
      <attachid>119348</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 22:32:44 -0800</bug_when>
    <thetext>Comment on attachment 119348
Patch

Clearing flags on attachment: 119348

Committed r102890: &lt;http://trac.webkit.org/changeset/102890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521668</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 22:32:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119161</attachid>
            <date>2011-12-13 23:13:30 -0800</date>
            <delta_ts>2011-12-14 16:57:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74485-20111214161329.patch</filename>
            <type>text/plain</type>
            <size>12309</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTg0NzdmMGU2ZTY4ZGRiOWU3ZjIyMDY3OWE1M2FmNmIy
ZjRiZjU2Ny4uYTVhN2I4MWIzMDQxMWVlNmNmZjRmNWMxNjM2ZmEwOTNmY2E5ZDU2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0
IEBACiAyMDExLTEyLTEzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBbUmVmYWN0b3JpbmddIEluIHByZXBhcmUtQ2hhbmdlTG9nLCBtYWtlICRpc0dpdCBh
bmQgJGlzU1ZOIGJlIHVzZWQgb25seQorICAgICAgICB0aHJvdWdoIHBhcmFtZXRlciBwYXNzaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBw
bGFubmluZyB0byB3cml0ZSB1bml0LXRlc3RzIGZvciBwcmVwYXJlLUNoYW5nZUxvZyBpbiBhIHJ1
bi1sZWFrc191bml0dGVzdAorICAgICAgICBtYW5uZXIuIFRoaXMgYnVnIGlzIG9uZSBvZiB0aGUg
aW5jcmVtZW50YWwgcmVmYWN0b3JpbmdzIHRvIHJlbW92ZSBhbGwgdG9wLWxldmVsCisgICAgICAg
IGNvZGUgYW5kIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBwcmVwYXJlLUNoYW5nZUxvZy4gSW4gdGhp
cyBwYXRjaCwKKyAgICAgICAgd2UgbWFrZSB0aGUgZm9sbG93aW5nIGdsb2JhbCB2YXJpYWJsZXMg
YmUgdXNlZCBvbmx5IHRocm91Z2ggcGFyYW1ldGVyIHBhc3NpbmcuCisgICAgICAgICAgICAtICRp
c0dpdAorICAgICAgICAgICAgLSAkaXNTVk4KKworICAgICAgICAqIFNjcmlwdHMvcHJlcGFyZS1D
aGFuZ2VMb2c6CisgICAgICAgIChnZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOgorICAgICAgICAocHJp
bnREaWZmKToKKyAgICAgICAgKGRpZmZGcm9tVG9TdHJpbmcpOgorICAgICAgICAoZGlmZkNvbW1h
bmQpOgorICAgICAgICAoc3RhdHVzQ29tbWFuZCk6CisgICAgICAgIChjcmVhdGVQYXRjaENvbW1h
bmQpOgorICAgICAgICAoZGlmZkhlYWRlckZvcm1hdCk6CisgICAgICAgIChnZW5lcmF0ZUZpbGVM
aXN0KToKKyAgICAgICAgKGlzQWRkZWRTdGF0dXMpOgorICAgICAgICAoaXNDb25mbGljdFN0YXR1
cyk6CisgICAgICAgIChzdGF0dXNEZXNjcmlwdGlvbik6CisgICAgICAgIChleHRyYWN0TGluZVJh
bmdlKToKKworMjAxMS0xMi0xMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgW1JlZmFjdG9yaW5nXSBSZW1vdmUgc2V2ZXJhbCBnbG9iYWwgdmFyaWFibGVz
IGZyb20gcHJlcGFyZS1DaGFuZ2VMb2cKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0Mzg5CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cgYi9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCmluZGV4IDk0YzU2
YmQ3ODUxN2E3M2I5MWZhNTNiMWRiZmExOTZmMTAzNmM2ZDUuLmZhMmM3NDFiMGEwMmUzNGRlZmVj
YzMzM2VhZDE2YjM5ZTM4ZDAxNGUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZwpAQCAtNzIsMjYg
KzcyLDI2IEBAIHN1YiBmaW5kQ2hhbmdlTG9ncygkKTsKIHN1YiBnZXRMYXRlc3RDaGFuZ2VMb2dz
KCQpOwogc3ViIHJlc29sdmVDb25mbGljdGVkQ2hhbmdlTG9ncygkKTsKIHN1YiBnZW5lcmF0ZU5l
d0NoYW5nZUxvZ3MoJCQkJCQpOwotc3ViIHByaW50RGlmZigkKTsKK3N1YiBwcmludERpZmYoJCQk
KTsKIHN1YiBvcGVuQ2hhbmdlTG9ncygkKTsKIHN1YiBmaXJzdERpcmVjdG9yeU9yQ3dkKFwlKTsK
LXN1YiBkaWZmRnJvbVRvU3RyaW5nKCk7Ci1zdWIgZGlmZkNvbW1hbmQoQCk7Ci1zdWIgc3RhdHVz
Q29tbWFuZChAKTsKLXN1YiBjcmVhdGVQYXRjaENvbW1hbmQoJCk7Ci1zdWIgZGlmZkhlYWRlckZv
cm1hdCgpOworc3ViIGRpZmZGcm9tVG9TdHJpbmcoJCQpOworc3ViIGRpZmZDb21tYW5kKCQkJCk7
CitzdWIgc3RhdHVzQ29tbWFuZCgkJCQpOworc3ViIGNyZWF0ZVBhdGNoQ29tbWFuZCgkJCQpOwor
c3ViIGRpZmZIZWFkZXJGb3JtYXQoJCQpOwogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQp
Owogc3ViIGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIHBsdXJhbGl6ZUFuZExp
c3QoJCRAKTsKLXN1YiBnZW5lcmF0ZUZpbGVMaXN0KFwlKTsKLXN1YiBnZW5lcmF0ZUZ1bmN0aW9u
TGlzdHMoJCQpOworc3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUkJCk7CitzdWIgZ2VuZXJhdGVGdW5j
dGlvbkxpc3RzKCQkJCQpOwogc3ViIGlzVW5tb2RpZmllZFN0YXR1cygkKTsKIHN1YiBpc01vZGlm
aWVkU3RhdHVzKCQpOwotc3ViIGlzQWRkZWRTdGF0dXMoJCk7Ci1zdWIgaXNDb25mbGljdFN0YXR1
cygkKTsKLXN1YiBzdGF0dXNEZXNjcmlwdGlvbigkJCQkKTsKK3N1YiBpc0FkZGVkU3RhdHVzKCQk
KTsKK3N1YiBpc0NvbmZsaWN0U3RhdHVzKCQkJCk7CitzdWIgc3RhdHVzRGVzY3JpcHRpb24oJCQk
JCQkKTsKIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0aW9uKCQpOwotc3ViIGV4dHJhY3RMaW5l
UmFuZ2UoJCk7CitzdWIgZXh0cmFjdExpbmVSYW5nZSgkJCQpOwogc3ViIHRlc3RMaXN0Rm9yQ2hh
bmdlTG9nKEApOwogc3ViIGdldF9mdW5jdGlvbl9saW5lX3JhbmdlcygkJCk7CiBzdWIgZ2V0X2Z1
bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jKCQkKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBteSAkaXNT
Vk4gPSBpc1NWTkRpcmVjdG9yeShmaXJzdERpcmVjdG9yeU9yQ3dkKCVwYXRocykpOwogJGlzU1ZO
IHx8ICRpc0dpdCB8fCBkaWUgIkNvdWxkbid0IGRldGVybWluZSB5b3VyIHZlcnNpb24gY29udHJv
bCBzeXN0ZW0uIjsKIAogIyBGaW5kIHRoZSBsaXN0IG9mIG1vZGlmaWVkIGZpbGVzCi1teSAoJGNo
YW5nZWRGaWxlcywgJGNvbmZsaWN0RmlsZXMsICRmdW5jdGlvbkxpc3RzLCAkYWRkZWRSZWdyZXNz
aW9uVGVzdHMpID0gZ2VuZXJhdGVGaWxlTGlzdCglcGF0aHMpOworbXkgKCRjaGFuZ2VkRmlsZXMs
ICRjb25mbGljdEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGFkZGVkUmVncmVzc2lvblRlc3RzKSA9
IGdlbmVyYXRlRmlsZUxpc3QoJXBhdGhzLCAkaXNHaXQsICRpc1NWTik7CiAKIGlmICghQCRjaGFu
Z2VkRmlsZXMgJiYgIUAkY29uZmxpY3RGaWxlcyAmJiAha2V5cyAlJGZ1bmN0aW9uTGlzdHMpIHsK
ICAgICBwcmludCBTVERFUlIgIiAgTm8gY2hhbmdlcyBmb3VuZC5cbiI7CkBAIC0xODYsNyArMTg2
LDcgQEAgaWYgKEAkY29uZmxpY3RGaWxlcykgewogICAgIGV4aXQgMTsKIH0KIAotZ2VuZXJhdGVG
dW5jdGlvbkxpc3RzKCRjaGFuZ2VkRmlsZXMsICRmdW5jdGlvbkxpc3RzKTsKK2dlbmVyYXRlRnVu
Y3Rpb25MaXN0cygkY2hhbmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGlzR2l0LCAkaXNTVk4p
OwogCiAjIEdldCBzb21lIHBhcmFtZXRlcnMgZm9yIHRoZSBDaGFuZ2VMb2cgd2UgYXJlIGFib3V0
IHRvIHdyaXRlLgogJG5hbWUgPSBjaGFuZ2VMb2dOYW1lRnJvbUFyZ3MoJG5hbWUpOwpAQCAtMjIz
LDcgKzIyMyw3IEBAIGlmICgkd3JpdGVDaGFuZ2VMb2dzKSB7CiAKICMgV3JpdGUgb3V0IGFub3Ro
ZXIgZGlmZi4KIGlmICgkc3Bld0RpZmYgJiYgQCRjaGFuZ2VkRmlsZXMpIHsKLSAgICBwcmludERp
ZmYoJGNoYW5nZWRGaWxlcyk7CisgICAgcHJpbnREaWZmKCRjaGFuZ2VkRmlsZXMsICRpc0dpdCwg
JGlzU1ZOKTsKIH0KIAogIyBPcGVuIENoYW5nZUxvZ3MuCkBAIC0yMzUsOSArMjM1LDkgQEAgaWYg
KCRvcGVuQ2hhbmdlTG9ncyAmJiBAJGNoYW5nZUxvZ3MpIHsKIGV4aXQ7CiAKIAotc3ViIGdlbmVy
YXRlRnVuY3Rpb25MaXN0cygkJCkKK3N1YiBnZW5lcmF0ZUZ1bmN0aW9uTGlzdHMoJCQkJCkKIHsK
LSAgICBteSAoJGNoYW5nZWRGaWxlcywgJGZ1bmN0aW9uTGlzdHMpID0gQF87CisgICAgbXkgKCRj
aGFuZ2VkRmlsZXMsICRmdW5jdGlvbkxpc3RzLCAkaXNHaXQsICRpc1NWTikgPSBAXzsKIAogICAg
IG15ICVjaGFuZ2VkX2xpbmVfcmFuZ2VzOwogICAgIGlmIChAJGNoYW5nZWRGaWxlcykgewpAQCAt
MjQ1LDExICsyNDUsMTEgQEAgc3ViIGdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCkKICAgICAgICAg
IyBVc2UgbGluZSBudW1iZXJzIGZyb20gdGhlICJhZnRlciIgc2lkZSBvZiBlYWNoIGRpZmYuCiAg
ICAgICAgIHByaW50IFNUREVSUiAiICBSZXZpZXdpbmcgZGlmZiB0byBkZXRlcm1pbmUgd2hpY2gg
bGluZXMgY2hhbmdlZC5cbiI7CiAgICAgICAgIG15ICRmaWxlOwotICAgICAgICBvcGVuIERJRkYs
ICItfCIsIGRpZmZDb21tYW5kKEAkY2hhbmdlZEZpbGVzKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxl
ZDogJCEuXG4iOworICAgICAgICBvcGVuIERJRkYsICItfCIsIGRpZmZDb21tYW5kKCRjaGFuZ2Vk
RmlsZXMsICRpc0dpdCwgJGlzU1ZOKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxlZDogJCEuXG4iOwog
ICAgICAgICB3aGlsZSAoPERJRkY+KSB7Ci0gICAgICAgICAgICAkZmlsZSA9IG1ha2VGaWxlUGF0
aFJlbGF0aXZlKCQxKSBpZiAkXyA9fiBkaWZmSGVhZGVyRm9ybWF0KCk7CisgICAgICAgICAgICAk
ZmlsZSA9IG1ha2VGaWxlUGF0aFJlbGF0aXZlKCQxKSBpZiAkXyA9fiBkaWZmSGVhZGVyRm9ybWF0
KCRpc0dpdCwgJGlzU1ZOKTsKICAgICAgICAgICAgIGlmIChkZWZpbmVkICRmaWxlKSB7Ci0gICAg
ICAgICAgICAgICAgbXkgKCRzdGFydCwgJGVuZCkgPSBleHRyYWN0TGluZVJhbmdlKCRfKTsKKyAg
ICAgICAgICAgICAgICBteSAoJHN0YXJ0LCAkZW5kKSA9IGV4dHJhY3RMaW5lUmFuZ2UoJF8sICRp
c0dpdCwgJGlzU1ZOKTsKICAgICAgICAgICAgICAgICBpZiAoJHN0YXJ0ID49IDAgJiYgJGVuZCA+
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHskY2hhbmdlZF9saW5lX3Jhbmdlc3sk
ZmlsZX19LCBbICRzdGFydCwgJGVuZCBdOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19O
T1RfQ09NTUlULykgewpAQCAtNTIwLDEzICs1MjAsMTMgQEAgc3ViIGdlbmVyYXRlTmV3Q2hhbmdl
TG9ncygkJCQkJCkKICAgICB9CiB9CiAKLXN1YiBwcmludERpZmYoJCkKK3N1YiBwcmludERpZmYo
JCQkKQogewotICAgIG15ICgkY2hhbmdlZEZpbGVzKSA9IEBfOworICAgIG15ICgkY2hhbmdlZEZp
bGVzLCAkaXNHaXQsICRpc1NWTikgPSBAXzsKIAogICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5n
IGRpZmYgdG8gaGVscCB5b3Ugd3JpdGUgdGhlIENoYW5nZUxvZyBlbnRyaWVzLlxuIjsKICAgICBs
b2NhbCAkLyA9IHVuZGVmOyAjIGxvY2FsIHNsdXJwIG1vZGUKLSAgICBvcGVuIERJRkYsICItfCIs
IGNyZWF0ZVBhdGNoQ29tbWFuZCgiJyIgLiBqb2luICgiJyAnIiwgQCRjaGFuZ2VkRmlsZXMpIC4g
IiciKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxlZDogJCEuXG4iOworICAgIG9wZW4gRElGRiwgIi18
IiwgY3JlYXRlUGF0Y2hDb21tYW5kKCInIiAuIGpvaW4gKCInICciLCBAJGNoYW5nZWRGaWxlcykg
LiAiJyIsICRpc0dpdCwgJGlzU1ZOKSBvciBkaWUgIlRoZSBkaWZmIGZhaWxlZDogJCEuXG4iOwog
ICAgIHByaW50IDxESUZGPjsKICAgICBjbG9zZSBESUZGOwogfQpAQCAtMTQzNCw4ICsxNDM0LDEw
IEBAIHN1YiBwcm9jZXNzUGF0aHMoXEApCiAgICAgcmV0dXJuICVyZXN1bHQ7CiB9CiAKLXN1YiBk
aWZmRnJvbVRvU3RyaW5nKCkKK3N1YiBkaWZmRnJvbVRvU3RyaW5nKCQkKQogeworICAgIG15ICgk
aXNHaXQsICRpc1NWTikgPSBAXzsKKwogICAgIHJldHVybiAiIiBpZiAkaXNTVk47CiAgICAgcmV0
dXJuICRnaXRDb21taXQgaWYgJGdpdENvbW1pdCA9fiBtLy4rXC5cLi4rLzsKICAgICByZXR1cm4g
IlwiJGdpdENvbW1pdF5cIiBcIiRnaXRDb21taXRcIiIgaWYgJGdpdENvbW1pdDsKQEAgLTE0NDQs
NTYgKzE0NDYsNTggQEAgc3ViIGRpZmZGcm9tVG9TdHJpbmcoKQogICAgIHJldHVybiAiSEVBRCIg
aWYgJGlzR2l0OwogfQogCi1zdWIgZGlmZkNvbW1hbmQoQCkKK3N1YiBkaWZmQ29tbWFuZCgkJCQp
CiB7Ci0gICAgbXkgQHBhdGhzID0gQF87CisgICAgbXkgKCRwYXRocywgJGlzR2l0LCAkaXNTVk4p
ID0gQF87CiAKLSAgICBteSAkcGF0aHNTdHJpbmcgPSAiJyIgLiBqb2luKCInICciLCBAcGF0aHMp
IC4gIiciOyAKKyAgICBteSAkcGF0aHNTdHJpbmcgPSAiJyIgLiBqb2luKCInICciLCBAJHBhdGhz
KSAuICInIjsgCiAKICAgICBteSAkY29tbWFuZDsKICAgICBpZiAoJGlzU1ZOKSB7CiAgICAgICAg
ICRjb21tYW5kID0gIiRTVk4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXggLU4gJHBhdGhzU3RyaW5n
IjsKICAgICB9IGVsc2lmICgkaXNHaXQpIHsKLSAgICAgICAgJGNvbW1hbmQgPSAiJEdJVCBkaWZm
IC0tbm8tZXh0LWRpZmYgLVUwICIgLiBkaWZmRnJvbVRvU3RyaW5nKCk7CisgICAgICAgICRjb21t
YW5kID0gIiRHSVQgZGlmZiAtLW5vLWV4dC1kaWZmIC1VMCAiIC4gZGlmZkZyb21Ub1N0cmluZygk
aXNHaXQsICRpc1NWTik7CiAgICAgICAgICRjb21tYW5kIC49ICIgLS0gJHBhdGhzU3RyaW5nIiB1
bmxlc3MgJGdpdENvbW1pdCBvciAkbWVyZ2VCYXNlOwogICAgIH0KIAogICAgIHJldHVybiAkY29t
bWFuZDsKIH0KIAotc3ViIHN0YXR1c0NvbW1hbmQoQCkKK3N1YiBzdGF0dXNDb21tYW5kKCQkJCkK
IHsKLSAgICBteSBAZmlsZXMgPSBAXzsKKyAgICBteSAoJHBhdGhzLCAkaXNHaXQsICRpc1NWTikg
PSBAXzsKIAotICAgIG15ICRmaWxlc1N0cmluZyA9ICJcIiIgLiBqb2luICgiXCIgXCIiLCBAZmls
ZXMpIC4gIlwiIjsKKyAgICBteSAkZmlsZXNTdHJpbmcgPSAiXCIiIC4gam9pbiAoIlwiIFwiIiwg
a2V5cyAlJHBhdGhzKSAuICJcIiI7CiAgICAgbXkgJGNvbW1hbmQ7CiAgICAgaWYgKCRpc1NWTikg
ewogICAgICAgICAkY29tbWFuZCA9ICIkU1ZOIHN0YXQgJGZpbGVzU3RyaW5nIjsKICAgICB9IGVs
c2lmICgkaXNHaXQpIHsKLSAgICAgICAgJGNvbW1hbmQgPSAiJEdJVCBkaWZmIC1yIC0tbmFtZS1z
dGF0dXMgLU0gLUMgIiAuIGRpZmZGcm9tVG9TdHJpbmcoKTsKKyAgICAgICAgJGNvbW1hbmQgPSAi
JEdJVCBkaWZmIC1yIC0tbmFtZS1zdGF0dXMgLU0gLUMgIiAuIGRpZmZGcm9tVG9TdHJpbmcoJGlz
R2l0LCAkaXNTVk4pOwogICAgICAgICAkY29tbWFuZCAuPSAiIC0tICRmaWxlc1N0cmluZyIgdW5s
ZXNzICRnaXRDb21taXQ7CiAgICAgfQogCiAgICAgcmV0dXJuICIkY29tbWFuZCAyPiYxIjsKIH0K
IAotc3ViIGNyZWF0ZVBhdGNoQ29tbWFuZCgkKQorc3ViIGNyZWF0ZVBhdGNoQ29tbWFuZCgkJCQp
CiB7Ci0gICAgbXkgKCRjaGFuZ2VkRmlsZXNTdHJpbmcpID0gQF87CisgICAgbXkgKCRjaGFuZ2Vk
RmlsZXNTdHJpbmcsICRpc0dpdCwgJGlzU1ZOKSA9IEBfOwogCiAgICAgbXkgJGNvbW1hbmQ7CiAg
ICAgaWYgKCRpc1NWTikgewogICAgICAgICAkY29tbWFuZCA9ICInJEZpbmRCaW46OkJpbi9zdm4t
Y3JlYXRlLXBhdGNoJyAkY2hhbmdlZEZpbGVzU3RyaW5nIjsKICAgICB9IGVsc2lmICgkaXNHaXQp
IHsKLSAgICAgICAgJGNvbW1hbmQgPSAiJEdJVCBkaWZmIC1NIC1DICIgLiBkaWZmRnJvbVRvU3Ry
aW5nKCk7CisgICAgICAgICRjb21tYW5kID0gIiRHSVQgZGlmZiAtTSAtQyAiIC4gZGlmZkZyb21U
b1N0cmluZygkaXNHaXQsICRpc1NWTik7CiAgICAgICAgICRjb21tYW5kIC49ICIgLS0gJGNoYW5n
ZWRGaWxlc1N0cmluZyIgdW5sZXNzICRnaXRDb21taXQ7CiAgICAgfQogCiAgICAgcmV0dXJuICRj
b21tYW5kOwogfQogCi1zdWIgZGlmZkhlYWRlckZvcm1hdCgpCitzdWIgZGlmZkhlYWRlckZvcm1h
dCgkJCkKIHsKKyAgICBteSAoJGlzR2l0LCAkaXNTVk4pID0gQF87CisKICAgICByZXR1cm4gcXIv
XkluZGV4OiAoXFMrKVtcclxuXSokLyBpZiAkaXNTVk47CiAgICAgcmV0dXJuIHFyL15kaWZmIC0t
Z2l0IGFcLy4rIGJcLyguKykkLyBpZiAkaXNHaXQ7CiB9CkBAIC0xNTkwLDE2ICsxNTk0LDE2IEBA
IHN1YiBwbHVyYWxpemVBbmRMaXN0KCQkQCkKICAgICByZXR1cm4gIiRwbHVyYWwgIiAuIGpvaW4o
IiwgIiwgQGl0ZW1zWzAgLi4gJCNpdGVtcyAtIDFdKSAuICIgYW5kICIgLiAkaXRlbXNbLTFdOwog
fQogCi1zdWIgZ2VuZXJhdGVGaWxlTGlzdChcJSkKK3N1YiBnZW5lcmF0ZUZpbGVMaXN0KFwlJCQp
CiB7Ci0gICAgbXkgKCRwYXRocykgPSBAXzsKKyAgICBteSAoJHBhdGhzLCAkaXNHaXQsICRpc1NW
TikgPSBAXzsKIAogICAgIG15IEBjaGFuZ2VkRmlsZXM7CiAgICAgbXkgQGNvbmZsaWN0RmlsZXM7
CiAgICAgbXkgJWZ1bmN0aW9uTGlzdHM7CiAgICAgbXkgQGFkZGVkUmVncmVzc2lvblRlc3RzOwog
ICAgIHByaW50IFNUREVSUiAiICBSdW5uaW5nIHN0YXR1cyB0byBmaW5kIGNoYW5nZWQsIGFkZGVk
LCBvciByZW1vdmVkIGZpbGVzLlxuIjsKLSAgICBvcGVuIFNUQVQsICItfCIsIHN0YXR1c0NvbW1h
bmQoa2V5cyAlJHBhdGhzKSBvciBkaWUgIlRoZSBzdGF0dXMgZmFpbGVkOiAkIS5cbiI7CisgICAg
b3BlbiBTVEFULCAiLXwiLCBzdGF0dXNDb21tYW5kKCRwYXRocywgJGlzR2l0LCAkaXNTVk4pIG9y
IGRpZSAiVGhlIHN0YXR1cyBmYWlsZWQ6ICQhLlxuIjsKICAgICB3aGlsZSAoPFNUQVQ+KSB7CiAg
ICAgICAgIG15ICRzdGF0dXM7CiAgICAgICAgIG15ICRwcm9wZXJ0eVN0YXR1czsKQEAgLTE2MjMs
NyArMTYyNyw3IEBAIHN1YiBnZW5lcmF0ZUZpbGVMaXN0KFwlKQogICAgICAgICAgICAgaWYgKCRt
YXRjaGVzKSB7CiAgICAgICAgICAgICAgICAgJGZpbGUgPSBub3JtYWxpemVQYXRoKCRmaWxlKTsK
ICAgICAgICAgICAgICAgICAkb3JpZ2luYWwgPSBmaW5kT3JpZ2luYWxGaWxlRnJvbVN2bigkZmls
ZSkgaWYgc3Vic3RyKCRfLCAzLCAxKSBlcSAiKyI7Ci0gICAgICAgICAgICAgICAgbXkgJGlzQWRk
ID0gaXNBZGRlZFN0YXR1cygkc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBteSAkaXNBZGQgPSBp
c0FkZGVkU3RhdHVzKCRzdGF0dXMsICRpc0dpdCk7CiAgICAgICAgICAgICAgICAgJHByb3BlcnR5
Q2hhbmdlcyA9IGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkZmlsZSwgJGlzQWRkLCAkb3JpZ2lu
YWwpIGlmIGlzTW9kaWZpZWRTdGF0dXMoJHByb3BlcnR5U3RhdHVzKSB8fCAkaXNBZGQ7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50OyAgIyBlcnJvciBvdXRwdXQg
ZnJvbSBzdm4gc3RhdApAQCAtMTY0NywyMiArMTY1MSwyMiBAQCBzdWIgZ2VuZXJhdGVGaWxlTGlz
dChcJSkKIAogICAgICAgICAkZmlsZSA9IG1ha2VGaWxlUGF0aFJlbGF0aXZlKCRmaWxlKTsKIAot
ICAgICAgICBpZiAoaXNNb2RpZmllZFN0YXR1cygkc3RhdHVzKSB8fCBpc0FkZGVkU3RhdHVzKCRz
dGF0dXMpIHx8IGlzTW9kaWZpZWRTdGF0dXMoJHByb3BlcnR5U3RhdHVzKSkgeworICAgICAgICBp
ZiAoaXNNb2RpZmllZFN0YXR1cygkc3RhdHVzKSB8fCBpc0FkZGVkU3RhdHVzKCRzdGF0dXMsICRp
c0dpdCkgfHwgaXNNb2RpZmllZFN0YXR1cygkcHJvcGVydHlTdGF0dXMpKSB7CiAgICAgICAgICAg
ICBteSBAY29tcG9uZW50cyA9IEZpbGU6OlNwZWMtPnNwbGl0ZGlyKCRmaWxlKTsKICAgICAgICAg
ICAgIGlmICgkY29tcG9uZW50c1swXSBlcSAiTGF5b3V0VGVzdHMiKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaCBAYWRkZWRSZWdyZXNzaW9uVGVzdHMsICRmaWxlCi0gICAgICAgICAgICAgICAgICAg
IGlmIGlzQWRkZWRTdGF0dXMoJHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNBZGRl
ZFN0YXR1cygkc3RhdHVzLCAkaXNHaXQpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRmaWxl
ID1+IC9cLihbYS16QS1aXSspJC8KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHN1cHBvcnRl
ZFRlc3RFeHRlbnNpb25ze2xjKCQxKX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXNjYWxh
cihncmVwKC9ecmVzb3VyY2VzJC9pLCBAY29tcG9uZW50cykpCiAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFzY2FsYXIoZ3JlcCgvXnNjcmlwdC10ZXN0cyQvaSwgQGNvbXBvbmVudHMpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2ggQGNoYW5nZWRGaWxlcywgJGZpbGUgaWYgJGNv
bXBvbmVudHNbJCNjb21wb25lbnRzXSBuZSAiQ2hhbmdlTG9nIjsKLSAgICAgICAgfSBlbHNpZiAo
aXNDb25mbGljdFN0YXR1cygkc3RhdHVzKSB8fCBpc0NvbmZsaWN0U3RhdHVzKCRwcm9wZXJ0eVN0
YXR1cykpIHsKKyAgICAgICAgfSBlbHNpZiAoaXNDb25mbGljdFN0YXR1cygkc3RhdHVzLCAkaXNH
aXQsICRpc1NWTikgfHwgaXNDb25mbGljdFN0YXR1cygkcHJvcGVydHlTdGF0dXMsICRpc0dpdCwg
JGlzU1ZOKSkgewogICAgICAgICAgICAgcHVzaCBAY29uZmxpY3RGaWxlcywgJGZpbGU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGJhc2VuYW1lKCRmaWxlKSBuZSAiQ2hhbmdlTG9nIikgewotICAg
ICAgICAgICAgbXkgJGRlc2NyaXB0aW9uID0gc3RhdHVzRGVzY3JpcHRpb24oJHN0YXR1cywgJHBy
b3BlcnR5U3RhdHVzLCAkb3JpZ2luYWwsICRwcm9wZXJ0eUNoYW5nZXMpOworICAgICAgICAgICAg
bXkgJGRlc2NyaXB0aW9uID0gc3RhdHVzRGVzY3JpcHRpb24oJHN0YXR1cywgJHByb3BlcnR5U3Rh
dHVzLCAkb3JpZ2luYWwsICRwcm9wZXJ0eUNoYW5nZXMsICRpc0dpdCwgJGlzU1ZOKTsKICAgICAg
ICAgICAgICRmdW5jdGlvbkxpc3RzeyRmaWxlfSA9ICRkZXNjcmlwdGlvbiBpZiBkZWZpbmVkICRk
ZXNjcmlwdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OTIsOSArMTY5Niw5IEBAIHN1YiBp
c01vZGlmaWVkU3RhdHVzKCQpCiAgICAgcmV0dXJuICRzdGF0dXNDb2Rlc3skc3RhdHVzfTsKIH0K
IAotc3ViIGlzQWRkZWRTdGF0dXMoJCkKK3N1YiBpc0FkZGVkU3RhdHVzKCQkKQogewotICAgIG15
ICgkc3RhdHVzKSA9IEBfOworICAgIG15ICgkc3RhdHVzLCAkaXNHaXQpID0gQF87CiAKICAgICBt
eSAlc3RhdHVzQ29kZXMgPSAoCiAgICAgICAgICJBIiA9PiAxLApAQCAtMTcwNSw5ICsxNzA5LDkg
QEAgc3ViIGlzQWRkZWRTdGF0dXMoJCkKICAgICByZXR1cm4gJHN0YXR1c0NvZGVzeyRzdGF0dXN9
OwogfQogCi1zdWIgaXNDb25mbGljdFN0YXR1cygkKQorc3ViIGlzQ29uZmxpY3RTdGF0dXMoJCQk
KQogewotICAgIG15ICgkc3RhdHVzKSA9IEBfOworICAgIG15ICgkc3RhdHVzLCAkaXNHaXQsICRp
c1NWTikgPSBAXzsKIAogICAgIG15ICVzdm4gPSAoCiAgICAgICAgICJDIiA9PiAxLApAQCAtMTcy
Miw5ICsxNzI2LDkgQEAgc3ViIGlzQ29uZmxpY3RTdGF0dXMoJCkKICAgICByZXR1cm4gJGdpdHsk
c3RhdHVzfSBpZiAkaXNHaXQ7CiB9CiAKLXN1YiBzdGF0dXNEZXNjcmlwdGlvbigkJCQkKQorc3Vi
IHN0YXR1c0Rlc2NyaXB0aW9uKCQkJCQkJCkKIHsKLSAgICBteSAoJHN0YXR1cywgJHByb3BlcnR5
U3RhdHVzLCAkb3JpZ2luYWwsICRwcm9wZXJ0eUNoYW5nZXMpID0gQF87CisgICAgbXkgKCRzdGF0
dXMsICRwcm9wZXJ0eVN0YXR1cywgJG9yaWdpbmFsLCAkcHJvcGVydHlDaGFuZ2VzLCAkaXNHaXQs
ICRpc1NWTikgPSBAXzsKIAogICAgIG15ICRwcm9wZXJ0eURlc2NyaXB0aW9uID0gZGVmaW5lZCAk
cHJvcGVydHlDaGFuZ2VzID8gcHJvcGVydHlDaGFuZ2VEZXNjcmlwdGlvbigkcHJvcGVydHlDaGFu
Z2VzKSA6ICIiOwogCkBAIC0xNzQ2LDcgKzE3NTAsNyBAQCBzdWIgc3RhdHVzRGVzY3JpcHRpb24o
JCQkJCkKICAgICAkZGVzY3JpcHRpb24gPSBzcHJpbnRmKCRnaXR7JHN0YXR1c30sICRvcmlnaW5h
bCkgaWYgJGlzR2l0ICYmIGV4aXN0cyAkZ2l0eyRzdGF0dXN9OwogICAgIHJldHVybiB1bmxlc3Mg
ZGVmaW5lZCAkZGVzY3JpcHRpb247CiAKLSAgICAkZGVzY3JpcHRpb24gLj0gJHByb3BlcnR5RGVz
Y3JpcHRpb24gdW5sZXNzIGlzQWRkZWRTdGF0dXMoJHN0YXR1cyk7CisgICAgJGRlc2NyaXB0aW9u
IC49ICRwcm9wZXJ0eURlc2NyaXB0aW9uIHVubGVzcyBpc0FkZGVkU3RhdHVzKCRzdGF0dXMsICRp
c0dpdCk7CiAgICAgcmV0dXJuICRkZXNjcmlwdGlvbjsKIH0KIApAQCAtMTc3MCw5ICsxNzc0LDkg
QEAgc3ViIHByb3BlcnR5Q2hhbmdlRGVzY3JpcHRpb24oJCkKICAgICByZXR1cm4gJGRlc2NyaXB0
aW9uOwogfQogCi1zdWIgZXh0cmFjdExpbmVSYW5nZSgkKQorc3ViIGV4dHJhY3RMaW5lUmFuZ2Uo
JCQkKQogewotICAgIG15ICgkc3RyaW5nKSA9IEBfOworICAgIG15ICgkc3RyaW5nLCAkaXNHaXQs
ICRpc1NWTikgPSBAXzsKIAogICAgIG15ICgkc3RhcnQsICRlbmQpID0gKC0xLCAtMSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119334</attachid>
            <date>2011-12-14 16:57:25 -0800</date>
            <delta_ts>2011-12-14 17:29:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74485-20111215095724.patch</filename>
            <type>text/plain</type>
            <size>8193</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGRhMDQ1NTJkNGNhYzBmMmZlZmU0MDBkNzFiZmJmNzNh
OTIxZTdhNS4uY2M2ODM0NTg0OWQ4MGIyZjRlNzcwZTAxNmQyNTRmNDI0MWNiNmMzZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMz
IEBACiAyMDExLTEyLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBbUmVmYWN0b3JpbmddIEluIHByZXBhcmUtQ2hhbmdlTG9nLCByZXBsYWNlICRpc0dp
dCBhbmQgJGlzU1ZOIHdpdGgKKyAgICAgICAgVkNTVXRpbHM6OmlzR2l0KCkgYW5kIFZDU1V0aWxz
Ojppc1NWTigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBhcmUgcGxhbm5pbmcgdG8gd3JpdGUgdW5pdC10ZXN0cyBmb3IgcHJlcGFyZS1DaGFuZ2VM
b2cgaW4gYSBydW4tbGVha3NfdW5pdHRlc3QKKyAgICAgICAgbWFubmVyLiBUaGlzIGJ1ZyBpcyBv
bmUgb2YgdGhlIGluY3JlbWVudGFsIHJlZmFjdG9yaW5ncyB0byByZW1vdmUgYWxsIHRvcC1sZXZl
bAorICAgICAgICBjb2RlIGFuZCBnbG9iYWwgdmFyaWFibGVzIGZyb20gcHJlcGFyZS1DaGFuZ2VM
b2cuIEluIHRoaXMgcGF0Y2gsCisgICAgICAgIHdlIHJlcGxhY2UgJGlzR2l0IGFuZCAkaXNTVk4g
d2l0aCBWQ1NVdGlsczo6aXNHaXQoKSBhbmQgVkNTVXRpbHM6OmlzU1ZOKCkuCisKKyAgICAgICAg
KiBTY3JpcHRzL1ZDU1V0aWxzLnBtOgorICAgICAgICAoaXNHaXQpOiBKdWRnZXMgd2hldGhlciB0
aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBHaXQtbWFuYWdlZCBkaXJlY3RvcnksIGlmIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyBkZWZpbmVkLiBPdGhlcndpc2UsIGp1ZGdlcyB3aGV0aGVyIHRoZSBjdXJy
ZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIGEgR2l0LW1hbmFnZWQgZGlyZWN0b3J5LgorICAgICAg
ICAoaXNTVk4pOiBKdWRnZXMgd2hldGhlciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBTVk4tbWFu
YWdlZCBkaXJlY3RvcnksIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBkZWZpbmVkLiBPdGhlcndp
c2UsIGp1ZGdlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIGEgU1ZO
LW1hbmFnZWQgZGlyZWN0b3J5LgorICAgICAgICAqIFNjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2c6
CisgICAgICAgIChkaWZmRnJvbVRvU3RyaW5nKToKKyAgICAgICAgKGRpZmZDb21tYW5kKToKKyAg
ICAgICAgKHN0YXR1c0NvbW1hbmQpOgorICAgICAgICAoY3JlYXRlUGF0Y2hDb21tYW5kKToKKyAg
ICAgICAgKGRpZmZIZWFkZXJGb3JtYXQpOgorICAgICAgICAoZ2VuZXJhdGVGaWxlTGlzdCk6Cisg
ICAgICAgIChpc0FkZGVkU3RhdHVzKToKKyAgICAgICAgKGlzQ29uZmxpY3RTdGF0dXMpOgorICAg
ICAgICAoc3RhdHVzRGVzY3JpcHRpb24pOgorICAgICAgICAoZXh0cmFjdExpbmVSYW5nZSk6CisK
KzIwMTEtMTItMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDI3NjEuCiAgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwMjc2MQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0ODUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcHJl
cGFyZS1DaGFuZ2VMb2cgYi9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCmluZGV4IDk0
YzU2YmQ3ODUxN2E3M2I5MWZhNTNiMWRiZmExOTZmMTAzNmM2ZDUuLjNjMGI4NGUwOTZkMDg0NDgw
MDQ2Mjk0OTc1OWU3NzczMmJmYmMwMWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZwpAQCAtMTY2
LDExICsxNjYsMTMgQEAgZGllICItLWdpdC1jb21taXQgYW5kIC0tZ2l0LWluZGV4IGFyZSBpbmNv
bXBhdGlibGUuIiBpZiAoJGdpdEluZGV4ICYmICRnaXRDb21taXQKIAogCiAjIyMgTWFpbiByb3V0
aW5lLgorCisjIEZpcnN0LCBjYWNoZSBpc0dpdCgpIGFuZCBpc1NWTigpIHJlc3VsdHMgZm9yIGZ1
dHVyZSB1c2UuCiBteSAlcGF0aHMgPSBwcm9jZXNzUGF0aHMoQEFSR1YpOworaXNHaXQoZmlyc3RE
aXJlY3RvcnlPckN3ZCglcGF0aHMpKTsKK2lzU1ZOKGZpcnN0RGlyZWN0b3J5T3JDd2QoJXBhdGhz
KSk7CiAKLW15ICRpc0dpdCA9IGlzR2l0RGlyZWN0b3J5KGZpcnN0RGlyZWN0b3J5T3JDd2QoJXBh
dGhzKSk7Ci1teSAkaXNTVk4gPSBpc1NWTkRpcmVjdG9yeShmaXJzdERpcmVjdG9yeU9yQ3dkKCVw
YXRocykpOwotJGlzU1ZOIHx8ICRpc0dpdCB8fCBkaWUgIkNvdWxkbid0IGRldGVybWluZSB5b3Vy
IHZlcnNpb24gY29udHJvbCBzeXN0ZW0uIjsKK2lzU1ZOKCkgfHwgaXNHaXQoKSB8fCBkaWUgIkNv
dWxkbid0IGRldGVybWluZSB5b3VyIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uIjsKIAogIyBGaW5k
IHRoZSBsaXN0IG9mIG1vZGlmaWVkIGZpbGVzCiBteSAoJGNoYW5nZWRGaWxlcywgJGNvbmZsaWN0
RmlsZXMsICRmdW5jdGlvbkxpc3RzLCAkYWRkZWRSZWdyZXNzaW9uVGVzdHMpID0gZ2VuZXJhdGVG
aWxlTGlzdCglcGF0aHMpOwpAQCAtMjExLDcgKzIxMyw3IEBAIG15ICgkZmlsZXNJbkNoYW5nZUxv
ZywgJHByZWZpeGVzKSA9IGZpbmRDaGFuZ2VMb2dzKCRmdW5jdGlvbkxpc3RzKTsKICMgR2V0IHRo
ZSBsYXRlc3QgQ2hhbmdlTG9nIGZpbGVzIGZyb20gc3ZuLgogbXkgJGNoYW5nZUxvZ3MgPSBnZXRM
YXRlc3RDaGFuZ2VMb2dzKCRwcmVmaXhlcyk7CiAKLWlmIChAJGNoYW5nZUxvZ3MgJiYgJHVwZGF0
ZUNoYW5nZUxvZ3MgJiYgJGlzU1ZOKSB7CitpZiAoQCRjaGFuZ2VMb2dzICYmICR1cGRhdGVDaGFu
Z2VMb2dzICYmIGlzU1ZOKCkpIHsKICAgICByZXNvbHZlQ29uZmxpY3RlZENoYW5nZUxvZ3MoJGNo
YW5nZUxvZ3MpOwogfQogCkBAIC0xNDM2LDEyICsxNDM4LDEyIEBAIHN1YiBwcm9jZXNzUGF0aHMo
XEApCiAKIHN1YiBkaWZmRnJvbVRvU3RyaW5nKCkKIHsKLSAgICByZXR1cm4gIiIgaWYgJGlzU1ZO
OworICAgIHJldHVybiAiIiBpZiBpc1NWTigpOwogICAgIHJldHVybiAkZ2l0Q29tbWl0IGlmICRn
aXRDb21taXQgPX4gbS8uK1wuXC4uKy87CiAgICAgcmV0dXJuICJcIiRnaXRDb21taXReXCIgXCIk
Z2l0Q29tbWl0XCIiIGlmICRnaXRDb21taXQ7CiAgICAgcmV0dXJuICItLWNhY2hlZCIgaWYgJGdp
dEluZGV4OwogICAgIHJldHVybiAkbWVyZ2VCYXNlIGlmICRtZXJnZUJhc2U7Ci0gICAgcmV0dXJu
ICJIRUFEIiBpZiAkaXNHaXQ7CisgICAgcmV0dXJuICJIRUFEIiBpZiBpc0dpdCgpOwogfQogCiBz
dWIgZGlmZkNvbW1hbmQoQCkKQEAgLTE0NTEsOSArMTQ1Myw5IEBAIHN1YiBkaWZmQ29tbWFuZChA
KQogICAgIG15ICRwYXRoc1N0cmluZyA9ICInIiAuIGpvaW4oIicgJyIsIEBwYXRocykgLiAiJyI7
IAogCiAgICAgbXkgJGNvbW1hbmQ7Ci0gICAgaWYgKCRpc1NWTikgeworICAgIGlmIChpc1NWTigp
KSB7CiAgICAgICAgICRjb21tYW5kID0gIiRTVk4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXggLU4g
JHBhdGhzU3RyaW5nIjsKLSAgICB9IGVsc2lmICgkaXNHaXQpIHsKKyAgICB9IGVsc2lmIChpc0dp
dCgpKSB7CiAgICAgICAgICRjb21tYW5kID0gIiRHSVQgZGlmZiAtLW5vLWV4dC1kaWZmIC1VMCAi
IC4gZGlmZkZyb21Ub1N0cmluZygpOwogICAgICAgICAkY29tbWFuZCAuPSAiIC0tICRwYXRoc1N0
cmluZyIgdW5sZXNzICRnaXRDb21taXQgb3IgJG1lcmdlQmFzZTsKICAgICB9CkBAIC0xNDY3LDkg
KzE0NjksOSBAQCBzdWIgc3RhdHVzQ29tbWFuZChAKQogCiAgICAgbXkgJGZpbGVzU3RyaW5nID0g
IlwiIiAuIGpvaW4gKCJcIiBcIiIsIEBmaWxlcykgLiAiXCIiOwogICAgIG15ICRjb21tYW5kOwot
ICAgIGlmICgkaXNTVk4pIHsKKyAgICBpZiAoaXNTVk4oKSkgewogICAgICAgICAkY29tbWFuZCA9
ICIkU1ZOIHN0YXQgJGZpbGVzU3RyaW5nIjsKLSAgICB9IGVsc2lmICgkaXNHaXQpIHsKKyAgICB9
IGVsc2lmIChpc0dpdCgpKSB7CiAgICAgICAgICRjb21tYW5kID0gIiRHSVQgZGlmZiAtciAtLW5h
bWUtc3RhdHVzIC1NIC1DICIgLiBkaWZmRnJvbVRvU3RyaW5nKCk7CiAgICAgICAgICRjb21tYW5k
IC49ICIgLS0gJGZpbGVzU3RyaW5nIiB1bmxlc3MgJGdpdENvbW1pdDsKICAgICB9CkBAIC0xNDgy
LDkgKzE0ODQsOSBAQCBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQpCiAgICAgbXkgKCRjaGFuZ2Vk
RmlsZXNTdHJpbmcpID0gQF87CiAKICAgICBteSAkY29tbWFuZDsKLSAgICBpZiAoJGlzU1ZOKSB7
CisgICAgaWYgKGlzU1ZOKCkpIHsKICAgICAgICAgJGNvbW1hbmQgPSAiJyRGaW5kQmluOjpCaW4v
c3ZuLWNyZWF0ZS1wYXRjaCcgJGNoYW5nZWRGaWxlc1N0cmluZyI7Ci0gICAgfSBlbHNpZiAoJGlz
R2l0KSB7CisgICAgfSBlbHNpZiAoaXNHaXQoKSkgewogICAgICAgICAkY29tbWFuZCA9ICIkR0lU
IGRpZmYgLU0gLUMgIiAuIGRpZmZGcm9tVG9TdHJpbmcoKTsKICAgICAgICAgJGNvbW1hbmQgLj0g
IiAtLSAkY2hhbmdlZEZpbGVzU3RyaW5nIiB1bmxlc3MgJGdpdENvbW1pdDsKICAgICB9CkBAIC0x
NDk0LDggKzE0OTYsOCBAQCBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQpCiAKIHN1YiBkaWZmSGVh
ZGVyRm9ybWF0KCkKIHsKLSAgICByZXR1cm4gcXIvXkluZGV4OiAoXFMrKVtcclxuXSokLyBpZiAk
aXNTVk47Ci0gICAgcmV0dXJuIHFyL15kaWZmIC0tZ2l0IGFcLy4rIGJcLyguKykkLyBpZiAkaXNH
aXQ7CisgICAgcmV0dXJuIHFyL15JbmRleDogKFxTKylbXHJcbl0qJC8gaWYgaXNTVk4oKTsKKyAg
ICByZXR1cm4gcXIvXmRpZmYgLS1naXQgYVwvLisgYlwvKC4rKSQvIGlmIGlzR2l0KCk7CiB9CiAK
IHN1YiBmaW5kT3JpZ2luYWxGaWxlRnJvbVN2bigkKQpAQCAtMTYwNyw3ICsxNjA5LDcgQEAgc3Vi
IGdlbmVyYXRlRmlsZUxpc3QoXCUpCiAgICAgICAgIG15ICRvcmlnaW5hbDsKICAgICAgICAgbXkg
JGZpbGU7CiAKLSAgICAgICAgaWYgKCRpc1NWTikgeworICAgICAgICBpZiAoaXNTVk4oKSkgewog
ICAgICAgICAgICAgbXkgJG1hdGNoZXM7CiAgICAgICAgICAgICBpZiAoaXNTVk5WZXJzaW9uMTZP
ck5ld2VyKCkpIHsKICAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IC9eKFsgQUNETVJdKShbIENN
XSkuezV9ICguKz8pW1xyXG5dKiQvOwpAQCAtMTYyOCw3ICsxNjMwLDcgQEAgc3ViIGdlbmVyYXRl
RmlsZUxpc3QoXCUpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50
OyAgIyBlcnJvciBvdXRwdXQgZnJvbSBzdm4gc3RhdAogICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2lmICgkaXNHaXQpIHsKKyAgICAgICAgfSBlbHNpZiAoaXNHaXQoKSkgewogICAgICAgICAg
ICAgaWYgKC9eKFtBRE1dKVx0KC4rKSQvKSB7CiAgICAgICAgICAgICAgICAgJHN0YXR1cyA9ICQx
OwogICAgICAgICAgICAgICAgICRwcm9wZXJ0eVN0YXR1cyA9ICIgIjsgICMgZ2l0IGRvZXNuJ3Qg
aGF2ZSBwcm9wZXJ0aWVzCkBAIC0xNjk4LDcgKzE3MDAsNyBAQCBzdWIgaXNBZGRlZFN0YXR1cygk
KQogCiAgICAgbXkgJXN0YXR1c0NvZGVzID0gKAogICAgICAgICAiQSIgPT4gMSwKLSAgICAgICAg
IkMiID0+ICRpc0dpdCwKKyAgICAgICAgIkMiID0+IGlzR2l0KCksCiAgICAgICAgICJSIiA9PiAx
LAogICAgICk7CiAKQEAgLTE3MTgsOCArMTcyMCw4IEBAIHN1YiBpc0NvbmZsaWN0U3RhdHVzKCQp
CiAgICAgKTsKIAogICAgIHJldHVybiAwIGlmICgkZ2l0Q29tbWl0IHx8ICRnaXRJbmRleCk7ICMg
YW4gZXhpc3RpbmcgY29tbWl0IG9yIHN0YWdlZCBjaGFuZ2UgY2Fubm90IGhhdmUgY29uZmxpY3Rz
Ci0gICAgcmV0dXJuICRzdm57JHN0YXR1c30gaWYgJGlzU1ZOOwotICAgIHJldHVybiAkZ2l0eyRz
dGF0dXN9IGlmICRpc0dpdDsKKyAgICByZXR1cm4gJHN2bnskc3RhdHVzfSBpZiBpc1NWTigpOwor
ICAgIHJldHVybiAkZ2l0eyRzdGF0dXN9IGlmIGlzR2l0KCk7CiB9CiAKIHN1YiBzdGF0dXNEZXNj
cmlwdGlvbigkJCQkKQpAQCAtMTc0Miw4ICsxNzQ0LDggQEAgc3ViIHN0YXR1c0Rlc2NyaXB0aW9u
KCQkJCQpCiAgICAgJGdpdHsiUiJ9ID0gIiBSZW5hbWVkIGZyb20gXCVzLiI7CiAKICAgICBteSAk
ZGVzY3JpcHRpb247Ci0gICAgJGRlc2NyaXB0aW9uID0gc3ByaW50Zigkc3ZueyRzdGF0dXN9LCAk
b3JpZ2luYWwpIGlmICRpc1NWTiAmJiBleGlzdHMgJHN2bnskc3RhdHVzfTsKLSAgICAkZGVzY3Jp
cHRpb24gPSBzcHJpbnRmKCRnaXR7JHN0YXR1c30sICRvcmlnaW5hbCkgaWYgJGlzR2l0ICYmIGV4
aXN0cyAkZ2l0eyRzdGF0dXN9OworICAgICRkZXNjcmlwdGlvbiA9IHNwcmludGYoJHN2bnskc3Rh
dHVzfSwgJG9yaWdpbmFsKSBpZiBpc1NWTigpICYmIGV4aXN0cyAkc3ZueyRzdGF0dXN9OworICAg
ICRkZXNjcmlwdGlvbiA9IHNwcmludGYoJGdpdHskc3RhdHVzfSwgJG9yaWdpbmFsKSBpZiBpc0dp
dCgpICYmIGV4aXN0cyAkZ2l0eyRzdGF0dXN9OwogICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCAk
ZGVzY3JpcHRpb247CiAKICAgICAkZGVzY3JpcHRpb24gLj0gJHByb3BlcnR5RGVzY3JpcHRpb24g
dW5sZXNzIGlzQWRkZWRTdGF0dXMoJHN0YXR1cyk7CkBAIC0xNzc2LDEwICsxNzc4LDEwIEBAIHN1
YiBleHRyYWN0TGluZVJhbmdlKCQpCiAKICAgICBteSAoJHN0YXJ0LCAkZW5kKSA9ICgtMSwgLTEp
OwogCi0gICAgaWYgKCRpc1NWTiAmJiAkc3RyaW5nID1+IC9eXGQrKCxcZCspP1thY2RdKFxkKyko
LChcZCspKT8vKSB7CisgICAgaWYgKGlzU1ZOKCkgJiYgJHN0cmluZyA9fiAvXlxkKygsXGQrKT9b
YWNkXShcZCspKCwoXGQrKSk/LykgewogICAgICAgICAkc3RhcnQgPSAkMjsKICAgICAgICAgJGVu
ZCA9ICQ0IHx8ICQyOwotICAgIH0gZWxzaWYgKCRpc0dpdCAmJiAkc3RyaW5nID1+IC9eQEAgLVxk
KygsXGQrKT8gXCsoXGQrKSgsKFxkKykpPyBAQC8pIHsKKyAgICB9IGVsc2lmIChpc0dpdCgpICYm
ICRzdHJpbmcgPX4gL15AQCAtXGQrKCxcZCspPyBcKyhcZCspKCwoXGQrKSk/IEBALykgewogICAg
ICAgICAkc3RhcnQgPSAkMjsKICAgICAgICAgJGVuZCA9IGRlZmluZWQoJDQpID8gJDQgKyAkMiAt
IDEgOiAkMjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtIGIv
VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQppbmRleCAzMTI3YmQ0ZTNmMmI2NWM1MWMwNTMwOWQy
MzIyZjU0OTMwNWFmNDEyLi4xYjYwZTYyMDQ1MzIxNmNhM2UxYTllNTFjZWNkNDEyODlhNTNhZTIx
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL1ZDU1V0aWxzLnBtCisrKyBiL1Rvb2xzL1Njcmlw
dHMvVkNTVXRpbHMucG0KQEAgLTE5OSwxMSArMTk5LDEyIEBAIHN1YiBpc0dpdERpcmVjdG9yeSgk
KQogICAgIHJldHVybiBzeXN0ZW0oImNkICRkaXIgJiYgZ2l0IHJldi1wYXJzZSA+ICIgLiBGaWxl
OjpTcGVjLT5kZXZudWxsKCkgLiAiIDI+JjEiKSA9PSAwOwogfQogCi1zdWIgaXNHaXQoKQorc3Vi
IGlzR2l0KDskKQogeworICAgIG15ICgkZGlyZWN0b3J5KSA9IEBfOwogICAgIHJldHVybiAkaXNH
aXQgaWYgZGVmaW5lZCAkaXNHaXQ7CiAKLSAgICAkaXNHaXQgPSBpc0dpdERpcmVjdG9yeSgiLiIp
OworICAgICRpc0dpdCA9IGlzR2l0RGlyZWN0b3J5KCRkaXJlY3RvcnkgPyAkZGlyZWN0b3J5IDog
Ii4iKTsKICAgICByZXR1cm4gJGlzR2l0OwogfQogCkBAIC0yNTIsMTEgKzI1MywxMiBAQCBzdWIg
aXNTVk5EaXJlY3RvcnkoJCkKICAgICByZXR1cm4gc3lzdGVtKCJjZCAkZGlyICYmIHN2biBpbmZv
ID4gIiAuIEZpbGU6OlNwZWMtPmRldm51bGwoKSAuICIgMj4mMSIpID09IDA7CiB9CiAKLXN1YiBp
c1NWTigpCitzdWIgaXNTVk4oOyQpCiB7CisgICAgbXkgKCRkaXJlY3RvcnkpID0gQF87CiAgICAg
cmV0dXJuICRpc1NWTiBpZiBkZWZpbmVkICRpc1NWTjsKIAotICAgICRpc1NWTiA9IGlzU1ZORGly
ZWN0b3J5KCIuIik7CisgICAgJGlzU1ZOID0gaXNTVk5EaXJlY3RvcnkoJGRpcmVjdG9yeSA/ICRk
aXJlY3RvcnkgOiAiLiIpOwogICAgIHJldHVybiAkaXNTVk47CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119348</attachid>
            <date>2011-12-14 17:29:06 -0800</date>
            <delta_ts>2011-12-14 22:32:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74485-20111215102905.patch</filename>
            <type>text/plain</type>
            <size>7515</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGRhMDQ1NTJkNGNhYzBmMmZlZmU0MDBkNzFiZmJmNzNh
OTIxZTdhNS4uYzc1NGNiMmVjYzhmMjBlM2Y2Mzk3ZTM1NmE2YmRjMzM0YzJjMDk4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMy
IEBACiAyMDExLTEyLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBbUmVmYWN0b3JpbmddIEluIHByZXBhcmUtQ2hhbmdlTG9nLCByZXBsYWNlICRpc0dp
dCBhbmQgJGlzU1ZOIHdpdGgKKyAgICAgICAgVkNTVXRpbHM6OmlzR2l0KCkgYW5kIFZDU1V0aWxz
Ojppc1NWTigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBhcmUgcGxhbm5pbmcgdG8gd3JpdGUgdW5pdC10ZXN0cyBmb3IgcHJlcGFyZS1DaGFuZ2VM
b2cgaW4gYSBydW4tbGVha3NfdW5pdHRlc3QKKyAgICAgICAgbWFubmVyLiBUaGlzIGJ1ZyBpcyBv
bmUgb2YgdGhlIGluY3JlbWVudGFsIHJlZmFjdG9yaW5ncyB0byByZW1vdmUgYWxsIHRvcC1sZXZl
bAorICAgICAgICBjb2RlIGFuZCBnbG9iYWwgdmFyaWFibGVzIGZyb20gcHJlcGFyZS1DaGFuZ2VM
b2cuIFRoaXMgcGF0Y2ggcmVwbGFjZXMgJGlzR2l0IGFuZCAkaXNTVk4KKyAgICAgICAgd2l0aCBW
Q1NVdGlsczo6aXNHaXQoKSBhbmQgVkNTVXRpbHM6OmlzU1ZOKCkuIFRoaXMgcGF0Y2ggYWxzbyBy
ZW1vdmVzIGZpcnN0RGlyZWN0b3J5T3JDd2QoKSwKKyAgICAgICAgYXNzdW1pbmcgdGhhdCBubyB1
c2VyIHdpbGwgbWl4IEdpdC9TVk4gY2hlY2tvdXRzIGFuZCB0aHVzIHdlIGNhbiBqdWRnZSBTVk4g
b3IgR2l0CisgICAgICAgIGp1c3QgYnkgbG9va2luZyBhdCB0aGUgY3VycmVudCB3b3JraW5nIGRp
cmVjdG9yeS4KKworICAgICAgICAqIFNjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2c6IFJlbW92ZWQg
Zmlyc3REaXJlY3RvcnlPckN3ZCgpLgorICAgICAgICAoZGlmZkZyb21Ub1N0cmluZyk6CisgICAg
ICAgIChkaWZmQ29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKGNy
ZWF0ZVBhdGNoQ29tbWFuZCk6CisgICAgICAgIChkaWZmSGVhZGVyRm9ybWF0KToKKyAgICAgICAg
KGdlbmVyYXRlRmlsZUxpc3QpOgorICAgICAgICAoaXNBZGRlZFN0YXR1cyk6CisgICAgICAgIChp
c0NvbmZsaWN0U3RhdHVzKToKKyAgICAgICAgKHN0YXR1c0Rlc2NyaXB0aW9uKToKKyAgICAgICAg
KGV4dHJhY3RMaW5lUmFuZ2UpOgorCisyMDExLTEyLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAyNzYx
LgogICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMDI3NjEKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDg1CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwppbmRleCA5NGM1NmJkNzg1MTdhNzNiOTFmYTUzYjFkYmZhMTk2ZjEwMzZj
NmQ1Li5lNzlhNTFlMDViNjA5N2YwYjQwY2Y2OGM3YTU5NTI3NTg0ZjdhOWZhIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL1NjcmlwdHMvcHJl
cGFyZS1DaGFuZ2VMb2cKQEAgLTc0LDcgKzc0LDYgQEAgc3ViIHJlc29sdmVDb25mbGljdGVkQ2hh
bmdlTG9ncygkKTsKIHN1YiBnZW5lcmF0ZU5ld0NoYW5nZUxvZ3MoJCQkJCQpOwogc3ViIHByaW50
RGlmZigkKTsKIHN1YiBvcGVuQ2hhbmdlTG9ncygkKTsKLXN1YiBmaXJzdERpcmVjdG9yeU9yQ3dk
KFwlKTsKIHN1YiBkaWZmRnJvbVRvU3RyaW5nKCk7CiBzdWIgZGlmZkNvbW1hbmQoQCk7CiBzdWIg
c3RhdHVzQ29tbWFuZChAKTsKQEAgLTE2NiwxMSArMTY1LDEwIEBAIGRpZSAiLS1naXQtY29tbWl0
IGFuZCAtLWdpdC1pbmRleCBhcmUgaW5jb21wYXRpYmxlLiIgaWYgKCRnaXRJbmRleCAmJiAkZ2l0
Q29tbWl0CiAKIAogIyMjIE1haW4gcm91dGluZS4KLW15ICVwYXRocyA9IHByb2Nlc3NQYXRocyhA
QVJHVik7CiAKLW15ICRpc0dpdCA9IGlzR2l0RGlyZWN0b3J5KGZpcnN0RGlyZWN0b3J5T3JDd2Qo
JXBhdGhzKSk7Ci1teSAkaXNTVk4gPSBpc1NWTkRpcmVjdG9yeShmaXJzdERpcmVjdG9yeU9yQ3dk
KCVwYXRocykpOwotJGlzU1ZOIHx8ICRpc0dpdCB8fCBkaWUgIkNvdWxkbid0IGRldGVybWluZSB5
b3VyIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uIjsKK2lzU1ZOKCkgfHwgaXNHaXQoKSB8fCBkaWUg
IkNvdWxkbid0IGRldGVybWluZSB5b3VyIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uIjsKKworbXkg
JXBhdGhzID0gcHJvY2Vzc1BhdGhzKEBBUkdWKTsKIAogIyBGaW5kIHRoZSBsaXN0IG9mIG1vZGlm
aWVkIGZpbGVzCiBteSAoJGNoYW5nZWRGaWxlcywgJGNvbmZsaWN0RmlsZXMsICRmdW5jdGlvbkxp
c3RzLCAkYWRkZWRSZWdyZXNzaW9uVGVzdHMpID0gZ2VuZXJhdGVGaWxlTGlzdCglcGF0aHMpOwpA
QCAtMjExLDcgKzIwOSw3IEBAIG15ICgkZmlsZXNJbkNoYW5nZUxvZywgJHByZWZpeGVzKSA9IGZp
bmRDaGFuZ2VMb2dzKCRmdW5jdGlvbkxpc3RzKTsKICMgR2V0IHRoZSBsYXRlc3QgQ2hhbmdlTG9n
IGZpbGVzIGZyb20gc3ZuLgogbXkgJGNoYW5nZUxvZ3MgPSBnZXRMYXRlc3RDaGFuZ2VMb2dzKCRw
cmVmaXhlcyk7CiAKLWlmIChAJGNoYW5nZUxvZ3MgJiYgJHVwZGF0ZUNoYW5nZUxvZ3MgJiYgJGlz
U1ZOKSB7CitpZiAoQCRjaGFuZ2VMb2dzICYmICR1cGRhdGVDaGFuZ2VMb2dzICYmIGlzU1ZOKCkp
IHsKICAgICByZXNvbHZlQ29uZmxpY3RlZENoYW5nZUxvZ3MoJGNoYW5nZUxvZ3MpOwogfQogCkBA
IC0xNDM2LDEyICsxNDM0LDEyIEBAIHN1YiBwcm9jZXNzUGF0aHMoXEApCiAKIHN1YiBkaWZmRnJv
bVRvU3RyaW5nKCkKIHsKLSAgICByZXR1cm4gIiIgaWYgJGlzU1ZOOworICAgIHJldHVybiAiIiBp
ZiBpc1NWTigpOwogICAgIHJldHVybiAkZ2l0Q29tbWl0IGlmICRnaXRDb21taXQgPX4gbS8uK1wu
XC4uKy87CiAgICAgcmV0dXJuICJcIiRnaXRDb21taXReXCIgXCIkZ2l0Q29tbWl0XCIiIGlmICRn
aXRDb21taXQ7CiAgICAgcmV0dXJuICItLWNhY2hlZCIgaWYgJGdpdEluZGV4OwogICAgIHJldHVy
biAkbWVyZ2VCYXNlIGlmICRtZXJnZUJhc2U7Ci0gICAgcmV0dXJuICJIRUFEIiBpZiAkaXNHaXQ7
CisgICAgcmV0dXJuICJIRUFEIiBpZiBpc0dpdCgpOwogfQogCiBzdWIgZGlmZkNvbW1hbmQoQCkK
QEAgLTE0NTEsOSArMTQ0OSw5IEBAIHN1YiBkaWZmQ29tbWFuZChAKQogICAgIG15ICRwYXRoc1N0
cmluZyA9ICInIiAuIGpvaW4oIicgJyIsIEBwYXRocykgLiAiJyI7IAogCiAgICAgbXkgJGNvbW1h
bmQ7Ci0gICAgaWYgKCRpc1NWTikgeworICAgIGlmIChpc1NWTigpKSB7CiAgICAgICAgICRjb21t
YW5kID0gIiRTVk4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXggLU4gJHBhdGhzU3RyaW5nIjsKLSAg
ICB9IGVsc2lmICgkaXNHaXQpIHsKKyAgICB9IGVsc2lmIChpc0dpdCgpKSB7CiAgICAgICAgICRj
b21tYW5kID0gIiRHSVQgZGlmZiAtLW5vLWV4dC1kaWZmIC1VMCAiIC4gZGlmZkZyb21Ub1N0cmlu
ZygpOwogICAgICAgICAkY29tbWFuZCAuPSAiIC0tICRwYXRoc1N0cmluZyIgdW5sZXNzICRnaXRD
b21taXQgb3IgJG1lcmdlQmFzZTsKICAgICB9CkBAIC0xNDY3LDkgKzE0NjUsOSBAQCBzdWIgc3Rh
dHVzQ29tbWFuZChAKQogCiAgICAgbXkgJGZpbGVzU3RyaW5nID0gIlwiIiAuIGpvaW4gKCJcIiBc
IiIsIEBmaWxlcykgLiAiXCIiOwogICAgIG15ICRjb21tYW5kOwotICAgIGlmICgkaXNTVk4pIHsK
KyAgICBpZiAoaXNTVk4oKSkgewogICAgICAgICAkY29tbWFuZCA9ICIkU1ZOIHN0YXQgJGZpbGVz
U3RyaW5nIjsKLSAgICB9IGVsc2lmICgkaXNHaXQpIHsKKyAgICB9IGVsc2lmIChpc0dpdCgpKSB7
CiAgICAgICAgICRjb21tYW5kID0gIiRHSVQgZGlmZiAtciAtLW5hbWUtc3RhdHVzIC1NIC1DICIg
LiBkaWZmRnJvbVRvU3RyaW5nKCk7CiAgICAgICAgICRjb21tYW5kIC49ICIgLS0gJGZpbGVzU3Ry
aW5nIiB1bmxlc3MgJGdpdENvbW1pdDsKICAgICB9CkBAIC0xNDgyLDkgKzE0ODAsOSBAQCBzdWIg
Y3JlYXRlUGF0Y2hDb21tYW5kKCQpCiAgICAgbXkgKCRjaGFuZ2VkRmlsZXNTdHJpbmcpID0gQF87
CiAKICAgICBteSAkY29tbWFuZDsKLSAgICBpZiAoJGlzU1ZOKSB7CisgICAgaWYgKGlzU1ZOKCkp
IHsKICAgICAgICAgJGNvbW1hbmQgPSAiJyRGaW5kQmluOjpCaW4vc3ZuLWNyZWF0ZS1wYXRjaCcg
JGNoYW5nZWRGaWxlc1N0cmluZyI7Ci0gICAgfSBlbHNpZiAoJGlzR2l0KSB7CisgICAgfSBlbHNp
ZiAoaXNHaXQoKSkgewogICAgICAgICAkY29tbWFuZCA9ICIkR0lUIGRpZmYgLU0gLUMgIiAuIGRp
ZmZGcm9tVG9TdHJpbmcoKTsKICAgICAgICAgJGNvbW1hbmQgLj0gIiAtLSAkY2hhbmdlZEZpbGVz
U3RyaW5nIiB1bmxlc3MgJGdpdENvbW1pdDsKICAgICB9CkBAIC0xNDk0LDggKzE0OTIsOCBAQCBz
dWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQpCiAKIHN1YiBkaWZmSGVhZGVyRm9ybWF0KCkKIHsKLSAg
ICByZXR1cm4gcXIvXkluZGV4OiAoXFMrKVtcclxuXSokLyBpZiAkaXNTVk47Ci0gICAgcmV0dXJu
IHFyL15kaWZmIC0tZ2l0IGFcLy4rIGJcLyguKykkLyBpZiAkaXNHaXQ7CisgICAgcmV0dXJuIHFy
L15JbmRleDogKFxTKylbXHJcbl0qJC8gaWYgaXNTVk4oKTsKKyAgICByZXR1cm4gcXIvXmRpZmYg
LS1naXQgYVwvLisgYlwvKC4rKSQvIGlmIGlzR2l0KCk7CiB9CiAKIHN1YiBmaW5kT3JpZ2luYWxG
aWxlRnJvbVN2bigkKQpAQCAtMTYwNyw3ICsxNjA1LDcgQEAgc3ViIGdlbmVyYXRlRmlsZUxpc3Qo
XCUpCiAgICAgICAgIG15ICRvcmlnaW5hbDsKICAgICAgICAgbXkgJGZpbGU7CiAKLSAgICAgICAg
aWYgKCRpc1NWTikgeworICAgICAgICBpZiAoaXNTVk4oKSkgewogICAgICAgICAgICAgbXkgJG1h
dGNoZXM7CiAgICAgICAgICAgICBpZiAoaXNTVk5WZXJzaW9uMTZPck5ld2VyKCkpIHsKICAgICAg
ICAgICAgICAgICAkbWF0Y2hlcyA9IC9eKFsgQUNETVJdKShbIENNXSkuezV9ICguKz8pW1xyXG5d
KiQvOwpAQCAtMTYyOCw3ICsxNjI2LDcgQEAgc3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUpCiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50OyAgIyBlcnJvciBvdXRwdXQg
ZnJvbSBzdm4gc3RhdAogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2lmICgkaXNHaXQpIHsK
KyAgICAgICAgfSBlbHNpZiAoaXNHaXQoKSkgewogICAgICAgICAgICAgaWYgKC9eKFtBRE1dKVx0
KC4rKSQvKSB7CiAgICAgICAgICAgICAgICAgJHN0YXR1cyA9ICQxOwogICAgICAgICAgICAgICAg
ICRwcm9wZXJ0eVN0YXR1cyA9ICIgIjsgICMgZ2l0IGRvZXNuJ3QgaGF2ZSBwcm9wZXJ0aWVzCkBA
IC0xNjk4LDcgKzE2OTYsNyBAQCBzdWIgaXNBZGRlZFN0YXR1cygkKQogCiAgICAgbXkgJXN0YXR1
c0NvZGVzID0gKAogICAgICAgICAiQSIgPT4gMSwKLSAgICAgICAgIkMiID0+ICRpc0dpdCwKKyAg
ICAgICAgIkMiID0+IGlzR2l0KCksCiAgICAgICAgICJSIiA9PiAxLAogICAgICk7CiAKQEAgLTE3
MTgsOCArMTcxNiw4IEBAIHN1YiBpc0NvbmZsaWN0U3RhdHVzKCQpCiAgICAgKTsKIAogICAgIHJl
dHVybiAwIGlmICgkZ2l0Q29tbWl0IHx8ICRnaXRJbmRleCk7ICMgYW4gZXhpc3RpbmcgY29tbWl0
IG9yIHN0YWdlZCBjaGFuZ2UgY2Fubm90IGhhdmUgY29uZmxpY3RzCi0gICAgcmV0dXJuICRzdm57
JHN0YXR1c30gaWYgJGlzU1ZOOwotICAgIHJldHVybiAkZ2l0eyRzdGF0dXN9IGlmICRpc0dpdDsK
KyAgICByZXR1cm4gJHN2bnskc3RhdHVzfSBpZiBpc1NWTigpOworICAgIHJldHVybiAkZ2l0eyRz
dGF0dXN9IGlmIGlzR2l0KCk7CiB9CiAKIHN1YiBzdGF0dXNEZXNjcmlwdGlvbigkJCQkKQpAQCAt
MTc0Miw4ICsxNzQwLDggQEAgc3ViIHN0YXR1c0Rlc2NyaXB0aW9uKCQkJCQpCiAgICAgJGdpdHsi
UiJ9ID0gIiBSZW5hbWVkIGZyb20gXCVzLiI7CiAKICAgICBteSAkZGVzY3JpcHRpb247Ci0gICAg
JGRlc2NyaXB0aW9uID0gc3ByaW50Zigkc3ZueyRzdGF0dXN9LCAkb3JpZ2luYWwpIGlmICRpc1NW
TiAmJiBleGlzdHMgJHN2bnskc3RhdHVzfTsKLSAgICAkZGVzY3JpcHRpb24gPSBzcHJpbnRmKCRn
aXR7JHN0YXR1c30sICRvcmlnaW5hbCkgaWYgJGlzR2l0ICYmIGV4aXN0cyAkZ2l0eyRzdGF0dXN9
OworICAgICRkZXNjcmlwdGlvbiA9IHNwcmludGYoJHN2bnskc3RhdHVzfSwgJG9yaWdpbmFsKSBp
ZiBpc1NWTigpICYmIGV4aXN0cyAkc3ZueyRzdGF0dXN9OworICAgICRkZXNjcmlwdGlvbiA9IHNw
cmludGYoJGdpdHskc3RhdHVzfSwgJG9yaWdpbmFsKSBpZiBpc0dpdCgpICYmIGV4aXN0cyAkZ2l0
eyRzdGF0dXN9OwogICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCAkZGVzY3JpcHRpb247CiAKICAg
ICAkZGVzY3JpcHRpb24gLj0gJHByb3BlcnR5RGVzY3JpcHRpb24gdW5sZXNzIGlzQWRkZWRTdGF0
dXMoJHN0YXR1cyk7CkBAIC0xNzc2LDEwICsxNzc0LDEwIEBAIHN1YiBleHRyYWN0TGluZVJhbmdl
KCQpCiAKICAgICBteSAoJHN0YXJ0LCAkZW5kKSA9ICgtMSwgLTEpOwogCi0gICAgaWYgKCRpc1NW
TiAmJiAkc3RyaW5nID1+IC9eXGQrKCxcZCspP1thY2RdKFxkKykoLChcZCspKT8vKSB7CisgICAg
aWYgKGlzU1ZOKCkgJiYgJHN0cmluZyA9fiAvXlxkKygsXGQrKT9bYWNkXShcZCspKCwoXGQrKSk/
LykgewogICAgICAgICAkc3RhcnQgPSAkMjsKICAgICAgICAgJGVuZCA9ICQ0IHx8ICQyOwotICAg
IH0gZWxzaWYgKCRpc0dpdCAmJiAkc3RyaW5nID1+IC9eQEAgLVxkKygsXGQrKT8gXCsoXGQrKSgs
KFxkKykpPyBAQC8pIHsKKyAgICB9IGVsc2lmIChpc0dpdCgpICYmICRzdHJpbmcgPX4gL15AQCAt
XGQrKCxcZCspPyBcKyhcZCspKCwoXGQrKSk/IEBALykgewogICAgICAgICAkc3RhcnQgPSAkMjsK
ICAgICAgICAgJGVuZCA9IGRlZmluZWQoJDQpID8gJDQgKyAkMiAtIDEgOiAkMjsKICAgICB9CkBA
IC0xNzg3LDE4ICsxNzg1LDYgQEAgc3ViIGV4dHJhY3RMaW5lUmFuZ2UoJCkKICAgICByZXR1cm4g
KCRzdGFydCwgJGVuZCk7CiB9CiAKLXN1YiBmaXJzdERpcmVjdG9yeU9yQ3dkKFwlKQotewotICAg
IG15ICgkcGF0aHMpID0gQF87Ci0KLSAgICBteSAkZGlyID0gIi4iOwotICAgIG15IEBkaXJzID0g
a2V5cyglJHBhdGhzKTsKLQotICAgICRkaXIgPSAtZCAkZGlyc1swXSA/ICRkaXJzWzBdIDogZGly
bmFtZSgkZGlyc1swXSkgaWYgQGRpcnM7Ci0KLSAgICByZXR1cm4gJGRpcjsKLX0KLQogc3ViIHRl
c3RMaXN0Rm9yQ2hhbmdlTG9nKEApCiB7CiAgICAgbXkgKEB0ZXN0cykgPSBAXzsK
</data>

          </attachment>
      

    </bug>

</bugzilla>