<?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>28688</bug_id>
          
          <creation_ts>2009-08-24 15:01:59 -0700</creation_ts>
          <short_desc>REGRESSION(r24994): Cannot create a frame with a javascript URL</short_desc>
          <delta_ts>2009-08-24 17:08:37 -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>WebCore JavaScript</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>abarth</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142424</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 15:01:59 -0700</bug_when>
    <thetext>The following works in other engines, but doesn&apos;t work in WebKit:

    var ifr = document.createElement(&quot;iframe&quot;);
    ifr.setAttribute(&quot;src&quot;, &quot;javascript:&apos;PASS&apos;&quot;);
    document.body.appendChild(ifr);

This regressed in &lt;http://trac.webkit.org/changeset/24994&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142425</commentid>
    <comment_count>1</comment_count>
      <attachid>38501</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 15:03:52 -0700</bug_when>
    <thetext>Created attachment 38501
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142428</commentid>
    <comment_count>2</comment_count>
      <attachid>38501</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-24 15:14:44 -0700</bug_when>
    <thetext>Comment on attachment 38501
proposed fix

There are a few more case this probably needs to patch.  See JSHTMLIFrameElementCustom.cpp, JSHTMLFrameElementCustom.cpp and JSAttrCustom.cpp.  There may be more I am missing, so it is probably best to go back to the initial checkin and see what we did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142430</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-24 15:28:03 -0700</bug_when>
    <thetext>Why isn&apos;t checkNodeSecurity passing?  If it&apos;s a blank document, it should inherit its SecurityOrigin from its parent...  Maybe the issue is that it isn&apos;t attached yet?

We should test document.writing into the detached blank frame as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142441</commentid>
    <comment_count>4</comment_count>
      <attachid>38505</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 16:26:09 -0700</bug_when>
    <thetext>Created attachment 38505
fix more copy/paste checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142444</commentid>
    <comment_count>5</comment_count>
      <attachid>38507</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 16:29:49 -0700</bug_when>
    <thetext>Created attachment 38507
remove unrelated changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142452</commentid>
    <comment_count>6</comment_count>
      <attachid>38507</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-24 16:37:31 -0700</bug_when>
    <thetext>Comment on attachment 38507
remove unrelated changes

&gt; -            if (!checkNodeSecurity(exec, static_cast&lt;HTMLFrameElementBase*&gt;(ownerElement)-&gt;contentDocument()))
&gt; +            HTMLFrameElementBase* frameElement = static_cast&lt;HTMLFrameElementBase*&gt;(ownerElement);
&gt; +            if (frameElement-&gt;contentDocument() &amp;&amp; !checkNodeSecurity(exec, frameElement-&gt;contentDocument()))
&gt;                  return;

I think it would be better to put the contentDocument into a local variable instead of the frame.

&gt;          HTMLFrameElementBase* frame = static_cast&lt;HTMLFrameElementBase*&gt;(element);
&gt; -        if (!checkNodeSecurity(exec, frame-&gt;contentDocument()))
&gt; +        if (frame-&gt;contentDocument() &amp;&amp; !checkNodeSecurity(exec, frame-&gt;contentDocument()))
&gt;              return false;

Ditto.

&gt; -        if (!checkNodeSecurity(exec, imp-&gt;contentDocument()))
&gt; +        if (imp-&gt;contentDocument() &amp;&amp; !checkNodeSecurity(exec, imp-&gt;contentDocument()))
&gt;              return false;

I think this might read slightly better if the contentDocument was in a local variable. I had trouble seeing the relationship between the two.

&gt; -        if (!checkNodeSecurity(exec, imp-&gt;contentDocument()))
&gt; +        if (imp-&gt;contentDocument() &amp;&amp; !checkNodeSecurity(exec, imp-&gt;contentDocument()))
&gt;              return;

Ditto.

It would be better if there was some shared code rather than this null check having to be everywhere. Maybe a checkDocumentSecurity function that takes a HTMLFrameElementBase* or Document*?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142455</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 16:43:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why isn&apos;t checkNodeSecurity passing?  If it&apos;s a blank document, it should
&gt; inherit its SecurityOrigin from its parent...

