ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
(Generate patch)

Comparing cvsroot/schmorpforge/genpage (file contents):
Revision 1.4 by elmex, Tue Apr 29 14:20:16 2008 UTC vs.
Revision 1.15 by root, Sat May 10 00:31:04 2008 UTC

41 hr.footer { display: none; } 41 hr.footer { display: none; }
42 .footer { font-size: 8pt; border-top: 1px solid red; } 42 .footer { font-size: 8pt; border-top: 1px solid red; }
43 </style> 43 </style>
44</head> 44</head>
45<body> 45<body>
46<p class='back'><a href='/'>Schmorpforge Software Repository</a></p> 46<p class='back'><a href='/'>Schmorpforge Ta-Sa Software Repository</a></p>
47<h1 class="$_[1]">$_[0]</h1> 47<h1 class="$_[1]">$_[0]</h1>
48<div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em"> 48<div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em">
49 <a href="http://www.deliantra.net/"> 49 <a href="http://www.deliantra.net/">
50 <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/> 50 <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/>
51 <br /> 51 <br />
95 95
96<h2>Blurb</h2> 96<h2>Blurb</h2>
97<p class='blurb'>$desc</p> 97<p class='blurb'>$desc</p>
98<h2>Availability</h2> 98<h2>Availability</h2>
99<ul> 99<ul>
100EOF
101 if (grep /git/, @args) {
102 print <<EOF;
103<li><a href='http://git.ta-sa.org/?p=$name.git;a=summary'>Browse GIT repository '$name'</a></li>
104<li>Read-only GIT checkout:<br />
105 <tt>&#160;git-clone http://git.ta-sa.org/$name.git</tt>
106</li>
107EOF
108 } else {
109 my $modules = $name;
110 $modules = "$1" if grep /modules\((.*)\)/, @args;
111
112 print <<EOF;
100<li><a href='http://cvs.schmorp.de/$name'>Browse CVS module '$name'</a></li> 113<li><a href='http://cvs.schmorp.de/$name'>Browse CVS module '$name'</a></li>
101EOF
102
103 my $modules = $name;
104 $modules = "$1" if grep /modules\((.*)\)/, @args;
105
106 print <<EOF;
107<li>Anonymous CVS checkout:<br /> 114<li>Anonymous CVS checkout:<br />
108 <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt><p /> 115 <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt><p />
109 116
110 <small> 117 <small>
111 118
125 132
126 </small> 133 </small>
127 134
128</li> 135</li>
129EOF 136EOF
137 }
130 138
131 print "<li><a href='http://dist.schmorp.de/$name/'>File Releases</a></li>\n" 139 print "<li><a href='http://dist.schmorp.de/$name/'>File Releases</a></li>\n"
132 if grep /dist/, @args; 140 if grep /dist/, @args;
133 print "<li><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></li>\n" 141 print "<li><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></li>\n"
134 if grep /cpan/, @args; 142 if grep /cpan$/, @args;
143 print "<li><a href='http://www.cpan.org/modules/by-authors/id/E/EL/ELMEX/'>File Releases (CPAN)</a></li>\n"
144 if grep /cpan-elmex/, @args;
135 for (@args) { 145 for (@args) {
136 print "<li><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></li>\n" 146 print "<li><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></li>\n"
137 if /list\((.*)\)/; 147 if /list\((.*)\)/;
138 } 148 }
139 149
153 $desc ||= "<b>Main Manual Page</b>"; 163 $desc ||= "<b>Main Manual Page</b>";
154 print "<li><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></li>"; 164 print "<li><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></li>";
155 165
156 } elsif ($type eq 'git-co') { 166 } elsif ($type eq 'git-co') {
157 print "<li><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></li>"; 167 print "<li><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></li>";
168
158 } elsif ($type eq "git-pod") { 169 } elsif ($type eq "git-pod") {
159 my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg); 170 my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
160 $desc ||= "<b>Main Manual Page</b>"; 171 $desc ||= "<b>Main Manual Page</b>";
161 print "<li><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></li>"; 172 print "<li><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></li>";
162 173
173 184
174hdr "Package Index", "bg-bluete"; 185hdr "Package Index", "bg-bluete";
175 186
176print <<EOF; 187print <<EOF;
177 188
178<p>This page briefly documents the Schmorpforge Software Repository and 189<p>This page briefly documents the Schmorpforge Ta-Sa Software Repository and
179lists all projects available here.</p> 190lists all projects available here.</p>
180 191
181<ul> 192<ul>
182<li>All CVS Repositories can be found <a href="http://cvs.schmorp.de/">here</a>.</li> 193<li>All CVS Repositories can be found <a href="http://cvs.schmorp.de/">here</a>.</li>
194<li>All GIT Repositories can be found <a href="http://git.ta-sa.org/">here</a>.</li>
183<li>Most Releases can be found <a href="http://dist.schmorp.de/">here</a> or via CPAN.</li> 195<li>File Releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules).</li>
184<li>All Mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a>.</li> 196<li>All Mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a>.</li>
197<li>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a>.</li>
185</ul> 198</ul>
186<p>Projects listed on this page:</p> 199<p>Projects listed on this page:</p>
187<table> 200<table>
188EOF 201EOF
189 202
301 It could be used to write Knuddels clients, bots and even servers 314 It could be used to write Knuddels clients, bots and even servers
302 (although the latter doesn't make much sense, the protocol is rather 315 (although the latter doesn't make much sense, the protocol is rather
303 ugly. If you want to implement your own group communication server, use 316 ugly. If you want to implement your own group communication server, use
304 IRC instead). 317 IRC instead).
305 318
306Net-IRC3 dist cvs-pod(lib/Net/IRC3.pm,) cvs-co(Changes) cvs-co(samples/netirc3cl) cvs-co(samples/netirc3) 319Net-IRC3 cpan-elmex cvs-pod(lib/Net/IRC3.pm,) cvs-co(Changes) cvs-co(samples/netirc3cl) cvs-co(samples/netirc3)
307 This module provides an alternative to the Net-IRC and Net-IRC2 320 This module provides an alternative to the Net-IRC and Net-IRC2
308 modules. Its design rationale is offfering a 100% non-blocking 321 modules. Its design rationale is offfering a 100% non-blocking
309 callback-based interface, RFC-compliant parsing and a lightweight 322 callback-based interface, RFC-compliant parsing and a lightweight
310 approach to modularity and reusability. 323 approach to modularity and reusability.
311 324
340 minimal configuration (it consists of only a single <tt>.h</tt> and a 353 minimal configuration (it consists of only a single <tt>.h</tt> and a
341 single <tt>.c</tt> file). It is known to run on a wide variety of unix 354 single <tt>.c</tt> file). It is known to run on a wide variety of unix
342 systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use 355 systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
343 any assembly language and is architecture-independent. 356 any assembly language and is architecture-independent.
344 357
345cf.schmorp.de/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero) 358deliantra/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
346 The <a href="http://www.deliantra.net/">Deliantra</a> game server. 359 The <a href="http://www.deliantra.net/">Deliantra</a> game server.
347 360
348 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 361 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
349 362
350cf.schmorp.de/maps cvs-co(Changes) cvs-co(COPYING.Affero) 363deliantra/maps cvs-co(Changes) cvs-co(COPYING.Affero)
351 The <a href="http://www.deliantra.net/">Deliantra</a> game maps. 364 The <a href="http://www.deliantra.net/">Deliantra</a> game maps.
352 365
353 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 366 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
354 367
355cf.schmorp.de/arch cvs-co(Changes) cvs-co(COPYING.Affero) 368deliantra/arch cvs-co(Changes) cvs-co(COPYING.Affero)
356 The <a href="http://www.deliantra.net/">Deliantra</a> game resources. 369 The <a href="http://www.deliantra.net/">Deliantra</a> game resources.
357 370
358 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 371 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
359 372
360cf.schmorp.de/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes) 373deliantra/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
361 A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl 374 A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl
362 and leveraging only OpenGL for display and thus being easily portable. 375 and leveraging only OpenGL for display and thus being easily portable.
363 See its <a href="http://www.deliantra.net/client.html">homepage</a>. 376 See its <a href="http://www.deliantra.net/client.html">homepage</a>.
364 377
365 To install it, you need <a href="http://www.libsdl.org">SDL</a>, <a href="http://www.libsdl.org/projects/SDL_mixer/">SDL_mixer</a>, 378 To install it, you need <a href="http://www.libsdl.org">SDL</a>, <a href="http://www.libsdl.org/projects/SDL_mixer/">SDL_mixer</a>,
366 <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and 379 <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and
367 cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and 380 cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
368 <a href="http://software.schmorp.de/pkg/cf.schmorp.de/Deliantra.html">Deliantra</a> perl modules. 381 <a href="http://software.schmorp.de/pkg/deliantra/Deliantra.html">Deliantra</a> perl modules.
369 382
370cf.schmorp.de/Deliantra 383deliantra/Deliantra
371 Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game. 384 Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game.
372 385
373 They can be used to read/write/cache archetypes, image packs and map files. 386 They can be used to read/write/cache archetypes, image packs and map files.
374 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 387 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
375 388
376cf.schmorp.de/gcrossedit cvs-pod(bin/gde,) 389deliantra/gcrossedit cvs-pod(bin/gde,)
377 The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2. 390 The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2.
378 391
379 The editor for the game Deliantra, written in Perl. 392 The editor for the game Deliantra, written in Perl.
380 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 393 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
381 394
382cf.schmorp.de 395deliantra
383 <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps, 396 <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps,
384 editor, client and support modules distribution. 397 editor, client and support modules distribution.
385 398
386 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info. 399 Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
387 400
425 See <a href="http://www.goof.com/pcg/marc/lmainit.html">its homepage</a> for more info. 438 See <a href="http://www.goof.com/pcg/marc/lmainit.html">its homepage</a> for more info.
426 439
427Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes) 440Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
428 Perl module implementing forward error correction using Vandermonde matrices 441 Perl module implementing forward error correction using Vandermonde matrices
429 442
430AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-co(Changes) cvs-pod(lib/AnyEvent/Impl/CoroEV.pm,AnyEvent::Impl::CoroEV) cvs-pod(lib/AnyEvent/Impl/CoroEvent.pm,AnyEvent::Impl::CoroEvent) cvs-pod(lib/AnyEvent/Impl/Coro.pm,AnyEvent::Impl::Coro) cvs-pod(lib/AnyEvent/Impl/EV.pm,AnyEvent::Impl::EV) cvs-pod(lib/AnyEvent/Impl/Event.pm,AnyEvent::Impl::Event) cvs-pod(lib/AnyEvent/Impl/Glib.pm,AnyEvent::Impl::Glib) cvs-pod(lib/AnyEvent/Impl/Tk.pm,AnyEvent::Impl::Tk) cvs-pod(lib/AnyEvent/Impl/Perl.pm,AnyEvent::Impl::Perl) cvs-pod(lib/AnyEvent/Impl/Qt.pm,AnyEvent::Impl::Qt) cvs-pod(lib/AnyEvent/Impl/EventLib.pm,AnyEvent::Impl::EventLib) cvs-pod(lib/AnyEvent/Impl/POE.pm,AnyEvent::Impl::POE) 443AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-co(Changes) cvs-pod(lib/AnyEvent/Impl/EV.pm,AnyEvent::Impl::EV) cvs-pod(lib/AnyEvent/Impl/Event.pm,AnyEvent::Impl::Event) cvs-pod(lib/AnyEvent/Impl/Glib.pm,AnyEvent::Impl::Glib) cvs-pod(lib/AnyEvent/Impl/Tk.pm,AnyEvent::Impl::Tk) cvs-pod(lib/AnyEvent/Impl/Perl.pm,AnyEvent::Impl::Perl) cvs-pod(lib/AnyEvent/Impl/Qt.pm,AnyEvent::Impl::Qt) cvs-pod(lib/AnyEvent/Impl/EventLib.pm,AnyEvent::Impl::EventLib) cvs-pod(lib/AnyEvent/Impl/POE.pm,AnyEvent::Impl::POE)
431 This module offers a simple API for I/O, timer, signal, child process 444 This module offers a simple API for I/O, timer, signal, child process
432 and completion events, independent of a specific event loop. 445 and completion events, independent of a specific event loop.
433 446
434 This module allows module authors to use those events internally without 447 This module allows module authors to use those events internally without
435 forcing users of the module to use a specific event loop, without adding 448 forcing users of the module to use a specific event loop, without adding
436 noticable overhead. Currently supported event loops are EV, Coro::EV, 449 noticable overhead. Currently supported event loops are EV, Event,
437 Event, Coro::Event, Glib/Gtk2, Tk, Qt, Event::Lib and POE (and thus also 450 Glib/Gtk2, Tk, Qt, Event::Lib and POE (and thus also WxWidgets and
438 WxWidgets and Prima). It contains a very fast (see benchmarks in the main 451 Prima). It contains a very fast (see benchmarks in the main manual page)
439 manual page) Pure Perl event loop and doesn't rely on XS, which ensures 452 Pure Perl event loop and doesn't rely on XS, which ensures that your
440 that your program will always run even when no C-based event loop is 453 program will always run even when no C-based event loop is available.
441 available.
442 454
443AnyEvent-FastPing cpan cvs-pod(FastPing.pm,) 455AnyEvent-FastPing cpan cvs-pod(FastPing.pm,)
444 This module implements a very fast and relatively flexible 456 This module implements a very fast and relatively flexible
445 ping (ping as in icmp echo request). 457 ping (ping as in icmp echo request).
446 458
472 allows easy decoding of multipart mime, uuencode and a whole lot of 484 allows easy decoding of multipart mime, uuencode and a whole lot of
473 differently encoded messages. You basically throw files at it, and 485 differently encoded messages. You basically throw files at it, and
474 it extracts the files in them. This module is used by the popular <a 486 it extracts the files in them. This module is used by the popular <a
475 href="www.amavis.org">amavis virus scanner</a>. 487 href="www.amavis.org">amavis virus scanner</a>.
476 488
477Coro cpan cvs-pod(Coro.pm,) cvs-co(Changes) 489Coro cpan cvs-co(Changes) cvs-pod(Coro.pm,) cvs-pod(Coro/AIO.pm,Coro::AIO) cvs-pod(Coro/AnyEvent.pm,Coro::AnyEvent) cvs-pod(Coro/BDB.pm,Coro::BDB) cvs-pod(Coro/Channel.pm,Coro::Channel) cvs-pod(Coro/Debug.pm,Coro::Debug) cvs-pod(Coro/EV.pm,Coro::EV) cvs-pod(Coro/Event.pm,Coro::Event) cvs-pod(Coro/Handle.pm,Coro::Handle) cvs-pod(Coro/LWP.pm,Coro::LWP) cvs-pod(Coro/MakeMaker.pm,Coro::MakeMaker) cvs-pod(Coro/RWLock.pm,Coro::RWLock) cvs-pod(Coro/Select.pm,Coro::Select) cvs-pod(Coro/Semaphore.pm,Coro::Semaphore) cvs-pod(Coro/SemaphoreSet.pm,Coro::SemaphoreSet) cvs-pod(Coro/Signal.pm,Coro::Signal) cvs-pod(Coro/Socket.pm,Coro::Socket) cvs-pod(Coro/Specific.pm,Coro::Specific) cvs-pod(Coro/State.pm,Coro::State) cvs-pod(Coro/Storable.pm,Coro::Storable) cvs-pod(Coro/Util.pm,Coro::Util)
478 A large Perl module family that implements cooperative multitasking in 490 A large Perl module family that implements cooperative multitasking in
479 Perl. It supports filehandle and event abstraction and also implements 491 Perl. It supports filehandle and event abstraction and also implements
480 continuations as well as the necessary directives to implement a slightly 492 continuations as well as the necessary directives to implement a slightly
481 limited call/cc in Perl. 493 limited call/cc in Perl.
482 494
683 695
684dhcpping cvs-pod(dhcping.pod,) 696dhcpping cvs-pod(dhcping.pod,)
685 A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a> 697 A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a>
686 to support passing dhcp options. Intended to test dhcp server implementations. 698 to support passing dhcp options. Intended to test dhcp server implementations.
687 699
688AnyEvent-DNS cpan git-pod(lib/AnyEvent/DNS.pm,) git-co(Changes) 700AnyEvent-DNS cpan-elmex git-pod(lib/AnyEvent/DNS.pm,) git-co(Changes)
689 A non-blocking DNS resolver with AnyEvent using Net::DNS. 701 A non-blocking DNS resolver with AnyEvent using Net::DNS.
690 702
691 This Perl module is a simple wrapper around Net::DNS, which provides 703 This Perl module is a simple wrapper around Net::DNS, which provides
692 a non-blocking interface to make DNS queries with Net::DNS. 704 a non-blocking interface to make DNS queries with Net::DNS.
693 705
694AnyEvent-HTTPD cpan git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes) 706AnyEvent-HTTPD cpan-elmex git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes)
695 A simple and plain event based http web application server Perl module. 707 A simple and plain event based http web application server Perl module.
696 708
697 This is a very basic HTTP server that allows the user/programmer to install 709 This is a very basic HTTP server that allows the user/programmer to install
698 hooks for URL paths to generate the output. It uses AnyEvent to be easily 710 hooks for URL paths to generate the output. It uses AnyEvent to be easily
699 embeddable into other applications. The main objective was to make it 711 embeddable into other applications. The main objective was to make it
700 easier to make simple HTTP frontends in Perl for Perl programs and Perl modules. 712 easier to make simple HTTP frontends in Perl for Perl programs and Perl modules.
701 713
702Object-Event cpan git-pod(lib/Object/Event.pm,) git-co(Changes) 714Object-Event cpan-elmex git-pod(lib/Object/Event.pm,) git-co(Changes)
703 A simple event callback API for Perl. 715 A simple event callback API for Perl.
704 716
705 This is just a very simple event callback registration and call API 717 This is just a very simple event callback registration and call API
706 which new Perl classes can inherit. It's mainly used by Net::XMPP2. 718 which new Perl classes can inherit. It's mainly used by Net::XMPP2.
707 719
708Text-Edit cpan git-pod(lib/Text/Edit.pm,) git-co(Text-Edit.git/Changes) 720AnyEvent-EditText cpan-elmex git-pod(lib/AnyEvent/EditText.pm,) git-co(Changes)
709 A Perl module which allows editing any text via an editor in a seperate process. 721 A Perl module which allows editing any text via an editor in a seperate process.
710 722
711 A utility Perl module that will start a terminal/editor for you and will 723 A utility Perl module that will start a terminal/editor for you and will
712 wait non-blocking for you to finish editing that file. Very useful to embed 724 wait non-blocking for you to finish editing that file. Very useful to embed
713 content edititing in event based programs that have a AnyEvent compatible 725 content edititing in event based programs that have a AnyEvent compatible
718 730
719 This is a mostly abandoned project at the moment, however, the repository 731 This is a mostly abandoned project at the moment, however, the repository
720 contains interesting C++ code that might be useful to someone, especially 732 contains interesting C++ code that might be useful to someone, especially
721 the C++ JSON implementation might be of interest. The project is mostly 733 the C++ JSON implementation might be of interest. The project is mostly
722 dead at the moment though... 734 dead at the moment though...
735
736gtm git-co(README)
737 GT.M Database
738
739 <a href="http://sourceforge.net/projects/fis-gtm/">GT.M</a>
740 is a a vetted, industrial strength, transaction
741 processing application platform consisting of a
742 database engine optimized for high TP throughput and
743 a compiler for the M (aka MUMPS) programming language.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines