<?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>74836</bug_id>
          
          <creation_ts>2011-12-18 21:12:23 -0800</creation_ts>
          <short_desc>Replace webkitperl/run-leaks_unittest/RunLeaks.pm with webkitperl/LoadAsModule.pm</short_desc>
          <delta_ts>2021-10-16 14:54:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231868</see_also>
          <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>523696</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-18 21:12:23 -0800</bug_when>
    <thetext>webkitperl/run-leaks_unittest/RunLeaks.pm can be used for unit-testing of run-leaks only. Instead we can create more generalized webkitperl/LoadAsModule.pm, which can be used for unit-testing of other Perl scripts. We are planning to use it for unit-testing of prepare-ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523701</commentid>
    <comment_count>1</comment_count>
      <attachid>119810</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-18 21:22:42 -0800</bug_when>
    <thetext>Created attachment 119810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523704</commentid>
    <comment_count>2</comment_count>
      <attachid>119810</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-18 21:25:12 -0800</bug_when>
    <thetext>Comment on attachment 119810
Patch

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

&gt; Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:161
&gt; +my $actualOutput = LoadAsModule::parseLeaksOutput(\@input);

By the way, I am not sure why we need to replace @input with \@input.


Reduced test case:

sub f(\@){ my $p = shift; print &quot;@$p\n&quot;;}
my @v=(1, 2, 3);
f(@v);  # This works.

eval &apos;sub { sub ff(\@){ my $p = shift; print &quot;@$p\n&quot;;}}&apos;;
my @vv=(1, 2, 3);
ff(@vv);  # This does not work.
ff(\@vv);  # This works instead. Why???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523705</commentid>
    <comment_count>3</comment_count>
      <attachid>119811</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-18 21:27:10 -0800</bug_when>
    <thetext>Created attachment 119811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523961</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 10:07:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 119810 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119810&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:161
&gt; &gt; +my $actualOutput = LoadAsModule::parseLeaksOutput(\@input);
&gt; 
&gt; By the way, I am not sure why we need to replace @input with \@input.
&gt; 
&gt; Reduced test case:
&gt; 
&gt; sub f(\@){ my $p = shift; print &quot;@$p\n&quot;;}
&gt; my @v=(1, 2, 3);
&gt; f(@v);  # This works.
&gt; 
&gt; eval &apos;sub { sub ff(\@){ my $p = shift; print &quot;@$p\n&quot;;}}&apos;;
&gt; my @vv=(1, 2, 3);
&gt; ff(@vv);  # This does not work.
&gt; ff(\@vv);  # This works instead. Why???

