<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Поиск в ListView]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=9052</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=9052&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Поиск в ListView».]]></description>
		<lastBuildDate>Tue, 11 Mar 2014 04:03:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80668#p80668</link>
			<description><![CDATA[<p>В очередной раз спасибо:).</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Tue, 11 Mar 2014 04:03:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80668#p80668</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80664#p80664</link>
			<description><![CDATA[<div class="codebox"><pre><code>Gui, Add, ListView, vList w300 h200 r50, FirstCol|SecondCol
Loop 50
   LV_Add(&quot;&quot;, &quot;Field1&quot;, &quot;Field2&quot;)
Gui, Show
return

F11::
   GuiControl, Focus, List
   SendInput, ^{End}
   LV_Modify(LV_GetCount(), &quot;Select&quot;)
   return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 11 Mar 2014 00:00:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80664#p80664</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80652#p80652</link>
			<description><![CDATA[<p>Только проблема в том что нужно сначала выделить строку и только потом это сработает, пробовал так:<br /></p><div class="codebox"><pre><code>LV_Modify(1, &quot;Select&quot;)
Send, ^{End}</code></pre></div><p>Но дело в том что строка выделяется серым цветом, а чтобы все работало нужно чтобы она была выделена синим цветом.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Mon, 10 Mar 2014 12:53:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80652#p80652</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80644#p80644</link>
			<description><![CDATA[<p>Всё оказалось настолько просто, спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Mon, 10 Mar 2014 07:19:59 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80644#p80644</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80629#p80629</link>
			<description><![CDATA[<div class="codebox"><pre><code>Send, ^{End}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 09 Mar 2014 19:08:09 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80629#p80629</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=80626#p80626</link>
			<description><![CDATA[<p>Доброго времени суток, вопрос относится не совсем к поиску и всё же. У меня в ListView&#039;e есть много строк и нужно каким то образом спуститься на самую нижнюю строку тем самым прокрутив весь список.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Sun, 09 Mar 2014 18:41:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=80626#p80626</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78533#p78533</link>
			<description><![CDATA[<p>Спасибо <strong>teadrinker</strong>, работает.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Thu, 26 Dec 2013 08:03:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78533#p78533</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78527#p78527</link>
			<description><![CDATA[<p>Поиск в ListView по словам с выделением и подсветкой:<br /></p><div class="codebox"><pre><code>#NoEnv
SetBatchLines, -1

#If Control := ListViewFocus()
^vk46::  ; Ctrl + F
   hWnd := WinExist(&quot;A&quot;)
   Gui, Search:Default
   Gui, +Owner%hWnd% +AlwaysOnTop
   Gui, Margin,, 10
   Gui, Add, Text, x10 y10, Текст для поиска:
   Gui, Add, Edit, x+5 yp-3 w150 h21 vEdit, % Edit
   Gui, Add, Button, x+-125 y+10 w60 h21 gGo Default, Искать
   Gui, Add, Button, x+5 yp wp hp gCancel, Отмена
   Gui, Add, Radio, % &quot;x15 yp+4 vRadio&quot; (Radio != 0 ? &quot; Checked&quot; : &quot;&quot;), Вниз
   Gui, Add, Radio, % &quot;x+5 yp&quot; (Radio = 0 ? &quot; Checked&quot; : &quot;&quot;), Вверх
   WinGetPos, X, Y,,, A
   Gui, Show, % &quot;x&quot; X + 100 &quot; y&quot; Y + 50, Поиск в ListView
   return
   
Go:
   GuiControlGet, Edit, Search:
   if (Edit = &quot;&quot;)
      Goto, Cancel
   
   ControlGet, hLv, hwnd,, % Control, ahk_id %hWnd%
   oLv := &quot;&quot;
   if !IsObject(oLv :=  New ListView(hLv, Edit))
   {
      MsgBox, 0x1030, Ошибка, Невозможно извлечь информацию из ListView!
      return
   }
   GuiControlGet, Radio, Search:
   Gui, Search:Destroy
   ControlGet, Focus, List, Count Focused,, % &quot;ahk_id&quot; oLv.h
   oFound := oLv.SearchWord(Focus, 1, Radio)
   if (oFound.state = &quot;not_found&quot;)
      DllCall(&quot;MessageBox&quot;, Ptr, oLv.h, Str, &quot;Текст &quot;&quot;&quot; Edit &quot;&quot;&quot; не найден!&quot;, Str, &quot;Не найдено&quot;, UInt, 0x30)
   else if (oFound.state = &quot;found&quot;)
   {
      CurrentRow := oFound.row, CurrentCol := oFound.col
      oLv.SetSel(CurrentRow), oLv.Highlight(CurrentRow, CurrentCol)
      Hotkey, If, % ListViewFocus()
      Hotkey, F3, Search, On
   }
   oFound := &quot;&quot;
   return
   
Search:
   (Radio &amp;&amp; ++CurrentCol &gt; oLv.CountCol) ? (CurrentCol := 1, ++CurrentRow)
   (!Radio &amp;&amp; --CurrentCol = 0) ? (CurrentCol := oLv.CountCol, --CurrentRow)
   
   oFound := oLv.SearchWord(CurrentRow, CurrentCol, Radio)
   if (oFound.state != &quot;found&quot;)
      Return 
   
   CurrentRow := oFound.row, CurrentCol := oFound.col
   oLv.SetSel(CurrentRow), oLv.Highlight(CurrentRow, CurrentCol)
   return
   
SearchGuiClose:
SearchGuiEscape:
Cancel:
   Gui, Search:Destroy
   return

Class ListView
{
   __New(hListView, word)
   {
      ControlGet, CountCol, List, Count Col,, ahk_id %hListView%
      if !CountCol
         Return &quot;&quot;
      
      WinGet, PID, PID, ahk_id %hListView%
      this.h := hListView
      this.pid := PID
      this.comp := this.CompareCapacity(PID)
      this.CountCol := CountCol
      this.word := word
   }
   
   CompareCapacity(PID)
   {
      if !A_Is64bitOS
         Return 1
      
      if !hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_QUERY_INFORMATION := 0x400, Int, 0, UInt, PID, Ptr)
         Return

      VarSetCapacity(b, 4)
      DllCall(&quot;IsWow64Process&quot;, Ptr, hProc, Ptr, &amp;b)
      DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
      b := NumGet(b, &quot;UInt&quot;)
      
      Return ((A_PtrSize = 4 &amp;&amp; b) || (A_PtrSize = 8 &amp;&amp; !b)) ? 1 : &quot;&quot;
   }
   
   SearchWord(StartRow, StartCol, Direction)
   {
      if this.comp
         Return this.SearchViaMessage(StartRow, StartCol, Direction)
      else
         Return this.SearchViaParsing(StartRow, StartCol, Direction)
   }
   
   SearchViaMessage(StartRow, StartCol, Direction)
   {
      static found
      Direction ? (CurrentRow := StartRow-1
         , CurrentCol := StartCol-1) : (CurrentRow := StartRow+1, CurrentCol := StartCol+1)
      
      RemoteBuff := New RemoteBuffer(this.pid, (A_PtrSize = 4 ? 60 : 68) + 260*(A_IsUnicode ? 2 : 1))
      Loop
      {
         ControlGet, RowsCount, List, Count,, % &quot;ahk_id&quot; this.h
         (Direction &amp;&amp; ++CurrentRow &gt; RowsCount) ? CurrentRow := 1
         (!Direction &amp;&amp; --CurrentRow = 0) ? CurrentRow := RowsCount
         Loop
         {
            if (Direction &amp;&amp; ++CurrentCol &gt; this.CountCol &amp;&amp; !(CurrentCol := 0))
               || (!Direction &amp;&amp; --CurrentCol = 0 &amp;&amp; (CurrentCol := this.CountCol + 1))
               break
            
            Text := this.GetItemText(CurrentRow, CurrentCol, RemoteBuff)
            if ((A_IsUnicode ? RegExMatch(Text, &quot;i)(*UCP)\Q&quot; this.word &quot;\E&quot;) : InStr(Text, this.word)) &amp;&amp; found := 1)
               Return {state: &quot;found&quot;, row: CurrentRow, col: CurrentCol}
            
            if (board &amp;&amp; CurrentRow = StartRow &amp;&amp; CurrentCol = StartCol &amp;&amp; !found)
               Return {state: &quot;not_found&quot;}
            
            ((Direction &amp;&amp; CurrentRow = RowsCount &amp;&amp; CurrentCol = this.CountCol)
               || (!Direction &amp;&amp; CurrentRow = 1 &amp;&amp; CurrentCol = 1)) ? board := 1
            (CurrentRow = StartRow &amp;&amp; CurrentCol = StartCol) ? found := &quot;&quot;
         }
      }
   }
   
   SearchViaParsing(StartRow, StartCol, Direction)
   {
      static found, FirstItem
      
      StartIndex := StartRow * this.CountCol + StartCol
      ControlGet, Content, List,,, % &quot;ahk_id&quot; this.h
      Loop, parse, Content, `n
      {
         CurrentRow := A_Index
         Loop, parse, A_LoopField, % A_Tab
         {
            CurrentIndex := CurrentRow * this.CountCol + A_Index
            if (!WaitingNear &amp;&amp; (A_IsUnicode ? RegExMatch(A_LoopField, &quot;i)(*UCP)\Q&quot; this.word &quot;\E&quot;) : InStr(A_LoopField, this.word)))
               LastItem := CurrentIndex, !found ? (FirstItem := CurrentIndex, found := 1)
            
            if (CurrentIndex = StartIndex)
            {
               if (!Direction &amp;&amp; found &amp;&amp; !(found := 0))
                  Return this.CreateFromIndex(LastItem)
               Direction ? WaitingNear := 1
            }
               
            if (WaitingNear 
               &amp;&amp; (A_IsUnicode ? RegExMatch(A_LoopField, &quot;i)(*UCP)\Q&quot; this.word &quot;\E&quot;) : InStr(A_LoopField, this.word))
               &amp;&amp; !(found := 0))
               Return this.CreateFromIndex(CurrentIndex)
         }
      }
      if !found
         Return {state: &quot;not_found&quot;}
      else if !(found := 0)
         Return this.CreateFromIndex(Direction ? FirstItem : LastItem)
   }
   
   CreateFromIndex(idx)
   {
      i := idx//this.CountCol, m := Mod(idx, this.CountCol)
      Return {state: &quot;found&quot;, row: m ? i : i - 1, col: m ? m : this.CountCol}
   }
   
   GetItemText(item, col, RemoteBuff)
   {
      static LVIF_TEXT := 1, LVM_GETITEM := (A_IsUnicode ? 0x104B : 0x1005), LVITEM_SIZE := A_PtrSize = 4 ? 60 : 68
      
      VarSetCapacity(LVITEM, LVITEM_SIZE)
      NumPut(LVIF_TEXT, LVITEM, &quot;UInt&quot;)
      NumPut(item-1, LVITEM, 4, &quot;Int&quot;)
      NumPut(col-1, LVITEM, 8, &quot;Int&quot;)
      NumPut(RemoteBuff.Ptr + LVITEM_SIZE, LVITEM, 16 + A_PtrSize, &quot;Ptr&quot;)
      NumPut(260, LVITEM, 16 + A_PtrSize*2, &quot;Int&quot;)
         
      RemoteBuff.Write(&amp;LVITEM, LVITEM_SIZE)
      SendMessage, LVM_GETITEM, 0, RemoteBuff.Ptr,, % &quot;ahk_id&quot; this.h
      Return StrGet(RemoteBuff.Read(260*(A_IsUnicode ? 2 : 1), LVITEM_SIZE))
   }
   
   SetSel(row)
   {
      static LVIS_FOCUSED := 1, LVIS_SELECTED := 2, LVM_SETITEMSTATE := 0x102B, LVM_ENSUREVISIBLE := 0x1013

      VarSetCapacity(LVITEM, LVITEM_SIZE := A_PtrSize = 4 ? 60 : 68)
      NumPut(LVIS_FOCUSED | LVIS_SELECTED, LVITEM, 12)
      NumPut(LVIS_FOCUSED | LVIS_SELECTED, LVITEM, 16)
      
      RemoteBuff := New RemoteBuffer(this.pid, LVITEM_SIZE)
      RemoteBuff.Write(&amp;LVITEM, LVITEM_SIZE)

      SendMessage, LVM_ENSUREVISIBLE, row - 1,,, % &quot;ahk_id&quot; this.h
      SendMessage, LVM_SETITEMSTATE, row - 1, RemoteBuff.Ptr,, % &quot;ahk_id&quot; this.h
   }
   
   Highlight(row, col)
   {
      static counter
      counter := 0, th := 3  ; толщина рамки
      Gui, Highlighting:Default
      Gui, Destroy
      
      VarSetCapacity(Init, 4)
      NumPut(col = 1 ? 1 : col - 1, Init, &quot;UInt&quot;)
      RemoteBuff := New RemoteBuffer(this.pid, 16)
      RemoteBuff.Write(&amp;Init, 4, 4)
      SendMessage, LVM_GETSUBITEMRECT := 0x1038, row - 1, RemoteBuff.Ptr,, % &quot;ahk_id&quot; this.h
      pAddr := RemoteBuff.Read(16)
      l := NumGet(pAddr+0, &quot;UInt&quot;), t := NumGet(pAddr+0, 4, &quot;UInt&quot;)
      r := NumGet(pAddr+0, 8, &quot;UInt&quot;), b := NumGet(pAddr+0, 12, &quot;UInt&quot;)
      RemoteBuff := &quot;&quot;
      (col = 1) ? (lprev := l, l := 0, r := lprev)
      WinGetPos, X, Y,,, % &quot;ahk_id&quot; this.h
      
      Gui, % &quot;-Caption +ToolWindow +Owner&quot; this.h &quot; +hwndhGui&quot;
      Gui, Color, Red
      Gui, Show, % &quot;x&quot; X + l + 1 &quot; y&quot; Y + t + 2 &quot; w&quot; (w := r - l) &quot; h&quot; (h := b - t) &quot; Hide&quot;
      Prev_DHW := A_DetectHiddenWindows
      DetectHiddenWindows, On
      WinSet, Region, %    &quot;0-0 &quot;             w &quot;-0 &quot;                w &quot;-&quot; h                 &quot; 0-&quot; h             &quot; 0-0 &quot; 
                       . th &quot;-&quot; th   &quot; &quot;   w - th &quot;-&quot; th   &quot; &quot;   w - th &quot;-&quot; h - th   &quot; &quot;   th &quot;-&quot; h - th   &quot; &quot;   th &quot;-&quot; th
                       , ahk_id %hGui%
      DetectHiddenWindows, %Prev_DHW%
      Gui, Show, NA
      SetTimer, Flashing, 300
      return
      
   Flashing:
      Gui, Highlighting:Default
      if (++counter = 1)
         Gui, Show, Hide
      if (counter = 2)
         Gui, Show, NA
      if (counter = 3)
      {
         Gui, Destroy
         SetTimer, Flashing, Off
      }
      return
   }
}   
   
Class RemoteBuffer
{
   __New(PID, size)
   {
      static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20, PROCESS_VM_READ := 0x10
         , MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x4
      
      if !(this.hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr))
         Return &quot;&quot;
      
      if !(this.ptr := DllCall(&quot;VirtualAllocEx&quot;, UInt, this.hProc, UInt, 0, UInt, size, UInt, MEM_COMMIT, UInt, PAGE_READWRITE, Ptr))
         Return &quot;&quot;
      
      this.size := size
   }
   
   __Delete()
   {
      DllCall(&quot;VirtualFreeEx&quot;, Ptr, this.hProc, Ptr, this.ptr, UInt, 0, UInt, MEM_RELEASE := 0x8000)
      DllCall(&quot;CloseHandle&quot;, Ptr, this.hProc)
   }
   
   Read(size, offset = 0)
   {
      static LocalBuff
      VarSetCapacity(LocalBuff, s := (size &gt; (s := this.size - offset) ? s : size), 0)
      DllCall(&quot;ReadProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, &amp;LocalBuff, UInt, s, UInt, 0)
      VarSetCapacity(LocalBuff, -1)
      Return &amp;LocalBuff
   }
   
   Write(pLocalBuff, size, offset = 0)
   {
      return DllCall(&quot;WriteProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, pLocalBuff, UInt, size, UInt, 0)
   }
}

ListViewFocus()
{
   ControlGetFocus, Control, A
   if InStr(Control, &quot;SysListView32&quot;) &amp;&amp; !WinExist(&quot;Поиск в ListView&quot;)
      return Control
}</code></pre></div><p>Контрол ListView должен быть в фокусе. Ctrl+F, далее F3. В ANSI-версии кириллица регистрозависима.<br />Если не будет дополнений, добавлю в Коллекцию.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 25 Dec 2013 21:35:00 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78527#p78527</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78416#p78416</link>
			<description><![CDATA[<p>Так о глупом сносе и речь.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 22 Dec 2013 13:29:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78416#p78416</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78415#p78415</link>
			<description><![CDATA[<p>На AHK сносить систему глупо, для этого есть более мощные языки.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:45:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78415#p78415</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78411#p78411</link>
			<description><![CDATA[<p>Когда пишешь скрипт, желательно представлять что он делает, а то, не ровен час, можно и систему снести.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:16:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78411#p78411</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78410#p78410</link>
			<description><![CDATA[<p>Я писал.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:11:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78410#p78410</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78409#p78409</link>
			<description><![CDATA[<p>Так скрипт-то кто писал?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:09:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78409#p78409</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78408#p78408</link>
			<description><![CDATA[<p>Я уже немного запутался если честно, но он походу ищет на рабочем столе.</p>]]></description>
			<author><![CDATA[null@example.com (sergeiplugatyr)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:08:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78408#p78408</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск в ListView]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=78407#p78407</link>
			<description><![CDATA[<p>У меня ничего не ищет. Загружаю файлы с рабочего стола. Один из них — desktop.ini. Как мне его найти в списке?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Dec 2013 12:07:17 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=78407#p78407</guid>
		</item>
	</channel>
</rss>
