source: trunk/EventBenchConsole/rules/rules.xml @ 54

Last change on this file since 54 was 50, checked in by sherbold, 14 years ago

+ added rule for event LeftClickSetFocus? (set keyboard focus without stealing it somewhere else)

File size: 19.4 KB
RevLine 
[1]1<?xml version="1.0" encoding="utf-8"?>
2<!DOCTYPE rules SYSTEM "ruleDoctype.dtd">
3<rules xmlns="ul:rules" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ul:rules ruleSchema.xsd">
4
5  <!-- rules regarding mouse clicks -->
6<rule name="LeftClickButton">
7 <msg type="&WM_LBUTTONDOWN;">
8  <store var="clicked"/>
9 </msg>
10 <msg type="&WM_LBUTTONUP;">
11  <equals>
12   <constValue value="Button"/>
13   <winInfoValue obj="this" winParam="class"/>
14  </equals>
15  <equals>
16   <paramValue obj="clicked" param="window.hwnd"/>
17   <paramValue obj="this" param="window.hwnd"/>
18  </equals>
19 </msg>
20 <genMsg delay="100">
21  <type>
22   <constValue value="&BM_CLICK;"/>
23  </type>
24  <target>
25   <msgInfoValue obj="clicked" msgParam="target"/>
26  </target>
27 </genMsg>
28</rule>
29
[35]30  <rule name="LeftClickListBox">
31    <msg type="&WM_LBUTTONDOWN;">
32      <equals>
33        <winInfoValue obj="this" winParam="class"/>
34        <constValue value="ListBox"/>
35      </equals>
36      <store var="clicked"/>
37    </msg>
38    <msg type="&WM_LBUTTONUP;">
39      <equals>
40        <paramValue obj="this" param="window.hwnd"/>
41        <paramValue obj="clicked" param="window.hwnd"/>
42      </equals>
43      <store var="up"/>
44    </msg>
45    <genMsg delay="1000">
46      <type>
47        <constValue value="&LB_SETCURSEL;"/>
48      </type>
49      <target>
50        <msgInfoValue obj="clicked" msgParam="target"/>
51      </target>
52      <WPARAM>
53        <paramValue obj="up" param="scrollPos"/>
54      </WPARAM>
55    </genMsg>
56  </rule>
[37]57
[35]58 
[37]59  <!--Wird in einem Tabfeld auch wirklich auf ein Tabelement geklickt (und nicht in den Content darunter), wird eine WM_USER Nachricht versendet, d.h.
60      1) Irgendwo in das Tabfeld klicken: WM_LBUTTONDOWN
61      2) Auf ein Tabelement klicken:      WM_LBUTTONDOWN + WM_USER -->
[46]62  <rule name="TabChanged">
[37]63    <msg type="&WM_LBUTTONDOWN;">
64      <equals>
65        <constValue value="SysTabControl32"/>
66        <winInfoValue obj="this" winParam="class"/>
67      </equals>
68      <store var="clicked"/>
69    </msg>
70    <msg type="&WM_USER;">
71    </msg>
72    <msg type="&WM_LBUTTONUP;">
73      <equals>
74        <paramValue obj="this" param="window.hwnd"/>
75        <paramValue obj="clicked" param="window.hwnd"/>
76      </equals>
77      <store var="up"/>
78    </msg>
79    <genMsg delay="20">
80      <type>
81        <constValue value="&TCM_SETCURSEL;"/>
82      </type>
83      <target>
84        <msgInfoValue obj="up" msgParam="target"/>
85      </target>
86      <WPARAM>
87        <paramValue obj="up" param="scrollPos"/>
88      </WPARAM>
89    </genMsg>
90  </rule>
[35]91
[46]92
[1]93  <rule name="ComboBox">
94    <msg type="&WM_LBUTTONDOWN;">
95      <equals>
96        <winInfoValue obj="this" winParam="class"/>
97        <constValue value="ComboBox"/>
98      </equals>
99      <store var="clicked"/>
100    </msg>
101    <msg type="&WM_COMMAND;">
102      <equals>
103        <paramValue obj="this" param="window.hwnd"/>
104        <paramValue obj="clicked" param="window.hwnd"/>
105      </equals>
106      <store var="cmd1">
107        <resolveHwnd param="source" storeParam="sourceDesc"/>
108      </store>
109    </msg>
110    <msg type="&WM_COMMAND;" multiple="true">
111      <equals>
112        <paramValue obj="this" param="source"/>
113        <paramValue obj="clicked" param="window.hwnd"/>
114      </equals>
115      <storeSeq varSeq="cmds">
116        <resolveHwnd param="window.hwnd" storeParam="msgTarget"/>
117        <resolveHwnd param="source" storeParam="sourceDesc"/>
118      </storeSeq>
119    </msg>
120    <msg type="&WM_LBUTTONUP;">
121      <equals>
122        <paramValue obj="this" param="window.hwnd"/>
123        <paramValue obj="clicked" param="window.hwnd"/>
124      </equals>
125    </msg>
126    <genMsg delay="100">
127      <type>
128        <constValue value="&WM_SETFOCUS;"/>
129      </type>
130      <target>
131        <msgInfoValue obj="clicked" msgParam="target"/>
132      </target>
133    </genMsg>
134    <genMsg delay="100">
135      <type>
136        <constValue value="&CB_SHOWDROPDOWN;"/>
137      </type>
138      <target>
139        <msgInfoValue obj="clicked" msgParam="target"/>
140      </target>
141      <WPARAM>
142        <constValue value="1"/>
143      </WPARAM>
144    </genMsg>
145    <!--
146    <genMsg delay="100">
147      <type>
148        <constValue value="273"/>
149      </type>
150      <target>
151        <msgInfoValue obj="cmd1" msgParam="target"/>
152      </target>
153      <LPARAM>
154        <paramValue obj="cmd1" param="sourceDesc"/>
155      </LPARAM>
156      <WPARAM>
157        <paramValue obj="cmd1" param="WPARAM"/>
158      </WPARAM>
159    </genMsg>
160    <genMsgSeq delay="50">
161      <type>
162        <constValue value="273"/>
163      </type>
164      <target>
165        <seqValue seqObj="cmds" param="msgTarget"/>
166      </target>
167      <LPARAM>
168        <seqValue seqObj="cmds" param ="sourceDesc"/>
169      </LPARAM>
170      <WPARAM>
171        <seqValue seqObj="cmds" param="WPARAM"/>
172      </WPARAM>
173    </genMsgSeq>-->
174  </rule>
175 
176  <rule name="LeftClickCommand">
177    <msg type="&WM_LBUTTONDOWN;">
178      <store var="clicked"/>
179    </msg>
180    <msg type="&WM_LBUTTONUP;">
181      <equals>
182        <paramValue obj="clicked" param="window.hwnd"/>
183        <paramValue obj="this" param="window.hwnd"/>
184      </equals>
185    </msg>
186    <msg type="&WM_COMMAND;">
187      <equals>
188        <paramValue obj="clicked" param="window.hwnd"/>
189        <paramValue obj="this" param="source"/>
190      </equals>
191      <store var="cmd">
192        <resolveHwnd param="source" storeParam="sourceDesc"/>
193      </store>
194    </msg>
195    <genMsg delay="100">
196      <type>
197        <msgInfoValue obj="cmd" msgParam="type"/>
198      </type>
199      <target>
200        <msgInfoValue obj="cmd" msgParam="target"/>
201      </target>
202      <LPARAM>
203        <paramValue obj="cmd" param="sourceDesc"/>
204      </LPARAM>
205      <WPARAM>
206        <paramValue obj="cmd" param="WPARAM"/>
207      </WPARAM>
208    </genMsg>
209  </rule>
210
211  <rule name="LeftClickSysCommand">
212    <msg type="&WM_LBUTTONDOWN;">
213      <store var="clicked"/>
214    </msg>
215    <msg type="&WM_LBUTTONUP;">
216      <equals>
217        <paramValue obj="clicked" param="window.hwnd"/>
218        <paramValue obj="this" param="window.hwnd"/>
219      </equals>
220    </msg>
221    <msg type="&WM_SYSCOMMAND;">
222      <store var="cmd"/>
223    </msg>
224    <genMsg delay="100">
225      <storedVar obj="cmd"/>
226    </genMsg>
227  </rule>
228
229  <rule name="NCLeftClickSysCommand">
230    <msg type="&WM_NCLBUTTONDOWN;">
231      <store var="clicked"/>
232    </msg>
233    <msg type="&WM_LBUTTONUP;">
234      <equals>
235        <paramValue obj="clicked" param="window.hwnd"/>
236        <paramValue obj="this" param="window.hwnd"/>
237      </equals>
238    </msg>
239    <msg type="&WM_SYSCOMMAND;">
240      <equals>
241        <paramValue obj="clicked" param="window.hwnd"/>
242        <paramValue obj="this" param="window.hwnd"/>
243      </equals>
244      <store var="cmd"/>
245    </msg>
246    <genMsg delay="100">
247      <storedVar obj="cmd"/>
248    </genMsg>
249  </rule>
250
251  <rule name="LeftClickMenuItemCmd">
252    <msg type="&WM_LBUTTONDOWN;">
253      <store var="clicked"/>
254    </msg>
255    <msg type="&WM_LBUTTONUP;">
256      <equals>
257        <paramValue obj="clicked" param="window.hwnd"/>
258        <paramValue obj="this" param="window.hwnd"/>
259      </equals>
260    </msg>
261    <msg type="&WM_MENUSELECT;">
262      <equals>
263        <paramValue obj="clicked" param="window.hwnd"/>
264        <paramValue obj="this" param="window.hwnd"/>
265      </equals>
266    </msg>
267    <msg type="&WM_COMMAND;">
268      <equals>
269        <paramValue obj="this" param="sourceType"/>
270        <constValue value="0"/>
271      </equals>
272      <store var="cmd"/>
273    </msg>
274    <genMsg delay="100">
275      <storedVar obj="cmd"/>
276    </genMsg>
277  </rule>
278
279 
280  <!-- rules involving mouse movement -->
[46]281  <rule name="HScroll_TrackBar">
[1]282    <msg type="&WM_LBUTTONDOWN;">
[46]283      <equals>
284        <winInfoValue obj="this" winParam="class"/>
285        <constValue value="msctls_trackbar32"/>
286      </equals>
[1]287      <store var="clicked"/>
288    </msg>
289    <msg type="&WM_HSCROLL;" multiple="true">
290      <equals>
291        <paramValue obj="this" param="scrollBarHandle"/>
292        <paramValue obj="clicked" param="window.hwnd"/>
293      </equals>
294      <storeSeq varSeq="scrolls">
295        <resolveHwnd param="scrollBarHandle" storeParam="scrollBarTarget"/>
296      </storeSeq>
[46]297    </msg>   
298    <msg type="&WM_LBUTTONUP;">
299      <equals>
300        <paramValue obj="this" param="window.hwnd"/>
301        <paramValue obj="clicked" param="window.hwnd"/>
302      </equals>
[1]303    </msg>
[46]304    <genMsgSeq delay="20">
305      <type>
306        <constValue value="&TBM_SETPOS;"/>
307      </type>
308      <target>
309        <seqValue seqObj="scrolls" param="scrollBarTarget"/>
310      </target>
311      <LPARAM>
312        <seqValue seqObj="scrolls" param="scrollPos"/>
313      </LPARAM>
314      <WPARAM>
315        <constValue value="1"/>
316      </WPARAM>
317    </genMsgSeq>
318  </rule>
319
320
321  <rule name="VScroll_TrackBar">
322    <msg type="&WM_LBUTTONDOWN;">
323      <equals>
324        <winInfoValue obj="this" winParam="class"/>
325        <constValue value="msctls_trackbar32"/>
326      </equals>
327      <store var="clicked"/>
328    </msg>
329    <msg type="&WM_VSCROLL;" multiple="true">
330      <equals>
331        <paramValue obj="this" param="scrollBarHandle"/>
332        <paramValue obj="clicked" param="window.hwnd"/>
333      </equals>
334      <storeSeq varSeq="scrolls">
335        <resolveHwnd param="scrollBarHandle" storeParam="scrollBarTarget"/>
336      </storeSeq>
337    </msg>
[1]338    <msg type="&WM_LBUTTONUP;">
339      <equals>
[37]340        <paramValue obj="this" param="window.hwnd"/>
[1]341        <paramValue obj="clicked" param="window.hwnd"/>
342      </equals>
343    </msg>
344    <genMsgSeq delay="20">
345      <type>
346        <constValue value="&TBM_SETPOS;"/>
347      </type>
348      <target>
349        <seqValue seqObj="scrolls" param="scrollBarTarget"/>
350      </target>
351      <LPARAM>
[37]352        <seqValue seqObj="scrolls" param="scrollPos"/>
[1]353      </LPARAM>
354      <WPARAM>
[37]355        <constValue value="1"/>
[1]356      </WPARAM>
357    </genMsgSeq>
358  </rule>
[35]359
[46]360
361  <rule name="HScroll_ScrollBar">
362    <msg type="&WM_LBUTTONDOWN;">
363      <equals>
364        <winInfoValue obj="this" winParam="class"/>
365        <constValue value="ScrollBar"/>
366      </equals>
367      <store var="clicked"/>
368    </msg>
369    <msg type="&WM_HSCROLL;" multiple="true">
370      <equals>
371        <paramValue obj="this" param="scrollBarHandle"/>
372        <paramValue obj="clicked" param="window.hwnd"/>
373      </equals>
374      <storeSeq varSeq="scrolls">
375        <resolveHwnd param="scrollBarHandle" storeParam="scrollBarTarget"/>
376      </storeSeq>
377    </msg>
378    <msg type="&WM_LBUTTONUP;">
379      <equals>
380        <paramValue obj="this" param="window.hwnd"/>
381        <paramValue obj="clicked" param="window.hwnd"/>
382      </equals>
383    </msg>
384    <genMsgSeq delay="20">
385      <type>
386        <constValue value="&SBM_SETPOS;"/>
387      </type>
388      <target>
389        <seqValue seqObj="scrolls" param="scrollBarTarget"/>
390      </target>
391      <LPARAM>
392        <constValue value="1"/>
393      </LPARAM>
394      <WPARAM>
395        <seqValue seqObj="scrolls" param="scrollPos"/>
396      </WPARAM>
397    </genMsgSeq>
398  </rule>
399
400
401  <rule name="VScroll_ScrollBar">
402    <msg type="&WM_LBUTTONDOWN;">
403      <equals>
404        <winInfoValue obj="this" winParam="class"/>
405        <constValue value="ScrollBar"/>
406      </equals>
407      <store var="clicked"/>
408    </msg>
409    <msg type="&WM_VSCROLL;" multiple="true">
410      <equals>
411        <paramValue obj="this" param="scrollBarHandle"/>
412        <paramValue obj="clicked" param="window.hwnd"/>
413      </equals>
414      <storeSeq varSeq="scrolls">
415        <resolveHwnd param="scrollBarHandle" storeParam="scrollBarTarget"/>
416      </storeSeq>
417    </msg>
418    <msg type="&WM_LBUTTONUP;">
419      <equals>
420        <paramValue obj="this" param="window.hwnd"/>
421        <paramValue obj="clicked" param="window.hwnd"/>
422      </equals>
423    </msg>
424    <genMsgSeq delay="20">
425      <type>
426        <constValue value="&SBM_SETPOS;"/>
427      </type>
428      <target>
429        <seqValue seqObj="scrolls" param="scrollBarTarget"/>
430      </target>
431      <LPARAM>
432        <constValue value="1"/>
433      </LPARAM>
434      <WPARAM>
435        <seqValue seqObj="scrolls" param="scrollPos"/>
436      </WPARAM>
437    </genMsgSeq>
438  </rule>
[37]439 
[46]440
441 
442  <!-- Wenn eine Scrollbar benutzt wurde, die kein eigenes Handle hat, also eine StandardScrollbar in einer ListBox zb
443       Muss noch auf Sequenz erweitert werden, im Moment wird der Thumb der Scrollbar nur auf die erste Position gesetzt (normalerweise also 0) -->
444  <rule name="VScrollNC">
445    <msg type="&WM_NCLBUTTONDOWN;">
446      <store var="clicked"/>
447    </msg>
448    <msg type="&WM_VSCROLL;">
449      <equals>
450        <paramValue obj="this" param="window.hwnd"/>
451        <paramValue obj="clicked" param="window.hwnd"/>
452      </equals>
453      <store var="scrolls"/>
454    </msg>
455    <genMsg delay="20">
456      <type>
457        <constValue value="&WM_VSCROLL;"/>
458      </type>
459      <target>
460        <msgInfoValue obj="clicked" msgParam="target"/>
461      </target>
462      <WPARAM>
463        <LOWORD>
464          <constValue value="4"/>
465        </LOWORD>
466        <HIWORD>
467          <paramValue obj="scrolls" param="scrollPos"/>
468        </HIWORD>
469      </WPARAM>
470    </genMsg>
471  </rule>
472
473
474  <!--<rule name="VScrollNC">
475    <msg type="&WM_NCLBUTTONDOWN;">
476      <store var="clicked"/>
477    </msg>
478    <msg type="&WM_VSCROLL;" multiple="true">
479      <equals>
480        <paramValue obj="this" param="window.hwnd"/>
481        <paramValue obj="clicked" param="window.hwnd"/>
482      </equals>
483      <storeSeq varSeq="scrolls">
484        <resolveHwnd param="window.hwnd" storeParam="scrollBarTarget"/>
485      </storeSeq>
486    </msg>
487    <genMsgSeq delay="20">
488      <type>
489        <constValue value="&WM_VSCROLL;"/>
490      </type>
491      <target>
492        <seqValue seqObj="scrolls" param="scrollBarTarget"/>
493      </target>
494      <WPARAM>
495        <LOWORD>
496          <constValue value="4"/>
497        </LOWORD>
498        <HIWORD>
499          <paramValue obj="scrolls" param="scrollPos"/>
500        </HIWORD>
501      </WPARAM>
502    </genMsgSeq>
503  </rule>-->
504
[50]505  <!-- copy of set focus without kill-foxus -->
506  <rule name="LeftClickSetFocus">
507    <msg type="&WM_LBUTTONDOWN;">
508      <equals>
509        <winInfoValue obj="this" winParam="class"/>
510        <constValue value="Edit"/>
511      </equals>
512      <store var="clicked"/>
513    </msg>
514    <msg type="&WM_SETFOCUS;">
515      <store var="setfocus"/>
516    </msg>
517    <msg type="&WM_COMMAND;">
518      <equals>
519        <paramValue obj="this" param="source"/>
520        <paramValue obj="clicked" param="window.hwnd"/>
521      </equals>
522      <equals>
523        <paramValue obj="this" param="sourceType"/>
524        <constValue value="256"/>
525      </equals>
526      <store var="cmd"/>
527    </msg>
528    <msg type="&WM_LBUTTONUP;">
529      <equals>
530        <paramValue obj="this" param="window.hwnd"/>
531        <paramValue obj="clicked" param="window.hwnd"/>
532      </equals>
533    </msg>
534    <genMsg delay="20">
535      <type>
536        <constValue value="&WM_SETFOCUS;"/>
537      </type>
538      <target>
539        <msgInfoValue obj="setfocus" msgParam="target"/>
540      </target>
541      <WPARAM>
542        <constValue value="0"/>
543      </WPARAM>
544    </genMsg>
545    <genMsg delay="100">
546      <type>
547        <constValue value="&WM_COMMAND;"/>
548      </type>
549      <target>
550        <msgInfoValue obj="cmd" msgParam="target"/>
551      </target>
552      <LPARAM>
553        <msgInfoValue obj="setfocus" msgParam="target"/>
554      </LPARAM>
555      <WPARAM>
556        <paramValue obj="cmd" param="WPARAM"/>
557      </WPARAM>
558    </genMsg>
559  </rule>
[46]560 
[1]561  <!-- if nothing else, at least switch focus, works only partially -->
562  <rule name="LeftClickChangeFocus">
563    <msg type="&WM_LBUTTONDOWN;">
564      <equals>
565        <winInfoValue obj="this" winParam="class"/>
566        <constValue value="Edit"/>
567      </equals>
568      <store var="clicked"/>
569    </msg>
570    <msg type="&WM_KILLFOCUS;">
571      <store var="killfocus"/>
572    </msg>
573    <msg type="&WM_SETFOCUS;">
574      <equals>
575        <paramValue obj="this" param="WPARAM"/>
576        <paramValue obj="killfocus" param="window.hwnd"/>
577      </equals>
578      <store var="setfocus"/>
579    </msg>
580    <msg type="&WM_COMMAND;">
581      <equals>
582        <paramValue obj="this" param="source"/>
583        <paramValue obj="clicked" param="window.hwnd"/>
584      </equals>
585      <equals>
586        <paramValue obj="this" param="sourceType"/>
587        <constValue value="256"/>
588      </equals>
589      <store var="cmd"/>
590    </msg>
591    <msg type="&WM_LBUTTONUP;">
592      <equals>
593        <paramValue obj="this" param="window.hwnd"/>
594        <paramValue obj="clicked" param="window.hwnd"/>
595      </equals>
596    </msg>
597    <genMsg delay="20">
598      <type>
599        <constValue value="&WM_KILLFOCUS;"/>
600      </type>
601      <target>
602        <msgInfoValue obj="killfocus" msgParam="target"/>
603      </target>
604      <WPARAM>
605        <msgInfoValue obj="setfocus" msgParam="target"/>
606      </WPARAM>
607    </genMsg>
608    <genMsg delay="20">
609      <type>
610        <constValue value="&WM_SETFOCUS;"/>
611      </type>
612      <target>
613        <msgInfoValue obj="setfocus" msgParam="target"/>
614      </target>
615      <WPARAM>
616        <msgInfoValue obj="killfocus" msgParam="target"/>
617      </WPARAM>
618    </genMsg>
619    <genMsg delay="100">
620      <type>
621        <constValue value="&WM_COMMAND;"/>
622      </type>
623      <target>
624        <msgInfoValue obj="cmd" msgParam="target"/>
625      </target>
626      <LPARAM>
627        <msgInfoValue obj="setfocus" msgParam="target"/>
628      </LPARAM>
629      <WPARAM>
630        <paramValue obj="cmd" param="WPARAM"/>
631      </WPARAM>
632    </genMsg>
633  </rule>
634
635
636  <!-- rules regarding keyboard input -->
637  <!-- <rule name="KeyPressed">
638    <msg type="&WM_KEYDOWN;">
639      <store var="keydown"/>
640    </msg>
641    <msg type="&WM_KEYUP;">
642      <store var="keyup"/>
643    </msg>
644    <genMsg delay="20">
645      <storedVar obj="keydown"/>
646    </genMsg>
647    <genMsg delay="100">
648      <storedVar obj="keyup"/>
649    </genMsg>
650    <idinfo>
651      <paramValue obj="keydown" param="key"/>
652    </idinfo>
653  </rule>
654
655  <rule name="SysKeyPressed">
656    <msg type="&WM_SYSKEYDOWN;">
657      <store var="keydown"/>
658    </msg>
659    <msg type="&WM_SYSKEYUP;">
660      <store var="keyup"/>
661    </msg>
662    <genMsg delay="20">
663      <storedVar obj="keydown"/>
664    </genMsg>
665    <genMsg delay="100">
666      <storedVar obj="keyup"/>
667    </genMsg>
668    <idinfo>
669      <paramValue obj="keydown" param="key"/>
670    </idinfo>
671  </rule> -->
672 
673  <!-- Alternate rules -->
674  <rule name="KeyDown">
675    <msg type="&WM_KEYDOWN;">
676      <store var="keydown"/>
677    </msg>
678    <genMsg delay="20">
679      <storedVar obj="keydown"/>
680    </genMsg>
681    <idinfo>
682      <paramValue obj="keydown" param="key"/>
683    </idinfo>
684  </rule>
685
686  <rule name="KeyUp">
687    <msg type="&WM_KEYUP;">
688      <store var="keyup"/>
689    </msg>
690    <genMsg delay="20">
691      <storedVar obj="keyup"/>
692    </genMsg>
693    <idinfo>
694      <paramValue obj="keyup" param="key"/>
695    </idinfo>
696  </rule>
697
698  <rule name="SysKeyDown">
699    <msg type="&WM_SYSKEYDOWN;">
700      <store var="keydown"/>
701    </msg>
702    <genMsg delay="20">
703      <storedVar obj="keydown"/>
704    </genMsg>
705    <idinfo>
706      <paramValue obj="keydown" param="key"/>
707    </idinfo>
708  </rule>
709
710  <rule name="SysKeyUp">
711    <msg type="&WM_SYSKEYUP;">
712      <store var="keyup"/>
713    </msg>
714    <genMsg delay="20">
715      <storedVar obj="keyup"/>
716    </genMsg>
717    <idinfo>
718      <paramValue obj="keyup" param="key"/>
719    </idinfo>
720  </rule>
721
722</rules>
Note: See TracBrowser for help on using the repository browser.