<?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>12023</bug_id>
          
          <creation_ts>2006-12-28 19:06:33 -0800</creation_ts>
          <short_desc>svn-create-patch and friends should handle moved/copied files</short_desc>
          <delta_ts>2018-09-03 04:33:31 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14590</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>39121</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-28 19:06:33 -0800</bug_when>
    <thetext>When creating (svn-create-patch), applying (svn-apply) and unapplying (svn-unapply) patches, moved and copied files should be handled properly on working copies (trees) other than the one they were originally created in.

Note that in svn, a &quot;move&quot; is the same thing as &quot;copy&quot; then &quot;delete&quot;, so as long as you handle a &quot;copy&quot; (before &quot;delete&quot;), you solve both &quot;move&quot; and &quot;copy&quot;.

The other challenge is a &quot;move&quot; or &quot;copy&quot; followed by changes to the file after the change.  The best solution here is to separate the &quot;copy&quot; from the changes, since combining them could cause changes to be lost if only the whole version from the patch is applied.  This means that a moved/copied file with changes will be split up into two patches within a diff, but as long as they appear in the correct order, the end result is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39106</commentid>
    <comment_count>1</comment_count>
      <attachid>12097</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-28 19:09:47 -0800</bug_when>
    <thetext>Created attachment 12097
First pass at changes to svn-create-patch

This is a first pass at changes to svn-create-patch to make it work with moved/copied files.  The only thing left out is property changes for the moved/changed files.

We also need changes to svn-apply and svn-unapply to handle the (subtle) changes in the patches created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38917</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-30 08:21:27 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=12097) [edit]
&gt; First pass at changes to svn-create-patch
&gt; 
&gt; This is a first pass at changes to svn-create-patch to make it work with
&gt; moved/copied files.  The only thing left out is property changes for the
&gt; moved/changed files.
&gt; 
&gt; We also need changes to svn-apply and svn-unapply to handle the (subtle)
&gt; changes in the patches created.

Hmm...this patch also doesn&apos;t include removed files in the diff!

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38649</commentid>
    <comment_count>3</comment_count>
      <attachid>12139</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-31 21:08:20 -0800</bug_when>
    <thetext>Created attachment 12139
Patch v2

This patch includes changes for svn-apply and svn-unapply, and fixes the issue of missing removed file patches mentioned in Comment #2.

Theory of operation:

In subversion, a moved (or renamed) file is identical to a copy and a delete, so the modified patch only needs to identify the special case when an added file was copied from an existing file.

The subtle difference introduced to identify copied files is a modified &quot;from&quot; line (the patch line that starts with &quot;--- &quot;) that references the original path and revision number instead of the new path.

Thus an svn copy will generate up to two patches:  one for the copy and one for any changes made after the copy.  An svn move (or svn rename) will generate up to three patches:  one for the delete, one for the copy, and one for any post-copy changes.

Compatibility issues with plain old patch(1):

- In POSIX mode, patch(1) determines the file name to patch by checking for the existence of the first path in this list:  old (&quot;--- &quot; line), new (&quot;+++ &quot; line) and index (&quot;Index: &quot; line).  Because svn-create-patch now modifies the old line to point to the original file, patch(1) wants to patch the wrong file (and ends up doing nothing because that file already exists).  In &quot;normal&quot; mode (-n), patch(1) completely ignores a patch formatted this way.

- If changes are made after a file is copied or moved, svn-create-patch will create two patches:  one to represent the copy and one to represent post-copy changes.  When using patch(1) to reverse the change, these patches must be applied in the reverse order as well (although I don&apos;t think patch(1) applies the patches in a file in reverse order).  Assuming the previous issue was resolved, this issue would still remain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38641</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-31 21:14:53 -0800</bug_when>
    <thetext>After typing up Comment #3, I&apos;ve almost convinced myself that I need another way to add a hint to the patch to describe copied files.  This is what svn-create-patch from Patch v2 will generate (from Bug 12036):

Index: JavaScriptCore/pcre/pcre_printint.src
===================================================================
--- JavaScriptCore/pcre/pcre_printint.c (revision 18482)
+++ JavaScriptCore/pcre/pcre_printint.src       (working copy)

Perhaps a better approach would be to add another set of parenthesis on the &quot;old&quot; line describing the original source like this (will probably wrap poorly):

Index: JavaScriptCore/pcre/pcre_printint.src
===================================================================
--- JavaScriptCore/pcre/pcre_printint.src (revision 18482) (JavaScriptCore/pcre/pcre_printint.c@18482)
+++ JavaScriptCore/pcre/pcre_printint.src       (working copy)

I need to do some testing, but that may be more acceptable to patch(1) than changing the &quot;old&quot; line.

Comments?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38625</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-01 04:28:45 -0800</bug_when>
    <thetext>Another possible format would be to mimic what &quot;svn log -v&quot; does with copied files:

Index: JavaScriptCore/pcre/pcre_printint.src
===================================================================
--- JavaScriptCore/pcre/pcre_printint.src (revision 18482) (from JavaScriptCore/pcre/pcre_printint.c:18482)
+++ JavaScriptCore/pcre/pcre_printint.src       (working copy)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38203</commentid>
    <comment_count>6</comment_count>
      <attachid>12152</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-01 17:59:47 -0800</bug_when>
    <thetext>Created attachment 12152
Patch v3

Implement format from Comment #5.  This addresses the first issue in Comment #3.  (The second issue still exists since we don&apos;t want any changes to the copied file to be lost if the originally copied file changes between the time the patch is made and the time it is applied.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38004</commentid>
    <comment_count>7</comment_count>
      <attachid>12152</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-01 19:35:25 -0800</bug_when>
    <thetext>Comment on attachment 12152
Patch v3

Looks great! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37994</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-01 20:29:24 -0800</bug_when>
    <thetext>Committed revision 18513.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12097</attachid>
            <date>2006-12-28 19:09:47 -0800</date>
            <delta_ts>2006-12-31 21:08:20 -0800</delta_ts>
            <desc>First pass at changes to svn-create-patch</desc>
            <filename>bug-12023-v1.diff</filename>
            <type>text/plain</type>
            <size>6274</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gJKHJldmlzaW9uIDE4NDYzKQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw5ICszNCw2IEBACiAjICAgQWx3YXlzIHBhc3NlcyAiLXAiIHRvIGRpZmYgc28gaXQgd2ls
bCB0cnkgdG8gaW5jbHVkZSBmdW5jdGlvbiBuYW1lcy4KICMgICBIYW5kbGVzIGJpbmFyeSBmaWxl
cyAoZW5jb2RlZCBhcyBhIGJhc2U2NCBjaHVuayBvZiB0ZXh0KS4KICMgICBTb3J0cyB0aGUgZGlm
ZnMgYWxwaGFiZXRpY2FsbHkgYnkgdGV4dCBmaWxlcywgdGhlbiBiaW5hcnkgZmlsZXMuCi0jCi0j
IE1pc3NpbmcgZmVhdHVyZXM6Ci0jCiAjICAgSGFuZGxlIG1vdmVkIGZpbGVzLgogCiB1c2Ugc3Ry
aWN0OwpAQCAtNTMsMTAgKzUwLDE1IEBAIHVzZSBQT1NJWCBxdyg6ZXJybm9faCk7CiB1c2UgVGlt
ZTo6Z210aW1lOwogCiBzdWIgY2Fub25pY2FsaXplUGF0aCgkKTsKK3N1YiBmaW5kTWltZVR5cGUo
JCk7CitzdWIgZmluZE1vZGlmaWNhdGlvblR5cGUoJCk7CitzdWIgZmluZFNvdXJjZUZpbGVBbmRS
ZXZpc2lvbigkKTsKIHN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKTsKLXN1YiBnZW5lcmF0ZURpZmYo
JCk7CitzdWIgZ2VuZXJhdGVEaWZmKCQkJCk7CiBzdWIgZ2VuZXJhdGVGaWxlTGlzdCgkXCVcJSk7
CitzdWIgaXNCaW5hcnlNaW1lVHlwZSgkKTsKIHN1YiBudW1lcmljY21wKCQkKTsKK3N1YiBvdXRw
dXRBZGRpdGlvbldpdGhIaXN0b3J5KCQkKTsKIHN1YiBvdXRwdXRCaW5hcnlDb250ZW50KCQpOwog
c3ViIHBhdGhjbXAoJCQpOwogc3ViIHByb2Nlc3NQYXRocyhcQCk7CkBAIC03OSwxMCArODEsMTAg
QEAgZm9yIG15ICRwYXRoIChrZXlzICVwYXRocykgewogCiAjIEdlbmVyYXRlIHRoZSBkaWZmIGZv
ciB0ZXh0IGZpbGVzLCB0aGVuIGJpbmFyeSBmaWxlcywgZm9yIGVhc3kgcmV2aWV3aW5nCiBmb3Ig
bXkgJGZpbGUgKHNvcnQgcGF0aGNtcCBrZXlzICV0ZXh0RmlsZXMpIHsKLSAgICBnZW5lcmF0ZURp
ZmYoJGZpbGUpOworICAgIGdlbmVyYXRlRGlmZigkZmlsZSwgJHRleHRGaWxlc3skZmlsZX0sIDAp
OwogfQogZm9yIG15ICRmaWxlIChzb3J0IHBhdGhjbXAga2V5cyAlYmluYXJ5RmlsZXMpIHsKLSAg
ICBnZW5lcmF0ZURpZmYoJGZpbGUpOworICAgIGdlbmVyYXRlRGlmZigkZmlsZSwgJGJpbmFyeUZp
bGVzeyRmaWxlfSwgMSk7CiB9CiAKIGV4aXQgMDsKQEAgLTEwNyw2ICsxMDksNTYgQEAgc3ViIGNh
bm9uaWNhbGl6ZVBhdGgoJCkKICAgICByZXR1cm4gKCQjZGlycyA+PSAwKSA/IEZpbGU6OlNwZWMt
PmNhdGRpcihAZGlycykgOiAiLiI7CiB9CiAKK3N1YiBmaW5kTWltZVR5cGUoJCkKK3sKKyAgICBt
eSAoJGZpbGUpID0gQF87CisgICAgb3BlbiBQUk9QR0VULCAic3ZuIHByb3BnZXQgc3ZuOm1pbWUt
dHlwZSAnJGZpbGUnIHwiIG9yIGRpZTsKKyAgICBteSAkbWltZVR5cGUgPSA8UFJPUEdFVD47Cisg
ICAgY2xvc2UgUFJPUEdFVDsKKyAgICBjaG9tcCAkbWltZVR5cGUgaWYgJG1pbWVUeXBlOworICAg
IHJldHVybiAkbWltZVR5cGU7Cit9CisKK3N1YiBmaW5kTW9kaWZpY2F0aW9uVHlwZSgkKQorewor
ICAgIG15ICgkc3RhdCkgPSBAXzsKKyAgICBteSAkZmlsZVN0YXQgPSBzdWJzdHIoJHN0YXQsIDAs
IDEpOworICAgIG15ICRwcm9wZXJ0eVN0YXQgPSBzdWJzdHIoJHN0YXQsIDEsIDEpOworICAgIGlm
ICgkZmlsZVN0YXQgZXEgIkEiKSB7CisgICAgICAgIG15ICRhZGRpdGlvbldpdGhIaXN0b3J5ID0g
c3Vic3RyKCRzdGF0LCAzLCAxKTsKKyAgICAgICAgcmV0dXJuICRhZGRpdGlvbldpdGhIaXN0b3J5
IGVxICIrIiA/ICJhZGRpdGlvbldpdGhIaXN0b3J5IiA6ICJhZGRpdGlvbiI7CisgICAgfQorICAg
IHJldHVybiAibW9kaWZpY2F0aW9uIiBpZiAoJGZpbGVTdGF0IGVxICJNIiB8fCAkcHJvcGVydHlT
dGF0IGVxICJNIik7CisgICAgcmV0dXJuICJkZWxldGlvbiIgaWYgKCRmaWxlU3RhdCBlcSAiRCIp
OworICAgIHJldHVybiB1bmRlZjsKK30KKworc3ViIGZpbmRTb3VyY2VGaWxlQW5kUmV2aXNpb24o
JCkKK3sKKyAgICBteSAoJGZpbGUpID0gQF87CisgICAgbXkgJGJhc2VVcmw7CisgICAgb3BlbiBJ
TkZPLCAic3ZuIGluZm8gLiB8IiBvciBkaWU7CisgICAgd2hpbGUgKDxJTkZPPikgeworICAgICAg
ICBpZiAoL15VUkw6ICguKykvKSB7CisgICAgICAgICAgICAkYmFzZVVybCA9ICQxOworICAgICAg
ICAgICAgbGFzdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSBJTkZPOworICAgIG15ICRz
b3VyY2VGaWxlOworICAgIG15ICRzb3VyY2VSZXZpc2lvbjsKKyAgICBvcGVuIElORk8sICJzdm4g
aW5mbyAnJGZpbGUnIHwiIG9yIGRpZTsKKyAgICB3aGlsZSAoPElORk8+KSB7CisgICAgICAgIGlm
ICgvXkNvcGllZCBGcm9tIFVSTDogKC4rKS8pIHsKKyAgICAgICAgICAgICRzb3VyY2VGaWxlID0g
c3Vic3RyKCQxLCBsZW5ndGgoJGJhc2VVcmwpICsgMSk7CisgICAgICAgIH0gZWxzaWYgKC9eQ29w
aWVkIEZyb20gUmV2OiAoWzAtOV0rKS8pIHsKKyAgICAgICAgICAgICRzb3VyY2VSZXZpc2lvbiA9
ICQxOworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlIElORk87CisgICAgcmV0dXJuICgkc291
cmNlRmlsZSwgJHNvdXJjZVJldmlzaW9uKTsKK30KKwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQp
CiB7CiAgICAgbXkgJHBhdGNoID0gc2hpZnQ7CkBAIC0xNTgsNTkgKzIxMCw1NSBAQCBzdWIgZml4
Q2hhbmdlTG9nUGF0Y2goJCkKICAgICByZXR1cm4gJG5ld1BhdGNoOwogfQogCi1zdWIgZ2VuZXJh
dGVEaWZmKCQpCitzdWIgZ2VuZXJhdGVEaWZmKCQkJCkKIHsKLSAgICBteSAoJGZpbGUpID0gQF87
Ci0gICAgbXkgJGVycm9ycyA9ICIiOwotICAgIG15ICRpc0JpbmFyeTsKKyAgICBteSAoJGZpbGUs
ICRtb2RpZmljYXRpb25UeXBlLCAkaXNCaW5hcnkpID0gQF87CiAgICAgbXkgJHBhdGNoOworICAg
IGlmICgkbW9kaWZpY2F0aW9uVHlwZSBlcSAiYWRkaXRpb25XaXRoSGlzdG9yeSIpIHsKKyAgICAg
ICAgb3V0cHV0QWRkaXRpb25XaXRoSGlzdG9yeSgkZmlsZSwgJGlzQmluYXJ5KTsKKyAgICB9CiAg
ICAgb3BlbiBESUZGLCAic3ZuIGRpZmYgLS1kaWZmLWNtZCBkaWZmIC14IC11TnAgJyRmaWxlJyB8
IiBvciBkaWU7CiAgICAgd2hpbGUgKDxESUZGPikgewotICAgICAgICAkaXNCaW5hcnkgPSAxIGlm
ICgvXkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlXC4kLyk7CiAg
ICAgICAgICRwYXRjaCAuPSAkXzsKICAgICB9CiAgICAgY2xvc2UgRElGRjsKICAgICAkcGF0Y2gg
PSBmaXhDaGFuZ2VMb2dQYXRjaCgkcGF0Y2gpIGlmIGJhc2VuYW1lKCRmaWxlKSBlcSAiQ2hhbmdl
TG9nIjsKLSAgICBwcmludCAkcGF0Y2g7CisgICAgcHJpbnQgJHBhdGNoIGlmICRwYXRjaDsKICAg
ICBpZiAoJGlzQmluYXJ5KSB7Ci0gICAgICAgIHByaW50ICJcbiIgaWYgJHBhdGNoID1+IG0vXG5c
UyskL207CisgICAgICAgIHByaW50ICJcbiIgaWYgKCRwYXRjaCAmJiAkcGF0Y2ggPX4gbS9cblxT
KyQvbSk7CiAgICAgICAgIG91dHB1dEJpbmFyeUNvbnRlbnQoJGZpbGUpOwogICAgIH0KLSAgICBw
cmludCBTVERFUlIgJGVycm9yczsKIH0KIAogc3ViIGdlbmVyYXRlRmlsZUxpc3QoJFwlXCUpCiB7
Ci0gICAgbXkgKCRwYXRoLCAkdGV4dEZpbGVzLCAkYmluYXJ5RmlsZXMpID0gQF87Ci0gICAgbXkg
JGluZGV4UGF0aDsKLSAgICBteSAkaXNCaW5hcnk7Ci0gICAgb3BlbiBESUZGLCAic3ZuIGRpZmYg
LS1kaWZmLWNtZCBkaWZmIC14IC11TnAgJyRwYXRoJyB8IiBvciBkaWU7Ci0gICAgd2hpbGUgKDxE
SUZGPikgewotICAgICAgICBpZiAoL15JbmRleDogKC4qKS8pIHsKLSAgICAgICAgICAgIG15ICRu
ZXdJbmRleFBhdGggPSAkMTsKLSAgICAgICAgICAgIGlmICgkaW5kZXhQYXRoKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCRpc0JpbmFyeSkgewotICAgICAgICAgICAgICAgICAgICAkYmluYXJ5Rmls
ZXMtPnskaW5kZXhQYXRofSA9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgJHRleHRGaWxlcy0+eyRpbmRleFBhdGh9ID0gMTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgbXkgKCRzdGF0UGF0aCwgJHRleHRGaWxlcywgJGJpbmFyeUZpbGVzKSA9IEBfOwor
ICAgIG9wZW4gU1RBVCwgInN2biBzdGF0ICckc3RhdFBhdGgnIHwiIG9yIGRpZTsKKyAgICB3aGls
ZSAobXkgJGxpbmUgPSA8U1RBVD4pIHsKKyAgICAgICAgY2hvbXAgJGxpbmU7CisgICAgICAgIG15
ICRzdGF0ID0gc3Vic3RyKCRsaW5lLCAwLCA3KTsKKyAgICAgICAgbXkgJHBhdGggPSBzdWJzdHIo
JGxpbmUsIDcpOworICAgICAgICBuZXh0IGlmICEgLWYgJHBhdGg7CisgICAgICAgIG15ICRtb2Rp
ZmljYXRpb25UeXBlID0gZmluZE1vZGlmaWNhdGlvblR5cGUoJHN0YXQpOworICAgICAgICBpZiAo
JG1vZGlmaWNhdGlvblR5cGUpIHsKKyAgICAgICAgICAgIGlmIChpc0JpbmFyeU1pbWVUeXBlKCRw
YXRoKSkgeworICAgICAgICAgICAgICAgICRiaW5hcnlGaWxlcy0+eyRwYXRofSA9ICRtb2RpZmlj
YXRpb25UeXBlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkdGV4dEZp
bGVzLT57JHBhdGh9ID0gJG1vZGlmaWNhdGlvblR5cGU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAkaW5kZXhQYXRoID0gJG5ld0luZGV4UGF0aDsKLSAgICAgICAgICAgICRpc0JpbmFyeSA9
IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKC9eQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGVcLiQvKSB7Ci0gICAgICAgICAgICAkaXNCaW5hcnkgPSAxOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGNsb3NlIERJRkY7Ci0gICAgIyBIYW5kbGUgbGFzdCBwYXRjaAot
ICAgIGlmICgkaW5kZXhQYXRoKSB7Ci0gICAgICAgIGlmICgkaXNCaW5hcnkpIHsKLSAgICAgICAg
ICAgICRiaW5hcnlGaWxlcy0+eyRpbmRleFBhdGh9ID0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICR0ZXh0RmlsZXMtPnskaW5kZXhQYXRofSA9IDE7CisgICAgICAgICAgICBwcmlu
dCBTVERFUlIgJGxpbmUsICJcbiI7CiAgICAgICAgIH0KICAgICB9CisgICAgY2xvc2UgU1RBVDsK
K30KKworc3ViIGlzQmluYXJ5TWltZVR5cGUoJCkKK3sKKyAgICBteSAoJGZpbGUpID0gQF87Cisg
ICAgbXkgJG1pbWVUeXBlID0gZmluZE1pbWVUeXBlKCRmaWxlKTsKKyAgICByZXR1cm4gMCBpZiAo
ISRtaW1lVHlwZSB8fCBzdWJzdHIoJG1pbWVUeXBlLCAwLCA1KSBlcSAidGV4dC8iKTsKKyAgICBy
ZXR1cm4gMTsKIH0KIAogIyBTb3J0IG51bWVyaWMgcGFydHMgb2Ygc3RyaW5ncyBhcyBudW1iZXJz
LCBvdGhlciBwYXJ0cyBhcyBzdHJpbmdzLgpAQCAtMjM5LDYgKzI4NywyNCBAQCBzdWIgbnVtZXJp
Y2NtcCgkJCkKICAgICByZXR1cm4gQGEgPD0+IEBiOwogfQogCitzdWIgb3V0cHV0QWRkaXRpb25X
aXRoSGlzdG9yeSgkJCkKK3sKKyAgICBteSAoJGZpbGUsICRpc0JpbmFyeSkgPSBAXzsKKyAgICBw
cmludCAiSW5kZXg6ICR7ZmlsZX1cbiI7CisgICAgcHJpbnQgIj0iIHggNjcsICJcbiI7CisgICAg
bXkgKCRzb3VyY2VGaWxlLCAkc291cmNlUmV2aXNpb24pID0gZmluZFNvdXJjZUZpbGVBbmRSZXZp
c2lvbigkZmlsZSk7CisgICAgcHJpbnQgIi0tLSAke3NvdXJjZUZpbGV9XHQocmV2aXNpb24gJHtz
b3VyY2VSZXZpc2lvbn0pXG4iOworICAgIHByaW50ICIrKysgJHtmaWxlfVx0KHdvcmtpbmcgY29w
eSlcbiI7CisgICAgIyBGSVhNRTogSW5jbHVkZSBwcm9wZXJ0eSBjaGFuZ2VzPworICAgIGlmICgk
aXNCaW5hcnkpIHsKKyAgICAgICAgcHJpbnQgIlxuQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuXG4iOworICAgICAgICBteSAkbWltZVR5cGUgPSBmaW5kTWltZVR5
cGUoJGZpbGUpOworICAgICAgICBwcmludCAic3ZuOm1pbWUtdHlwZSA9ICR7bWltZVR5cGV9XG5c
biI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnQgYHN2biBjYXQgLXIke3NvdXJjZVJldmlz
aW9ufSAke3NvdXJjZUZpbGV9IHwgZGlmZiAtdSAvZGV2L251bGwgLSB8IHRhaWwgKzNgOworICAg
IH0KK30KKwogc3ViIG91dHB1dEJpbmFyeUNvbnRlbnQoJCkKIHsKICAgICBteSAoJHBhdGgpID0g
QF87Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12139</attachid>
            <date>2006-12-31 21:08:20 -0800</date>
            <delta_ts>2007-01-01 17:59:47 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-12023-v2.diff</filename>
            <type>text/plain</type>
            <size>12896</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NDk3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMTItMzEgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjMK
KyAgICAgICAgc3ZuLWNyZWF0ZS1wYXRjaCBhbmQgZnJpZW5kcyBzaG91bGQgaGFuZGxlIG1vdmVk
L2NvcGllZCBmaWxlcworCisgICAgICAgICogU2NyaXB0cy9zdm4tYXBwbHk6IElkZW50aWZ5IGNv
cGllZCBmaWxlcyBhbmQgaGFuZGxlIHRob3NlIGJlZm9yZSBhbGwgb3RoZXIgcGF0Y2hlcy4KKyAg
ICAgICAgKiBTY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2g6IEdlbmVyYXRlIHBhdGNoZXMgd2l0aCBz
dWJ0bGUgY2hhbmdlcyBmb3IgY29waWVkIGZpbGVzLgorICAgICAgICAoZmluZE1pbWVUeXBlKCQp
KTogQWRkZWQuCisgICAgICAgIChmaW5kTW9kaWZpY2F0aW9uVGltZSgkKSk6IEFkZGVkLgorICAg
ICAgICAoZmluZFNvdXJjZUZpbGVBbmRSZXZpc2lvbigkKSk6IEFkZGVkLgorICAgICAgICAoZ2Vu
ZXJhdGVEaWZmKCQkJCkpOiBDaGFuZ2VkIHRvIHVzZSBzdm4gc3RhdCBpbnN0ZWFkIG9mIHN2biBk
aWZmLgorICAgICAgICAoaXNCaW5hcnlNaW1lVHlwZSgkKSk6IEFkZGVkLgorICAgICAgICAobWFu
dWZhY3R1cmVQYXRjaEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJCQpKTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy9zdm4tdW5hcHBseTogSWRlbnRpZnkgY29waWVkIGZpbGVzIGFuZCBoYW5kbGUg
dGhvc2UgYWZ0ZXIgdW5hcHBseWluZyBhbGwgb3RoZXIgcGF0Y2hlcy4KKwogMjAwNi0xMi0yOSAg
RXJpYyBTZWlkZWwgIDxlcmljQGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG9s
bGllai4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CShyZXZpc2lvbiAxODQ5NykKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTIg
QEAKICMgICBDaGFuZ2VMb2cgcGF0Y2hlcyB1c2UgLS1mdXp6PTMgdG8gcHJldmVudCByZWplY3Rz
LCBhbmQgdGhlIGVudHJ5IGRhdGUgaXMgc2V0IGluCiAjICAgICAgIHRoZSBwYXRjaCB0byB0b2Rh
eSdzIGRhdGUgdXNpbmcgJGNoYW5nZUxvZ1RpbWVab25lLgogIyAgIEhhbmRsZXMgYmluYXJ5IGZp
bGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCisjICAgSGFu
ZGxlcyBjb3BpZWQgYW5kIG1vdmVkIGZpbGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3Zu
LWNyZWF0ZS1wYXRjaCkuCiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCiAjICAgSGFuZGxlIHBy
b3BlcnR5IGNoYW5nZXMuCi0jICAgSGFuZGxlIGZpbGUgbW92ZXMgKHdvdWxkIHJlcXVpcmUgcGF0
Y2hlcyBtYWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgorIyAgIEhhbmRsZSBjb3BpZWQgYW5kIG1v
dmVkIGRpcmVjdG9yaWVzICh3b3VsZCByZXF1aXJlIHBhdGNoZXMgbWFkZSBieSBzdm4tY3JlYXRl
LXBhdGNoKS4KICMgICBXaGVuIGRvaW5nIGEgcmVtb3ZhbCwgY2hlY2sgdGhhdCBvbGQgZmlsZSBt
YXRjaGVzIHdoYXQncyBiZWluZyByZW1vdmVkLgogIyAgIE5vdGljZSBhIHBhdGNoIHRoYXQncyBi
ZWluZyBhcHBsaWVkIGF0IHRoZSAid3JvbmcgbGV2ZWwiIGFuZCBtYWtlIGl0IHdvcmsgYW55d2F5
LgogIyAgIERvIGEgZHJ5IHJ1biBvbiB0aGUgd2hvbGUgcGF0Y2ggYW5kIGRvbid0IGRvIGFueXRo
aW5nIGlmIHBhcnQgb2YgdGhlIHBhdGNoIGlzCkBAIC05MywzNyArOTQsNTUgQEAgbXkgJXJlbW92
ZURpcmVjdG9yeUlnbm9yZUxpc3QgPSAoCiApOwogCiBteSAlY2hlY2tlZERpcmVjdG9yaWVzOwor
bXkgJWNvcGllZEZpbGVzOwogbXkgQHBhdGNoZXM7CiBteSAldmVyc2lvbnM7CiAKIG15ICRpbmRl
eFBhdGg7CiBteSAkcGF0Y2g7CitteSAkZnJvbVBhdGg7CitteSAkdG9QYXRoOwogd2hpbGUgKDw+
KSB7CiAgICAgcy9cci8vZzsKICAgICBjaG9tcDsKICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsK
ICAgICAgICAgJGluZGV4UGF0aCA9ICQxOwogICAgICAgICBpZiAoJHBhdGNoKSB7Ci0gICAgICAg
ICAgICBwdXNoIEBwYXRjaGVzLCAkcGF0Y2g7CisgICAgICAgICAgICBpZiAoJGZyb21QYXRoIG5l
ICR0b1BhdGgpIHsKKyAgICAgICAgICAgICAgICAkY29waWVkRmlsZXN7JHRvUGF0aH0gPSAkZnJv
bVBhdGg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2ggQHBhdGNo
ZXMsICRwYXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRmcm9tUGF0aCA9ICIiOwor
ICAgICAgICAgICAgJHRvUGF0aCA9ICIiOwogICAgICAgICAgICAgJHBhdGNoID0gIiI7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgaWYgKCRpbmRleFBhdGgpIHsKICAgICAgICAgIyBGaXggcGF0aHMg
b24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRvIG1hdGNoIHByZWNlZGluZyBJbmRleDogbGlu
ZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgvIGlmIC9eZGlmZi87Ci0gICAgICAgIHMvXi0t
LSBcUysvLS0tICRpbmRleFBhdGgvOwotICAgICAgICBpZiAocy9eXCtcK1wrIFxTKy8rKysgJGlu
ZGV4UGF0aC8pIHsKKyAgICAgICAgaWYgKHMvXi0tLSAoXFMrKS8tLS0gJGluZGV4UGF0aC8pIHsK
KyAgICAgICAgICAgICRmcm9tUGF0aCA9ICQxOworICAgICAgICB9CisgICAgICAgIGlmICgvXi0t
LSAuK1wocmV2aXNpb24gKFxkKylcKSQvKSB7CisgICAgICAgICAgICAkdmVyc2lvbnN7JGZyb21Q
YXRofSA9ICQxIGlmICggJDEgIT0gMCApOworICAgICAgICB9CisgICAgICAgIGlmIChzL15cK1wr
XCsgKFxTKykvKysrICRpbmRleFBhdGgvKSB7CisgICAgICAgICAgICAkdG9QYXRoID0gJDE7CiAg
ICAgICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKC9e
LS0tIC4rXChyZXZpc2lvbiAoXGQrKVwpJC8pIHsKLSAgICAgICAgJHZlcnNpb25zeyRpbmRleFBh
dGh9ID0gJDEgaWYoICQxICE9IDAgKTsKLSAgICB9CiAgICAgJHBhdGNoIC49ICRfOwogICAgICRw
YXRjaCAuPSAiXG4iOwogfQogCi1wdXNoIEBwYXRjaGVzLCAkcGF0Y2ggaWYgJHBhdGNoOworaWYg
KCRwYXRjaCkgeworICAgIGlmICgkZnJvbVBhdGggbmUgJHRvUGF0aCkgeworICAgICAgICAkY29w
aWVkRmlsZXN7JHRvUGF0aH0gPSAkZnJvbVBhdGg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVz
aCBAcGF0Y2hlcywgJHBhdGNoOworICAgIH0KK30KIAogaWYgKCRtZXJnZSkgewogICAgIGZvciBt
eSAkZmlsZSAoc29ydCBrZXlzICV2ZXJzaW9ucykgewpAQCAtMTMyLDYgKzE1MSwxMiBAQCBpZiAo
JG1lcmdlKSB7CiAgICAgfQogfQogCisjIEhhbmRsZSBjb3BpZWQgYW5kIG1vdmVkIGZpbGVzIGZp
cnN0IHNpbmNlIG1vdmVkIGZpbGVzIG1heSBoYXZlIHRoZWlyIHNvdXJjZSBkZWxldGVkIGJlZm9y
ZSB0aGUgbW92ZS4KK2ZvciBteSAkZmlsZSAoa2V5cyAlY29waWVkRmlsZXMpIHsKKyAgICBhZGRE
aXJlY3Rvcmllc0lmTmVlZGVkKGRpcm5hbWUoJGZpbGUpKTsKKyAgICBzeXN0ZW0gInN2biIsICJj
b3B5IiwgJGNvcGllZEZpbGVzeyRmaWxlfSwgJGZpbGU7Cit9CisKIGZvciAkcGF0Y2ggKEBwYXRj
aGVzKSB7CiAgICAgcGF0Y2goJHBhdGNoKTsKIH0KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMv
c3ZuLWNyZWF0ZS1wYXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1j
cmVhdGUtcGF0Y2gJKHJldmlzaW9uIDE4NDk3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4t
Y3JlYXRlLXBhdGNoCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTEgQEAKICMgICBBbHdh
eXMgcGFzc2VzICItcCIgdG8gZGlmZiBzbyBpdCB3aWxsIHRyeSB0byBpbmNsdWRlIGZ1bmN0aW9u
IG5hbWVzLgogIyAgIEhhbmRsZXMgYmluYXJ5IGZpbGVzIChlbmNvZGVkIGFzIGEgYmFzZTY0IGNo
dW5rIG9mIHRleHQpLgogIyAgIFNvcnRzIHRoZSBkaWZmcyBhbHBoYWJldGljYWxseSBieSB0ZXh0
IGZpbGVzLCB0aGVuIGJpbmFyeSBmaWxlcy4KKyMgICBIYW5kbGVzIGNvcGllZCBhbmQgbW92ZWQg
ZmlsZXMuCiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCi0jICAgSGFuZGxlIG1vdmVkIGZpbGVz
LgorIyAgIEhhbmRsZSBjb3BpZWQgYW5kIG1vdmVkIGRpcmVjdG9yaWVzLgogCiB1c2Ugc3RyaWN0
OwogdXNlIHdhcm5pbmdzOwpAQCAtNTMsOSArNTQsMTQgQEAgdXNlIFBPU0lYIHF3KDplcnJub19o
KTsKIHVzZSBUaW1lOjpnbXRpbWU7CiAKIHN1YiBjYW5vbmljYWxpemVQYXRoKCQpOworc3ViIGZp
bmRNaW1lVHlwZSgkKTsKK3N1YiBmaW5kTW9kaWZpY2F0aW9uVHlwZSgkKTsKK3N1YiBmaW5kU291
cmNlRmlsZUFuZFJldmlzaW9uKCQpOwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwotc3ViIGdl
bmVyYXRlRGlmZigkKTsKK3N1YiBnZW5lcmF0ZURpZmYoJCQkKTsKIHN1YiBnZW5lcmF0ZUZpbGVM
aXN0KCRcJVwlKTsKK3N1YiBpc0JpbmFyeU1pbWVUeXBlKCQpOworc3ViIG1hbnVmYWN0dXJlUGF0
Y2hGb3JBZGRpdGlvbldpdGhIaXN0b3J5KCQkKTsKIHN1YiBudW1lcmljY21wKCQkKTsKIHN1YiBv
dXRwdXRCaW5hcnlDb250ZW50KCQpOwogc3ViIHBhdGhjbXAoJCQpOwpAQCAtNzksMTAgKzg1LDEw
IEBAIGZvciBteSAkcGF0aCAoa2V5cyAlcGF0aHMpIHsKIAogIyBHZW5lcmF0ZSB0aGUgZGlmZiBm
b3IgdGV4dCBmaWxlcywgdGhlbiBiaW5hcnkgZmlsZXMsIGZvciBlYXN5IHJldmlld2luZwogZm9y
IG15ICRmaWxlIChzb3J0IHBhdGhjbXAga2V5cyAldGV4dEZpbGVzKSB7Ci0gICAgZ2VuZXJhdGVE
aWZmKCRmaWxlKTsKKyAgICBnZW5lcmF0ZURpZmYoJGZpbGUsICR0ZXh0RmlsZXN7JGZpbGV9LCAw
KTsKIH0KIGZvciBteSAkZmlsZSAoc29ydCBwYXRoY21wIGtleXMgJWJpbmFyeUZpbGVzKSB7Ci0g
ICAgZ2VuZXJhdGVEaWZmKCRmaWxlKTsKKyAgICBnZW5lcmF0ZURpZmYoJGZpbGUsICRiaW5hcnlG
aWxlc3skZmlsZX0sIDEpOwogfQogCiBleGl0IDA7CkBAIC0xMDcsNiArMTEzLDU2IEBAIHN1YiBj
YW5vbmljYWxpemVQYXRoKCQpCiAgICAgcmV0dXJuICgkI2RpcnMgPj0gMCkgPyBGaWxlOjpTcGVj
LT5jYXRkaXIoQGRpcnMpIDogIi4iOwogfQogCitzdWIgZmluZE1pbWVUeXBlKCQpCit7CisgICAg
bXkgKCRmaWxlKSA9IEBfOworICAgIG9wZW4gUFJPUEdFVCwgInN2biBwcm9wZ2V0IHN2bjptaW1l
LXR5cGUgJyRmaWxlJyB8IiBvciBkaWU7CisgICAgbXkgJG1pbWVUeXBlID0gPFBST1BHRVQ+Owor
ICAgIGNsb3NlIFBST1BHRVQ7CisgICAgY2hvbXAgJG1pbWVUeXBlIGlmICRtaW1lVHlwZTsKKyAg
ICByZXR1cm4gJG1pbWVUeXBlOworfQorCitzdWIgZmluZE1vZGlmaWNhdGlvblR5cGUoJCkKK3sK
KyAgICBteSAoJHN0YXQpID0gQF87CisgICAgbXkgJGZpbGVTdGF0ID0gc3Vic3RyKCRzdGF0LCAw
LCAxKTsKKyAgICBteSAkcHJvcGVydHlTdGF0ID0gc3Vic3RyKCRzdGF0LCAxLCAxKTsKKyAgICBp
ZiAoJGZpbGVTdGF0IGVxICJBIikgeworICAgICAgICBteSAkYWRkaXRpb25XaXRoSGlzdG9yeSA9
IHN1YnN0cigkc3RhdCwgMywgMSk7CisgICAgICAgIHJldHVybiAkYWRkaXRpb25XaXRoSGlzdG9y
eSBlcSAiKyIgPyAiYWRkaXRpb25XaXRoSGlzdG9yeSIgOiAiYWRkaXRpb24iOworICAgIH0KKyAg
ICByZXR1cm4gIm1vZGlmaWNhdGlvbiIgaWYgKCRmaWxlU3RhdCBlcSAiTSIgfHwgJHByb3BlcnR5
U3RhdCBlcSAiTSIpOworICAgIHJldHVybiAiZGVsZXRpb24iIGlmICgkZmlsZVN0YXQgZXEgIkQi
KTsKKyAgICByZXR1cm4gdW5kZWY7Cit9CisKK3N1YiBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9u
KCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworICAgIG15ICRiYXNlVXJsOworICAgIG9wZW4g
SU5GTywgInN2biBpbmZvIC4gfCIgb3IgZGllOworICAgIHdoaWxlICg8SU5GTz4pIHsKKyAgICAg
ICAgaWYgKC9eVVJMOiAoLispLykgeworICAgICAgICAgICAgJGJhc2VVcmwgPSAkMTsKKyAgICAg
ICAgICAgIGxhc3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgY2xvc2UgSU5GTzsKKyAgICBteSAk
c291cmNlRmlsZTsKKyAgICBteSAkc291cmNlUmV2aXNpb247CisgICAgb3BlbiBJTkZPLCAic3Zu
IGluZm8gJyRmaWxlJyB8IiBvciBkaWU7CisgICAgd2hpbGUgKDxJTkZPPikgeworICAgICAgICBp
ZiAoL15Db3BpZWQgRnJvbSBVUkw6ICguKykvKSB7CisgICAgICAgICAgICAkc291cmNlRmlsZSA9
IHN1YnN0cigkMSwgbGVuZ3RoKCRiYXNlVXJsKSArIDEpOworICAgICAgICB9IGVsc2lmICgvXkNv
cGllZCBGcm9tIFJldjogKFswLTldKykvKSB7CisgICAgICAgICAgICAkc291cmNlUmV2aXNpb24g
PSAkMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSBJTkZPOworICAgIHJldHVybiAoJHNv
dXJjZUZpbGUsICRzb3VyY2VSZXZpc2lvbik7Cit9CisKIHN1YiBmaXhDaGFuZ2VMb2dQYXRjaCgk
KQogewogICAgIG15ICRwYXRjaCA9IHNoaWZ0OwpAQCAtMTU4LDU5ICsyMTQsNzEgQEAgc3ViIGZp
eENoYW5nZUxvZ1BhdGNoKCQpCiAgICAgcmV0dXJuICRuZXdQYXRjaDsKIH0KIAotc3ViIGdlbmVy
YXRlRGlmZigkKQorc3ViIGdlbmVyYXRlRGlmZigkJCQpCiB7Ci0gICAgbXkgKCRmaWxlKSA9IEBf
OwotICAgIG15ICRlcnJvcnMgPSAiIjsKLSAgICBteSAkaXNCaW5hcnk7CisgICAgbXkgKCRmaWxl
LCAkbW9kaWZpY2F0aW9uVHlwZSwgJGlzQmluYXJ5KSA9IEBfOwogICAgIG15ICRwYXRjaDsKKyAg
ICBpZiAoJG1vZGlmaWNhdGlvblR5cGUgZXEgImFkZGl0aW9uV2l0aEhpc3RvcnkiKSB7CisgICAg
ICAgIG1hbnVmYWN0dXJlUGF0Y2hGb3JBZGRpdGlvbldpdGhIaXN0b3J5KCRmaWxlLCAkaXNCaW5h
cnkpOworICAgIH0KICAgICBvcGVuIERJRkYsICJzdm4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXgg
LXVOcCAnJGZpbGUnIHwiIG9yIGRpZTsKICAgICB3aGlsZSAoPERJRkY+KSB7Ci0gICAgICAgICRp
c0JpbmFyeSA9IDEgaWYgKC9eQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGVcLiQvKTsKICAgICAgICAgJHBhdGNoIC49ICRfOwogICAgIH0KICAgICBjbG9zZSBESUZG
OwogICAgICRwYXRjaCA9IGZpeENoYW5nZUxvZ1BhdGNoKCRwYXRjaCkgaWYgYmFzZW5hbWUoJGZp
bGUpIGVxICJDaGFuZ2VMb2ciOwotICAgIHByaW50ICRwYXRjaDsKKyAgICBwcmludCAkcGF0Y2gg
aWYgJHBhdGNoOwogICAgIGlmICgkaXNCaW5hcnkpIHsKLSAgICAgICAgcHJpbnQgIlxuIiBpZiAk
cGF0Y2ggPX4gbS9cblxTKyQvbTsKKyAgICAgICAgcHJpbnQgIlxuIiBpZiAoJHBhdGNoICYmICRw
YXRjaCA9fiBtL1xuXFMrJC9tKTsKICAgICAgICAgb3V0cHV0QmluYXJ5Q29udGVudCgkZmlsZSk7
CiAgICAgfQotICAgIHByaW50IFNUREVSUiAkZXJyb3JzOwogfQogCiBzdWIgZ2VuZXJhdGVGaWxl
TGlzdCgkXCVcJSkKIHsKLSAgICBteSAoJHBhdGgsICR0ZXh0RmlsZXMsICRiaW5hcnlGaWxlcykg
PSBAXzsKLSAgICBteSAkaW5kZXhQYXRoOwotICAgIG15ICRpc0JpbmFyeTsKLSAgICBvcGVuIERJ
RkYsICJzdm4gZGlmZiAtLWRpZmYtY21kIGRpZmYgLXggLXVOcCAnJHBhdGgnIHwiIG9yIGRpZTsK
LSAgICB3aGlsZSAoPERJRkY+KSB7Ci0gICAgICAgIGlmICgvXkluZGV4OiAoLiopLykgewotICAg
ICAgICAgICAgbXkgJG5ld0luZGV4UGF0aCA9ICQxOwotICAgICAgICAgICAgaWYgKCRpbmRleFBh
dGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGlzQmluYXJ5KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICRiaW5hcnlGaWxlcy0+eyRpbmRleFBhdGh9ID0gMTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAkdGV4dEZpbGVzLT57JGluZGV4UGF0aH0gPSAxOwot
ICAgICAgICAgICAgICAgIH0KKyAgICBteSAoJHN0YXRQYXRoLCAkdGV4dEZpbGVzLCAkYmluYXJ5
RmlsZXMpID0gQF87CisgICAgb3BlbiBTVEFULCAic3ZuIHN0YXQgJyRzdGF0UGF0aCcgfCIgb3Ig
ZGllOworICAgIHdoaWxlIChteSAkbGluZSA9IDxTVEFUPikgeworICAgICAgICBjaG9tcCAkbGlu
ZTsKKyAgICAgICAgbXkgJHN0YXQgPSBzdWJzdHIoJGxpbmUsIDAsIDcpOworICAgICAgICBteSAk
cGF0aCA9IHN1YnN0cigkbGluZSwgNyk7CisgICAgICAgIG15ICRtb2RpZmljYXRpb25UeXBlID0g
ZmluZE1vZGlmaWNhdGlvblR5cGUoJHN0YXQpOworICAgICAgICBpZiAoJG1vZGlmaWNhdGlvblR5
cGUpIHsKKyAgICAgICAgICAgIGlmIChpc0JpbmFyeU1pbWVUeXBlKCRwYXRoKSkgeworICAgICAg
ICAgICAgICAgICRiaW5hcnlGaWxlcy0+eyRwYXRofSA9ICRtb2RpZmljYXRpb25UeXBlOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkdGV4dEZpbGVzLT57JHBhdGh9ID0g
JG1vZGlmaWNhdGlvblR5cGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkaW5kZXhQYXRo
ID0gJG5ld0luZGV4UGF0aDsKLSAgICAgICAgICAgICRpc0JpbmFyeSA9IDA7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKC9eQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGVcLiQvKSB7Ci0gICAgICAgICAgICAkaXNCaW5hcnkgPSAxOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGNsb3NlIERJRkY7Ci0gICAgIyBIYW5kbGUgbGFzdCBwYXRjaAotICAgIGlmICgkaW5kZXhQ
YXRoKSB7Ci0gICAgICAgIGlmICgkaXNCaW5hcnkpIHsKLSAgICAgICAgICAgICRiaW5hcnlGaWxl
cy0+eyRpbmRleFBhdGh9ID0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICR0ZXh0
RmlsZXMtPnskaW5kZXhQYXRofSA9IDE7CisgICAgICAgICAgICBwcmludCBTVERFUlIgJGxpbmUs
ICJcbiI7CiAgICAgICAgIH0KICAgICB9CisgICAgY2xvc2UgU1RBVDsKK30KKworc3ViIGlzQmlu
YXJ5TWltZVR5cGUoJCkKK3sKKyAgICBteSAoJGZpbGUpID0gQF87CisgICAgbXkgJG1pbWVUeXBl
ID0gZmluZE1pbWVUeXBlKCRmaWxlKTsKKyAgICByZXR1cm4gMCBpZiAoISRtaW1lVHlwZSB8fCBz
dWJzdHIoJG1pbWVUeXBlLCAwLCA1KSBlcSAidGV4dC8iKTsKKyAgICByZXR1cm4gMTsKK30KKwor
c3ViIG1hbnVmYWN0dXJlUGF0Y2hGb3JBZGRpdGlvbldpdGhIaXN0b3J5KCQkKQoreworICAgIG15
ICgkZmlsZSwgJGlzQmluYXJ5KSA9IEBfOworICAgIHByaW50ICJJbmRleDogJHtmaWxlfVxuIjsK
KyAgICBwcmludCAiPSIgeCA2NywgIlxuIjsKKyAgICBteSAoJHNvdXJjZUZpbGUsICRzb3VyY2VS
ZXZpc2lvbikgPSBmaW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCRmaWxlKTsKKyAgICBwcmludCAi
LS0tICR7c291cmNlRmlsZX1cdChyZXZpc2lvbiAke3NvdXJjZVJldmlzaW9ufSlcbiI7CisgICAg
cHJpbnQgIisrKyAke2ZpbGV9XHQod29ya2luZyBjb3B5KVxuIjsKKyAgICBpZiAoJGlzQmluYXJ5
KSB7CisgICAgICAgIHByaW50ICJcbkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLlxuIjsKKyAgICAgICAgbXkgJG1pbWVUeXBlID0gZmluZE1pbWVUeXBlKCRmaWxl
KTsKKyAgICAgICAgcHJpbnQgInN2bjptaW1lLXR5cGUgPSAke21pbWVUeXBlfVxuXG4iOworICAg
IH0gZWxzZSB7CisgICAgICAgIHByaW50IGBzdm4gY2F0IC1yJHtzb3VyY2VSZXZpc2lvbn0gJHtz
b3VyY2VGaWxlfSB8IGRpZmYgLXUgL2Rldi9udWxsIC0gfCB0YWlsICszYDsKKyAgICB9CiB9CiAK
ICMgU29ydCBudW1lcmljIHBhcnRzIG9mIHN0cmluZ3MgYXMgbnVtYmVycywgb3RoZXIgcGFydHMg
YXMgc3RyaW5ncy4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tdW5hcHBseQkocmV2aXNpb24gMTg0OTcp
CisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxMSArNDAsMTIgQEAKICMgICBDaGFuZ2VMb2cgcGF0Y2hlcyB1c2UgLS1mdXp6PTMgdG8gcHJl
dmVudCByZWplY3RzLCBhbmQgdGhlIGVudHJ5IGRhdGUgaXMgcmVzZXQgaW4KICMgICAgICAgdGhl
IHBhdGNoIGJlZm9yZSBpdCBpcyBhcHBsaWVkIChzdm4tYXBwbHkgc2V0cyBpdCB3aGVuIGFwcGx5
aW5nIGEgcGF0Y2gpLgogIyAgIEhhbmRsZXMgYmluYXJ5IGZpbGVzIChyZXF1aXJlcyBwYXRjaGVz
IG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCisjICAgSGFuZGxlcyBjb3BpZWQgYW5kIG1vdmVk
IGZpbGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAjCiAj
IE1pc3NpbmcgZmVhdHVyZXM6CiAjCiAjICAgSGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCi0jICAg
SGFuZGxlIGZpbGUgbW92ZXMgKHdvdWxkIHJlcXVpcmUgcGF0Y2hlcyBtYWRlIGJ5IHN2bi1jcmVh
dGUtcGF0Y2gpLgorIyAgIEhhbmRsZSBjb3BpZWQgYW5kIG1vdmVkIGRpcmVjdG9yaWVzICh3b3Vs
ZCByZXF1aXJlIHBhdGNoZXMgbWFkZSBieSBzdm4tY3JlYXRlLXBhdGNoKS4KICMgICBVc2UgdmVy
c2lvbiBudW1iZXJzIGluIHRoZSBwYXRjaCBmaWxlIGFuZCBkbyBhIDMtd2F5IG1lcmdlLgogIyAg
IFdoZW4gcmV2ZXJzaW5nIGFuIGFkZGl0aW9uLCBjaGVjayB0aGF0IHRoZSBmaWxlIG1hdGNoZXMg
d2hhdCdzIGJlaW5nIHJlbW92ZWQuCiAjICAgTm90aWNlIGEgcGF0Y2ggdGhhdCdzIGJlaW5nIHVu
YXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVsIiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4KQEAg
LTc2LDMxICs3Nyw1NSBAQCBpZiAoIUdldE9wdGlvbnMoImhlbHAhIiA9PiBcJHNob3dIZWxwKSB8
CiAgICAgZXhpdCAxOwogfQogCitteSBAY29waWVkRmlsZXM7CiBteSAlZGlyZWN0b3JpZXNUb0No
ZWNrOwogCiBteSAkaW5kZXhQYXRoOwogbXkgJHBhdGNoOworbXkgJGZyb21QYXRoOworbXkgJHRv
UGF0aDsKIHdoaWxlICg8PikgewogICAgIHMvXHIvL2c7CiAgICAgY2hvbXA7CiAgICAgaWYgKC9e
SW5kZXg6ICguKikvKSB7CiAgICAgICAgICRpbmRleFBhdGggPSAkMTsKICAgICAgICAgaWYgKCRw
YXRjaCkgewotICAgICAgICAgICAgcGF0Y2goJHBhdGNoKTsKKyAgICAgICAgICAgIGlmICgkZnJv
bVBhdGggbmUgJHRvUGF0aCkgeworICAgICAgICAgICAgICAgIHB1c2ggQGNvcGllZEZpbGVzLCAk
cGF0Y2g7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBhdGNoKCRwYXRj
aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZnJvbVBhdGggPSAiIjsKKyAgICAgICAg
ICAgICR0b1BhdGggPSAiIjsKICAgICAgICAgICAgICRwYXRjaCA9ICIiOwogICAgICAgICB9CiAg
ICAgfQogICAgIGlmICgkaW5kZXhQYXRoKSB7CiAgICAgICAgICMgRml4IHBhdGhzIG9uIGRpZmYs
IC0tLSwgYW5kICsrKyBsaW5lcyB0byBtYXRjaCBwcmVjZWRpbmcgSW5kZXg6IGxpbmUuCi0gICAg
ICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOwotICAgICAgICBpZiAocy9eXCtcK1wrIFxT
Ky8rKysgJGluZGV4UGF0aC8pIHsKKyAgICAgICAgaWYgKHMvXi0tLSAoXFMrKS8tLS0gJGluZGV4
UGF0aC8pIHsKKyAgICAgICAgICAgICRmcm9tUGF0aCA9ICQxOworICAgICAgICB9CisgICAgICAg
IGlmIChzL15cK1wrXCsgKFxTKykvKysrICRpbmRleFBhdGgvKSB7CisgICAgICAgICAgICAkdG9Q
YXRoID0gJDE7CiAgICAgICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KICAgICB9
CiAgICAgJHBhdGNoIC49ICRfOwogICAgICRwYXRjaCAuPSAiXG4iOwogfQotcGF0Y2goJHBhdGNo
KTsKKworaWYgKCRwYXRjaCkgeworICAgIGlmICgkZnJvbVBhdGggbmUgJHRvUGF0aCkgeworICAg
ICAgICBwdXNoIEBjb3BpZWRGaWxlcywgJHBhdGNoOworICAgIH0gZWxzZSB7CisgICAgICAgIHBh
dGNoKCRwYXRjaCk7CisgICAgfQorfQorCisjIEhhbmRsZSBjb3BpZWQgYW5kIG1vdmVkIGZpbGVz
IGxhc3Qgc2luY2UgdGhleSBtYXkgaGF2ZSBoYWQgcG9zdC1jb3B5IGNoYW5nZXMgdGhhdCBoYXZl
IG5vdyBiZWVuIHVuYXBwbGllZAorZm9yICRwYXRjaCAoQGNvcGllZEZpbGVzKSB7CisgICAgcGF0
Y2goJHBhdGNoKTsKK30KIAogcmV2ZXJ0RGlyZWN0b3JpZXMoKTsKIApAQCAtMTgwLDcgKzIwNSw3
IEBAIHN1YiBwYXRjaCgkKQogICAgIG15ICRhZGRpdGlvbiA9IDA7CiAgICAgbXkgJGlzQmluYXJ5
ID0gMDsKIAotICAgICRhZGRpdGlvbiA9IDEgaWYgJHBhdGNoID1+IC9cbi0tLSAuK1wocmV2aXNp
b24gMFwpXG4vOworICAgICRhZGRpdGlvbiA9IDEgaWYgKCRwYXRjaCA9fiAvXG4tLS0gLitcKHJl
dmlzaW9uIDBcKVxuLyB8fCAkcGF0Y2ggPX4gL1xuQEAgLTAsMCAuKiBAQC8pOwogICAgICRkZWxl
dGlvbiA9IDEgaWYgJHBhdGNoID1+IC9cbkBAIC4qIFwrMCwwIEBALzsKICAgICAkaXNCaW5hcnkg
PSAxIGlmICRwYXRjaCA9fiAvXG5DYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZVwuLzsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12152</attachid>
            <date>2007-01-01 17:59:47 -0800</date>
            <delta_ts>2007-01-01 19:35:25 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-12023-v3.diff</filename>
            <type>text/plain</type>
            <size>12738</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NTA5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMTItMzEgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjMK
KyAgICAgICAgc3ZuLWNyZWF0ZS1wYXRjaCBhbmQgZnJpZW5kcyBzaG91bGQgaGFuZGxlIG1vdmVk
L2NvcGllZCBmaWxlcworCisgICAgICAgICogU2NyaXB0cy9zdm4tYXBwbHk6IElkZW50aWZ5IGNv
cGllZCBmaWxlcyBhbmQgaGFuZGxlIHRob3NlIGJlZm9yZSBhbGwgb3RoZXIgcGF0Y2hlcy4KKyAg
ICAgICAgKiBTY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2g6IEdlbmVyYXRlIHBhdGNoZXMgd2l0aCBz
dWJ0bGUgY2hhbmdlcyBmb3IgY29waWVkIGZpbGVzLgorICAgICAgICAoZmluZE1pbWVUeXBlKCQp
KTogQWRkZWQuCisgICAgICAgIChmaW5kTW9kaWZpY2F0aW9uVGltZSgkKSk6IEFkZGVkLgorICAg
ICAgICAoZmluZFNvdXJjZUZpbGVBbmRSZXZpc2lvbigkKSk6IEFkZGVkLgorICAgICAgICAoZ2Vu
ZXJhdGVEaWZmKCQkJCkpOiBDaGFuZ2VkIHRvIHVzZSBzdm4gc3RhdCBpbnN0ZWFkIG9mIHN2biBk
aWZmLgorICAgICAgICAoaXNCaW5hcnlNaW1lVHlwZSgkKSk6IEFkZGVkLgorICAgICAgICAobWFu
dWZhY3R1cmVQYXRjaEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJCQpKTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy9zdm4tdW5hcHBseTogSWRlbnRpZnkgY29waWVkIGZpbGVzIGFuZCBoYW5kbGUg
dGhvc2UgYWZ0ZXIgdW5hcHBseWluZyBhbGwgb3RoZXIgcGF0Y2hlcy4KKwogMjAwNi0xMi0yOSAg
RXJpYyBTZWlkZWwgIDxlcmljQGVzZWlkZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG9s
bGllai4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CShyZXZpc2lvbiAxODUwOSkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMTIg
QEAKICMgICBDaGFuZ2VMb2cgcGF0Y2hlcyB1c2UgLS1mdXp6PTMgdG8gcHJldmVudCByZWplY3Rz
LCBhbmQgdGhlIGVudHJ5IGRhdGUgaXMgc2V0IGluCiAjICAgICAgIHRoZSBwYXRjaCB0byB0b2Rh
eSdzIGRhdGUgdXNpbmcgJGNoYW5nZUxvZ1RpbWVab25lLgogIyAgIEhhbmRsZXMgYmluYXJ5IGZp
bGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCisjICAgSGFu
ZGxlcyBjb3BpZWQgYW5kIG1vdmVkIGZpbGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3Zu
LWNyZWF0ZS1wYXRjaCkuCiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCiAjICAgSGFuZGxlIHBy
b3BlcnR5IGNoYW5nZXMuCi0jICAgSGFuZGxlIGZpbGUgbW92ZXMgKHdvdWxkIHJlcXVpcmUgcGF0
Y2hlcyBtYWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgorIyAgIEhhbmRsZSBjb3BpZWQgYW5kIG1v
dmVkIGRpcmVjdG9yaWVzICh3b3VsZCByZXF1aXJlIHBhdGNoZXMgbWFkZSBieSBzdm4tY3JlYXRl
LXBhdGNoKS4KICMgICBXaGVuIGRvaW5nIGEgcmVtb3ZhbCwgY2hlY2sgdGhhdCBvbGQgZmlsZSBt
YXRjaGVzIHdoYXQncyBiZWluZyByZW1vdmVkLgogIyAgIE5vdGljZSBhIHBhdGNoIHRoYXQncyBi
ZWluZyBhcHBsaWVkIGF0IHRoZSAid3JvbmcgbGV2ZWwiIGFuZCBtYWtlIGl0IHdvcmsgYW55d2F5
LgogIyAgIERvIGEgZHJ5IHJ1biBvbiB0aGUgd2hvbGUgcGF0Y2ggYW5kIGRvbid0IGRvIGFueXRo
aW5nIGlmIHBhcnQgb2YgdGhlIHBhdGNoIGlzCkBAIC05Myw5ICs5NCwxMSBAQCBteSAlcmVtb3Zl
RGlyZWN0b3J5SWdub3JlTGlzdCA9ICgKICk7CiAKIG15ICVjaGVja2VkRGlyZWN0b3JpZXM7Citt
eSAlY29waWVkRmlsZXM7CiBteSBAcGF0Y2hlczsKIG15ICV2ZXJzaW9uczsKIAorbXkgJGNvcGll
ZEZyb21QYXRoOwogbXkgJGluZGV4UGF0aDsKIG15ICRwYXRjaDsKIHdoaWxlICg8PikgewpAQCAt
MTA0LDcgKzEwNywxMCBAQCB3aGlsZSAoPD4pIHsKICAgICBpZiAoL15JbmRleDogKC4rKS8pIHsK
ICAgICAgICAgJGluZGV4UGF0aCA9ICQxOwogICAgICAgICBpZiAoJHBhdGNoKSB7Ci0gICAgICAg
ICAgICBwdXNoIEBwYXRjaGVzLCAkcGF0Y2g7CisgICAgICAgICAgICBpZiAoISRjb3BpZWRGcm9t
UGF0aCkgeworICAgICAgICAgICAgICAgIHB1c2ggQHBhdGNoZXMsICRwYXRjaDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICRjb3BpZWRGcm9tUGF0aCA9ICIiOwogICAgICAgICAgICAgJHBh
dGNoID0gIiI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTIsMTggKzExOCwyNSBAQCB3aGlsZSAo
PD4pIHsKICAgICAgICAgIyBGaXggcGF0aHMgb24gZGlmZiwgLS0tLCBhbmQgKysrIGxpbmVzIHRv
IG1hdGNoIHByZWNlZGluZyBJbmRleDogbGluZS4KICAgICAgICAgcy9cUyskLyRpbmRleFBhdGgv
IGlmIC9eZGlmZi87CiAgICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworICAgICAg
ICBpZiAoL14tLS0gLitcKGZyb20gKFxTKyk6KFxkKylcKSQvKSB7CisgICAgICAgICAgICAkY29w
aWVkRnJvbVBhdGggPSAkMTsKKyAgICAgICAgICAgICRjb3BpZWRGaWxlc3skaW5kZXhQYXRofSA9
ICRjb3BpZWRGcm9tUGF0aDsKKyAgICAgICAgICAgICR2ZXJzaW9uc3skY29waWVkRnJvbVBhdGh9
ID0gJDIgaWYgKCQyICE9IDApOworICAgICAgICB9CisgICAgICAgIGVsc2lmICgvXi0tLSAuK1wo
cmV2aXNpb24gKFxkKylcKSQvKSB7CisgICAgICAgICAgICAkdmVyc2lvbnN7JGluZGV4UGF0aH0g
PSAkMSBpZiAoJDEgIT0gMCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHMvXlwrXCtcKyBcUysv
KysrICRpbmRleFBhdGgvKSB7CiAgICAgICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgaWYgKC9eLS0tIC4rXChyZXZpc2lvbiAoXGQrKVwpJC8pIHsKLSAgICAg
ICAgJHZlcnNpb25zeyRpbmRleFBhdGh9ID0gJDEgaWYoICQxICE9IDAgKTsKLSAgICB9CiAgICAg
JHBhdGNoIC49ICRfOwogICAgICRwYXRjaCAuPSAiXG4iOwogfQogCi1wdXNoIEBwYXRjaGVzLCAk
cGF0Y2ggaWYgJHBhdGNoOworaWYgKCRwYXRjaCAmJiAhJGNvcGllZEZyb21QYXRoKSB7CisgICAg
cHVzaCBAcGF0Y2hlcywgJHBhdGNoOworfQogCiBpZiAoJG1lcmdlKSB7CiAgICAgZm9yIG15ICRm
aWxlIChzb3J0IGtleXMgJXZlcnNpb25zKSB7CkBAIC0xMzIsNiArMTQ1LDEyIEBAIGlmICgkbWVy
Z2UpIHsKICAgICB9CiB9CiAKKyMgSGFuZGxlIGNvcGllZCBhbmQgbW92ZWQgZmlsZXMgZmlyc3Qg
c2luY2UgbW92ZWQgZmlsZXMgbWF5IGhhdmUgdGhlaXIgc291cmNlIGRlbGV0ZWQgYmVmb3JlIHRo
ZSBtb3ZlLgorZm9yIG15ICRmaWxlIChrZXlzICVjb3BpZWRGaWxlcykgeworICAgIGFkZERpcmVj
dG9yaWVzSWZOZWVkZWQoZGlybmFtZSgkZmlsZSkpOworICAgIHN5c3RlbSAic3ZuIiwgImNvcHki
LCAkY29waWVkRmlsZXN7JGZpbGV9LCAkZmlsZTsKK30KKwogZm9yICRwYXRjaCAoQHBhdGNoZXMp
IHsKICAgICBwYXRjaCgkcGF0Y2gpOwogfQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4t
Y3JlYXRlLXBhdGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0
ZS1wYXRjaAkocmV2aXNpb24gMTg1MDkpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVh
dGUtcGF0Y2gJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMSBAQAogIyAgIEFsd2F5cyBw
YXNzZXMgIi1wIiB0byBkaWZmIHNvIGl0IHdpbGwgdHJ5IHRvIGluY2x1ZGUgZnVuY3Rpb24gbmFt
ZXMuCiAjICAgSGFuZGxlcyBiaW5hcnkgZmlsZXMgKGVuY29kZWQgYXMgYSBiYXNlNjQgY2h1bmsg
b2YgdGV4dCkuCiAjICAgU29ydHMgdGhlIGRpZmZzIGFscGhhYmV0aWNhbGx5IGJ5IHRleHQgZmls
ZXMsIHRoZW4gYmluYXJ5IGZpbGVzLgorIyAgIEhhbmRsZXMgY29waWVkIGFuZCBtb3ZlZCBmaWxl
cy4KICMKICMgTWlzc2luZyBmZWF0dXJlczoKICMKLSMgICBIYW5kbGUgbW92ZWQgZmlsZXMuCisj
ICAgSGFuZGxlIGNvcGllZCBhbmQgbW92ZWQgZGlyZWN0b3JpZXMuCiAKIHVzZSBzdHJpY3Q7CiB1
c2Ugd2FybmluZ3M7CkBAIC01Myw5ICs1NCwxNCBAQCB1c2UgUE9TSVggcXcoOmVycm5vX2gpOwog
dXNlIFRpbWU6OmdtdGltZTsKIAogc3ViIGNhbm9uaWNhbGl6ZVBhdGgoJCk7CitzdWIgZmluZE1p
bWVUeXBlKCQpOworc3ViIGZpbmRNb2RpZmljYXRpb25UeXBlKCQpOworc3ViIGZpbmRTb3VyY2VG
aWxlQW5kUmV2aXNpb24oJCk7CiBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7Ci1zdWIgZ2VuZXJh
dGVEaWZmKCQpOworc3ViIGdlbmVyYXRlRGlmZigkJCQpOwogc3ViIGdlbmVyYXRlRmlsZUxpc3Qo
JFwlXCUpOworc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CitzdWIgbWFudWZhY3R1cmVQYXRjaEZv
ckFkZGl0aW9uV2l0aEhpc3RvcnkoJCQpOwogc3ViIG51bWVyaWNjbXAoJCQpOwogc3ViIG91dHB1
dEJpbmFyeUNvbnRlbnQoJCk7CiBzdWIgcGF0aGNtcCgkJCk7CkBAIC03OSwxMCArODUsMTAgQEAg
Zm9yIG15ICRwYXRoIChrZXlzICVwYXRocykgewogCiAjIEdlbmVyYXRlIHRoZSBkaWZmIGZvciB0
ZXh0IGZpbGVzLCB0aGVuIGJpbmFyeSBmaWxlcywgZm9yIGVhc3kgcmV2aWV3aW5nCiBmb3IgbXkg
JGZpbGUgKHNvcnQgcGF0aGNtcCBrZXlzICV0ZXh0RmlsZXMpIHsKLSAgICBnZW5lcmF0ZURpZmYo
JGZpbGUpOworICAgIGdlbmVyYXRlRGlmZigkZmlsZSwgJHRleHRGaWxlc3skZmlsZX0sIDApOwog
fQogZm9yIG15ICRmaWxlIChzb3J0IHBhdGhjbXAga2V5cyAlYmluYXJ5RmlsZXMpIHsKLSAgICBn
ZW5lcmF0ZURpZmYoJGZpbGUpOworICAgIGdlbmVyYXRlRGlmZigkZmlsZSwgJGJpbmFyeUZpbGVz
eyRmaWxlfSwgMSk7CiB9CiAKIGV4aXQgMDsKQEAgLTEwNyw2ICsxMTMsNTYgQEAgc3ViIGNhbm9u
aWNhbGl6ZVBhdGgoJCkKICAgICByZXR1cm4gKCQjZGlycyA+PSAwKSA/IEZpbGU6OlNwZWMtPmNh
dGRpcihAZGlycykgOiAiLiI7CiB9CiAKK3N1YiBmaW5kTWltZVR5cGUoJCkKK3sKKyAgICBteSAo
JGZpbGUpID0gQF87CisgICAgb3BlbiBQUk9QR0VULCAic3ZuIHByb3BnZXQgc3ZuOm1pbWUtdHlw
ZSAnJGZpbGUnIHwiIG9yIGRpZTsKKyAgICBteSAkbWltZVR5cGUgPSA8UFJPUEdFVD47CisgICAg
Y2xvc2UgUFJPUEdFVDsKKyAgICBjaG9tcCAkbWltZVR5cGUgaWYgJG1pbWVUeXBlOworICAgIHJl
dHVybiAkbWltZVR5cGU7Cit9CisKK3N1YiBmaW5kTW9kaWZpY2F0aW9uVHlwZSgkKQoreworICAg
IG15ICgkc3RhdCkgPSBAXzsKKyAgICBteSAkZmlsZVN0YXQgPSBzdWJzdHIoJHN0YXQsIDAsIDEp
OworICAgIG15ICRwcm9wZXJ0eVN0YXQgPSBzdWJzdHIoJHN0YXQsIDEsIDEpOworICAgIGlmICgk
ZmlsZVN0YXQgZXEgIkEiKSB7CisgICAgICAgIG15ICRhZGRpdGlvbldpdGhIaXN0b3J5ID0gc3Vi
c3RyKCRzdGF0LCAzLCAxKTsKKyAgICAgICAgcmV0dXJuICRhZGRpdGlvbldpdGhIaXN0b3J5IGVx
ICIrIiA/ICJhZGRpdGlvbldpdGhIaXN0b3J5IiA6ICJhZGRpdGlvbiI7CisgICAgfQorICAgIHJl
dHVybiAibW9kaWZpY2F0aW9uIiBpZiAoJGZpbGVTdGF0IGVxICJNIiB8fCAkcHJvcGVydHlTdGF0
IGVxICJNIik7CisgICAgcmV0dXJuICJkZWxldGlvbiIgaWYgKCRmaWxlU3RhdCBlcSAiRCIpOwor
ICAgIHJldHVybiB1bmRlZjsKK30KKworc3ViIGZpbmRTb3VyY2VGaWxlQW5kUmV2aXNpb24oJCkK
K3sKKyAgICBteSAoJGZpbGUpID0gQF87CisgICAgbXkgJGJhc2VVcmw7CisgICAgb3BlbiBJTkZP
LCAic3ZuIGluZm8gLiB8IiBvciBkaWU7CisgICAgd2hpbGUgKDxJTkZPPikgeworICAgICAgICBp
ZiAoL15VUkw6ICguKykvKSB7CisgICAgICAgICAgICAkYmFzZVVybCA9ICQxOworICAgICAgICAg
ICAgbGFzdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSBJTkZPOworICAgIG15ICRzb3Vy
Y2VGaWxlOworICAgIG15ICRzb3VyY2VSZXZpc2lvbjsKKyAgICBvcGVuIElORk8sICJzdm4gaW5m
byAnJGZpbGUnIHwiIG9yIGRpZTsKKyAgICB3aGlsZSAoPElORk8+KSB7CisgICAgICAgIGlmICgv
XkNvcGllZCBGcm9tIFVSTDogKC4rKS8pIHsKKyAgICAgICAgICAgICRzb3VyY2VGaWxlID0gc3Vi
c3RyKCQxLCBsZW5ndGgoJGJhc2VVcmwpICsgMSk7CisgICAgICAgIH0gZWxzaWYgKC9eQ29waWVk
IEZyb20gUmV2OiAoWzAtOV0rKS8pIHsKKyAgICAgICAgICAgICRzb3VyY2VSZXZpc2lvbiA9ICQx
OworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlIElORk87CisgICAgcmV0dXJuICgkc291cmNl
RmlsZSwgJHNvdXJjZVJldmlzaW9uKTsKK30KKwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCiB7
CiAgICAgbXkgJHBhdGNoID0gc2hpZnQ7CkBAIC0xNTgsNTkgKzIxNCw3MSBAQCBzdWIgZml4Q2hh
bmdlTG9nUGF0Y2goJCkKICAgICByZXR1cm4gJG5ld1BhdGNoOwogfQogCi1zdWIgZ2VuZXJhdGVE
aWZmKCQpCitzdWIgZ2VuZXJhdGVEaWZmKCQkJCkKIHsKLSAgICBteSAoJGZpbGUpID0gQF87Ci0g
ICAgbXkgJGVycm9ycyA9ICIiOwotICAgIG15ICRpc0JpbmFyeTsKKyAgICBteSAoJGZpbGUsICRt
b2RpZmljYXRpb25UeXBlLCAkaXNCaW5hcnkpID0gQF87CiAgICAgbXkgJHBhdGNoOworICAgIGlm
ICgkbW9kaWZpY2F0aW9uVHlwZSBlcSAiYWRkaXRpb25XaXRoSGlzdG9yeSIpIHsKKyAgICAgICAg
bWFudWZhY3R1cmVQYXRjaEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJGZpbGUsICRpc0JpbmFyeSk7
CisgICAgfQogICAgIG9wZW4gRElGRiwgInN2biBkaWZmIC0tZGlmZi1jbWQgZGlmZiAteCAtdU5w
ICckZmlsZScgfCIgb3IgZGllOwogICAgIHdoaWxlICg8RElGRj4pIHsKLSAgICAgICAgJGlzQmlu
YXJ5ID0gMSBpZiAoL15DYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZVwuJC8pOwogICAgICAgICAkcGF0Y2ggLj0gJF87CiAgICAgfQogICAgIGNsb3NlIERJRkY7CiAg
ICAgJHBhdGNoID0gZml4Q2hhbmdlTG9nUGF0Y2goJHBhdGNoKSBpZiBiYXNlbmFtZSgkZmlsZSkg
ZXEgIkNoYW5nZUxvZyI7Ci0gICAgcHJpbnQgJHBhdGNoOworICAgIHByaW50ICRwYXRjaCBpZiAk
cGF0Y2g7CiAgICAgaWYgKCRpc0JpbmFyeSkgewotICAgICAgICBwcmludCAiXG4iIGlmICRwYXRj
aCA9fiBtL1xuXFMrJC9tOworICAgICAgICBwcmludCAiXG4iIGlmICgkcGF0Y2ggJiYgJHBhdGNo
ID1+IG0vXG5cUyskL20pOwogICAgICAgICBvdXRwdXRCaW5hcnlDb250ZW50KCRmaWxlKTsKICAg
ICB9Ci0gICAgcHJpbnQgU1RERVJSICRlcnJvcnM7CiB9CiAKIHN1YiBnZW5lcmF0ZUZpbGVMaXN0
KCRcJVwlKQogewotICAgIG15ICgkcGF0aCwgJHRleHRGaWxlcywgJGJpbmFyeUZpbGVzKSA9IEBf
OwotICAgIG15ICRpbmRleFBhdGg7Ci0gICAgbXkgJGlzQmluYXJ5OwotICAgIG9wZW4gRElGRiwg
InN2biBkaWZmIC0tZGlmZi1jbWQgZGlmZiAteCAtdU5wICckcGF0aCcgfCIgb3IgZGllOwotICAg
IHdoaWxlICg8RElGRj4pIHsKLSAgICAgICAgaWYgKC9eSW5kZXg6ICguKikvKSB7Ci0gICAgICAg
ICAgICBteSAkbmV3SW5kZXhQYXRoID0gJDE7Ci0gICAgICAgICAgICBpZiAoJGluZGV4UGF0aCkg
ewotICAgICAgICAgICAgICAgIGlmICgkaXNCaW5hcnkpIHsKLSAgICAgICAgICAgICAgICAgICAg
JGJpbmFyeUZpbGVzLT57JGluZGV4UGF0aH0gPSAxOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICR0ZXh0RmlsZXMtPnskaW5kZXhQYXRofSA9IDE7Ci0gICAg
ICAgICAgICAgICAgfQorICAgIG15ICgkc3RhdFBhdGgsICR0ZXh0RmlsZXMsICRiaW5hcnlGaWxl
cykgPSBAXzsKKyAgICBvcGVuIFNUQVQsICJzdm4gc3RhdCAnJHN0YXRQYXRoJyB8IiBvciBkaWU7
CisgICAgd2hpbGUgKG15ICRsaW5lID0gPFNUQVQ+KSB7CisgICAgICAgIGNob21wICRsaW5lOwor
ICAgICAgICBteSAkc3RhdCA9IHN1YnN0cigkbGluZSwgMCwgNyk7CisgICAgICAgIG15ICRwYXRo
ID0gc3Vic3RyKCRsaW5lLCA3KTsKKyAgICAgICAgbXkgJG1vZGlmaWNhdGlvblR5cGUgPSBmaW5k
TW9kaWZpY2F0aW9uVHlwZSgkc3RhdCk7CisgICAgICAgIGlmICgkbW9kaWZpY2F0aW9uVHlwZSkg
eworICAgICAgICAgICAgaWYgKGlzQmluYXJ5TWltZVR5cGUoJHBhdGgpKSB7CisgICAgICAgICAg
ICAgICAgJGJpbmFyeUZpbGVzLT57JHBhdGh9ID0gJG1vZGlmaWNhdGlvblR5cGU7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICR0ZXh0RmlsZXMtPnskcGF0aH0gPSAkbW9k
aWZpY2F0aW9uVHlwZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRpbmRleFBhdGggPSAk
bmV3SW5kZXhQYXRoOwotICAgICAgICAgICAgJGlzQmluYXJ5ID0gMDsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoL15DYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZVwu
JC8pIHsKLSAgICAgICAgICAgICRpc0JpbmFyeSA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Y2xvc2UgRElGRjsKLSAgICAjIEhhbmRsZSBsYXN0IHBhdGNoCi0gICAgaWYgKCRpbmRleFBhdGgp
IHsKLSAgICAgICAgaWYgKCRpc0JpbmFyeSkgewotICAgICAgICAgICAgJGJpbmFyeUZpbGVzLT57
JGluZGV4UGF0aH0gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJHRleHRGaWxl
cy0+eyRpbmRleFBhdGh9ID0gMTsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAkbGluZSwgIlxu
IjsKICAgICAgICAgfQogICAgIH0KKyAgICBjbG9zZSBTVEFUOworfQorCitzdWIgaXNCaW5hcnlN
aW1lVHlwZSgkKQoreworICAgIG15ICgkZmlsZSkgPSBAXzsKKyAgICBteSAkbWltZVR5cGUgPSBm
aW5kTWltZVR5cGUoJGZpbGUpOworICAgIHJldHVybiAwIGlmICghJG1pbWVUeXBlIHx8IHN1YnN0
cigkbWltZVR5cGUsIDAsIDUpIGVxICJ0ZXh0LyIpOworICAgIHJldHVybiAxOworfQorCitzdWIg
bWFudWZhY3R1cmVQYXRjaEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJCQpCit7CisgICAgbXkgKCRm
aWxlLCAkaXNCaW5hcnkpID0gQF87CisgICAgcHJpbnQgIkluZGV4OiAke2ZpbGV9XG4iOworICAg
IHByaW50ICI9IiB4IDY3LCAiXG4iOworICAgIG15ICgkc291cmNlRmlsZSwgJHNvdXJjZVJldmlz
aW9uKSA9IGZpbmRTb3VyY2VGaWxlQW5kUmV2aXNpb24oJGZpbGUpOworICAgIHByaW50ICItLS0g
JHtmaWxlfVx0KHJldmlzaW9uICR7c291cmNlUmV2aXNpb259KVx0KGZyb20gJHtzb3VyY2VGaWxl
fToke3NvdXJjZVJldmlzaW9ufSlcbiI7CisgICAgcHJpbnQgIisrKyAke2ZpbGV9XHQod29ya2lu
ZyBjb3B5KVxuIjsKKyAgICBpZiAoJGlzQmluYXJ5KSB7CisgICAgICAgIHByaW50ICJcbkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLlxuIjsKKyAgICAgICAgbXkg
JG1pbWVUeXBlID0gZmluZE1pbWVUeXBlKCRmaWxlKTsKKyAgICAgICAgcHJpbnQgInN2bjptaW1l
LXR5cGUgPSAke21pbWVUeXBlfVxuXG4iOworICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50IGBz
dm4gY2F0IC1yJHtzb3VyY2VSZXZpc2lvbn0gJHtzb3VyY2VGaWxlfSB8IGRpZmYgLXUgL2Rldi9u
dWxsIC0gfCB0YWlsICszYDsKKyAgICB9CiB9CiAKICMgU29ydCBudW1lcmljIHBhcnRzIG9mIHN0
cmluZ3MgYXMgbnVtYmVycywgb3RoZXIgcGFydHMgYXMgc3RyaW5ncy4KSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvc3ZuLXVuYXBwbHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy9zdm4tdW5hcHBseQkocmV2aXNpb24gMTg1MDkpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2
bi11bmFwcGx5CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAKICMgICBDaGFuZ2VM
b2cgcGF0Y2hlcyB1c2UgLS1mdXp6PTMgdG8gcHJldmVudCByZWplY3RzLCBhbmQgdGhlIGVudHJ5
IGRhdGUgaXMgcmVzZXQgaW4KICMgICAgICAgdGhlIHBhdGNoIGJlZm9yZSBpdCBpcyBhcHBsaWVk
IChzdm4tYXBwbHkgc2V0cyBpdCB3aGVuIGFwcGx5aW5nIGEgcGF0Y2gpLgogIyAgIEhhbmRsZXMg
YmluYXJ5IGZpbGVzIChyZXF1aXJlcyBwYXRjaGVzIG1hZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCku
CisjICAgSGFuZGxlcyBjb3BpZWQgYW5kIG1vdmVkIGZpbGVzIChyZXF1aXJlcyBwYXRjaGVzIG1h
ZGUgYnkgc3ZuLWNyZWF0ZS1wYXRjaCkuCiAjCiAjIE1pc3NpbmcgZmVhdHVyZXM6CiAjCiAjICAg
SGFuZGxlIHByb3BlcnR5IGNoYW5nZXMuCi0jICAgSGFuZGxlIGZpbGUgbW92ZXMgKHdvdWxkIHJl
cXVpcmUgcGF0Y2hlcyBtYWRlIGJ5IHN2bi1jcmVhdGUtcGF0Y2gpLgorIyAgIEhhbmRsZSBjb3Bp
ZWQgYW5kIG1vdmVkIGRpcmVjdG9yaWVzICh3b3VsZCByZXF1aXJlIHBhdGNoZXMgbWFkZSBieSBz
dm4tY3JlYXRlLXBhdGNoKS4KICMgICBVc2UgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBwYXRjaCBm
aWxlIGFuZCBkbyBhIDMtd2F5IG1lcmdlLgogIyAgIFdoZW4gcmV2ZXJzaW5nIGFuIGFkZGl0aW9u
LCBjaGVjayB0aGF0IHRoZSBmaWxlIG1hdGNoZXMgd2hhdCdzIGJlaW5nIHJlbW92ZWQuCiAjICAg
Tm90aWNlIGEgcGF0Y2ggdGhhdCdzIGJlaW5nIHVuYXBwbGllZCBhdCB0aGUgIndyb25nIGxldmVs
IiBhbmQgbWFrZSBpdCB3b3JrIGFueXdheS4KQEAgLTc2LDggKzc3LDEwIEBAIGlmICghR2V0T3B0
aW9ucygiaGVscCEiID0+IFwkc2hvd0hlbHApIHwKICAgICBleGl0IDE7CiB9CiAKK215IEBjb3Bp
ZWRGaWxlczsKIG15ICVkaXJlY3Rvcmllc1RvQ2hlY2s7CiAKK215ICRjb3BpZWRGcm9tUGF0aDsK
IG15ICRpbmRleFBhdGg7CiBteSAkcGF0Y2g7CiB3aGlsZSAoPD4pIHsKQEAgLTg2LDEzICs4OSwy
MSBAQCB3aGlsZSAoPD4pIHsKICAgICBpZiAoL15JbmRleDogKC4qKS8pIHsKICAgICAgICAgJGlu
ZGV4UGF0aCA9ICQxOwogICAgICAgICBpZiAoJHBhdGNoKSB7Ci0gICAgICAgICAgICBwYXRjaCgk
cGF0Y2gpOworICAgICAgICAgICAgaWYgKCRjb3BpZWRGcm9tUGF0aCkgeworICAgICAgICAgICAg
ICAgIHB1c2ggQGNvcGllZEZpbGVzLCAkcGF0Y2g7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHBhdGNoKCRwYXRjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAk
Y29waWVkRnJvbVBhdGggPSAiIjsKICAgICAgICAgICAgICRwYXRjaCA9ICIiOwogICAgICAgICB9
CiAgICAgfQogICAgIGlmICgkaW5kZXhQYXRoKSB7CiAgICAgICAgICMgRml4IHBhdGhzIG9uIGRp
ZmYsIC0tLSwgYW5kICsrKyBsaW5lcyB0byBtYXRjaCBwcmVjZWRpbmcgSW5kZXg6IGxpbmUuCiAg
ICAgICAgIHMvXi0tLSBcUysvLS0tICRpbmRleFBhdGgvOworICAgICAgICBpZiAoL14tLS0gLitc
KGZyb20gKFxTKyk6XGQrXCkkLykgeworICAgICAgICAgICAgJGNvcGllZEZyb21QYXRoID0gJDE7
CisgICAgICAgIH0KICAgICAgICAgaWYgKHMvXlwrXCtcKyBcUysvKysrICRpbmRleFBhdGgvKSB7
CiAgICAgICAgICAgICAkaW5kZXhQYXRoID0gIiI7CiAgICAgICAgIH0KQEAgLTEwMCw3ICsxMTEs
MTkgQEAgd2hpbGUgKDw+KSB7CiAgICAgJHBhdGNoIC49ICRfOwogICAgICRwYXRjaCAuPSAiXG4i
OwogfQotcGF0Y2goJHBhdGNoKTsKKworaWYgKCRwYXRjaCkgeworICAgIGlmICgkY29waWVkRnJv
bVBhdGgpIHsKKyAgICAgICAgcHVzaCBAY29waWVkRmlsZXMsICRwYXRjaDsKKyAgICB9IGVsc2Ug
eworICAgICAgICBwYXRjaCgkcGF0Y2gpOworICAgIH0KK30KKworIyBIYW5kbGUgY29waWVkIGFu
ZCBtb3ZlZCBmaWxlcyBsYXN0IHNpbmNlIHRoZXkgbWF5IGhhdmUgaGFkIHBvc3QtY29weSBjaGFu
Z2VzIHRoYXQgaGF2ZSBub3cgYmVlbiB1bmFwcGxpZWQKK2ZvciAkcGF0Y2ggKEBjb3BpZWRGaWxl
cykgeworICAgIHBhdGNoKCRwYXRjaCk7Cit9CiAKIHJldmVydERpcmVjdG9yaWVzKCk7CiAKQEAg
LTE4MCw3ICsyMDMsNyBAQCBzdWIgcGF0Y2goJCkKICAgICBteSAkYWRkaXRpb24gPSAwOwogICAg
IG15ICRpc0JpbmFyeSA9IDA7CiAKLSAgICAkYWRkaXRpb24gPSAxIGlmICRwYXRjaCA9fiAvXG4t
LS0gLitcKHJldmlzaW9uIDBcKVxuLzsKKyAgICAkYWRkaXRpb24gPSAxIGlmICgkcGF0Y2ggPX4g
L1xuLS0tIC4rXChyZXZpc2lvbiAwXClcbi8gfHwgJHBhdGNoID1+IC9cbkBAIC0wLDAgLiogQEAv
KTsKICAgICAkZGVsZXRpb24gPSAxIGlmICRwYXRjaCA9fiAvXG5AQCAuKiBcKzAsMCBAQC87CiAg
ICAgJGlzQmluYXJ5ID0gMSBpZiAkcGF0Y2ggPX4gL1xuQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGVcLi87CiAK
</data>
<flag name="review"
          id="4500"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>