<?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>43834</bug_id>
          
          <creation_ts>2010-08-11 00:42:25 -0700</creation_ts>
          <short_desc>merge MarkupAccumulator and MarkupAccumulatorWrapper</short_desc>
          <delta_ts>2010-08-12 15:32:06 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43227</dependson>
          <blocked>43936</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263099</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-11 00:42:25 -0700</bug_when>
    <thetext>We should merge MarkupAccumulator and MarkupAccumulatorWrapper.  This is a follow up bug for https://bugs.webkit.org/show_bug.cgi?id=43227.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263101</commentid>
    <comment_count>1</comment_count>
      <attachid>64084</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-11 00:48:40 -0700</bug_when>
    <thetext>Created attachment 64084
first attempt to merge

This is my first attempt to merge the two classes.  I merged MarkupAccumulator::appendMarkup and serializeNodes to centralize all serializations in one place.  But I feel like this approach is wrong because serializations done in two different versions of createMarkup are so different.  I should probably add a recursive serializeNodesWithNamespace to replace MarkupAccumulator::appendMarkup instead.  serializeNodesWithNamespace can take MarkupAccumulatorWrapper as an argument and this will allow us to merge two classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263388</commentid>
    <comment_count>2</comment_count>
      <attachid>64148</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-11 12:28:18 -0700</bug_when>
    <thetext>Created attachment 64148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263391</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-11 12:32:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=64148) [details]
&gt; Patch

In this patch, I didn&apos;t try to merge two serializations.  But instead, I added serializeNodeWithNamespaces which uses MarkupAccumulatorWrapper for the node version of createMarkup.  I&apos;m intending to put most of functions in markup.cpp into MarkupAccumulatorWrapper and rename it to MarkupAccumulator once this patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263657</commentid>
    <comment_count>4</comment_count>
      <attachid>64148</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-08-12 01:53:47 -0700</bug_when>
    <thetext>Comment on attachment 64148
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263962</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-12 14:06:55 -0700</bug_when>
    <thetext>Committed r65265: &lt;http://trac.webkit.org/changeset/65265&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64084</attachid>
            <date>2010-08-11 00:48:40 -0700</date>
            <delta_ts>2010-08-11 12:28:15 -0700</delta_ts>
            <desc>first attempt to merge</desc>
            <filename>attempt43834-merge-serializeNodes</filename>
            <type>text/plain</type>
            <size>12727</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA2NTExMykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIwOCw3ICsyMDIwOCw2IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwog
CQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVn
aW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25S
ZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNjUx
MTMpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkx
LDUyICs1OTEsNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFbmRNYXJrdXAoVmVjdG9yPFVDaGFyCiAg
ICAgcmVzdWx0LmFwcGVuZCgnPicpOwogfQogCi1jbGFzcyBNYXJrdXBBY2N1bXVsYXRvciB7Ci1w
dWJsaWM6Ci0gICAgTWFya3VwQWNjdW11bGF0b3IoTm9kZSogbm9kZVRvU2tpcCwgVmVjdG9yPE5v
ZGUqPiogbm9kZXMpCi0gICAgICAgIDogbV9ub2RlVG9Ta2lwKG5vZGVUb1NraXApCi0gICAgICAg
ICwgbV9ub2Rlcyhub2RlcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRNYXJrdXAo
Tm9kZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5LCBFQWJzb2x1dGVVUkxzLCBjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAw
KTsKLQotICAgIFN0cmluZyB0YWtlUmVzdWx0KCkgeyByZXR1cm4gU3RyaW5nOjphZG9wdChtX3Jl
c3VsdCk7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8VUNoYXI+IG1fcmVzdWx0OwotICAgIE5v
ZGUqIG1fbm9kZVRvU2tpcDsKLSAgICBWZWN0b3I8Tm9kZSo+KiBtX25vZGVzOwotfTsKLQotLy8g
RklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZG8gdGhpcyBpbiBhIG5vbi1yZWN1cnNpdmUgd2F5Lgot
dm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNo
aWxkcmVuT25seSBjaGlsZHJlbk9ubHksIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzLCBjb25z
dCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFj
ZXMpCi17Ci0gICAgaWYgKHN0YXJ0Tm9kZSA9PSBtX25vZGVUb1NraXApCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiBu
YW1lc3BhY2VIYXNoOwotICAgIGlmIChuYW1lc3BhY2VzKQotICAgICAgICBuYW1lc3BhY2VIYXNo
ID0gKm5hbWVzcGFjZXM7Ci0KLSAgICAvLyBzdGFydCB0YWcKLSAgICBpZiAoIWNoaWxkcmVuT25s
eSkgewotICAgICAgICBpZiAobV9ub2RlcykKLSAgICAgICAgICAgIG1fbm9kZXMtPmFwcGVuZChz
dGFydE5vZGUpOwotICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChtX3Jlc3VsdCwgc3RhcnROb2Rl
LCAwLCBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGFic29sdXRlVVJMcywgZmFsc2UsICZu
YW1lc3BhY2VIYXNoKTsKLSAgICB9Ci0KLSAgICAvLyBjaGlsZHJlbgotICAgIGlmICghKHN0YXJ0
Tm9kZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBkb2VzSFRNTEZvcmJpZEVuZFRh
ZyhzdGFydE5vZGUpKSkgewotICAgICAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBzdGFydE5vZGUt
PmZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgICAgICBhcHBlbmRNYXJrdXAoY3VycmVudCwgSW5jbHVkZU5vZGUsIGFic29sdXRl
VVJMcywgJm5hbWVzcGFjZUhhc2gpOwotICAgIH0KLQotICAgIC8vIGVuZCB0YWcKLSAgICBpZiAo
IWNoaWxkcmVuT25seSkKLSAgICAgICAgYXBwZW5kRW5kTWFya3VwKG1fcmVzdWx0LCBzdGFydE5v
ZGUpOwotfQotCiBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9kZSwgY29uc3QgU3Ry
aW5nJiBiYXNlVVJMKQogewogICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5nZXM7CkBA
IC03MzUsOSArNjg5LDI5IEBAIHN0YXRpYyBib29sIHNob3VsZEluY2x1ZGVXcmFwcGVyRm9yRnVs
bHkKICAgICAgICAgICAgc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOwogfQogCitjbGFzcyBNYXJrdXBBY2N1bXVsYXRvck5vZGUgeworcHVibGlj
OgorICAgIE1hcmt1cEFjY3VtdWxhdG9yTm9kZShOb2RlKiBub2RlLCBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXM9MCkKKyAgICB7CisgICAg
ICAgIG1fbm9kZSA9IG5vZGU7CisgICAgICAgIGlmIChuYW1lc3BhY2VzKQorICAgICAgICAgICAg
bV9uYW1lc3BhY2VzID0gKm5hbWVzcGFjZXM7CisgICAgfQorICAgIE5vZGUqIG5vZGUoKSB7Cisg
ICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIEF0b21pY1N0cmluZ0ltcGwqPiBuYW1lc3BhY2VzKCkgeworICAgICAgICByZXR1cm4gbV9u
YW1lc3BhY2VzOworICAgIH0KK3ByaXZhdGU6CisgICAgTm9kZSogbV9ub2RlOworICAgIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiBtX25hbWVzcGFjZXM7Cit9
OworCiBjbGFzcyBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIgewogcHVibGljOgotICAgIE1hcmt1
cEFjY3VtdWxhdG9yV3JhcHBlcigpCisgICAgTWFya3VwQWNjdW11bGF0b3JXcmFwcGVyKFZlY3Rv
cjxOb2RlKj4qIG5vZGVzKQorICAgICAgICA6IG1fbm9kZXMobm9kZXMpCiAgICAgewogICAgIH0K
IApAQCAtNzQ2LDExICs3MjAsMTMgQEAgcHVibGljOgogICAgICAgICBwb3N0TWFya3Vwcy5hcHBl
bmQocyk7CiAgICAgfQogCi0gICAgdm9pZCBpbnNlcnRPcGVuVGFnKGNvbnN0IE5vZGUqIG5vZGUs
IGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIEVB
YnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBm
YWxzZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNG
dWxseVNlbGVjdE5vZGUpCisgICAgdm9pZCBpbnNlcnRPcGVuVGFnKGNvbnN0IE5vZGUqIG5vZGUs
IGNvbnN0IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIEVB
YnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9t
aWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9
IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9l
c0Z1bGx5U2VsZWN0Tm9kZSkKICAgICB7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0Owot
ICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0ZSwg
YWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCAwLCByYW5nZUZ1bGx5U2VsZWN0
c05vZGUpOworICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBh
bm5vdGF0ZSwgYWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBuYW1lc3BhY2Vz
LCByYW5nZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgICAgICBwb3N0TWFya3Vwcy5hcHBlbmQoU3Ry
aW5nOjphZG9wdChyZXN1bHQpKTsKKyAgICAgICAgaWYgKG1fbm9kZXMpCisgICAgICAgICAgICBt
X25vZGVzLT5hcHBlbmQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpOwogICAgIH0KIAogICAgIHZv
aWQgaW5zZXJ0RW5kVGFnKGNvbnN0IE5vZGUqIG5vZGUpCkBAIC03NjAsMTEgKzczNiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHBvc3RNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KHJlc3VsdCkp
OwogICAgIH0KIAotICAgIHZvaWQgd3JhcFdpdGhOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0
IFJhbmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIEVBYnNvbHV0
ZVVSTHMgYWJzb2x1dGVVUkxzLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwg
UmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNl
bGVjdE5vZGUpCisgICAgdm9pZCB3cmFwV2l0aE5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
UmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFic29sdXRl
VVJMcyBhYnNvbHV0ZVVSTHMsIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmlu
Z0ltcGwqPiogbmFtZXNwYWNlcywgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFsc2Us
IFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlT
ZWxlY3ROb2RlKQogICAgIHsKICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAg
IGFwcGVuZFN0YXJ0TWFya3VwKHJlc3VsdCwgbm9kZSwgcmFuZ2UsIGFubm90YXRlLCBhYnNvbHV0
ZVVSTHMsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIDAsIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSk7
CisgICAgICAgIGFwcGVuZFN0YXJ0TWFya3VwKHJlc3VsdCwgbm9kZSwgcmFuZ2UsIGFubm90YXRl
LCBhYnNvbHV0ZVVSTHMsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIG5hbWVzcGFjZXMsIHJhbmdl
RnVsbHlTZWxlY3RzTm9kZSk7CiAgICAgICAgIHByZU1hcmt1cHMuYXBwZW5kKFN0cmluZzo6YWRv
cHQocmVzdWx0KSk7CisgICAgICAgIGlmIChtX25vZGVzKQorICAgICAgICAgICAgbV9ub2Rlcy0+
YXBwZW5kKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsKICAgICAgICAgaW5zZXJ0RW5kVGFnKG5v
ZGUpOwogICAgIH0KIApAQCAtODE0LDEzICs3OTIsMTUgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKKyAgICBWZWN0b3I8Tm9kZSo+KiBtX25vZGVzOwogICAgIFZlY3RvcjxTdHJpbmc+IHBy
ZU1hcmt1cHM7CiAgICAgVmVjdG9yPFN0cmluZz4gcG9zdE1hcmt1cHM7CiB9OwogCi1zdGF0aWMg
Tm9kZSogc2VyaWFsaXplTm9kZXMoTWFya3VwQWNjdW11bGF0b3JXcmFwcGVyJiBhY2N1bXVsYXRv
ciwgTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBWZWN0b3I8Tm9kZSo+KiBub2Rlcywg
Y29uc3QgUmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFi
c29sdXRlVVJMcyBhYnNvbHV0ZVVSTHMpCitzdGF0aWMgTm9kZSogc2VyaWFsaXplTm9kZXMoTWFy
a3VwQWNjdW11bGF0b3JXcmFwcGVyJiBhY2N1bXVsYXRvciwgTm9kZSogc3RhcnROb2RlLCBOb2Rl
KiBwYXN0RW5kLCBjb25zdCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFu
bm90YXRlLCBFQWJzb2x1dGVVUkxzIGFic29sdXRlVVJMcywgYm9vbCBza2lwVW5yZW5kZXJlZE5v
ZGVzLCBOb2RlKiBub2RlVG9Ta2lwKQogewotICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9D
bG9zZTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4g
Y3VycmVudE5hbWVzcGFjZXM7CisgICAgVmVjdG9yPE1hcmt1cEFjY3VtdWxhdG9yTm9kZT4gYW5j
ZXN0b3JzVG9DbG9zZTsKICAgICBOb2RlKiBuZXh0OwogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSAw
OwogICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0Tm9kZTsgbiAhPSBwYXN0RW5kOyBuID0gbmV4dCkg
ewpAQCAtODMxLDMyICs4MTEsMzUgQEAgc3RhdGljIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE1hcmt1
cEFjY3VtdQogICAgICAgICBBU1NFUlQobik7CiAgICAgICAgIGlmICghbikKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAKKwogICAgICAgICBuZXh0ID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgp
OwogICAgICAgICBib29sIG9wZW5lZFRhZyA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYg
KG4gPT0gbm9kZVRvU2tpcCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChp
c0Jsb2NrKG4pICYmIGNhbkhhdmVDaGlsZHJlbkZvckVkaXRpbmcobikgJiYgbmV4dCA9PSBwYXN0
RW5kKQorICAgICAgICBpZiAoc2tpcFVucmVuZGVyZWROb2RlcyAmJiBpc0Jsb2NrKG4pICYmIGNh
bkhhdmVDaGlsZHJlbkZvckVkaXRpbmcobikgJiYgbmV4dCA9PSBwYXN0RW5kKQogICAgICAgICAg
ICAgLy8gRG9uJ3Qgd3JpdGUgb3V0IGVtcHR5IGJsb2NrIGNvbnRhaW5lcnMgdGhhdCBhcmVuJ3Qg
ZnVsbHkgc2VsZWN0ZWQuCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIW4t
PnJlbmRlcmVyKCkgJiYgIWVuY2xvc2luZ05vZGVXaXRoVGFnKFBvc2l0aW9uKG4sIDApLCBzZWxl
Y3RUYWcpKSB7CisgICAgICAgIGlmIChza2lwVW5yZW5kZXJlZE5vZGVzICYmICFuLT5yZW5kZXJl
cigpICYmICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3NpdGlvbihuLCAwKSwgc2VsZWN0VGFnKSkg
ewogICAgICAgICAgICAgbmV4dCA9IG4tPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKICAgICAgICAg
ICAgIC8vIERvbid0IHNraXAgb3ZlciBwYXN0RW5kLgogICAgICAgICAgICAgaWYgKHBhc3RFbmQg
JiYgcGFzdEVuZC0+aXNEZXNjZW5kYW50T2YobikpCiAgICAgICAgICAgICAgICAgbmV4dCA9IHBh
c3RFbmQ7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBNYXJrdXBBY2N1bXVsYXRvck5v
ZGUgbm9kZVRvU2F2ZShuLCBza2lwVW5yZW5kZXJlZE5vZGVzID8gMCA6ICZjdXJyZW50TmFtZXNw
YWNlcyk7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdy
ZSBub3Qgc2tpcHBpbmcgdGhlIGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBhY2N1bXVsYXRvci5p
bnNlcnRPcGVuVGFnKG4sIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzKTsKLSAgICAgICAg
ICAgIGlmIChub2RlcykKLSAgICAgICAgICAgICAgICBub2Rlcy0+YXBwZW5kKG4pOworICAgICAg
ICAgICAgYWNjdW11bGF0b3IuaW5zZXJ0T3BlblRhZyhuLCByYW5nZSwgYW5ub3RhdGUsIGFic29s
dXRlVVJMcywgc2tpcFVucmVuZGVyZWROb2RlcyA/IDAgOiAmY3VycmVudE5hbWVzcGFjZXMpOwog
CiAgICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBu
b3cuCiAgICAgICAgICAgICBpZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkpIHsKICAgICAgICAgICAg
ICAgICBhY2N1bXVsYXRvci5pbnNlcnRFbmRUYWcobik7CisgICAgICAgICAgICAgICAgY3VycmVu
dE5hbWVzcGFjZXMgPSBub2RlVG9TYXZlLm5hbWVzcGFjZXMoKTsKICAgICAgICAgICAgICAgICBs
YXN0Q2xvc2VkID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgb3Bl
bmVkVGFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3NlLmFwcGVuZChu
KTsKKyAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3NlLmFwcGVuZChub2RlVG9TYXZlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC04NjUsMTIgKzg0OCwxMyBAQCBzdGF0aWMg
Tm9kZSogc2VyaWFsaXplTm9kZXMoTWFya3VwQWNjdW11CiAgICAgICAgIGlmICghb3BlbmVkVGFn
ICYmICghbi0+bmV4dFNpYmxpbmcoKSB8fCBuZXh0ID09IHBhc3RFbmQpKSB7CiAgICAgICAgICAg
ICAvLyBDbG9zZSB1cCB0aGUgYW5jZXN0b3JzLgogICAgICAgICAgICAgd2hpbGUgKCFhbmNlc3Rv
cnNUb0Nsb3NlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIGFuY2VzdG9yID0g
YW5jZXN0b3JzVG9DbG9zZS5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFz
dEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCisgICAgICAgICAgICAgICAg
TWFya3VwQWNjdW11bGF0b3JOb2RlIGFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRh
bnRPZihhbmNlc3Rvci5ub2RlKCkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9y
cyB1cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KLSAgICAgICAgICAgICAgICBhY2N1bXVsYXRv
ci5pbnNlcnRFbmRUYWcoYW5jZXN0b3IpOwotICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBh
bmNlc3RvcjsKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRvci5pbnNlcnRFbmRUYWcoYW5jZXN0
b3Iubm9kZSgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50TmFtZXNwYWNlcyA9IGFuY2VzdG9y
Lm5hbWVzcGFjZXMoKTsKKyAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gYW5jZXN0b3Iubm9k
ZSgpOwogICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgpOwogICAg
ICAgICAgICAgfQogCkBAIC04NzksMjAgKzg2MywyMiBAQCBzdGF0aWMgTm9kZSogc2VyaWFsaXpl
Tm9kZXMoTWFya3VwQWNjdW11CiAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG4g
IT0gbmV4dFBhcmVudCkgewogICAgICAgICAgICAgICAgIE5vZGUqIGxhc3RBbmNlc3RvckNsb3Nl
ZE9yU2VsZiA9IG4tPmlzRGVzY2VuZGFudE9mKGxhc3RDbG9zZWQpID8gbGFzdENsb3NlZCA6IG47
CiAgICAgICAgICAgICAgICAgZm9yIChOb2RlICpwYXJlbnQgPSBsYXN0QW5jZXN0b3JDbG9zZWRP
clNlbGYtPnBhcmVudCgpOyBwYXJlbnQgJiYgcGFyZW50ICE9IG5leHRQYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJl
bnRseSBkbyBub3Qgc3VwcG9ydCBuYW1lc3BhY2VzIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHNraXBVbnJlbmRlcmVkTm9kZXMpOwogICAgICAgICAgICAgICAgICAg
ICAvLyBBbGwgYW5jZXN0b3JzIHRoYXQgYXJlbid0IGluIHRoZSBhbmNlc3RvcnNUb0Nsb3NlIGxp
c3Qgc2hvdWxkIGVpdGhlciBiZSBhKSB1bnJlbmRlcmVkOgogICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBl
bmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0
Tm9kZToKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50
T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoTm9k
ZShwYXJlbnQsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVuZChw
YXJlbnQpOworICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBB
dG9taWNTdHJpbmdJbXBsKj4gbmV3X25hbWVzcGFjZXM7CisgICAgICAgICAgICAgICAgICAgIGFj
Y3VtdWxhdG9yLndyYXBXaXRoTm9kZShwYXJlbnQsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1dGVV
UkxzLCAwKTsKICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IHBhcmVudDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAg
ICBBU1NFUlQoYW5jZXN0b3JzVG9DbG9zZS5zaXplKCkgPT0gMCk7CiAgICAgcmV0dXJuIGxhc3RD
bG9zZWQ7CiB9CiAKQEAgLTkzMiw3ICs5MTgsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0
IFJhbmdlKiByYW5nZSwgCiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAKLSAgICBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIgYWNjdW11bGF0
b3I7CisgICAgTWFya3VwQWNjdW11bGF0b3JXcmFwcGVyIGFjY3VtdWxhdG9yKG5vZGVzKTsKICAg
ICBOb2RlKiBwYXN0RW5kID0gdXBkYXRlZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5v
ZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0ZWRSYW5nZS0+Zmlyc3ROb2RlKCk7CkBAIC05NTUsNyArOTQx
LDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICB9
CiAgICAgfQogCi0gICAgTm9kZSogbGFzdENsb3NlZCA9IHNlcmlhbGl6ZU5vZGVzKGFjY3VtdWxh
dG9yLCBzdGFydE5vZGUsIHBhc3RFbmQsIG5vZGVzLCByYW5nZSwgYW5ub3RhdGUsIGFic29sdXRl
VVJMcyk7CisgICAgTm9kZSogbGFzdENsb3NlZCA9IHNlcmlhbGl6ZU5vZGVzKGFjY3VtdWxhdG9y
LCBzdGFydE5vZGUsIHBhc3RFbmQsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzLCB0cnVl
LCAwKTsKIAogICAgIC8vIEluY2x1ZGUgYW5jZXN0b3JzIHRoYXQgYXJlbid0IGNvbXBsZXRlbHkg
aW5zaWRlIHRoZSByYW5nZSBidXQgYXJlIHJlcXVpcmVkIHRvIHJldGFpbiAKICAgICAvLyB0aGUg
c3RydWN0dXJlIGFuZCBhcHBlYXJhbmNlIG9mIHRoZSBjb3BpZWQgbWFya3VwLgpAQCAtMTAzMCw3
ICsxMDE2LDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIG5vZGUgYW5k
IGFsbCB0aGUgb3RoZXIgYW5jZXN0b3JzIGFyZSBub3QgaW4gdGhlIHNlbGVjdGlvbiB3ZSB3YW50
IHRvIHNldCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgdG8gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZQog
ICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgc3R5bGVzIHRoYXQgYWZmZWN0IHRoZSBleHRlcmlv
ciBvZiB0aGUgbm9kZSBhcmUgbm90IGluY2x1ZGVkLgotICAgICAgICAgICAgICAgIGFjY3VtdWxh
dG9yLndyYXBXaXRoTm9kZShhbmNlc3RvciwgdXBkYXRlZFJhbmdlLmdldCgpLCBhbm5vdGF0ZSwg
YWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBEb2VzTm90RnVsbHlTZWxlY3RO
b2RlKTsKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aE5vZGUoYW5jZXN0b3Is
IHVwZGF0ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUsIGFic29sdXRlVVJMcywgMCwgY29udmVydEJs
b2Nrc1RvSW5saW5lcywgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobm9kZXMpCiAgICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVuZChhbmNl
c3Rvcik7CkBAIC0xMTA3LDkgKzEwOTMsMTUgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBO
b2RlKiBub2RlLCBFQwogICAgICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIAotICAgIE1hcmt1
cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9yKGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQsIG5v
ZGVzKTsKLSAgICBhY2N1bXVsYXRvci5hcHBlbmRNYXJrdXAoY29uc3RfY2FzdDxOb2RlKj4obm9k
ZSksIGNoaWxkcmVuT25seSwgYWJzb2x1dGVVUkxzKTsKLSAgICByZXR1cm4gYWNjdW11bGF0b3Iu
dGFrZVJlc3VsdCgpOworICAgIE1hcmt1cEFjY3VtdWxhdG9yV3JhcHBlciBhY2N1bXVsYXRvcihu
b2Rlcyk7CisgICAgaWYgKGNoaWxkcmVuT25seSA9PSBDaGlsZHJlbk9ubHkpIHsKKyAgICAgICAg
aWYgKCFub2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAg
IHNlcmlhbGl6ZU5vZGVzKGFjY3VtdWxhdG9yLCBub2RlLT5maXJzdENoaWxkKCksIG5vZGUtPnRy
YXZlcnNlTmV4dFNpYmxpbmcoKSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBhYnNv
bHV0ZVVSTHMsIGZhbHNlLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgc2VyaWFsaXplTm9kZXMoYWNjdW11bGF0b3IsIGNvbnN0X2Nhc3Q8Tm9kZSo+
KG5vZGUpLCBub2RlLT5uZXh0U2libGluZygpLCAwLCBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UsIGFic29sdXRlVVJMcywgZmFsc2UsIGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOwor
CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnRha2VSZXN1bHRzKCk7CiB9CiAKIHN0YXRpYyB2b2lk
IGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5lck5vZGUqIHBhcmFncmFwaCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64148</attachid>
            <date>2010-08-11 12:28:18 -0700</date>
            <delta_ts>2010-08-12 01:53:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43834-20100811122817.patch</filename>
            <type>text/plain</type>
            <size>10500</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTE3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDgtMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbWVy
Z2UgTWFya3VwQWNjdW11bGF0b3IgYW5kIE1hcmt1cEFjY3VtdWxhdG9yV3JhcHBlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4MzQKKworICAgICAg
ICBSZW1vdmVkIE1hcmt1cEFjY3VtdWxhdG9yIGFuZCBhZGRlZCBzZXJpYWxpemVOb2Rlc1dpdGhO
YW1lc3BhY2VzIHRvIHVzZSBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIKKyAgICAgICAgaW4gYm90
aCB2ZXJzaW9ucyBvZiBjcmVhdGVNYXJrdXAuICBBY2N1bXVsYXRpb24gb2Ygbm9kZXMgZG9uZSBt
YW51YWxseSBpbiBzZXJpYWxpemVOb2RlcyBpcworICAgICAgICBub3cgZG9uZSBieSBNYXJrdXBB
Y2N1bXVsYXRvcldyYXBwZXIgYXMgZG9uZSBpbiB0aGUgb3JpZ2luYWwgTWFya3VwQWNjdW11bGF0
b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFkZGVkIHNpbmNlIHRoaXMgaXMgYSBjbGVhbnVw
LgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFy
a3VwQWNjdW11bGF0b3JXcmFwcGVyOjpNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIpOiBUYWtlcyB2
ZWN0b3Igb2Ygbm9kZXMgYW5kIHNldCBpdCB0byBtX25vZGVzLgorICAgICAgICAoV2ViQ29yZTo6
TWFya3VwQWNjdW11bGF0b3JXcmFwcGVyOjppbnNlcnRPcGVuVGFnKTogQWRkcyBub2RlIHRvIG1f
bm9kZXMuCisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXI6OndyYXBX
aXRoTm9kZSk6IEFkZHMgbm9kZSB0byBtX25vZGVzLgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFs
aXplTm9kZXMpOiBBZGRpbmcgbm9kZSB0byBub2RlcyBpcyBtb3ZlZCBpbnRvIE1hcmt1cEFjY3Vt
dWxhdG9yV3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IEluc3RhbnRp
YXRlcyBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxp
emVOb2Rlc1dpdGhOYW1lc3BhY2VzKTogUmVuYW1lZCBmcm9tIE1hcmt1cEFjY3VtdWxhdG9yOjph
cHBlbmRNYXJrdXAuCisKIDIwMTAtMDgtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4gIFR1cm5zIG91dCB3ZSBuZWVkIHRvIHVu
Y29uZGl0aW9uYWxseSBpbmNsdWRlCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNjUxNjMp
CisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkxLDUy
ICs1OTEsNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFbmRNYXJrdXAoVmVjdG9yPFVDaGFyCiAgICAg
cmVzdWx0LmFwcGVuZCgnPicpOwogfQogCi1jbGFzcyBNYXJrdXBBY2N1bXVsYXRvciB7Ci1wdWJs
aWM6Ci0gICAgTWFya3VwQWNjdW11bGF0b3IoTm9kZSogbm9kZVRvU2tpcCwgVmVjdG9yPE5vZGUq
Piogbm9kZXMpCi0gICAgICAgIDogbV9ub2RlVG9Ta2lwKG5vZGVUb1NraXApCi0gICAgICAgICwg
bV9ub2Rlcyhub2RlcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRNYXJrdXAoTm9k
ZSogc3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5LCBFQWJzb2x1dGVVUkxzLCBjb25zdCBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAwKTsK
LQotICAgIFN0cmluZyB0YWtlUmVzdWx0KCkgeyByZXR1cm4gU3RyaW5nOjphZG9wdChtX3Jlc3Vs
dCk7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8VUNoYXI+IG1fcmVzdWx0OwotICAgIE5vZGUq
IG1fbm9kZVRvU2tpcDsKLSAgICBWZWN0b3I8Tm9kZSo+KiBtX25vZGVzOwotfTsKLQotLy8gRklY
TUU6IFdvdWxkIGJlIG5pY2UgdG8gZG8gdGhpcyBpbiBhIG5vbi1yZWN1cnNpdmUgd2F5Lgotdm9p
ZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxk
cmVuT25seSBjaGlsZHJlbk9ubHksIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzLCBjb25zdCBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMp
Ci17Ci0gICAgaWYgKHN0YXJ0Tm9kZSA9PSBtX25vZGVUb1NraXApCi0gICAgICAgIHJldHVybjsK
LQotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiBuYW1l
c3BhY2VIYXNoOwotICAgIGlmIChuYW1lc3BhY2VzKQotICAgICAgICBuYW1lc3BhY2VIYXNoID0g
Km5hbWVzcGFjZXM7Ci0KLSAgICAvLyBzdGFydCB0YWcKLSAgICBpZiAoIWNoaWxkcmVuT25seSkg
ewotICAgICAgICBpZiAobV9ub2RlcykKLSAgICAgICAgICAgIG1fbm9kZXMtPmFwcGVuZChzdGFy
dE5vZGUpOwotICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChtX3Jlc3VsdCwgc3RhcnROb2RlLCAw
LCBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGFic29sdXRlVVJMcywgZmFsc2UsICZuYW1l
c3BhY2VIYXNoKTsKLSAgICB9Ci0KLSAgICAvLyBjaGlsZHJlbgotICAgIGlmICghKHN0YXJ0Tm9k
ZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBkb2VzSFRNTEZvcmJpZEVuZFRhZyhz
dGFydE5vZGUpKSkgewotICAgICAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBzdGFydE5vZGUtPmZp
cnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCi0g
ICAgICAgICAgICBhcHBlbmRNYXJrdXAoY3VycmVudCwgSW5jbHVkZU5vZGUsIGFic29sdXRlVVJM
cywgJm5hbWVzcGFjZUhhc2gpOwotICAgIH0KLQotICAgIC8vIGVuZCB0YWcKLSAgICBpZiAoIWNo
aWxkcmVuT25seSkKLSAgICAgICAgYXBwZW5kRW5kTWFya3VwKG1fcmVzdWx0LCBzdGFydE5vZGUp
OwotfQotCiBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMKQogewogICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5nZXM7CkBAIC03
MzcsNyArNjkxLDggQEAgc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZVdyYXBwZXJGb3JGdWxseQog
CiBjbGFzcyBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIgewogcHVibGljOgotICAgIE1hcmt1cEFj
Y3VtdWxhdG9yV3JhcHBlcigpCisgICAgTWFya3VwQWNjdW11bGF0b3JXcmFwcGVyKFZlY3RvcjxO
b2RlKj4qIG5vZGVzKQorICAgIDogbV9ub2Rlcyhub2RlcykKICAgICB7CiAgICAgfQogCkBAIC03
NDYsMTEgKzcwMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RNYXJrdXBzLmFwcGVuZChzKTsK
ICAgICB9CiAKLSAgICB2b2lkIGluc2VydE9wZW5UYWcoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
UmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFic29sdXRl
VVJMcyBhYnNvbHV0ZVVSTHMsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBS
YW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5U2Vs
ZWN0Tm9kZSkKKyAgICB2b2lkIGluc2VydE9wZW5UYWcoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
UmFuZ2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFic29sdXRl
VVJMcyBhYnNvbHV0ZVVSTHMsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMg
PSAwLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1
bGx5U2VsZWN0Tm9kZSkKICAgICB7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAg
ICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0ZSwgYWJz
b2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCAwLCByYW5nZUZ1bGx5U2VsZWN0c05v
ZGUpOworICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5v
dGF0ZSwgYWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBuYW1lc3BhY2VzLCBy
YW5nZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgICAgICBwb3N0TWFya3Vwcy5hcHBlbmQoU3RyaW5n
OjphZG9wdChyZXN1bHQpKTsKKyAgICAgICAgaWYgKG1fbm9kZXMpCisgICAgICAgICAgICBtX25v
ZGVzLT5hcHBlbmQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpOwogICAgIH0KIAogICAgIHZvaWQg
aW5zZXJ0RW5kVGFnKGNvbnN0IE5vZGUqIG5vZGUpCkBAIC03NjAsMTIgKzcxNywxNCBAQCBwdWJs
aWM6CiAgICAgICAgIHBvc3RNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KHJlc3VsdCkpOwog
ICAgIH0KIAotICAgIHZvaWQgd3JhcFdpdGhOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IFJh
bmdlKiByYW5nZSwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUsIEVBYnNvbHV0ZVVS
THMgYWJzb2x1dGVVUkxzLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgUmFu
Z2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVj
dE5vZGUpCisgICAgdm9pZCB3cmFwV2l0aE5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFu
Z2UqIHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFic29sdXRlVVJM
cyBhYnNvbHV0ZVVSTHMsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4qIG5hbWVzcGFjZXMgPSAw
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5
U2VsZWN0Tm9kZSkKICAgICB7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAg
ICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1
dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCAwLCByYW5nZUZ1bGx5U2VsZWN0c05vZGUp
OworICAgICAgICBhcHBlbmRTdGFydE1hcmt1cChyZXN1bHQsIG5vZGUsIHJhbmdlLCBhbm5vdGF0
ZSwgYWJzb2x1dGVVUkxzLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBuYW1lc3BhY2VzLCByYW5n
ZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFk
b3B0KHJlc3VsdCkpOwogICAgICAgICBpbnNlcnRFbmRUYWcobm9kZSk7CisgICAgICAgIGlmICht
X25vZGVzKQorICAgICAgICAgICAgbV9ub2Rlcy0+YXBwZW5kKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5v
ZGUpKTsKICAgICB9CiAKICAgICB2b2lkIHdyYXBXaXRoU3R5bGVOb2RlKENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNCbG9jayA9IGZhbHNlKQpA
QCAtODE0LDExICs3NzMsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBWZWN0
b3I8Tm9kZSo+KiBtX25vZGVzOwogICAgIFZlY3RvcjxTdHJpbmc+IHByZU1hcmt1cHM7CiAgICAg
VmVjdG9yPFN0cmluZz4gcG9zdE1hcmt1cHM7CiB9OwogCi1zdGF0aWMgTm9kZSogc2VyaWFsaXpl
Tm9kZXMoTWFya3VwQWNjdW11bGF0b3JXcmFwcGVyJiBhY2N1bXVsYXRvciwgTm9kZSogc3RhcnRO
b2RlLCBOb2RlKiBwYXN0RW5kLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgY29uc3QgUmFuZ2UqIHJh
bmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgRUFic29sdXRlVVJMcyBhYnNv
bHV0ZVVSTHMpCitzdGF0aWMgTm9kZSogc2VyaWFsaXplTm9kZXMoTWFya3VwQWNjdW11bGF0b3JX
cmFwcGVyJiBhY2N1bXVsYXRvciwgTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBjb25z
dCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlLCBFQWJzb2x1
dGVVUkxzIGFic29sdXRlVVJMcykKIHsKICAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xv
c2U7CiAgICAgTm9kZSogbmV4dDsKQEAgLTg0Nyw4ICs4MDcsNiBAQCBzdGF0aWMgTm9kZSogc2Vy
aWFsaXplTm9kZXMoTWFya3VwQWNjdW11CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv
LyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhlIGRl
c2NlbmRhbnRzCiAgICAgICAgICAgICBhY2N1bXVsYXRvci5pbnNlcnRPcGVuVGFnKG4sIHJhbmdl
LCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzKTsKLSAgICAgICAgICAgIGlmIChub2RlcykKLSAgICAg
ICAgICAgICAgICBub2Rlcy0+YXBwZW5kKG4pOwogCiAgICAgICAgICAgICAvLyBJZiBub2RlIGhh
cyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cuCiAgICAgICAgICAgICBpZiAoIW4tPmNo
aWxkTm9kZUNvdW50KCkpIHsKQEAgLTg4NSw4ICs4NDMsNiBAQCBzdGF0aWMgTm9kZSogc2VyaWFs
aXplTm9kZXMoTWFya3VwQWNjdW11CiAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2Vz
dG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJz
YWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3Rh
cnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpKTsKICAgICAgICAgICAgICAgICAgICAgYWNj
dW11bGF0b3Iud3JhcFdpdGhOb2RlKHBhcmVudCwgcmFuZ2UsIGFubm90YXRlLCBhYnNvbHV0ZVVS
THMpOwotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBub2Rlcy0+YXBwZW5kKHBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9z
ZWQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtOTMyLDcg
Kzg4OCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKIAogICAg
IGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAg
IE1hcmt1cEFjY3VtdWxhdG9yV3JhcHBlciBhY2N1bXVsYXRvcjsKKyAgICBNYXJrdXBBY2N1bXVs
YXRvcldyYXBwZXIgYWNjdW11bGF0b3Iobm9kZXMpOwogICAgIE5vZGUqIHBhc3RFbmQgPSB1cGRh
dGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gdXBkYXRl
ZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAgLTk1NSw3ICs5MTEsNyBAQCBTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOb2RlKiBs
YXN0Q2xvc2VkID0gc2VyaWFsaXplTm9kZXMoYWNjdW11bGF0b3IsIHN0YXJ0Tm9kZSwgcGFzdEVu
ZCwgbm9kZXMsIHJhbmdlLCBhbm5vdGF0ZSwgYWJzb2x1dGVVUkxzKTsKKyAgICBOb2RlKiBsYXN0
Q2xvc2VkID0gc2VyaWFsaXplTm9kZXMoYWNjdW11bGF0b3IsIHN0YXJ0Tm9kZSwgcGFzdEVuZCwg
cmFuZ2UsIGFubm90YXRlLCBhYnNvbHV0ZVVSTHMpOwogCiAgICAgLy8gSW5jbHVkZSBhbmNlc3Rv
cnMgdGhhdCBhcmVuJ3QgY29tcGxldGVseSBpbnNpZGUgdGhlIHJhbmdlIGJ1dCBhcmUgcmVxdWly
ZWQgdG8gcmV0YWluIAogICAgIC8vIHRoZSBzdHJ1Y3R1cmUgYW5kIGFwcGVhcmFuY2Ugb2YgdGhl
IGNvcGllZCBtYXJrdXAuCkBAIC0xMDMwLDcgKzk4Niw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAo
Y29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gU2luY2UgdGhpcyBub2RlIGFuZCBhbGwgdGhlIG90aGVyIGFuY2VzdG9ycyBhcmUgbm90
IGluIHRoZSBzZWxlY3Rpb24gd2Ugd2FudCB0byBzZXQgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHRv
IERvZXNOb3RGdWxseVNlbGVjdE5vZGUKICAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHN0eWxl
cyB0aGF0IGFmZmVjdCB0aGUgZXh0ZXJpb3Igb2YgdGhlIG5vZGUgYXJlIG5vdCBpbmNsdWRlZC4K
LSAgICAgICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aE5vZGUoYW5jZXN0b3IsIHVwZGF0
ZWRSYW5nZS5nZXQoKSwgYW5ub3RhdGUsIGFic29sdXRlVVJMcywgY29udmVydEJsb2Nrc1RvSW5s
aW5lcywgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSk7CisgICAgICAgICAgICAgICAgYWNjdW11bGF0
b3Iud3JhcFdpdGhOb2RlKGFuY2VzdG9yLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIGFubm90YXRlLCBh
YnNvbHV0ZVVSTHMsIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIDAsIERvZXNOb3RGdWxseVNlbGVj
dE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGVzKQogICAgICAgICAg
ICAgICAgIG5vZGVzLT5hcHBlbmQoYW5jZXN0b3IpOwpAQCAtMTA5NSw2ICsxMDUxLDI3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAgICByZXR1cm4gZnJhZ21l
bnQucmVsZWFzZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXJpYWxpemVOb2Rlc1dpdGhOYW1lc3Bh
Y2VzKE1hcmt1cEFjY3VtdWxhdG9yV3JhcHBlciYgYWNjdW11bGF0b3IsIGNvbnN0IE5vZGUqIG5v
ZGUsIE5vZGUqIG5vZGVUb1NraXAsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBFQWJzb2x1
dGVVUkxzIGFic29sdXRlVVJMcywgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRv
bWljU3RyaW5nSW1wbCo+KiBuYW1lc3BhY2VzKQoreworICAgIGlmIChub2RlID09IG5vZGVUb1Nr
aXApCisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0
b21pY1N0cmluZ0ltcGwqPiBuYW1lc3BhY2VIYXNoOworICAgIGlmIChuYW1lc3BhY2VzKQorICAg
ICAgICBuYW1lc3BhY2VIYXNoID0gKm5hbWVzcGFjZXM7CisKKyAgICBpZiAoIWNoaWxkcmVuT25s
eSkKKyAgICAgICAgYWNjdW11bGF0b3IuaW5zZXJ0T3BlblRhZyhub2RlLCAwLCBEb05vdEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UsIGFic29sdXRlVVJMcywgZmFsc2UsICZuYW1lc3BhY2VIYXNoKTsK
KworICAgIGlmICghKG5vZGUtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgZG9lc0hU
TUxGb3JiaWRFbmRUYWcobm9kZSkpKSB7CisgICAgICAgIGZvciAoTm9kZSogY3VycmVudCA9IG5v
ZGUtPmZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgICAgICBzZXJpYWxpemVOb2Rlc1dpdGhOYW1lc3BhY2VzKGFjY3VtdWxhdG9y
LCBjdXJyZW50LCBub2RlVG9Ta2lwLCBJbmNsdWRlTm9kZSwgYWJzb2x1dGVVUkxzLCAmbmFtZXNw
YWNlSGFzaCk7CisgICAgfQorCisgICAgaWYgKCFjaGlsZHJlbk9ubHkpCisgICAgICAgIGFjY3Vt
dWxhdG9yLmluc2VydEVuZFRhZyhub2RlKTsKK30KKwogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25z
dCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgVmVjdG9yPE5vZGUqPiog
bm9kZXMsIEVBYnNvbHV0ZVVSTHMgYWJzb2x1dGVVUkxzKQogewogICAgIGlmICghbm9kZSkKQEAg
LTExMDcsOSArMTA4NCw5IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwg
RUMKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAKLSAgICBNYXJrdXBBY2N1bXVsYXRv
ciBhY2N1bXVsYXRvcihkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50LCBub2Rlcyk7Ci0gICAg
YWNjdW11bGF0b3IuYXBwZW5kTWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBjaGlsZHJl
bk9ubHksIGFic29sdXRlVVJMcyk7Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yLnRha2VSZXN1bHQo
KTsKKyAgICBNYXJrdXBBY2N1bXVsYXRvcldyYXBwZXIgYWNjdW11bGF0b3Iobm9kZXMpOworICAg
IHNlcmlhbGl6ZU5vZGVzV2l0aE5hbWVzcGFjZXMoYWNjdW11bGF0b3IsIG5vZGUsIGRlbGV0ZUJ1
dHRvbkNvbnRhaW5lckVsZW1lbnQsIGNoaWxkcmVuT25seSwgYWJzb2x1dGVVUkxzLCAwKTsKKyAg
ICByZXR1cm4gYWNjdW11bGF0b3IudGFrZVJlc3VsdHMoKTsKIH0KIAogc3RhdGljIHZvaWQgZmls
bENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25zdCBTdHJp
bmcmIHN0cmluZykK
</data>
<flag name="review"
          id="52647"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>