<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rel=me &#187; Flash</title>
	<atom:link href="http://rel.me/c/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://rel.me</link>
	<description>programming, objective-c, cocoa, iphone, c</description>
	<lastBuildDate>Mon, 02 Aug 2010 20:09:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Font detection with Javascript and Flash</title>
		<link>http://rel.me/2008/06/26/font-detection-with-javascript-and-flash/</link>
		<comments>http://rel.me/2008/06/26/font-detection-with-javascript-and-flash/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 22:08:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[fonts]]></category>

		<guid isPermaLink="false">/2008/06/26/font-detection-with-javascript-and-flash</guid>
		<description><![CDATA[I was playing around with jquery and I wanted to see if it was possible to generate a cheat sheet of all the fonts on your system. Its also a good run through of how to load a SWF with a callback. View a demo (Though, its possible it might not work) The steps I [...]]]></description>
			<content:encoded><![CDATA[<p>I was playing around with jquery and I wanted to see if it was possible to generate a cheat sheet of all the fonts on your system. Its also a good run through of how to load a SWF with a callback.</p>
<p><img src="http://font-detect.s3.amazonaws.com/font-detect.png" alt="" width="583" height="335" /></p>
<p><a href="http://font-detect.s3.amazonaws.com/index.html">View a demo</a> (Though, its possible it might not <a href="http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png">work</a>)</p>
<p>The steps I used to generate this are:</p>
<ul>
<li>Load SWF</li>
<li>Javascript calls to Actionscript fonts() method via <code>ExternalInterface</code></li>
<li>Get the list of system fonts in Flash via <code>Font.enumerateFonts(true)</code></li>
<li>Curse Flash for giving you a list of font names, where half of them are garbage.</li>
<li>For each font name, in javascript, create a test which adds a DOM element temporarily with a fallback font family set. For example, <code>font-family: 'Apple Garamond Pro', 'Times New Roman';</code>, where Times New Roman is your fallback.</li>
<li>Then check the actual width (via offsetWidth). If it does not match the offsetWidth of the fallback font, then we know it rendered ok. (The original idea is from <a href="http://www.lalit.org/lab/javascript-css-font-detect">http://www.lalit.org/lab/javascript-css-font-detect</a>)</li>
</ul>
<p>The only caveat is, if the actual font width and the fallback font width do match, then you would have a false negative. So its not bulletproof.</p>
<p>The actionscript to enumerate the fonts and call back out is pretty simple:<br />
<script src="http://gist.github.com/138691.js"></script><br />
Expose the method in the constructor using ExternalInterface:<br />
<script src="http://gist.github.com/138692.js"></script><br />
<a href="http://github.com/gabriel/font-detect-js/tree/master/flash/src/FontList.as">FontList.as</a></p>
<p>I used swfobject to load the SWF. Also be sure to enable <code>allowScriptAccess</code>.</p>
<p>The javascript to test the fonts is at: <a href="http://github.com/gabriel/font-detect-js/tree/master/javascripts/font-detect.js">font-detect.js</a></p>
<p>You can use it by including:</p>
<p><script src="http://gist.github.com/138690.js"></script></p>
<p>In the end, I don&#8217;t think this is useful in practice, but I thought I would share anyway. Its on <a href="http://github.com/gabriel/font-detect-js/tree/master">github</a> too.</p>
<p><strong>Updated:</strong> Now uses call straight to actionscript, doesn&#8217;t marshall JSON first so its much faster, and other refactoring.</p>
]]></content:encoded>
			<wfw:commentRss>http://rel.me/2008/06/26/font-detection-with-javascript-and-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Memory usage during file upload in AIR</title>
		<link>http://rel.me/2008/03/29/memory-usage-during-file-upload-in-air/</link>
		<comments>http://rel.me/2008/03/29/memory-usage-during-file-upload-in-air/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 00:47:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">/2008/03/29/memory-usage-during-file-upload-in-air</guid>
		<description><![CDATA[Uploading files in AIR is a little bit problematic these days. Here is the code: &#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&#62; &#60;mx:WindowedApplication xmlns:mx=&#34;http://www.adobe.com/2006/mxml&#34; layout=&#34;absolute&#34; showStatusBar=&#34;false&#34; initialize=&#34;onInitialize(event)&#34;&#62; &#160; &#60;mx:Script&#62; &#60;!&#91;CDATA&#91; &#160; import com.rwnage.s3.service.S3PostOptions; import flash.events.Event; &#160; public function onInitialize&#40;event:Event&#41;:void &#123; var accessKey:String = &#34;0RXZ3R7Y034PA8VGNWR2&#34;; var bucketName:String = &#34;rwnage_test&#34;; var objectName:String = &#34;test_file&#34;; var contentType:String = &#34;application/octet-stream&#34;; var secretAccessKey:String = [...]]]></description>
			<content:encoded><![CDATA[<p>Uploading files in AIR is a little bit problematic these days.</p>
<p>Here is the code:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span class="sy0">&lt;</span>?<span class="kw3">xml</span> <span class="kw3">version</span>=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span>?<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>mx:WindowedApplication xmlns:mx=<span class="st0">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span class="st0">&quot;absolute&quot;</span> showStatusBar=<span class="st0">&quot;false&quot;</span> 
  initialize=<span class="st0">&quot;onInitialize(event)&quot;</span><span class="sy0">&gt;</span>  
&nbsp;
  <span class="sy0">&lt;</span>mx:Script<span class="sy0">&gt;</span>
    <span class="sy0">&lt;!</span><span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span>
&nbsp;
      <span class="kw3">import</span> com.<span class="me1">rwnage</span>.<span class="me1">s3</span>.<span class="me1">service</span>.<span class="me1">S3PostOptions</span>;
      <span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;
&nbsp;
      <span class="kw3">public</span> <span class="kw2">function</span> onInitialize<span class="br0">&#40;</span>event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> accessKey:<span class="kw3">String</span> = <span class="st0">&quot;0RXZ3R7Y034PA8VGNWR2&quot;</span>;
        <span class="kw2">var</span> bucketName:<span class="kw3">String</span> = <span class="st0">&quot;rwnage_test&quot;</span>;
        <span class="kw2">var</span> objectName:<span class="kw3">String</span> = <span class="st0">&quot;test_file&quot;</span>;
        <span class="kw2">var</span> <span class="kw3">contentType</span>:<span class="kw3">String</span> = <span class="st0">&quot;application/octet-stream&quot;</span>;
        <span class="kw2">var</span> secretAccessKey:<span class="kw3">String</span> = <span class="st0">&quot;[PUT YOUR SECRET ACCESS KEY HERE]&quot;</span>;      
&nbsp;
        <span class="kw2">var</span> postOptions:S3PostOptions = <span class="kw2">new</span> S3PostOptions<span class="br0">&#40;</span>bucketName, objectName, accessKey, 
          <span class="br0">&#123;</span> <span class="kw3">contentType</span>: <span class="kw3">contentType</span> <span class="br0">&#125;</span><span class="br0">&#41;</span>;
&nbsp;
        <span class="kw2">var</span> policy:<span class="kw3">String</span> = postOptions.<span class="me1">getPolicy</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
        <span class="kw2">var</span> signature:<span class="kw3">String</span> = postOptions.<span class="me1">getSignature</span><span class="br0">&#40;</span>secretAccessKey, policy<span class="br0">&#41;</span>;
&nbsp;
        <span class="kw3">html</span>.<span class="kw3">htmlText</span> = <span class="st0">'&lt;html&gt;&lt;body&gt; <span class="es0">\</span>
          &lt;form name=&quot;upload&quot; action=&quot;http://'</span> + bucketName + <span class="st0">'.s3.amazonaws.com/&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt; <span class="es0">\</span>
            Key to upload: &lt;input type=&quot;input&quot; name=&quot;key&quot; value=&quot;'</span> + objectName + <span class="st0">'&quot; /&gt;&lt;br /&gt; <span class="es0">\</span>
            Content-Type: &lt;input type=&quot;input&quot; name=&quot;Content-Type&quot; value=&quot;'</span> + <span class="kw3">contentType</span> + <span class="st0">'&quot; /&gt;&lt;br /&gt; <span class="es0">\</span>
            &lt;input type=&quot;hidden&quot; name=&quot;AWSAccessKeyId&quot; value=&quot;'</span> + accessKey + <span class="st0">'&quot; /&gt; <span class="es0">\</span>
            &lt;input type=&quot;hidden&quot; name=&quot;Policy&quot; value=&quot;'</span> + policy + <span class="st0">'&quot; /&gt; <span class="es0">\</span>
            &lt;input type=&quot;hidden&quot; name=&quot;Signature&quot; value=&quot;'</span> + signature + <span class="st0">'&quot; /&gt; <span class="es0">\</span>
            File: &lt;input type=&quot;file&quot; name=&quot;file&quot; /&gt; &lt;br /&gt; <span class="es0">\</span>
            &lt;!-- The elements after this will be ignored --&gt; <span class="es0">\</span>
            &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Upload to Amazon S3&quot; /&gt; <span class="es0">\</span>
          &lt;/form&gt;&lt;/body&gt;&lt;/html&gt;'</span>;                                                     
      <span class="br0">&#125;</span>
&nbsp;
    <span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy0">&gt;</span>
  <span class="sy0">&lt;/</span>mx:Script<span class="sy0">&gt;</span>
&nbsp;
  <span class="sy0">&lt;</span>mx:<span class="kw3">HTML</span> id=<span class="st0">&quot;html&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100%&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;100%&quot;</span> paddingLeft=<span class="st0">&quot;20&quot;</span> paddingTop=<span class="st0">&quot;20&quot;</span><span class="sy0">/&gt;</span>
&nbsp;
<span class="sy0">&lt;/</span>mx:WindowedApplication<span class="sy0">&gt;</span></pre></div></div>

<p><em>No I don&#8217;t normally use mx:script tags, its a test case.</em></p>
<p>Eventually it malloc fails and crashes. This issue is Mac only and also occurs during a FileReference (or File) <a href="http://livedocs.adobe.com/labs/flex3/langref/flash/net/FileReference.html#upload()">upload</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rel.me/2008/03/29/memory-usage-during-file-upload-in-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Actionscript splat (argument unpacking)</title>
		<link>http://rel.me/2008/02/14/actionscript-splat-argument-unpacking/</link>
		<comments>http://rel.me/2008/02/14/actionscript-splat-argument-unpacking/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 21:33:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[argument]]></category>
		<category><![CDATA[splat]]></category>
		<category><![CDATA[unpacking]]></category>

		<guid isPermaLink="false">/2008/03/18/actionscript-splat-argument-unpacking</guid>
		<description><![CDATA[In actionscript there is no splat operator or argument unpacking. In the case where you want to proxy calls to vararg methods you have to use the Function#apply() method. var array:Array = &#91;&#93;; var stuffToAdd:Array = &#91; 1, 2, 3, 4 &#93;; &#160; array.push.apply&#40;array, stuffToAdd&#41;; It would be nice to have a splat/unpack operator: array.push&#40;*stuffToAdd&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>In actionscript there is no <a href="http://redhanded.hobix.com/bits/theSiphoningSplat.html">splat operator</a> or <a href="http://docs.python.org/tut/node6.html#SECTION006740000000000000000">argument unpacking</a>.</p>
<p>In the case where you want to proxy calls to vararg methods you have to use the <a href="http://livedocs.adobe.com/labs/flex3/langref/Function.html#apply()">Function#apply()</a> method.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span class="kw2">var</span> <span class="kw3">array</span>:<span class="kw3">Array</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span>;
<span class="kw2">var</span> stuffToAdd:<span class="kw3">Array</span> = <span class="br0">&#91;</span> <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">4</span> <span class="br0">&#93;</span>;
&nbsp;
<span class="kw3">array</span>.<span class="kw3">push</span>.<span class="kw3">apply</span><span class="br0">&#40;</span><span class="kw3">array</span>, stuffToAdd<span class="br0">&#41;</span>;</pre></div></div>

<p>It would be nice to have a splat/unpack operator:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span class="kw3">array</span>.<span class="kw3">push</span><span class="br0">&#40;</span><span class="sy0">*</span>stuffToAdd<span class="br0">&#41;</span>;
<span class="co1">// Or</span>
<span class="kw3">array</span>.<span class="kw3">push</span><span class="br0">&#40;</span>... <span class="me1">stuffToAdd</span><span class="br0">&#41;</span>;</pre></div></div>

<p>The <a href="http://www.google.com/search?q=ecmascript+splat+operator">ecma mailing list</a> discussed this use of <a href="http://www.nabble.com/forum/ViewPost.jtp?post=14450724&#038;framed=y">super.apply(this, arguments)</a>. And specifically regarding argument unpacking in AS3: </p>
<blockquote><p>
We dropped this from AS3 for lack of evidence for its need.
</p></blockquote>
<p>I think any language with <tt>(... args)</tt> to <tt>Array</tt> needs the <tt>Array</tt> to <tt>(... args)</tt> if not for anything other than completeness. Does anyone know if this is planned for ES4 at least?</p>
]]></content:encoded>
			<wfw:commentRss>http://rel.me/2008/02/14/actionscript-splat-argument-unpacking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Socket output progress in AIR</title>
		<link>http://rel.me/2008/01/17/socket-output-progress-in-air/</link>
		<comments>http://rel.me/2008/01/17/socket-output-progress-in-air/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 19:22:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">/2008/03/18/socket-output-progress-in-air</guid>
		<description><![CDATA[Currently when using the flash.net.Socket api, there is no way to determine that buffered data has been written to the socket. (The flush method is non-blocking and applies only to the actionscript socket buffer). This is a follow-up to a previous post. This issue does not arise when using the new File api (and writing [...]]]></description>
			<content:encoded><![CDATA[<p>Currently when using the flash.net.Socket api, there is no way to<br />
determine that buffered data has been written to the socket. (The flush method is non-blocking and applies only to the actionscript socket buffer).</p>
<p>This is a follow-up to a <a href="http://ducktyper.com/2007/12/27/flush">previous post</a>.</p>
<p>This issue does not arise when using the new File api (and writing to<br />
files), since an event has been included in<br />
<a href="http://livedocs.adobe.com/labs/flex3/langref/flash/filesystem/FileStream.html#eventSummary">flash.filesystem.FileStream: OutputProgressEvent.OUTPUT_PROGRESS</a>
</p>
<p>If this (or a similar) event could be added to the Socket api, it<br />
would allow us to:</p>
<ul>
<li>Send large amounts of data on a socket (without causing large memory<br />
usage as data buffers in memory).</li>
<li>Measure the current progress of data being sent on the socket.</li>
</ul>
<p>We came upon this limitation from using our <a href="http://code.google.com/p/as3httpclientlib/">AS3 http client library</a>, and trying to send large<br />
files as part of a multipart upload. However this issue would arise<br />
when sending any significant amounts of data on a socket. For example, an FTP or bittorrent client would be impossible.</p>
<p>This issue has been discussed in other places, but is probably more<br />
pressing now with the AIR releases.</p>
<ul>
<li><a href="http://tech.groups.yahoo.com/group/flexcoders/message/72018">Getting progress events on Socket *write* (not read)</a></li>
<li><a href="http://www.onflex.org/ted/2007/05/flexftp-ftp-client-in-flex-using.php">FlexFTP &#8211; FTP Client in Flex using flash.net.Socket</a> (see comment by mailboo)</li>
</ul>
<p><b>Update: </b><a href="https://bugs.adobe.com/jira/browse/FP-6">Vote on this bug (FP-6)</p>
]]></content:encoded>
			<wfw:commentRss>http://rel.me/2008/01/17/socket-output-progress-in-air/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flush</title>
		<link>http://rel.me/2007/12/27/flush/</link>
		<comments>http://rel.me/2007/12/27/flush/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 05:22:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flush]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">/2008/03/04/flush</guid>
		<description><![CDATA[So I decided to try to overcome the Leopard File.upload() bug by rolling my own http client: as3httpclientlib which even supports https with the TLS (Socket) support from as3crypto (which is great). The HTTP protocol is pretty simple and I figured it would be a good way to learn the internals and look smart reading [...]]]></description>
			<content:encoded><![CDATA[<p>So I decided to try to overcome the Leopard File.upload() <a href="http://www.google.com/search?q=flash+leopard+file+upload">bug</a> by rolling my own http client: <a href="http://code.google.com/p/as3httpclientlib/">as3httpclientlib</a> which even supports https with the TLS (Socket) support from <a href="http://crypto.hurlant.com/">as3crypto</a> (which is great). The HTTP protocol is pretty simple and I figured it would be a good way to learn the internals and look smart reading ancient <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC</a>&#8216;s. All you need is a Socket class and nice, flash api has one at <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/Socket.html">flash.net.Socket<br />
</a></p>
<p>I got everything major working like GET, PUT and POST with multipart/form-data and reading chunked encoding and all that stuff. Not too hard since there are open source http libraries for every major language. I looked at ruby <a href="http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html">Net::HTTP</a> (stole some regex&#8217;s) and <a href="http://hc.apache.org/httpclient-3.x/">Apache Httpclient</a> (stole your multipart boundary).</p>
<p>I got to the point where I was testing uploading larger files, like in:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span class="kw2">var</span> client:HttpClient = <span class="kw2">new</span> HttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="kw2">var</span> uri:URI = <span class="kw2">new</span> URI<span class="br0">&#40;</span><span class="st0">&quot;http://mybucket.s3.amazonaws.com/big.mp3&quot;</span><span class="br0">&#41;</span>;
<span class="kw2">var</span> testFile:File = <span class="kw2">new</span> File<span class="br0">&#40;</span><span class="st0">&quot;app:/test/assets/big.mp3&quot;</span><span class="br0">&#41;</span>;
client.<span class="me1">upload</span><span class="br0">&#40;</span>uri, testFile<span class="br0">&#41;</span>;</pre></div></div>

<p>It turns out that when you call <tt>_socket.flush()</tt> (in <a href="http://as3httpclientlib.googlecode.com/svn/trunk/src/org/httpclient/HttpSocket.as">HttpSocket</a>) it doesn&#8217;t actually block, which you might expect. After thinking on it, this isn&#8217;t totally shocking since the whole threading model behind actionscript, you don&#8217;t really ever block (like there is no such thing as a modal dialog in flash). The problem is without blocking or an event to notify of a flush, the socket just gets filled with the request body all at once (all 800MB&#8217;s or whatever file size). </p>
<p>It turns out other people ran into this as well. If you look at (<a href="http://maliboo.pl/projects/FlexFTP/">FlexFTP</a>) source, the UploadInv.as file, you will see block of code commented out and replaced by a setInterval(.. , 300). Nice. I guess that upload is capped at ~12kb/sec.</p>
<p>Any of the links in the comments off this <a href="http://www.onflex.org/ted/2007/05/flexftp-ftp-client-in-flex-using.php">blog post</a> are useful too.</p>
<p>If you look at FileStream object you will see it has an <a href="http://livedocs.adobe.com/labs/flex3/langref/flash/filesystem/FileStream.html#event:outputProgress">outputProgressEvent</a> so that would be useful, you know, if Socket had that too.</a></p>
<p>I don&#8217;t know how you get around this issue, other than trying to guess how fast the socket can transmit and try to stay under that. So now I&#8217;m not sure what to do, other than abandon it and come back to it when its fixed, which hopefully will be soon. Thankfully, I can go back to ruby and maybe play with some <a href="http://rubycocoa.sourceforge.net/HomePage">RubyCocoa</a> or <a href="http://code.whytheluckystiff.net/shoes/">Shoes</a> framework.</p>
<p><strong>Update</strong>: Feel free to chime in at <a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&#038;catid=641&#038;threadid=1325579&#038;enterthread=y">Adobe Air Forum</a> or <a href="http://www.adobe.com/cfusion/mmform/index.cfm?name=wishform">Feature Request/Bug Report Form</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rel.me/2007/12/27/flush/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