It&apos;s because Perl doesn&apos;t see a prototype for ff(), so it defaults to the no-prototype behavior.  You can fix it by doing this (although I&apos;m not sure this is a good solution for generalizing the LoadAsModule.pm code (will look at the patch next):

sub ff(\@);
eval &apos;sub { sub ff(\@){ my $p = shift; print &quot;@$p\n&quot;;}}&apos;;
my @vv=(1, 2, 3);
ff(@vv);  # This now works.
# ff(\@vv);  # This now fails with a compilation error (Type of arg 1 to main::ff must be array (not reference constructor))

See the &quot;Prototypes&quot; section of &quot;man perlsub&quot; for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524183</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-19 14:11:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 119810 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119810&amp;action=review
&gt; &gt; eval &apos;sub { sub ff(\@){ my $p = shift; print &quot;@$p\n&quot;;}}&apos;;
&gt; &gt; my @vv=(1, 2, 3);
&gt; &gt; ff(@vv);  # This does not work.
&gt; &gt; ff(\@vv);  # This works instead. Why???
&gt; 
&gt; It&apos;s because Perl doesn&apos;t see a prototype for ff(), so it defaults to the no-prototype behavior.  You can fix it by doing this (although I&apos;m not sure this is a good solution for generalizing the LoadAsModule.pm code (will look at the patch next):
&gt; 
&gt; sub ff(\@);
&gt; eval &apos;sub { sub ff(\@){ my $p = shift; print &quot;@$p\n&quot;;}}&apos;;
&gt; my @vv=(1, 2, 3);
&gt; ff(@vv);  # This now works.
&gt; # ff(\@vv);  # This now fails with a compilation error (Type of arg 1 to main::ff must be array (not reference constructor))

ddkilzer: Thanks. However, actually, we cannot write the prototype like &apos;sub ff(\@)&apos; in LoadAsModule.pm, because we cannot easily know what prototypes will appear in the loading Perl script. So the possible options would be

[a] Use \@input instead of @input (i.e. this patch).
[b] Leave RunLeaks.pm as it is, and we create PrepareChangeLog.pm. PrepareChangeLog.pm will be almost a copy of RunLeaks.pm.

&gt; although I&apos;m not sure this is a good solution for generalizing the LoadAsModule.pm code

Do you prefer [b]?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524207</commentid>
    <comment_count>6</comment_count>
      <attachid>119811</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 14:56:52 -0800</bug_when>
    <thetext>Comment on attachment 119811
Patch

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

&gt; Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:36
&gt; -use RunLeaks;
&gt;  use Test::More;
&gt; +use lib &quot;..&quot;;
&gt; +use LoadAsModule;
&gt; +
&gt; +LoadAsModule::load(&quot;run-leaks&quot;);

I think this is definitely a step in the right direction (sharing code to load Perl scripts as modules), but this implementation has a couple of drawbacks:

1. You need a separate LoadAsModule::load() call for each script.
2. Scripts to test are in the LoadAsModule package, not their own package.
3. If two scripts had to be loaded, any methods with the same name would collide.

I think LoadAsModule should work like this where the first argument is the package name, and the second is the script name:

use lib &quot;..&quot;;
use LoadAsModule qw(RunLeaks run-leaks);

There is a special &quot;import&quot; method that you may define that gets called when there are arguments to the &apos;use&apos; statement (see lib.pm for an example).

Maybe we can put the whole sub-package in a big eval statement?

package LoadAsModule;

[...]

sub import
{
    my ($self, $package, $script) = @_;

    eval q{
        package } . $package . q{;

        use [...];

        sub readFile($);

        my $runLeaksPath = File::Spec-&gt;catfile(sourceDir(), &quot;Tools&quot;, &quot;Scripts&quot;, &quot;} . $script . q{&quot;);
        eval &quot;sub {&quot; . readFile($runLeaksPath) . &quot;}&quot;;

        sub readFile($) {
        [...]
    };
}

I&apos;m not sure yet if this would work or not, though.

Maybe we can just do something more straight-forward without using a giant eval statement.  I&apos;m going to play with this a bit.

&gt; Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl:128
&gt; -is_deeply($actualOutput, $expectedOutput, &quot;leaks Report Version 2.0 (old)&quot;);
&gt; +is_deeply($actualOutput, $expectedOutput, &quot;leaks Report Version 2.0 (new)&quot;);

Nice catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524213</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 15:10:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; use LoadAsModule qw(RunLeaks run-leaks);

I&apos;ve got this working!

&gt; Maybe we can just do something more straight-forward without using a giant eval statement.  I&apos;m going to play with this a bit.

I&apos;ll post a patch or the new LoadAsModule.pm in a few minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524222</commentid>
    <comment_count>8</comment_count>
      <attachid>119929</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 15:21:22 -0800</bug_when>
    <thetext>Created attachment 119929
How to use import and eval in LoadAsModule.pm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524223</commentid>
    <comment_count>9</comment_count>
      <attachid>119811</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 15:22:10 -0800</bug_when>
    <thetext>Comment on attachment 119811
Patch

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

&gt;&gt; Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:36
&gt;&gt; +LoadAsModule::load(&quot;run-leaks&quot;);
&gt; 
&gt; I think this is definitely a step in the right direction (sharing code to load Perl scripts as modules), but this implementation has a couple of drawbacks:
&gt; 
&gt; 1. You need a separate LoadAsModule::load() call for each script.
&gt; 2. Scripts to test are in the LoadAsModule package, not their own package.
&gt; 3. If two scripts had to be loaded, any methods with the same name would collide.
&gt; 
&gt; I think LoadAsModule should work like this where the first argument is the package name, and the second is the script name:
&gt; 
&gt; use lib &quot;..&quot;;
&gt; use LoadAsModule qw(RunLeaks run-leaks);
&gt; 
&gt; There is a special &quot;import&quot; method that you may define that gets called when there are arguments to the &apos;use&apos; statement (see lib.pm for an example).
&gt; 
&gt; Maybe we can put the whole sub-package in a big eval statement?
&gt; 
&gt; package LoadAsModule;
&gt; 
&gt; [...]
&gt; 
&gt; sub import
&gt; {
&gt;     my ($self, $package, $script) = @_;
&gt; 
&gt;     eval q{
&gt;         package } . $package . q{;
&gt; 
&gt;         use [...];
&gt; 
&gt;         sub readFile($);
&gt; 
&gt;         my $runLeaksPath = File::Spec-&gt;catfile(sourceDir(), &quot;Tools&quot;, &quot;Scripts&quot;, &quot;} . $script . q{&quot;);
&gt;         eval &quot;sub {&quot; . readFile($runLeaksPath) . &quot;}&quot;;
&gt; 
&gt;         sub readFile($) {
&gt;         [...]
&gt;     };
&gt; }
&gt; 
&gt; I&apos;m not sure yet if this would work or not, though.
&gt; 
&gt; Maybe we can just do something more straight-forward without using a giant eval statement.  I&apos;m going to play with this a bit.

See the attached patch for how to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524248</commentid>
    <comment_count>10</comment_count>
      <attachid>119935</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-19 16:03:00 -0800</bug_when>
    <thetext>Created attachment 119935
rebased patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524396</commentid>
    <comment_count>11</comment_count>
      <attachid>119935</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-19 19:59:44 -0800</bug_when>
    <thetext>Comment on attachment 119935
rebased patch for review

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

r=me

&gt; Tools/Scripts/webkitperl/LoadAsModule.pm:35
&gt; +use lib File::Spec-&gt;catdir($FindBin::Bin, &quot;..&quot;, &quot;..&quot;);

Are you sure you need two &quot;..&quot; arguments here?  It worked with just one &quot;..&quot; argument for me running:

./Tools/Scripts/test-webkitperl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524399</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-19 20:12:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 119935 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119935&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Tools/Scripts/webkitperl/LoadAsModule.pm:35
&gt; &gt; +use lib File::Spec-&gt;catdir($FindBin::Bin, &quot;..&quot;, &quot;..&quot;);
&gt; 
&gt; Are you sure you need two &quot;..&quot; arguments here?  It worked with just one &quot;..&quot; argument for me running:
&gt; 
&gt; ./Tools/Scripts/test-webkitperl

One &quot;..&quot; is enough to run ./Tools/Scripts/test-webkitperl, but two &quot;..&quot;s are needed to run ./Tools/Scripts/test-webkitperl and &apos;perl ./Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl&apos; (although I am not sure we need to support the latter).

Are there any concern with two &quot;..&quot;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524592</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-12-20 06:58:57 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 119935 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119935&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitperl/LoadAsModule.pm:35
&gt; &gt; &gt; +use lib File::Spec-&gt;catdir($FindBin::Bin, &quot;..&quot;, &quot;..&quot;);
&gt; &gt; 
&gt; &gt; Are you sure you need two &quot;..&quot; arguments here?  It worked with just one &quot;..&quot; argument for me running:
&gt; &gt; 
&gt; &gt; ./Tools/Scripts/test-webkitperl
&gt; 
&gt; One &quot;..&quot; is enough to run ./Tools/Scripts/test-webkitperl, but two &quot;..&quot;s are needed to run ./Tools/Scripts/test-webkitperl and &apos;perl ./Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl&apos; (although I am not sure we need to support the latter).
&gt; 
&gt; Are there any concern with two &quot;..&quot;s?

As long as ./Tools/Scripts/test-webkitperl works with two &quot;..&quot; arguments, that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524655</commentid>
    <comment_count>14</comment_count>
      <attachid>119935</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 09:40:50 -0800</bug_when>
    <thetext>Comment on attachment 119935
rebased patch for review

Clearing flags on attachment: 119935

Committed r103338: &lt;http://trac.webkit.org/changeset/103338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524656</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 09:40:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119810</attachid>
            <date>2011-12-18 21:22:42 -0800</date>
            <delta_ts>2011-12-18 21:27:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74836-20111219142240.patch</filename>
            <type>text/plain</type>
            <size>9246</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMTkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzM0MGUxZDMyZTM5ODcxMWU4YjNhZGFhZWM0NDM2NjYw
ZDFiYjZjOC4uOTA5MDljMmNlNTM2NTllYzdmMzQ5YWZiZTk2N2VlYjljNjNjYTQ4YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIz
IEBACiAyMDExLTEyLTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBSZXBsYWNlIHdlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L1J1bkxlYWtzLnBt
IHdpdGggd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IFNjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisgICAgICAgICAgICAgICBTY3Jp
cHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1u
ZXcucGwKKyAgICAgICAgICAgICAgIFNjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRl
c3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbAorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRwZXJsL0xvYWRBc01vZHVsZS5wbTogQWRkZWQuIEFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgcHJl
dmlvdXMgUnVuTGVha3MucG0uCisgICAgICAgIExvYWRBc01vZHVsZTo6bG9hZCgiZm9vLnBsIikg
bG9hZHMgc3Vicm91dGluZXMgaW4gZm9vLnBsIGludG8gYSBwYWNrYWdlLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvUnVuTGVha3MucG06IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYxLjAucGw6IFVzZWQgTG9hZEFzTW9kdWxlIGluc3RlYWQgb2YgUnVuTGVha3Mu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYyLjAtbmV3LnBsOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6IERpdHRv
LgorCisyMDExLTEyLTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBSRUdSRVNTSU9OKHIxMDMxNDkpOiBwcmVwYXJlLUNoYW5nZUxvZyBvdXRwdXRzIGEg
d2FybmluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ4MDgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xvYWRBc01vZHVs
ZS5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTM4YzFmMTZjNTY1OGIzZTY2NDE4MmI4N2QxNDRkNjdkYjA5Yzc3ZAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KQEAgLTAsMCAr
MSw2NSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorIworIyBJbXBvcnRzIFBlcmwgc2NyaXB0cyBpbnRvIGEgcGFja2FnZSBmb3Ig
ZWFzeSB1bml0IHRlc3RpbmcuCisKK3BhY2thZ2UgTG9hZEFzTW9kdWxlOworCit1c2Ugc3RyaWN0
OwordXNlIHdhcm5pbmdzOworCit1c2UgRmlsZTo6U3BlYzsKK3VzZSBGaW5kQmluOwordXNlIGxp
YiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Vi
a2l0ZGlyczsKKwordXNlIGJhc2UgJ0V4cG9ydGVyJzsKK3VzZSB2YXJzIHF3KEBFWFBPUlQgQEVY
UE9SVF9PSyAlRVhQT1JUX1RBR1MgJFZFUlNJT04pOworCitARVhQT1JUID0gKCk7CitARVhQT1JU
X09LID0gKCk7CislRVhQT1JUX1RBR1MgPSAoKTsKKyRWRVJTSU9OID0gJzEuMCc7CisKK3N1YiBs
b2FkKCQpOworc3ViIHJlYWRGaWxlKCQpOworCitzdWIgbG9hZCgkKQoreworICAgIG15ICRzY3Jp
cHRQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlw
dHMiLCBzaGlmdCk7CisgICAgZXZhbCAic3ViIHsiIC4gcmVhZEZpbGUoJHNjcmlwdFBhdGgpIC4g
In0iOworfQorCitzdWIgcmVhZEZpbGUoJCkKK3sKKyAgICBteSAkcGF0aCA9IHNoaWZ0OworICAg
IGxvY2FsICQvID0gdW5kZWY7ICMgUmVhZCBpbiB0aGUgd2hvbGUgZmlsZSBhdCBvbmNlLgorICAg
IG9wZW4gRklMRSwgIjwiLCAkcGF0aCBvciBkaWUgIkNhbm5vdCBvcGVuICRwYXRoXG4iOworICAg
IG15ICRjb250ZW50cyA9IDxGSUxFPjsKKyAgICBjbG9zZSBGSUxFOworICAgIHJldHVybiAkY29u
dGVudHM7Cit9OworCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1
bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvUnVuTGVha3MucG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc5YzYzNDkxNjRmYzJjZDA1ZTJhYTNlNTcxYTA0MjlmZjVlNzlkMWEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL3J1bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5wbQorKysgL2Rldi9udWxsCkBAIC0xLDU5
ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KLSMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSMgSW1wb3J0cyBydW4tbGVha3MgaW50byBhIHBhY2thZ2UgZm9yIGVh
c3kgdW5pdCB0ZXN0aW5nLgotCi1wYWNrYWdlIFJ1bkxlYWtzOwotCi11c2Ugc3RyaWN0OwotdXNl
IHdhcm5pbmdzOwotCi11c2UgRW5nbGlzaDsKLXVzZSBGaWxlOjpTcGVjOwotdXNlIEZpbmRCaW47
Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsK
LXVzZSB3ZWJraXRkaXJzOwotCi11c2UgYmFzZSAnRXhwb3J0ZXInIDsKLXVzZSB2YXJzIHF3KCBA
RVhQT1JUIEBFWFBPUlRfT0sgJUVYUE9SVF9UQUdTICRWRVJTSU9OICkgOwotCi1ARVhQT1JUID0g
KCk7Ci1ARVhQT1JUX09LID0gKCk7Ci0lRVhQT1JUX1RBR1MgPSAoKTsKLSRWRVJTSU9OID0gJzEu
MCc7Ci0KLXN1YiByZWFkRmlsZSgkKTsKLQotbXkgJHJ1bkxlYWtzUGF0aCA9IEZpbGU6OlNwZWMt
PmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJTY3JpcHRzIiwgInJ1bi1sZWFrcyIpOwot
ZXZhbCAic3ViIHsiIC4gcmVhZEZpbGUoJHJ1bkxlYWtzUGF0aCkgLiAifSI7Ci0KLXN1YiByZWFk
RmlsZSgkKSB7Ci0gICAgbG9jYWwgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1IgPSB1bmRlZjsgIyBS
ZWFkIGluIHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCi0gICAgb3BlbiBGSUxFLCAiPCIsIHNoaWZ0
IHx8IGRpZSAkITsKLSAgICBteSAkY29udGVudHMgPSA8RklMRT47Ci0gICAgY2xvc2UgRklMRSB8
fCBkaWUgJCE7Ci0gICAgcmV0dXJuICRjb250ZW50czsKLX07Ci0KLTE7CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBv
cnQtdjEuMC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCmluZGV4IGVjNmRkNjIzNmU1MGE0ZGVmZTM3ZjVhZjRm
OGU1ZDk1MDJkM2EyN2YuLmEzYzVmOWMxYjVmYTY1NTA0OGE1NWVmMjMxYWU2MjRmYmQyZDJiNzAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCkBAIC0yOSw4ICsyOSwx
MSBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6Qmlu
OwotdXNlIFJ1bkxlYWtzOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgbGliICIuLiI7Cit1c2UgTG9h
ZEFzTW9kdWxlOworCitMb2FkQXNNb2R1bGU6OmxvYWQoInJ1bi1sZWFrcyIpOwogCiBteSBAaW5w
dXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzIDE2MDI6IDg2NjcxIG5vZGVzIG1hbGxv
Y2VkIGZvciAxMzI2MSBLQgpAQCAtMTU1LDcgKzE1OCw3IEBAIEVPRgogICB9LAogXTsKIAotbXkg
JGFjdHVhbE91dHB1dCA9IFJ1bkxlYWtzOjpwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CitteSAk
YWN0dWFsT3V0cHV0ID0gTG9hZEFzTW9kdWxlOjpwYXJzZUxlYWtzT3V0cHV0KFxAaW5wdXQpOwog
CiBwbGFuKHRlc3RzID0+IDEpOwogaXNfZGVlcGx5KCRhY3R1YWxPdXRwdXQsICRleHBlY3RlZE91
dHB1dCwgImxlYWtzIFJlcG9ydCBWZXJzaW9uIDEuMCAtIG5vIGNhbGwgc3RhY2siKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxl
YWtzLXJlcG9ydC12Mi4wLW5ldy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAppbmRleCA4NDcwYWQwM2I4
ZTcyYTExMjFhZGQyZTQ3NmYwMWFmMTY3ZjU3M2UyLi5lNWU5MWVhZDk2MDk2ZDE2M2NlNTNkZmFl
ZWVjYmQ5YWY4YWVlMTkzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVu
LWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYy
LjAtbmV3LnBsCkBAIC0zMCw4ICszMCwxMSBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaW5kQmlu
OwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIFJ1bkxlYWtzOwogdXNlIFRlc3Q6Ok1vcmU7
Cit1c2UgbGliICIuLiI7Cit1c2UgTG9hZEFzTW9kdWxlOworCitMb2FkQXNNb2R1bGU6OmxvYWQo
InJ1bi1sZWFrcyIpOwogCiBteSBAaW5wdXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNz
OiAgICAgICAgIER1bXBSZW5kZXJUcmVlIFsyOTkwM10KQEAgLTExOSw3ICsxMjIsNyBAQCBFT0YK
ICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1
dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9IExvYWRBc01vZHVsZTo6cGFyc2VMZWFrc091
dHB1dChcQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKLWlzX2RlZXBseSgkYWN0dWFsT3V0
cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAyLjAgKG9sZCkiKTsK
K2lzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQg
VmVyc2lvbiAyLjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbCBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12
Mi4wLW9sZC5wbAppbmRleCBhNTFkZWNmYzE2OWNmYjU1NTI2NjA3NjkzOGVlMzk4NThiNzQwYTg3
Li5lNGZjYzBjYjc5NDVhNDgxMzU5MzlhODBmNDM2Y2FmYmY4MWQ2NDk4IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBv
cnQtdjIuMC1vbGQucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191
bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCkBAIC0zMCw4ICszMCwxMSBAQCB1
c2Ugd2FybmluZ3M7CiAKIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNl
IFJ1bkxlYWtzOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgbGliICIuLiI7Cit1c2UgTG9hZEFzTW9k
dWxlOworCitMb2FkQXNNb2R1bGU6OmxvYWQoInJ1bi1sZWFrcyIpOwogCiBteSBAaW5wdXQgPSBz
cGxpdCgvXG4vLCA8PEVPRik7CiBsZWFrcyBSZXBvcnQgVmVyc2lvbjogIDIuMApAQCAtNjksNyAr
NzIsNyBAQCBFT0YKICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFy
c2VMZWFrc091dHB1dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9IExvYWRBc01vZHVsZTo6
cGFyc2VMZWFrc091dHB1dChcQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKIGlzX2RlZXBs
eSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAy
LjAgKG9sZCkiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119811</attachid>
            <date>2011-12-18 21:27:10 -0800</date>
            <delta_ts>2011-12-19 15:22:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74836-20111219142708.patch</filename>
            <type>text/plain</type>
            <size>9569</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMTkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzM0MGUxZDMyZTM5ODcxMWU4YjNhZGFhZWM0NDM2NjYw
ZDFiYjZjOC4uNzFhOTFkZTQ0NDczMTAwYzBkY2U4NzlkYTRlZDRlODE4ZDM2MGEyNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4
IEBACiAyMDExLTEyLTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBSZXBsYWNlIHdlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L1J1bkxlYWtzLnBt
IHdpdGggd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvUnVu
TGVha3MucG0gY2FuIGJlIHVzZWQgZm9yIHVuaXQtdGVzdGluZyBvZiBydW4tbGVha3Mgb25seS4K
KyAgICAgICAgSW5zdGVhZCB0aGlzIHBhdGNoIGNyZWF0ZXMgbW9yZSBnZW5lcmFsaXplZCB3ZWJr
aXRwZXJsL0xvYWRBc01vZHVsZS5wbSwgd2hpY2ggY2FuIGJlIHVzZWQKKyAgICAgICAgZm9yIHVu
aXQtdGVzdGluZyBvZiBvdGhlciBQZXJsIHNjcmlwdHMuIFdlIGFyZSBwbGFubmluZyB0byB1c2Ug
aXQgZm9yIHVuaXQtdGVzdGluZworICAgICAgICBvZiBwcmVwYXJlLUNoYW5nZUxvZy4KKworICAg
ICAgICBUZXN0czogU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYxLjAucGwKKyAgICAgICAgICAgICAgIFNjcmlwdHMvd2Via2l0cGVybC9ydW4t
bGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorICAgICAgICAgICAg
ICAgU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0
LXYyLjAtb2xkLnBsCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxl
LnBtOiBBZGRlZC4gQWxtb3N0IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBSdW5MZWFrcy5wbS4K
KyAgICAgICAgTG9hZEFzTW9kdWxlOjpsb2FkKCJmb28ucGwiKSBsb2FkcyBzdWJyb3V0aW5lcyBp
biBmb28ucGwgaW50byBhIHBhY2thZ2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL3J1
bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5wbTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjEuMC5wbDog
VXNlZCBMb2FkQXNNb2R1bGUgaW5zdGVhZCBvZiBSdW5MZWFrcy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcu
cGw6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRl
c3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbDogRGl0dG8uCisKKzIwMTEtMTItMTggIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJFR1JFU1NJT04o
cjEwMzE0OSk6IHByZXBhcmUtQ2hhbmdlTG9nIG91dHB1dHMgYSB3YXJuaW5nCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgwOAogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxlLnBtIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzhjMWYxNmM1NjU4YjNl
NjY0MTgyYjg3ZDE0NGQ2N2RiMDljNzdkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5wbQpAQCAtMCwwICsxLDY1IEBACisjIS91c3IvYmlu
L3BlcmwgLXcKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIElt
cG9ydHMgUGVybCBzY3JpcHRzIGludG8gYSBwYWNrYWdlIGZvciBlYXN5IHVuaXQgdGVzdGluZy4K
KworcGFja2FnZSBMb2FkQXNNb2R1bGU7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisK
K3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRp
cigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRkaXJzOworCit1c2UgYmFz
ZSAnRXhwb3J0ZXInOwordXNlIHZhcnMgcXcoQEVYUE9SVCBARVhQT1JUX09LICVFWFBPUlRfVEFH
UyAkVkVSU0lPTik7CisKK0BFWFBPUlQgPSAoKTsKK0BFWFBPUlRfT0sgPSAoKTsKKyVFWFBPUlRf
VEFHUyA9ICgpOworJFZFUlNJT04gPSAnMS4wJzsKKworc3ViIGxvYWQoJCk7CitzdWIgcmVhZEZp
bGUoJCk7CisKK3N1YiBsb2FkKCQpCit7CisgICAgbXkgJHNjcmlwdFBhdGggPSBGaWxlOjpTcGVj
LT5jYXRmaWxlKHNvdXJjZURpcigpLCAiVG9vbHMiLCAiU2NyaXB0cyIsIHNoaWZ0KTsKKyAgICBl
dmFsICJzdWIgeyIgLiByZWFkRmlsZSgkc2NyaXB0UGF0aCkgLiAifSI7Cit9CisKK3N1YiByZWFk
RmlsZSgkKQoreworICAgIG15ICRwYXRoID0gc2hpZnQ7CisgICAgbG9jYWwgJC8gPSB1bmRlZjsg
IyBSZWFkIGluIHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCisgICAgb3BlbiBGSUxFLCAiPCIsICRw
YXRoIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHBhdGhcbiI7CisgICAgbXkgJGNvbnRlbnRzID0gPEZJ
TEU+OworICAgIGNsb3NlIEZJTEU7CisgICAgcmV0dXJuICRjb250ZW50czsKK307CisKKzE7CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L1J1
bkxlYWtzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9S
dW5MZWFrcy5wbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljNjM0OTE2NGZjMmNk
MDVlMmFhM2U1NzFhMDQyOWZmNWU3OWQxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0
ZXN0L1J1bkxlYWtzLnBtCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotIyEvdXNyL2Jp
bi9wZXJsIC13Ci0KLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBJ
bXBvcnRzIHJ1bi1sZWFrcyBpbnRvIGEgcGFja2FnZSBmb3IgZWFzeSB1bml0IHRlc3RpbmcuCi0K
LXBhY2thZ2UgUnVuTGVha3M7Ci0KLXVzZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3M7Ci0KLXVzZSBF
bmdsaXNoOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgRmluZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3Bl
Yy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwotdXNlIHdlYmtpdGRpcnM7Ci0K
LXVzZSBiYXNlICdFeHBvcnRlcicgOwotdXNlIHZhcnMgcXcoIEBFWFBPUlQgQEVYUE9SVF9PSyAl
RVhQT1JUX1RBR1MgJFZFUlNJT04gKSA7Ci0KLUBFWFBPUlQgPSAoKTsKLUBFWFBPUlRfT0sgPSAo
KTsKLSVFWFBPUlRfVEFHUyA9ICgpOwotJFZFUlNJT04gPSAnMS4wJzsKLQotc3ViIHJlYWRGaWxl
KCQpOwotCi1teSAkcnVuTGVha3NQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIo
KSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLWxlYWtzIik7Ci1ldmFsICJzdWIgeyIgLiByZWFk
RmlsZSgkcnVuTGVha3NQYXRoKSAuICJ9IjsKLQotc3ViIHJlYWRGaWxlKCQpIHsKLSAgICBsb2Nh
bCAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUiA9IHVuZGVmOyAjIFJlYWQgaW4gdGhlIHdob2xlIGZp
bGUgYXQgb25jZS4KLSAgICBvcGVuIEZJTEUsICI8Iiwgc2hpZnQgfHwgZGllICQhOwotICAgIG15
ICRjb250ZW50cyA9IDxGSUxFPjsKLSAgICBjbG9zZSBGSUxFIHx8IGRpZSAkITsKLSAgICByZXR1
cm4gJGNvbnRlbnRzOwotfTsKLQotMTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYx
LjAucGwKaW5kZXggZWM2ZGQ2MjM2ZTUwYTRkZWZlMzdmNWFmNGY4ZTVkOTUwMmQzYTI3Zi4uYTNj
NWY5YzFiNWZhNjU1MDQ4YTU1ZWYyMzFhZTYyNGZiZDJkMmI3MCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYx
LjAucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9y
dW4tbGVha3MtcmVwb3J0LXYxLjAucGwKQEAgLTI5LDggKzI5LDExIEBAIHVzZSB3YXJuaW5nczsK
IAogdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2UgUnVuTGVha3M7CiB1
c2UgVGVzdDo6TW9yZTsKK3VzZSBsaWIgIi4uIjsKK3VzZSBMb2FkQXNNb2R1bGU7CisKK0xvYWRB
c01vZHVsZTo6bG9hZCgicnVuLWxlYWtzIik7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8
RU9GKTsKIFByb2Nlc3MgMTYwMjogODY2NzEgbm9kZXMgbWFsbG9jZWQgZm9yIDEzMjYxIEtCCkBA
IC0xNTUsNyArMTU4LDcgQEAgRU9GCiAgIH0sCiBdOwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVu
TGVha3M6OnBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKK215ICRhY3R1YWxPdXRwdXQgPSBMb2Fk
QXNNb2R1bGU6OnBhcnNlTGVha3NPdXRwdXQoXEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7
CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0
IFZlcnNpb24gMS4wIC0gbm8gY2FsbCBzdGFjayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtbmV3
LnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYyLjAtbmV3LnBsCmluZGV4IDg0NzBhZDAzYjhlNzJhMTEyMWFkZDJlNDc2ZjAx
YWYxNjdmNTczZTIuLmU1ZTkxZWFkOTYwOTZkMTYzY2U1M2RmYWVlZWNiZDlhZjhhZWUxOTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
cnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKQEAgLTMwLDgg
KzMwLDExIEBAIHVzZSB3YXJuaW5nczsKIAogdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmlu
OjpCaW47Ci11c2UgUnVuTGVha3M7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBsaWIgIi4uIjsKK3Vz
ZSBMb2FkQXNNb2R1bGU7CisKK0xvYWRBc01vZHVsZTo6bG9hZCgicnVuLWxlYWtzIik7CiAKIG15
IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8RU9GKTsKIFByb2Nlc3M6ICAgICAgICAgRHVtcFJlbmRl
clRyZWUgWzI5OTAzXQpAQCAtMTE5LDcgKzEyMiw3IEBAIEVPRgogICB9LAogXTsKIAotbXkgJGFj
dHVhbE91dHB1dCA9IFJ1bkxlYWtzOjpwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CitteSAkYWN0
dWFsT3V0cHV0ID0gTG9hZEFzTW9kdWxlOjpwYXJzZUxlYWtzT3V0cHV0KFxAaW5wdXQpOwogCiBw
bGFuKHRlc3RzID0+IDEpOwotaXNfZGVlcGx5KCRhY3R1YWxPdXRwdXQsICRleHBlY3RlZE91dHB1
dCwgImxlYWtzIFJlcG9ydCBWZXJzaW9uIDIuMCAob2xkKSIpOworaXNfZGVlcGx5KCRhY3R1YWxP
dXRwdXQsICRleHBlY3RlZE91dHB1dCwgImxlYWtzIFJlcG9ydCBWZXJzaW9uIDIuMCAobmV3KSIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVz
dC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCmluZGV4IGE1
MWRlY2ZjMTY5Y2ZiNTU1MjY2MDc2OTM4ZWUzOTg1OGI3NDBhODcuLmU0ZmNjMGNiNzk0NWE0ODEz
NTkzOWE4MGY0MzZjYWZiZjgxZDY0OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1y
ZXBvcnQtdjIuMC1vbGQucGwKQEAgLTMwLDggKzMwLDExIEBAIHVzZSB3YXJuaW5nczsKIAogdXNl
IEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2UgUnVuTGVha3M7CiB1c2UgVGVz
dDo6TW9yZTsKK3VzZSBsaWIgIi4uIjsKK3VzZSBMb2FkQXNNb2R1bGU7CisKK0xvYWRBc01vZHVs
ZTo6bG9hZCgicnVuLWxlYWtzIik7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8RU9GKTsK
IGxlYWtzIFJlcG9ydCBWZXJzaW9uOiAgMi4wCkBAIC02OSw3ICs3Miw3IEBAIEVPRgogICB9LAog
XTsKIAotbXkgJGFjdHVhbE91dHB1dCA9IFJ1bkxlYWtzOjpwYXJzZUxlYWtzT3V0cHV0KEBpbnB1
dCk7CitteSAkYWN0dWFsT3V0cHV0ID0gTG9hZEFzTW9kdWxlOjpwYXJzZUxlYWtzT3V0cHV0KFxA
aW5wdXQpOwogCiBwbGFuKHRlc3RzID0+IDEpOwogaXNfZGVlcGx5KCRhY3R1YWxPdXRwdXQsICRl
eHBlY3RlZE91dHB1dCwgImxlYWtzIFJlcG9ydCBWZXJzaW9uIDIuMCAob2xkKSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119929</attachid>
            <date>2011-12-19 15:21:22 -0800</date>
            <delta_ts>2011-12-19 16:02:49 -0800</delta_ts>
            <desc>How to use import and eval in LoadAsModule.pm</desc>
            <filename>bug-74836-use-eval.diff</filename>
            <type>text/plain</type>
            <size>4724</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
UnVuTGVha3MucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxlLnBtCnNp
bWlsYXJpdHkgaW5kZXggNjUlCnJlbmFtZSBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvUnVuTGVha3MucG0KcmVuYW1lIHRvIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KaW5kZXggNzljNjM0OS4uNWM3OGMwZSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5w
bQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxlLnBtCkBAIC0xLDYg
KzEsNyBAQAogIyEvdXNyL2Jpbi9wZXJsIC13Ci0KKyMKICMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIxLDIyICsyMiwyMSBAQAogIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyMKKyMgSW1wb3J0cyBQZXJsIHNjcmlwdHMgaW50byBhIHBhY2thZ2UgZm9y
IGVhc3kgdW5pdCB0ZXN0aW5nLgogCi0jIEltcG9ydHMgcnVuLWxlYWtzIGludG8gYSBwYWNrYWdl
IGZvciBlYXN5IHVuaXQgdGVzdGluZy4KLQotcGFja2FnZSBSdW5MZWFrczsKK3BhY2thZ2UgTG9h
ZEFzTW9kdWxlOwogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCi11c2UgRW5nbGlzaDsK
IHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47CiB1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRp
cigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKIHVzZSB3ZWJraXRkaXJzOwogCi11c2UgYmFz
ZSAnRXhwb3J0ZXInIDsKLXVzZSB2YXJzIHF3KCBARVhQT1JUIEBFWFBPUlRfT0sgJUVYUE9SVF9U
QUdTICRWRVJTSU9OICkgOwordXNlIGJhc2UgJ0V4cG9ydGVyJzsKK3VzZSB2YXJzIHF3KEBFWFBP
UlQgQEVYUE9SVF9PSyAlRVhQT1JUX1RBR1MgJFZFUlNJT04pOwogCiBARVhQT1JUID0gKCk7CiBA
RVhQT1JUX09LID0gKCk7CkBAIC00NSwxNCArNDUsMzUgQEAgJFZFUlNJT04gPSAnMS4wJzsKIAog
c3ViIHJlYWRGaWxlKCQpOwogCi1teSAkcnVuTGVha3NQYXRoID0gRmlsZTo6U3BlYy0+Y2F0Zmls
ZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLWxlYWtzIik7Ci1ldmFsICJz
dWIgeyIgLiByZWFkRmlsZSgkcnVuTGVha3NQYXRoKSAuICJ9IjsKK3N1YiBpbXBvcnQKK3sKKyAg
ICBteSAoJHNlbGYsICRwYWNrYWdlLCAkc2NyaXB0KSA9IEBfOworICAgIG15ICRzY3JpcHRQYXRo
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAk
c2NyaXB0KTsKKyAgICBldmFsICIKKyAgICAgICAgcGFja2FnZSAkcGFja2FnZTsKKworICAgICAg
ICB1c2Ugc3RyaWN0OworICAgICAgICB1c2Ugd2FybmluZ3M7CisKKyAgICAgICAgdXNlIGJhc2Ug
J0V4cG9ydGVyJzsKKyAgICAgICAgdXNlIHZhcnMgcXcoXEBFWFBPUlQgXEBFWFBPUlRfT0sgXCVF
WFBPUlRfVEFHUyBcJFZFUlNJT04pOworCisgICAgICAgIFxARVhQT1JUID0gKCk7CisgICAgICAg
IFxARVhQT1JUX09LID0gKCk7CisgICAgICAgIFwlRVhQT1JUX1RBR1MgPSAoKTsKKyAgICAgICAg
XCRWRVJTSU9OID0gJzEuMCc7CisKKyAgICAgICAgc3ViIHsiIC4gcmVhZEZpbGUoJHNjcmlwdFBh
dGgpIC4gIn0KKyAgICAiOworfQogCi1zdWIgcmVhZEZpbGUoJCkgewotICAgIGxvY2FsICRJTlBV
VF9SRUNPUkRfU0VQQVJBVE9SID0gdW5kZWY7ICMgUmVhZCBpbiB0aGUgd2hvbGUgZmlsZSBhdCBv
bmNlLgotICAgIG9wZW4gRklMRSwgIjwiLCBzaGlmdCB8fCBkaWUgJCE7CitzdWIgcmVhZEZpbGUo
JCkKK3sKKyAgICBteSAkcGF0aCA9IHNoaWZ0OworICAgIGxvY2FsICQvID0gdW5kZWY7ICMgUmVh
ZCBpbiB0aGUgd2hvbGUgZmlsZSBhdCBvbmNlLgorICAgIG9wZW4gRklMRSwgIjwiLCAkcGF0aCBv
ciBkaWUgIkNhbm5vdCBvcGVuICRwYXRoOiAkISI7CiAgICAgbXkgJGNvbnRlbnRzID0gPEZJTEU+
OwotICAgIGNsb3NlIEZJTEUgfHwgZGllICQhOworICAgIGNsb3NlIEZJTEU7CiAgICAgcmV0dXJu
ICRjb250ZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwK
aW5kZXggZWM2ZGQ2Mi4uM2YzMTVjMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0
LXYxLjAucGwKQEAgLTI3LDEwICsyNywxMSBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsK
IAordXNlIEZpbGU6OlNwZWM7CiB1c2UgRmluZEJpbjsKLXVzZSBsaWIgJEZpbmRCaW46OkJpbjsK
LXVzZSBSdW5MZWFrczsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4s
ICIuLiIpOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1
bi1sZWFrcyk7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8RU9GKTsKIFByb2Nlc3MgMTYw
MjogODY2NzEgbm9kZXMgbWFsbG9jZWQgZm9yIDEzMjYxIEtCCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIu
MC1uZXcucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1
bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKaW5kZXggODQ3MGFkMC4uYzRiNmIyYyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYyLjAtbmV3LnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4t
bGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbApAQCAtMjgsMTAgKzI4
LDExIEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCit1c2UgRmlsZTo6U3BlYzsKIHVz
ZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIFJ1bkxlYWtzOwordXNlIGxp
YiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7CiB1c2UgVGVzdDo6TW9y
ZTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoUnVuTGVha3MgcnVuLWxlYWtzKTsKIAogbXkgQGlucHV0
ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogUHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBb
Mjk5MDNdCkBAIC0xMjIsNCArMTIzLDQgQEAgRU9GCiBteSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVh
a3M6OnBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKLWlzX2Rl
ZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lv
biAyLjAgKG9sZCkiKTsKK2lzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQs
ICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAyLjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4w
LW9sZC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbAppbmRleCBhNTFkZWNmLi44ZTg5MjIwIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFr
cy1yZXBvcnQtdjIuMC1vbGQucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1s
ZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCkBAIC0yOCwxMCArMjgs
MTEgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKK3VzZSBGaWxlOjpTcGVjOwogdXNl
IEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2UgUnVuTGVha3M7Cit1c2UgbGli
IEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKIHVzZSBUZXN0OjpNb3Jl
OwordXNlIExvYWRBc01vZHVsZSBxdyhSdW5MZWFrcyBydW4tbGVha3MpOwogCiBteSBAaW5wdXQg
PSBzcGxpdCgvXG4vLCA8PEVPRik7CiBsZWFrcyBSZXBvcnQgVmVyc2lvbjogIDIuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119935</attachid>
            <date>2011-12-19 16:03:00 -0800</date>
            <delta_ts>2011-12-20 09:40:49 -0800</delta_ts>
            <desc>rebased patch for review</desc>
            <filename>bug-74836-20111220090258.patch</filename>
            <type>text/plain</type>
            <size>9690</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWViMGNhNWE4YjU1N2E4ZDdlNzY5NDEzYzA3Yzk5NGE0
ODdlNjU1NS4uZTkwNzljYzk3MmUzNmE3OTU0NGMzOGMxMWFkNjgwZTU3ZmViNjBmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDExLTEyLTE5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXBsYWNlIHdlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L1J1bkxlYWtzLnBt
IHdpdGggd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvUnVu
TGVha3MucG0gY2FuIGJlIHVzZWQgZm9yIHVuaXQtdGVzdGluZyBvZiBydW4tbGVha3Mgb25seS4K
KyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIG1vcmUgZ2VuZXJhbGl6ZWQgd2Via2l0cGVybC9M
b2FkQXNNb2R1bGUucG0sIHdoaWNoIGNhbiBiZSBhbHNvIHVzZWQKKyAgICAgICAgZm9yIHVuaXQt
dGVzdGluZyBvZiBvdGhlciBQZXJsIHNjcmlwdHMuIFdlIGFyZSBwbGFubmluZyB0byB1c2UgaXQg
Zm9yIHVuaXQtdGVzdGluZworICAgICAgICBvZiBwcmVwYXJlLUNoYW5nZUxvZy4KKworICAgICAg
ICBVc2luZyBMb2FkQXNNb2R1bGUucG0sIHlvdSBjYW4gbG9hZCBhIFBlcmwgc2NyaXB0IGFzIGZv
bGxvd3MuCisgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgYXJiaXRyYXJ5IHBhY2th
Z2UgbmFtZSB5b3Ugd2FudCB0byB1c2UsIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50CisgICAgICAg
IGlzIHRoZSBuYW1lIG9mIHRoZSBQZXJsIHNjcmlwdCB5b3Ugd2FudCB0byBsb2FkLgorCisgICAg
ICAgICAgICB1c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7CisgICAgICAg
ICAgICBSdW5MZWFrczo6c29tZUZ1bmN0aW9uRGVmaW5lZEluUnVuTGVha3MoLi4uKTsKKworICAg
ICAgICBUZXN0czogU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVh
a3MtcmVwb3J0LXYxLjAucGwKKyAgICAgICAgICAgICAgIFNjcmlwdHMvd2Via2l0cGVybC9ydW4t
bGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorICAgICAgICAgICAg
ICAgU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0
LXYyLjAtb2xkLnBsCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxl
LnBtOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0
ZXN0L1J1bkxlYWtzLnBtOiBSZW1vdmVkLgorICAgICAgICAoaW1wb3J0KToKKyAgICAgICAgKHJl
YWRGaWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjEuMC5wbDogVXNlZCBMb2FkQXNNb2R1bGUgaW5zdGVhZCBvZiBS
dW5MZWFrcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGw6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5w
bDogRGl0dG8uCisKIDIwMTEtMTItMTkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFBhc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBHREIgd2hlbiBkZWJ1
Z2dpbmcgYSBNYWMgV2ViS2l0IGFwcGxpY2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxlLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xv
YWRBc01vZHVsZS5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzc4YzBlNTY4OTM1NTE5YmM4YjNkYjUzZjY2Mzgy
NzVmZDc3ZTlhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xv
YWRBc01vZHVsZS5wbQpAQCAtMCwwICsxLDgwIEBACisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIEltcG9ydHMgUGVybCBzY3Jp
cHRzIGludG8gYSBwYWNrYWdlIGZvciBlYXN5IHVuaXQgdGVzdGluZy4KKworcGFja2FnZSBMb2Fk
QXNNb2R1bGU7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpTcGVj
OwordXNlIEZpbmRCaW47Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6Qmlu
LCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRkaXJzOworCit1c2UgYmFzZSAnRXhwb3J0ZXInOwor
dXNlIHZhcnMgcXcoQEVYUE9SVCBARVhQT1JUX09LICVFWFBPUlRfVEFHUyAkVkVSU0lPTik7CisK
K0BFWFBPUlQgPSAoKTsKK0BFWFBPUlRfT0sgPSAoKTsKKyVFWFBPUlRfVEFHUyA9ICgpOworJFZF
UlNJT04gPSAnMS4wJzsKKworc3ViIHJlYWRGaWxlKCQpOworCitzdWIgaW1wb3J0Cit7CisgICAg
bXkgKCRzZWxmLCAkcGFja2FnZSwgJHNjcmlwdCkgPSBAXzsKKyAgICBteSAkc2NyaXB0UGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJTY3JpcHRzIiwgJHNj
cmlwdCk7CisgICAgZXZhbCAiCisgICAgICAgIHBhY2thZ2UgJHBhY2thZ2U7CisKKyAgICAgICAg
dXNlIHN0cmljdDsKKyAgICAgICAgdXNlIHdhcm5pbmdzOworCisgICAgICAgIHVzZSBiYXNlICdF
eHBvcnRlcic7CisgICAgICAgIHVzZSB2YXJzIHF3KFxARVhQT1JUIFxARVhQT1JUX09LIFwlRVhQ
T1JUX1RBR1MgXCRWRVJTSU9OKTsKKworICAgICAgICBcQEVYUE9SVCA9ICgpOworICAgICAgICBc
QEVYUE9SVF9PSyA9ICgpOworICAgICAgICBcJUVYUE9SVF9UQUdTID0gKCk7CisgICAgICAgIFwk
VkVSU0lPTiA9ICcxLjAnOworCisgICAgICAgIHN1YiB7IiAuIHJlYWRGaWxlKCRzY3JpcHRQYXRo
KSAuICJ9CisgICAgIjsKK30KKworc3ViIHJlYWRGaWxlKCQpCit7CisgICAgbXkgJHBhdGggPSBz
aGlmdDsKKyAgICBsb2NhbCAkLyA9IHVuZGVmOyAjIFJlYWQgaW4gdGhlIHdob2xlIGZpbGUgYXQg
b25jZS4KKyAgICBvcGVuIEZJTEUsICI8IiwgJHBhdGggb3IgZGllICJDYW5ub3Qgb3BlbiAkcGF0
aDogJCEiOworICAgIG15ICRjb250ZW50cyA9IDxGSUxFPjsKKyAgICBjbG9zZSBGSUxFOworICAg
IHJldHVybiAkY29udGVudHM7Cit9OworCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvUnVuTGVha3MucG0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc5YzYzNDkxNjRmYzJjZDA1ZTJhYTNlNTcxYTA0MjlmZjVlNzlkMWEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9SdW5MZWFrcy5wbQorKysgL2Rldi9u
dWxsCkBAIC0xLDU5ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMgSW1wb3J0cyBydW4tbGVha3MgaW50byBhIHBh
Y2thZ2UgZm9yIGVhc3kgdW5pdCB0ZXN0aW5nLgotCi1wYWNrYWdlIFJ1bkxlYWtzOwotCi11c2Ug
c3RyaWN0OwotdXNlIHdhcm5pbmdzOwotCi11c2UgRW5nbGlzaDsKLXVzZSBGaWxlOjpTcGVjOwot
dXNlIEZpbmRCaW47Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAi
Li4iLCAiLi4iKTsKLXVzZSB3ZWJraXRkaXJzOwotCi11c2UgYmFzZSAnRXhwb3J0ZXInIDsKLXVz
ZSB2YXJzIHF3KCBARVhQT1JUIEBFWFBPUlRfT0sgJUVYUE9SVF9UQUdTICRWRVJTSU9OICkgOwot
Ci1ARVhQT1JUID0gKCk7Ci1ARVhQT1JUX09LID0gKCk7Ci0lRVhQT1JUX1RBR1MgPSAoKTsKLSRW
RVJTSU9OID0gJzEuMCc7Ci0KLXN1YiByZWFkRmlsZSgkKTsKLQotbXkgJHJ1bkxlYWtzUGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJTY3JpcHRzIiwgInJ1
bi1sZWFrcyIpOwotZXZhbCAic3ViIHsiIC4gcmVhZEZpbGUoJHJ1bkxlYWtzUGF0aCkgLiAifSI7
Ci0KLXN1YiByZWFkRmlsZSgkKSB7Ci0gICAgbG9jYWwgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1Ig
PSB1bmRlZjsgIyBSZWFkIGluIHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCi0gICAgb3BlbiBGSUxF
LCAiPCIsIHNoaWZ0IHx8IGRpZSAkITsKLSAgICBteSAkY29udGVudHMgPSA8RklMRT47Ci0gICAg
Y2xvc2UgRklMRSB8fCBkaWUgJCE7Ci0gICAgcmV0dXJuICRjb250ZW50czsKLX07Ci0KLTE7CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1
bi1sZWFrcy1yZXBvcnQtdjEuMC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCmluZGV4IGVjNmRkNjIzNmU1MGE0
ZGVmZTM3ZjVhZjRmOGU1ZDk1MDJkM2EyN2YuLjNmMzE1YzNhYzMyNzg0MmFkMmJhYTYxMTBkM2Jj
NjM4YWFhYjFhZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCkBA
IC0yNywxMCArMjcsMTEgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKK3VzZSBGaWxl
OjpTcGVjOwogdXNlIEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2UgUnVuTGVh
a3M7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKIHVz
ZSBUZXN0OjpNb3JlOwordXNlIExvYWRBc01vZHVsZSBxdyhSdW5MZWFrcyBydW4tbGVha3MpOwog
CiBteSBAaW5wdXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzIDE2MDI6IDg2NjcxIG5v
ZGVzIG1hbGxvY2VkIGZvciAxMzI2MSBLQgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtbmV3LnBsIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVw
b3J0LXYyLjAtbmV3LnBsCmluZGV4IDg0NzBhZDAzYjhlNzJhMTEyMWFkZDJlNDc2ZjAxYWYxNjdm
NTczZTIuLmM0YjZiMmNkYTU5OGZiMmExNjFkMDc1YWFiZTAwNzU5NzQ0ODU3YmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtz
LXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxl
YWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKQEAgLTI4LDEwICsyOCwx
MSBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIAordXNlIEZpbGU6OlNwZWM7CiB1c2Ug
RmluZEJpbjsKLXVzZSBsaWIgJEZpbmRCaW46OkJpbjsKLXVzZSBSdW5MZWFrczsKK3VzZSBsaWIg
RmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwogdXNlIFRlc3Q6Ok1vcmU7
Cit1c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7CiAKIG15IEBpbnB1dCA9
IHNwbGl0KC9cbi8sIDw8RU9GKTsKIFByb2Nlc3M6ICAgICAgICAgRHVtcFJlbmRlclRyZWUgWzI5
OTAzXQpAQCAtMTIyLDQgKzEyMyw0IEBAIEVPRgogbXkgJGFjdHVhbE91dHB1dCA9IFJ1bkxlYWtz
OjpwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7Ci1pc19kZWVw
bHkoJGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0IFZlcnNpb24g
Mi4wIChvbGQpIik7Citpc19kZWVwbHkoJGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAi
bGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChuZXcpIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1v
bGQucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1s
ZWFrcy1yZXBvcnQtdjIuMC1vbGQucGwKaW5kZXggYTUxZGVjZmMxNjljZmI1NTUyNjYwNzY5Mzhl
ZTM5ODU4Yjc0MGE4Ny4uOGU4OTIyMGNjM2Y2Njk1ZjAwNjM3MTU5ZWQ4NmM3N2NmODQ2MzU2YyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9y
dW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbApAQCAtMjgs
MTAgKzI4LDExIEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCit1c2UgRmlsZTo6U3Bl
YzsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIFJ1bkxlYWtzOwor
dXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7CiB1c2UgVGVz
dDo6TW9yZTsKK3VzZSBMb2FkQXNNb2R1bGUgcXcoUnVuTGVha3MgcnVuLWxlYWtzKTsKIAogbXkg
QGlucHV0ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogbGVha3MgUmVwb3J0IFZlcnNpb246ICAyLjAK
</data>

          </attachment>
      

    </bug>

</bugzilla>