There is no document in this case yet (hence the added null checks). Sam actually wonders if &quot;node &amp;&amp;&quot; in checkNodeSecurity() is doing what it&apos;s supposed to do.

&gt; We should test document.writing into the detached blank frame as well.

This sounds like something that&apos;s at best tangentially related to this bug to me (I&apos;m also not sure what to document.write).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142456</commentid>
    <comment_count>8</comment_count>
      <attachid>38507</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-24 16:47:30 -0700</bug_when>
    <thetext>Comment on attachment 38507
remove unrelated changes

This seems fine, but we really should come back to this at some point to address the horribly named checkNodeSecurity (My first attempt at a better name is allowsAccessForNode, which kind of still sucks). It is unclear why the current implementation returns false for null nodes, but I am concerned of the ramifications of changing that without more thought. r=me, but please look into Adam&apos;s concern about document.write() if you are able to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142457</commentid>
    <comment_count>9</comment_count>
      <attachid>38507</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-24 16:48:36 -0700</bug_when>
    <thetext>Comment on attachment 38507
remove unrelated changes

This seems fine, but we really should come back to this at some point to address the horribly named checkNodeSecurity (My first attempt at a better name is allowsAccessForNode, which kind of still sucks). It is unclear why the current implementation returns false for null nodes, but I am concerned of the ramifications of changing that without more thought. r=me, but please look into Adam&apos;s concern about document.write() if you are able to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142458</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-24 16:49:08 -0700</bug_when>
    <thetext>I also want to note that the test probably doesn&apos;t need to be in http</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142461</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-24 16:51:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; There is no document in this case yet (hence the added null checks). Sam
&gt; actually wonders if &quot;node &amp;&amp;&quot; in checkNodeSecurity() is doing what it&apos;s
&gt; supposed to do.

I see.  I think you&apos;re right that this is secure, but reasoning that out is
quite complicated.  I need to spend some more time thinking about the security
model of detached frames.  For example, do they have window objects?  Can their
window objects become visible to other origins?

I don&apos;t think we need to answer those questions before moving forward with this
patch though.

&gt; This sounds like something that&apos;s at best tangentially related to this bug to
&gt; me (I&apos;m also not sure what to document.write).

I think it&apos;s fine to look into this in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142465</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 17:08:37 -0700</bug_when>
    <thetext>Committed revision 47734.

&gt; I think it would be better to put the contentDocument into a local variable
&gt; instead of the frame.

Fixed.

&gt; I also want to note that the test probably doesn&apos;t need to be in http

The rest of javaScriptURL tests (as landed in r24994) are in http/security, I just wanted to have this next to them.

&gt; I need to spend some more time thinking about the security
&gt; model of detached frames.  For example, do they have window objects?

I think I see what you&apos;re saying now. My understanding is that they have both window and document objects, so this patch shouldn&apos;t have the behavior for them.

My reason to make this patch was to fix layout test in bug 28374, so I want to be done with it quickly. It indeed seems that more thought is required to verify whether checkNodeSecurity is doing the right thing - maybe a better fix would be to correct that instead.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38501</attachid>
            <date>2009-08-24 15:03:52 -0700</date>
            <delta_ts>2009-08-24 16:26:09 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>IframeSrc.txt</filename>
            <type>text/plain</type>
            <size>4166</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzczMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDgtMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Njg4CisgICAgICAgIFJF
R1JFU1NJT04ocjI0OTk0KTogQ2Fubm90IGNyZWF0ZSBhIGZyYW1lIHdpdGggYSBqYXZhc2NyaXB0
IFVSTAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9q
YXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmNwcDogKFdlYkNvcmU6OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlw
dFVSTCk6IE9taXQgdGhlIGNoZWNrcworICAgICAgICBpZiB0aGVyZSBpcyBub3QgZG9jdW1lbnQg
aW4gZnJhbWUgeWV0LgorCiAyMDA5LTA4LTI0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NzcxOSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nU3JjVG9KYXZhCiB7CiAg
ICAgaWYgKChlbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFn
TmFtZShmcmFtZVRhZykpICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSAmJiBwcm90
b2NvbElzSmF2YVNjcmlwdChkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpKSkgewogICAgICAgICBI
VE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50
QmFzZSo+KGVsZW1lbnQpOwotICAgICAgICBpZiAoIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGZy
YW1lLT5jb250ZW50RG9jdW1lbnQoKSkpCisgICAgICAgIGlmIChmcmFtZS0+Y29udGVudERvY3Vt
ZW50KCkgJiYgIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGZyYW1lLT5jb250ZW50RG9jdW1lbnQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNDc3MzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOC0yNCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2ODgK
KyAgICAgICAgUkVHUkVTU0lPTihyMjQ5OTQpOiBDYW5ub3QgY3JlYXRlIGEgZnJhbWUgd2l0aCBh
IGphdmFzY3JpcHQgVVJMCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3Jp
cHRVUkwvamF2YXNjcmlwdFVSTC1pbi1uZXctaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwt
aW4tbmV3LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0yNCAgR3VzdGF2byBOb3Jvbmhh
IFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBVbnJl
dmlld2VkLiBTa2lwIGFnYWluIHRlc3RzIHRoYXQgd2UgZW5hYmxlZCwgc2luY2UgdGhleSBhcmUK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZh
c2NyaXB0VVJMLWluLW5ldy1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWlu
LW5ldy1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFt
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IGEg
ZnJlc2hseSBjcmVhdGVkIGlmcmFtZSdzIHNyYyBjYW4gYmUgc2V0IHRvIGFueSBqYXZhc2NyaXB0
IFVSTC4KKworU1VDQ0VTUwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS1l
eHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFp
bgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2
YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2Ny
aXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAor
PGJvZHk+Cis8cD5UZXN0IHRoYXQgYSBmcmVzaGx5IGNyZWF0ZWQgaWZyYW1lJ3Mgc3JjIGNhbiBi
ZSBzZXQgdG8gYW55IGphdmFzY3JpcHQgVVJMLjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgIGlmci5zZXRBdHRyaWJ1dGUoInNyYyIsICJqYXZhc2NyaXB0OnBhcmVudC5z
dWNjZXNzKCksICdQQVNTJyIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsK
K30KKworZnVuY3Rpb24gc3VjY2VzcygpCit7CisgICAgZG9jdW1lbnQuYm9keS5yZXBsYWNlQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlNVQ0NFU1MiKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K3Rlc3QoKTsKKzwvc2NyaXB0PgorPGJvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1u
ZXctaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9o
dG1sCgo=
</data>
<flag name="review"
          id="19518"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38505</attachid>
            <date>2009-08-24 16:26:09 -0700</date>
            <delta_ts>2009-08-24 16:29:49 -0700</delta_ts>
            <desc>fix more copy/paste checks</desc>
            <filename>IframeSrc.txt</filename>
            <type>text/plain</type>
            <size>8718</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzczMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDgtMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Njg4CisgICAgICAgIFJF
