<?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>43981</bug_id>
          
          <creation_ts>2010-08-13 11:02:34 -0700</creation_ts>
          <short_desc>svn-apply doesn&apos;t detect empty line with Windows line endings after property value</short_desc>
          <delta_ts>2010-08-26 09:58:11 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264439</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-08-13 11:02:34 -0700</bug_when>
    <thetext>In the attachment 63151 from bug 39164 are changes to WebCore/CMakeLists.txt.
In the commit at http://trac.webkit.org/changeset/65319 this changes are missing.

maybe related to bug 42868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264879</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:26:25 -0700</bug_when>
    <thetext>*** Bug 42868 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264881</commentid>
    <comment_count>2</comment_count>
      <attachid>64455</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:27:40 -0700</bug_when>
    <thetext>Created attachment 64455
Patch 1 of 2: Detect empty line with Windows line ending</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264882</commentid>
    <comment_count>3</comment_count>
      <attachid>64456</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:28:09 -0700</bug_when>
    <thetext>Created attachment 64456
Patch 2 of 2: Unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264883</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:29:07 -0700</bug_when>
    <thetext>I thought to break up the patch into two patches:

&quot;Patch 1 of 2: Detect empty line with Windows line ending&quot; - the code change and change log
&quot;Patch 2 of 2: Unit tests&quot; - the unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264884</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-15 14:31:58 -0700</bug_when>
    <thetext>Attachment 64456 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:394:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:395:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:721:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:722:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:809:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:810:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:834:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:835:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:911:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:912:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:926:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:927:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:939:  Line contains tab character.  [whitespace/tab] [5]
WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:940:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 14 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264888</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:56:02 -0700</bug_when>
    <thetext>Notice, both attachment 63151 &lt;https://bugs.webkit.org/attachment.cgi?id=63151&gt; and attachment 62341 &lt;https://bugs.webkit.org/attachment.cgi?id=62341&gt; (from bug #42071) have Windows line endings and property change diffs.

Without loss of generality, we define the property value(*) as being all the text up to the start of the first empty line. Currently we use the regular expression /^$/ to describe the empty line, which only works for lines that end in LF (Unix line endings). Instead, we should use /^[\r\n]+$/ so that the empty line is detected even if it ends in CRLF (Windows line endings).

(*) The anatomy of a property change diff:

1. Property changes on: WebCore\platform\win\BitmapInfo.cpp
2. ___________________________________________________________________
3. Added: svn:eol-style
4.    + native

Line 1 describes the file to apply/modify/remove properties from, called the property path.
Line 3 describes the property type and name, &quot;Added&quot;, and &quot;svn:eol-style&quot;, respectively.
Line 4 describes whether the property is to be added or removed (&quot;+&quot; or &quot;-&quot;, respectively) and the value of the property. This value can span multiple lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264889</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-15 14:57:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 64456 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
&gt; WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:394:  Line contains tab character.  [whitespace/tab] [5]
&gt; [...]
&gt; WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:939:  Line contains tab character.  [whitespace/tab] [5]
&gt; WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:940:  Line contains tab character.  [whitespace/tab] [5]
&gt; Total errors found: 14 in 3 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

These errors are expected as parseDiff.pl contains sample diffs. These diffs contain tab characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267239</commentid>
    <comment_count>8</comment_count>
      <attachid>64456</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-20 07:01:20 -0700</bug_when>
    <thetext>Comment on attachment 64456
Patch 2 of 2: Unit tests

Thanks again Dan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267244</commentid>
    <comment_count>9</comment_count>
      <attachid>64455</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-20 07:44:58 -0700</bug_when>
    <thetext>Comment on attachment 64455
Patch 1 of 2: Detect empty line with Windows line ending

Clearing commit-queue flag. Will land by hand so that I can combine the two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267245</commentid>
    <comment_count>10</comment_count>
      <attachid>64456</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-20 07:45:12 -0700</bug_when>
    <thetext>Comment on attachment 64456
Patch 2 of 2: Unit tests

Clearing commit-queue flag. Will land by hand so that I can combine the two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267246</commentid>
    <comment_count>11</comment_count>
      <attachid>64455</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 07:45:27 -0700</bug_when>
    <thetext>Comment on attachment 64455
Patch 1 of 2: Detect empty line with Windows line ending

Clearing flags on attachment: 64455

