<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dunedb.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AVideoGallery</id>
	<title>Module:VideoGallery - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dunedb.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AVideoGallery"/>
	<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=Module:VideoGallery&amp;action=history"/>
	<updated>2026-05-24T09:23:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=882&amp;oldid=prev</id>
		<title>Operator at 21:43, 2 June 2025</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=882&amp;oldid=prev"/>
		<updated>2025-06-02T21:43:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://dunedb.com/index.php?title=Module:VideoGallery&amp;amp;diff=882&amp;amp;oldid=826&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
	<entry>
		<id>https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=826&amp;oldid=prev</id>
		<title>Operator at 03:35, 2 June 2025</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=826&amp;oldid=prev"/>
		<updated>2025-06-02T03:35:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://dunedb.com/index.php?title=Module:VideoGallery&amp;amp;diff=826&amp;amp;oldid=821&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
	<entry>
		<id>https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=821&amp;oldid=prev</id>
		<title>Operator: Created page with &quot;-- Module:VideoGallery -- Handles video gallery display with database integration  local p = {}  -- Database connection function local function getDB()     return mw.ext.LuaSQLite.open(&#039;duneawakening&#039;) end  -- Convert seconds to MM:SS format local function formatDuration(seconds)     if not seconds or seconds == 0 then         return &quot;&quot;     end     local minutes = math.floor(seconds / 60)     local secs = seconds % 60     return string.format(&quot;%d:%02d&quot;, minutes, secs) en...&quot;</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=Module:VideoGallery&amp;diff=821&amp;oldid=prev"/>
		<updated>2025-06-02T02:50:33Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- Module:VideoGallery -- Handles video gallery display with database integration  local p = {}  -- Database connection function local function getDB()     return mw.ext.LuaSQLite.open(&amp;#039;duneawakening&amp;#039;) end  -- Convert seconds to MM:SS format local function formatDuration(seconds)     if not seconds or seconds == 0 then         return &amp;quot;&amp;quot;     end     local minutes = math.floor(seconds / 60)     local secs = seconds % 60     return string.format(&amp;quot;%d:%02d&amp;quot;, minutes, secs) en...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module:VideoGallery&lt;br /&gt;
-- Handles video gallery display with database integration&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Database connection function&lt;br /&gt;
local function getDB()&lt;br /&gt;
    return mw.ext.LuaSQLite.open(&amp;#039;duneawakening&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Convert seconds to MM:SS format&lt;br /&gt;
local function formatDuration(seconds)&lt;br /&gt;
    if not seconds or seconds == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    local minutes = math.floor(seconds / 60)&lt;br /&gt;
    local secs = seconds % 60&lt;br /&gt;
    return string.format(&amp;quot;%d:%02d&amp;quot;, minutes, secs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get video thumbnail URL&lt;br /&gt;
local function getVideoThumbnail(youtubeId)&lt;br /&gt;
    -- YouTube thumbnail URL pattern&lt;br /&gt;
    return string.format(&amp;quot;https://img.youtube.com/vi/%s/mqdefault.jpg&amp;quot;, youtubeId)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Parse video notes from markdown-style text&lt;br /&gt;
local function parseVideoNotes(notes)&lt;br /&gt;
    if not notes or notes == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;&amp;lt;p&amp;gt;No notes available for this video.&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Convert markdown-style formatting&lt;br /&gt;
    -- Headers: ### becomes &amp;lt;h3&amp;gt;&lt;br /&gt;
    notes = notes:gsub(&amp;quot;###%s*([^\n]+)&amp;quot;, &amp;quot;&amp;lt;h3&amp;gt;%1&amp;lt;/h3&amp;gt;&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    -- Lists: lines starting with - become &amp;lt;li&amp;gt;&lt;br /&gt;
    notes = notes:gsub(&amp;quot;\n%-%s*([^\n]+)&amp;quot;, &amp;quot;\n&amp;lt;li&amp;gt;%1&amp;lt;/li&amp;gt;&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    -- Wrap consecutive &amp;lt;li&amp;gt; items in &amp;lt;ul&amp;gt;&lt;br /&gt;
    notes = notes:gsub(&amp;quot;(&amp;lt;li&amp;gt;.-&amp;lt;/li&amp;gt;)\n(&amp;lt;li&amp;gt;)&amp;quot;, &amp;quot;%1\n&amp;lt;ul&amp;gt;\n%2&amp;quot;)&lt;br /&gt;
    notes = notes:gsub(&amp;quot;(&amp;lt;/li&amp;gt;)\n([^&amp;lt;])&amp;quot;, &amp;quot;%1\n&amp;lt;/ul&amp;gt;\n%2&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    -- Line breaks&lt;br /&gt;
    notes = notes:gsub(&amp;quot;\n\n&amp;quot;, &amp;quot;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;quot;)&lt;br /&gt;
    notes = &amp;quot;&amp;lt;p&amp;gt;&amp;quot; .. notes .. &amp;quot;&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    return notes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main function to render videos for a category&lt;br /&gt;
function p.renderVideos(frame)&lt;br /&gt;
    local category = frame.args.category or &amp;quot;featured&amp;quot;&lt;br /&gt;
    local db = getDB()&lt;br /&gt;
    &lt;br /&gt;
    -- Define tag mappings for each category&lt;br /&gt;
    local categoryTags = {&lt;br /&gt;
        featured = &amp;quot;Featured&amp;quot;,&lt;br /&gt;
        leveling = &amp;quot;Leveling&amp;quot;,&lt;br /&gt;
        crafting = &amp;quot;Crafting&amp;quot;,&lt;br /&gt;
        building = &amp;quot;Building&amp;quot;,&lt;br /&gt;
        pve = &amp;quot;PVE&amp;quot;,&lt;br /&gt;
        pvp = &amp;quot;PVP&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    local tagName = categoryTags[category] or &amp;quot;Featured&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Query to get videos by tag and group by purpose&lt;br /&gt;
    local query = [[&lt;br /&gt;
        SELECT DISTINCT&lt;br /&gt;
            v.video_id,&lt;br /&gt;
            v.youtube_id,&lt;br /&gt;
            v.title,&lt;br /&gt;
            v.channel_title,&lt;br /&gt;
            v.duration_sec,&lt;br /&gt;
            v.purpose,&lt;br /&gt;
            v.description,&lt;br /&gt;
            v.video_notes,&lt;br /&gt;
            v.published_at&lt;br /&gt;
        FROM videos v&lt;br /&gt;
        JOIN video_tags vt ON v.video_id = vt.video_id&lt;br /&gt;
        JOIN tags t ON vt.tag_id = t.tag_id&lt;br /&gt;
        WHERE t.tag_name = ?&lt;br /&gt;
        ORDER BY v.purpose, v.published_at DESC&lt;br /&gt;
    ]]&lt;br /&gt;
    &lt;br /&gt;
    local stmt = db:prepare(query)&lt;br /&gt;
    stmt:bind_values(tagName)&lt;br /&gt;
    &lt;br /&gt;
    local videos = {}&lt;br /&gt;
    local purposes = {}&lt;br /&gt;
    local purposeOrder = {}&lt;br /&gt;
    &lt;br /&gt;
    -- Group videos by purpose&lt;br /&gt;
    for row in stmt:rows() do&lt;br /&gt;
        local purpose = row.purpose or &amp;quot;General&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        if not videos[purpose] then&lt;br /&gt;
            videos[purpose] = {}&lt;br /&gt;
            table.insert(purposeOrder, purpose)&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        table.insert(videos[purpose], {&lt;br /&gt;
            video_id = row.video_id,&lt;br /&gt;
            youtube_id = row.youtube_id,&lt;br /&gt;
            title = row.title,&lt;br /&gt;
            channel_title = row.channel_title,&lt;br /&gt;
            duration = formatDuration(row.duration_sec),&lt;br /&gt;
            duration_sec = row.duration_sec,&lt;br /&gt;
            description = row.description,&lt;br /&gt;
            video_notes = row.video_notes,&lt;br /&gt;
            published_at = row.published_at&lt;br /&gt;
        })&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    stmt:finalize()&lt;br /&gt;
    &lt;br /&gt;
    -- Build HTML output&lt;br /&gt;
    local output = {}&lt;br /&gt;
    &lt;br /&gt;
    -- Special ordering for certain categories&lt;br /&gt;
    local purposeOrderMap = {&lt;br /&gt;
        leveling = {&lt;br /&gt;
            &amp;quot;Leveling 1-20&amp;quot;,&lt;br /&gt;
            &amp;quot;Leveling 21-40&amp;quot;,&lt;br /&gt;
            &amp;quot;Leveling 41-60&amp;quot;,&lt;br /&gt;
            &amp;quot;Leveling Tips&amp;quot;,&lt;br /&gt;
            &amp;quot;General&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        crafting = {&lt;br /&gt;
            &amp;quot;Basic Crafting&amp;quot;,&lt;br /&gt;
            &amp;quot;Advanced Crafting&amp;quot;,&lt;br /&gt;
            &amp;quot;Crafting Stations&amp;quot;,&lt;br /&gt;
            &amp;quot;Crafting Tips&amp;quot;,&lt;br /&gt;
            &amp;quot;General&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        building = {&lt;br /&gt;
            &amp;quot;Base Building&amp;quot;,&lt;br /&gt;
            &amp;quot;Advanced Structures&amp;quot;,&lt;br /&gt;
            &amp;quot;Defense Building&amp;quot;,&lt;br /&gt;
            &amp;quot;Building Tips&amp;quot;,&lt;br /&gt;
            &amp;quot;General&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    -- Use custom order if available&lt;br /&gt;
    if purposeOrderMap[category] then&lt;br /&gt;
        purposeOrder = purposeOrderMap[category]&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Render each purpose section&lt;br /&gt;
    for _, purpose in ipairs(purposeOrder) do&lt;br /&gt;
        if videos[purpose] then&lt;br /&gt;
            table.insert(output, string.format([[&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-section&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;video-section-header&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;section-title&amp;quot;&amp;gt;%s&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;video-grid&amp;quot;&amp;gt;]], purpose))&lt;br /&gt;
            &lt;br /&gt;
            -- Render video cards&lt;br /&gt;
            for _, video in ipairs(videos[purpose]) do&lt;br /&gt;
                local thumbnail = getVideoThumbnail(video.youtube_id)&lt;br /&gt;
                &lt;br /&gt;
                table.insert(output, string.format([[&lt;br /&gt;
        &amp;lt;div class=&amp;quot;video-card&amp;quot; data-video-id=&amp;quot;%s&amp;quot; data-youtube-id=&amp;quot;%s&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;video-thumbnail&amp;quot; style=&amp;quot;background-image: url(&amp;#039;%s&amp;#039;);&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span class=&amp;quot;video-duration&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;video-info&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;video-title&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;video-channel&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;]], &lt;br /&gt;
                    video.video_id,&lt;br /&gt;
                    video.youtube_id,&lt;br /&gt;
                    thumbnail,&lt;br /&gt;
                    video.duration,&lt;br /&gt;
                    mw.text.encode(video.title),&lt;br /&gt;
                    mw.text.encode(video.channel_title)&lt;br /&gt;
                ))&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            table.insert(output, [[&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;]])&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    db:close()&lt;br /&gt;
    &lt;br /&gt;
    if #output == 0 then&lt;br /&gt;
        return &amp;#039;&amp;lt;div class=&amp;quot;video-section&amp;quot;&amp;gt;&amp;lt;p style=&amp;quot;text-align: center; color: #E3BB7A;&amp;quot;&amp;gt;No videos found for this category.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Function to get all video data as JSON for JavaScript&lt;br /&gt;
function p.getVideoData(frame)&lt;br /&gt;
    local db = getDB()&lt;br /&gt;
    &lt;br /&gt;
    local query = [[&lt;br /&gt;
        SELECT &lt;br /&gt;
            v.video_id,&lt;br /&gt;
            v.youtube_id,&lt;br /&gt;
            v.title,&lt;br /&gt;
            v.channel_title,&lt;br /&gt;
            v.author,&lt;br /&gt;
            v.duration_sec,&lt;br /&gt;
            v.purpose,&lt;br /&gt;
            v.description,&lt;br /&gt;
            v.video_notes,&lt;br /&gt;
            v.published_at,&lt;br /&gt;
            GROUP_CONCAT(t.tag_name) as tags&lt;br /&gt;
        FROM videos v&lt;br /&gt;
        LEFT JOIN video_tags vt ON v.video_id = vt.video_id&lt;br /&gt;
        LEFT JOIN tags t ON vt.tag_id = t.tag_id&lt;br /&gt;
        GROUP BY v.video_id&lt;br /&gt;
        ORDER BY v.published_at DESC&lt;br /&gt;
    ]]&lt;br /&gt;
    &lt;br /&gt;
    local stmt = db:prepare(query)&lt;br /&gt;
    local videoData = {}&lt;br /&gt;
    &lt;br /&gt;
    for row in stmt:rows() do&lt;br /&gt;
        local tags = {}&lt;br /&gt;
        if row.tags then&lt;br /&gt;
            for tag in string.gmatch(row.tags, &amp;quot;[^,]+&amp;quot;) do&lt;br /&gt;
                table.insert(tags, mw.text.trim(tag))&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        videoData[tostring(row.video_id)] = {&lt;br /&gt;
            video_id = row.video_id,&lt;br /&gt;
            youtube_id = row.youtube_id,&lt;br /&gt;
            title = row.title,&lt;br /&gt;
            channel_title = row.channel_title,&lt;br /&gt;
            author = row.author,&lt;br /&gt;
            duration = formatDuration(row.duration_sec),&lt;br /&gt;
            duration_sec = row.duration_sec,&lt;br /&gt;
            purpose = row.purpose,&lt;br /&gt;
            description = row.description,&lt;br /&gt;
            video_notes = parseVideoNotes(row.video_notes),&lt;br /&gt;
            published_at = row.published_at,&lt;br /&gt;
            tags = tags&lt;br /&gt;
        }&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    stmt:finalize()&lt;br /&gt;
    db:close()&lt;br /&gt;
    &lt;br /&gt;
    return mw.text.jsonEncode(videoData)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Function to render a single video player (called via AJAX)&lt;br /&gt;
function p.renderVideoPlayer(frame)&lt;br /&gt;
    local videoId = frame.args.video_id or frame.args[1]&lt;br /&gt;
    &lt;br /&gt;
    if not videoId then&lt;br /&gt;
        return &amp;#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;No video ID provided&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local db = getDB()&lt;br /&gt;
    &lt;br /&gt;
    local query = [[&lt;br /&gt;
        SELECT &lt;br /&gt;
            v.*,&lt;br /&gt;
            GROUP_CONCAT(t.tag_name) as tags&lt;br /&gt;
        FROM videos v&lt;br /&gt;
        LEFT JOIN video_tags vt ON v.video_id = vt.video_id&lt;br /&gt;
        LEFT JOIN tags t ON vt.tag_id = t.tag_id&lt;br /&gt;
        WHERE v.video_id = ?&lt;br /&gt;
        GROUP BY v.video_id&lt;br /&gt;
    ]]&lt;br /&gt;
    &lt;br /&gt;
    local stmt = db:prepare(query)&lt;br /&gt;
    stmt:bind_values(videoId)&lt;br /&gt;
    &lt;br /&gt;
    local video = nil&lt;br /&gt;
    for row in stmt:rows() do&lt;br /&gt;
        video = row&lt;br /&gt;
        break&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    stmt:finalize()&lt;br /&gt;
    db:close()&lt;br /&gt;
    &lt;br /&gt;
    if not video then&lt;br /&gt;
        return &amp;#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Video not found&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Parse published date&lt;br /&gt;
    local publishedDate = video.published_at:match(&amp;quot;(%d%d%d%d%-%d%d%-%d%d)&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    -- Build player HTML&lt;br /&gt;
    local output = string.format([[&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-embed-container&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;iframe src=&amp;quot;https://www.youtube.com/embed/%s?rel=0&amp;amp;modestbranding=1&amp;quot; &lt;br /&gt;
            frameborder=&amp;quot;0&amp;quot; &lt;br /&gt;
            allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; &lt;br /&gt;
            allowfullscreen&amp;gt;&lt;br /&gt;
    &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-details-header&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 class=&amp;quot;video-main-title&amp;quot;&amp;gt;%s&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;video-meta&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;video-author&amp;quot;&amp;gt;👤 %s&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;video-date&amp;quot;&amp;gt;📅 %s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;video-notes-section&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;notes-header&amp;quot;&amp;gt;Video Notes&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;notes-content&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;]],&lt;br /&gt;
        video.youtube_id,&lt;br /&gt;
        mw.text.encode(video.title),&lt;br /&gt;
        mw.text.encode(video.author or video.channel_title),&lt;br /&gt;
        publishedDate,&lt;br /&gt;
        parseVideoNotes(video.video_notes)&lt;br /&gt;
    )&lt;br /&gt;
    &lt;br /&gt;
    return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
</feed>