R1JFU1NJT04ocjI0OTk0KTogQ2Fubm90IGNyZWF0ZSBhIGZyYW1lIHdpdGggYSBqYXZhc2NyaXB0
IFVSTAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9q
YXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNBdHRyQ3VzdG9tLmNwcDogKFdlYkNvcmU6OkpTQXR0cjo6c2V0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6IChXZWJDb3JlOjphbGxvd1NldHRpbmdT
cmNUb0phdmFzY3JpcHRVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxl
bWVudEN1c3RvbS5jcHA6IChXZWJDb3JlOjphbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDogKFdlYkNv
cmU6OkpTSFRNTElGcmFtZUVsZW1lbnQ6OnNldFNyYyk6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZSk6Cisg
ICAgICAgIE9taXQgdGhlIGNoZWNrcyBpZiB0aGVyZSBpcyBubyBkb2N1bWVudCBpbiBmcmFtZSB5
ZXQuCisKIDIwMDktMDgtMjQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdHRyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAJKHJldmlzaW9uIDQ3NzE5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F0dHJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw4IEBAIHZvaWQgSlNB
dHRyOjpzZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICBFbGVtZW50KiBvd25lckVsZW1l
bnQgPSBpbXAtPm93bmVyRWxlbWVudCgpOwogICAgIGlmIChvd25lckVsZW1lbnQgJiYgKG93bmVy
RWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFt
ZShmcmFtZVRhZykpKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpbXAtPm5hbWUo
KSwgInNyYyIpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRy
VmFsdWUpKSkgewotICAgICAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBzdGF0
aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG93bmVyRWxlbWVudCktPmNvbnRlbnREb2N1
bWVudCgpKSkKKyAgICAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlKiBmcmFtZUVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG93bmVyRWxlbWVudCk7CisgICAg
ICAgICAgICBpZiAoZnJhbWVFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKSAmJiAhY2hlY2tOb2Rl
U2VjdXJpdHkoZXhlYywgZnJhbWVFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNDc3MTkpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YQogewogICAgIGlmICgo
ZWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZnJh
bWVUYWcpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgJiYgcHJvdG9jb2xJc0ph
dmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKICAgICAgICAgSFRNTEZyYW1l
RWxlbWVudEJhc2UqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihl
bGVtZW50KTsKLSAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBmcmFtZS0+Y29u
dGVudERvY3VtZW50KCkpKQorICAgICAgICBpZiAoZnJhbWUtPmNvbnRlbnREb2N1bWVudCgpICYm
ICFjaGVja05vZGVTZWN1cml0eShleGVjLCBmcmFtZS0+Y29udGVudERvY3VtZW50KCkpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDQ3NzE5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiBzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVS
TChFeGVjU3RhdGUqIGV4ZWMsIEhUTUxGcmFtZUVsZW1lbnQqIGltcCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJM
KHZhbHVlKSkpIHsKLSAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmNv
bnRlbnREb2N1bWVudCgpKSkKKyAgICAgICAgaWYgKGltcC0+Y29udGVudERvY3VtZW50KCkgJiYg
IWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2
aXNpb24gNDc3MTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgSlNIVE1MSUZy
YW1lRWxlbWVudDo6c2V0U3JjKEV4ZWNTdGEKICAgICBTdHJpbmcgc3JjVmFsdWUgPSB2YWx1ZVRv
U3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7CiAKICAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHNyY1ZhbHVlKSkpIHsKLSAgICAgICAgaWYgKCFj
aGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSkKKyAgICAgICAg
aWYgKGltcC0+Y29udGVudERvY3VtZW50KCkgJiYgIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGlt
cC0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAkocmV2aXNpb24gNDc3MTkpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw4ICsyNTUsOSBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpzaG91bGRMb2FkUmVzCiAgICAgaWYgKCFjYWNoZSB8fCAhY2Fj
aGUtPmlzQ29tcGxldGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gSWYgdGhl
IHJlc291cmNlIGlzIG5vdCBhIEhUVFAvSFRUUFMgR0VULCB0aGVuIGFib3J0Ci0gICAgaWYgKCFB
cHBsaWNhdGlvbkNhY2hlOjpyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChyZXF1ZXN0KSkKKyAgICAv
LyBJZiB0aGUgcmVzb3VyY2UgaXMgbm90IHRvIGJlIGZldGNoZWQgdXNpbmcgdGhlIEhUVFAgR0VU
IG1lY2hhbmlzbSBvciBlcXVpdmFsZW50LCBvciBpZiBpdHMgVVJMIGhhcyBhIGRpZmZlcmVudAor
ICAgIC8vIDxzY2hlbWU+IGNvbXBvbmVudCB0aGFuIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSdzIG1h
bmlmZXN0LCB0aGVuIGZldGNoIHRoZSByZXNvdXJjZSBub3JtYWxseS4KKyAgICBpZiAoIUFwcGxp
Y2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpIHx8ICFlcXVhbEln
bm9yaW5nQ2FzZShyZXF1ZXN0LnVybCgpLnByb3RvY29sKCksIGNhY2hlLT5tYW5pZmVzdFJlc291
cmNlKCktPnVybCgpLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBJZiB0aGUgcmVzb3VyY2UncyBVUkwgaXMgYW4gbWFzdGVyIGVudHJ5LCB0aGUgbWFuaWZlc3Qs
IGFuIGV4cGxpY2l0IGVudHJ5LCBvciBhIGZhbGxiYWNrIGVudHJ5CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA0NzczMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDA5LTA4LTI0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY4OAorICAgICAgICBSRUdSRVNT
SU9OKHIyNDk5NCk6IENhbm5vdCBjcmVhdGUgYSBmcmFtZSB3aXRoIGEgamF2YXNjcmlwdCBVUkwK
KworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0
VVJMLWluLW5ldy1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1uZXctaWZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDA5LTA4LTI0ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZv
Lm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFNraXAgdGhlIGNvcnJlY3QgdGVz
dCAobWVkaWEvdmlkZW8tY3VycmVudFRpbWUtc2V0Lmh0bWwsIG5vdApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3
LWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1uZXctaWZyYW1lLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgYSBmcmVzaGx5IGNyZWF0ZWQg
aWZyYW1lJ3Mgc3JjIGNhbiBiZSBzZXQgdG8gYW55IGphdmFzY3JpcHQgVVJMLgorCitTVUNDRVNT
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ph
dmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1uZXctaWZyYW1lLWV4cGVjdGVkLnR4dApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1uZXctaWZyYW1lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFz
Y3JpcHRVUkwtaW4tbmV3LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlm
cmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8Ym9keT4KKzxwPlRlc3Qg
dGhhdCBhIGZyZXNobHkgY3JlYXRlZCBpZnJhbWUncyBzcmMgY2FuIGJlIHNldCB0byBhbnkgamF2
YXNjcmlwdCBVUkwuPC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZy
LnNldEF0dHJpYnV0ZSgic3JjIiwgImphdmFzY3JpcHQ6cGFyZW50LnN1Y2Nlc3MoKSwgJ1BBU1Mn
Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworCisgICAgaWZyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyLnNldEF0dHJpYnV0ZU5TKG51
bGwsICJzcmMiLCAiamF2YXNjcmlwdDpwYXJlbnQuc3VjY2VzcygpLCAnUEFTUyciKTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcik7CisKKyAgICBpZnIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnIuc3JjID0gImphdmFzY3JpcHQ6cGFyZW50LnN1
Y2Nlc3MoKSwgJ1BBU1MnIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcik7CisK
KyAgICBpZnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICB2YXIgYXR0
ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgic3JjIik7CisgICAgYXR0ci52YWx1ZSA9ICJq
YXZhc2NyaXB0OnBhcmVudC5zdWNjZXNzKCksICdQQVNTJyI7CisgICAgaWZyLnNldEF0dHJpYnV0
ZU5vZGUoYXR0cik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworCisgICAg
aWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgYXR0ciA9IGRvY3Vt
ZW50LmNyZWF0ZUF0dHJpYnV0ZSgic3JjIik7CisgICAgaWZyLnNldEF0dHJpYnV0ZU5vZGUoYXR0
cik7CisgICAgYXR0ci52YWx1ZSA9ICJqYXZhc2NyaXB0OnBhcmVudC5zdWNjZXNzKCksICdQQVNT
JyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworfQorCit2YXIgdGVzdHNM
ZWZ0ID0gNTsKKworZnVuY3Rpb24gc3VjY2VzcygpCit7CisgICAgaWYgKCEtLXRlc3RzTGVmdCkg
eworICAgICAgICBkb2N1bWVudC5ib2R5LnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiU1VDQ0VTUyIpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilb
MF0pOworICAgICAgICB3aGlsZSAoaWZyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImlmcmFtZSIpWzBdKQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnIp
OworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKwordGVzdCgpOwor
PC9zY3JpcHQ+Cis8Ym9keT4KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFt
ZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38507</attachid>
            <date>2009-08-24 16:29:49 -0700</date>
            <delta_ts>2009-08-24 16:48:36 -0700</delta_ts>
            <desc>remove unrelated changes</desc>
            <filename>IframeSrc.txt</filename>
            <type>text/plain</type>
            <size>7570</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzczMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDgtMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Njg4CisgICAgICAgIFJF
R1JFU1NJT04ocjI0OTk0KTogQ2Fubm90IGNyZWF0ZSBhIGZyYW1lIHdpdGggYSBqYXZhc2NyaXB0
IFVSTAorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9q
YXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNBdHRyQ3VzdG9tLmNwcDogKFdlYkNvcmU6OkpTQXR0cjo6c2V0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6IChXZWJDb3JlOjphbGxvd1NldHRpbmdT
cmNUb0phdmFzY3JpcHRVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxl
bWVudEN1c3RvbS5jcHA6IChXZWJDb3JlOjphbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDogKFdlYkNv
cmU6OkpTSFRNTElGcmFtZUVsZW1lbnQ6OnNldFNyYyk6CisgICAgICAgIE9taXQgdGhlIGNoZWNr
cyBpZiB0aGVyZSBpcyBubyBkb2N1bWVudCBpbiBmcmFtZSB5ZXQuCisKIDIwMDktMDgtMjQgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAJKHJldmlz
aW9uIDQ3NzE5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw4IEBAIHZvaWQgSlNBdHRyOjpzZXRWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEoKICAgICBFbGVtZW50KiBvd25lckVsZW1lbnQgPSBpbXAtPm93bmVyRWxlbWVu
dCgpOwogICAgIGlmIChvd25lckVsZW1lbnQgJiYgKG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShp
ZnJhbWVUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShmcmFtZVRhZykpKSB7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpbXAtPm5hbWUoKSwgInNyYyIpICYmIHByb3RvY29s
SXNKYXZhU2NyaXB0KGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyVmFsdWUpKSkgewotICAgICAgICAg
ICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVt
ZW50QmFzZSo+KG93bmVyRWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgpKSkKKyAgICAgICAgICAg
IEhUTUxGcmFtZUVsZW1lbnRCYXNlKiBmcmFtZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRnJh
bWVFbGVtZW50QmFzZSo+KG93bmVyRWxlbWVudCk7CisgICAgICAgICAgICBpZiAoZnJhbWVFbGVt
ZW50LT5jb250ZW50RG9jdW1lbnQoKSAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgZnJhbWVF
bGVtZW50LT5jb250ZW50RG9jdW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gNDc3MTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGFsbG93U2V0dGluZ1NyY1RvSmF2YQogewogICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShp
ZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpKSAmJiBlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAic3JjIikgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBh
cnNlVVJMKHZhbHVlKSkpIHsKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lID0g
c3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihlbGVtZW50KTsKLSAgICAgICAgaWYg
KCFjaGVja05vZGVTZWN1cml0eShleGVjLCBmcmFtZS0+Y29udGVudERvY3VtZW50KCkpKQorICAg
ICAgICBpZiAoZnJhbWUtPmNvbnRlbnREb2N1bWVudCgpICYmICFjaGVja05vZGVTZWN1cml0eShl
eGVjLCBmcmFtZS0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ3NzE5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBzdGF0aWMg
aW5saW5lIGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTChFeGVjU3RhdGUqIGV4ZWMsIEhU
TUxGcmFtZUVsZW1lbnQqIGltcCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAocHJv
dG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKLSAgICAgICAg
aWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSkKKyAg
ICAgICAgaWYgKGltcC0+Y29udGVudERvY3VtZW50KCkgJiYgIWNoZWNrTm9kZVNlY3VyaXR5KGV4
ZWMsIGltcC0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
SUZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNDc3MTkpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgSlNIVE1MSUZyYW1lRWxlbWVudDo6c2V0U3JjKEV4
ZWNTdGEKICAgICBTdHJpbmcgc3JjVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhl
eGVjLCB2YWx1ZSk7CiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBh
cnNlVVJMKHNyY1ZhbHVlKSkpIHsKLSAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVj
LCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSkKKyAgICAgICAgaWYgKGltcC0+Y29udGVudERvY3Vt
ZW50KCkgJiYgIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+Y29udGVudERvY3VtZW50KCkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDc3MzMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAwOS0wOC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2ODgKKyAgICAgICAgUkVHUkVTU0lPTihyMjQ5
OTQpOiBDYW5ub3QgY3JlYXRlIGEgZnJhbWUgd2l0aCBhIGphdmFzY3JpcHQgVVJMCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1pbi1u
ZXctaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS5odG1sOiBBZGRl
ZC4KKwogMjAwOS0wOC0yNCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3Jvbmhh
QGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBTa2lwIHRoZSBjb3JyZWN0IHRlc3QgKG1lZGlh
L3ZpZGVvLWN1cnJlbnRUaW1lLXNldC5odG1sLCBub3QKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2Ny
aXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IGEgZnJlc2hseSBjcmVhdGVkIGlmcmFtZSdz
IHNyYyBjYW4gYmUgc2V0IHRvIGFueSBqYXZhc2NyaXB0IFVSTC4KKworU1VDQ0VTUwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0
VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS1leHBlY3RlZC50eHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2Ny
aXB0VVJML2phdmFzY3JpcHRVUkwtaW4tbmV3LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJM
LWluLW5ldy1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgYSBm
cmVzaGx5IGNyZWF0ZWQgaWZyYW1lJ3Mgc3JjIGNhbiBiZSBzZXQgdG8gYW55IGphdmFzY3JpcHQg
VVJMLjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFy
IGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmci5zZXRBdHRy
aWJ1dGUoInNyYyIsICJqYXZhc2NyaXB0OnBhcmVudC5zdWNjZXNzKCksICdQQVNTJyIpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsKKworICAgIGlmciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmci5zZXRBdHRyaWJ1dGVOUyhudWxsLCAic3Jj
IiwgImphdmFzY3JpcHQ6cGFyZW50LnN1Y2Nlc3MoKSwgJ1BBU1MnIik7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpZnIpOworCisgICAgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgaWZyLnNyYyA9ICJqYXZhc2NyaXB0OnBhcmVudC5zdWNjZXNzKCks
ICdQQVNTJyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworCisgICAgaWZy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgdmFyIGF0dHIgPSBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGUoInNyYyIpOworICAgIGF0dHIudmFsdWUgPSAiamF2YXNjcmlw
dDpwYXJlbnQuc3VjY2VzcygpLCAnUEFTUyciOworICAgIGlmci5zZXRBdHRyaWJ1dGVOb2RlKGF0
dHIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsKKworICAgIGlmciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGF0dHIgPSBkb2N1bWVudC5jcmVh
dGVBdHRyaWJ1dGUoInNyYyIpOworICAgIGlmci5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOworICAg
IGF0dHIudmFsdWUgPSAiamF2YXNjcmlwdDpwYXJlbnQuc3VjY2VzcygpLCAnUEFTUyciOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyKTsKK30KKwordmFyIHRlc3RzTGVmdCA9IDU7
CisKK2Z1bmN0aW9uIHN1Y2Nlc3MoKQoreworICAgIGlmICghLS10ZXN0c0xlZnQpIHsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlNV
Q0NFU1MiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdKTsKKyAg
ICAgICAgd2hpbGUgKGlmciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUi
KVswXSkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKKzwvc2NyaXB0
PgorPGJvZHk+CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWluLW5ldy1pZnJhbWUuaHRtbApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCg==
</data>
<flag name="review"
          id="19524"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>