Committed r65732: &lt;http://trac.webkit.org/changeset/65732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267249</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-20 07:53:27 -0700</bug_when>
    <thetext>Can&apos;t stop the bot once started :(  It&apos;s a bad bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267252</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-20 08:08:59 -0700</bug_when>
    <thetext>Committed unit tests in changeset 65734 &lt;http://trac.webkit.org/changeset/65734&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269938</commentid>
    <comment_count>14</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-08-26 09:58:11 -0700</bug_when>
    <thetext>svn-apply in cygwin still seems to have problems with patches which also touch vcproj files.
During working on this bug: https://bugs.webkit.org/show_bug.cgi?id=29244 I tried to create a patch in cygwin and after cleanup apply the created patch using svn-apply and it couldn&apos;t apply.
I&apos;m unsure where the problem exactly lies, but it seems the issue is related to the same problem this bug tried to fix.
Daniel, could you please take a look at the problem?
Thanks in advance.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64455</attachid>
            <date>2010-08-15 14:27:40 -0700</date>
            <delta_ts>2010-08-20 07:45:27 -0700</delta_ts>
            <desc>Patch 1 of 2: Detect empty line with Windows line ending</desc>
            <filename>patch1.patch</filename>
            <type>text/plain</type>
            <size>4805</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY1MzgzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDgtMTUgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIHN2bi1hcHBseSBkb2Vzbid0IGRldGVjdCBlbXB0eSBsaW5lIHdpdGggV2luZG93cyBs
aW5lIGVuZGluZ3MKKyAgICAgICAgYWZ0ZXIgcHJvcGVydHkgdmFsdWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTgxCisKKyAgICAgICAgRml4ZXMg
YW4gaXNzdWUgd2hlcmUgYW4gZW1wdHkgbGluZSBmb2xsb3dpbmcgdGhlIHByb3BlcnR5IHZhbHVl
CisgICAgICAgIGluIGFuIFNWTiBwcm9wZXJ0eSBjaGFuZ2UgZGlmZiB3b3VsZCBub3QgYmUgZGV0
ZWN0ZWQgaWYgaXQgaGFkCisgICAgICAgIFdpbmRvd3MgbGluZSBlbmRpbmdzIChpLmUuIGVuZGVk
IGluIENSTEYpLiBIZW5jZSBpdCB3YXMgY29uc3VtZWQKKyAgICAgICAgYXMgaWYgaXQgd2FzIHBh
cnQgb2YgYSBtdWx0aS1saW5lIHByb3BlcnR5IHZhbHVlLiAKKworICAgICAgICAqIFNjcmlwdHMv
VkNTVXRpbHMucG06CisgICAgICAgICAgLSBNb2RpZmllZCBwYXJzZVN2blByb3BlcnR5VmFsdWUo
KSB0byBkZXRlY3QgZW1wdHkgbGluZQorICAgICAgICAgICAgd2l0aCBXaW5kb3dzIGxpbmUgZW5k
aW5ncy4KKyAgICAgICAgICAtIEFkZGVkIHRvV2luZG93c0xpbmVFbmRpbmdzKCkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbDoKKyAg
ICAgICAgICAtIEFkZGVkIHRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlczoKKyAgICAgICAgICAgICJT
Vk46IGJpbmFyeSBmaWxlIChpc0JpbmFyeSB0cnVlKSB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5n
cyIKKyAgICAgICAgICAgICJTVk46IHByb3BlcnR5IGRpZmYsIGZvbGxvd2VkIGJ5IGZpbGUgY2hh
bmdlIGRpZmYgdXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3MiCisgICAgICAgICAgICAiU1ZOOiB0
d28gY29uc2VjdXRpdmUgcHJvcGVydHkgZGlmZnMgdXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3Mi
CisgICAgICAgICAgICAiU1ZOOiBiaW5hcnkgZmlsZSB3aXRoIGV4ZWN1dGFibGUgYml0IGNoYW5n
ZSB1c25nIFdpbmRvd3MgbGluZSBlbmRpbmdzIgorICAgICAgICAgICAgIlNWTjogYmluYXJ5IGZp
bGUgZm9sbG93ZWQgYnkgcHJvcGVydHkgY2hhbmdlIG9uIGRpZmZlcmVudCBmaWxlIHVzaW5nIFdp
bmRvd3MgbGluZSBlbmRpbmdzIgorICAgICAgICAgICAgIlNWTjogYmluYXJ5IGZpbGUgZm9sbG93
ZWQgYnkgZmlsZSBjaGFuZ2Ugb24gZGlmZmVyZW50IGZpbGUgdXNpbmcgV2luZG93cyBsaW5lIGVu
ZGluZ3MiCisgICAgICAgICAgICAiU1ZOOiBmaWxlIGNoYW5nZSBkaWZmIHdpdGggcHJvcGVydHkg
Y2hhbmdlLCBmb2xsb3dlZCBieSBwcm9wZXJ0eSBjaGFuZ2UgZGlmZiB1c2luZyBXaW5kb3dzIGxp
bmUgZW5kaW5ncyIKKyAgICAgICAgICAgICJTVk46IGZpbGUgY2hhbmdlIGRpZmYgd2l0aCBwcm9w
ZXJ0eSBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGZpbGUgY2hhbmdlIGRpZmYgdXNpbmcgV2luZG93cyBs
aW5lIGVuZGluZ3MiCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0
ZXN0L3BhcnNlU3ZuUHJvcGVydHkucGw6CisgICAgICAgICAgLSBBZGRlZCB0aGUgZm9sbG93aW5n
IHRlc3QgY2FzZXM6CisgICAgICAgICAgICAiYWRkIHN2bjpleGVjdXRhYmxlLCBmb2xsb3dlZCBi
eSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBuZXh0IGRpZmYgdXNpbmcgV2luZG93cyBsaW5lIGVu
ZGluZ3MiCisgICAgICAgICAgICAiYWRkIHN2bjpleGVjdXRhYmxlLCBmb2xsb3dlZCBieSBlbXB0
eSBsaW5lIGFuZCBzdGFydCBvZiBuZXh0IHByb3BlcnR5IGRpZmYgdXNpbmcgV2luZG93cyBsaW5l
IGVuZGluZ3MiCisgICAgICAgICAgICAibXVsdGktbGluZSAnKycgY2hhbmdlLCBmb2xsb3dlZCBi
eSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBuZXh0IGRpZmYgdXNpbmcgV2luZG93cyBsaW5lIGVu
ZGluZ3MiCisgICAgICAgICAgICAibXVsdGktbGluZSAnKycgY2hhbmdlLCBmb2xsb3dlZCBieSBl
bXB0eSBsaW5lIGFuZCBzdGFydCBvZiBuZXh0IHByb3BlcnR5IGRpZmYgdXNpbmcgV2luZG93cyBs
aW5lIGVuZGluZ3MiCisgICAgICAgICAgICAiYWRkIHN2bjpleGVjdXRhYmxlLCBmb2xsb3dlZCBi
eSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0Y2ggdXNpbmcgV2luZG93cyBsaW5l
IGVuZGluZ3MiCisgICAgICAgICAgICAibXVsdGktbGluZSAnKycgY2hhbmdlLCBmb2xsb3dlZCBi
eSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0Y2ggdXNpbmcgV2luZG93cyBsaW5l
IGVuZGluZ3MiCisgICAgICAgICAgICAibXVsdGktbGluZSAnLScgY2hhbmdlLCBmb2xsb3dlZCBi
eSBtdWx0aS1saW5lICcrJyBjaGFuZ2UsIGVtcHR5IGxpbmUsIGFuZCBzdGFydCBvZiBiaW5hcnkg
cGF0Y2ggdXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3MiCisgICAgICAgICAgICAic2luZ2xlLWxp
bmUgJysnIHdpdGggdHJhaWxpbmcgbmV3IGxpbmUgdXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3Mi
CisgICAgICAgICAgICAic2luZ2xlLWxpbmUgJysnIHdpdGggdHJhaWxpbmcgbmV3IGxpbmUsIGZv
bGxvd2VkIGJ5IGVtcHR5IGxpbmUgYW5kIHN0YXJ0IG9mIGJpbmFyeSBwYXRjaCB1c2luZyBXaW5k
b3dzIGxpbmUgZW5kaW5ncyIKKyAgICAgICAgICAgICJzaW5nbGUtbGluZSAnLScgY2hhbmdlIHdp
dGggdHJhaWxpbmcgbmV3IGxpbmUsIGFuZCBzaW5nbGUtbGluZSAnKycgY2hhbmdlIHVzaW5nIFdp
bmRvd3MgbGluZSBlbmRpbmdzIgorICAgICAgICAgICAgIm11bHRpLWxpbmUgJy0nIGNoYW5nZSB3
aXRoIHRyYWlsaW5nIG5ldyBsaW5lLCBhbmQgbXVsdGktbGluZSAnKycgY2hhbmdlIHVzaW5nIFdp
bmRvd3MgbGluZSBlbmRpbmdzIgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGls
c191bml0dGVzdC9wYXJzZVN2blByb3BlcnR5VmFsdWUucGw6CisgICAgICAgICAgLSBBZGRlZCB0
aGUgZm9sbG93aW5nIHRlc3QgY2FzZXM6CisgICAgICAgICAgICAic2luZ2xlLWxpbmUgJy0nIGNo
YW5nZSBmb2xsb3dlZCBieSBlbXB0eSBsaW5lIHdpdGggV2luZG93cyBsaW5lIGVuZGluZ3MiCisg
ICAgICAgICAgICAibXVsdGktbGluZSAnKycgY2hhbmdlIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0
Y2ggd2l0aCBXaW5kb3dzIGxpbmUgZW5kaW5ncyIKKwogMjAxMC0wOC0xNCAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL1ZDU1V0aWxz
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlz
aW9uIDY0MjU4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsNyBAQCBCRUdJTiB7CiAgICAgICAgICZzZXRDaGFuZ2VMb2dEYXRl
QW5kUmV2aWV3ZXIKICAgICAgICAgJnN2blJldmlzaW9uRm9yRGlyZWN0b3J5CiAgICAgICAgICZz
dm5TdGF0dXMKKyAgICAgICAgJnRvV2luZG93c0xpbmVFbmRpbmdzCiAgICAgKTsKICAgICAlRVhQ
T1JUX1RBR1MgPSAoICk7CiAgICAgQEVYUE9SVF9PSyAgID0gKCk7CkBAIC0xMjgsNiArMTI5LDEz
IEBAIHN1YiBjYWxsU2lsZW50bHkoJEApIHsKICAgICByZXR1cm4gQHJldHVyblZhbHVlOwogfQog
CitzdWIgdG9XaW5kb3dzTGluZUVuZGluZ3MKK3sKKyAgICBteSAoJHRleHQpID0gQF87CisgICAg
JHRleHQgPX4gcy9cbi9cclxuL2c7CisgICAgcmV0dXJuICR0ZXh0OworfQorCiAjIE5vdGUsIHRo
aXMgbWV0aG9kIHdpbGwgbm90IGVycm9yIGlmIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IHBhdGggZG9lcyBub3QgZXhpc3QuCiBzdWIgc2NtVG9nZ2xlRXhlY3V0YWJsZUJpdAogewpAQCAt
MTA4OSw3ICsxMDk3LDcgQEAgc3ViIHBhcnNlU3ZuUHJvcGVydHlWYWx1ZSgkJCkKICAgICB9CiAK
ICAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBpZiAoL14kLyB8fCAvJHN2blBy
b3BlcnR5VmFsdWVTdGFydFJlZ0V4LyB8fCAvJHN2blByb3BlcnR5U3RhcnRSZWdFeC8pIHsKKyAg
ICAgICAgaWYgKC9eW1xyXG5dKyQvIHx8IC8kc3ZuUHJvcGVydHlWYWx1ZVN0YXJ0UmVnRXgvIHx8
IC8kc3ZuUHJvcGVydHlTdGFydFJlZ0V4LykgewogICAgICAgICAgICAgIyBOb3RlLCB3ZSBtYXkg
ZW5jb3VudGVyIGFuIGVtcHR5IGxpbmUgYmVmb3JlIHRoZSBjb250ZW50cyBvZiBhIGJpbmFyeSBw
YXRjaC4KICAgICAgICAgICAgICMgQWxzbywgd2UgY2hlY2sgZm9yICRzdm5Qcm9wZXJ0eVZhbHVl
U3RhcnRSZWdFeCBiZWNhdXNlIGEgJy0nIHByb3BlcnR5IG1heSBiZQogICAgICAgICAgICAgIyBm
b2xsb3dlZCBieSBhICcrJyBwcm9wZXJ0eSBpbiB0aGUgY2FzZSBvZiBhICJNb2RpZmllZCIgb3Ig
Ik5hbWUiIHByb3BlcnR5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64456</attachid>
            <date>2010-08-15 14:28:09 -0700</date>
            <delta_ts>2010-08-20 07:45:11 -0700</delta_ts>
            <desc>Patch 2 of 2: Unit tests</desc>
            <filename>patch2.patch</filename>
            <type>text/plain</type>
            <size>20614</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9WQ1NVdGlsc191bml0dGVzdC9w
YXJzZURpZmYucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L1ZDU1V0aWxzX3VuaXR0ZXN0L3BhcnNlRGlmZi5wbAkocmV2aXNpb24gNjQyNTgpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VEaWZmLnBs
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDQ0IEBAIHVuZGVmXSwKIH0sCiB7CiAgICAg
IyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IGJpbmFyeSBmaWxlIChpc0JpbmFyeSB0
cnVlKSB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHRvV2lu
ZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitJbmRleDogdGVzdF9maWxlLnN3ZgorPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCitzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCisKK1Byb3BlcnR5IGNoYW5nZXMgb246
IHRlc3RfZmlsZS5zd2YKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KK05hbWU6IHN2bjptaW1lLXR5cGUKKyAgICsgYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCisKKworUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlP
RE14TUR3MzRHQmdRRUFKUFFESkE9PQorRU5ECispLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsK
K1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiAgdG9XaW5kb3dzTGluZUVuZGluZ3MoPDwnRU5E
JywgIyBTYW1lIGFzIGlucHV0IHRleHQKK0luZGV4OiB0ZXN0X2ZpbGUuc3dmCis9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CitDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4KK3N2bjptaW1l
LXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKworCisKK1ExZFRCeDBBQUFCNDJpdGc0
R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KK0VORAorKSwKKyAgICBpbmRleFBh
dGggPT4gInRlc3RfZmlsZS5zd2YiLAorICAgIGlzQmluYXJ5ID0+IDEsCisgICAgaXNTdm4gPT4g
MSwKK31dLAordW5kZWZdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAorewor
ICAgICMgTmV3IHRlc3QKICAgICBkaWZmTmFtZSA9PiAiU1ZOOiBsZWFkaW5nIGp1bmsiLAogICAg
IGlucHV0VGV4dCA9PiA8PCdFTkQnLAogCkBAIC0zNDQsNiArMzgyLDM0IEBAIEVORAogfSwKIHsK
ICAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogcHJvcGVydHkgZGlmZiwgZm9s
bG93ZWQgYnkgZmlsZSBjaGFuZ2UgZGlmZiB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisg
ICAgaW5wdXRUZXh0ID0+IHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBNYWtlZmlsZQorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUK
KyAgIC0gKgorCitJbmRleDogTWFrZWZpbGUuc2hhcmVkCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTWFrZWZp
bGUuc2hhcmVkCShyZXZpc2lvbiA2MDAyMSkKKysrKyBNYWtlZmlsZS5zaGFyZWQJKHdvcmtpbmcg
Y29weSkKK0BAIC0xLDMgKzEsNCBAQAorKworU0NSSVBUU19QQVRIID89IC4uL1dlYktpdFRvb2xz
L1NjcmlwdHMKK1hDT0RFX09QVElPTlMgPSBgcGVybCAtSSQoU0NSSVBUU19QQVRIKSAtTXdlYmtp
dGRpcnMgLWUgJ3ByaW50IFhjb2RlT3B0aW9uU3RyaW5nKCknYCAkKEFSR1MpCitFTkQKKyksCisg
ICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworW3sKKyAgICBleGVjdXRhYmxlQml0RGVsdGEgPT4gLTEs
CisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZSIsCisgICAgaXNTdm4gPT4gMSwKK31dLAorIklu
ZGV4OiBNYWtlZmlsZS5zaGFyZWRcclxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PVxyXG4iLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CiAgICAgZGlmZk5hbWUgPT4gIlNW
TjogY29waWVkIGZpbGUgd2l0aCBwcm9wZXJ0eSBjaGFuZ2UiLAogICAgIGlucHV0VGV4dCA9PiA8
PCdFTkQnLAogSW5kZXg6IE5NYWtlZmlsZQpAQCAtMzkyLDYgKzQ1OCwzMSBAQCBFTkQKICJQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBNYWtlZmlsZS5zaGFyZWRcbiJdLAogICAgIGV4cGVjdGVkTmV4dExp
bmUgPT4gIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19cbiIsCiB9LAoreworICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFt
ZSA9PiAiU1ZOOiB0d28gY29uc2VjdXRpdmUgcHJvcGVydHkgZGlmZnMgdXNpbmcgV2luZG93cyBs
aW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiB0b1dpbmRvd3NMaW5lRW5kaW5ncyg8PCdF
TkQnLAorUHJvcGVydHkgY2hhbmdlcyBvbjogTWFrZWZpbGUKK19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK0FkZGVkOiBz
dm46ZXhlY3V0YWJsZQorICAgKyAqCisKKworUHJvcGVydHkgY2hhbmdlcyBvbjogTWFrZWZpbGUu
c2hhcmVkCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCitBZGRlZDogc3ZuOmV4ZWN1dGFibGUKKyAgICsgKgorRU5ECisp
LAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgZXhlY3V0YWJsZUJpdERlbHRhID0+
IDEsCisgICAgaW5kZXhQYXRoID0+ICJNYWtlZmlsZSIsCisgICAgaXNTdm4gPT4gMSwKK31dLAor
IlByb3BlcnR5IGNoYW5nZXMgb246IE1ha2VmaWxlLnNoYXJlZFxyXG4iXSwKKyAgICBleHBlY3Rl
ZE5leHRMaW5lID0+ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXHJcbiIsCit9LAogIyMjIwogIyBQcm9wZXJ0eSBDaGFu
Z2VzOiBCaW5hcnkgZmlsZXMKICMjCkBAIC00MzYsNiArNTI3LDQ3IEBAIHVuZGVmXSwKIH0sCiB7
CiAgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJTVk46IGJpbmFyeSBmaWxlIHdpdGgg
ZXhlY3V0YWJsZSBiaXQgY2hhbmdlIHVzbmcgV2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlu
cHV0VGV4dCA9PiB0b1dpbmRvd3NMaW5lRW5kaW5ncyg8PCdFTkQnLAorSW5kZXg6IHRlc3RfZmls
ZS5zd2YKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KK0Nhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgorc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorCitQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiB0ZXN0X2ZpbGUuc3dmCitfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitOYW1lOiBzdm46bWlt
ZS10eXBlCisgICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorTmFtZTogc3ZuOmV4ZWN1dGFi
bGUKKyAgICsgKgorCisKK1ExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0Jn
UUVBSlBRREpBPT0KK0VORAorKSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2
bkNvbnZlcnRlZFRleHQgPT4gIHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsICMgU2FtZSBh
cyBpbnB1dCB0ZXh0CitJbmRleDogdGVzdF9maWxlLnN3ZgorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCitzdm46bWltZS10eXBlID0gYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCisKKworCitRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TURE
eU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CitFTkQKKyksCisgICAgZXhlY3V0YWJsZUJpdERlbHRh
ID0+IDEsCisgICAgaW5kZXhQYXRoID0+ICJ0ZXN0X2ZpbGUuc3dmIiwKKyAgICBpc0JpbmFyeSA9
PiAxLAorICAgIGlzU3ZuID0+IDEsCit9XSwKK3VuZGVmXSwKKyAgICBleHBlY3RlZE5leHRMaW5l
ID0+IHVuZGVmLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CiAgICAgZGlmZk5hbWUgPT4gIlNWTjog
YmluYXJ5IGZpbGUgZm9sbG93ZWQgYnkgcHJvcGVydHkgY2hhbmdlIG9uIGRpZmZlcmVudCBmaWxl
IiwKICAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKIEluZGV4OiB0ZXN0X2ZpbGUuc3dmCkBAIC00
NzgsNiArNjEwLDUwIEBAIEVORAogfSwKIHsKICAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUg
PT4gIlNWTjogYmluYXJ5IGZpbGUgZm9sbG93ZWQgYnkgcHJvcGVydHkgY2hhbmdlIG9uIGRpZmZl
cmVudCBmaWxlIHVzaW5nIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4g
dG9XaW5kb3dzTGluZUVuZGluZ3MoPDwnRU5EJywKK0luZGV4OiB0ZXN0X2ZpbGUuc3dmCis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CitDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4KK3N2
bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKworUHJvcGVydHkgY2hhbmdl
cyBvbjogdGVzdF9maWxlLnN3ZgorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworTmFtZTogc3ZuOm1pbWUtdHlwZQorICAg
KyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKworCitRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3
TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CisKK1Byb3BlcnR5IGNoYW5nZXMgb246IE1ha2Vm
aWxlCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCitBZGRlZDogc3ZuOmV4ZWN1dGFibGUKKyAgICsgKgorRU5ECispLAor
ICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK1t7CisgICAgc3ZuQ29udmVydGVkVGV4dCA9PiAgdG9X
aW5kb3dzTGluZUVuZGluZ3MoPDwnRU5EJywgIyBTYW1lIGFzIGlucHV0IHRleHQKK0luZGV4OiB0
ZXN0X2ZpbGUuc3dmCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CitDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4KK3N2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
KworCisKK1ExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpB
PT0KKworRU5ECispLAorICAgIGluZGV4UGF0aCA9PiAidGVzdF9maWxlLnN3ZiIsCisgICAgaXNC
aW5hcnkgPT4gMSwKKyAgICBpc1N2biA9PiAxLAorfV0sCisiUHJvcGVydHkgY2hhbmdlcyBvbjog
TWFrZWZpbGVcclxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xyXG4i
LAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CiAgICAgZGlmZk5hbWUgPT4gIlNWTjogYmluYXJ5IGZp
bGUgZm9sbG93ZWQgYnkgZmlsZSBjaGFuZ2Ugb24gZGlmZmVyZW50IGZpbGUiLAogICAgIGlucHV0
VGV4dCA9PiA8PCdFTkQnLAogSW5kZXg6IHRlc3RfZmlsZS5zd2YKQEAgLTUyMyw2ICs2OTksNTUg
QEAgRU5ECiAiSW5kZXg6IE1ha2VmaWxlXG4iXSwKICAgICBleHBlY3RlZE5leHRMaW5lID0+ICI9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09XG4iLAogfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNW
TjogYmluYXJ5IGZpbGUgZm9sbG93ZWQgYnkgZmlsZSBjaGFuZ2Ugb24gZGlmZmVyZW50IGZpbGUg
dXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiB0b1dpbmRvd3NM
aW5lRW5kaW5ncyg8PCdFTkQnLAorSW5kZXg6IHRlc3RfZmlsZS5zd2YKKz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0Nh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgorc3ZuOm1pbWUtdHlw
ZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorCitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiB0ZXN0
X2ZpbGUuc3dmCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCitOYW1lOiBzdm46bWltZS10eXBlCisgICArIGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQorCisKK1ExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1E
dzM0R0JnUUVBSlBRREpBPT0KKworSW5kZXg6IE1ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTWFr
ZWZpbGUJKHJldmlzaW9uIDYwMDIxKQorKysrIE1ha2VmaWxlCSh3b3JraW5nIGNvcHkpCitAQCAt
MSwzICsxLDQgQEAKKysKKyBNT0RVTEVTID0gSmF2YVNjcmlwdENvcmUgSmF2YVNjcmlwdEdsdWUg
V2ViQ29yZSBXZWJLaXQgV2ViS2l0MiBXZWJLaXRUb29scyAKKworIGFsbDoKK0VORAorKSwKKyAg
ICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZlcnRlZFRleHQgPT4gIHRvV2lu
ZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsICMgU2FtZSBhcyBpbnB1dCB0ZXh0CitJbmRleDogdGVz
dF9maWxlLnN3ZgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQorQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCitzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCisK
KworCitRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09
CisKK0VORAorKSwKKyAgICBpbmRleFBhdGggPT4gInRlc3RfZmlsZS5zd2YiLAorICAgIGlzQmlu
YXJ5ID0+IDEsCisgICAgaXNTdm4gPT4gMSwKK31dLAorIkluZGV4OiBNYWtlZmlsZVxyXG4iXSwK
KyAgICBleHBlY3RlZE5leHRMaW5lID0+ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiIsCit9LAogIyMjIwogIyBQ
cm9wZXJ0eSBDaGFuZ2VzOiBGaWxlIGNoYW5nZSB3aXRoIHByb3BlcnR5IGNoYW5nZQogIyMKQEAg
LTU3Nyw2ICs4MDIsNTcgQEAgRU5ECiB9LAogewogICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFt
ZSA9PiAiU1ZOOiBmaWxlIGNoYW5nZSBkaWZmIHdpdGggcHJvcGVydHkgY2hhbmdlLCBmb2xsb3dl
ZCBieSBwcm9wZXJ0eSBjaGFuZ2UgZGlmZiB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisg
ICAgaW5wdXRUZXh0ID0+IHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitJbmRleDogTWFr
ZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKy0tLSBNYWtlZmlsZQkocmV2aXNpb24gNjAwMjEpCisrKysgTWFr
ZWZpbGUJKHdvcmtpbmcgY29weSkKK0BAIC0xLDMgKzEsNCBAQAorKworIE1PRFVMRVMgPSBKYXZh
U2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBXZWJDb3JlIFdlYktpdCBXZWJLaXQyIFdlYktpdFRv
b2xzIAorCisgYWxsOgorCitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBNYWtlZmlsZQorX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XworQWRkZWQ6IHN2bjpleGVjdXRhYmxlCisgICArICoKKworCitQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBNYWtlZmlsZS5zaGFyZWQKK19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK0RlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCisg
ICAtICoKK0VORAorKSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCitbeworICAgIHN2bkNvbnZl
cnRlZFRleHQgPT4gIHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsICMgU2FtZSBhcyBpbnB1
dCB0ZXh0CitJbmRleDogTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBNYWtlZmlsZQkocmV2aXNp
b24gNjAwMjEpCisrKysgTWFrZWZpbGUJKHdvcmtpbmcgY29weSkKK0BAIC0xLDMgKzEsNCBAQAor
KworIE1PRFVMRVMgPSBKYXZhU2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBXZWJDb3JlIFdlYktp
dCBXZWJLaXQyIFdlYktpdFRvb2xzIAorCisgYWxsOgorCisKKworRU5ECispLAorICAgIGV4ZWN1
dGFibGVCaXREZWx0YSA9PiAxLAorICAgIGluZGV4UGF0aCA9PiAiTWFrZWZpbGUiLAorICAgIGlz
U3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNpb24gPT4gIjYwMDIxIiwKK31dLAorIlByb3BlcnR5
IGNoYW5nZXMgb246IE1ha2VmaWxlLnNoYXJlZFxyXG4iXSwKKyAgICBleHBlY3RlZE5leHRMaW5l
ID0+ICJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXHJcbiIsCit9LAoreworICAgICMgTmV3IHRlc3QKICAgICBkaWZmTmFt
ZSA9PiAiU1ZOOiBmaWxlIGNoYW5nZSBkaWZmIHdpdGggcHJvcGVydHkgY2hhbmdlLCBmb2xsb3dl
ZCBieSBmaWxlIGNoYW5nZSBkaWZmIiwKICAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKIEluZGV4
OiBNYWtlZmlsZQpAQCAtNjI2LDYgKzkwMiw1OSBAQCBFTkQKICJJbmRleDogTWFrZWZpbGUuc2hh
cmVkXG4iXSwKICAgICBleHBlY3RlZE5leHRMaW5lID0+ICI9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iLAogfSwKK3sK
KyAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIlNWTjogZmlsZSBjaGFuZ2UgZGlmZiB3
aXRoIHByb3BlcnR5IGNoYW5nZSwgZm9sbG93ZWQgYnkgZmlsZSBjaGFuZ2UgZGlmZiB1c2luZyBX
aW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHRvV2luZG93c0xpbmVFbmRp
bmdzKDw8J0VORCcsCitJbmRleDogTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBNYWtlZmlsZQko
cmV2aXNpb24gNjAwMjEpCisrKysgTWFrZWZpbGUJKHdvcmtpbmcgY29weSkKK0BAIC0xLDMgKzEs
NCBAQAorKworIE1PRFVMRVMgPSBKYXZhU2NyaXB0Q29yZSBKYXZhU2NyaXB0R2x1ZSBXZWJDb3Jl
IFdlYktpdCBXZWJLaXQyIFdlYktpdFRvb2xzIAorCisgYWxsOgorCitQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBNYWtlZmlsZQorX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXworTmFtZTogc3ZuOmV4ZWN1dGFibGUKKyAgIC0gKgor
CitJbmRleDogTWFrZWZpbGUuc2hhcmVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTWFrZWZpbGUuc2hhcmVk
CShyZXZpc2lvbiA2MDAyMSkKKysrKyBNYWtlZmlsZS5zaGFyZWQJKHdvcmtpbmcgY29weSkKK0BA
IC0xLDMgKzEsNCBAQAorKworU0NSSVBUU19QQVRIID89IC4uL1dlYktpdFRvb2xzL1NjcmlwdHMK
K1hDT0RFX09QVElPTlMgPSBgcGVybCAtSSQoU0NSSVBUU19QQVRIKSAtTXdlYmtpdGRpcnMgLWUg
J3ByaW50IFhjb2RlT3B0aW9uU3RyaW5nKCknYCAkKEFSR1MpCitFTkQKKyksCisgICAgZXhwZWN0
ZWRSZXR1cm4gPT4gWworW3sKKyAgICBzdm5Db252ZXJ0ZWRUZXh0ID0+ICB0b1dpbmRvd3NMaW5l
RW5kaW5ncyg8PCdFTkQnLCAjIFNhbWUgYXMgaW5wdXQgdGV4dAorSW5kZXg6IE1ha2VmaWxlCis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CistLS0gTWFrZWZpbGUJKHJldmlzaW9uIDYwMDIxKQorKysrIE1ha2VmaWxlCSh3
b3JraW5nIGNvcHkpCitAQCAtMSwzICsxLDQgQEAKKysKKyBNT0RVTEVTID0gSmF2YVNjcmlwdENv
cmUgSmF2YVNjcmlwdEdsdWUgV2ViQ29yZSBXZWJLaXQgV2ViS2l0MiBXZWJLaXRUb29scyAKKwor
IGFsbDoKKworCitFTkQKKyksCisgICAgZXhlY3V0YWJsZUJpdERlbHRhID0+IC0xLAorICAgIGlu
ZGV4UGF0aCA9PiAiTWFrZWZpbGUiLAorICAgIGlzU3ZuID0+IDEsCisgICAgc291cmNlUmV2aXNp
b24gPT4gIjYwMDIxIiwKK31dLAorIkluZGV4OiBNYWtlZmlsZS5zaGFyZWRcclxuIl0sCisgICAg
ZXhwZWN0ZWROZXh0TGluZSA9PiAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4iLAorfSwKICMjIyMKICMgICAgR2l0
IHRlc3QgY2FzZXMKICMjCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNT
VXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5Qcm9wZXJ0eS5wbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5Qcm9wZXJ0
eS5wbAkocmV2aXNpb24gNjQyNTgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
VkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5Qcm9wZXJ0eS5wbAkod29ya2luZyBjb3B5KQpAQCAt
MTMxLDYgKzEzMSwyNSBAQCBFTkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1l
ID0+ICJhZGQgc3ZuOmV4ZWN1dGFibGUsIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUgYW5kIHN0YXJ0
IG9mIG5leHQgZGlmZiB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0
ID0+IHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitBZGRlZDogc3ZuOmV4ZWN1dGFibGUK
KyAgICsgKgorCitJbmRleDogTWFrZWZpbGUuc2hhcmVkCitFTkQKKyksCisgICAgZXhwZWN0ZWRS
ZXR1cm4gPT4gWworeworICAgIG5hbWUgPT4gInN2bjpleGVjdXRhYmxlIiwKKyAgICBwcm9wZXJ0
eUNoYW5nZURlbHRhID0+IDEsCisgICAgdmFsdWUgPT4gIioiLAorfSwKKyJcclxuIl0sCisgICAg
ZXhwZWN0ZWROZXh0TGluZSA9PiAiSW5kZXg6IE1ha2VmaWxlLnNoYXJlZFxyXG4iLAorfSwKK3sK
KyAgICAjIE5ldyB0ZXN0CiAgICAgZGlmZk5hbWUgPT4gImFkZCBzdm46ZXhlY3V0YWJsZSwgZm9s
bG93ZWQgYnkgZW1wdHkgbGluZSBhbmQgc3RhcnQgb2YgbmV4dCBwcm9wZXJ0eSBkaWZmIiwKICAg
ICBpbnB1dFRleHQgPT4gPDwnRU5EJywKIEFkZGVkOiBzdm46ZXhlY3V0YWJsZQpAQCAtMTQ5LDYg
KzE2OCwyNSBAQCBFTkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1lID0+ICJh
ZGQgc3ZuOmV4ZWN1dGFibGUsIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUgYW5kIHN0YXJ0IG9mIG5l
eHQgcHJvcGVydHkgZGlmZiB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRU
ZXh0ID0+IHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKKyAgICsgKgorCitQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBNYWtlZmlsZS5zaGFyZWQKK0VORAor
KSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCit7CisgICAgbmFtZSA9PiAic3ZuOmV4ZWN1dGFi
bGUiLAorICAgIHByb3BlcnR5Q2hhbmdlRGVsdGEgPT4gMSwKKyAgICB2YWx1ZSA9PiAiKiIsCit9
LAorIlxyXG4iXSwKKyAgICBleHBlY3RlZE5leHRMaW5lID0+ICJQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBNYWtlZmlsZS5zaGFyZWRcclxuIiwKK30sCit7CisgICAgIyBOZXcgdGVzdAogICAgIGRpZmZO
YW1lID0+ICJtdWx0aS1saW5lICcrJyBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUgYW5k
IHN0YXJ0IG9mIG5leHQgZGlmZiIsCiAgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCiBOYW1lOiBk
b2N1bWVudGF0aW9uCkBAIC0xNjksNiArMjA3LDI3IEBAIEVORAogfSwKIHsKICAgICAjIE5ldyB0
ZXN0CisgICAgZGlmZk5hbWUgPT4gIm11bHRpLWxpbmUgJysnIGNoYW5nZSwgZm9sbG93ZWQgYnkg
ZW1wdHkgbGluZSBhbmQgc3RhcnQgb2YgbmV4dCBkaWZmIHVzaW5nIFdpbmRvd3MgbGluZSBlbmRp
bmdzIiwKKyAgICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGluZUVuZGluZ3MoPDwnRU5EJywKK05h
bWU6IGRvY3VtZW50YXRpb24KKyAgICsgQQorbG9uZyBzZW50ZW5jZSB0aGF0IHNwYW5zCittdWx0
aXBsZSBsaW5lcy4KKworSW5kZXg6IE1ha2VmaWxlLnNoYXJlZAorRU5ECispLAorICAgIGV4cGVj
dGVkUmV0dXJuID0+IFsKK3sKKyAgICBuYW1lID0+ICJkb2N1bWVudGF0aW9uIiwKKyAgICBwcm9w
ZXJ0eUNoYW5nZURlbHRhID0+IDEsCisgICAgdmFsdWUgPT4gIkFcclxubG9uZyBzZW50ZW5jZSB0
aGF0IHNwYW5zXHJcbm11bHRpcGxlIGxpbmVzLiIsCit9LAorIlxyXG4iXSwKKyAgICBleHBlY3Rl
ZE5leHRMaW5lID0+ICJJbmRleDogTWFrZWZpbGUuc2hhcmVkXHJcbiIsCit9LAoreworICAgICMg
TmV3IHRlc3QKICAgICBkaWZmTmFtZSA9PiAibXVsdGktbGluZSAnKycgY2hhbmdlLCBmb2xsb3dl
ZCBieSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBuZXh0IHByb3BlcnR5IGRpZmYiLAogICAgIGlu
cHV0VGV4dCA9PiA8PCdFTkQnLAogTmFtZTogZG9jdW1lbnRhdGlvbgpAQCAtMTg3LDYgKzI0Niwy
NyBAQCBFTkQKICJcbiJdLAogICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIlByb3BlcnR5IGNoYW5n
ZXMgb246IE1ha2VmaWxlLnNoYXJlZFxuIiwKIH0sCit7CisgICAgIyBOZXcgdGVzdAorICAgIGRp
ZmZOYW1lID0+ICJtdWx0aS1saW5lICcrJyBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUg
YW5kIHN0YXJ0IG9mIG5leHQgcHJvcGVydHkgZGlmZiB1c2luZyBXaW5kb3dzIGxpbmUgZW5kaW5n
cyIsCisgICAgaW5wdXRUZXh0ID0+IHRvV2luZG93c0xpbmVFbmRpbmdzKDw8J0VORCcsCitOYW1l
OiBkb2N1bWVudGF0aW9uCisgICArIEEKK2xvbmcgc2VudGVuY2UgdGhhdCBzcGFucworbXVsdGlw
bGUgbGluZXMuCisKK1Byb3BlcnR5IGNoYW5nZXMgb246IE1ha2VmaWxlLnNoYXJlZAorRU5ECisp
LAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBuYW1lID0+ICJkb2N1bWVudGF0aW9u
IiwKKyAgICBwcm9wZXJ0eUNoYW5nZURlbHRhID0+IDEsCisgICAgdmFsdWUgPT4gIkFcclxubG9u
ZyBzZW50ZW5jZSB0aGF0IHNwYW5zXHJcbm11bHRpcGxlIGxpbmVzLiIsCit9LAorIlxyXG4iXSwK
KyAgICBleHBlY3RlZE5leHRMaW5lID0+ICJQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBNYWtlZmlsZS5z
aGFyZWRcclxuIiwKK30sCiAjIyMjCiAjIFByb3BlcnR5IHZhbHVlIGZvbGxvd2VkIGJ5IGVtcHR5
IGxpbmUgYW5kIHN0YXJ0IG9mIGJpbmFyeSBwYXRjaAogIyMKQEAgLTIxMCw2ICsyOTAsMjUgQEAg
RU5ECiB9LAogewogICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAiYWRkIHN2bjpleGVj
dXRhYmxlLCBmb2xsb3dlZCBieSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0Y2gg
dXNpbmcgV2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiB0b1dpbmRvd3NM
aW5lRW5kaW5ncyg8PCdFTkQnLAorQWRkZWQ6IHN2bjpleGVjdXRhYmxlCisgICArICoKKworUTFk
VEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQorRU5ECisp
LAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBuYW1lID0+ICJzdm46ZXhlY3V0YWJs
ZSIsCisgICAgcHJvcGVydHlDaGFuZ2VEZWx0YSA9PiAxLAorICAgIHZhbHVlID0+ICIqIiwKK30s
CisiXHJcbiJdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gIlExZFRCeDBBQUFCNDJpdGc0R2xn
WUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT1cclxuIiwKK30sCit7CisgICAgIyBOZXcg
dGVzdAogICAgIGRpZmZOYW1lID0+ICJtdWx0aS1saW5lICcrJyBjaGFuZ2UsIGZvbGxvd2VkIGJ5
IGVtcHR5IGxpbmUgYW5kIHN0YXJ0IG9mIGJpbmFyeSBwYXRjaCIsCiAgICAgaW5wdXRUZXh0ID0+
IDw8J0VORCcsCiBOYW1lOiBkb2N1bWVudGF0aW9uCkBAIC0yMzAsNiArMzI5LDI3IEBAIEVORAog
fSwKIHsKICAgICAjIE5ldyB0ZXN0CisgICAgZGlmZk5hbWUgPT4gIm11bHRpLWxpbmUgJysnIGNo
YW5nZSwgZm9sbG93ZWQgYnkgZW1wdHkgbGluZSBhbmQgc3RhcnQgb2YgYmluYXJ5IHBhdGNoIHVz
aW5nIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGlu
ZUVuZGluZ3MoPDwnRU5EJywKK05hbWU6IGRvY3VtZW50YXRpb24KKyAgICsgQQorbG9uZyBzZW50
ZW5jZSB0aGF0IHNwYW5zCittdWx0aXBsZSBsaW5lcy4KKworUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZ
SmpHd01ERHlPRE14TUR3MzRHQmdRRUFKUFFESkE9PQorRU5ECispLAorICAgIGV4cGVjdGVkUmV0
dXJuID0+IFsKK3sKKyAgICBuYW1lID0+ICJkb2N1bWVudGF0aW9uIiwKKyAgICBwcm9wZXJ0eUNo
YW5nZURlbHRhID0+IDEsCisgICAgdmFsdWUgPT4gIkFcclxubG9uZyBzZW50ZW5jZSB0aGF0IHNw
YW5zXHJcbm11bHRpcGxlIGxpbmVzLiIsCit9LAorIlxyXG4iXSwKKyAgICBleHBlY3RlZE5leHRM
aW5lID0+ICJRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURK
QT09XHJcbiIsCit9LAoreworICAgICMgTmV3IHRlc3QKICAgICBkaWZmTmFtZSA9PiAibXVsdGkt
bGluZSAnLScgY2hhbmdlLCBmb2xsb3dlZCBieSBtdWx0aS1saW5lICcrJyBjaGFuZ2UsIGVtcHR5
IGxpbmUsIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0Y2giLAogICAgIGlucHV0VGV4dCA9PiA8PCdF
TkQnLAogTW9kaWZpZWQ6IGRvY3VtZW50YXRpb24KQEAgLTI1MSw2ICszNzEsMzAgQEAgRU5ECiAi
XG4iXSwKICAgICBleHBlY3RlZE5leHRMaW5lID0+ICJRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3
TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09XG4iLAogfSwKK3sKKyAgICAjIE5ldyB0ZXN0Cisg
ICAgZGlmZk5hbWUgPT4gIm11bHRpLWxpbmUgJy0nIGNoYW5nZSwgZm9sbG93ZWQgYnkgbXVsdGkt
bGluZSAnKycgY2hhbmdlLCBlbXB0eSBsaW5lLCBhbmQgc3RhcnQgb2YgYmluYXJ5IHBhdGNoIHVz
aW5nIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGlu
ZUVuZGluZ3MoPDwnRU5EJywKK01vZGlmaWVkOiBkb2N1bWVudGF0aW9uCisgICAtIEEKK2xvbmcg
c2VudGVuY2UgdGhhdCBzcGFucworbXVsdGlwbGUgbGluZXMuCisgICArIEFub3RoZXIKK2xvbmcg
c2VudGVuY2UgdGhhdCBzcGFucworbXVsdGlwbGUgbGluZXMuCisKK1ExZFRCeDBBQUFCNDJpdGc0
R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KK0VORAorKSwKKyAgICBleHBlY3Rl
ZFJldHVybiA9PiBbCit7CisgICAgbmFtZSA9PiAiZG9jdW1lbnRhdGlvbiIsCisgICAgcHJvcGVy
dHlDaGFuZ2VEZWx0YSA9PiAxLAorICAgIHZhbHVlID0+ICJBbm90aGVyXHJcbmxvbmcgc2VudGVu
Y2UgdGhhdCBzcGFuc1xyXG5tdWx0aXBsZSBsaW5lcy4iLAorfSwKKyJcclxuIl0sCisgICAgZXhw
ZWN0ZWROZXh0TGluZSA9PiAiUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRH
QmdRRUFKUFFESkE9PVxyXG4iLAorfSwKICMjIyMKICMgU3VjY2Vzc2l2ZSBwcm9wZXJ0aWVzCiAj
IwpAQCAtMzQwLDYgKzQ4NCwyNCBAQCBFTkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAorICAgIGRp
ZmZOYW1lID0+ICJzaW5nbGUtbGluZSAnKycgd2l0aCB0cmFpbGluZyBuZXcgbGluZSB1c2luZyBX
aW5kb3dzIGxpbmUgZW5kaW5ncyIsCisgICAgaW5wdXRUZXh0ID0+IHRvV2luZG93c0xpbmVFbmRp
bmdzKDw8J0VORCcsCitBZGRlZDogZG9jdW1lbnRhdGlvbgorICAgKyBBIHNlbnRlbmNlLgorCitF
TkQKKyksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworeworICAgIG5hbWUgPT4gImRvY3VtZW50
YXRpb24iLAorICAgIHByb3BlcnR5Q2hhbmdlRGVsdGEgPT4gMSwKKyAgICB2YWx1ZSA9PiAiQSBz
ZW50ZW5jZS4iLAorfSwKKyJcclxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiB1bmRlZiwK
K30sCit7CisgICAgIyBOZXcgdGVzdAogICAgIGRpZmZOYW1lID0+ICJzaW5nbGUtbGluZSAnKycg
d2l0aCB0cmFpbGluZyBuZXcgbGluZSwgZm9sbG93ZWQgYnkgZW1wdHkgbGluZSBhbmQgc3RhcnQg
b2YgYmluYXJ5IHBhdGNoIiwKICAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKIEFkZGVkOiBkb2N1
bWVudGF0aW9uCkBAIC0zNTksNiArNTIxLDI2IEBAIEVORAogfSwKIHsKICAgICAjIE5ldyB0ZXN0
CisgICAgZGlmZk5hbWUgPT4gInNpbmdsZS1saW5lICcrJyB3aXRoIHRyYWlsaW5nIG5ldyBsaW5l
LCBmb2xsb3dlZCBieSBlbXB0eSBsaW5lIGFuZCBzdGFydCBvZiBiaW5hcnkgcGF0Y2ggdXNpbmcg
V2luZG93cyBsaW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiB0b1dpbmRvd3NMaW5lRW5k
aW5ncyg8PCdFTkQnLAorQWRkZWQ6IGRvY3VtZW50YXRpb24KKyAgICsgQSBzZW50ZW5jZS4KKwor
CitRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CitF
TkQKKyksCisgICAgZXhwZWN0ZWRSZXR1cm4gPT4gWworeworICAgIG5hbWUgPT4gImRvY3VtZW50
YXRpb24iLAorICAgIHByb3BlcnR5Q2hhbmdlRGVsdGEgPT4gMSwKKyAgICB2YWx1ZSA9PiAiQSBz
ZW50ZW5jZS4iLAorfSwKKyJcclxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiXHJcbiIs
Cit9LAoreworICAgICMgTmV3IHRlc3QKICAgICBkaWZmTmFtZSA9PiAic2luZ2xlLWxpbmUgJy0n
IGNoYW5nZSB3aXRoIHRyYWlsaW5nIG5ldyBsaW5lLCBhbmQgc2luZ2xlLWxpbmUgJysnIGNoYW5n
ZSIsCiAgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCiBNb2RpZmllZDogZG9jdW1lbnRhdGlvbgpA
QCAtMzc3LDYgKzU1OSwyNSBAQCBFTkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAorICAgIGRpZmZO
YW1lID0+ICJzaW5nbGUtbGluZSAnLScgY2hhbmdlIHdpdGggdHJhaWxpbmcgbmV3IGxpbmUsIGFu
ZCBzaW5nbGUtbGluZSAnKycgY2hhbmdlIHVzaW5nIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAg
ICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGluZUVuZGluZ3MoPDwnRU5EJywKK01vZGlmaWVkOiBk
b2N1bWVudGF0aW9uCisgICAtIEEgbG9uZyBzZW50ZW5jZS4KKworICAgKyBBIHNlbnRlbmNlLgor
RU5ECispLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsKK3sKKyAgICBuYW1lID0+ICJkb2N1bWVu
dGF0aW9uIiwKKyAgICBwcm9wZXJ0eUNoYW5nZURlbHRhID0+IC0xLCAjIFNpbmNlIHdlIG9ubHkg
aW50ZXJwcmV0IHRoZSAnLScgcHJvcGVydHkuCisgICAgdmFsdWUgPT4gIkEgbG9uZyBzZW50ZW5j
ZS4iLAorfSwKKyJcclxuIl0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiICAgKyBBIHNlbnRl
bmNlLlxyXG4iLAorfSwKK3sKKyAgICAjIE5ldyB0ZXN0CiAgICAgZGlmZk5hbWUgPT4gIm11bHRp
LWxpbmUgJy0nIGNoYW5nZSB3aXRoIHRyYWlsaW5nIG5ldyBsaW5lLCBhbmQgbXVsdGktbGluZSAn
KycgY2hhbmdlIiwKICAgICBpbnB1dFRleHQgPT4gPDwnRU5EJywKIE1vZGlmaWVkOiBkb2N1bWVu
dGF0aW9uCkBAIC0zOTcsNiArNTk4LDI5IEBAIEVORAogIlxuIl0sCiAgICAgZXhwZWN0ZWROZXh0
TGluZSA9PiAiICAgKyBBbm90aGVyXG4iLAogfSwKK3sKKyAgICAjIE5ldyB0ZXN0CisgICAgZGlm
Zk5hbWUgPT4gIm11bHRpLWxpbmUgJy0nIGNoYW5nZSB3aXRoIHRyYWlsaW5nIG5ldyBsaW5lLCBh
bmQgbXVsdGktbGluZSAnKycgY2hhbmdlIHVzaW5nIFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAg
ICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGluZUVuZGluZ3MoPDwnRU5EJywKK01vZGlmaWVkOiBk
b2N1bWVudGF0aW9uCisgICAtIEEKK2xvbmcgc2VudGVuY2UgdGhhdCBzcGFucworbXVsdGlwbGUg
bGluZXMuCisKKyAgICsgQW5vdGhlcgorbG9uZyBzZW50ZW5jZSB0aGF0IHNwYW5zCittdWx0aXBs
ZSBsaW5lcy4KK0VORAorKSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbCit7CisgICAgbmFtZSA9
PiAiZG9jdW1lbnRhdGlvbiIsCisgICAgcHJvcGVydHlDaGFuZ2VEZWx0YSA9PiAtMSwgIyBTaW5j
ZSB3ZSBvbmx5IGludGVycHJldCB0aGUgJy0nIHByb3BlcnR5LgorICAgIHZhbHVlID0+ICJBXHJc
bmxvbmcgc2VudGVuY2UgdGhhdCBzcGFuc1xyXG5tdWx0aXBsZSBsaW5lcy4iLAorfSwKKyJcclxu
Il0sCisgICAgZXhwZWN0ZWROZXh0TGluZSA9PiAiICAgKyBBbm90aGVyXHJcbiIsCit9LAogKTsK
IAogbXkgJHRlc3RDYXNlc0NvdW50ID0gQHRlc3RDYXNlSGFzaFJlZnM7CkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvVkNTVXRpbHNfdW5pdHRlc3QvcGFyc2VTdm5Qcm9wZXJ0
eVZhbHVlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9W
Q1NVdGlsc191bml0dGVzdC9wYXJzZVN2blByb3BlcnR5VmFsdWUucGwJKHJldmlzaW9uIDY0MjU4
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL1ZDU1V0aWxzX3VuaXR0ZXN0L3Bh
cnNlU3ZuUHJvcGVydHlWYWx1ZS5wbAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBF
TkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAotICAgIGRpZmZOYW1lID0+ICJzaW5nbGUtbGluZSAn
LScgY2hhbmdlIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUiLAorICAgIGRpZmZOYW1lID0+ICJzaW5n
bGUtbGluZSAnLScgY2hhbmdlIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUgd2l0aCBVbml4IGxpbmUg
ZW5kaW5ncyIsCiAgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCiAgICAtICoKIApAQCAtNjgsNiAr
NjgsMTcgQEAgRU5ECiB9LAogewogICAgICMgTmV3IHRlc3QKKyAgICBkaWZmTmFtZSA9PiAic2lu
Z2xlLWxpbmUgJy0nIGNoYW5nZSBmb2xsb3dlZCBieSBlbXB0eSBsaW5lIHdpdGggV2luZG93cyBs
aW5lIGVuZGluZ3MiLAorICAgIGlucHV0VGV4dCA9PiB0b1dpbmRvd3NMaW5lRW5kaW5ncyg8PCdF
TkQnLAorICAgLSAqCisKK0VORAorKSwKKyAgICBleHBlY3RlZFJldHVybiA9PiBbIioiLCAiXHJc
biJdLAorICAgIGV4cGVjdGVkTmV4dExpbmUgPT4gdW5kZWYsCit9LAoreworICAgICMgTmV3IHRl
c3QKICAgICBkaWZmTmFtZSA9PiAic2luZ2xlLWxpbmUgJy0nIGNoYW5nZSBmb2xsb3dlZCBieSB0
aGUgbmV4dCBwcm9wZXJ0eSIsCiAgICAgaW5wdXRUZXh0ID0+IDw8J0VORCcsCiAgICAtICoKQEAg
LTkxLDYgKzEwMiwyMCBAQCBFTkQKIH0sCiB7CiAgICAgIyBOZXcgdGVzdAorICAgIGRpZmZOYW1l
ID0+ICJtdWx0aS1saW5lICcrJyBjaGFuZ2UgYW5kIHN0YXJ0IG9mIGJpbmFyeSBwYXRjaCB3aXRo
IFdpbmRvd3MgbGluZSBlbmRpbmdzIiwKKyAgICBpbnB1dFRleHQgPT4gdG9XaW5kb3dzTGluZUVu
ZGluZ3MoPDwnRU5EJywKKyAgICsgQQorbG9uZyBzZW50ZW5jZSB0aGF0IHNwYW5zCittdWx0aXBs
ZSBsaW5lcy4KKworUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFK
UFFESkE9PQorRU5ECispLAorICAgIGV4cGVjdGVkUmV0dXJuID0+IFsiQVxyXG5sb25nIHNlbnRl
bmNlIHRoYXQgc3BhbnNcclxubXVsdGlwbGUgbGluZXMuIiwgIlxyXG4iXSwKKyAgICBleHBlY3Rl
ZE5leHRMaW5lID0+ICJRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FF
QUpQUURKQT09XHJcbiIsCit9LAoreworICAgICMgTmV3IHRlc3QKICAgICBkaWZmTmFtZSA9PiAi
bXVsdGktbGluZSAnLScgY2hhbmdlIGZvbGxvd2VkIGJ5ICcrJyBzaW5nbGUtbGluZSBjaGFuZ2Ui
LAogICAgIGlucHV0VGV4dCA9PiA8PCdFTkQnLAogICAgLSBBCg==
</data>
<flag name="review"
          id="53029"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>