File Coverage

blib/lib/Regexp/Common/Apache2.pm
Criterion Covered Total %
statement 139 162 85.8
branch 0 12 0.0
condition n/a
subroutine 10 21 47.6
pod n/a
total 149 195 76.4


line stmt bran cond sub pod time code
1             ##----------------------------------------------------------------------------
2             ## Module Generic - ~/scripts/Apache2.pm
3             ## Version v0.2.1
4             ## Copyright(c) 2021 DEGUEST Pte. Ltd.
5             ## Author: Jacques Deguest
6             ## Created 2021/02/14
7             ## Modified 2021/03/07
8             ## All rights reserved
9             ##
10             ## This program is free software; you can redistribute it and/or modify it
11             ## under the same terms as Perl itself.
12             ##----------------------------------------------------------------------------
13             package Regexp::Common::Apache2;
14             BEGIN
15             {
16 28     28   3086102 use strict;
  28         139  
  28         1073  
17 28     28   141 use warnings;
  28         51  
  28         787  
18 28     28   140 use warnings::register;
  28         43  
  28         3211  
19 28     28   14632 use parent qw( Exporter );
  28         8878  
  28         138  
20 28     28   2212 use Regexp::Common qw( pattern );
  28         4963  
  28         251  
21 28     28   4971079 our $VERSION = 'v0.2.1';
22 28         85 our $DEBUG = 3;
23             ## Ref:
24 28         204 our $UNARY_OP = qr/(?:(?<=\W)|(?<=^)|(?<=\A))\-[a-zA-Z]/;
25 28         112 our $DIGIT = qr/[0-9]/;
26 28         89 our $REGPATTERN = qr/(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+/;
27 28         81 our $REGFLAGS = qr/[i|s|m|g]+/;
28 28         80 our $REGSEP = qr/[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-]/;
29 28         75 our $FUNCNAME = qr/[a-zA-Z_]\w*/;
30 28         80 our $VARNAME = qr/[a-zA-Z_]\w*/;
31 28         73 our $TEXT = qr/[^[:cntrl:]]/;
32             ## See Regexp::Common::net
33 28         98 our $IPv4 = qr/(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))/;
34 28         73 our $IPv6 = qr/(?:(?|(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4})|(?::(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?::(?:)(?:)(?:)(?:)(?:)(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:):(?:[0-9a-fA-F]{1,4}))|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:)(?:):)|(?:(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:[0-9a-fA-F]{1,4}):(?:)(?:):)))/;
35             ##our $ap_true = do{ bless( \( my $dummy = 1 ) => "Regexp::Common::Apache2::Boolean" ) };
36             ##our $ap_false = do{ bless( \( my $dummy = 0 ) => "Regexp::Common::Apache2::Boolean" ) };
37 28         76 our $ap_true = 1;
38 28         48 our $ap_false = 0;
39 28         109 our @EXPORT_OK = qw( $ap_true $ap_false );
40 28         69 our $REGEXP = {};
41 28         57 our $TRUNK = {};
42             ## Legacy regular expression
43             ##
44 28         57 our $REGEXP_LEGACY = {};
45              
46 28         20650 $REGEXP =
47             {
48             unary_op => $UNARY_OP,
49             ##
50             digit => $DIGIT,
51             ## 1*(DIGIT)
52             digits => qr/${DIGIT}{1,}/,
53             ## "$" DIGIT
54             ## As per Apache apr_expr documentation, regular expression back reference go from 1 to 9 with 0 containing the entire regexp
55             rebackref => qr/(?:^|\A|(?\{)?(?${DIGIT})(?()\})/,
56             ## cstring ; except enclosing regsep
57             regpattern => $REGPATTERN,
58             ## 1*("i" | "s" | "m" | "g")
59             regflags => $REGFLAGS,
60             ## "/" | "#" | "$" | "%" | "^" | "|" | "?" | "!" | "'" | '"' | "," | ";" | ":" | "." | "_" | "-"
61             regsep => $REGSEP,
62             ## "/" regpattern "/" [regflags]
63             ## | "m" regsep regpattern regsep [regflags]
64             regex => qr/
65             (?
66             (?:(?\/)(?${REGPATTERN})\/(?${REGFLAGS})?)
67             |
68             (?:m(?${REGSEP})(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?${REGFLAGS})?)
69             )/x,
70             funcname => $FUNCNAME,
71             varname => $VARNAME,
72             ##
73             text => $TEXT,
74             ## 0*(TEXT)
75             cstring => qr/[^[:cntrl:]]+/,
76             true => qr/[1]/,
77             false => qr/[0]/,
78             ipaddr => qr/(?:$IPv4|$IPv6)/,
79             };
80            
81 28         1788 $REGEXP->{is_true} = qr/
82             (?:
83             (?:\btrue\b)
84             |
85             (?:
86             (?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP->{true}(?=\W|\Z|$)
87             )
88             )
89             /x;
90            
91 28         1084 $REGEXP->{is_false} = qr/
92             (?:
93             (?:\bfalse\b)
94             |
95             (?:
96             (?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP->{false}(?=\W|\Z|$)
97             )
98             )
99             /x;
100            
101             ## stringcomp
102             ## | integercomp
103             ## | unaryop word
104             ## | word binaryop word
105             ## | word "in" listfunc
106             ## | word "=~" regex
107             ## | word "!~" regex
108             ## | word "in" "{" list "}"
109             ## Ref:
110             ##
111             ##
112 28         88624 $REGEXP->{comp} = qr/
113             (?
114             (?:
115             (? (?&stringcomp) )
116             )
117             |
118             (?:
119             (? (?&integercomp) )
120             )
121             |
122             (?
123             (?:(?<=\W)|(?<=^)|(?<=\A))
124             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
125             [[:blank:]\h]+
126             (? (?&word) )
127             )
128             |
129             (?
130             (? (?&word_lax) )
131             [[:blank:]\h]+
132             (?:
133             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
134             |
135             (?:
136             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
137             )
138             )
139             [[:blank:]\h]+
140             (? (?&word_lax) )
141             )
142             |
143             (?
144             (? (?&word) )
145             [[:blank:]\h]+
146             \-?in
147             [[:blank:]\h]+
148             (? (?&listfunc) )
149             )
150             |
151             (?
152             (? (?&word) )
153             [[:blank:]\h]+
154             (? [\=|\!]\~ )
155             [[:blank:]\h]+
156             (?$Regexp::Common::Apache2::REGEXP->{regex})
157             )
158             |
159             (?
160             (? (?&word) )
161             [[:blank:]\h]+
162             \-?in
163             [[:blank:]\h]+
164             \{
165             [[:blank:]\h]*
166             (? (?&words) )
167             [[:blank:]\h]*
168             \}
169             )
170             )
171             (?(DEFINE)
172             (?
173             (?:
174             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
175             (?
176             (?&stringcomp)
177             )
178             )
179             )
180             |
181             (?:
182             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
183             (?
184             (?&integercomp)
185             )
186             )
187             )
188             |
189             (?:
190             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
191             (?:(?<=\W)|(?<=^)|(?<=\A))
192             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
193             [[:blank:]\h]+
194             (?(?&word_lax))
195             )
196             )
197             |
198             (?:
199             (?(?&word_lax))
200             [[:blank:]\h]+
201             (?:
202             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
203             |
204             (?:
205             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
206             )
207             )
208             [[:blank:]\h]+
209             (?(?&word_lax))
210             )
211             |
212             (?:
213             (? (?&word) )
214             [[:blank:]\h]+
215             \-?in
216             [[:blank:]\h]+
217             (? (?&listfunc) )
218             )
219             |
220             (?:
221             (? (?&word) )
222             [[:blank:]\h]+
223             [\=|\!]\~
224             [[:blank:]\h]+
225             $Regexp::Common::Apache2::REGEXP->{regex}
226             )
227             |
228             (?:
229             (? (?&word) )
230             [[:blank:]\h]+
231             \-?in
232             [[:blank:]\h]+
233             \{
234             [[:blank:]\h]*
235             (? (?&words) )
236             [[:blank:]\h]*
237             \}
238             )
239             )
240             (?
241             (?:
242             (?!\bv\()(?[a-zA-Z]\w*)
243             \(
244             [[:blank:]\h]*
245             (?
246             (?> (?&func_words) )?
247             )
248             [[:blank:]\h]*
249             \)
250             )
251             |
252             (?:
253             ( # paren group 1 (full function)
254             (?!\bv\() # Take care to avoid catching modern-style variable v()
255             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
256             (? # paren group 2 (parens)
257             \(
258             (? # paren group 3 (contents of parens)
259             (?:
260             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
261             |
262             (?&paren_group) # Recurse to named capture group
263             )*
264             )
265             \)
266             )
267             )
268             )
269             )
270             (?
271             (?:
272             (?
273             (?:
274             (?&word)
275             [[:blank:]\h]*\,[[:blank:]\h]*
276             )*
277             (?&word)
278             )
279             (?:
280             [[:blank:]\h]*\,[[:blank:]\h]*
281             (? (?&word) )
282             )?
283             )
284             |
285             (?:
286             (? (?&word) )
287             [[:blank:]\h]*\,[[:blank:]\h]*
288             (? (?-2) )
289             )
290             |
291             (?:
292             (? (?&word) )
293             )
294             |
295             (?:
296             ( # paren group 1 (full function)
297             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
298             (? # paren group 2 (parens)
299             \(
300             ( # paren group 3 (contents of parens)
301             (?:
302             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
303             |
304             (?&paren_group) # Recurse to named capture group
305             )*
306             )
307             \)
308             )
309             )
310             )
311             )
312             (?
313             (?:
314             (?(?&word))
315             [[:blank:]\h]+
316             \-?(? (?:eq|ne|lt|le|gt|ge) )
317             [[:blank:]\h]+
318             (?(?&word))
319             )
320             )
321             (?
322             (?:
323             (?!\bv\()(?[a-zA-Z]\w*)
324             \(
325             [[:blank:]\h]*
326             (?
327             (?> (?&func_words) )?
328             )
329             [[:blank:]\h]*
330             \)
331             )
332             |
333             (?:
334             ( # paren group 1 (full function)
335             (?!\bv\() # Take care to avoid catching modern-style variable v()
336             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
337             (? # paren group 2 (parens)
338             \(
339             (? # paren group 3 (contents of parens)
340             (?:
341             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
342             |
343             (?&paren_group) # Recurse to named capture group
344             )*
345             )
346             \)
347             )
348             )
349             )
350             )
351             (?
352             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
353             |
354             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
355             )
356             (?
357             (?:
358             (?: (?&substring) )
359             )
360             |
361             (?:
362             (?:(?&substring)[[:blank:]\h]+(?&string) )
363             )
364             )
365             (?
366             (?:
367             (?(?&word))
368             [[:blank:]\h]+
369             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
370             [[:blank:]\h]+
371             (?(?&word))
372             )
373             )
374             (?
375             (?:
376             (?$Regexp::Common::Apache2::REGEXP->{cstring})
377             )
378             |
379             (?:
380             (? (?&variable) )
381             )
382             |
383             (?:
384             \$(?\{)?(?${DIGIT})(?()\})
385             )
386             )
387             (?
388             (?:
389             \%\{
390             (?:
391             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
392             )
393             \}
394             )
395             |
396             (?:
397             \%\{
398             (?:
399             (?${VARNAME})
400             )
401             \}
402             )
403             |
404             (?:
405             \bv\(
406             [[:blank:]\h]*
407             (?["'])
408             (?:
409             (?${VARNAME})
410             )
411             [[:blank:]\h]*
412             \g{var_quote}
413             \)
414             )
415             )
416             (?
417             (?:
418             (?
419             (?$IPv4)
420             |
421             (?$IPv6)
422             )
423             )
424             |
425             (?:
426             (?$Regexp::Common::Apache2::REGEXP->{digits})
427             )
428             |
429             (?:
430             (?['"])
431             (?:
432             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
433             )
434             \g{word_quote}
435             )
436             |
437             (?:
438             (?['"])
439             (?:
440             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
441             )
442             \g{word_quote}
443             )
444             |
445             (?:
446             (?
447             (?: (?: (?-2)\. )+ (?-2) )
448             )
449             )
450             |
451             (?:
452             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
453             )
454             |
455             (?:
456             (?(?&variable))
457             )
458             |
459             (?:
460             (?(?&function))
461             )
462             |
463             (?:
464             (? $Regexp::Common::Apache2::REGEXP->{regex} )
465             )
466             )
467             (?
468             (?:
469             (?
470             (?$IPv4)
471             |
472             (?$IPv6)
473             )
474             )
475             |
476             (?:
477             (?$Regexp::Common::Apache2::REGEXP->{digits})
478             )
479             |
480             (?:
481             (?['"])
482             (?:
483             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
484             )
485             \g{word_quote}
486             )
487             |
488             (?:
489             (?['"])
490             (?:
491             (? (?&string) )
492             )
493             \g{word_quote}
494             )
495             |
496             (?:
497             (?
498             (?: (?: (?-2)\. )+ (?-2) )
499             )
500             )
501             |
502             (?:
503             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
504             )
505             |
506             (?:
507             (?(?&variable))
508             )
509             |
510             (?:
511             (?(?&function))
512             )
513             |
514             (?:
515             (? $Regexp::Common::Apache2::REGEXP->{regex} )
516             )
517             )
518             (?
519             (?:
520             (?
521             (?:
522             (?&word)
523             [[:blank:]\h]*\,[[:blank:]\h]*
524             )*
525             (?&word)
526             )
527             (?:
528             [[:blank:]\h]*\,[[:blank:]\h]*
529             (? (?&word) )
530             )?
531             )
532             |
533             (?:
534             (? (?&word) )
535             )
536             )
537             )
538             /x;
539              
540             ## "true"
541             ## | "false"
542             ## | "!" cond
543             ## | cond "&&" cond
544             ## | cond "||" cond
545             ## | "(" cond ")"
546             ## | comp
547 28         285040 $REGEXP->{cond} = qr/
548             (?
549             (?:
550             (?$Regexp::Common::Apache2::REGEXP->{is_true})
551             )
552             |
553             (?:
554             (?$Regexp::Common::Apache2::REGEXP->{is_false})
555             )
556             |
557             (?:
558             (?:
559             \(
560             [[:blank:]\h]*
561             (?
562             (?&cond_recur)
563             )
564             [[:blank:]\h]*
565             \)
566             )
567             )
568             |
569             (?:
570             (?\![[:blank:]\h]*(?(?&cond_recur)))
571             )
572             |
573             (?:
574             (?(?=(?:.+?)\&\&(?:.+?))
575             (?
576             (?
577             (?: (?&cond_recur) )+
578             )
579             [[:blank:]\h]*
580             \&\&
581             [[:blank:]\h]*
582             (?
583             (?: (?&cond_recur) )+
584             )
585             )
586             )
587             )
588             |
589             (?:
590             (?(?=(?:.+?)\|\|(?:.+?))
591             (?
592             (?
593             (?: (?&cond_recur) )+
594             )
595             [[:blank:]\h]*
596             \|\|
597             [[:blank:]\h]*
598             (?
599             (?: (?&cond_recur) )+
600             )
601             )
602             )
603             )
604             |
605             (?:
606             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
607             (?(?&comp))
608             )
609             )
610             )
611             (?(DEFINE)
612             (?
613             (?:
614             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
615             (?
616             (?&stringcomp)
617             )
618             )
619             )
620             |
621             (?:
622             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
623             (?
624             (?&integercomp)
625             )
626             )
627             )
628             |
629             (?:
630             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
631             (?:(?<=\W)|(?<=^)|(?<=\A))
632             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
633             [[:blank:]\h]+
634             (?(?&word_lax))
635             )
636             )
637             |
638             (?:
639             (?(?&word_lax))
640             [[:blank:]\h]+
641             (?:
642             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
643             |
644             (?:
645             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
646             )
647             )
648             [[:blank:]\h]+
649             (?(?&word_lax))
650             )
651             |
652             (?:
653             (? (?&word) )
654             [[:blank:]\h]+
655             \-?in
656             [[:blank:]\h]+
657             (? (?&listfunc) )
658             )
659             |
660             (?:
661             (? (?&word) )
662             [[:blank:]\h]+
663             [\=|\!]\~
664             [[:blank:]\h]+
665             $Regexp::Common::Apache2::REGEXP->{regex}
666             )
667             |
668             (?:
669             (? (?&word) )
670             [[:blank:]\h]+
671             \-?in
672             [[:blank:]\h]+
673             \{
674             [[:blank:]\h]*
675             (? (?&words) )
676             [[:blank:]\h]*
677             \}
678             )
679             )
680             (?
681             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
682             |
683             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
684             |
685             (?:
686             \![[:blank:]\h]*
687             (? (?-2) )
688             )
689             |
690             (?:
691             \(
692             [[:blank:]\h]*
693             (? (?&cond) )
694             [[:blank:]\h]*
695             \)
696             )
697             |
698             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
699             (?(?&comp))
700             )
701             |
702             (?(?=(?:.+?)\|\|(?:.+?))
703             (?
704            
705             (? (?: (?-3) )+ )
706             [[:blank:]\h]*
707             \|\|
708             [[:blank:]\h]*
709             (? (?: (?-3) )+ )
710             )
711             )
712             |
713             (?(?=(?:.+?)\&\&(?:.+?))
714             (?
715             (? (?: (?-3) )+ )
716             [[:blank:]\h]*
717             \&\&
718             [[:blank:]\h]*
719             (? (?: (?-3) )+ )
720             )
721             )
722             )
723             (?
724             (?:
725             (?!\bv\()(?[a-zA-Z]\w*)
726             \(
727             [[:blank:]\h]*
728             (?
729             (?> (?&func_words) )?
730             )
731             [[:blank:]\h]*
732             \)
733             )
734             |
735             (?:
736             ( # paren group 1 (full function)
737             (?!\bv\() # Take care to avoid catching modern-style variable v()
738             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
739             (? # paren group 2 (parens)
740             \(
741             (? # paren group 3 (contents of parens)
742             (?:
743             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
744             |
745             (?&paren_group) # Recurse to named capture group
746             )*
747             )
748             \)
749             )
750             )
751             )
752             )
753             (?
754             (?:
755             (?
756             (?:
757             (?&word)
758             [[:blank:]\h]*\,[[:blank:]\h]*
759             )*
760             (?&word)
761             )
762             (?:
763             [[:blank:]\h]*\,[[:blank:]\h]*
764             (? (?&word) )
765             )?
766             )
767             |
768             (?:
769             (? (?&word) )
770             [[:blank:]\h]*\,[[:blank:]\h]*
771             (? (?-2) )
772             )
773             |
774             (?:
775             (? (?&word) )
776             )
777             |
778             (?:
779             ( # paren group 1 (full function)
780             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
781             (? # paren group 2 (parens)
782             \(
783             ( # paren group 3 (contents of parens)
784             (?:
785             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
786             |
787             (?&paren_group) # Recurse to named capture group
788             )*
789             )
790             \)
791             )
792             )
793             )
794             )
795             (?
796             (?:
797             (?(?&word))
798             [[:blank:]\h]+
799             \-?(? (?:eq|ne|lt|le|gt|ge) )
800             [[:blank:]\h]+
801             (?(?&word))
802             )
803             )
804             (?
805             (?:
806             (?!\bv\()(?[a-zA-Z]\w*)
807             \(
808             [[:blank:]\h]*
809             (?
810             (?> (?&func_words) )?
811             )
812             [[:blank:]\h]*
813             \)
814             )
815             |
816             (?:
817             ( # paren group 1 (full function)
818             (?!\bv\() # Take care to avoid catching modern-style variable v()
819             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
820             (? # paren group 2 (parens)
821             \(
822             (? # paren group 3 (contents of parens)
823             (?:
824             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
825             |
826             (?&paren_group) # Recurse to named capture group
827             )*
828             )
829             \)
830             )
831             )
832             )
833             )
834             (?
835             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
836             |
837             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
838             )
839             (?
840             (?:
841             (?: (?&substring) )
842             )
843             |
844             (?:
845             (?:(?&substring)[[:blank:]\h]+(?&string) )
846             )
847             )
848             (?
849             (?:
850             (?(?&word))
851             [[:blank:]\h]+
852             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
853             [[:blank:]\h]+
854             (?(?&word))
855             )
856             )
857             (?
858             (?:
859             (?$Regexp::Common::Apache2::REGEXP->{cstring})
860             )
861             |
862             (?:
863             (? (?&variable) )
864             )
865             |
866             (?:
867             \$(?\{)?(?${DIGIT})(?()\})
868             )
869             )
870             (?
871             (?:
872             \%\{
873             (?:
874             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
875             )
876             \}
877             )
878             |
879             (?:
880             \%\{
881             (?:
882             (?${VARNAME})
883             )
884             \}
885             )
886             |
887             (?:
888             \bv\(
889             [[:blank:]\h]*
890             (?["'])
891             (?:
892             (?${VARNAME})
893             )
894             [[:blank:]\h]*
895             \g{var_quote}
896             \)
897             )
898             )
899             (?
900             (?:
901             (?
902             (?$IPv4)
903             |
904             (?$IPv6)
905             )
906             )
907             |
908             (?:
909             (?$Regexp::Common::Apache2::REGEXP->{digits})
910             )
911             |
912             (?:
913             (?['"])
914             (?:
915             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
916             )
917             \g{word_quote}
918             )
919             |
920             (?:
921             (?['"])
922             (?:
923             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
924             )
925             \g{word_quote}
926             )
927             |
928             (?:
929             (?
930             (?: (?: (?-2)\. )+ (?-2) )
931             )
932             )
933             |
934             (?:
935             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
936             )
937             |
938             (?:
939             (?(?&variable))
940             )
941             |
942             (?:
943             (?(?&function))
944             )
945             |
946             (?:
947             (? $Regexp::Common::Apache2::REGEXP->{regex} )
948             )
949             )
950             (?
951             (?:
952             (?
953             (?$IPv4)
954             |
955             (?$IPv6)
956             )
957             )
958             |
959             (?:
960             (?$Regexp::Common::Apache2::REGEXP->{digits})
961             )
962             |
963             (?:
964             (?['"])
965             (?:
966             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
967             )
968             \g{word_quote}
969             )
970             |
971             (?:
972             (?['"])
973             (?:
974             (? (?&string) )
975             )
976             \g{word_quote}
977             )
978             |
979             (?:
980             (?
981             (?: (?: (?-2)\. )+ (?-2) )
982             )
983             )
984             |
985             (?:
986             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
987             )
988             |
989             (?:
990             (?(?&variable))
991             )
992             |
993             (?:
994             (?(?&function))
995             )
996             |
997             (?:
998             (? $Regexp::Common::Apache2::REGEXP->{regex} )
999             )
1000             )
1001             (?
1002             (?:
1003             (?
1004             (?:
1005             (?&word)
1006             [[:blank:]\h]*\,[[:blank:]\h]*
1007             )*
1008             (?&word)
1009             )
1010             (?:
1011             [[:blank:]\h]*\,[[:blank:]\h]*
1012             (? (?&word) )
1013             )?
1014             )
1015             |
1016             (?:
1017             (? (?&word) )
1018             )
1019             )
1020             )
1021             /xi;
1022              
1023             ## cond
1024             ## | string
1025 28         156216 $REGEXP->{expr} = qr/
1026             (?
1027             (?:
1028             (?(?&cond))
1029             )
1030             |
1031             (?:
1032             (?(?&string))
1033             )
1034             )
1035             (?(DEFINE)
1036             (?
1037             (?:
1038             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1039             (?
1040             (?&stringcomp)
1041             )
1042             )
1043             )
1044             |
1045             (?:
1046             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1047             (?
1048             (?&integercomp)
1049             )
1050             )
1051             )
1052             |
1053             (?:
1054             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
1055             (?:(?<=\W)|(?<=^)|(?<=\A))
1056             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1057             [[:blank:]\h]+
1058             (?(?&word_lax))
1059             )
1060             )
1061             |
1062             (?:
1063             (?(?&word_lax))
1064             [[:blank:]\h]+
1065             (?:
1066             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1067             |
1068             (?:
1069             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
1070             )
1071             )
1072             [[:blank:]\h]+
1073             (?(?&word_lax))
1074             )
1075             |
1076             (?:
1077             (? (?&word) )
1078             [[:blank:]\h]+
1079             \-?in
1080             [[:blank:]\h]+
1081             (? (?&listfunc) )
1082             )
1083             |
1084             (?:
1085             (? (?&word) )
1086             [[:blank:]\h]+
1087             [\=|\!]\~
1088             [[:blank:]\h]+
1089             $Regexp::Common::Apache2::REGEXP->{regex}
1090             )
1091             |
1092             (?:
1093             (? (?&word) )
1094             [[:blank:]\h]+
1095             \-?in
1096             [[:blank:]\h]+
1097             \{
1098             [[:blank:]\h]*
1099             (? (?&words) )
1100             [[:blank:]\h]*
1101             \}
1102             )
1103             )
1104             (?
1105             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
1106             |
1107             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
1108             |
1109             (?:
1110             \![[:blank:]\h]*
1111             (? (?-2) )
1112             )
1113             |
1114             (?:
1115             \(
1116             [[:blank:]\h]*
1117             (? (?&cond) )
1118             [[:blank:]\h]*
1119             \)
1120             )
1121             |
1122             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
1123             (?(?&comp))
1124             )
1125             |
1126             (?(?=(?:.+?)\|\|(?:.+?))
1127             (?
1128            
1129             (? (?: (?-3) )+ )
1130             [[:blank:]\h]*
1131             \|\|
1132             [[:blank:]\h]*
1133             (? (?: (?-3) )+ )
1134             )
1135             )
1136             |
1137             (?(?=(?:.+?)\&\&(?:.+?))
1138             (?
1139             (? (?: (?-3) )+ )
1140             [[:blank:]\h]*
1141             \&\&
1142             [[:blank:]\h]*
1143             (? (?: (?-3) )+ )
1144             )
1145             )
1146             )
1147             (?
1148             (?:
1149             (?!\bv\()(?[a-zA-Z]\w*)
1150             \(
1151             [[:blank:]\h]*
1152             (?
1153             (?> (?&func_words) )?
1154             )
1155             [[:blank:]\h]*
1156             \)
1157             )
1158             |
1159             (?:
1160             ( # paren group 1 (full function)
1161             (?!\bv\() # Take care to avoid catching modern-style variable v()
1162             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1163             (? # paren group 2 (parens)
1164             \(
1165             (? # paren group 3 (contents of parens)
1166             (?:
1167             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1168             |
1169             (?&paren_group) # Recurse to named capture group
1170             )*
1171             )
1172             \)
1173             )
1174             )
1175             )
1176             )
1177             (?
1178             (?:
1179             (?
1180             (?:
1181             (?&word)
1182             [[:blank:]\h]*\,[[:blank:]\h]*
1183             )*
1184             (?&word)
1185             )
1186             (?:
1187             [[:blank:]\h]*\,[[:blank:]\h]*
1188             (? (?&word) )
1189             )?
1190             )
1191             |
1192             (?:
1193             (? (?&word) )
1194             [[:blank:]\h]*\,[[:blank:]\h]*
1195             (? (?-2) )
1196             )
1197             |
1198             (?:
1199             (? (?&word) )
1200             )
1201             |
1202             (?:
1203             ( # paren group 1 (full function)
1204             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1205             (? # paren group 2 (parens)
1206             \(
1207             ( # paren group 3 (contents of parens)
1208             (?:
1209             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1210             |
1211             (?&paren_group) # Recurse to named capture group
1212             )*
1213             )
1214             \)
1215             )
1216             )
1217             )
1218             )
1219             (?
1220             (?:
1221             (?(?&word))
1222             [[:blank:]\h]+
1223             \-?(? (?:eq|ne|lt|le|gt|ge) )
1224             [[:blank:]\h]+
1225             (?(?&word))
1226             )
1227             )
1228             (?
1229             (?:
1230             (?!\bv\()(?[a-zA-Z]\w*)
1231             \(
1232             [[:blank:]\h]*
1233             (?
1234             (?> (?&func_words) )?
1235             )
1236             [[:blank:]\h]*
1237             \)
1238             )
1239             |
1240             (?:
1241             ( # paren group 1 (full function)
1242             (?!\bv\() # Take care to avoid catching modern-style variable v()
1243             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1244             (? # paren group 2 (parens)
1245             \(
1246             (? # paren group 3 (contents of parens)
1247             (?:
1248             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1249             |
1250             (?&paren_group) # Recurse to named capture group
1251             )*
1252             )
1253             \)
1254             )
1255             )
1256             )
1257             )
1258             (?
1259             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
1260             |
1261             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
1262             )
1263             (?
1264             (?:
1265             (?: (?&substring) )
1266             )
1267             |
1268             (?:
1269             (?:(?&substring)[[:blank:]\h]+(?&string) )
1270             )
1271             )
1272             (?
1273             (?:
1274             (?(?&word))
1275             [[:blank:]\h]+
1276             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
1277             [[:blank:]\h]+
1278             (?(?&word))
1279             )
1280             )
1281             (?
1282             (?:
1283             (?$Regexp::Common::Apache2::REGEXP->{cstring})
1284             )
1285             |
1286             (?:
1287             (? (?&variable) )
1288             )
1289             |
1290             (?:
1291             \$(?\{)?(?${DIGIT})(?()\})
1292             )
1293             )
1294             (?
1295             (?:
1296             \%\{
1297             (?:
1298             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
1299             )
1300             \}
1301             )
1302             |
1303             (?:
1304             \%\{
1305             (?:
1306             (?${VARNAME})
1307             )
1308             \}
1309             )
1310             |
1311             (?:
1312             \bv\(
1313             [[:blank:]\h]*
1314             (?["'])
1315             (?:
1316             (?${VARNAME})
1317             )
1318             [[:blank:]\h]*
1319             \g{var_quote}
1320             \)
1321             )
1322             )
1323             (?
1324             (?:
1325             (?
1326             (?$IPv4)
1327             |
1328             (?$IPv6)
1329             )
1330             )
1331             |
1332             (?:
1333             (?$Regexp::Common::Apache2::REGEXP->{digits})
1334             )
1335             |
1336             (?:
1337             (?['"])
1338             (?:
1339             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1340             )
1341             \g{word_quote}
1342             )
1343             |
1344             (?:
1345             (?['"])
1346             (?:
1347             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1348             )
1349             \g{word_quote}
1350             )
1351             |
1352             (?:
1353             (?
1354             (?: (?: (?-2)\. )+ (?-2) )
1355             )
1356             )
1357             |
1358             (?:
1359             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1360             )
1361             |
1362             (?:
1363             (?(?&variable))
1364             )
1365             |
1366             (?:
1367             (?(?&function))
1368             )
1369             |
1370             (?:
1371             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1372             )
1373             )
1374             (?
1375             (?:
1376             (?
1377             (?$IPv4)
1378             |
1379             (?$IPv6)
1380             )
1381             )
1382             |
1383             (?:
1384             (?$Regexp::Common::Apache2::REGEXP->{digits})
1385             )
1386             |
1387             (?:
1388             (?['"])
1389             (?:
1390             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1391             )
1392             \g{word_quote}
1393             )
1394             |
1395             (?:
1396             (?['"])
1397             (?:
1398             (? (?&string) )
1399             )
1400             \g{word_quote}
1401             )
1402             |
1403             (?:
1404             (?
1405             (?: (?: (?-2)\. )+ (?-2) )
1406             )
1407             )
1408             |
1409             (?:
1410             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1411             )
1412             |
1413             (?:
1414             (?(?&variable))
1415             )
1416             |
1417             (?:
1418             (?(?&function))
1419             )
1420             |
1421             (?:
1422             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1423             )
1424             )
1425             (?
1426             (?:
1427             (?
1428             (?:
1429             (?&word)
1430             [[:blank:]\h]*\,[[:blank:]\h]*
1431             )*
1432             (?&word)
1433             )
1434             (?:
1435             [[:blank:]\h]*\,[[:blank:]\h]*
1436             (? (?&word) )
1437             )?
1438             )
1439             |
1440             (?:
1441             (? (?&word) )
1442             )
1443             )
1444             )
1445             /x;
1446              
1447             ## funcname "(" words ")"
1448             ## -> Same as LISTFUNC
1449 28         66094 $REGEXP->{function} = qr/
1450             (?
1451             (?:
1452             (?!\bv\()(?[a-zA-Z]\w*)
1453             \(
1454             [[:blank:]\h]*
1455             (?
1456             (?> (?&func_words) )?
1457             )
1458             [[:blank:]\h]*
1459             \)
1460             )
1461             |
1462             (?:
1463             ( # paren group 1 (full function)
1464             (?!\bv\() # Take care to avoid catching modern-style variable v()
1465             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1466             (? # paren group 2 (parens)
1467             \(
1468             (? # paren group 3 (contents of parens)
1469             (?:
1470             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1471             |
1472             (?&paren_group) # Recurse to named capture group
1473             )*
1474             )
1475             \)
1476             )
1477             )
1478             )
1479             )
1480             (?(DEFINE)
1481             (?
1482             (?:
1483             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1484             (?
1485             (?&stringcomp)
1486             )
1487             )
1488             )
1489             |
1490             (?:
1491             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1492             (?
1493             (?&integercomp)
1494             )
1495             )
1496             )
1497             |
1498             (?:
1499             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
1500             (?:(?<=\W)|(?<=^)|(?<=\A))
1501             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1502             [[:blank:]\h]+
1503             (?(?&word_lax))
1504             )
1505             )
1506             |
1507             (?:
1508             (?(?&word_lax))
1509             [[:blank:]\h]+
1510             (?:
1511             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1512             |
1513             (?:
1514             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
1515             )
1516             )
1517             [[:blank:]\h]+
1518             (?(?&word_lax))
1519             )
1520             |
1521             (?:
1522             (? (?&word) )
1523             [[:blank:]\h]+
1524             \-?in
1525             [[:blank:]\h]+
1526             (? (?&listfunc) )
1527             )
1528             |
1529             (?:
1530             (? (?&word) )
1531             [[:blank:]\h]+
1532             [\=|\!]\~
1533             [[:blank:]\h]+
1534             $Regexp::Common::Apache2::REGEXP->{regex}
1535             )
1536             |
1537             (?:
1538             (? (?&word) )
1539             [[:blank:]\h]+
1540             \-?in
1541             [[:blank:]\h]+
1542             \{
1543             [[:blank:]\h]*
1544             (? (?&words) )
1545             [[:blank:]\h]*
1546             \}
1547             )
1548             )
1549             (?
1550             (?:
1551             (?!\bv\()(?[a-zA-Z]\w*)
1552             \(
1553             [[:blank:]\h]*
1554             (?
1555             (?> (?&func_words) )?
1556             )
1557             [[:blank:]\h]*
1558             \)
1559             )
1560             |
1561             (?:
1562             ( # paren group 1 (full function)
1563             (?!\bv\() # Take care to avoid catching modern-style variable v()
1564             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1565             (? # paren group 2 (parens)
1566             \(
1567             (? # paren group 3 (contents of parens)
1568             (?:
1569             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1570             |
1571             (?&paren_group) # Recurse to named capture group
1572             )*
1573             )
1574             \)
1575             )
1576             )
1577             )
1578             )
1579             (?
1580             (?:
1581             (?
1582             (?:
1583             (?&word)
1584             [[:blank:]\h]*\,[[:blank:]\h]*
1585             )*
1586             (?&word)
1587             )
1588             (?:
1589             [[:blank:]\h]*\,[[:blank:]\h]*
1590             (? (?&word) )
1591             )?
1592             )
1593             |
1594             (?:
1595             (? (?&word) )
1596             [[:blank:]\h]*\,[[:blank:]\h]*
1597             (? (?-2) )
1598             )
1599             |
1600             (?:
1601             (? (?&word) )
1602             )
1603             |
1604             (?:
1605             ( # paren group 1 (full function)
1606             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1607             (? # paren group 2 (parens)
1608             \(
1609             ( # paren group 3 (contents of parens)
1610             (?:
1611             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1612             |
1613             (?&paren_group) # Recurse to named capture group
1614             )*
1615             )
1616             \)
1617             )
1618             )
1619             )
1620             )
1621             (?
1622             (?:
1623             (?(?&word))
1624             [[:blank:]\h]+
1625             \-?(? (?:eq|ne|lt|le|gt|ge) )
1626             [[:blank:]\h]+
1627             (?(?&word))
1628             )
1629             )
1630             (?
1631             (?:
1632             (?!\bv\()(?[a-zA-Z]\w*)
1633             \(
1634             [[:blank:]\h]*
1635             (?
1636             (?> (?&func_words) )?
1637             )
1638             [[:blank:]\h]*
1639             \)
1640             )
1641             |
1642             (?:
1643             ( # paren group 1 (full function)
1644             (?!\bv\() # Take care to avoid catching modern-style variable v()
1645             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1646             (? # paren group 2 (parens)
1647             \(
1648             (? # paren group 3 (contents of parens)
1649             (?:
1650             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1651             |
1652             (?&paren_group) # Recurse to named capture group
1653             )*
1654             )
1655             \)
1656             )
1657             )
1658             )
1659             )
1660             (?
1661             (?:
1662             (?: (?&substring) )
1663             )
1664             |
1665             (?:
1666             (?:(?&substring)[[:blank:]\h]+(?&string) )
1667             )
1668             )
1669             (?
1670             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
1671             |
1672             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
1673             )
1674             (?
1675             (?:
1676             (?(?&word))
1677             [[:blank:]\h]+
1678             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
1679             [[:blank:]\h]+
1680             (?(?&word))
1681             )
1682             )
1683             (?
1684             (?:
1685             (?$Regexp::Common::Apache2::REGEXP->{cstring})
1686             )
1687             |
1688             (?:
1689             (? (?&variable) )
1690             )
1691             |
1692             (?:
1693             \$(?\{)?(?${DIGIT})(?()\})
1694             )
1695             )
1696             (?
1697             (?:
1698             \%\{
1699             (?:
1700             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
1701             )
1702             \}
1703             )
1704             |
1705             (?:
1706             \%\{
1707             (?:
1708             (?${VARNAME})
1709             )
1710             \}
1711             )
1712             |
1713             (?:
1714             \bv\(
1715             [[:blank:]\h]*
1716             (?["'])
1717             (?:
1718             (?${VARNAME})
1719             )
1720             [[:blank:]\h]*
1721             \g{var_quote}
1722             \)
1723             )
1724             )
1725             (?
1726             (?:
1727             (?
1728             (?$IPv4)
1729             |
1730             (?$IPv6)
1731             )
1732             )
1733             |
1734             (?:
1735             (?$Regexp::Common::Apache2::REGEXP->{digits})
1736             )
1737             |
1738             (?:
1739             (?['"])
1740             (?:
1741             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1742             )
1743             \g{word_quote}
1744             )
1745             |
1746             (?:
1747             (?['"])
1748             (?:
1749             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1750             )
1751             \g{word_quote}
1752             )
1753             |
1754             (?:
1755             (?
1756             (?: (?: (?-2)\. )+ (?-2) )
1757             )
1758             )
1759             |
1760             (?:
1761             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1762             )
1763             |
1764             (?:
1765             (?(?&variable))
1766             )
1767             |
1768             (?:
1769             (?(?&function_recur))
1770             )
1771             |
1772             (?:
1773             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1774             )
1775             )
1776             (?
1777             (?:
1778             (?
1779             (?$IPv4)
1780             |
1781             (?$IPv6)
1782             )
1783             )
1784             |
1785             (?:
1786             (?$Regexp::Common::Apache2::REGEXP->{digits})
1787             )
1788             |
1789             (?:
1790             (?['"])
1791             (?:
1792             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1793             )
1794             \g{word_quote}
1795             )
1796             |
1797             (?:
1798             (?['"])
1799             (?:
1800             (? (?&string) )
1801             )
1802             \g{word_quote}
1803             )
1804             |
1805             (?:
1806             (?
1807             (?: (?: (?-2)\. )+ (?-2) )
1808             )
1809             )
1810             |
1811             (?:
1812             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1813             )
1814             |
1815             (?:
1816             (?(?&variable))
1817             )
1818             |
1819             (?:
1820             (?(?&function_recur))
1821             )
1822             |
1823             (?:
1824             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1825             )
1826             )
1827             (?
1828             (?:
1829             (?
1830             (?:
1831             (?&word)
1832             [[:blank:]\h]*\,[[:blank:]\h]*
1833             )*
1834             (?&word)
1835             )
1836             (?:
1837             [[:blank:]\h]*\,[[:blank:]\h]*
1838             (? (?&word) )
1839             )?
1840             )
1841             |
1842             (?:
1843             (? (?&word) )
1844             )
1845             )
1846             )
1847             /x;
1848              
1849             ## word "-eq" word | word "eq" word
1850             ## | word "-ne" word | word "ne" word
1851             ## | word "-lt" word | word "lt" word
1852             ## | word "-le" word | word "le" word
1853             ## | word "-gt" word | word "gt" word
1854             ## | word "-ge" word | word "ge" word
1855 28         63599 $REGEXP->{integercomp} = qr/
1856             (?
1857             (?(?&word))
1858             [[:blank:]\h]+
1859             \-?(?eq|ne|lt|le|gt|ge)
1860             [[:blank:]\h]+
1861             (?(?&word))
1862             )
1863             (?(DEFINE)
1864             (?
1865             (?:
1866             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1867             (?
1868             (?&stringcomp)
1869             )
1870             )
1871             )
1872             |
1873             (?:
1874             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1875             (?
1876             (?&integercomp_recur)
1877             )
1878             )
1879             )
1880             |
1881             (?:
1882             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
1883             (?:(?<=\W)|(?<=^)|(?<=\A))
1884             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1885             [[:blank:]\h]+
1886             (?(?&word_lax))
1887             )
1888             )
1889             |
1890             (?:
1891             (?(?&word_lax))
1892             [[:blank:]\h]+
1893             (?:
1894             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1895             |
1896             (?:
1897             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
1898             )
1899             )
1900             [[:blank:]\h]+
1901             (?(?&word_lax))
1902             )
1903             |
1904             (?:
1905             (? (?&word) )
1906             [[:blank:]\h]+
1907             \-?in
1908             [[:blank:]\h]+
1909             (? (?&listfunc) )
1910             )
1911             |
1912             (?:
1913             (? (?&word) )
1914             [[:blank:]\h]+
1915             [\=|\!]\~
1916             [[:blank:]\h]+
1917             $Regexp::Common::Apache2::REGEXP->{regex}
1918             )
1919             |
1920             (?:
1921             (? (?&word) )
1922             [[:blank:]\h]+
1923             \-?in
1924             [[:blank:]\h]+
1925             \{
1926             [[:blank:]\h]*
1927             (? (?&words) )
1928             [[:blank:]\h]*
1929             \}
1930             )
1931             )
1932             (?
1933             (?:
1934             (?!\bv\()(?[a-zA-Z]\w*)
1935             \(
1936             [[:blank:]\h]*
1937             (?
1938             (?> (?&func_words) )?
1939             )
1940             [[:blank:]\h]*
1941             \)
1942             )
1943             |
1944             (?:
1945             ( # paren group 1 (full function)
1946             (?!\bv\() # Take care to avoid catching modern-style variable v()
1947             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
1948             (? # paren group 2 (parens)
1949             \(
1950             (? # paren group 3 (contents of parens)
1951             (?:
1952             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1953             |
1954             (?&paren_group) # Recurse to named capture group
1955             )*
1956             )
1957             \)
1958             )
1959             )
1960             )
1961             )
1962             (?
1963             (?:
1964             (?
1965             (?:
1966             (?&word)
1967             [[:blank:]\h]*\,[[:blank:]\h]*
1968             )*
1969             (?&word)
1970             )
1971             (?:
1972             [[:blank:]\h]*\,[[:blank:]\h]*
1973             (? (?&word) )
1974             )?
1975             )
1976             |
1977             (?:
1978             (? (?&word) )
1979             [[:blank:]\h]*\,[[:blank:]\h]*
1980             (? (?-2) )
1981             )
1982             |
1983             (?:
1984             (? (?&word) )
1985             )
1986             |
1987             (?:
1988             ( # paren group 1 (full function)
1989             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1990             (? # paren group 2 (parens)
1991             \(
1992             ( # paren group 3 (contents of parens)
1993             (?:
1994             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1995             |
1996             (?&paren_group) # Recurse to named capture group
1997             )*
1998             )
1999             \)
2000             )
2001             )
2002             )
2003             )
2004             (?
2005             (?:
2006             (?(?&word))
2007             [[:blank:]\h]+
2008             \-?(? (?:eq|ne|lt|le|gt|ge) )
2009             [[:blank:]\h]+
2010             (?(?&word))
2011             )
2012             )
2013             (?
2014             (?:
2015             (?!\bv\()(?[a-zA-Z]\w*)
2016             \(
2017             [[:blank:]\h]*
2018             (?
2019             (?> (?&func_words) )?
2020             )
2021             [[:blank:]\h]*
2022             \)
2023             )
2024             |
2025             (?:
2026             ( # paren group 1 (full function)
2027             (?!\bv\() # Take care to avoid catching modern-style variable v()
2028             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2029             (? # paren group 2 (parens)
2030             \(
2031             (? # paren group 3 (contents of parens)
2032             (?:
2033             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2034             |
2035             (?&paren_group) # Recurse to named capture group
2036             )*
2037             )
2038             \)
2039             )
2040             )
2041             )
2042             )
2043             (?
2044             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2045             |
2046             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2047             )
2048             (?
2049             (?:
2050             (?: (?&substring) )
2051             )
2052             |
2053             (?:
2054             (?:(?&substring)[[:blank:]\h]+(?&string) )
2055             )
2056             )
2057             (?
2058             (?:
2059             (?(?&word))
2060             [[:blank:]\h]+
2061             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2062             [[:blank:]\h]+
2063             (?(?&word))
2064             )
2065             )
2066             (?
2067             (?:
2068             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2069             )
2070             |
2071             (?:
2072             (? (?&variable) )
2073             )
2074             |
2075             (?:
2076             \$(?\{)?(?${DIGIT})(?()\})
2077             )
2078             )
2079             (?
2080             (?:
2081             \%\{
2082             (?:
2083             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2084             )
2085             \}
2086             )
2087             |
2088             (?:
2089             \%\{
2090             (?:
2091             (?${VARNAME})
2092             )
2093             \}
2094             )
2095             |
2096             (?:
2097             \bv\(
2098             [[:blank:]\h]*
2099             (?["'])
2100             (?:
2101             (?${VARNAME})
2102             )
2103             [[:blank:]\h]*
2104             \g{var_quote}
2105             \)
2106             )
2107             )
2108             (?
2109             (?:
2110             (?
2111             (?$IPv4)
2112             |
2113             (?$IPv6)
2114             )
2115             )
2116             |
2117             (?:
2118             (?$Regexp::Common::Apache2::REGEXP->{digits})
2119             )
2120             |
2121             (?:
2122             (?['"])
2123             (?:
2124             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2125             )
2126             \g{word_quote}
2127             )
2128             |
2129             (?:
2130             (?['"])
2131             (?:
2132             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2133             )
2134             \g{word_quote}
2135             )
2136             |
2137             (?:
2138             (?
2139             (?: (?: (?-2)\. )+ (?-2) )
2140             )
2141             )
2142             |
2143             (?:
2144             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2145             )
2146             |
2147             (?:
2148             (?(?&variable))
2149             )
2150             |
2151             (?:
2152             (?(?&function))
2153             )
2154             |
2155             (?:
2156             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2157             )
2158             )
2159             (?
2160             (?:
2161             (?
2162             (?$IPv4)
2163             |
2164             (?$IPv6)
2165             )
2166             )
2167             |
2168             (?:
2169             (?$Regexp::Common::Apache2::REGEXP->{digits})
2170             )
2171             |
2172             (?:
2173             (?['"])
2174             (?:
2175             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2176             )
2177             \g{word_quote}
2178             )
2179             |
2180             (?:
2181             (?['"])
2182             (?:
2183             (? (?&string) )
2184             )
2185             \g{word_quote}
2186             )
2187             |
2188             (?:
2189             (?
2190             (?: (?: (?-2)\. )+ (?-2) )
2191             )
2192             )
2193             |
2194             (?:
2195             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2196             )
2197             |
2198             (?:
2199             (?(?&variable))
2200             )
2201             |
2202             (?:
2203             (?(?&function))
2204             )
2205             |
2206             (?:
2207             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2208             )
2209             )
2210             (?
2211             (?:
2212             (?
2213             (?:
2214             (?&word)
2215             [[:blank:]\h]*\,[[:blank:]\h]*
2216             )*
2217             (?&word)
2218             )
2219             (?:
2220             [[:blank:]\h]*\,[[:blank:]\h]*
2221             (? (?&word) )
2222             )?
2223             )
2224             |
2225             (?:
2226             (? (?&word) )
2227             )
2228             )
2229             )
2230             /x;
2231              
2232             ## listfuncname "(" words ")"
2233             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
2234             #(??{$Regexp::Common::Apache2::REGEXP->{words}})
2235 28         85580 $REGEXP->{listfunc} = qr/
2236             (?
2237             (?:
2238             (?!\bv\()(?[a-zA-Z]\w*)
2239             \(
2240             [[:blank:]\h]*
2241             (?
2242             (?> (?&func_words) )?
2243             )
2244             [[:blank:]\h]*
2245             \)
2246             )
2247             |
2248             (?:
2249             ( # paren group 1 (full function)
2250             (?!\bv\() # Take care to avoid catching modern-style variable v()
2251             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2252             (? # paren group 2 (parens)
2253             \(
2254             (? # paren group 3 (contents of parens)
2255             (?:
2256             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2257             |
2258             (?&paren_group) # Recurse to named capture group
2259             )*
2260             )
2261             \)
2262             )
2263             )
2264             )
2265             )
2266             (?(DEFINE)
2267             (?
2268             (?:
2269             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2270             (?
2271             (?&stringcomp)
2272             )
2273             )
2274             )
2275             |
2276             (?:
2277             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2278             (?
2279             (?&integercomp)
2280             )
2281             )
2282             )
2283             |
2284             (?:
2285             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
2286             (?:(?<=\W)|(?<=^)|(?<=\A))
2287             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
2288             [[:blank:]\h]+
2289             (?(?&word_lax))
2290             )
2291             )
2292             |
2293             (?:
2294             (?(?&word_lax))
2295             [[:blank:]\h]+
2296             (?:
2297             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
2298             |
2299             (?:
2300             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
2301             )
2302             )
2303             [[:blank:]\h]+
2304             (?(?&word_lax))
2305             )
2306             |
2307             (?:
2308             (? (?&word) )
2309             [[:blank:]\h]+
2310             \-?in
2311             [[:blank:]\h]+
2312             (? (?&listfunc_recur) )
2313             )
2314             |
2315             (?:
2316             (? (?&word) )
2317             [[:blank:]\h]+
2318             [\=|\!]\~
2319             [[:blank:]\h]+
2320             $Regexp::Common::Apache2::REGEXP->{regex}
2321             )
2322             |
2323             (?:
2324             (? (?&word) )
2325             [[:blank:]\h]+
2326             \-?in
2327             [[:blank:]\h]+
2328             \{
2329             [[:blank:]\h]*
2330             (? (?&words) )
2331             [[:blank:]\h]*
2332             \}
2333             )
2334             )
2335             (?
2336             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
2337             |
2338             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
2339             |
2340             (?:
2341             \![[:blank:]\h]*
2342             (? (?-2) )
2343             )
2344             |
2345             (?:
2346             \(
2347             [[:blank:]\h]*
2348             (? (?&cond) )
2349             [[:blank:]\h]*
2350             \)
2351             )
2352             |
2353             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
2354             (?(?&comp))
2355             )
2356             |
2357             (?(?=(?:.+?)\|\|(?:.+?))
2358             (?
2359            
2360             (? (?: (?-3) )+ )
2361             [[:blank:]\h]*
2362             \|\|
2363             [[:blank:]\h]*
2364             (? (?: (?-3) )+ )
2365             )
2366             )
2367             |
2368             (?(?=(?:.+?)\&\&(?:.+?))
2369             (?
2370             (? (?: (?-3) )+ )
2371             [[:blank:]\h]*
2372             \&\&
2373             [[:blank:]\h]*
2374             (? (?: (?-3) )+ )
2375             )
2376             )
2377             )
2378             (?
2379             (?:
2380             (?!\bv\()(?[a-zA-Z]\w*)
2381             \(
2382             [[:blank:]\h]*
2383             (?
2384             (?> (?&func_words) )?
2385             )
2386             [[:blank:]\h]*
2387             \)
2388             )
2389             |
2390             (?:
2391             ( # paren group 1 (full function)
2392             (?!\bv\() # Take care to avoid catching modern-style variable v()
2393             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2394             (? # paren group 2 (parens)
2395             \(
2396             (? # paren group 3 (contents of parens)
2397             (?:
2398             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2399             |
2400             (?&paren_group) # Recurse to named capture group
2401             )*
2402             )
2403             \)
2404             )
2405             )
2406             )
2407             )
2408             (?
2409             (?:
2410             (?
2411             (?:
2412             (?&word)
2413             [[:blank:]\h]*\,[[:blank:]\h]*
2414             )*
2415             (?&word)
2416             )
2417             (?:
2418             [[:blank:]\h]*\,[[:blank:]\h]*
2419             (? (?&word) )
2420             )?
2421             )
2422             |
2423             (?:
2424             (? (?&word) )
2425             [[:blank:]\h]*\,[[:blank:]\h]*
2426             (? (?-2) )
2427             )
2428             |
2429             (?:
2430             (? (?&word) )
2431             )
2432             |
2433             (?:
2434             ( # paren group 1 (full function)
2435             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2436             (? # paren group 2 (parens)
2437             \(
2438             ( # paren group 3 (contents of parens)
2439             (?:
2440             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2441             |
2442             (?&paren_group) # Recurse to named capture group
2443             )*
2444             )
2445             \)
2446             )
2447             )
2448             )
2449             )
2450             (?
2451             (?:
2452             (?(?&word))
2453             [[:blank:]\h]+
2454             \-?(? (?:eq|ne|lt|le|gt|ge) )
2455             [[:blank:]\h]+
2456             (?(?&word))
2457             )
2458             )
2459             (?
2460             (?:
2461             (?!\bv\()(?[a-zA-Z]\w*)
2462             \(
2463             [[:blank:]\h]*
2464             (?
2465             (?> (?&func_words) )?
2466             )
2467             [[:blank:]\h]*
2468             \)
2469             )
2470             |
2471             (?:
2472             ( # paren group 1 (full function)
2473             (?!\bv\() # Take care to avoid catching modern-style variable v()
2474             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2475             (? # paren group 2 (parens)
2476             \(
2477             (? # paren group 3 (contents of parens)
2478             (?:
2479             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2480             |
2481             (?&paren_group) # Recurse to named capture group
2482             )*
2483             )
2484             \)
2485             )
2486             )
2487             )
2488             )
2489             (?
2490             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2491             |
2492             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2493             )
2494             (?
2495             (?:
2496             (?: (?&substring) )
2497             )
2498             |
2499             (?:
2500             (?:(?&substring)[[:blank:]\h]+(?&string) )
2501             )
2502             )
2503             (?
2504             (?:
2505             (?(?&word))
2506             [[:blank:]\h]+
2507             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2508             [[:blank:]\h]+
2509             (?(?&word))
2510             )
2511             )
2512             (?
2513             (?:
2514             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2515             )
2516             |
2517             (?:
2518             (? (?&variable) )
2519             )
2520             |
2521             (?:
2522             \$(?\{)?(?${DIGIT})(?()\})
2523             )
2524             )
2525             (?
2526             (?:
2527             \%\{
2528             (?:
2529             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2530             )
2531             \}
2532             )
2533             |
2534             (?:
2535             \%\{
2536             (?:
2537             (?${VARNAME})
2538             )
2539             \}
2540             )
2541             |
2542             (?:
2543             \bv\(
2544             [[:blank:]\h]*
2545             (?["'])
2546             (?:
2547             (?${VARNAME})
2548             )
2549             [[:blank:]\h]*
2550             \g{var_quote}
2551             \)
2552             )
2553             )
2554             (?
2555             (?:
2556             (?
2557             (?$IPv4)
2558             |
2559             (?$IPv6)
2560             )
2561             )
2562             |
2563             (?:
2564             (?$Regexp::Common::Apache2::REGEXP->{digits})
2565             )
2566             |
2567             (?:
2568             (?['"])
2569             (?:
2570             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2571             )
2572             \g{word_quote}
2573             )
2574             |
2575             (?:
2576             (?['"])
2577             (?:
2578             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2579             )
2580             \g{word_quote}
2581             )
2582             |
2583             (?:
2584             (?
2585             (?: (?: (?-2)\. )+ (?-2) )
2586             )
2587             )
2588             |
2589             (?:
2590             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2591             )
2592             |
2593             (?:
2594             (?(?&variable))
2595             )
2596             |
2597             (?:
2598             (?(?&function))
2599             )
2600             |
2601             (?:
2602             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2603             )
2604             )
2605             (?
2606             (?:
2607             (?
2608             (?$IPv4)
2609             |
2610             (?$IPv6)
2611             )
2612             )
2613             |
2614             (?:
2615             (?$Regexp::Common::Apache2::REGEXP->{digits})
2616             )
2617             |
2618             (?:
2619             (?['"])
2620             (?:
2621             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2622             )
2623             \g{word_quote}
2624             )
2625             |
2626             (?:
2627             (?['"])
2628             (?:
2629             (? (?&string) )
2630             )
2631             \g{word_quote}
2632             )
2633             |
2634             (?:
2635             (?
2636             (?: (?: (?-2)\. )+ (?-2) )
2637             )
2638             )
2639             |
2640             (?:
2641             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2642             )
2643             |
2644             (?:
2645             (?(?&variable))
2646             )
2647             |
2648             (?:
2649             (?(?&function))
2650             )
2651             |
2652             (?:
2653             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2654             )
2655             )
2656             (?
2657             (?:
2658             (?
2659             (?:
2660             (?&word)
2661             [[:blank:]\h]*\,[[:blank:]\h]*
2662             )*
2663             (?&word)
2664             )
2665             (?:
2666             [[:blank:]\h]*\,[[:blank:]\h]*
2667             (? (?&word) )
2668             )?
2669             )
2670             |
2671             (?:
2672             (? (?&word) )
2673             )
2674             )
2675             )
2676             /x;
2677              
2678             ## substring
2679             ## | string substring
2680 28         61207 $REGEXP->{string} = qr/
2681             (?
2682             (?:
2683             (?&substring)
2684             )
2685             |
2686             (?:
2687             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
2688             )
2689             )
2690             (?(DEFINE)
2691             (?
2692             (?:
2693             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2694             (?
2695             (?&stringcomp)
2696             )
2697             )
2698             )
2699             |
2700             (?:
2701             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2702             (?
2703             (?&integercomp)
2704             )
2705             )
2706             )
2707             |
2708             (?:
2709             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
2710             (?:(?<=\W)|(?<=^)|(?<=\A))
2711             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
2712             [[:blank:]\h]+
2713             (?(?&word_lax))
2714             )
2715             )
2716             |
2717             (?:
2718             (?(?&word_lax))
2719             [[:blank:]\h]+
2720             (?:
2721             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
2722             |
2723             (?:
2724             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
2725             )
2726             )
2727             [[:blank:]\h]+
2728             (?(?&word_lax))
2729             )
2730             |
2731             (?:
2732             (? (?&word) )
2733             [[:blank:]\h]+
2734             \-?in
2735             [[:blank:]\h]+
2736             (? (?&listfunc) )
2737             )
2738             |
2739             (?:
2740             (? (?&word) )
2741             [[:blank:]\h]+
2742             [\=|\!]\~
2743             [[:blank:]\h]+
2744             $Regexp::Common::Apache2::REGEXP->{regex}
2745             )
2746             |
2747             (?:
2748             (? (?&word) )
2749             [[:blank:]\h]+
2750             \-?in
2751             [[:blank:]\h]+
2752             \{
2753             [[:blank:]\h]*
2754             (? (?&words) )
2755             [[:blank:]\h]*
2756             \}
2757             )
2758             )
2759             (?
2760             (?:
2761             (?!\bv\()(?[a-zA-Z]\w*)
2762             \(
2763             [[:blank:]\h]*
2764             (?
2765             (?> (?&func_words) )?
2766             )
2767             [[:blank:]\h]*
2768             \)
2769             )
2770             |
2771             (?:
2772             ( # paren group 1 (full function)
2773             (?!\bv\() # Take care to avoid catching modern-style variable v()
2774             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2775             (? # paren group 2 (parens)
2776             \(
2777             (? # paren group 3 (contents of parens)
2778             (?:
2779             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2780             |
2781             (?&paren_group) # Recurse to named capture group
2782             )*
2783             )
2784             \)
2785             )
2786             )
2787             )
2788             )
2789             (?
2790             (?:
2791             (?
2792             (?:
2793             (?&word)
2794             [[:blank:]\h]*\,[[:blank:]\h]*
2795             )*
2796             (?&word)
2797             )
2798             (?:
2799             [[:blank:]\h]*\,[[:blank:]\h]*
2800             (? (?&word) )
2801             )?
2802             )
2803             |
2804             (?:
2805             (? (?&word) )
2806             [[:blank:]\h]*\,[[:blank:]\h]*
2807             (? (?-2) )
2808             )
2809             |
2810             (?:
2811             (? (?&word) )
2812             )
2813             |
2814             (?:
2815             ( # paren group 1 (full function)
2816             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2817             (? # paren group 2 (parens)
2818             \(
2819             ( # paren group 3 (contents of parens)
2820             (?:
2821             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2822             |
2823             (?&paren_group) # Recurse to named capture group
2824             )*
2825             )
2826             \)
2827             )
2828             )
2829             )
2830             )
2831             (?
2832             (?:
2833             (?(?&word))
2834             [[:blank:]\h]+
2835             \-?(? (?:eq|ne|lt|le|gt|ge) )
2836             [[:blank:]\h]+
2837             (?(?&word))
2838             )
2839             )
2840             (?
2841             (?:
2842             (?!\bv\()(?[a-zA-Z]\w*)
2843             \(
2844             [[:blank:]\h]*
2845             (?
2846             (?> (?&func_words) )?
2847             )
2848             [[:blank:]\h]*
2849             \)
2850             )
2851             |
2852             (?:
2853             ( # paren group 1 (full function)
2854             (?!\bv\() # Take care to avoid catching modern-style variable v()
2855             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
2856             (? # paren group 2 (parens)
2857             \(
2858             (? # paren group 3 (contents of parens)
2859             (?:
2860             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2861             |
2862             (?&paren_group) # Recurse to named capture group
2863             )*
2864             )
2865             \)
2866             )
2867             )
2868             )
2869             )
2870             (?
2871             (?:
2872             (?: (?&substring) )
2873             )
2874             |
2875             (?:
2876             (?:(?&substring)[[:blank:]\h]+(?&string_recur) )
2877             )
2878             )
2879             (?
2880             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2881             |
2882             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2883             )
2884             (?
2885             (?:
2886             (?(?&word))
2887             [[:blank:]\h]+
2888             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2889             [[:blank:]\h]+
2890             (?(?&word))
2891             )
2892             )
2893             (?
2894             (?:
2895             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2896             )
2897             |
2898             (?:
2899             (? (?&variable) )
2900             )
2901             |
2902             (?:
2903             \$(?\{)?(?${DIGIT})(?()\})
2904             )
2905             )
2906             (?
2907             (?:
2908             \%\{
2909             (?:
2910             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2911             )
2912             \}
2913             )
2914             |
2915             (?:
2916             \%\{
2917             (?:
2918             (?${VARNAME})
2919             )
2920             \}
2921             )
2922             |
2923             (?:
2924             \bv\(
2925             [[:blank:]\h]*
2926             (?["'])
2927             (?:
2928             (?${VARNAME})
2929             )
2930             [[:blank:]\h]*
2931             \g{var_quote}
2932             \)
2933             )
2934             )
2935             (?
2936             (?:
2937             (?
2938             (?$IPv4)
2939             |
2940             (?$IPv6)
2941             )
2942             )
2943             |
2944             (?:
2945             (?$Regexp::Common::Apache2::REGEXP->{digits})
2946             )
2947             |
2948             (?:
2949             (?['"])
2950             (?:
2951             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2952             )
2953             \g{word_quote}
2954             )
2955             |
2956             (?:
2957             (?['"])
2958             (?:
2959             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2960             )
2961             \g{word_quote}
2962             )
2963             |
2964             (?:
2965             (?
2966             (?: (?: (?-2)\. )+ (?-2) )
2967             )
2968             )
2969             |
2970             (?:
2971             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2972             )
2973             |
2974             (?:
2975             (?(?&variable))
2976             )
2977             |
2978             (?:
2979             (?(?&function))
2980             )
2981             |
2982             (?:
2983             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2984             )
2985             )
2986             (?
2987             (?:
2988             (?
2989             (?$IPv4)
2990             |
2991             (?$IPv6)
2992             )
2993             )
2994             |
2995             (?:
2996             (?$Regexp::Common::Apache2::REGEXP->{digits})
2997             )
2998             |
2999             (?:
3000             (?['"])
3001             (?:
3002             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3003             )
3004             \g{word_quote}
3005             )
3006             |
3007             (?:
3008             (?['"])
3009             (?:
3010             (? (?&string) )
3011             )
3012             \g{word_quote}
3013             )
3014             |
3015             (?:
3016             (?
3017             (?: (?: (?-2)\. )+ (?-2) )
3018             )
3019             )
3020             |
3021             (?:
3022             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3023             )
3024             |
3025             (?:
3026             (?(?&variable))
3027             )
3028             |
3029             (?:
3030             (?(?&function))
3031             )
3032             |
3033             (?:
3034             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3035             )
3036             )
3037             (?
3038             (?:
3039             (?
3040             (?:
3041             (?&word)
3042             [[:blank:]\h]*\,[[:blank:]\h]*
3043             )*
3044             (?&word)
3045             )
3046             (?:
3047             [[:blank:]\h]*\,[[:blank:]\h]*
3048             (? (?&word) )
3049             )?
3050             )
3051             |
3052             (?:
3053             (? (?&word) )
3054             )
3055             )
3056             )/x;
3057              
3058             ## word "==" word
3059             ## | word "!=" word
3060             ## | word "<" word
3061             ## | word "<=" word
3062             ## | word ">" word
3063             ## | word ">=" word
3064 28         63643 $REGEXP->{stringcomp} = qr/
3065             (?
3066             (?(?&word))
3067             [[:blank:]\h]+
3068             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3069             [[:blank:]\h]+
3070             (?(?&word))
3071             )
3072             (?(DEFINE)
3073             (?
3074             (?:
3075             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3076             (?
3077             (?&stringcomp_recur)
3078             )
3079             )
3080             )
3081             |
3082             (?:
3083             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3084             (?
3085             (?&integercomp)
3086             )
3087             )
3088             )
3089             |
3090             (?:
3091             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
3092             (?:(?<=\W)|(?<=^)|(?<=\A))
3093             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3094             [[:blank:]\h]+
3095             (?(?&word_lax))
3096             )
3097             )
3098             |
3099             (?:
3100             (?(?&word_lax))
3101             [[:blank:]\h]+
3102             (?:
3103             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3104             |
3105             (?:
3106             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
3107             )
3108             )
3109             [[:blank:]\h]+
3110             (?(?&word_lax))
3111             )
3112             |
3113             (?:
3114             (? (?&word) )
3115             [[:blank:]\h]+
3116             \-?in
3117             [[:blank:]\h]+
3118             (? (?&listfunc) )
3119             )
3120             |
3121             (?:
3122             (? (?&word) )
3123             [[:blank:]\h]+
3124             [\=|\!]\~
3125             [[:blank:]\h]+
3126             $Regexp::Common::Apache2::REGEXP->{regex}
3127             )
3128             |
3129             (?:
3130             (? (?&word) )
3131             [[:blank:]\h]+
3132             \-?in
3133             [[:blank:]\h]+
3134             \{
3135             [[:blank:]\h]*
3136             (? (?&words) )
3137             [[:blank:]\h]*
3138             \}
3139             )
3140             )
3141             (?
3142             (?:
3143             (?!\bv\()(?[a-zA-Z]\w*)
3144             \(
3145             [[:blank:]\h]*
3146             (?
3147             (?> (?&func_words) )?
3148             )
3149             [[:blank:]\h]*
3150             \)
3151             )
3152             |
3153             (?:
3154             ( # paren group 1 (full function)
3155             (?!\bv\() # Take care to avoid catching modern-style variable v()
3156             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
3157             (? # paren group 2 (parens)
3158             \(
3159             (? # paren group 3 (contents of parens)
3160             (?:
3161             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3162             |
3163             (?&paren_group) # Recurse to named capture group
3164             )*
3165             )
3166             \)
3167             )
3168             )
3169             )
3170             )
3171             (?
3172             (?:
3173             (?
3174             (?:
3175             (?&word)
3176             [[:blank:]\h]*\,[[:blank:]\h]*
3177             )*
3178             (?&word)
3179             )
3180             (?:
3181             [[:blank:]\h]*\,[[:blank:]\h]*
3182             (? (?&word) )
3183             )?
3184             )
3185             |
3186             (?:
3187             (? (?&word) )
3188             [[:blank:]\h]*\,[[:blank:]\h]*
3189             (? (?-2) )
3190             )
3191             |
3192             (?:
3193             (? (?&word) )
3194             )
3195             |
3196             (?:
3197             ( # paren group 1 (full function)
3198             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3199             (? # paren group 2 (parens)
3200             \(
3201             ( # paren group 3 (contents of parens)
3202             (?:
3203             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3204             |
3205             (?&paren_group) # Recurse to named capture group
3206             )*
3207             )
3208             \)
3209             )
3210             )
3211             )
3212             )
3213             (?
3214             (?:
3215             (?(?&word))
3216             [[:blank:]\h]+
3217             \-?(? (?:eq|ne|lt|le|gt|ge) )
3218             [[:blank:]\h]+
3219             (?(?&word))
3220             )
3221             )
3222             (?
3223             (?:
3224             (?!\bv\()(?[a-zA-Z]\w*)
3225             \(
3226             [[:blank:]\h]*
3227             (?
3228             (?> (?&func_words) )?
3229             )
3230             [[:blank:]\h]*
3231             \)
3232             )
3233             |
3234             (?:
3235             ( # paren group 1 (full function)
3236             (?!\bv\() # Take care to avoid catching modern-style variable v()
3237             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
3238             (? # paren group 2 (parens)
3239             \(
3240             (? # paren group 3 (contents of parens)
3241             (?:
3242             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3243             |
3244             (?&paren_group) # Recurse to named capture group
3245             )*
3246             )
3247             \)
3248             )
3249             )
3250             )
3251             )
3252             (?
3253             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
3254             |
3255             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
3256             )
3257             (?
3258             (?:
3259             (?: (?&substring) )
3260             )
3261             |
3262             (?:
3263             (?:(?&substring)[[:blank:]\h]+(?&string) )
3264             )
3265             )
3266             (?
3267             (?:
3268             (?(?&word))
3269             [[:blank:]\h]+
3270             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3271             [[:blank:]\h]+
3272             (?(?&word))
3273             )
3274             )
3275             (?
3276             (?:
3277             (?$Regexp::Common::Apache2::REGEXP->{cstring})
3278             )
3279             |
3280             (?:
3281             (? (?&variable) )
3282             )
3283             |
3284             (?:
3285             \$(?\{)?(?${DIGIT})(?()\})
3286             )
3287             )
3288             (?
3289             (?:
3290             \%\{
3291             (?:
3292             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
3293             )
3294             \}
3295             )
3296             |
3297             (?:
3298             \%\{
3299             (?:
3300             (?${VARNAME})
3301             )
3302             \}
3303             )
3304             |
3305             (?:
3306             \bv\(
3307             [[:blank:]\h]*
3308             (?["'])
3309             (?:
3310             (?${VARNAME})
3311             )
3312             [[:blank:]\h]*
3313             \g{var_quote}
3314             \)
3315             )
3316             )
3317             (?
3318             (?:
3319             (?
3320             (?$IPv4)
3321             |
3322             (?$IPv6)
3323             )
3324             )
3325             |
3326             (?:
3327             (?$Regexp::Common::Apache2::REGEXP->{digits})
3328             )
3329             |
3330             (?:
3331             (?['"])
3332             (?:
3333             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3334             )
3335             \g{word_quote}
3336             )
3337             |
3338             (?:
3339             (?['"])
3340             (?:
3341             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3342             )
3343             \g{word_quote}
3344             )
3345             |
3346             (?:
3347             (?
3348             (?: (?: (?-2)\. )+ (?-2) )
3349             )
3350             )
3351             |
3352             (?:
3353             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3354             )
3355             |
3356             (?:
3357             (?(?&variable))
3358             )
3359             |
3360             (?:
3361             (?(?&function))
3362             )
3363             |
3364             (?:
3365             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3366             )
3367             )
3368             (?
3369             (?:
3370             (?
3371             (?$IPv4)
3372             |
3373             (?$IPv6)
3374             )
3375             )
3376             |
3377             (?:
3378             (?$Regexp::Common::Apache2::REGEXP->{digits})
3379             )
3380             |
3381             (?:
3382             (?['"])
3383             (?:
3384             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3385             )
3386             \g{word_quote}
3387             )
3388             |
3389             (?:
3390             (?['"])
3391             (?:
3392             (? (?&string) )
3393             )
3394             \g{word_quote}
3395             )
3396             |
3397             (?:
3398             (?
3399             (?: (?: (?-2)\. )+ (?-2) )
3400             )
3401             )
3402             |
3403             (?:
3404             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3405             )
3406             |
3407             (?:
3408             (?(?&variable))
3409             )
3410             |
3411             (?:
3412             (?(?&function))
3413             )
3414             |
3415             (?:
3416             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3417             )
3418             )
3419             (?
3420             (?:
3421             (?
3422             (?:
3423             (?&word)
3424             [[:blank:]\h]*\,[[:blank:]\h]*
3425             )*
3426             (?&word)
3427             )
3428             (?:
3429             [[:blank:]\h]*\,[[:blank:]\h]*
3430             (? (?&word) )
3431             )?
3432             )
3433             |
3434             (?:
3435             (? (?&word) )
3436             )
3437             )
3438             )
3439             /x;
3440              
3441             ## cstring
3442             ## | variable
3443             ## | rebackref
3444 28         64063 $REGEXP->{substring} = qr/
3445             (?
3446             (?:$Regexp::Common::Apache2::REGEXP->{cstring})
3447             |
3448             (?:
3449             (? (?&variable) )
3450             )
3451             |
3452             (?:
3453             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3454             )
3455             )
3456             (?(DEFINE)
3457             (?
3458             (?:
3459             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3460             (?
3461             (?&stringcomp)
3462             )
3463             )
3464             )
3465             |
3466             (?:
3467             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3468             (?
3469             (?&integercomp)
3470             )
3471             )
3472             )
3473             |
3474             (?:
3475             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
3476             (?:(?<=\W)|(?<=^)|(?<=\A))
3477             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3478             [[:blank:]\h]+
3479             (?(?&word_lax))
3480             )
3481             )
3482             |
3483             (?:
3484             (?(?&word_lax))
3485             [[:blank:]\h]+
3486             (?:
3487             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3488             |
3489             (?:
3490             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
3491             )
3492             )
3493             [[:blank:]\h]+
3494             (?(?&word_lax))
3495             )
3496             |
3497             (?:
3498             (? (?&word) )
3499             [[:blank:]\h]+
3500             \-?in
3501             [[:blank:]\h]+
3502             (? (?&listfunc) )
3503             )
3504             |
3505             (?:
3506             (? (?&word) )
3507             [[:blank:]\h]+
3508             [\=|\!]\~
3509             [[:blank:]\h]+
3510             $Regexp::Common::Apache2::REGEXP->{regex}
3511             )
3512             |
3513             (?:
3514             (? (?&word) )
3515             [[:blank:]\h]+
3516             \-?in
3517             [[:blank:]\h]+
3518             \{
3519             [[:blank:]\h]*
3520             (? (?&words) )
3521             [[:blank:]\h]*
3522             \}
3523             )
3524             )
3525             (?
3526             (?:
3527             (?!\bv\()(?[a-zA-Z]\w*)
3528             \(
3529             [[:blank:]\h]*
3530             (?
3531             (?> (?&func_words) )?
3532             )
3533             [[:blank:]\h]*
3534             \)
3535             )
3536             |
3537             (?:
3538             ( # paren group 1 (full function)
3539             (?!\bv\() # Take care to avoid catching modern-style variable v()
3540             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
3541             (? # paren group 2 (parens)
3542             \(
3543             (? # paren group 3 (contents of parens)
3544             (?:
3545             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3546             |
3547             (?&paren_group) # Recurse to named capture group
3548             )*
3549             )
3550             \)
3551             )
3552             )
3553             )
3554             )
3555             (?
3556             (?:
3557             (?
3558             (?:
3559             (?&word)
3560             [[:blank:]\h]*\,[[:blank:]\h]*
3561             )*
3562             (?&word)
3563             )
3564             (?:
3565             [[:blank:]\h]*\,[[:blank:]\h]*
3566             (? (?&word) )
3567             )?
3568             )
3569             |
3570             (?:
3571             (? (?&word) )
3572             [[:blank:]\h]*\,[[:blank:]\h]*
3573             (? (?-2) )
3574             )
3575             |
3576             (?:
3577             (? (?&word) )
3578             )
3579             |
3580             (?:
3581             ( # paren group 1 (full function)
3582             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3583             (? # paren group 2 (parens)
3584             \(
3585             ( # paren group 3 (contents of parens)
3586             (?:
3587             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3588             |
3589             (?&paren_group) # Recurse to named capture group
3590             )*
3591             )
3592             \)
3593             )
3594             )
3595             )
3596             )
3597             (?
3598             (?:
3599             (?(?&word))
3600             [[:blank:]\h]+
3601             \-?(? (?:eq|ne|lt|le|gt|ge) )
3602             [[:blank:]\h]+
3603             (?(?&word))
3604             )
3605             )
3606             (?
3607             (?:
3608             (?!\bv\()(?[a-zA-Z]\w*)
3609             \(
3610             [[:blank:]\h]*
3611             (?
3612             (?> (?&func_words) )?
3613             )
3614             [[:blank:]\h]*
3615             \)
3616             )
3617             |
3618             (?:
3619             ( # paren group 1 (full function)
3620             (?!\bv\() # Take care to avoid catching modern-style variable v()
3621             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
3622             (? # paren group 2 (parens)
3623             \(
3624             (? # paren group 3 (contents of parens)
3625             (?:
3626             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3627             |
3628             (?&paren_group) # Recurse to named capture group
3629             )*
3630             )
3631             \)
3632             )
3633             )
3634             )
3635             )
3636             (?
3637             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
3638             |
3639             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
3640             )
3641             (?
3642             (?:(?-1)[[:blank:]\h]+(?&substring_recur))
3643             |
3644             (?&substring_recur)
3645             )
3646             (?
3647             (?:
3648             (?(?&word))
3649             [[:blank:]\h]+
3650             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3651             [[:blank:]\h]+
3652             (?(?&word))
3653             )
3654             )
3655             (?
3656             (?:
3657             (?$Regexp::Common::Apache2::REGEXP->{cstring})
3658             )
3659             |
3660             (?:
3661             (? (?&variable) )
3662             )
3663             |
3664             (?:
3665             \$(?\{)?(?${DIGIT})(?()\})
3666             )
3667             )
3668             (?
3669             (?:
3670             \%\{
3671             (?:
3672             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
3673             )
3674             \}
3675             )
3676             |
3677             (?:
3678             \%\{
3679             (?:
3680             (?${VARNAME})
3681             )
3682             \}
3683             )
3684             |
3685             (?:
3686             \bv\(
3687             [[:blank:]\h]*
3688             (?["'])
3689             (?:
3690             (?${VARNAME})
3691             )
3692             [[:blank:]\h]*
3693             \g{var_quote}
3694             \)
3695             )
3696             )
3697             (?
3698             (?:
3699             (?
3700             (?$IPv4)
3701             |
3702             (?$IPv6)
3703             )
3704             )
3705             |
3706             (?:
3707             (?$Regexp::Common::Apache2::REGEXP->{digits})
3708             )
3709             |
3710             (?:
3711             (?['"])
3712             (?:
3713             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3714             )
3715             \g{word_quote}
3716             )
3717             |
3718             (?:
3719             (?['"])
3720             (?:
3721             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3722             )
3723             \g{word_quote}
3724             )
3725             |
3726             (?:
3727             (?
3728             (?: (?: (?-2)\. )+ (?-2) )
3729             )
3730             )
3731             |
3732             (?:
3733             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3734             )
3735             |
3736             (?:
3737             (?(?&variable))
3738             )
3739             |
3740             (?:
3741             (?(?&function))
3742             )
3743             |
3744             (?:
3745             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3746             )
3747             )
3748             (?
3749             (?:
3750             (?
3751             (?$IPv4)
3752             |
3753             (?$IPv6)
3754             )
3755             )
3756             |
3757             (?:
3758             (?$Regexp::Common::Apache2::REGEXP->{digits})
3759             )
3760             |
3761             (?:
3762             (?['"])
3763             (?:
3764             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3765             )
3766             \g{word_quote}
3767             )
3768             |
3769             (?:
3770             (?['"])
3771             (?:
3772             (? (?&string) )
3773             )
3774             \g{word_quote}
3775             )
3776             |
3777             (?:
3778             (?
3779             (?: (?: (?-2)\. )+ (?-2) )
3780             )
3781             )
3782             |
3783             (?:
3784             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3785             )
3786             |
3787             (?:
3788             (?(?&variable))
3789             )
3790             |
3791             (?:
3792             (?(?&function))
3793             )
3794             |
3795             (?:
3796             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3797             )
3798             )
3799             (?
3800             (?:
3801             (?
3802             (?:
3803             (?&word)
3804             [[:blank:]\h]*\,[[:blank:]\h]*
3805             )*
3806             (?&word)
3807             )
3808             (?:
3809             [[:blank:]\h]*\,[[:blank:]\h]*
3810             (? (?&word) )
3811             )?
3812             )
3813             |
3814             (?:
3815             (? (?&word) )
3816             )
3817             )
3818             )
3819             /x;
3820              
3821             ## "%{" varname "}"
3822             ## | "%{" funcname ":" funcargs "}"
3823             ## | "v('" varname "')"
3824 28         61377 $REGEXP->{variable} = qr/
3825             (?
3826             (?:
3827             (?:^|\A|(?
3828             (?:
3829             (?(?${FUNCNAME})\:(?(?>\\\}|[^\}])*+))
3830             )
3831             \}
3832             )
3833             |
3834             (?:
3835             (?:^|\A|(?
3836             (?:
3837             (?${VARNAME})
3838             )
3839             \}
3840             )
3841             |
3842             (?:
3843             \bv\(
3844             [[:blank:]\h]*
3845             (?["'])
3846             (?:
3847             (?${VARNAME})
3848             )
3849             [[:blank:]\h]*
3850             \g{var_quote}
3851             \)
3852             )
3853             )
3854             (?(DEFINE)
3855             (?
3856             (?:
3857             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3858             (?
3859             (?&stringcomp)
3860             )
3861             )
3862             )
3863             |
3864             (?:
3865             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3866             (?
3867             (?&integercomp)
3868             )
3869             )
3870             )
3871             |
3872             (?:
3873             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
3874             (?:(?<=\W)|(?<=^)|(?<=\A))
3875             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3876             [[:blank:]\h]+
3877             (?(?&word_lax))
3878             )
3879             )
3880             |
3881             (?:
3882             (?(?&word_lax))
3883             [[:blank:]\h]+
3884             (?:
3885             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3886             |
3887             (?:
3888             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
3889             )
3890             )
3891             [[:blank:]\h]+
3892             (?(?&word_lax))
3893             )
3894             |
3895             (?:
3896             (? (?&word) )
3897             [[:blank:]\h]+
3898             \-?in
3899             [[:blank:]\h]+
3900             (? (?&listfunc) )
3901             )
3902             |
3903             (?:
3904             (? (?&word) )
3905             [[:blank:]\h]+
3906             [\=|\!]\~
3907             [[:blank:]\h]+
3908             $Regexp::Common::Apache2::REGEXP->{regex}
3909             )
3910             |
3911             (?:
3912             (? (?&word) )
3913             [[:blank:]\h]+
3914             \-?in
3915             [[:blank:]\h]+
3916             \{
3917             [[:blank:]\h]*
3918             (? (?&words) )
3919             [[:blank:]\h]*
3920             \}
3921             )
3922             )
3923             (?
3924             (?:
3925             (?!\bv\()(?[a-zA-Z]\w*)
3926             \(
3927             [[:blank:]\h]*
3928             (?
3929             (?> (?&func_words) )?
3930             )
3931             [[:blank:]\h]*
3932             \)
3933             )
3934             |
3935             (?:
3936             ( # paren group 1 (full function)
3937             (?!\bv\() # Take care to avoid catching modern-style variable v()
3938             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
3939             (? # paren group 2 (parens)
3940             \(
3941             (? # paren group 3 (contents of parens)
3942             (?:
3943             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3944             |
3945             (?&paren_group) # Recurse to named capture group
3946             )*
3947             )
3948             \)
3949             )
3950             )
3951             )
3952             )
3953             (?
3954             (?:
3955             (?
3956             (?:
3957             (?&word)
3958             [[:blank:]\h]*\,[[:blank:]\h]*
3959             )*
3960             (?&word)
3961             )
3962             (?:
3963             [[:blank:]\h]*\,[[:blank:]\h]*
3964             (? (?&word) )
3965             )?
3966             )
3967             |
3968             (?:
3969             (? (?&word) )
3970             [[:blank:]\h]*\,[[:blank:]\h]*
3971             (? (?-2) )
3972             )
3973             |
3974             (?:
3975             (? (?&word) )
3976             )
3977             |
3978             (?:
3979             ( # paren group 1 (full function)
3980             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3981             (? # paren group 2 (parens)
3982             \(
3983             ( # paren group 3 (contents of parens)
3984             (?:
3985             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3986             |
3987             (?&paren_group) # Recurse to named capture group
3988             )*
3989             )
3990             \)
3991             )
3992             )
3993             )
3994             )
3995             (?
3996             (?:
3997             (?(?&word))
3998             [[:blank:]\h]+
3999             \-?(? (?:eq|ne|lt|le|gt|ge) )
4000             [[:blank:]\h]+
4001             (?(?&word))
4002             )
4003             )
4004             (?
4005             (?:
4006             (?!\bv\()(?[a-zA-Z]\w*)
4007             \(
4008             [[:blank:]\h]*
4009             (?
4010             (?> (?&func_words) )?
4011             )
4012             [[:blank:]\h]*
4013             \)
4014             )
4015             |
4016             (?:
4017             ( # paren group 1 (full function)
4018             (?!\bv\() # Take care to avoid catching modern-style variable v()
4019             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
4020             (? # paren group 2 (parens)
4021             \(
4022             (? # paren group 3 (contents of parens)
4023             (?:
4024             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4025             |
4026             (?&paren_group) # Recurse to named capture group
4027             )*
4028             )
4029             \)
4030             )
4031             )
4032             )
4033             )
4034             (?
4035             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
4036             |
4037             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
4038             )
4039             (?
4040             (?:
4041             (?: (?&substring) )
4042             )
4043             |
4044             (?:
4045             (?:(?&substring)[[:blank:]\h]+(?&string) )
4046             )
4047             )
4048             (?
4049             (?:
4050             (?$Regexp::Common::Apache2::REGEXP->{cstring})
4051             )
4052             |
4053             (?:
4054             (? (?&variable_recur) )
4055             )
4056             |
4057             (?:
4058             \$(?\{)?(?${DIGIT})(?()\})
4059             )
4060             )
4061             (?
4062             (?:
4063             (?(?&word))
4064             [[:blank:]\h]+
4065             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
4066             [[:blank:]\h]+
4067             (?(?&word))
4068             )
4069             )
4070             (?
4071             (?:
4072             \%\{
4073             (?:
4074             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
4075             )
4076             \}
4077             )
4078             |
4079             (?:
4080             \%\{
4081             (?:
4082             (?${VARNAME})
4083             )
4084             \}
4085             )
4086             |
4087             (?:
4088             \bv\(
4089             [[:blank:]\h]*
4090             (?["'])
4091             (?:
4092             (?${VARNAME})
4093             )
4094             [[:blank:]\h]*
4095             \g{var_quote}
4096             \)
4097             )
4098             )
4099             (?
4100             (?:
4101             (?
4102             (?$IPv4)
4103             |
4104             (?$IPv6)
4105             )
4106             )
4107             |
4108             (?:
4109             (?$Regexp::Common::Apache2::REGEXP->{digits})
4110             )
4111             |
4112             (?:
4113             (?['"])
4114             (?:
4115             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4116             )
4117             \g{word_quote}
4118             )
4119             |
4120             (?:
4121             (?['"])
4122             (?:
4123             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4124             )
4125             \g{word_quote}
4126             )
4127             |
4128             (?:
4129             (?
4130             (?: (?: (?-2)\. )+ (?-2) )
4131             )
4132             )
4133             |
4134             (?:
4135             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4136             )
4137             |
4138             (?:
4139             (?(?&variable_recur))
4140             )
4141             |
4142             (?:
4143             (?(?&function))
4144             )
4145             |
4146             (?:
4147             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4148             )
4149             )
4150             (?
4151             (?:
4152             (?
4153             (?$IPv4)
4154             |
4155             (?$IPv6)
4156             )
4157             )
4158             |
4159             (?:
4160             (?$Regexp::Common::Apache2::REGEXP->{digits})
4161             )
4162             |
4163             (?:
4164             (?['"])
4165             (?:
4166             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4167             )
4168             \g{word_quote}
4169             )
4170             |
4171             (?:
4172             (?['"])
4173             (?:
4174             (? (?&string) )
4175             )
4176             \g{word_quote}
4177             )
4178             |
4179             (?:
4180             (?
4181             (?: (?: (?-2)\. )+ (?-2) )
4182             )
4183             )
4184             |
4185             (?:
4186             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4187             )
4188             |
4189             (?:
4190             (?(?&variable_recur))
4191             )
4192             |
4193             (?:
4194             (?(?&function))
4195             )
4196             |
4197             (?:
4198             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4199             )
4200             )
4201             (?
4202             (?:
4203             (?
4204             (?:
4205             (?&word)
4206             [[:blank:]\h]*\,[[:blank:]\h]*
4207             )*
4208             (?&word)
4209             )
4210             (?:
4211             [[:blank:]\h]*\,[[:blank:]\h]*
4212             (? (?&word) )
4213             )?
4214             )
4215             |
4216             (?:
4217             (? (?&word) )
4218             )
4219             )
4220             )
4221             /x;
4222              
4223             ## digits
4224             ## | "'" string "'"
4225             ## | '"' string '"'
4226             ## | word "." word
4227             ## | variable
4228             ## | sub
4229             ## | join
4230             ## | function
4231             ## | "(" word ")"
4232 28         80813 $REGEXP->{word} = qr/
4233             (?
4234             (?:
4235             (?
4236             (?$IPv4)
4237             |
4238             (?$IPv6)
4239             )
4240             )
4241             |
4242             (?:
4243             (?$Regexp::Common::Apache2::REGEXP->{digits})
4244             )
4245             |
4246             (?:
4247             (?['"])
4248             (?:
4249             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4250             )
4251             \g{word_quote}
4252             )
4253             |
4254             (?:
4255             (?['"])
4256             (?:
4257             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4258             )
4259             \g{word_quote}
4260             )
4261             |
4262             (?:
4263             (?
4264             (?: (?&word_recur)\. )+ (?&word_recur)
4265             )
4266             )
4267             |
4268             (?:
4269             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4270             )
4271             |
4272             (?:
4273             (?(?&variable))
4274             )
4275             |
4276             (?:
4277             (?(?&function))
4278             )
4279             |
4280             (?:
4281             $Regexp::Common::Apache2::REGEXP->{regex}
4282             )
4283             )
4284             (?(DEFINE)
4285             (?
4286             (?:
4287             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4288             (?
4289             (?&stringcomp)
4290             )
4291             )
4292             )
4293             |
4294             (?:
4295             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4296             (?
4297             (?&integercomp)
4298             )
4299             )
4300             )
4301             |
4302             (?:
4303             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
4304             (?:(?<=\W)|(?<=^)|(?<=\A))
4305             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
4306             [[:blank:]\h]+
4307             (?(?&word_lax))
4308             )
4309             )
4310             |
4311             (?:
4312             (?(?&word_lax))
4313             [[:blank:]\h]+
4314             (?:
4315             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
4316             |
4317             (?:
4318             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
4319             )
4320             )
4321             [[:blank:]\h]+
4322             (?(?&word_lax))
4323             )
4324             |
4325             (?:
4326             (? (?&word_recur) )
4327             [[:blank:]\h]+
4328             \-?in
4329             [[:blank:]\h]+
4330             (? (?&listfunc) )
4331             )
4332             |
4333             (?:
4334             (? (?&word_recur) )
4335             [[:blank:]\h]+
4336             [\=|\!]\~
4337             [[:blank:]\h]+
4338             $Regexp::Common::Apache2::REGEXP->{regex}
4339             )
4340             |
4341             (?:
4342             (? (?&word_recur) )
4343             [[:blank:]\h]+
4344             \-?in
4345             [[:blank:]\h]+
4346             \{
4347             [[:blank:]\h]*
4348             (? (?&words) )
4349             [[:blank:]\h]*
4350             \}
4351             )
4352             )
4353             (?
4354             (?:
4355             (?!\bv\()(?[a-zA-Z]\w*)
4356             \(
4357             [[:blank:]\h]*
4358             (?
4359             (?> (?&func_words) )?
4360             )
4361             [[:blank:]\h]*
4362             \)
4363             )
4364             |
4365             (?:
4366             ( # paren group 1 (full function)
4367             (?!\bv\() # Take care to avoid catching modern-style variable v()
4368             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
4369             (? # paren group 2 (parens)
4370             \(
4371             (? # paren group 3 (contents of parens)
4372             (?:
4373             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4374             |
4375             (?&paren_group) # Recurse to named capture group
4376             )*
4377             )
4378             \)
4379             )
4380             )
4381             )
4382             )
4383             (?
4384             (?:
4385             (?
4386             (?:
4387             (?&word)
4388             [[:blank:]\h]*\,[[:blank:]\h]*
4389             )*
4390             (?&word)
4391             )
4392             (?:
4393             [[:blank:]\h]*\,[[:blank:]\h]*
4394             (? (?&word) )
4395             )?
4396             )
4397             |
4398             (?:
4399             (? (?&word) )
4400             [[:blank:]\h]*\,[[:blank:]\h]*
4401             (? (?-2) )
4402             )
4403             |
4404             (?:
4405             (? (?&word) )
4406             )
4407             |
4408             (?:
4409             ( # paren group 1 (full function)
4410             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4411             (? # paren group 2 (parens)
4412             \(
4413             ( # paren group 3 (contents of parens)
4414             (?:
4415             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4416             |
4417             (?&paren_group) # Recurse to named capture group
4418             )*
4419             )
4420             \)
4421             )
4422             )
4423             )
4424             )
4425             (?
4426             (?:
4427             (?(?&word_recur))
4428             [[:blank:]\h]+
4429             \-?(? (?:eq|ne|lt|le|gt|ge) )
4430             [[:blank:]\h]+
4431             (?(?&word_recur))
4432             )
4433             )
4434             (?
4435             (?:
4436             (?!\bv\()(?[a-zA-Z]\w*)
4437             \(
4438             [[:blank:]\h]*
4439             (?
4440             (?> (?&func_words) )?
4441             )
4442             [[:blank:]\h]*
4443             \)
4444             )
4445             |
4446             (?:
4447             ( # paren group 1 (full function)
4448             (?!\bv\() # Take care to avoid catching modern-style variable v()
4449             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
4450             (? # paren group 2 (parens)
4451             \(
4452             (? # paren group 3 (contents of parens)
4453             (?:
4454             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4455             |
4456             (?&paren_group) # Recurse to named capture group
4457             )*
4458             )
4459             \)
4460             )
4461             )
4462             )
4463             )
4464             (?
4465             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
4466             |
4467             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
4468             )
4469             (?
4470             (?:
4471             (?: (?&substring) )
4472             )
4473             |
4474             (?:
4475             (?:(?&substring)[[:blank:]\h]+(?&string) )
4476             )
4477             )
4478             (?
4479             (?:
4480             (?(?&word_recur))
4481             [[:blank:]\h]+
4482             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
4483             [[:blank:]\h]+
4484             (?(?&word_recur))
4485             )
4486             )
4487             (?
4488             (?:
4489             (?$Regexp::Common::Apache2::REGEXP->{cstring})
4490             )
4491             |
4492             (?:
4493             (? (?&variable) )
4494             )
4495             |
4496             (?:
4497             \$(?\{)?(?${DIGIT})(?()\})
4498             )
4499             )
4500             (?
4501             (?:
4502             \%\{
4503             (?:
4504             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
4505             )
4506             \}
4507             )
4508             |
4509             (?:
4510             \%\{
4511             (?:
4512             (?${VARNAME})
4513             )
4514             \}
4515             )
4516             |
4517             (?:
4518             \bv\(
4519             [[:blank:]\h]*
4520             (?["'])
4521             (?:
4522             (?${VARNAME})
4523             )
4524             [[:blank:]\h]*
4525             \g{var_quote}
4526             \)
4527             )
4528             )
4529             (?
4530             (?:
4531             (?
4532             (?$IPv4)
4533             |
4534             (?$IPv6)
4535             )
4536             )
4537             |
4538             (?:
4539             (?$Regexp::Common::Apache2::REGEXP->{digits})
4540             )
4541             |
4542             (?:
4543             (?['"])
4544             (?:
4545             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4546             )
4547             \g{word_quote}
4548             )
4549             |
4550             (?:
4551             (?['"])
4552             (?:
4553             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4554             )
4555             \g{word_quote}
4556             )
4557             |
4558             (?:
4559             (?
4560             (?: (?: (?-2)\. )+ (?-2) )
4561             )
4562             )
4563             |
4564             (?:
4565             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4566             )
4567             |
4568             (?:
4569             (?(?&variable))
4570             )
4571             |
4572             (?:
4573             (?(?&function))
4574             )
4575             |
4576             (?:
4577             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4578             )
4579             )
4580             (?
4581             (?:
4582             (?
4583             (?$IPv4)
4584             |
4585             (?$IPv6)
4586             )
4587             )
4588             |
4589             (?:
4590             (?$Regexp::Common::Apache2::REGEXP->{digits})
4591             )
4592             |
4593             (?:
4594             (?['"])
4595             (?:
4596             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4597             )
4598             \g{word_quote}
4599             )
4600             |
4601             (?:
4602             (?['"])
4603             (?:
4604             (? (?&string) )
4605             )
4606             \g{word_quote}
4607             )
4608             |
4609             (?:
4610             (?
4611             (?: (?: (?-2)\. )+ (?-2) )
4612             )
4613             )
4614             |
4615             (?:
4616             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4617             )
4618             |
4619             (?:
4620             (?(?&variable))
4621             )
4622             |
4623             (?:
4624             (?(?&function))
4625             )
4626             |
4627             (?:
4628             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4629             )
4630             )
4631             (?
4632             (?:
4633             (?
4634             (?:
4635             (?&word_recur)
4636             [[:blank:]\h]*\,[[:blank:]\h]*
4637             )*
4638             (?&word_recur)
4639             )
4640             (?:
4641             [[:blank:]\h]*\,[[:blank:]\h]*
4642             (? (?&word_recur) )
4643             )?
4644             )
4645             |
4646             (?:
4647             (? (?&word_recur) )
4648             )
4649             )
4650             )
4651             /x;
4652            
4653             ## word
4654             ## | word "," list
4655 28         66552 $REGEXP->{words} = qr/
4656             (?
4657             (?:
4658             (?
4659             (?(?&word))
4660             [[:blank:]\h]*\,[[:blank:]\h]*
4661             (?(?&words_recur))
4662             )
4663             )
4664             |
4665             (?:
4666             (?(?&word))
4667             )
4668             )
4669             (?(DEFINE)
4670             (?
4671             (?:
4672             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4673             (?
4674             (?&stringcomp)
4675             )
4676             )
4677             )
4678             |
4679             (?:
4680             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4681             (?
4682             (?&integercomp)
4683             )
4684             )
4685             )
4686             |
4687             (?:
4688             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
4689             (?:(?<=\W)|(?<=^)|(?<=\A))
4690             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
4691             [[:blank:]\h]+
4692             (?(?&word_lax))
4693             )
4694             )
4695             |
4696             (?:
4697             (?(?&word_lax))
4698             [[:blank:]\h]+
4699             (?:
4700             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
4701             |
4702             (?:
4703             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
4704             )
4705             )
4706             [[:blank:]\h]+
4707             (?(?&word_lax))
4708             )
4709             |
4710             (?:
4711             (? (?&word) )
4712             [[:blank:]\h]+
4713             \-?in
4714             [[:blank:]\h]+
4715             (? (?&listfunc) )
4716             )
4717             |
4718             (?:
4719             (? (?&word) )
4720             [[:blank:]\h]+
4721             [\=|\!]\~
4722             [[:blank:]\h]+
4723             $Regexp::Common::Apache2::REGEXP->{regex}
4724             )
4725             |
4726             (?:
4727             (? (?&word) )
4728             [[:blank:]\h]+
4729             \-?in
4730             [[:blank:]\h]+
4731             \{
4732             [[:blank:]\h]*
4733             (? (?&words) )
4734             [[:blank:]\h]*
4735             \}
4736             )
4737             )
4738             (?
4739             (?:
4740             (?!\bv\()(?[a-zA-Z]\w*)
4741             \(
4742             [[:blank:]\h]*
4743             (?
4744             (?> (?&func_words) )?
4745             )
4746             [[:blank:]\h]*
4747             \)
4748             )
4749             |
4750             (?:
4751             ( # paren group 1 (full function)
4752             (?!\bv\() # Take care to avoid catching modern-style variable v()
4753             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
4754             (? # paren group 2 (parens)
4755             \(
4756             (? # paren group 3 (contents of parens)
4757             (?:
4758             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4759             |
4760             (?&paren_group) # Recurse to named capture group
4761             )*
4762             )
4763             \)
4764             )
4765             )
4766             )
4767             )
4768             (?
4769             (?:
4770             (?
4771             (?:
4772             (?&word)
4773             [[:blank:]\h]*\,[[:blank:]\h]*
4774             )*
4775             (?&word)
4776             )
4777             (?:
4778             [[:blank:]\h]*\,[[:blank:]\h]*
4779             (? (?&word) )
4780             )?
4781             )
4782             |
4783             (?:
4784             (? (?&word) )
4785             [[:blank:]\h]*\,[[:blank:]\h]*
4786             (? (?-2) )
4787             )
4788             |
4789             (?:
4790             (? (?&word) )
4791             )
4792             |
4793             (?:
4794             ( # paren group 1 (full function)
4795             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4796             (? # paren group 2 (parens)
4797             \(
4798             ( # paren group 3 (contents of parens)
4799             (?:
4800             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4801             |
4802             (?&paren_group) # Recurse to named capture group
4803             )*
4804             )
4805             \)
4806             )
4807             )
4808             )
4809             )
4810             (?
4811             (?:
4812             (?(?&word))
4813             [[:blank:]\h]+
4814             \-?(? (?:eq|ne|lt|le|gt|ge) )
4815             [[:blank:]\h]+
4816             (?(?&word))
4817             )
4818             )
4819             (?
4820             (?:
4821             (?!\bv\()(?[a-zA-Z]\w*)
4822             \(
4823             [[:blank:]\h]*
4824             (?
4825             (?> (?&func_words) )?
4826             )
4827             [[:blank:]\h]*
4828             \)
4829             )
4830             |
4831             (?:
4832             ( # paren group 1 (full function)
4833             (?!\bv\() # Take care to avoid catching modern-style variable v()
4834             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
4835             (? # paren group 2 (parens)
4836             \(
4837             (? # paren group 3 (contents of parens)
4838             (?:
4839             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4840             |
4841             (?&paren_group) # Recurse to named capture group
4842             )*
4843             )
4844             \)
4845             )
4846             )
4847             )
4848             )
4849             (?
4850             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
4851             |
4852             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
4853             )
4854             (?
4855             (?:
4856             (?: (?&substring) )
4857             )
4858             |
4859             (?:
4860             (?:(?&substring)[[:blank:]\h]+(?&string) )
4861             )
4862             )
4863             (?
4864             (?:
4865             (?(?&word))
4866             [[:blank:]\h]+
4867             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
4868             [[:blank:]\h]+
4869             (?(?&word))
4870             )
4871             )
4872             (?
4873             (?:
4874             (?$Regexp::Common::Apache2::REGEXP->{cstring})
4875             )
4876             |
4877             (?:
4878             (? (?&variable) )
4879             )
4880             |
4881             (?:
4882             \$(?\{)?(?${DIGIT})(?()\})
4883             )
4884             )
4885             (?
4886             (?:
4887             \%\{
4888             (?:
4889             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
4890             )
4891             \}
4892             )
4893             |
4894             (?:
4895             \%\{
4896             (?:
4897             (?${VARNAME})
4898             )
4899             \}
4900             )
4901             |
4902             (?:
4903             \bv\(
4904             [[:blank:]\h]*
4905             (?["'])
4906             (?:
4907             (?${VARNAME})
4908             )
4909             [[:blank:]\h]*
4910             \g{var_quote}
4911             \)
4912             )
4913             )
4914             (?
4915             (?:
4916             (?
4917             (?$IPv4)
4918             |
4919             (?$IPv6)
4920             )
4921             )
4922             |
4923             (?:
4924             (?$Regexp::Common::Apache2::REGEXP->{digits})
4925             )
4926             |
4927             (?:
4928             (?['"])
4929             (?:
4930             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4931             )
4932             \g{word_quote}
4933             )
4934             |
4935             (?:
4936             (?['"])
4937             (?:
4938             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4939             )
4940             \g{word_quote}
4941             )
4942             |
4943             (?:
4944             (?
4945             (?: (?: (?-2)\. )+ (?-2) )
4946             )
4947             )
4948             |
4949             (?:
4950             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4951             )
4952             |
4953             (?:
4954             (?(?&variable))
4955             )
4956             |
4957             (?:
4958             (?(?&function))
4959             )
4960             |
4961             (?:
4962             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4963             )
4964             )
4965             (?
4966             (?:
4967             (?
4968             (?$IPv4)
4969             |
4970             (?$IPv6)
4971             )
4972             )
4973             |
4974             (?:
4975             (?$Regexp::Common::Apache2::REGEXP->{digits})
4976             )
4977             |
4978             (?:
4979             (?['"])
4980             (?:
4981             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4982             )
4983             \g{word_quote}
4984             )
4985             |
4986             (?:
4987             (?['"])
4988             (?:
4989             (? (?&string) )
4990             )
4991             \g{word_quote}
4992             )
4993             |
4994             (?:
4995             (?
4996             (?: (?: (?-2)\. )+ (?-2) )
4997             )
4998             )
4999             |
5000             (?:
5001             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
5002             )
5003             |
5004             (?:
5005             (?(?&variable))
5006             )
5007             |
5008             (?:
5009             (?(?&function))
5010             )
5011             |
5012             (?:
5013             (? $Regexp::Common::Apache2::REGEXP->{regex} )
5014             )
5015             )
5016             (?
5017             (?:
5018             (?
5019             (?:
5020             (?&word)
5021             [[:blank:]\h]*\,[[:blank:]\h]*
5022             )*
5023             (?&word)
5024             )
5025             (?:
5026             [[:blank:]\h]*\,[[:blank:]\h]*
5027             (? (?&word) )
5028             )?
5029             )
5030             |
5031             (?:
5032             (? (?&word) )
5033             )
5034             )
5035             )
5036             /x;
5037              
5038             ## Trunk regular expression
5039             @$TRUNK{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false is_true is_false )} =
5040 28         2169 @$REGEXP{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false is_true is_false )};
5041            
5042             ## stringcomp
5043             ## | integercomp
5044             ## | unaryop word
5045             ## | word binaryop word
5046             ## | word "in" listfunc
5047             ## | word "=~" regex
5048             ## | word "!~" regex
5049             ## | word "in" "{" list "}"
5050             ## Ref:
5051             ##
5052             ##
5053 28         1633283 $TRUNK->{comp} = qr/
5054             (?
5055             (?:
5056             (?(?&stringcomp))
5057             )
5058             |
5059             (?:
5060             (?(?&integercomp))
5061             )
5062             |
5063             (?
5064             (?:(?<=\W)|(?<=^)|(?<=\A))
5065             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
5066             [[:blank:]\h]+
5067             (?(?&word))
5068             )
5069             |
5070             (?
5071             (?(?&word_lax))
5072             [[:blank:]\h]+
5073             (?:
5074             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
5075             |
5076             (?:
5077             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
5078             )
5079             )
5080             [[:blank:]\h]+
5081             (?(?&word_lax))
5082             )
5083             |
5084             (?
5085             (?(?&word))
5086             [[:blank:]\h]+
5087             \-?in
5088             [[:blank:]\h]+
5089             (?(?&listfunc))
5090             )
5091             |
5092             (?
5093             (?(?&word))
5094             [[:blank:]\h]+
5095             (?[\=|\!]\~)
5096             [[:blank:]\h]+
5097             (?$Regexp::Common::Apache2::TRUNK->{regex})
5098             )
5099             |
5100             (?
5101             (?(?&word))
5102             [[:blank:]\h]+
5103             \-?in
5104             [[:blank:]\h]+
5105             \{
5106             [[:blank:]\h]*
5107             (?(?&list))
5108             [[:blank:]\h]*
5109             \}
5110             )
5111             )
5112             (?(DEFINE)
5113             (?
5114             (?:
5115             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
5116             (?
5117             (?&stringcomp)
5118             )
5119             )
5120             )
5121             |
5122             (?:
5123             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
5124             (?
5125             (?&integercomp)
5126             )
5127             )
5128             )
5129             |
5130             (?:
5131             (?:(?<=\W)|(?<=^)|(?<=\A))
5132             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
5133             [[:blank:]\h]+
5134             (? (?&word_lax) )
5135             )
5136             |
5137             (?:
5138             (? (?&word_lax) )
5139             [[:blank:]\h]+
5140             (?:
5141             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
5142             |
5143             (?:
5144             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
5145             )
5146             )
5147             [[:blank:]\h]+
5148             (? (?&word_lax) )
5149             )
5150             |
5151             (?:
5152             (? (?&word) )
5153             [[:blank:]\h]+
5154             \-?in
5155             [[:blank:]\h]+
5156             (? (?&listfunc) )
5157             )
5158             |
5159             (?:
5160             (? (?&word) )
5161             [[:blank:]\h]+
5162             (? [\=|\!]\~ )
5163             [[:blank:]\h]+
5164             $Regexp::Common::Apache2::REGEXP->{regex}
5165             )
5166             |
5167             (?:
5168             (? (?&word) )
5169             [[:blank:]\h]+
5170             \-?in
5171             [[:blank:]\h]+
5172             \{
5173             [[:blank:]\h]*
5174             (? (?&list) )
5175             [[:blank:]\h]*
5176             \}
5177             )
5178             )
5179             (?
5180             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
5181             |
5182             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
5183             |
5184             (?:
5185             \![[:blank:]\h]*
5186             (? (?-2) )
5187             )
5188             |
5189             (?:
5190             \(
5191             [[:blank:]\h]*
5192             (? (?&cond) )
5193             [[:blank:]\h]*
5194             \)
5195             )
5196             |
5197             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
5198             (?(?&comp))
5199             )
5200             |
5201             (?:
5202             (?(?=(?:.+?)\&\&(?:.+?))
5203             (? (?: (?-2) )+ )
5204             [[:blank:]\h]*
5205             \&\&
5206             [[:blank:]\h]*
5207             (? (?: (?-2) )+ )
5208             )
5209             )
5210             |
5211             (?:
5212             (?(?=(?:.+?)\|\|(?:.+?))
5213             (? (?: (?-2) )+ )
5214             [[:blank:]\h]*
5215             \|\|
5216             [[:blank:]\h]*
5217             (? (?: (?-2) )+ )
5218             )
5219             )
5220             )
5221             (?
5222             (?:
5223             (?!\bv\()(?[a-zA-Z]\w*)
5224             \(
5225             [[:blank:]\h]*
5226             (?
5227             (?> (?&func_words) )?
5228             )
5229             [[:blank:]\h]*
5230             \)
5231             )
5232             |
5233             (?:
5234             ( # paren group 1 (full function)
5235             (?!\bv\() # Take care to avoid catching modern-style variable v()
5236             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
5237             (? # paren group 2 (parens)
5238             \(
5239             (? # paren group 3 (contents of parens)
5240             (?:
5241             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5242             |
5243             (?&paren_group) # Recurse to named capture group
5244             )*
5245             )
5246             \)
5247             )
5248             )
5249             )
5250             )
5251             (?
5252             (?:
5253             (? (?&word) )
5254             )
5255             |
5256             (?:
5257             (?:
5258             (? (?&word) )
5259             [[:blank:]\h]*\,[[:blank:]\h]*
5260             (? (?&list) )
5261             )
5262             |
5263             (?:
5264             (?
5265             (?:
5266             (?&word)
5267             [[:blank:]\h]*\,[[:blank:]\h]*
5268             )*
5269             (?&word)
5270             )
5271             (?:
5272             [[:blank:]\h]*\,[[:blank:]\h]*
5273             (? (?&word) )
5274             )?
5275             )
5276             )
5277             )
5278             (?
5279             (?:
5280             (?(?&word))
5281             [[:blank:]\h]+
5282             \-?(? (?:eq|ne|lt|le|gt|ge) )
5283             [[:blank:]\h]+
5284             (?(?&word))
5285             )
5286             )
5287             (?
5288             \bjoin\(
5289             [[:blank:]\h]*
5290             (?:
5291             (?:
5292             (? (?&list) )
5293             [[:blank:]]*\,[[:blank:]]*
5294             (? (?&word) )
5295             )
5296             |
5297             (? (?&list) )
5298             )
5299             [[:blank:]\h]*
5300             \)
5301             )
5302             (?
5303             (?:
5304             \{
5305             [[:blank:]\h]*
5306             (?(?&words))
5307             [[:blank:]\h]*
5308             \}
5309             )
5310             |
5311             (?:
5312             \(
5313             [[:blank:]\h]*
5314             (? (?&list) )
5315             [[:blank:]\h]*
5316             \)
5317             )
5318             |
5319             (?:
5320             (?(?&listfunc))
5321             )
5322             |
5323             (?:
5324             (?(?=\bsplit\()
5325             (?(?&split))
5326             )
5327             )
5328             )
5329             (?
5330             (?:
5331             (?!\bv\()(?[a-zA-Z]\w*)
5332             \(
5333             [[:blank:]\h]*
5334             (?
5335             (?> (?&func_words) )?
5336             )
5337             [[:blank:]\h]*
5338             \)
5339             )
5340             |
5341             (?:
5342             ( # paren group 1 (full function)
5343             (?!\bv\() # Take care to avoid catching modern-style variable v()
5344             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
5345             (? # paren group 2 (parens)
5346             \(
5347             (? # paren group 3 (contents of parens)
5348             (?:
5349             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5350             |
5351             (?&paren_group) # Recurse to named capture group
5352             )*
5353             )
5354             \)
5355             )
5356             )
5357             )
5358             )
5359             (?
5360             (?:
5361             $Regexp::Common::Apache2::REGEXP->{regex}
5362             |
5363             (?:
5364             (? (?®sub) )
5365             )
5366             )
5367             )
5368             (?
5369             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
5370             |
5371             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
5372             )
5373             (?
5374             s(?${REGSEP})
5375             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5376             \g{regsep}
5377             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5378             \g{regsep}
5379             (?${REGFLAGS})?
5380             )
5381             (?
5382             split\(
5383             [[:blank:]\h]*
5384             (?(?®any))
5385             [[:blank:]\h]*\,[[:blank:]\h]*
5386             (?:
5387             (?:
5388             (? (?&word) )
5389             )
5390             |
5391             (?:
5392             (? (?&list) )
5393             )
5394             )
5395             [[:blank:]\h]*
5396             \)
5397             )
5398             (?
5399             (?:
5400             (?: (?&substring) )
5401             )
5402             |
5403             (?:
5404             (?: (?&substring)[[:blank:]\h]+(?&string) )
5405             )
5406             )
5407             (?
5408             (?:
5409             (?(?&word))
5410             [[:blank:]\h]+
5411             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
5412             [[:blank:]\h]+
5413             (?(?&word))
5414             )
5415             )
5416             (?
5417             \bsub\(
5418             [[:blank:]\h]*
5419             (?(?=(?:[s]${REGSEP}))
5420             (? (?®sub) )
5421             )
5422             [[:blank:]\h]*
5423             \,
5424             [[:blank:]\h]*
5425             (?
5426             (? (?>(?&word)) )
5427             )
5428             [[:blank:]\h]*
5429             \)
5430             )
5431             (?
5432             (?:
5433             (?$Regexp::Common::Apache2::REGEXP->{cstring})
5434             )
5435             |
5436             (?:
5437             (? (?&variable) )
5438             )
5439             )
5440             (?
5441             (?:
5442             \%\{
5443             (?:
5444             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
5445             )
5446             \}
5447             )
5448             |
5449             (?:
5450             \%\{
5451             (?:
5452             (?${VARNAME})
5453             )
5454             \}
5455             )
5456             |
5457             (?:
5458             \bv\(
5459             [[:blank:]\h]*
5460             (?["'])
5461             (?:
5462             (?${VARNAME})
5463             )
5464             [[:blank:]\h]*
5465             \g{var_quote}
5466             \)
5467             )
5468             |
5469             (?:
5470             (?:^|\A|(?
5471             (?
5472             \$(?\{)?
5473             (?${DIGIT})
5474             (?()\})
5475             )
5476             )
5477             |
5478             (?:
5479             \%\{\:
5480             (?:
5481             (? (?&word) )
5482             )
5483             \:\}
5484             )
5485             |
5486             (?:
5487             \%\{\:
5488             (?:
5489             (? (?&cond) )
5490             )
5491             \:\}
5492             )
5493             )
5494             (?
5495             (?:
5496             (?
5497             (?$IPv4)
5498             |
5499             (?$IPv6)
5500             )
5501             )
5502             |
5503             (?:
5504             (? $Regexp::Common::Apache2::REGEXP->{digits} )
5505             )
5506             |
5507             (?:
5508             (?['"])
5509             (?:
5510             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
5511             )
5512             \g{word_quote}
5513             )
5514             |
5515             (?:
5516             (?['"])
5517             (?:
5518             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
5519             )
5520             \g{word_quote}
5521             )
5522             |
5523             (?:
5524             \(
5525             [[:blank:]\h]*
5526             (? (?&word_lax) )
5527             [[:blank:]\h]*
5528             \)
5529             )
5530             |
5531             (?:
5532             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
5533             (?
5534             (?: (?: (?-2)\. )+ (?-2) )
5535             )
5536             )
5537             )
5538             |
5539             (?:
5540             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
5541             )
5542             |
5543             (?:
5544             (?(?&variable))
5545             )
5546             |
5547             (?:
5548             (?(?=\bsub\b\()
5549             (? (?&sub) )
5550             )
5551             )
5552             |
5553             (?:
5554             (?(?=\bjoin\b\()
5555             (? (?&join) )
5556             )
5557             )
5558             |
5559             (?:
5560             (? (?&function) )
5561             )
5562             |
5563             (?:
5564             (? $Regexp::Common::Apache2::TRUNK->{regex} )
5565             )
5566             )
5567             (?
5568             (?:
5569             (?
5570             (?$IPv4)
5571             |
5572             (?$IPv6)
5573             )
5574             )
5575             |
5576             (?:
5577             (? $Regexp::Common::Apache2::REGEXP->{digits} )
5578             )
5579             |
5580             (?:
5581             (?['"])
5582             (?:
5583             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
5584             )
5585             \g{word_quote}
5586             )
5587             |
5588             (?:
5589             (?['"])
5590             (?:
5591             (? (?&string) )
5592             )
5593             \g{word_quote}
5594             )
5595             |
5596             (?:
5597             \(
5598             [[:blank:]\h]*
5599             (? (?-2) )
5600             [[:blank:]\h]*
5601             \)
5602             )
5603             |
5604             (?:
5605             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
5606             (?
5607             (?: (?: (?-2)\. )+ (?-2) )
5608             )
5609             )
5610             )
5611             |
5612             (?:
5613             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
5614             )
5615             |
5616             (?:
5617             (?(?&variable))
5618             )
5619             |
5620             (?:
5621             (?(?=\bsub\b\()
5622             (? (?&sub) )
5623             )
5624             )
5625             |
5626             (?:
5627             (?(?=\bjoin\b\()
5628             (? (?&join) )
5629             )
5630             )
5631             |
5632             (?:
5633             (? (?&function) )
5634             )
5635             |
5636             (?:
5637             (? $Regexp::Common::Apache2::TRUNK->{regex} )
5638             )
5639             )
5640             (?
5641             (?:
5642             [[:blank:]\h]*\K
5643             (? (?&word) )
5644             [[:blank:]\h]*\,[[:blank:]\h]*
5645             (? (?&list) )
5646             )
5647             |
5648             (?:
5649             [[:blank:]\h]*\K
5650             (?
5651             (?:
5652             (?&word)
5653             [[:blank:]\h]*\,[[:blank:]\h]*
5654             )*
5655             (?&word)
5656             )
5657             (?:
5658             [[:blank:]\h]*\,[[:blank:]\h]*
5659             (? (?&word) )
5660             )?
5661             )
5662             |
5663             (?:
5664             [[:blank:]\h]*\K
5665             (? (?&word) )
5666             )
5667             )
5668             )
5669             /x;
5670              
5671             ## "true"
5672             ## | "false"
5673             ## | "!" cond
5674             ## | cond "&&" cond
5675             ## | cond "||" cond
5676             ## | "(" cond ")"
5677             ## | comp
5678 28         835073 $TRUNK->{cond} = qr/
5679             (?
5680             (?:
5681             (?$Regexp::Common::Apache2::TRUNK->{is_true})
5682             )
5683             |
5684             (?:
5685             (?$Regexp::Common::Apache2::TRUNK->{is_false})
5686             )
5687             |
5688             (?:
5689             (?:
5690             \(
5691             [[:blank:]\h]*
5692             (?
5693             (?&cond_recur)
5694             )
5695             [[:blank:]\h]*
5696             \)
5697             )
5698             )
5699             |
5700             (?:
5701             (?\![[:blank:]\h]*(?(?&cond_recur)))
5702             )
5703             |
5704             (?:
5705             (?(?=(?:.+?)\&\&(?:.+?))
5706             (?
5707             (?
5708             (?: (?&cond_recur) )+
5709             )
5710             [[:blank:]\h]*
5711             \&\&
5712             [[:blank:]\h]*
5713             (?
5714             (?: (?&cond_recur) )+
5715             )
5716             )
5717             )
5718             )
5719             |
5720             (?:
5721             (?(?=(?:.+?)\|\|(?:.+?))
5722             (?
5723             (?
5724             (?: (?&cond_recur) )+
5725             )
5726             [[:blank:]\h]*
5727             \|\|
5728             [[:blank:]\h]*
5729             (?
5730             (?: (?&cond_recur) )+
5731             )
5732             )
5733             )
5734             )
5735             |
5736             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
5737             (? (?&comp) )
5738             )
5739             )
5740             (?(DEFINE)
5741             (?
5742             (?:
5743             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
5744             (?
5745             (?&stringcomp)
5746             )
5747             )
5748             )
5749             |
5750             (?:
5751             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
5752             (?
5753             (?&integercomp)
5754             )
5755             )
5756             )
5757             |
5758             (?:
5759             (?:(?<=\W)|(?<=^)|(?<=\A))
5760             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
5761             [[:blank:]\h]+
5762             (? (?&word_lax) )
5763             )
5764             |
5765             (?:
5766             (? (?&word_lax) )
5767             [[:blank:]\h]+
5768             (?:
5769             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
5770             |
5771             (?:
5772             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
5773             )
5774             )
5775             [[:blank:]\h]+
5776             (? (?&word_lax) )
5777             )
5778             |
5779             (?:
5780             (? (?&word) )
5781             [[:blank:]\h]+
5782             \-?in
5783             [[:blank:]\h]+
5784             (? (?&listfunc) )
5785             )
5786             |
5787             (?:
5788             (? (?&word) )
5789             [[:blank:]\h]+
5790             (? [\=|\!]\~ )
5791             [[:blank:]\h]+
5792             $Regexp::Common::Apache2::REGEXP->{regex}
5793             )
5794             |
5795             (?:
5796             (? (?&word) )
5797             [[:blank:]\h]+
5798             \-?in
5799             [[:blank:]\h]+
5800             \{
5801             [[:blank:]\h]*
5802             (? (?&list) )
5803             [[:blank:]\h]*
5804             \}
5805             )
5806             )
5807             (?
5808             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
5809             |
5810             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
5811             |
5812             (?:
5813             \![[:blank:]\h]*
5814             (? (?-2) )
5815             )
5816             |
5817             (?:
5818             \(
5819             [[:blank:]\h]*
5820             (? (?&cond) )
5821             [[:blank:]\h]*
5822             \)
5823             )
5824             |
5825             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
5826             (?(?&comp))
5827             )
5828             |
5829             (?:
5830             (?(?=(?:.+?)\&\&(?:.+?))
5831             (? (?: (?-2) )+ )
5832             [[:blank:]\h]*
5833             \&\&
5834             [[:blank:]\h]*
5835             (? (?: (?-2) )+ )
5836             )
5837             )
5838             |
5839             (?:
5840             (?(?=(?:.+?)\|\|(?:.+?))
5841             (? (?: (?-2) )+ )
5842             [[:blank:]\h]*
5843             \|\|
5844             [[:blank:]\h]*
5845             (? (?: (?-2) )+ )
5846             )
5847             )
5848             )
5849             (?
5850             (?:
5851             (?!\bv\()(?[a-zA-Z]\w*)
5852             \(
5853             [[:blank:]\h]*
5854             (?
5855             (?> (?&func_words) )?
5856             )
5857             [[:blank:]\h]*
5858             \)
5859             )
5860             |
5861             (?:
5862             ( # paren group 1 (full function)
5863             (?!\bv\() # Take care to avoid catching modern-style variable v()
5864             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
5865             (? # paren group 2 (parens)
5866             \(
5867             (? # paren group 3 (contents of parens)
5868             (?:
5869             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5870             |
5871             (?&paren_group) # Recurse to named capture group
5872             )*
5873             )
5874             \)
5875             )
5876             )
5877             )
5878             )
5879             (?
5880             (?:
5881             (? (?&word) )
5882             )
5883             |
5884             (?:
5885             (?:
5886             (? (?&word) )
5887             [[:blank:]\h]*\,[[:blank:]\h]*
5888             (? (?&list) )
5889             )
5890             |
5891             (?:
5892             (?
5893             (?:
5894             (?&word)
5895             [[:blank:]\h]*\,[[:blank:]\h]*
5896             )*
5897             (?&word)
5898             )
5899             (?:
5900             [[:blank:]\h]*\,[[:blank:]\h]*
5901             (? (?&word) )
5902             )?
5903             )
5904             )
5905             )
5906             (?
5907             (?:
5908             (?(?&word))
5909             [[:blank:]\h]+
5910             \-?(? (?:eq|ne|lt|le|gt|ge) )
5911             [[:blank:]\h]+
5912             (?(?&word))
5913             )
5914             )
5915             (?
5916             \bjoin\(
5917             [[:blank:]\h]*
5918             (?:
5919             (?:
5920             (? (?&list) )
5921             [[:blank:]]*\,[[:blank:]]*
5922             (? (?&word) )
5923             )
5924             |
5925             (? (?&list) )
5926             )
5927             [[:blank:]\h]*
5928             \)
5929             )
5930             (?
5931             (?:
5932             \{
5933             [[:blank:]\h]*
5934             (?(?&words))
5935             [[:blank:]\h]*
5936             \}
5937             )
5938             |
5939             (?:
5940             \(
5941             [[:blank:]\h]*
5942             (? (?&list) )
5943             [[:blank:]\h]*
5944             \)
5945             )
5946             |
5947             (?:
5948             (?(?&listfunc))
5949             )
5950             |
5951             (?:
5952             (?(?=\bsplit\()
5953             (?(?&split))
5954             )
5955             )
5956             )
5957             (?
5958             (?:
5959             (?!\bv\()(?[a-zA-Z]\w*)
5960             \(
5961             [[:blank:]\h]*
5962             (?
5963             (?> (?&func_words) )?
5964             )
5965             [[:blank:]\h]*
5966             \)
5967             )
5968             |
5969             (?:
5970             ( # paren group 1 (full function)
5971             (?!\bv\() # Take care to avoid catching modern-style variable v()
5972             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
5973             (? # paren group 2 (parens)
5974             \(
5975             (? # paren group 3 (contents of parens)
5976             (?:
5977             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5978             |
5979             (?&paren_group) # Recurse to named capture group
5980             )*
5981             )
5982             \)
5983             )
5984             )
5985             )
5986             )
5987             (?
5988             (?:
5989             $Regexp::Common::Apache2::REGEXP->{regex}
5990             |
5991             (?:
5992             (? (?®sub) )
5993             )
5994             )
5995             )
5996             (?
5997             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
5998             |
5999             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
6000             )
6001             (?
6002             s(?${REGSEP})
6003             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6004             \g{regsep}
6005             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6006             \g{regsep}
6007             (?${REGFLAGS})?
6008             )
6009             (?
6010             split\(
6011             [[:blank:]\h]*
6012             (?(?®any))
6013             [[:blank:]\h]*\,[[:blank:]\h]*
6014             (?:
6015             (?:
6016             (? (?&word) )
6017             )
6018             |
6019             (?:
6020             (? (?&list) )
6021             )
6022             )
6023             [[:blank:]\h]*
6024             \)
6025             )
6026             (?
6027             (?:
6028             (?: (?&substring) )
6029             )
6030             |
6031             (?:
6032             (?: (?&substring)[[:blank:]\h]+(?&string) )
6033             )
6034             )
6035             (?
6036             (?:
6037             (?(?&word))
6038             [[:blank:]\h]+
6039             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
6040             [[:blank:]\h]+
6041             (?(?&word))
6042             )
6043             )
6044             (?
6045             \bsub\(
6046             [[:blank:]\h]*
6047             (?(?=(?:[s]${REGSEP}))
6048             (? (?®sub) )
6049             )
6050             [[:blank:]\h]*
6051             \,
6052             [[:blank:]\h]*
6053             (?
6054             (? (?>(?&word)) )
6055             )
6056             [[:blank:]\h]*
6057             \)
6058             )
6059             (?
6060             (?:
6061             (?$Regexp::Common::Apache2::REGEXP->{cstring})
6062             )
6063             |
6064             (?:
6065             (? (?&variable) )
6066             )
6067             )
6068             (?
6069             (?:
6070             \%\{
6071             (?:
6072             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
6073             )
6074             \}
6075             )
6076             |
6077             (?:
6078             \%\{
6079             (?:
6080             (?${VARNAME})
6081             )
6082             \}
6083             )
6084             |
6085             (?:
6086             \bv\(
6087             [[:blank:]\h]*
6088             (?["'])
6089             (?:
6090             (?${VARNAME})
6091             )
6092             [[:blank:]\h]*
6093             \g{var_quote}
6094             \)
6095             )
6096             |
6097             (?:
6098             (?:^|\A|(?
6099             (?
6100             \$(?\{)?
6101             (?${DIGIT})
6102             (?()\})
6103             )
6104             )
6105             |
6106             (?:
6107             \%\{\:
6108             (?:
6109             (? (?&word) )
6110             )
6111             \:\}
6112             )
6113             |
6114             (?:
6115             \%\{\:
6116             (?:
6117             (? (cond_recur) )
6118             )
6119             \:\}
6120             )
6121             )
6122             (?
6123             (?:
6124             (?
6125             (?$IPv4)
6126             |
6127             (?$IPv6)
6128             )
6129             )
6130             |
6131             (?:
6132             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6133             )
6134             |
6135             (?:
6136             (?['"])
6137             (?:
6138             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6139             )
6140             \g{word_quote}
6141             )
6142             |
6143             (?:
6144             (?['"])
6145             (?:
6146             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6147             )
6148             \g{word_quote}
6149             )
6150             |
6151             (?:
6152             \(
6153             [[:blank:]\h]*
6154             (? (?&word_lax) )
6155             [[:blank:]\h]*
6156             \)
6157             )
6158             |
6159             (?:
6160             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6161             (?
6162             (?: (?: (?-2)\. )+ (?-2) )
6163             )
6164             )
6165             )
6166             |
6167             (?:
6168             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6169             )
6170             |
6171             (?:
6172             (?(?&variable))
6173             )
6174             |
6175             (?:
6176             (?(?=\bsub\b\()
6177             (? (?&sub) )
6178             )
6179             )
6180             |
6181             (?:
6182             (?(?=\bjoin\b\()
6183             (? (?&join) )
6184             )
6185             )
6186             |
6187             (?:
6188             (? (?&function) )
6189             )
6190             |
6191             (?:
6192             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6193             )
6194             )
6195             (?
6196             (?:
6197             (?
6198             (?$IPv4)
6199             |
6200             (?$IPv6)
6201             )
6202             )
6203             |
6204             (?:
6205             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6206             )
6207             |
6208             (?:
6209             (?['"])
6210             (?:
6211             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6212             )
6213             \g{word_quote}
6214             )
6215             |
6216             (?:
6217             (?['"])
6218             (?:
6219             (? (?&string) )
6220             )
6221             \g{word_quote}
6222             )
6223             |
6224             (?:
6225             \(
6226             [[:blank:]\h]*
6227             (? (?-2) )
6228             [[:blank:]\h]*
6229             \)
6230             )
6231             |
6232             (?:
6233             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6234             (?
6235             (?: (?: (?-2)\. )+ (?-2) )
6236             )
6237             )
6238             )
6239             |
6240             (?:
6241             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6242             )
6243             |
6244             (?:
6245             (?(?&variable))
6246             )
6247             |
6248             (?:
6249             (?(?=\bsub\b\()
6250             (? (?&sub) )
6251             )
6252             )
6253             |
6254             (?:
6255             (?(?=\bjoin\b\()
6256             (? (?&join) )
6257             )
6258             )
6259             |
6260             (?:
6261             (? (?&function) )
6262             )
6263             |
6264             (?:
6265             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6266             )
6267             )
6268             (?
6269             (?:
6270             [[:blank:]\h]*\K
6271             (? (?&word) )
6272             [[:blank:]\h]*\,[[:blank:]\h]*
6273             (? (?&list) )
6274             )
6275             |
6276             (?:
6277             [[:blank:]\h]*\K
6278             (?
6279             (?:
6280             (?&word)
6281             [[:blank:]\h]*\,[[:blank:]\h]*
6282             )*
6283             (?&word)
6284             )
6285             (?:
6286             [[:blank:]\h]*\,[[:blank:]\h]*
6287             (? (?&word) )
6288             )?
6289             )
6290             |
6291             (?:
6292             [[:blank:]\h]*\K
6293             (? (?&word) )
6294             )
6295             )
6296             )
6297             /xi;
6298              
6299             ## cond
6300             ## | string
6301 28         1717686 $TRUNK->{expr} = qr/
6302             (?
6303             (?:
6304             (?(?&cond))
6305             )
6306             |
6307             (?:
6308             (?(?&string))
6309             )
6310             )
6311             (?(DEFINE)
6312             (?
6313             (?:
6314             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
6315             (?
6316             (?&stringcomp)
6317             )
6318             )
6319             )
6320             |
6321             (?:
6322             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
6323             (?
6324             (?&integercomp)
6325             )
6326             )
6327             )
6328             |
6329             (?:
6330             (?:(?<=\W)|(?<=^)|(?<=\A))
6331             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
6332             [[:blank:]\h]+
6333             (? (?&word_lax) )
6334             )
6335             |
6336             (?:
6337             (? (?&word_lax) )
6338             [[:blank:]\h]+
6339             (?:
6340             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
6341             |
6342             (?:
6343             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
6344             )
6345             )
6346             [[:blank:]\h]+
6347             (? (?&word_lax) )
6348             )
6349             |
6350             (?:
6351             (? (?&word) )
6352             [[:blank:]\h]+
6353             \-?in
6354             [[:blank:]\h]+
6355             (? (?&listfunc) )
6356             )
6357             |
6358             (?:
6359             (? (?&word) )
6360             [[:blank:]\h]+
6361             (? [\=|\!]\~ )
6362             [[:blank:]\h]+
6363             $Regexp::Common::Apache2::REGEXP->{regex}
6364             )
6365             |
6366             (?:
6367             (? (?&word) )
6368             [[:blank:]\h]+
6369             \-?in
6370             [[:blank:]\h]+
6371             \{
6372             [[:blank:]\h]*
6373             (? (?&list) )
6374             [[:blank:]\h]*
6375             \}
6376             )
6377             )
6378             (?
6379             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
6380             |
6381             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
6382             |
6383             (?:
6384             \![[:blank:]\h]*
6385             (? (?-2) )
6386             )
6387             |
6388             (?:
6389             \(
6390             [[:blank:]\h]*
6391             (? (?&cond) )
6392             [[:blank:]\h]*
6393             \)
6394             )
6395             |
6396             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
6397             (?(?&comp))
6398             )
6399             |
6400             (?:
6401             (?(?=(?:.+?)\&\&(?:.+?))
6402             (? (?: (?-2) )+ )
6403             [[:blank:]\h]*
6404             \&\&
6405             [[:blank:]\h]*
6406             (? (?: (?-2) )+ )
6407             )
6408             )
6409             |
6410             (?:
6411             (?(?=(?:.+?)\|\|(?:.+?))
6412             (? (?: (?-2) )+ )
6413             [[:blank:]\h]*
6414             \|\|
6415             [[:blank:]\h]*
6416             (? (?: (?-2) )+ )
6417             )
6418             )
6419             )
6420             (?
6421             (?:
6422             (?!\bv\()(?[a-zA-Z]\w*)
6423             \(
6424             [[:blank:]\h]*
6425             (?
6426             (?> (?&func_words) )?
6427             )
6428             [[:blank:]\h]*
6429             \)
6430             )
6431             |
6432             (?:
6433             ( # paren group 1 (full function)
6434             (?!\bv\() # Take care to avoid catching modern-style variable v()
6435             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
6436             (? # paren group 2 (parens)
6437             \(
6438             (? # paren group 3 (contents of parens)
6439             (?:
6440             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6441             |
6442             (?&paren_group) # Recurse to named capture group
6443             )*
6444             )
6445             \)
6446             )
6447             )
6448             )
6449             )
6450             (?
6451             (?:
6452             (? (?&word) )
6453             )
6454             |
6455             (?:
6456             (?:
6457             (? (?&word) )
6458             [[:blank:]\h]*\,[[:blank:]\h]*
6459             (? (?&list) )
6460             )
6461             |
6462             (?:
6463             (?
6464             (?:
6465             (?&word)
6466             [[:blank:]\h]*\,[[:blank:]\h]*
6467             )*
6468             (?&word)
6469             )
6470             (?:
6471             [[:blank:]\h]*\,[[:blank:]\h]*
6472             (? (?&word) )
6473             )?
6474             )
6475             )
6476             )
6477             (?
6478             (?:
6479             (?(?&word))
6480             [[:blank:]\h]+
6481             \-?(? (?:eq|ne|lt|le|gt|ge) )
6482             [[:blank:]\h]+
6483             (?(?&word))
6484             )
6485             )
6486             (?
6487             \bjoin\(
6488             [[:blank:]\h]*
6489             (?:
6490             (?:
6491             (? (?&list) )
6492             [[:blank:]]*\,[[:blank:]]*
6493             (? (?&word) )
6494             )
6495             |
6496             (? (?&list) )
6497             )
6498             [[:blank:]\h]*
6499             \)
6500             )
6501             (?
6502             (?:
6503             \{
6504             [[:blank:]\h]*
6505             (?(?&words))
6506             [[:blank:]\h]*
6507             \}
6508             )
6509             |
6510             (?:
6511             \(
6512             [[:blank:]\h]*
6513             (? (?&list) )
6514             [[:blank:]\h]*
6515             \)
6516             )
6517             |
6518             (?:
6519             (?(?&listfunc))
6520             )
6521             |
6522             (?:
6523             (?(?=\bsplit\()
6524             (?(?&split))
6525             )
6526             )
6527             )
6528             (?
6529             (?:
6530             (?!\bv\()(?[a-zA-Z]\w*)
6531             \(
6532             [[:blank:]\h]*
6533             (?
6534             (?> (?&func_words) )?
6535             )
6536             [[:blank:]\h]*
6537             \)
6538             )
6539             |
6540             (?:
6541             ( # paren group 1 (full function)
6542             (?!\bv\() # Take care to avoid catching modern-style variable v()
6543             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
6544             (? # paren group 2 (parens)
6545             \(
6546             (? # paren group 3 (contents of parens)
6547             (?:
6548             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6549             |
6550             (?&paren_group) # Recurse to named capture group
6551             )*
6552             )
6553             \)
6554             )
6555             )
6556             )
6557             )
6558             (?
6559             (?:
6560             $Regexp::Common::Apache2::REGEXP->{regex}
6561             |
6562             (?:
6563             (? (?®sub) )
6564             )
6565             )
6566             )
6567             (?
6568             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
6569             |
6570             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
6571             )
6572             (?
6573             s(?${REGSEP})
6574             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6575             \g{regsep}
6576             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6577             \g{regsep}
6578             (?${REGFLAGS})?
6579             )
6580             (?
6581             split\(
6582             [[:blank:]\h]*
6583             (?(?®any))
6584             [[:blank:]\h]*\,[[:blank:]\h]*
6585             (?:
6586             (?:
6587             (? (?&word) )
6588             )
6589             |
6590             (?:
6591             (? (?&list) )
6592             )
6593             )
6594             [[:blank:]\h]*
6595             \)
6596             )
6597             (?
6598             (?:
6599             (?: (?&substring) )
6600             )
6601             |
6602             (?:
6603             (?: (?&substring)[[:blank:]\h]+(?&string) )
6604             )
6605             )
6606             (?
6607             (?:
6608             (?(?&word))
6609             [[:blank:]\h]+
6610             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
6611             [[:blank:]\h]+
6612             (?(?&word))
6613             )
6614             )
6615             (?
6616             \bsub\(
6617             [[:blank:]\h]*
6618             (?(?=(?:[s]${REGSEP}))
6619             (? (?®sub) )
6620             )
6621             [[:blank:]\h]*
6622             \,
6623             [[:blank:]\h]*
6624             (?
6625             (? (?>(?&word)) )
6626             )
6627             [[:blank:]\h]*
6628             \)
6629             )
6630             (?
6631             (?:
6632             (?$Regexp::Common::Apache2::REGEXP->{cstring})
6633             )
6634             |
6635             (?:
6636             (? (?&variable) )
6637             )
6638             )
6639             (?
6640             (?:
6641             \%\{
6642             (?:
6643             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
6644             )
6645             \}
6646             )
6647             |
6648             (?:
6649             \%\{
6650             (?:
6651             (?${VARNAME})
6652             )
6653             \}
6654             )
6655             |
6656             (?:
6657             \bv\(
6658             [[:blank:]\h]*
6659             (?["'])
6660             (?:
6661             (?${VARNAME})
6662             )
6663             [[:blank:]\h]*
6664             \g{var_quote}
6665             \)
6666             )
6667             |
6668             (?:
6669             (?:^|\A|(?
6670             (?
6671             \$(?\{)?
6672             (?${DIGIT})
6673             (?()\})
6674             )
6675             )
6676             |
6677             (?:
6678             \%\{\:
6679             (?:
6680             (? (?&word) )
6681             )
6682             \:\}
6683             )
6684             |
6685             (?:
6686             \%\{\:
6687             (?:
6688             (? (?&cond) )
6689             )
6690             \:\}
6691             )
6692             )
6693             (?
6694             (?:
6695             (?
6696             (?$IPv4)
6697             |
6698             (?$IPv6)
6699             )
6700             )
6701             |
6702             (?:
6703             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6704             )
6705             |
6706             (?:
6707             (?['"])
6708             (?:
6709             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6710             )
6711             \g{word_quote}
6712             )
6713             |
6714             (?:
6715             (?['"])
6716             (?:
6717             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6718             )
6719             \g{word_quote}
6720             )
6721             |
6722             (?:
6723             \(
6724             [[:blank:]\h]*
6725             (? (?&word_lax) )
6726             [[:blank:]\h]*
6727             \)
6728             )
6729             |
6730             (?:
6731             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6732             (?
6733             (?: (?: (?-2)\. )+ (?-2) )
6734             )
6735             )
6736             )
6737             |
6738             (?:
6739             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6740             )
6741             |
6742             (?:
6743             (?(?&variable))
6744             )
6745             |
6746             (?:
6747             (?(?=\bsub\b\()
6748             (? (?&sub) )
6749             )
6750             )
6751             |
6752             (?:
6753             (?(?=\bjoin\b\()
6754             (? (?&join) )
6755             )
6756             )
6757             |
6758             (?:
6759             (? (?&function) )
6760             )
6761             |
6762             (?:
6763             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6764             )
6765             )
6766             (?
6767             (?:
6768             (?
6769             (?$IPv4)
6770             |
6771             (?$IPv6)
6772             )
6773             )
6774             |
6775             (?:
6776             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6777             )
6778             |
6779             (?:
6780             (?['"])
6781             (?:
6782             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6783             )
6784             \g{word_quote}
6785             )
6786             |
6787             (?:
6788             (?['"])
6789             (?:
6790             (? (?&string) )
6791             )
6792             \g{word_quote}
6793             )
6794             |
6795             (?:
6796             \(
6797             [[:blank:]\h]*
6798             (? (?-2) )
6799             [[:blank:]\h]*
6800             \)
6801             )
6802             |
6803             (?:
6804             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6805             (?
6806             (?: (?: (?-2)\. )+ (?-2) )
6807             )
6808             )
6809             )
6810             |
6811             (?:
6812             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6813             )
6814             |
6815             (?:
6816             (?(?&variable))
6817             )
6818             |
6819             (?:
6820             (?(?=\bsub\b\()
6821             (? (?&sub) )
6822             )
6823             )
6824             |
6825             (?:
6826             (?(?=\bjoin\b\()
6827             (? (?&join) )
6828             )
6829             )
6830             |
6831             (?:
6832             (? (?&function) )
6833             )
6834             |
6835             (?:
6836             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6837             )
6838             )
6839             (?
6840             (?:
6841             [[:blank:]\h]*\K
6842             (? (?&word) )
6843             [[:blank:]\h]*\,[[:blank:]\h]*
6844             (? (?&list) )
6845             )
6846             |
6847             (?:
6848             [[:blank:]\h]*\K
6849             (?
6850             (?:
6851             (?&word)
6852             [[:blank:]\h]*\,[[:blank:]\h]*
6853             )*
6854             (?&word)
6855             )
6856             (?:
6857             [[:blank:]\h]*\,[[:blank:]\h]*
6858             (? (?&word) )
6859             )?
6860             )
6861             |
6862             (?:
6863             [[:blank:]\h]*\K
6864             (? (?&word) )
6865             )
6866             )
6867             )
6868             /x;
6869            
6870             ## funcname "(" words ")"
6871             ## -> Same as LISTFUNC
6872 28         1298971 $TRUNK->{function} = qr/
6873             (?
6874             (?:
6875             (?!\bv\()(?[a-zA-Z]\w*)
6876             \(
6877             [[:blank:]\h]*
6878             (?
6879             (?> (?&func_words) )?
6880             )
6881             [[:blank:]\h]*
6882             \)
6883             )
6884             |
6885             (?:
6886             ( # paren group 1 (full function)
6887             (?!\bv\() # Take care to avoid catching modern-style variable v()
6888             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
6889             (? # paren group 2 (parens)
6890             \(
6891             (? # paren group 3 (contents of parens)
6892             (?:
6893             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6894             |
6895             (?&paren_group) # Recurse to named capture group
6896             )*
6897             )
6898             \)
6899             )
6900             )
6901             )
6902             )
6903             (?(DEFINE)
6904             (?
6905             (?:
6906             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
6907             (?
6908             (?&stringcomp)
6909             )
6910             )
6911             )
6912             |
6913             (?:
6914             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
6915             (?
6916             (?&integercomp)
6917             )
6918             )
6919             )
6920             |
6921             (?:
6922             (?:(?<=\W)|(?<=^)|(?<=\A))
6923             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
6924             [[:blank:]\h]+
6925             (? (?&word_lax) )
6926             )
6927             |
6928             (?:
6929             (? (?&word_lax) )
6930             [[:blank:]\h]+
6931             (?:
6932             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
6933             |
6934             (?:
6935             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
6936             )
6937             )
6938             [[:blank:]\h]+
6939             (? (?&word_lax) )
6940             )
6941             |
6942             (?:
6943             (? (?&word) )
6944             [[:blank:]\h]+
6945             \-?in
6946             [[:blank:]\h]+
6947             (? (?&listfunc) )
6948             )
6949             |
6950             (?:
6951             (? (?&word) )
6952             [[:blank:]\h]+
6953             (? [\=|\!]\~ )
6954             [[:blank:]\h]+
6955             $Regexp::Common::Apache2::REGEXP->{regex}
6956             )
6957             |
6958             (?:
6959             (? (?&word) )
6960             [[:blank:]\h]+
6961             \-?in
6962             [[:blank:]\h]+
6963             \{
6964             [[:blank:]\h]*
6965             (? (?&list) )
6966             [[:blank:]\h]*
6967             \}
6968             )
6969             )
6970             (?
6971             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
6972             |
6973             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
6974             |
6975             (?:
6976             \![[:blank:]\h]*
6977             (? (?-2) )
6978             )
6979             |
6980             (?:
6981             \(
6982             [[:blank:]\h]*
6983             (? (?&cond) )
6984             [[:blank:]\h]*
6985             \)
6986             )
6987             |
6988             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
6989             (?(?&comp))
6990             )
6991             |
6992             (?:
6993             (?(?=(?:.+?)\&\&(?:.+?))
6994             (? (?: (?-2) )+ )
6995             [[:blank:]\h]*
6996             \&\&
6997             [[:blank:]\h]*
6998             (? (?: (?-2) )+ )
6999             )
7000             )
7001             |
7002             (?:
7003             (?(?=(?:.+?)\|\|(?:.+?))
7004             (? (?: (?-2) )+ )
7005             [[:blank:]\h]*
7006             \|\|
7007             [[:blank:]\h]*
7008             (? (?: (?-2) )+ )
7009             )
7010             )
7011             )
7012             (?
7013             (?:
7014             (?!\bv\()(?[a-zA-Z]\w*)
7015             \(
7016             [[:blank:]\h]*
7017             (?
7018             (?> (?&func_words) )?
7019             )
7020             [[:blank:]\h]*
7021             \)
7022             )
7023             |
7024             (?:
7025             ( # paren group 1 (full function)
7026             (?!\bv\() # Take care to avoid catching modern-style variable v()
7027             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
7028             (? # paren group 2 (parens)
7029             \(
7030             (? # paren group 3 (contents of parens)
7031             (?:
7032             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7033             |
7034             (?&paren_group) # Recurse to named capture group
7035             )*
7036             )
7037             \)
7038             )
7039             )
7040             )
7041             )
7042             (?
7043             (?:
7044             (? (?&word) )
7045             )
7046             |
7047             (?:
7048             (?:
7049             (? (?&word) )
7050             [[:blank:]\h]*\,[[:blank:]\h]*
7051             (? (?&list) )
7052             )
7053             |
7054             (?:
7055             (?
7056             (?:
7057             (?&word)
7058             [[:blank:]\h]*\,[[:blank:]\h]*
7059             )*
7060             (?&word)
7061             )
7062             (?:
7063             [[:blank:]\h]*\,[[:blank:]\h]*
7064             (? (?&word) )
7065             )?
7066             )
7067             )
7068             )
7069             (?
7070             (?:
7071             (?(?&word))
7072             [[:blank:]\h]+
7073             \-?(? (?:eq|ne|lt|le|gt|ge) )
7074             [[:blank:]\h]+
7075             (?(?&word))
7076             )
7077             )
7078             (?
7079             \bjoin\(
7080             [[:blank:]\h]*
7081             (?:
7082             (?:
7083             (? (?&list) )
7084             [[:blank:]]*\,[[:blank:]]*
7085             (? (?&word) )
7086             )
7087             |
7088             (? (?&list) )
7089             )
7090             [[:blank:]\h]*
7091             \)
7092             )
7093             (?
7094             (?:
7095             \{
7096             [[:blank:]\h]*
7097             (?(?&words))
7098             [[:blank:]\h]*
7099             \}
7100             )
7101             |
7102             (?:
7103             \(
7104             [[:blank:]\h]*
7105             (? (?&list) )
7106             [[:blank:]\h]*
7107             \)
7108             )
7109             |
7110             (?:
7111             (?(?&listfunc))
7112             )
7113             |
7114             (?:
7115             (?(?=\bsplit\()
7116             (?(?&split))
7117             )
7118             )
7119             )
7120             (?
7121             (?:
7122             (?!\bv\()(?[a-zA-Z]\w*)
7123             \(
7124             [[:blank:]\h]*
7125             (?
7126             (?> (?&func_words) )?
7127             )
7128             [[:blank:]\h]*
7129             \)
7130             )
7131             |
7132             (?:
7133             ( # paren group 1 (full function)
7134             (?!\bv\() # Take care to avoid catching modern-style variable v()
7135             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
7136             (? # paren group 2 (parens)
7137             \(
7138             (? # paren group 3 (contents of parens)
7139             (?:
7140             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7141             |
7142             (?&paren_group) # Recurse to named capture group
7143             )*
7144             )
7145             \)
7146             )
7147             )
7148             )
7149             )
7150             (?
7151             (?:
7152             $Regexp::Common::Apache2::REGEXP->{regex}
7153             |
7154             (?:
7155             (? (?®sub) )
7156             )
7157             )
7158             )
7159             (?
7160             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
7161             |
7162             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
7163             )
7164             (?
7165             s(?${REGSEP})
7166             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7167             \g{regsep}
7168             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7169             \g{regsep}
7170             (?${REGFLAGS})?
7171             )
7172             (?
7173             split\(
7174             [[:blank:]\h]*
7175             (?(?®any))
7176             [[:blank:]\h]*\,[[:blank:]\h]*
7177             (?:
7178             (?:
7179             (? (?&word) )
7180             )
7181             |
7182             (?:
7183             (? (?&list) )
7184             )
7185             )
7186             [[:blank:]\h]*
7187             \)
7188             )
7189             (?
7190             (?:
7191             (?: (?&substring) )
7192             )
7193             |
7194             (?:
7195             (?: (?&substring)[[:blank:]\h]+(?&string) )
7196             )
7197             )
7198             (?
7199             (?:
7200             (?(?&word))
7201             [[:blank:]\h]+
7202             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
7203             [[:blank:]\h]+
7204             (?(?&word))
7205             )
7206             )
7207             (?
7208             \bsub\(
7209             [[:blank:]\h]*
7210             (?(?=(?:[s]${REGSEP}))
7211             (? (?®sub) )
7212             )
7213             [[:blank:]\h]*
7214             \,
7215             [[:blank:]\h]*
7216             (?
7217             (? (?>(?&word)) )
7218             )
7219             [[:blank:]\h]*
7220             \)
7221             )
7222             (?
7223             (?:
7224             (?$Regexp::Common::Apache2::REGEXP->{cstring})
7225             )
7226             |
7227             (?:
7228             (? (?&variable) )
7229             )
7230             )
7231             (?
7232             (?:
7233             \%\{
7234             (?:
7235             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
7236             )
7237             \}
7238             )
7239             |
7240             (?:
7241             \%\{
7242             (?:
7243             (?${VARNAME})
7244             )
7245             \}
7246             )
7247             |
7248             (?:
7249             \bv\(
7250             [[:blank:]\h]*
7251             (?["'])
7252             (?:
7253             (?${VARNAME})
7254             )
7255             [[:blank:]\h]*
7256             \g{var_quote}
7257             \)
7258             )
7259             |
7260             (?:
7261             (?:^|\A|(?
7262             (?
7263             \$(?\{)?
7264             (?${DIGIT})
7265             (?()\})
7266             )
7267             )
7268             |
7269             (?:
7270             \%\{\:
7271             (?:
7272             (? (?&word) )
7273             )
7274             \:\}
7275             )
7276             |
7277             (?:
7278             \%\{\:
7279             (?:
7280             (? (?&cond) )
7281             )
7282             \:\}
7283             )
7284             )
7285             (?
7286             (?:
7287             (?
7288             (?$IPv4)
7289             |
7290             (?$IPv6)
7291             )
7292             )
7293             |
7294             (?:
7295             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7296             )
7297             |
7298             (?:
7299             (?['"])
7300             (?:
7301             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7302             )
7303             \g{word_quote}
7304             )
7305             |
7306             (?:
7307             (?['"])
7308             (?:
7309             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7310             )
7311             \g{word_quote}
7312             )
7313             |
7314             (?:
7315             \(
7316             [[:blank:]\h]*
7317             (? (?&word_lax) )
7318             [[:blank:]\h]*
7319             \)
7320             )
7321             |
7322             (?:
7323             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7324             (?
7325             (?: (?: (?-2)\. )+ (?-2) )
7326             )
7327             )
7328             )
7329             |
7330             (?:
7331             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7332             )
7333             |
7334             (?:
7335             (?(?&variable))
7336             )
7337             |
7338             (?:
7339             (?(?=\bsub\b\()
7340             (? (?&sub) )
7341             )
7342             )
7343             |
7344             (?:
7345             (?(?=\bjoin\b\()
7346             (? (?&join) )
7347             )
7348             )
7349             |
7350             (?:
7351             (? (?&function_recur) )
7352             )
7353             |
7354             (?:
7355             (? $Regexp::Common::Apache2::TRUNK->{regex} )
7356             )
7357             )
7358             (?
7359             (?:
7360             (?
7361             (?$IPv4)
7362             |
7363             (?$IPv6)
7364             )
7365             )
7366             |
7367             (?:
7368             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7369             )
7370             |
7371             (?:
7372             (?['"])
7373             (?:
7374             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7375             )
7376             \g{word_quote}
7377             )
7378             |
7379             (?:
7380             (?['"])
7381             (?:
7382             (? (?&string) )
7383             )
7384             \g{word_quote}
7385             )
7386             |
7387             (?:
7388             \(
7389             [[:blank:]\h]*
7390             (? (?-2) )
7391             [[:blank:]\h]*
7392             \)
7393             )
7394             |
7395             (?:
7396             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7397             (?
7398             (?: (?: (?-2)\. )+ (?-2) )
7399             )
7400             )
7401             )
7402             |
7403             (?:
7404             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7405             )
7406             |
7407             (?:
7408             (?(?&variable))
7409             )
7410             |
7411             (?:
7412             (?(?=\bsub\b\()
7413             (? (?&sub) )
7414             )
7415             )
7416             |
7417             (?:
7418             (?(?=\bjoin\b\()
7419             (? (?&join) )
7420             )
7421             )
7422             |
7423             (?:
7424             (? (?&function_recur) )
7425             )
7426             |
7427             (?:
7428             (? $Regexp::Common::Apache2::TRUNK->{regex} )
7429             )
7430             )
7431             (?
7432             (?:
7433             [[:blank:]\h]*\K
7434             (? (?&word) )
7435             [[:blank:]\h]*\,[[:blank:]\h]*
7436             (? (?&list) )
7437             )
7438             |
7439             (?:
7440             [[:blank:]\h]*\K
7441             (?
7442             (?:
7443             (?&word)
7444             [[:blank:]\h]*\,[[:blank:]\h]*
7445             )*
7446             (?&word)
7447             )
7448             (?:
7449             [[:blank:]\h]*\,[[:blank:]\h]*
7450             (? (?&word) )
7451             )?
7452             )
7453             |
7454             (?:
7455             [[:blank:]\h]*\K
7456             (? (?&word) )
7457             )
7458             )
7459             )
7460             /x;
7461              
7462             ## word "-eq" word | word "eq" word
7463             ## | word "-ne" word | word "ne" word
7464             ## | word "-lt" word | word "lt" word
7465             ## | word "-le" word | word "le" word
7466             ## | word "-gt" word | word "gt" word
7467             ## | word "-ge" word | word "ge" word
7468 28         1290154 $TRUNK->{integercomp} = qr/
7469             (?
7470             (?(?&word))
7471             [[:blank:]\h]+
7472             \-?(?eq|ne|lt|le|gt|ge)
7473             [[:blank:]\h]+
7474             (?(?&word))
7475             )
7476             (?(DEFINE)
7477             (?
7478             (?:
7479             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
7480             (?
7481             (?&stringcomp)
7482             )
7483             )
7484             )
7485             |
7486             (?:
7487             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
7488             (?
7489             (?&integercomp_recur)
7490             )
7491             )
7492             )
7493             |
7494             (?:
7495             (?:(?<=\W)|(?<=^)|(?<=\A))
7496             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
7497             [[:blank:]\h]+
7498             (? (?&word_lax) )
7499             )
7500             |
7501             (?:
7502             (? (?&word_lax) )
7503             [[:blank:]\h]+
7504             (?:
7505             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
7506             |
7507             (?:
7508             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
7509             )
7510             )
7511             [[:blank:]\h]+
7512             (? (?&word_lax) )
7513             )
7514             |
7515             (?:
7516             (? (?&word) )
7517             [[:blank:]\h]+
7518             \-?in
7519             [[:blank:]\h]+
7520             (? (?&listfunc) )
7521             )
7522             |
7523             (?:
7524             (? (?&word) )
7525             [[:blank:]\h]+
7526             (? [\=|\!]\~ )
7527             [[:blank:]\h]+
7528             $Regexp::Common::Apache2::REGEXP->{regex}
7529             )
7530             |
7531             (?:
7532             (? (?&word) )
7533             [[:blank:]\h]+
7534             \-?in
7535             [[:blank:]\h]+
7536             \{
7537             [[:blank:]\h]*
7538             (? (?&list) )
7539             [[:blank:]\h]*
7540             \}
7541             )
7542             )
7543             (?
7544             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
7545             |
7546             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
7547             |
7548             (?:
7549             \![[:blank:]\h]*
7550             (? (?-2) )
7551             )
7552             |
7553             (?:
7554             \(
7555             [[:blank:]\h]*
7556             (? (?&cond) )
7557             [[:blank:]\h]*
7558             \)
7559             )
7560             |
7561             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
7562             (?(?&comp))
7563             )
7564             |
7565             (?:
7566             (?(?=(?:.+?)\&\&(?:.+?))
7567             (? (?: (?-2) )+ )
7568             [[:blank:]\h]*
7569             \&\&
7570             [[:blank:]\h]*
7571             (? (?: (?-2) )+ )
7572             )
7573             )
7574             |
7575             (?:
7576             (?(?=(?:.+?)\|\|(?:.+?))
7577             (? (?: (?-2) )+ )
7578             [[:blank:]\h]*
7579             \|\|
7580             [[:blank:]\h]*
7581             (? (?: (?-2) )+ )
7582             )
7583             )
7584             )
7585             (?
7586             (?:
7587             (?!\bv\()(?[a-zA-Z]\w*)
7588             \(
7589             [[:blank:]\h]*
7590             (?
7591             (?> (?&func_words) )?
7592             )
7593             [[:blank:]\h]*
7594             \)
7595             )
7596             |
7597             (?:
7598             ( # paren group 1 (full function)
7599             (?!\bv\() # Take care to avoid catching modern-style variable v()
7600             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
7601             (? # paren group 2 (parens)
7602             \(
7603             (? # paren group 3 (contents of parens)
7604             (?:
7605             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7606             |
7607             (?&paren_group) # Recurse to named capture group
7608             )*
7609             )
7610             \)
7611             )
7612             )
7613             )
7614             )
7615             (?
7616             (?:
7617             (? (?&word) )
7618             )
7619             |
7620             (?:
7621             (?:
7622             (? (?&word) )
7623             [[:blank:]\h]*\,[[:blank:]\h]*
7624             (? (?&list) )
7625             )
7626             |
7627             (?:
7628             (?
7629             (?:
7630             (?&word)
7631             [[:blank:]\h]*\,[[:blank:]\h]*
7632             )*
7633             (?&word)
7634             )
7635             (?:
7636             [[:blank:]\h]*\,[[:blank:]\h]*
7637             (? (?&word) )
7638             )?
7639             )
7640             )
7641             )
7642             (?
7643             (?:
7644             (?(?&word))
7645             [[:blank:]\h]+
7646             \-?(? (?:eq|ne|lt|le|gt|ge) )
7647             [[:blank:]\h]+
7648             (?(?&word))
7649             )
7650             )
7651             (?
7652             \bjoin\(
7653             [[:blank:]\h]*
7654             (?:
7655             (?:
7656             (? (?&list) )
7657             [[:blank:]]*\,[[:blank:]]*
7658             (? (?&word) )
7659             )
7660             |
7661             (? (?&list) )
7662             )
7663             [[:blank:]\h]*
7664             \)
7665             )
7666             (?
7667             (?:
7668             \{
7669             [[:blank:]\h]*
7670             (?(?&words))
7671             [[:blank:]\h]*
7672             \}
7673             )
7674             |
7675             (?:
7676             \(
7677             [[:blank:]\h]*
7678             (? (?&list) )
7679             [[:blank:]\h]*
7680             \)
7681             )
7682             |
7683             (?:
7684             (?(?&listfunc))
7685             )
7686             |
7687             (?:
7688             (?(?=\bsplit\()
7689             (?(?&split))
7690             )
7691             )
7692             )
7693             (?
7694             (?:
7695             (?!\bv\()(?[a-zA-Z]\w*)
7696             \(
7697             [[:blank:]\h]*
7698             (?
7699             (?> (?&func_words) )?
7700             )
7701             [[:blank:]\h]*
7702             \)
7703             )
7704             |
7705             (?:
7706             ( # paren group 1 (full function)
7707             (?!\bv\() # Take care to avoid catching modern-style variable v()
7708             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
7709             (? # paren group 2 (parens)
7710             \(
7711             (? # paren group 3 (contents of parens)
7712             (?:
7713             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7714             |
7715             (?&paren_group) # Recurse to named capture group
7716             )*
7717             )
7718             \)
7719             )
7720             )
7721             )
7722             )
7723             (?
7724             (?:
7725             $Regexp::Common::Apache2::REGEXP->{regex}
7726             |
7727             (?:
7728             (? (?®sub) )
7729             )
7730             )
7731             )
7732             (?
7733             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
7734             |
7735             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
7736             )
7737             (?
7738             s(?${REGSEP})
7739             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7740             \g{regsep}
7741             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7742             \g{regsep}
7743             (?${REGFLAGS})?
7744             )
7745             (?
7746             split\(
7747             [[:blank:]\h]*
7748             (?(?®any))
7749             [[:blank:]\h]*\,[[:blank:]\h]*
7750             (?:
7751             (?:
7752             (? (?&word) )
7753             )
7754             |
7755             (?:
7756             (? (?&list) )
7757             )
7758             )
7759             [[:blank:]\h]*
7760             \)
7761             )
7762             (?
7763             (?:
7764             (?: (?&substring) )
7765             )
7766             |
7767             (?:
7768             (?: (?&substring)[[:blank:]\h]+(?&string) )
7769             )
7770             )
7771             (?
7772             (?:
7773             (?(?&word))
7774             [[:blank:]\h]+
7775             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
7776             [[:blank:]\h]+
7777             (?(?&word))
7778             )
7779             )
7780             (?
7781             \bsub\(
7782             [[:blank:]\h]*
7783             (?(?=(?:[s]${REGSEP}))
7784             (? (?®sub) )
7785             )
7786             [[:blank:]\h]*
7787             \,
7788             [[:blank:]\h]*
7789             (?
7790             (? (?>(?&word)) )
7791             )
7792             [[:blank:]\h]*
7793             \)
7794             )
7795             (?
7796             (?:
7797             (?$Regexp::Common::Apache2::REGEXP->{cstring})
7798             )
7799             |
7800             (?:
7801             (? (?&variable) )
7802             )
7803             )
7804             (?
7805             (?:
7806             \%\{
7807             (?:
7808             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
7809             )
7810             \}
7811             )
7812             |
7813             (?:
7814             \%\{
7815             (?:
7816             (?${VARNAME})
7817             )
7818             \}
7819             )
7820             |
7821             (?:
7822             \bv\(
7823             [[:blank:]\h]*
7824             (?["'])
7825             (?:
7826             (?${VARNAME})
7827             )
7828             [[:blank:]\h]*
7829             \g{var_quote}
7830             \)
7831             )
7832             |
7833             (?:
7834             (?:^|\A|(?
7835             (?
7836             \$(?\{)?
7837             (?${DIGIT})
7838             (?()\})
7839             )
7840             )
7841             |
7842             (?:
7843             \%\{\:
7844             (?:
7845             (? (?&word) )
7846             )
7847             \:\}
7848             )
7849             |
7850             (?:
7851             \%\{\:
7852             (?:
7853             (? (?&cond) )
7854             )
7855             \:\}
7856             )
7857             )
7858             (?
7859             (?:
7860             (?
7861             (?$IPv4)
7862             |
7863             (?$IPv6)
7864             )
7865             )
7866             |
7867             (?:
7868             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7869             )
7870             |
7871             (?:
7872             (?['"])
7873             (?:
7874             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7875             )
7876             \g{word_quote}
7877             )
7878             |
7879             (?:
7880             (?['"])
7881             (?:
7882             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7883             )
7884             \g{word_quote}
7885             )
7886             |
7887             (?:
7888             \(
7889             [[:blank:]\h]*
7890             (? (?&word_lax) )
7891             [[:blank:]\h]*
7892             \)
7893             )
7894             |
7895             (?:
7896             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7897             (?
7898             (?: (?: (?-2)\. )+ (?-2) )
7899             )
7900             )
7901             )
7902             |
7903             (?:
7904             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7905             )
7906             |
7907             (?:
7908             (?(?&variable))
7909             )
7910             |
7911             (?:
7912             (?(?=\bsub\b\()
7913             (? (?&sub) )
7914             )
7915             )
7916             |
7917             (?:
7918             (?(?=\bjoin\b\()
7919             (? (?&join) )
7920             )
7921             )
7922             |
7923             (?:
7924             (? (?&function) )
7925             )
7926             |
7927             (?:
7928             (? $Regexp::Common::Apache2::TRUNK->{regex} )
7929             )
7930             )
7931             (?
7932             (?:
7933             (?
7934             (?$IPv4)
7935             |
7936             (?$IPv6)
7937             )
7938             )
7939             |
7940             (?:
7941             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7942             )
7943             |
7944             (?:
7945             (?['"])
7946             (?:
7947             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7948             )
7949             \g{word_quote}
7950             )
7951             |
7952             (?:
7953             (?['"])
7954             (?:
7955             (? (?&string) )
7956             )
7957             \g{word_quote}
7958             )
7959             |
7960             (?:
7961             \(
7962             [[:blank:]\h]*
7963             (? (?-2) )
7964             [[:blank:]\h]*
7965             \)
7966             )
7967             |
7968             (?:
7969             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7970             (?
7971             (?: (?: (?-2)\. )+ (?-2) )
7972             )
7973             )
7974             )
7975             |
7976             (?:
7977             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7978             )
7979             |
7980             (?:
7981             (?(?&variable))
7982             )
7983             |
7984             (?:
7985             (?(?=\bsub\b\()
7986             (? (?&sub) )
7987             )
7988             )
7989             |
7990             (?:
7991             (?(?=\bjoin\b\()
7992             (? (?&join) )
7993             )
7994             )
7995             |
7996             (?:
7997             (? (?&function) )
7998             )
7999             |
8000             (?:
8001             (? $Regexp::Common::Apache2::TRUNK->{regex} )
8002             )
8003             )
8004             (?
8005             (?:
8006             [[:blank:]\h]*\K
8007             (? (?&word) )
8008             [[:blank:]\h]*\,[[:blank:]\h]*
8009             (? (?&list) )
8010             )
8011             |
8012             (?:
8013             [[:blank:]\h]*\K
8014             (?
8015             (?:
8016             (?&word)
8017             [[:blank:]\h]*\,[[:blank:]\h]*
8018             )*
8019             (?&word)
8020             )
8021             (?:
8022             [[:blank:]\h]*\,[[:blank:]\h]*
8023             (? (?&word) )
8024             )?
8025             )
8026             |
8027             (?:
8028             [[:blank:]\h]*\K
8029             (? (?&word) )
8030             )
8031             )
8032             )
8033             /x;
8034            
8035             ## "join" ["("] list [")"]
8036             ## | "join" ["("] list "," word [")"]
8037 28         1271552 $TRUNK->{join} = qr/
8038             (?
8039             join\(
8040             [[:blank:]\h]*
8041             (?:
8042             (?:
8043             (?(?&list))[[:blank:]]*\,[[:blank:]]*(?(?&word))
8044             )
8045             |
8046             (?:
8047             (?(?&list))
8048             )
8049             )
8050             [[:blank:]\h]*
8051             \)
8052             )
8053             (?(DEFINE)
8054             (?
8055             (?:
8056             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
8057             (?
8058             (?&stringcomp)
8059             )
8060             )
8061             )
8062             |
8063             (?:
8064             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
8065             (?
8066             (?&integercomp)
8067             )
8068             )
8069             )
8070             |
8071             (?:
8072             (?:(?<=\W)|(?<=^)|(?<=\A))
8073             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
8074             [[:blank:]\h]+
8075             (? (?&word_lax) )
8076             )
8077             |
8078             (?:
8079             (? (?&word_lax) )
8080             [[:blank:]\h]+
8081             (?:
8082             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
8083             |
8084             (?:
8085             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
8086             )
8087             )
8088             [[:blank:]\h]+
8089             (? (?&word_lax) )
8090             )
8091             |
8092             (?:
8093             (? (?&word) )
8094             [[:blank:]\h]+
8095             \-?in
8096             [[:blank:]\h]+
8097             (? (?&listfunc) )
8098             )
8099             |
8100             (?:
8101             (? (?&word) )
8102             [[:blank:]\h]+
8103             (? [\=|\!]\~ )
8104             [[:blank:]\h]+
8105             $Regexp::Common::Apache2::REGEXP->{regex}
8106             )
8107             |
8108             (?:
8109             (? (?&word) )
8110             [[:blank:]\h]+
8111             \-?in
8112             [[:blank:]\h]+
8113             \{
8114             [[:blank:]\h]*
8115             (? (?&list) )
8116             [[:blank:]\h]*
8117             \}
8118             )
8119             )
8120             (?
8121             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
8122             |
8123             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
8124             |
8125             (?:
8126             \![[:blank:]\h]*
8127             (? (?-2) )
8128             )
8129             |
8130             (?:
8131             \(
8132             [[:blank:]\h]*
8133             (? (?&cond) )
8134             [[:blank:]\h]*
8135             \)
8136             )
8137             |
8138             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
8139             (?(?&comp))
8140             )
8141             |
8142             (?:
8143             (?(?=(?:.+?)\&\&(?:.+?))
8144             (? (?: (?-2) )+ )
8145             [[:blank:]\h]*
8146             \&\&
8147             [[:blank:]\h]*
8148             (? (?: (?-2) )+ )
8149             )
8150             )
8151             |
8152             (?:
8153             (?(?=(?:.+?)\|\|(?:.+?))
8154             (? (?: (?-2) )+ )
8155             [[:blank:]\h]*
8156             \|\|
8157             [[:blank:]\h]*
8158             (? (?: (?-2) )+ )
8159             )
8160             )
8161             )
8162             (?
8163             (?:
8164             (?!\bv\()(?[a-zA-Z]\w*)
8165             \(
8166             [[:blank:]\h]*
8167             (?
8168             (?> (?&func_words) )?
8169             )
8170             [[:blank:]\h]*
8171             \)
8172             )
8173             |
8174             (?:
8175             ( # paren group 1 (full function)
8176             (?!\bv\() # Take care to avoid catching modern-style variable v()
8177             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
8178             (? # paren group 2 (parens)
8179             \(
8180             (? # paren group 3 (contents of parens)
8181             (?:
8182             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8183             |
8184             (?&paren_group) # Recurse to named capture group
8185             )*
8186             )
8187             \)
8188             )
8189             )
8190             )
8191             )
8192             (?
8193             (?:
8194             (? (?&word) )
8195             )
8196             |
8197             (?:
8198             (?:
8199             (? (?&word) )
8200             [[:blank:]\h]*\,[[:blank:]\h]*
8201             (? (?&list) )
8202             )
8203             |
8204             (?:
8205             (?
8206             (?:
8207             (?&word)
8208             [[:blank:]\h]*\,[[:blank:]\h]*
8209             )*
8210             (?&word)
8211             )
8212             (?:
8213             [[:blank:]\h]*\,[[:blank:]\h]*
8214             (? (?&word) )
8215             )?
8216             )
8217             )
8218             )
8219             (?
8220             (?:
8221             (?(?&word))
8222             [[:blank:]\h]+
8223             \-?(? (?:eq|ne|lt|le|gt|ge) )
8224             [[:blank:]\h]+
8225             (?(?&word))
8226             )
8227             )
8228             (?
8229             \bjoin\(
8230             [[:blank:]\h]*
8231             (?:
8232             (?:
8233             (? (?&list) )
8234             [[:blank:]]*\,[[:blank:]]*
8235             (? (?&word) )
8236             )
8237             |
8238             (? (?&list) )
8239             )
8240             [[:blank:]\h]*
8241             \)
8242             )
8243             (?
8244             (?:
8245             \{
8246             [[:blank:]\h]*
8247             (?(?&words))
8248             [[:blank:]\h]*
8249             \}
8250             )
8251             |
8252             (?:
8253             \(
8254             [[:blank:]\h]*
8255             (? (?&list) )
8256             [[:blank:]\h]*
8257             \)
8258             )
8259             |
8260             (?:
8261             (?(?&listfunc))
8262             )
8263             |
8264             (?:
8265             (?(?=\bsplit\()
8266             (?(?&split))
8267             )
8268             )
8269             )
8270             (?
8271             (?:
8272             (?!\bv\()(?[a-zA-Z]\w*)
8273             \(
8274             [[:blank:]\h]*
8275             (?
8276             (?> (?&func_words) )?
8277             )
8278             [[:blank:]\h]*
8279             \)
8280             )
8281             |
8282             (?:
8283             ( # paren group 1 (full function)
8284             (?!\bv\() # Take care to avoid catching modern-style variable v()
8285             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
8286             (? # paren group 2 (parens)
8287             \(
8288             (? # paren group 3 (contents of parens)
8289             (?:
8290             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8291             |
8292             (?&paren_group) # Recurse to named capture group
8293             )*
8294             )
8295             \)
8296             )
8297             )
8298             )
8299             )
8300             (?
8301             (?:
8302             $Regexp::Common::Apache2::REGEXP->{regex}
8303             |
8304             (?:
8305             (? (?®sub) )
8306             )
8307             )
8308             )
8309             (?
8310             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
8311             |
8312             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
8313             )
8314             (?
8315             s(?${REGSEP})
8316             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8317             \g{regsep}
8318             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8319             \g{regsep}
8320             (?${REGFLAGS})?
8321             )
8322             (?
8323             split\(
8324             [[:blank:]\h]*
8325             (?(?®any))
8326             [[:blank:]\h]*\,[[:blank:]\h]*
8327             (?:
8328             (?:
8329             (? (?&word) )
8330             )
8331             |
8332             (?:
8333             (? (?&list) )
8334             )
8335             )
8336             [[:blank:]\h]*
8337             \)
8338             )
8339             (?
8340             (?:
8341             (?: (?&substring) )
8342             )
8343             |
8344             (?:
8345             (?: (?&substring)[[:blank:]\h]+(?&string) )
8346             )
8347             )
8348             (?
8349             (?:
8350             (?(?&word))
8351             [[:blank:]\h]+
8352             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
8353             [[:blank:]\h]+
8354             (?(?&word))
8355             )
8356             )
8357             (?
8358             \bsub\(
8359             [[:blank:]\h]*
8360             (?(?=(?:[s]${REGSEP}))
8361             (? (?®sub) )
8362             )
8363             [[:blank:]\h]*
8364             \,
8365             [[:blank:]\h]*
8366             (?
8367             (? (?>(?&word)) )
8368             )
8369             [[:blank:]\h]*
8370             \)
8371             )
8372             (?
8373             (?:
8374             (?$Regexp::Common::Apache2::REGEXP->{cstring})
8375             )
8376             |
8377             (?:
8378             (? (?&variable) )
8379             )
8380             )
8381             (?
8382             (?:
8383             \%\{
8384             (?:
8385             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
8386             )
8387             \}
8388             )
8389             |
8390             (?:
8391             \%\{
8392             (?:
8393             (?${VARNAME})
8394             )
8395             \}
8396             )
8397             |
8398             (?:
8399             \bv\(
8400             [[:blank:]\h]*
8401             (?["'])
8402             (?:
8403             (?${VARNAME})
8404             )
8405             [[:blank:]\h]*
8406             \g{var_quote}
8407             \)
8408             )
8409             |
8410             (?:
8411             (?:^|\A|(?
8412             (?
8413             \$(?\{)?
8414             (?${DIGIT})
8415             (?()\})
8416             )
8417             )
8418             |
8419             (?:
8420             \%\{\:
8421             (?:
8422             (? (?&word) )
8423             )
8424             \:\}
8425             )
8426             |
8427             (?:
8428             \%\{\:
8429             (?:
8430             (? (?&cond) )
8431             )
8432             \:\}
8433             )
8434             )
8435             (?
8436             (?:
8437             (?
8438             (?$IPv4)
8439             |
8440             (?$IPv6)
8441             )
8442             )
8443             |
8444             (?:
8445             (? $Regexp::Common::Apache2::REGEXP->{digits} )
8446             )
8447             |
8448             (?:
8449             (?['"])
8450             (?:
8451             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
8452             )
8453             \g{word_quote}
8454             )
8455             |
8456             (?:
8457             (?['"])
8458             (?:
8459             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
8460             )
8461             \g{word_quote}
8462             )
8463             |
8464             (?:
8465             \(
8466             [[:blank:]\h]*
8467             (? (?&word_lax) )
8468             [[:blank:]\h]*
8469             \)
8470             )
8471             |
8472             (?:
8473             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
8474             (?
8475             (?: (?: (?-2)\. )+ (?-2) )
8476             )
8477             )
8478             )
8479             |
8480             (?:
8481             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
8482             )
8483             |
8484             (?:
8485             (?(?&variable))
8486             )
8487             |
8488             (?:
8489             (?(?=\bsub\b\()
8490             (? (?&sub) )
8491             )
8492             )
8493             |
8494             (?:
8495             (?(?=\bjoin\b\()
8496             (? (?&join_recur) )
8497             )
8498             )
8499             |
8500             (?:
8501             (? (?&function) )
8502             )
8503             |
8504             (?:
8505             (? $Regexp::Common::Apache2::TRUNK->{regex} )
8506             )
8507             )
8508             (?
8509             (?:
8510             (?
8511             (?$IPv4)
8512             |
8513             (?$IPv6)
8514             )
8515             )
8516             |
8517             (?:
8518             (? $Regexp::Common::Apache2::REGEXP->{digits} )
8519             )
8520             |
8521             (?:
8522             (?['"])
8523             (?:
8524             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
8525             )
8526             \g{word_quote}
8527             )
8528             |
8529             (?:
8530             (?['"])
8531             (?:
8532             (? (?&string) )
8533             )
8534             \g{word_quote}
8535             )
8536             |
8537             (?:
8538             \(
8539             [[:blank:]\h]*
8540             (? (?-2) )
8541             [[:blank:]\h]*
8542             \)
8543             )
8544             |
8545             (?:
8546             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
8547             (?
8548             (?: (?: (?-2)\. )+ (?-2) )
8549             )
8550             )
8551             )
8552             |
8553             (?:
8554             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
8555             )
8556             |
8557             (?:
8558             (?(?&variable))
8559             )
8560             |
8561             (?:
8562             (?(?=\bsub\b\()
8563             (? (?&sub) )
8564             )
8565             )
8566             |
8567             (?:
8568             (?(?=\bjoin\b\()
8569             (? (?&join_recur) )
8570             )
8571             )
8572             |
8573             (?:
8574             (? (?&function) )
8575             )
8576             |
8577             (?:
8578             (? $Regexp::Common::Apache2::TRUNK->{regex} )
8579             )
8580             )
8581             (?
8582             (?:
8583             [[:blank:]\h]*\K
8584             (? (?&word) )
8585             [[:blank:]\h]*\,[[:blank:]\h]*
8586             (? (?&list) )
8587             )
8588             |
8589             (?:
8590             [[:blank:]\h]*\K
8591             (?
8592             (?:
8593             (?&word)
8594             [[:blank:]\h]*\,[[:blank:]\h]*
8595             )*
8596             (?&word)
8597             )
8598             (?:
8599             [[:blank:]\h]*\,[[:blank:]\h]*
8600             (? (?&word) )
8601             )?
8602             )
8603             |
8604             (?:
8605             [[:blank:]\h]*\K
8606             (? (?&word) )
8607             )
8608             )
8609             )
8610             /x;
8611              
8612             ## split
8613             ## | listfunc
8614             ## | "{" words "}"
8615             ## | "(" list ")"
8616 28         1255078 $TRUNK->{list} = qr/
8617             (?
8618             (?:
8619             (?(?&listfunc))
8620             )
8621             |
8622             (?:
8623             \{
8624             [[:blank:]\h]*
8625             (?(?&words))
8626             [[:blank:]\h]*
8627             \}
8628             )
8629             |
8630             (?:
8631             (?(?&split))
8632             )
8633             |
8634             (?:
8635             \(
8636             [[:blank:]\h]*
8637             (? (?&list_recur) )
8638             [[:blank:]\h]*
8639             \)
8640             )
8641             )
8642             (?(DEFINE)
8643             (?
8644             (?:
8645             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
8646             (?
8647             (?&stringcomp)
8648             )
8649             )
8650             )
8651             |
8652             (?:
8653             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
8654             (?
8655             (?&integercomp)
8656             )
8657             )
8658             )
8659             |
8660             (?:
8661             (?:(?<=\W)|(?<=^)|(?<=\A))
8662             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
8663             [[:blank:]\h]+
8664             (? (?&word_lax) )
8665             )
8666             |
8667             (?:
8668             (? (?&word_lax) )
8669             [[:blank:]\h]+
8670             (?:
8671             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
8672             |
8673             (?:
8674             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
8675             )
8676             )
8677             [[:blank:]\h]+
8678             (? (?&word_lax) )
8679             )
8680             |
8681             (?:
8682             (? (?&word) )
8683             [[:blank:]\h]+
8684             \-?in
8685             [[:blank:]\h]+
8686             (? (?&listfunc) )
8687             )
8688             |
8689             (?:
8690             (? (?&word) )
8691             [[:blank:]\h]+
8692             (? [\=|\!]\~ )
8693             [[:blank:]\h]+
8694             $Regexp::Common::Apache2::REGEXP->{regex}
8695             )
8696             |
8697             (?:
8698             (? (?&word) )
8699             [[:blank:]\h]+
8700             \-?in
8701             [[:blank:]\h]+
8702             \{
8703             [[:blank:]\h]*
8704             (? (?&list) )
8705             [[:blank:]\h]*
8706             \}
8707             )
8708             )
8709             (?
8710             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
8711             |
8712             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
8713             |
8714             (?:
8715             \![[:blank:]\h]*
8716             (? (?-2) )
8717             )
8718             |
8719             (?:
8720             \(
8721             [[:blank:]\h]*
8722             (? (?&cond) )
8723             [[:blank:]\h]*
8724             \)
8725             )
8726             |
8727             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
8728             (?(?&comp))
8729             )
8730             |
8731             (?:
8732             (?(?=(?:.+?)\&\&(?:.+?))
8733             (? (?: (?-2) )+ )
8734             [[:blank:]\h]*
8735             \&\&
8736             [[:blank:]\h]*
8737             (? (?: (?-2) )+ )
8738             )
8739             )
8740             |
8741             (?:
8742             (?(?=(?:.+?)\|\|(?:.+?))
8743             (? (?: (?-2) )+ )
8744             [[:blank:]\h]*
8745             \|\|
8746             [[:blank:]\h]*
8747             (? (?: (?-2) )+ )
8748             )
8749             )
8750             )
8751             (?
8752             (?:
8753             (?!\bv\()(?[a-zA-Z]\w*)
8754             \(
8755             [[:blank:]\h]*
8756             (?
8757             (?> (?&func_words) )?
8758             )
8759             [[:blank:]\h]*
8760             \)
8761             )
8762             |
8763             (?:
8764             ( # paren group 1 (full function)
8765             (?!\bv\() # Take care to avoid catching modern-style variable v()
8766             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
8767             (? # paren group 2 (parens)
8768             \(
8769             (? # paren group 3 (contents of parens)
8770             (?:
8771             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8772             |
8773             (?&paren_group) # Recurse to named capture group
8774             )*
8775             )
8776             \)
8777             )
8778             )
8779             )
8780             )
8781             (?
8782             (?:
8783             (? (?&word) )
8784             )
8785             |
8786             (?:
8787             (?:
8788             (? (?&word) )
8789             [[:blank:]\h]*\,[[:blank:]\h]*
8790             (? (?&list) )
8791             )
8792             |
8793             (?:
8794             (?
8795             (?:
8796             (?&word)
8797             [[:blank:]\h]*\,[[:blank:]\h]*
8798             )*
8799             (?&word)
8800             )
8801             (?:
8802             [[:blank:]\h]*\,[[:blank:]\h]*
8803             (? (?&word) )
8804             )?
8805             )
8806             )
8807             )
8808             (?
8809             (?:
8810             (?(?&word))
8811             [[:blank:]\h]+
8812             \-?(? (?:eq|ne|lt|le|gt|ge) )
8813             [[:blank:]\h]+
8814             (?(?&word))
8815             )
8816             )
8817             (?
8818             \bjoin\(
8819             [[:blank:]\h]*
8820             (?:
8821             (?:
8822             (? (?&list_recur) )
8823             [[:blank:]]*\,[[:blank:]]*
8824             (? (?&word) )
8825             )
8826             |
8827             (? (?&list_recur) )
8828             )
8829             [[:blank:]\h]*
8830             \)
8831             )
8832             (?
8833             (?:
8834             \{
8835             [[:blank:]\h]*
8836             (?(?&words))
8837             [[:blank:]\h]*
8838             \}
8839             )
8840             |
8841             (?:
8842             \(
8843             [[:blank:]\h]*
8844             (? (?&list) )
8845             [[:blank:]\h]*
8846             \)
8847             )
8848             |
8849             (?:
8850             (?(?&listfunc))
8851             )
8852             |
8853             (?:
8854             (?(?=\bsplit\()
8855             (?(?&split))
8856             )
8857             )
8858             )
8859             (?
8860             (?:
8861             (?!\bv\()(?[a-zA-Z]\w*)
8862             \(
8863             [[:blank:]\h]*
8864             (?
8865             (?> (?&func_words) )?
8866             )
8867             [[:blank:]\h]*
8868             \)
8869             )
8870             |
8871             (?:
8872             ( # paren group 1 (full function)
8873             (?!\bv\() # Take care to avoid catching modern-style variable v()
8874             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
8875             (? # paren group 2 (parens)
8876             \(
8877             (? # paren group 3 (contents of parens)
8878             (?:
8879             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8880             |
8881             (?&paren_group) # Recurse to named capture group
8882             )*
8883             )
8884             \)
8885             )
8886             )
8887             )
8888             )
8889             (?
8890             (?:
8891             $Regexp::Common::Apache2::REGEXP->{regex}
8892             |
8893             (?:
8894             (? (?®sub) )
8895             )
8896             )
8897             )
8898             (?
8899             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
8900             |
8901             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
8902             )
8903             (?
8904             s(?${REGSEP})
8905             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8906             \g{regsep}
8907             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8908             \g{regsep}
8909             (?${REGFLAGS})?
8910             )
8911             (?
8912             split\(
8913             [[:blank:]\h]*
8914             (?(?®any))
8915             [[:blank:]\h]*\,[[:blank:]\h]*
8916             (?:
8917             (?:
8918             (? (?&word) )
8919             )
8920             |
8921             (?:
8922             (? (?&list_recur) )
8923             )
8924             )
8925             [[:blank:]\h]*
8926             \)
8927             )
8928             (?
8929             (?:
8930             (?: (?&substring) )
8931             )
8932             |
8933             (?:
8934             (?: (?&substring)[[:blank:]\h]+(?&string) )
8935             )
8936             )
8937             (?
8938             (?:
8939             (?(?&word))
8940             [[:blank:]\h]+
8941             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
8942             [[:blank:]\h]+
8943             (?(?&word))
8944             )
8945             )
8946             (?
8947             \bsub\(
8948             [[:blank:]\h]*
8949             (?(?=(?:[s]${REGSEP}))
8950             (? (?®sub) )
8951             )
8952             [[:blank:]\h]*
8953             \,
8954             [[:blank:]\h]*
8955             (?
8956             (? (?>(?&word)) )
8957             )
8958             [[:blank:]\h]*
8959             \)
8960             )
8961             (?
8962             (?:
8963             (?$Regexp::Common::Apache2::REGEXP->{cstring})
8964             )
8965             |
8966             (?:
8967             (? (?&variable) )
8968             )
8969             )
8970             (?
8971             (?:
8972             \%\{
8973             (?:
8974             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
8975             )
8976             \}
8977             )
8978             |
8979             (?:
8980             \%\{
8981             (?:
8982             (?${VARNAME})
8983             )
8984             \}
8985             )
8986             |
8987             (?:
8988             \bv\(
8989             [[:blank:]\h]*
8990             (?["'])
8991             (?:
8992             (?${VARNAME})
8993             )
8994             [[:blank:]\h]*
8995             \g{var_quote}
8996             \)
8997             )
8998             |
8999             (?:
9000             (?:^|\A|(?
9001             (?
9002             \$(?\{)?
9003             (?${DIGIT})
9004             (?()\})
9005             )
9006             )
9007             |
9008             (?:
9009             \%\{\:
9010             (?:
9011             (? (?&word) )
9012             )
9013             \:\}
9014             )
9015             |
9016             (?:
9017             \%\{\:
9018             (?:
9019             (? (?&cond) )
9020             )
9021             \:\}
9022             )
9023             )
9024             (?
9025             (?:
9026             (?
9027             (?$IPv4)
9028             |
9029             (?$IPv6)
9030             )
9031             )
9032             |
9033             (?:
9034             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9035             )
9036             |
9037             (?:
9038             (?['"])
9039             (?:
9040             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9041             )
9042             \g{word_quote}
9043             )
9044             |
9045             (?:
9046             (?['"])
9047             (?:
9048             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9049             )
9050             \g{word_quote}
9051             )
9052             |
9053             (?:
9054             \(
9055             [[:blank:]\h]*
9056             (? (?&word_lax) )
9057             [[:blank:]\h]*
9058             \)
9059             )
9060             |
9061             (?:
9062             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9063             (?
9064             (?: (?: (?-2)\. )+ (?-2) )
9065             )
9066             )
9067             )
9068             |
9069             (?:
9070             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9071             )
9072             |
9073             (?:
9074             (?(?&variable))
9075             )
9076             |
9077             (?:
9078             (?(?=\bsub\b\()
9079             (? (?&sub) )
9080             )
9081             )
9082             |
9083             (?:
9084             (?(?=\bjoin\b\()
9085             (? (?&join) )
9086             )
9087             )
9088             |
9089             (?:
9090             (? (?&function) )
9091             )
9092             |
9093             (?:
9094             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9095             )
9096             )
9097             (?
9098             (?:
9099             (?
9100             (?$IPv4)
9101             |
9102             (?$IPv6)
9103             )
9104             )
9105             |
9106             (?:
9107             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9108             )
9109             |
9110             (?:
9111             (?['"])
9112             (?:
9113             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9114             )
9115             \g{word_quote}
9116             )
9117             |
9118             (?:
9119             (?['"])
9120             (?:
9121             (? (?&string) )
9122             )
9123             \g{word_quote}
9124             )
9125             |
9126             (?:
9127             \(
9128             [[:blank:]\h]*
9129             (? (?-2) )
9130             [[:blank:]\h]*
9131             \)
9132             )
9133             |
9134             (?:
9135             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9136             (?
9137             (?: (?: (?-2)\. )+ (?-2) )
9138             )
9139             )
9140             )
9141             |
9142             (?:
9143             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9144             )
9145             |
9146             (?:
9147             (?(?&variable))
9148             )
9149             |
9150             (?:
9151             (?(?=\bsub\b\()
9152             (? (?&sub) )
9153             )
9154             )
9155             |
9156             (?:
9157             (?(?=\bjoin\b\()
9158             (? (?&join) )
9159             )
9160             )
9161             |
9162             (?:
9163             (? (?&function) )
9164             )
9165             |
9166             (?:
9167             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9168             )
9169             )
9170             (?
9171             (?:
9172             [[:blank:]\h]*\K
9173             (? (?&word) )
9174             [[:blank:]\h]*\,[[:blank:]\h]*
9175             (? (?&list_recur) )
9176             )
9177             |
9178             (?:
9179             [[:blank:]\h]*\K
9180             (?
9181             (?:
9182             (?&word)
9183             [[:blank:]\h]*\,[[:blank:]\h]*
9184             )*
9185             (?&word)
9186             )
9187             (?:
9188             [[:blank:]\h]*\,[[:blank:]\h]*
9189             (? (?&word) )
9190             )?
9191             )
9192             |
9193             (?:
9194             [[:blank:]\h]*\K
9195             (? (?&word) )
9196             )
9197             )
9198             )
9199             /x;
9200              
9201             ## listfuncname "(" words ")"
9202             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
9203             #(??{$Regexp::Common::Apache2::TRUNK->{words}})
9204 28         1240740 $TRUNK->{listfunc} = qr/
9205             (?
9206             (?:
9207             (?!\bv\()(?[a-zA-Z]\w*)
9208             \(
9209             [[:blank:]\h]*
9210             (?
9211             (?> (?&func_words) )?
9212             )
9213             [[:blank:]\h]*
9214             \)
9215             )
9216             |
9217             (?:
9218             ( # paren group 1 (full function)
9219             (?!\bv\() # Take care to avoid catching modern-style variable v()
9220             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
9221             (? # paren group 2 (parens)
9222             \(
9223             (? # paren group 3 (contents of parens)
9224             (?:
9225             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9226             |
9227             (?&paren_group) # Recurse to named capture group
9228             )*
9229             )
9230             \)
9231             )
9232             )
9233             )
9234             )
9235             (?(DEFINE)
9236             (?
9237             (?:
9238             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
9239             (?
9240             (?&stringcomp)
9241             )
9242             )
9243             )
9244             |
9245             (?:
9246             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
9247             (?
9248             (?&integercomp)
9249             )
9250             )
9251             )
9252             |
9253             (?:
9254             (?:(?<=\W)|(?<=^)|(?<=\A))
9255             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
9256             [[:blank:]\h]+
9257             (? (?&word_lax) )
9258             )
9259             |
9260             (?:
9261             (? (?&word_lax) )
9262             [[:blank:]\h]+
9263             (?:
9264             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
9265             |
9266             (?:
9267             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
9268             )
9269             )
9270             [[:blank:]\h]+
9271             (? (?&word_lax) )
9272             )
9273             |
9274             (?:
9275             (? (?&word) )
9276             [[:blank:]\h]+
9277             \-?in
9278             [[:blank:]\h]+
9279             (? (?&listfunc_recur) )
9280             )
9281             |
9282             (?:
9283             (? (?&word) )
9284             [[:blank:]\h]+
9285             (? [\=|\!]\~ )
9286             [[:blank:]\h]+
9287             $Regexp::Common::Apache2::REGEXP->{regex}
9288             )
9289             |
9290             (?:
9291             (? (?&word) )
9292             [[:blank:]\h]+
9293             \-?in
9294             [[:blank:]\h]+
9295             \{
9296             [[:blank:]\h]*
9297             (? (?&list) )
9298             [[:blank:]\h]*
9299             \}
9300             )
9301             )
9302             (?
9303             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
9304             |
9305             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
9306             |
9307             (?:
9308             \![[:blank:]\h]*
9309             (? (?-2) )
9310             )
9311             |
9312             (?:
9313             \(
9314             [[:blank:]\h]*
9315             (? (?&cond) )
9316             [[:blank:]\h]*
9317             \)
9318             )
9319             |
9320             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
9321             (?(?&comp))
9322             )
9323             |
9324             (?:
9325             (?(?=(?:.+?)\&\&(?:.+?))
9326             (? (?: (?-2) )+ )
9327             [[:blank:]\h]*
9328             \&\&
9329             [[:blank:]\h]*
9330             (? (?: (?-2) )+ )
9331             )
9332             )
9333             |
9334             (?:
9335             (?(?=(?:.+?)\|\|(?:.+?))
9336             (? (?: (?-2) )+ )
9337             [[:blank:]\h]*
9338             \|\|
9339             [[:blank:]\h]*
9340             (? (?: (?-2) )+ )
9341             )
9342             )
9343             )
9344             (?
9345             (?:
9346             (?!\bv\()(?[a-zA-Z]\w*)
9347             \(
9348             [[:blank:]\h]*
9349             (?
9350             (?> (?&func_words) )?
9351             )
9352             [[:blank:]\h]*
9353             \)
9354             )
9355             |
9356             (?:
9357             ( # paren group 1 (full function)
9358             (?!\bv\() # Take care to avoid catching modern-style variable v()
9359             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
9360             (? # paren group 2 (parens)
9361             \(
9362             (? # paren group 3 (contents of parens)
9363             (?:
9364             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9365             |
9366             (?&paren_group) # Recurse to named capture group
9367             )*
9368             )
9369             \)
9370             )
9371             )
9372             )
9373             )
9374             (?
9375             (?:
9376             (? (?&word) )
9377             )
9378             |
9379             (?:
9380             (?:
9381             (? (?&word) )
9382             [[:blank:]\h]*\,[[:blank:]\h]*
9383             (? (?&list) )
9384             )
9385             |
9386             (?:
9387             (?
9388             (?:
9389             (?&word)
9390             [[:blank:]\h]*\,[[:blank:]\h]*
9391             )*
9392             (?&word)
9393             )
9394             (?:
9395             [[:blank:]\h]*\,[[:blank:]\h]*
9396             (? (?&word) )
9397             )?
9398             )
9399             )
9400             )
9401             (?
9402             (?:
9403             (?(?&word))
9404             [[:blank:]\h]+
9405             \-?(? (?:eq|ne|lt|le|gt|ge) )
9406             [[:blank:]\h]+
9407             (?(?&word))
9408             )
9409             )
9410             (?
9411             \bjoin\(
9412             [[:blank:]\h]*
9413             (?:
9414             (?:
9415             (? (?&list) )
9416             [[:blank:]]*\,[[:blank:]]*
9417             (? (?&word) )
9418             )
9419             |
9420             (? (?&list) )
9421             )
9422             [[:blank:]\h]*
9423             \)
9424             )
9425             (?
9426             (?:
9427             \{
9428             [[:blank:]\h]*
9429             (?(?&words))
9430             [[:blank:]\h]*
9431             \}
9432             )
9433             |
9434             (?:
9435             \(
9436             [[:blank:]\h]*
9437             (? (?&list) )
9438             [[:blank:]\h]*
9439             \)
9440             )
9441             |
9442             (?:
9443             (?(?&listfunc_recur))
9444             )
9445             |
9446             (?:
9447             (?(?=\bsplit\()
9448             (?(?&split))
9449             )
9450             )
9451             )
9452             (?
9453             (?:
9454             (?!\bv\()(?[a-zA-Z]\w*)
9455             \(
9456             [[:blank:]\h]*
9457             (?
9458             (?> (?&func_words) )?
9459             )
9460             [[:blank:]\h]*
9461             \)
9462             )
9463             |
9464             (?:
9465             ( # paren group 1 (full function)
9466             (?!\bv\() # Take care to avoid catching modern-style variable v()
9467             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
9468             (? # paren group 2 (parens)
9469             \(
9470             (? # paren group 3 (contents of parens)
9471             (?:
9472             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9473             |
9474             (?&paren_group) # Recurse to named capture group
9475             )*
9476             )
9477             \)
9478             )
9479             )
9480             )
9481             )
9482             (?
9483             (?:
9484             $Regexp::Common::Apache2::REGEXP->{regex}
9485             |
9486             (?:
9487             (? (?®sub) )
9488             )
9489             )
9490             )
9491             (?
9492             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
9493             |
9494             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
9495             )
9496             (?
9497             s(?${REGSEP})
9498             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9499             \g{regsep}
9500             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9501             \g{regsep}
9502             (?${REGFLAGS})?
9503             )
9504             (?
9505             split\(
9506             [[:blank:]\h]*
9507             (?(?®any))
9508             [[:blank:]\h]*\,[[:blank:]\h]*
9509             (?:
9510             (?:
9511             (? (?&word) )
9512             )
9513             |
9514             (?:
9515             (? (?&list) )
9516             )
9517             )
9518             [[:blank:]\h]*
9519             \)
9520             )
9521             (?
9522             (?:
9523             (?: (?&substring) )
9524             )
9525             |
9526             (?:
9527             (?: (?&substring)[[:blank:]\h]+(?&string) )
9528             )
9529             )
9530             (?
9531             (?:
9532             (?(?&word))
9533             [[:blank:]\h]+
9534             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
9535             [[:blank:]\h]+
9536             (?(?&word))
9537             )
9538             )
9539             (?
9540             \bsub\(
9541             [[:blank:]\h]*
9542             (?(?=(?:[s]${REGSEP}))
9543             (? (?®sub) )
9544             )
9545             [[:blank:]\h]*
9546             \,
9547             [[:blank:]\h]*
9548             (?
9549             (? (?>(?&word)) )
9550             )
9551             [[:blank:]\h]*
9552             \)
9553             )
9554             (?
9555             (?:
9556             (?$Regexp::Common::Apache2::REGEXP->{cstring})
9557             )
9558             |
9559             (?:
9560             (? (?&variable) )
9561             )
9562             )
9563             (?
9564             (?:
9565             \%\{
9566             (?:
9567             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
9568             )
9569             \}
9570             )
9571             |
9572             (?:
9573             \%\{
9574             (?:
9575             (?${VARNAME})
9576             )
9577             \}
9578             )
9579             |
9580             (?:
9581             \bv\(
9582             [[:blank:]\h]*
9583             (?["'])
9584             (?:
9585             (?${VARNAME})
9586             )
9587             [[:blank:]\h]*
9588             \g{var_quote}
9589             \)
9590             )
9591             |
9592             (?:
9593             (?:^|\A|(?
9594             (?
9595             \$(?\{)?
9596             (?${DIGIT})
9597             (?()\})
9598             )
9599             )
9600             |
9601             (?:
9602             \%\{\:
9603             (?:
9604             (? (?&word) )
9605             )
9606             \:\}
9607             )
9608             |
9609             (?:
9610             \%\{\:
9611             (?:
9612             (? (?&cond) )
9613             )
9614             \:\}
9615             )
9616             )
9617             (?
9618             (?:
9619             (?
9620             (?$IPv4)
9621             |
9622             (?$IPv6)
9623             )
9624             )
9625             |
9626             (?:
9627             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9628             )
9629             |
9630             (?:
9631             (?['"])
9632             (?:
9633             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9634             )
9635             \g{word_quote}
9636             )
9637             |
9638             (?:
9639             (?['"])
9640             (?:
9641             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9642             )
9643             \g{word_quote}
9644             )
9645             |
9646             (?:
9647             \(
9648             [[:blank:]\h]*
9649             (? (?&word_lax) )
9650             [[:blank:]\h]*
9651             \)
9652             )
9653             |
9654             (?:
9655             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9656             (?
9657             (?: (?: (?-2)\. )+ (?-2) )
9658             )
9659             )
9660             )
9661             |
9662             (?:
9663             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9664             )
9665             |
9666             (?:
9667             (?(?&variable))
9668             )
9669             |
9670             (?:
9671             (?(?=\bsub\b\()
9672             (? (?&sub) )
9673             )
9674             )
9675             |
9676             (?:
9677             (?(?=\bjoin\b\()
9678             (? (?&join) )
9679             )
9680             )
9681             |
9682             (?:
9683             (? (?&function) )
9684             )
9685             |
9686             (?:
9687             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9688             )
9689             )
9690             (?
9691             (?:
9692             (?
9693             (?$IPv4)
9694             |
9695             (?$IPv6)
9696             )
9697             )
9698             |
9699             (?:
9700             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9701             )
9702             |
9703             (?:
9704             (?['"])
9705             (?:
9706             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9707             )
9708             \g{word_quote}
9709             )
9710             |
9711             (?:
9712             (?['"])
9713             (?:
9714             (? (?&string) )
9715             )
9716             \g{word_quote}
9717             )
9718             |
9719             (?:
9720             \(
9721             [[:blank:]\h]*
9722             (? (?-2) )
9723             [[:blank:]\h]*
9724             \)
9725             )
9726             |
9727             (?:
9728             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9729             (?
9730             (?: (?: (?-2)\. )+ (?-2) )
9731             )
9732             )
9733             )
9734             |
9735             (?:
9736             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9737             )
9738             |
9739             (?:
9740             (?(?&variable))
9741             )
9742             |
9743             (?:
9744             (?(?=\bsub\b\()
9745             (? (?&sub) )
9746             )
9747             )
9748             |
9749             (?:
9750             (?(?=\bjoin\b\()
9751             (? (?&join) )
9752             )
9753             )
9754             |
9755             (?:
9756             (? (?&function) )
9757             )
9758             |
9759             (?:
9760             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9761             )
9762             )
9763             (?
9764             (?:
9765             [[:blank:]\h]*\K
9766             (? (?&word) )
9767             [[:blank:]\h]*\,[[:blank:]\h]*
9768             (? (?&list) )
9769             )
9770             |
9771             (?:
9772             [[:blank:]\h]*\K
9773             (?
9774             (?:
9775             (?&word)
9776             [[:blank:]\h]*\,[[:blank:]\h]*
9777             )*
9778             (?&word)
9779             )
9780             (?:
9781             [[:blank:]\h]*\,[[:blank:]\h]*
9782             (? (?&word) )
9783             )?
9784             )
9785             |
9786             (?:
9787             [[:blank:]\h]*\K
9788             (? (?&word) )
9789             )
9790             )
9791             )
9792             /x;
9793              
9794             ## regex | regsub
9795 28         9348 $TRUNK->{regany} = qr/
9796             (?
9797             (?:
9798             (?$Regexp::Common::Apache2::TRUNK->{regex})
9799             |
9800             (?:
9801             (?(?®sub))
9802             )
9803             )
9804             )
9805             (?(DEFINE)
9806             (?
9807             s(?${REGSEP})
9808             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9809             \g{regsep}
9810             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9811             \g{regsep}
9812             (?${REGFLAGS})?
9813             )
9814             )
9815             /x;
9816              
9817             ## "s" regsep regpattern regsep string regsep [regflags]
9818 28         1822 $TRUNK->{regsub} = qr/
9819             (?
9820             s(?${REGSEP})
9821             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9822             \g{regsep}
9823             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9824             \g{regsep}
9825             (?${REGFLAGS})?
9826             )
9827             /x;
9828              
9829             ## "split" ["("] regany "," list [")"]
9830             ## | "split" ["("] regany "," word [")"]
9831 28         1262414 $TRUNK->{split} = qr/
9832             (?
9833             split\(
9834             [[:blank:]\h]*
9835             (?(?®any))
9836             [[:blank:]\h]*\,[[:blank:]\h]*
9837             (?:
9838             (?:
9839             (?(?&word))
9840             )
9841             |
9842             (?:
9843             (?(?&list))
9844             )
9845             )
9846             [[:blank:]\h]*
9847             \)
9848             )
9849             (?(DEFINE)
9850             (?
9851             (?:
9852             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
9853             (?
9854             (?&stringcomp)
9855             )
9856             )
9857             )
9858             |
9859             (?:
9860             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
9861             (?
9862             (?&integercomp)
9863             )
9864             )
9865             )
9866             |
9867             (?:
9868             (?:(?<=\W)|(?<=^)|(?<=\A))
9869             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
9870             [[:blank:]\h]+
9871             (? (?&word_lax) )
9872             )
9873             |
9874             (?:
9875             (? (?&word_lax) )
9876             [[:blank:]\h]+
9877             (?:
9878             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
9879             |
9880             (?:
9881             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
9882             )
9883             )
9884             [[:blank:]\h]+
9885             (? (?&word_lax) )
9886             )
9887             |
9888             (?:
9889             (? (?&word) )
9890             [[:blank:]\h]+
9891             \-?in
9892             [[:blank:]\h]+
9893             (? (?&listfunc) )
9894             )
9895             |
9896             (?:
9897             (? (?&word) )
9898             [[:blank:]\h]+
9899             (? [\=|\!]\~ )
9900             [[:blank:]\h]+
9901             $Regexp::Common::Apache2::REGEXP->{regex}
9902             )
9903             |
9904             (?:
9905             (? (?&word) )
9906             [[:blank:]\h]+
9907             \-?in
9908             [[:blank:]\h]+
9909             \{
9910             [[:blank:]\h]*
9911             (? (?&list) )
9912             [[:blank:]\h]*
9913             \}
9914             )
9915             )
9916             (?
9917             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
9918             |
9919             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
9920             |
9921             (?:
9922             \![[:blank:]\h]*
9923             (? (?-2) )
9924             )
9925             |
9926             (?:
9927             \(
9928             [[:blank:]\h]*
9929             (? (?&cond) )
9930             [[:blank:]\h]*
9931             \)
9932             )
9933             |
9934             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
9935             (?(?&comp))
9936             )
9937             |
9938             (?:
9939             (?(?=(?:.+?)\&\&(?:.+?))
9940             (? (?: (?-2) )+ )
9941             [[:blank:]\h]*
9942             \&\&
9943             [[:blank:]\h]*
9944             (? (?: (?-2) )+ )
9945             )
9946             )
9947             |
9948             (?:
9949             (?(?=(?:.+?)\|\|(?:.+?))
9950             (? (?: (?-2) )+ )
9951             [[:blank:]\h]*
9952             \|\|
9953             [[:blank:]\h]*
9954             (? (?: (?-2) )+ )
9955             )
9956             )
9957             )
9958             (?
9959             (?:
9960             (?!\bv\()(?[a-zA-Z]\w*)
9961             \(
9962             [[:blank:]\h]*
9963             (?
9964             (?> (?&func_words) )?
9965             )
9966             [[:blank:]\h]*
9967             \)
9968             )
9969             |
9970             (?:
9971             ( # paren group 1 (full function)
9972             (?!\bv\() # Take care to avoid catching modern-style variable v()
9973             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
9974             (? # paren group 2 (parens)
9975             \(
9976             (? # paren group 3 (contents of parens)
9977             (?:
9978             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9979             |
9980             (?&paren_group) # Recurse to named capture group
9981             )*
9982             )
9983             \)
9984             )
9985             )
9986             )
9987             )
9988             (?
9989             (?:
9990             (? (?&word) )
9991             )
9992             |
9993             (?:
9994             (?:
9995             (? (?&word) )
9996             [[:blank:]\h]*\,[[:blank:]\h]*
9997             (? (?&list) )
9998             )
9999             |
10000             (?:
10001             (?
10002             (?:
10003             (?&word)
10004             [[:blank:]\h]*\,[[:blank:]\h]*
10005             )*
10006             (?&word)
10007             )
10008             (?:
10009             [[:blank:]\h]*\,[[:blank:]\h]*
10010             (? (?&word) )
10011             )?
10012             )
10013             )
10014             )
10015             (?
10016             (?:
10017             (?(?&word))
10018             [[:blank:]\h]+
10019             \-?(? (?:eq|ne|lt|le|gt|ge) )
10020             [[:blank:]\h]+
10021             (?(?&word))
10022             )
10023             )
10024             (?
10025             \bjoin\(
10026             [[:blank:]\h]*
10027             (?:
10028             (?:
10029             (? (?&list) )
10030             [[:blank:]]*\,[[:blank:]]*
10031             (? (?&word) )
10032             )
10033             |
10034             (? (?&list) )
10035             )
10036             [[:blank:]\h]*
10037             \)
10038             )
10039             (?
10040             (?:
10041             \{
10042             [[:blank:]\h]*
10043             (?(?&words))
10044             [[:blank:]\h]*
10045             \}
10046             )
10047             |
10048             (?:
10049             \(
10050             [[:blank:]\h]*
10051             (? (?&list) )
10052             [[:blank:]\h]*
10053             \)
10054             )
10055             |
10056             (?:
10057             (?(?&listfunc))
10058             )
10059             |
10060             (?:
10061             (?(?=\bsplit\()
10062             (?(?&split_recur))
10063             )
10064             )
10065             )
10066             (?
10067             (?:
10068             (?!\bv\()(?[a-zA-Z]\w*)
10069             \(
10070             [[:blank:]\h]*
10071             (?
10072             (?> (?&func_words) )?
10073             )
10074             [[:blank:]\h]*
10075             \)
10076             )
10077             |
10078             (?:
10079             ( # paren group 1 (full function)
10080             (?!\bv\() # Take care to avoid catching modern-style variable v()
10081             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
10082             (? # paren group 2 (parens)
10083             \(
10084             (? # paren group 3 (contents of parens)
10085             (?:
10086             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10087             |
10088             (?&paren_group) # Recurse to named capture group
10089             )*
10090             )
10091             \)
10092             )
10093             )
10094             )
10095             )
10096             (?
10097             (?:
10098             $Regexp::Common::Apache2::REGEXP->{regex}
10099             |
10100             (?:
10101             (? (?®sub) )
10102             )
10103             )
10104             )
10105             (?
10106             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
10107             |
10108             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
10109             )
10110             (?
10111             s(?${REGSEP})
10112             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10113             \g{regsep}
10114             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10115             \g{regsep}
10116             (?${REGFLAGS})?
10117             )
10118             (?
10119             split\(
10120             [[:blank:]\h]*
10121             (?(?®any))
10122             [[:blank:]\h]*\,[[:blank:]\h]*
10123             (?:
10124             (?:
10125             (? (?&word) )
10126             )
10127             |
10128             (?:
10129             (? (?&list) )
10130             )
10131             )
10132             [[:blank:]\h]*
10133             \)
10134             )
10135             (?
10136             (?:
10137             (?: (?&substring) )
10138             )
10139             |
10140             (?:
10141             (?: (?&substring)[[:blank:]\h]+(?&string) )
10142             )
10143             )
10144             (?
10145             (?:
10146             (?(?&word))
10147             [[:blank:]\h]+
10148             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
10149             [[:blank:]\h]+
10150             (?(?&word))
10151             )
10152             )
10153             (?
10154             \bsub\(
10155             [[:blank:]\h]*
10156             (?(?=(?:[s]${REGSEP}))
10157             (? (?®sub) )
10158             )
10159             [[:blank:]\h]*
10160             \,
10161             [[:blank:]\h]*
10162             (?
10163             (? (?>(?&word)) )
10164             )
10165             [[:blank:]\h]*
10166             \)
10167             )
10168             (?
10169             (?:
10170             (?$Regexp::Common::Apache2::REGEXP->{cstring})
10171             )
10172             |
10173             (?:
10174             (? (?&variable) )
10175             )
10176             )
10177             (?
10178             (?:
10179             \%\{
10180             (?:
10181             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
10182             )
10183             \}
10184             )
10185             |
10186             (?:
10187             \%\{
10188             (?:
10189             (?${VARNAME})
10190             )
10191             \}
10192             )
10193             |
10194             (?:
10195             \bv\(
10196             [[:blank:]\h]*
10197             (?["'])
10198             (?:
10199             (?${VARNAME})
10200             )
10201             [[:blank:]\h]*
10202             \g{var_quote}
10203             \)
10204             )
10205             |
10206             (?:
10207             (?:^|\A|(?
10208             (?
10209             \$(?\{)?
10210             (?${DIGIT})
10211             (?()\})
10212             )
10213             )
10214             |
10215             (?:
10216             \%\{\:
10217             (?:
10218             (? (?&word) )
10219             )
10220             \:\}
10221             )
10222             |
10223             (?:
10224             \%\{\:
10225             (?:
10226             (? (?&cond) )
10227             )
10228             \:\}
10229             )
10230             )
10231             (?
10232             (?:
10233             (?
10234             (?$IPv4)
10235             |
10236             (?$IPv6)
10237             )
10238             )
10239             |
10240             (?:
10241             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10242             )
10243             |
10244             (?:
10245             (?['"])
10246             (?:
10247             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10248             )
10249             \g{word_quote}
10250             )
10251             |
10252             (?:
10253             (?['"])
10254             (?:
10255             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10256             )
10257             \g{word_quote}
10258             )
10259             |
10260             (?:
10261             \(
10262             [[:blank:]\h]*
10263             (? (?&word_lax) )
10264             [[:blank:]\h]*
10265             \)
10266             )
10267             |
10268             (?:
10269             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10270             (?
10271             (?: (?: (?-2)\. )+ (?-2) )
10272             )
10273             )
10274             )
10275             |
10276             (?:
10277             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10278             )
10279             |
10280             (?:
10281             (?(?&variable))
10282             )
10283             |
10284             (?:
10285             (?(?=\bsub\b\()
10286             (? (?&sub) )
10287             )
10288             )
10289             |
10290             (?:
10291             (?(?=\bjoin\b\()
10292             (? (?&join) )
10293             )
10294             )
10295             |
10296             (?:
10297             (? (?&function) )
10298             )
10299             |
10300             (?:
10301             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10302             )
10303             )
10304             (?
10305             (?:
10306             (?
10307             (?$IPv4)
10308             |
10309             (?$IPv6)
10310             )
10311             )
10312             |
10313             (?:
10314             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10315             )
10316             |
10317             (?:
10318             (?['"])
10319             (?:
10320             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10321             )
10322             \g{word_quote}
10323             )
10324             |
10325             (?:
10326             (?['"])
10327             (?:
10328             (? (?&string) )
10329             )
10330             \g{word_quote}
10331             )
10332             |
10333             (?:
10334             \(
10335             [[:blank:]\h]*
10336             (? (?-2) )
10337             [[:blank:]\h]*
10338             \)
10339             )
10340             |
10341             (?:
10342             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10343             (?
10344             (?: (?: (?-2)\. )+ (?-2) )
10345             )
10346             )
10347             )
10348             |
10349             (?:
10350             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10351             )
10352             |
10353             (?:
10354             (?(?&variable))
10355             )
10356             |
10357             (?:
10358             (?(?=\bsub\b\()
10359             (? (?&sub) )
10360             )
10361             )
10362             |
10363             (?:
10364             (?(?=\bjoin\b\()
10365             (? (?&join) )
10366             )
10367             )
10368             |
10369             (?:
10370             (? (?&function) )
10371             )
10372             |
10373             (?:
10374             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10375             )
10376             )
10377             (?
10378             (?:
10379             [[:blank:]\h]*\K
10380             (? (?&word) )
10381             [[:blank:]\h]*\,[[:blank:]\h]*
10382             (? (?&list) )
10383             )
10384             |
10385             (?:
10386             [[:blank:]\h]*\K
10387             (?
10388             (?:
10389             (?&word)
10390             [[:blank:]\h]*\,[[:blank:]\h]*
10391             )*
10392             (?&word)
10393             )
10394             (?:
10395             [[:blank:]\h]*\,[[:blank:]\h]*
10396             (? (?&word) )
10397             )?
10398             )
10399             |
10400             (?:
10401             [[:blank:]\h]*\K
10402             (? (?&word) )
10403             )
10404             )
10405             )
10406             /x;
10407              
10408             ## substring
10409             ## | string substring
10410 28         1139980 $TRUNK->{string} = qr/
10411             (?
10412             (?:
10413             (?&substring)
10414             )
10415             |
10416             (?:
10417             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
10418             )
10419             )
10420             (?(DEFINE)
10421             (?
10422             (?:
10423             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
10424             (?
10425             (?&stringcomp)
10426             )
10427             )
10428             )
10429             |
10430             (?:
10431             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
10432             (?
10433             (?&integercomp)
10434             )
10435             )
10436             )
10437             |
10438             (?:
10439             (?:(?<=\W)|(?<=^)|(?<=\A))
10440             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
10441             [[:blank:]\h]+
10442             (? (?&word_lax) )
10443             )
10444             |
10445             (?:
10446             (? (?&word_lax) )
10447             [[:blank:]\h]+
10448             (?:
10449             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
10450             |
10451             (?:
10452             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
10453             )
10454             )
10455             [[:blank:]\h]+
10456             (? (?&word_lax) )
10457             )
10458             |
10459             (?:
10460             (? (?&word) )
10461             [[:blank:]\h]+
10462             \-?in
10463             [[:blank:]\h]+
10464             (? (?&listfunc) )
10465             )
10466             |
10467             (?:
10468             (? (?&word) )
10469             [[:blank:]\h]+
10470             (? [\=|\!]\~ )
10471             [[:blank:]\h]+
10472             $Regexp::Common::Apache2::REGEXP->{regex}
10473             )
10474             |
10475             (?:
10476             (? (?&word) )
10477             [[:blank:]\h]+
10478             \-?in
10479             [[:blank:]\h]+
10480             \{
10481             [[:blank:]\h]*
10482             (? (?&list) )
10483             [[:blank:]\h]*
10484             \}
10485             )
10486             )
10487             (?
10488             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
10489             |
10490             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
10491             |
10492             (?:
10493             \![[:blank:]\h]*
10494             (? (?-2) )
10495             )
10496             |
10497             (?:
10498             \(
10499             [[:blank:]\h]*
10500             (? (?&cond) )
10501             [[:blank:]\h]*
10502             \)
10503             )
10504             |
10505             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
10506             (?(?&comp))
10507             )
10508             |
10509             (?:
10510             (?(?=(?:.+?)\&\&(?:.+?))
10511             (? (?: (?-2) )+ )
10512             [[:blank:]\h]*
10513             \&\&
10514             [[:blank:]\h]*
10515             (? (?: (?-2) )+ )
10516             )
10517             )
10518             |
10519             (?:
10520             (?(?=(?:.+?)\|\|(?:.+?))
10521             (? (?: (?-2) )+ )
10522             [[:blank:]\h]*
10523             \|\|
10524             [[:blank:]\h]*
10525             (? (?: (?-2) )+ )
10526             )
10527             )
10528             )
10529             (?
10530             (?:
10531             (?!\bv\()(?[a-zA-Z]\w*)
10532             \(
10533             [[:blank:]\h]*
10534             (?
10535             (?> (?&func_words) )?
10536             )
10537             [[:blank:]\h]*
10538             \)
10539             )
10540             |
10541             (?:
10542             ( # paren group 1 (full function)
10543             (?!\bv\() # Take care to avoid catching modern-style variable v()
10544             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
10545             (? # paren group 2 (parens)
10546             \(
10547             (? # paren group 3 (contents of parens)
10548             (?:
10549             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10550             |
10551             (?&paren_group) # Recurse to named capture group
10552             )*
10553             )
10554             \)
10555             )
10556             )
10557             )
10558             )
10559             (?
10560             (?:
10561             (? (?&word) )
10562             )
10563             |
10564             (?:
10565             (?:
10566             (? (?&word) )
10567             [[:blank:]\h]*\,[[:blank:]\h]*
10568             (? (?&list) )
10569             )
10570             |
10571             (?:
10572             (?
10573             (?:
10574             (?&word)
10575             [[:blank:]\h]*\,[[:blank:]\h]*
10576             )*
10577             (?&word)
10578             )
10579             (?:
10580             [[:blank:]\h]*\,[[:blank:]\h]*
10581             (? (?&word) )
10582             )?
10583             )
10584             )
10585             )
10586             (?
10587             (?:
10588             (?(?&word))
10589             [[:blank:]\h]+
10590             \-?(? (?:eq|ne|lt|le|gt|ge) )
10591             [[:blank:]\h]+
10592             (?(?&word))
10593             )
10594             )
10595             (?
10596             \bjoin\(
10597             [[:blank:]\h]*
10598             (?:
10599             (?:
10600             (? (?&list) )
10601             [[:blank:]]*\,[[:blank:]]*
10602             (? (?&word) )
10603             )
10604             |
10605             (? (?&list) )
10606             )
10607             [[:blank:]\h]*
10608             \)
10609             )
10610             (?
10611             (?:
10612             \{
10613             [[:blank:]\h]*
10614             (?(?&words))
10615             [[:blank:]\h]*
10616             \}
10617             )
10618             |
10619             (?:
10620             \(
10621             [[:blank:]\h]*
10622             (? (?&list) )
10623             [[:blank:]\h]*
10624             \)
10625             )
10626             |
10627             (?:
10628             (?(?&listfunc))
10629             )
10630             |
10631             (?:
10632             (?(?=\bsplit\()
10633             (?(?&split))
10634             )
10635             )
10636             )
10637             (?
10638             (?:
10639             (?!\bv\()(?[a-zA-Z]\w*)
10640             \(
10641             [[:blank:]\h]*
10642             (?
10643             (?> (?&func_words) )?
10644             )
10645             [[:blank:]\h]*
10646             \)
10647             )
10648             |
10649             (?:
10650             ( # paren group 1 (full function)
10651             (?!\bv\() # Take care to avoid catching modern-style variable v()
10652             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
10653             (? # paren group 2 (parens)
10654             \(
10655             (? # paren group 3 (contents of parens)
10656             (?:
10657             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10658             |
10659             (?&paren_group) # Recurse to named capture group
10660             )*
10661             )
10662             \)
10663             )
10664             )
10665             )
10666             )
10667             (?
10668             (?:
10669             $Regexp::Common::Apache2::REGEXP->{regex}
10670             |
10671             (?:
10672             (? (?®sub) )
10673             )
10674             )
10675             )
10676             (?
10677             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
10678             |
10679             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
10680             )
10681             (?
10682             s(?${REGSEP})
10683             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10684             \g{regsep}
10685             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10686             \g{regsep}
10687             (?${REGFLAGS})?
10688             )
10689             (?
10690             split\(
10691             [[:blank:]\h]*
10692             (?(?®any))
10693             [[:blank:]\h]*\,[[:blank:]\h]*
10694             (?:
10695             (?:
10696             (? (?&word) )
10697             )
10698             |
10699             (?:
10700             (? (?&list) )
10701             )
10702             )
10703             [[:blank:]\h]*
10704             \)
10705             )
10706             (?
10707             (?:
10708             (?:(?-1)[[:blank:]\h]+(?&substring))
10709             )
10710             |
10711             (?:
10712             (?: (?&substring) )
10713             )
10714             )
10715             (?
10716             (?:
10717             (?(?&word))
10718             [[:blank:]\h]+
10719             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
10720             [[:blank:]\h]+
10721             (?(?&word))
10722             )
10723             )
10724             (?
10725             \bsub\(
10726             [[:blank:]\h]*
10727             (?(?=(?:[s]${REGSEP}))
10728             (? (?®sub) )
10729             )
10730             [[:blank:]\h]*
10731             \,
10732             [[:blank:]\h]*
10733             (?
10734             (? (?>(?&word)) )
10735             )
10736             [[:blank:]\h]*
10737             \)
10738             )
10739             (?
10740             (?:
10741             (?$Regexp::Common::Apache2::REGEXP->{cstring})
10742             )
10743             |
10744             (?:
10745             (? (?&variable) )
10746             )
10747             )
10748             (?
10749             (?:
10750             \%\{
10751             (?:
10752             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
10753             )
10754             \}
10755             )
10756             |
10757             (?:
10758             \%\{
10759             (?:
10760             (?${VARNAME})
10761             )
10762             \}
10763             )
10764             |
10765             (?:
10766             \bv\(
10767             [[:blank:]\h]*
10768             (?["'])
10769             (?:
10770             (?${VARNAME})
10771             )
10772             [[:blank:]\h]*
10773             \g{var_quote}
10774             \)
10775             )
10776             |
10777             (?:
10778             (?:^|\A|(?
10779             (?
10780             \$(?\{)?
10781             (?${DIGIT})
10782             (?()\})
10783             )
10784             )
10785             |
10786             (?:
10787             \%\{\:
10788             (?:
10789             (? (?&word) )
10790             )
10791             \:\}
10792             )
10793             |
10794             (?:
10795             \%\{\:
10796             (?:
10797             (? (?&cond) )
10798             )
10799             \:\}
10800             )
10801             )
10802             (?
10803             (?:
10804             (?
10805             (?$IPv4)
10806             |
10807             (?$IPv6)
10808             )
10809             )
10810             |
10811             (?:
10812             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10813             )
10814             |
10815             (?:
10816             (?['"])
10817             (?:
10818             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10819             )
10820             \g{word_quote}
10821             )
10822             |
10823             (?:
10824             (?['"])
10825             (?:
10826             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10827             )
10828             \g{word_quote}
10829             )
10830             |
10831             (?:
10832             \(
10833             [[:blank:]\h]*
10834             (? (?&word_lax) )
10835             [[:blank:]\h]*
10836             \)
10837             )
10838             |
10839             (?:
10840             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10841             (?
10842             (?: (?: (?-2)\. )+ (?-2) )
10843             )
10844             )
10845             )
10846             |
10847             (?:
10848             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10849             )
10850             |
10851             (?:
10852             (?(?&variable))
10853             )
10854             |
10855             (?:
10856             (?(?=\bsub\b\()
10857             (? (?&sub) )
10858             )
10859             )
10860             |
10861             (?:
10862             (?(?=\bjoin\b\()
10863             (? (?&join) )
10864             )
10865             )
10866             |
10867             (?:
10868             (? (?&function) )
10869             )
10870             |
10871             (?:
10872             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10873             )
10874             )
10875             (?
10876             (?:
10877             (?
10878             (?$IPv4)
10879             |
10880             (?$IPv6)
10881             )
10882             )
10883             |
10884             (?:
10885             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10886             )
10887             |
10888             (?:
10889             (?['"])
10890             (?:
10891             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10892             )
10893             \g{word_quote}
10894             )
10895             |
10896             (?:
10897             (?['"])
10898             (?:
10899             (? (?&string_recur) )
10900             )
10901             \g{word_quote}
10902             )
10903             |
10904             (?:
10905             \(
10906             [[:blank:]\h]*
10907             (? (?-2) )
10908             [[:blank:]\h]*
10909             \)
10910             )
10911             |
10912             (?:
10913             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10914             (?
10915             (?: (?: (?-2)\. )+ (?-2) )
10916             )
10917             )
10918             )
10919             |
10920             (?:
10921             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10922             )
10923             |
10924             (?:
10925             (?(?&variable))
10926             )
10927             |
10928             (?:
10929             (?(?=\bsub\b\()
10930             (? (?&sub) )
10931             )
10932             )
10933             |
10934             (?:
10935             (?(?=\bjoin\b\()
10936             (? (?&join) )
10937             )
10938             )
10939             |
10940             (?:
10941             (? (?&function) )
10942             )
10943             |
10944             (?:
10945             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10946             )
10947             )
10948             (?
10949             (?:
10950             [[:blank:]\h]*\K
10951             (? (?&word) )
10952             [[:blank:]\h]*\,[[:blank:]\h]*
10953             (? (?&list) )
10954             )
10955             |
10956             (?:
10957             [[:blank:]\h]*\K
10958             (?
10959             (?:
10960             (?&word)
10961             [[:blank:]\h]*\,[[:blank:]\h]*
10962             )*
10963             (?&word)
10964             )
10965             (?:
10966             [[:blank:]\h]*\,[[:blank:]\h]*
10967             (? (?&word) )
10968             )?
10969             )
10970             |
10971             (?:
10972             [[:blank:]\h]*\K
10973             (? (?&word) )
10974             )
10975             )
10976             )/x;
10977              
10978             ## word "==" word
10979             ## | word "!=" word
10980             ## | word "<" word
10981             ## | word "<=" word
10982             ## | word ">" word
10983             ## | word ">=" word
10984 28         1306405 $TRUNK->{stringcomp} = qr/
10985             (?
10986             (?(?&word))
10987             [[:blank:]\h]+
10988             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
10989             [[:blank:]\h]+
10990             (?(?&word))
10991             )
10992             (?(DEFINE)
10993             (?
10994             (?:
10995             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
10996             (?
10997             (?&stringcomp_recur)
10998             )
10999             )
11000             )
11001             |
11002             (?:
11003             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
11004             (?
11005             (?&integercomp)
11006             )
11007             )
11008             )
11009             |
11010             (?:
11011             (?:(?<=\W)|(?<=^)|(?<=\A))
11012             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
11013             [[:blank:]\h]+
11014             (? (?&word_lax) )
11015             )
11016             |
11017             (?:
11018             (? (?&word_lax) )
11019             [[:blank:]\h]+
11020             (?:
11021             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
11022             |
11023             (?:
11024             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
11025             )
11026             )
11027             [[:blank:]\h]+
11028             (? (?&word_lax) )
11029             )
11030             |
11031             (?:
11032             (? (?&word) )
11033             [[:blank:]\h]+
11034             \-?in
11035             [[:blank:]\h]+
11036             (? (?&listfunc) )
11037             )
11038             |
11039             (?:
11040             (? (?&word) )
11041             [[:blank:]\h]+
11042             (? [\=|\!]\~ )
11043             [[:blank:]\h]+
11044             $Regexp::Common::Apache2::REGEXP->{regex}
11045             )
11046             |
11047             (?:
11048             (? (?&word) )
11049             [[:blank:]\h]+
11050             \-?in
11051             [[:blank:]\h]+
11052             \{
11053             [[:blank:]\h]*
11054             (? (?&list) )
11055             [[:blank:]\h]*
11056             \}
11057             )
11058             )
11059             (?
11060             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
11061             |
11062             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
11063             |
11064             (?:
11065             \![[:blank:]\h]*
11066             (? (?-2) )
11067             )
11068             |
11069             (?:
11070             \(
11071             [[:blank:]\h]*
11072             (? (?&cond) )
11073             [[:blank:]\h]*
11074             \)
11075             )
11076             |
11077             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
11078             (?(?&comp))
11079             )
11080             |
11081             (?:
11082             (?(?=(?:.+?)\&\&(?:.+?))
11083             (? (?: (?-2) )+ )
11084             [[:blank:]\h]*
11085             \&\&
11086             [[:blank:]\h]*
11087             (? (?: (?-2) )+ )
11088             )
11089             )
11090             |
11091             (?:
11092             (?(?=(?:.+?)\|\|(?:.+?))
11093             (? (?: (?-2) )+ )
11094             [[:blank:]\h]*
11095             \|\|
11096             [[:blank:]\h]*
11097             (? (?: (?-2) )+ )
11098             )
11099             )
11100             )
11101             (?
11102             (?:
11103             (?!\bv\()(?[a-zA-Z]\w*)
11104             \(
11105             [[:blank:]\h]*
11106             (?
11107             (?> (?&func_words) )?
11108             )
11109             [[:blank:]\h]*
11110             \)
11111             )
11112             |
11113             (?:
11114             ( # paren group 1 (full function)
11115             (?!\bv\() # Take care to avoid catching modern-style variable v()
11116             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
11117             (? # paren group 2 (parens)
11118             \(
11119             (? # paren group 3 (contents of parens)
11120             (?:
11121             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11122             |
11123             (?&paren_group) # Recurse to named capture group
11124             )*
11125             )
11126             \)
11127             )
11128             )
11129             )
11130             )
11131             (?
11132             (?:
11133             (? (?&word) )
11134             )
11135             |
11136             (?:
11137             (?:
11138             (? (?&word) )
11139             [[:blank:]\h]*\,[[:blank:]\h]*
11140             (? (?&list) )
11141             )
11142             |
11143             (?:
11144             (?
11145             (?:
11146             (?&word)
11147             [[:blank:]\h]*\,[[:blank:]\h]*
11148             )*
11149             (?&word)
11150             )
11151             (?:
11152             [[:blank:]\h]*\,[[:blank:]\h]*
11153             (? (?&word) )
11154             )?
11155             )
11156             )
11157             )
11158             (?
11159             (?:
11160             (?(?&word))
11161             [[:blank:]\h]+
11162             \-?(? (?:eq|ne|lt|le|gt|ge) )
11163             [[:blank:]\h]+
11164             (?(?&word))
11165             )
11166             )
11167             (?
11168             \bjoin\(
11169             [[:blank:]\h]*
11170             (?:
11171             (?:
11172             (? (?&list) )
11173             [[:blank:]]*\,[[:blank:]]*
11174             (? (?&word) )
11175             )
11176             |
11177             (? (?&list) )
11178             )
11179             [[:blank:]\h]*
11180             \)
11181             )
11182             (?
11183             (?:
11184             \{
11185             [[:blank:]\h]*
11186             (?(?&words))
11187             [[:blank:]\h]*
11188             \}
11189             )
11190             |
11191             (?:
11192             \(
11193             [[:blank:]\h]*
11194             (? (?&list) )
11195             [[:blank:]\h]*
11196             \)
11197             )
11198             |
11199             (?:
11200             (?(?&listfunc))
11201             )
11202             |
11203             (?:
11204             (?(?=\bsplit\()
11205             (?(?&split))
11206             )
11207             )
11208             )
11209             (?
11210             (?:
11211             (?!\bv\()(?[a-zA-Z]\w*)
11212             \(
11213             [[:blank:]\h]*
11214             (?
11215             (?> (?&func_words) )?
11216             )
11217             [[:blank:]\h]*
11218             \)
11219             )
11220             |
11221             (?:
11222             ( # paren group 1 (full function)
11223             (?!\bv\() # Take care to avoid catching modern-style variable v()
11224             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
11225             (? # paren group 2 (parens)
11226             \(
11227             (? # paren group 3 (contents of parens)
11228             (?:
11229             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11230             |
11231             (?&paren_group) # Recurse to named capture group
11232             )*
11233             )
11234             \)
11235             )
11236             )
11237             )
11238             )
11239             (?
11240             (?:
11241             $Regexp::Common::Apache2::REGEXP->{regex}
11242             |
11243             (?:
11244             (? (?®sub) )
11245             )
11246             )
11247             )
11248             (?
11249             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
11250             |
11251             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
11252             )
11253             (?
11254             s(?${REGSEP})
11255             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11256             \g{regsep}
11257             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11258             \g{regsep}
11259             (?${REGFLAGS})?
11260             )
11261             (?
11262             split\(
11263             [[:blank:]\h]*
11264             (?(?®any))
11265             [[:blank:]\h]*\,[[:blank:]\h]*
11266             (?:
11267             (?:
11268             (? (?&word) )
11269             )
11270             |
11271             (?:
11272             (? (?&list) )
11273             )
11274             )
11275             [[:blank:]\h]*
11276             \)
11277             )
11278             (?
11279             (?:
11280             (?: (?&substring) )
11281             )
11282             |
11283             (?:
11284             (?: (?&substring)[[:blank:]\h]+(?&string) )
11285             )
11286             )
11287             (?
11288             (?:
11289             (?(?&word))
11290             [[:blank:]\h]+
11291             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
11292             [[:blank:]\h]+
11293             (?(?&word))
11294             )
11295             )
11296             (?
11297             \bsub\(
11298             [[:blank:]\h]*
11299             (?(?=(?:[s]${REGSEP}))
11300             (? (?®sub) )
11301             )
11302             [[:blank:]\h]*
11303             \,
11304             [[:blank:]\h]*
11305             (?
11306             (? (?>(?&word)) )
11307             )
11308             [[:blank:]\h]*
11309             \)
11310             )
11311             (?
11312             (?:
11313             (?$Regexp::Common::Apache2::REGEXP->{cstring})
11314             )
11315             |
11316             (?:
11317             (? (?&variable) )
11318             )
11319             )
11320             (?
11321             (?:
11322             \%\{
11323             (?:
11324             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
11325             )
11326             \}
11327             )
11328             |
11329             (?:
11330             \%\{
11331             (?:
11332             (?${VARNAME})
11333             )
11334             \}
11335             )
11336             |
11337             (?:
11338             \bv\(
11339             [[:blank:]\h]*
11340             (?["'])
11341             (?:
11342             (?${VARNAME})
11343             )
11344             [[:blank:]\h]*
11345             \g{var_quote}
11346             \)
11347             )
11348             |
11349             (?:
11350             (?:^|\A|(?
11351             (?
11352             \$(?\{)?
11353             (?${DIGIT})
11354             (?()\})
11355             )
11356             )
11357             |
11358             (?:
11359             \%\{\:
11360             (?:
11361             (? (?&word) )
11362             )
11363             \:\}
11364             )
11365             |
11366             (?:
11367             \%\{\:
11368             (?:
11369             (? (?&cond) )
11370             )
11371             \:\}
11372             )
11373             )
11374             (?
11375             (?:
11376             (?
11377             (?$IPv4)
11378             |
11379             (?$IPv6)
11380             )
11381             )
11382             |
11383             (?:
11384             (? $Regexp::Common::Apache2::REGEXP->{digits} )
11385             )
11386             |
11387             (?:
11388             (?['"])
11389             (?:
11390             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11391             )
11392             \g{word_quote}
11393             )
11394             |
11395             (?:
11396             (?['"])
11397             (?:
11398             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11399             )
11400             \g{word_quote}
11401             )
11402             |
11403             (?:
11404             \(
11405             [[:blank:]\h]*
11406             (? (?&word_lax) )
11407             [[:blank:]\h]*
11408             \)
11409             )
11410             |
11411             (?:
11412             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
11413             (?
11414             (?: (?: (?-2)\. )+ (?-2) )
11415             )
11416             )
11417             )
11418             |
11419             (?:
11420             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11421             )
11422             |
11423             (?:
11424             (?(?&variable))
11425             )
11426             |
11427             (?:
11428             (?(?=\bsub\b\()
11429             (? (?&sub) )
11430             )
11431             )
11432             |
11433             (?:
11434             (?(?=\bjoin\b\()
11435             (? (?&join) )
11436             )
11437             )
11438             |
11439             (?:
11440             (? (?&function) )
11441             )
11442             |
11443             (?:
11444             (? $Regexp::Common::Apache2::TRUNK->{regex} )
11445             )
11446             )
11447             (?
11448             (?:
11449             (?
11450             (?$IPv4)
11451             |
11452             (?$IPv6)
11453             )
11454             )
11455             |
11456             (?:
11457             (? $Regexp::Common::Apache2::REGEXP->{digits} )
11458             )
11459             |
11460             (?:
11461             (?['"])
11462             (?:
11463             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11464             )
11465             \g{word_quote}
11466             )
11467             |
11468             (?:
11469             (?['"])
11470             (?:
11471             (? (?&string) )
11472             )
11473             \g{word_quote}
11474             )
11475             |
11476             (?:
11477             \(
11478             [[:blank:]\h]*
11479             (? (?-2) )
11480             [[:blank:]\h]*
11481             \)
11482             )
11483             |
11484             (?:
11485             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
11486             (?
11487             (?: (?: (?-2)\. )+ (?-2) )
11488             )
11489             )
11490             )
11491             |
11492             (?:
11493             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11494             )
11495             |
11496             (?:
11497             (?(?&variable))
11498             )
11499             |
11500             (?:
11501             (?(?=\bsub\b\()
11502             (? (?&sub) )
11503             )
11504             )
11505             |
11506             (?:
11507             (?(?=\bjoin\b\()
11508             (? (?&join) )
11509             )
11510             )
11511             |
11512             (?:
11513             (? (?&function) )
11514             )
11515             |
11516             (?:
11517             (? $Regexp::Common::Apache2::TRUNK->{regex} )
11518             )
11519             )
11520             (?
11521             (?:
11522             [[:blank:]\h]*\K
11523             (? (?&word) )
11524             [[:blank:]\h]*\,[[:blank:]\h]*
11525             (? (?&list) )
11526             )
11527             |
11528             (?:
11529             [[:blank:]\h]*\K
11530             (?
11531             (?:
11532             (?&word)
11533             [[:blank:]\h]*\,[[:blank:]\h]*
11534             )*
11535             (?&word)
11536             )
11537             (?:
11538             [[:blank:]\h]*\,[[:blank:]\h]*
11539             (? (?&word) )
11540             )?
11541             )
11542             |
11543             (?:
11544             [[:blank:]\h]*\K
11545             (? (?&word) )
11546             )
11547             )
11548             )
11549             /x;
11550              
11551             ## "sub" ["("] regsub "," word [")"]
11552 28         1259945 $TRUNK->{sub} = qr/
11553             (?
11554             sub\(
11555             [[:blank:]\h]*
11556             (?(?®sub))
11557             [[:blank:]\h]*
11558             \,
11559             [[:blank:]\h]*
11560             (?:
11561             (?
11562             (?&word)
11563             )
11564             )
11565             [[:blank:]\h]*
11566             \)
11567             )
11568             (?(DEFINE)
11569             (?
11570             (?:
11571             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
11572             (?
11573             (?&stringcomp)
11574             )
11575             )
11576             )
11577             |
11578             (?:
11579             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
11580             (?
11581             (?&integercomp)
11582             )
11583             )
11584             )
11585             |
11586             (?:
11587             (?:(?<=\W)|(?<=^)|(?<=\A))
11588             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
11589             [[:blank:]\h]+
11590             (? (?&word_lax) )
11591             )
11592             |
11593             (?:
11594             (? (?&word_lax) )
11595             [[:blank:]\h]+
11596             (?:
11597             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
11598             |
11599             (?:
11600             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
11601             )
11602             )
11603             [[:blank:]\h]+
11604             (? (?&word_lax) )
11605             )
11606             |
11607             (?:
11608             (? (?&word) )
11609             [[:blank:]\h]+
11610             \-?in
11611             [[:blank:]\h]+
11612             (? (?&listfunc) )
11613             )
11614             |
11615             (?:
11616             (? (?&word) )
11617             [[:blank:]\h]+
11618             (? [\=|\!]\~ )
11619             [[:blank:]\h]+
11620             $Regexp::Common::Apache2::REGEXP->{regex}
11621             )
11622             |
11623             (?:
11624             (? (?&word) )
11625             [[:blank:]\h]+
11626             \-?in
11627             [[:blank:]\h]+
11628             \{
11629             [[:blank:]\h]*
11630             (? (?&list) )
11631             [[:blank:]\h]*
11632             \}
11633             )
11634             )
11635             (?
11636             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
11637             |
11638             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
11639             |
11640             (?:
11641             \![[:blank:]\h]*
11642             (? (?-2) )
11643             )
11644             |
11645             (?:
11646             \(
11647             [[:blank:]\h]*
11648             (? (?&cond) )
11649             [[:blank:]\h]*
11650             \)
11651             )
11652             |
11653             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
11654             (?(?&comp))
11655             )
11656             |
11657             (?:
11658             (?(?=(?:.+?)\&\&(?:.+?))
11659             (? (?: (?-2) )+ )
11660             [[:blank:]\h]*
11661             \&\&
11662             [[:blank:]\h]*
11663             (? (?: (?-2) )+ )
11664             )
11665             )
11666             |
11667             (?:
11668             (?(?=(?:.+?)\|\|(?:.+?))
11669             (? (?: (?-2) )+ )
11670             [[:blank:]\h]*
11671             \|\|
11672             [[:blank:]\h]*
11673             (? (?: (?-2) )+ )
11674             )
11675             )
11676             )
11677             (?
11678             (?:
11679             (?!\bv\()(?[a-zA-Z]\w*)
11680             \(
11681             [[:blank:]\h]*
11682             (?
11683             (?> (?&func_words) )?
11684             )
11685             [[:blank:]\h]*
11686             \)
11687             )
11688             |
11689             (?:
11690             ( # paren group 1 (full function)
11691             (?!\bv\() # Take care to avoid catching modern-style variable v()
11692             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
11693             (? # paren group 2 (parens)
11694             \(
11695             (? # paren group 3 (contents of parens)
11696             (?:
11697             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11698             |
11699             (?&paren_group) # Recurse to named capture group
11700             )*
11701             )
11702             \)
11703             )
11704             )
11705             )
11706             )
11707             (?
11708             (?:
11709             (? (?&word) )
11710             )
11711             |
11712             (?:
11713             (?:
11714             (? (?&word) )
11715             [[:blank:]\h]*\,[[:blank:]\h]*
11716             (? (?&list) )
11717             )
11718             |
11719             (?:
11720             (?
11721             (?:
11722             (?&word)
11723             [[:blank:]\h]*\,[[:blank:]\h]*
11724             )*
11725             (?&word)
11726             )
11727             (?:
11728             [[:blank:]\h]*\,[[:blank:]\h]*
11729             (? (?&word) )
11730             )?
11731             )
11732             )
11733             )
11734             (?
11735             (?:
11736             (?(?&word))
11737             [[:blank:]\h]+
11738             \-?(? (?:eq|ne|lt|le|gt|ge) )
11739             [[:blank:]\h]+
11740             (?(?&word))
11741             )
11742             )
11743             (?
11744             \bjoin\(
11745             [[:blank:]\h]*
11746             (?:
11747             (?:
11748             (? (?&list) )
11749             [[:blank:]]*\,[[:blank:]]*
11750             (? (?&word) )
11751             )
11752             |
11753             (? (?&list) )
11754             )
11755             [[:blank:]\h]*
11756             \)
11757             )
11758             (?
11759             (?:
11760             \{
11761             [[:blank:]\h]*
11762             (?(?&words))
11763             [[:blank:]\h]*
11764             \}
11765             )
11766             |
11767             (?:
11768             \(
11769             [[:blank:]\h]*
11770             (? (?&list) )
11771             [[:blank:]\h]*
11772             \)
11773             )
11774             |
11775             (?:
11776             (?(?&listfunc))
11777             )
11778             |
11779             (?:
11780             (?(?=\bsplit\()
11781             (?(?&split))
11782             )
11783             )
11784             )
11785             (?
11786             (?:
11787             (?!\bv\()(?[a-zA-Z]\w*)
11788             \(
11789             [[:blank:]\h]*
11790             (?
11791             (?> (?&func_words) )?
11792             )
11793             [[:blank:]\h]*
11794             \)
11795             )
11796             |
11797             (?:
11798             ( # paren group 1 (full function)
11799             (?!\bv\() # Take care to avoid catching modern-style variable v()
11800             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
11801             (? # paren group 2 (parens)
11802             \(
11803             (? # paren group 3 (contents of parens)
11804             (?:
11805             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11806             |
11807             (?&paren_group) # Recurse to named capture group
11808             )*
11809             )
11810             \)
11811             )
11812             )
11813             )
11814             )
11815             (?
11816             (?:
11817             $Regexp::Common::Apache2::REGEXP->{regex}
11818             |
11819             (?:
11820             (? (?®sub) )
11821             )
11822             )
11823             )
11824             (?
11825             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
11826             |
11827             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
11828             )
11829             (?
11830             s(?${REGSEP})
11831             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11832             \g{regsep}
11833             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11834             \g{regsep}
11835             (?${REGFLAGS})?
11836             )
11837             (?
11838             split\(
11839             [[:blank:]\h]*
11840             (?(?®any))
11841             [[:blank:]\h]*\,[[:blank:]\h]*
11842             (?:
11843             (?:
11844             (? (?&word) )
11845             )
11846             |
11847             (?:
11848             (? (?&list) )
11849             )
11850             )
11851             [[:blank:]\h]*
11852             \)
11853             )
11854             (?
11855             (?:
11856             (?: (?&substring) )
11857             )
11858             |
11859             (?:
11860             (?: (?&substring)[[:blank:]\h]+(?&string) )
11861             )
11862             )
11863             (?
11864             (?:
11865             (?(?&word))
11866             [[:blank:]\h]+
11867             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
11868             [[:blank:]\h]+
11869             (?(?&word))
11870             )
11871             )
11872             (?
11873             \bsub\(
11874             [[:blank:]\h]*
11875             (?(?=(?:[s]${REGSEP}))
11876             (? (?®sub) )
11877             )
11878             [[:blank:]\h]*
11879             \,
11880             [[:blank:]\h]*
11881             (?
11882             (? (?>(?&word)) )
11883             )
11884             [[:blank:]\h]*
11885             \)
11886             )
11887             (?
11888             (?:
11889             (?$Regexp::Common::Apache2::REGEXP->{cstring})
11890             )
11891             |
11892             (?:
11893             (? (?&variable) )
11894             )
11895             )
11896             (?
11897             (?:
11898             \%\{
11899             (?:
11900             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
11901             )
11902             \}
11903             )
11904             |
11905             (?:
11906             \%\{
11907             (?:
11908             (?${VARNAME})
11909             )
11910             \}
11911             )
11912             |
11913             (?:
11914             \bv\(
11915             [[:blank:]\h]*
11916             (?["'])
11917             (?:
11918             (?${VARNAME})
11919             )
11920             [[:blank:]\h]*
11921             \g{var_quote}
11922             \)
11923             )
11924             |
11925             (?:
11926             (?:^|\A|(?
11927             (?
11928             \$(?\{)?
11929             (?${DIGIT})
11930             (?()\})
11931             )
11932             )
11933             |
11934             (?:
11935             \%\{\:
11936             (?:
11937             (? (?&word) )
11938             )
11939             \:\}
11940             )
11941             |
11942             (?:
11943             \%\{\:
11944             (?:
11945             (? (?&cond) )
11946             )
11947             \:\}
11948             )
11949             )
11950             (?
11951             (?:
11952             (?
11953             (?$IPv4)
11954             |
11955             (?$IPv6)
11956             )
11957             )
11958             |
11959             (?:
11960             (? $Regexp::Common::Apache2::REGEXP->{digits} )
11961             )
11962             |
11963             (?:
11964             (?['"])
11965             (?:
11966             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11967             )
11968             \g{word_quote}
11969             )
11970             |
11971             (?:
11972             (?['"])
11973             (?:
11974             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11975             )
11976             \g{word_quote}
11977             )
11978             |
11979             (?:
11980             \(
11981             [[:blank:]\h]*
11982             (? (?&word_lax) )
11983             [[:blank:]\h]*
11984             \)
11985             )
11986             |
11987             (?:
11988             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
11989             (?
11990             (?: (?: (?-2)\. )+ (?-2) )
11991             )
11992             )
11993             )
11994             |
11995             (?:
11996             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11997             )
11998             |
11999             (?:
12000             (?(?&variable))
12001             )
12002             |
12003             (?:
12004             (?(?=\bsub\b\()
12005             (? (?&sub_recur) )
12006             )
12007             )
12008             |
12009             (?:
12010             (?(?=\bjoin\b\()
12011             (? (?&join) )
12012             )
12013             )
12014             |
12015             (?:
12016             (? (?&function) )
12017             )
12018             |
12019             (?:
12020             (? $Regexp::Common::Apache2::TRUNK->{regex} )
12021             )
12022             )
12023             (?
12024             (?:
12025             (?
12026             (?$IPv4)
12027             |
12028             (?$IPv6)
12029             )
12030             )
12031             |
12032             (?:
12033             (? $Regexp::Common::Apache2::REGEXP->{digits} )
12034             )
12035             |
12036             (?:
12037             (?['"])
12038             (?:
12039             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12040             )
12041             \g{word_quote}
12042             )
12043             |
12044             (?:
12045             (?['"])
12046             (?:
12047             (? (?&string) )
12048             )
12049             \g{word_quote}
12050             )
12051             |
12052             (?:
12053             \(
12054             [[:blank:]\h]*
12055             (? (?-2) )
12056             [[:blank:]\h]*
12057             \)
12058             )
12059             |
12060             (?:
12061             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
12062             (?
12063             (?: (?: (?-2)\. )+ (?-2) )
12064             )
12065             )
12066             )
12067             |
12068             (?:
12069             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
12070             )
12071             |
12072             (?:
12073             (?(?&variable))
12074             )
12075             |
12076             (?:
12077             (?(?=\bsub\b\()
12078             (? (?&sub_recur) )
12079             )
12080             )
12081             |
12082             (?:
12083             (?(?=\bjoin\b\()
12084             (? (?&join) )
12085             )
12086             )
12087             |
12088             (?:
12089             (? (?&function) )
12090             )
12091             |
12092             (?:
12093             (? $Regexp::Common::Apache2::TRUNK->{regex} )
12094             )
12095             )
12096             (?
12097             (?:
12098             [[:blank:]\h]*\K
12099             (? (?&word) )
12100             [[:blank:]\h]*\,[[:blank:]\h]*
12101             (? (?&list) )
12102             )
12103             |
12104             (?:
12105             [[:blank:]\h]*\K
12106             (?
12107             (?:
12108             (?&word)
12109             [[:blank:]\h]*\,[[:blank:]\h]*
12110             )*
12111             (?&word)
12112             )
12113             (?:
12114             [[:blank:]\h]*\,[[:blank:]\h]*
12115             (? (?&word) )
12116             )?
12117             )
12118             |
12119             (?:
12120             [[:blank:]\h]*\K
12121             (? (?&word) )
12122             )
12123             )
12124             )
12125             /x;
12126              
12127             ## cstring
12128             ## | variable
12129 28         1013121 $TRUNK->{substring} = qr/
12130             (?
12131             (?:$Regexp::Common::Apache2::TRUNK->{cstring})
12132             |
12133             (?:
12134             (? (?&variable) )
12135             )
12136             )
12137             (?(DEFINE)
12138             (?
12139             (?:
12140             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
12141             (?
12142             (?&stringcomp)
12143             )
12144             )
12145             )
12146             |
12147             (?:
12148             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
12149             (?
12150             (?&integercomp)
12151             )
12152             )
12153             )
12154             |
12155             (?:
12156             (?:(?<=\W)|(?<=^)|(?<=\A))
12157             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
12158             [[:blank:]\h]+
12159             (? (?&word_lax) )
12160             )
12161             |
12162             (?:
12163             (? (?&word_lax) )
12164             [[:blank:]\h]+
12165             (?:
12166             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
12167             |
12168             (?:
12169             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
12170             )
12171             )
12172             [[:blank:]\h]+
12173             (? (?&word_lax) )
12174             )
12175             |
12176             (?:
12177             (? (?&word) )
12178             [[:blank:]\h]+
12179             \-?in
12180             [[:blank:]\h]+
12181             (? (?&listfunc) )
12182             )
12183             |
12184             (?:
12185             (? (?&word) )
12186             [[:blank:]\h]+
12187             (? [\=|\!]\~ )
12188             [[:blank:]\h]+
12189             $Regexp::Common::Apache2::REGEXP->{regex}
12190             )
12191             |
12192             (?:
12193             (? (?&word) )
12194             [[:blank:]\h]+
12195             \-?in
12196             [[:blank:]\h]+
12197             \{
12198             [[:blank:]\h]*
12199             (? (?&list) )
12200             [[:blank:]\h]*
12201             \}
12202             )
12203             )
12204             (?
12205             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
12206             |
12207             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
12208             |
12209             (?:
12210             \![[:blank:]\h]*
12211             (? (?-2) )
12212             )
12213             |
12214             (?:
12215             \(
12216             [[:blank:]\h]*
12217             (? (?&cond) )
12218             [[:blank:]\h]*
12219             \)
12220             )
12221             |
12222             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
12223             (?(?&comp))
12224             )
12225             |
12226             (?:
12227             (?(?=(?:.+?)\&\&(?:.+?))
12228             (? (?: (?-2) )+ )
12229             [[:blank:]\h]*
12230             \&\&
12231             [[:blank:]\h]*
12232             (? (?: (?-2) )+ )
12233             )
12234             )
12235             |
12236             (?:
12237             (?(?=(?:.+?)\|\|(?:.+?))
12238             (? (?: (?-2) )+ )
12239             [[:blank:]\h]*
12240             \|\|
12241             [[:blank:]\h]*
12242             (? (?: (?-2) )+ )
12243             )
12244             )
12245             )
12246             (?
12247             (?:
12248             (?!\bv\()(?[a-zA-Z]\w*)
12249             \(
12250             [[:blank:]\h]*
12251             (?
12252             (?> (?&func_words) )?
12253             )
12254             [[:blank:]\h]*
12255             \)
12256             )
12257             |
12258             (?:
12259             ( # paren group 1 (full function)
12260             (?!\bv\() # Take care to avoid catching modern-style variable v()
12261             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
12262             (? # paren group 2 (parens)
12263             \(
12264             (? # paren group 3 (contents of parens)
12265             (?:
12266             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12267             |
12268             (?&paren_group) # Recurse to named capture group
12269             )*
12270             )
12271             \)
12272             )
12273             )
12274             )
12275             )
12276             (?
12277             (?:
12278             (? (?&word) )
12279             )
12280             |
12281             (?:
12282             (?:
12283             (? (?&word) )
12284             [[:blank:]\h]*\,[[:blank:]\h]*
12285             (? (?&list) )
12286             )
12287             |
12288             (?:
12289             (?
12290             (?:
12291             (?&word)
12292             [[:blank:]\h]*\,[[:blank:]\h]*
12293             )*
12294             (?&word)
12295             )
12296             (?:
12297             [[:blank:]\h]*\,[[:blank:]\h]*
12298             (? (?&word) )
12299             )?
12300             )
12301             )
12302             )
12303             (?
12304             (?:
12305             (?(?&word))
12306             [[:blank:]\h]+
12307             \-?(? (?:eq|ne|lt|le|gt|ge) )
12308             [[:blank:]\h]+
12309             (?(?&word))
12310             )
12311             )
12312             (?
12313             \bjoin\(
12314             [[:blank:]\h]*
12315             (?:
12316             (?:
12317             (? (?&list) )
12318             [[:blank:]]*\,[[:blank:]]*
12319             (? (?&word) )
12320             )
12321             |
12322             (? (?&list) )
12323             )
12324             [[:blank:]\h]*
12325             \)
12326             )
12327             (?
12328             (?:
12329             \{
12330             [[:blank:]\h]*
12331             (?(?&words))
12332             [[:blank:]\h]*
12333             \}
12334             )
12335             |
12336             (?:
12337             \(
12338             [[:blank:]\h]*
12339             (? (?&list) )
12340             [[:blank:]\h]*
12341             \)
12342             )
12343             |
12344             (?:
12345             (?(?&listfunc))
12346             )
12347             |
12348             (?:
12349             (?(?=\bsplit\()
12350             (?(?&split))
12351             )
12352             )
12353             )
12354             (?
12355             (?:
12356             (?!\bv\()(?[a-zA-Z]\w*)
12357             \(
12358             [[:blank:]\h]*
12359             (?
12360             (?> (?&func_words) )?
12361             )
12362             [[:blank:]\h]*
12363             \)
12364             )
12365             |
12366             (?:
12367             ( # paren group 1 (full function)
12368             (?!\bv\() # Take care to avoid catching modern-style variable v()
12369             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
12370             (? # paren group 2 (parens)
12371             \(
12372             (? # paren group 3 (contents of parens)
12373             (?:
12374             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12375             |
12376             (?&paren_group) # Recurse to named capture group
12377             )*
12378             )
12379             \)
12380             )
12381             )
12382             )
12383             )
12384             (?
12385             (?:
12386             $Regexp::Common::Apache2::REGEXP->{regex}
12387             |
12388             (?:
12389             (? (?®sub) )
12390             )
12391             )
12392             )
12393             (?
12394             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
12395             |
12396             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
12397             )
12398             (?
12399             s(?${REGSEP})
12400             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
12401             \g{regsep}
12402             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
12403             \g{regsep}
12404             (?${REGFLAGS})?
12405             )
12406             (?
12407             split\(
12408             [[:blank:]\h]*
12409             (?(?®any))
12410             [[:blank:]\h]*\,[[:blank:]\h]*
12411             (?:
12412             (?:
12413             (? (?&word) )
12414             )
12415             |
12416             (?:
12417             (? (?&list) )
12418             )
12419             )
12420             [[:blank:]\h]*
12421             \)
12422             )
12423             (?
12424             (?:
12425             (?:(?-1)[[:blank:]\h]+(?&substring_recur))
12426             )
12427             |
12428             (?:
12429             (?: (?&substring_recur) )
12430             )
12431             )
12432             (?
12433             (?:
12434             (?(?&word))
12435             [[:blank:]\h]+
12436             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
12437             [[:blank:]\h]+
12438             (?(?&word))
12439             )
12440             )
12441             (?
12442             \bsub\(
12443             [[:blank:]\h]*
12444             (?(?=(?:[s]${REGSEP}))
12445             (? (?®sub) )
12446             )
12447             [[:blank:]\h]*
12448             \,
12449             [[:blank:]\h]*
12450             (?
12451             (? (?>(?&word)) )
12452             )
12453             [[:blank:]\h]*
12454             \)
12455             )
12456             (?
12457             (?:
12458             (?$Regexp::Common::Apache2::REGEXP->{cstring})
12459             )
12460             |
12461             (?:
12462             (? (?&variable) )
12463             )
12464             )
12465             (?
12466             (?:
12467             \%\{
12468             (?:
12469             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
12470             )
12471             \}
12472             )
12473             |
12474             (?:
12475             \%\{
12476             (?:
12477             (?${VARNAME})
12478             )
12479             \}
12480             )
12481             |
12482             (?:
12483             \bv\(
12484             [[:blank:]\h]*
12485             (?["'])
12486             (?:
12487             (?${VARNAME})
12488             )
12489             [[:blank:]\h]*
12490             \g{var_quote}
12491             \)
12492             )
12493             |
12494             (?:
12495             (?:^|\A|(?
12496             (?
12497             \$(?\{)?
12498             (?${DIGIT})
12499             (?()\})
12500             )
12501             )
12502             |
12503             (?:
12504             \%\{\:
12505             (?:
12506             (? (?&word) )
12507             )
12508             \:\}
12509             )
12510             |
12511             (?:
12512             \%\{\:
12513             (?:
12514             (? (?&cond) )
12515             )
12516             \:\}
12517             )
12518             )
12519             (?
12520             (?:
12521             (?
12522             (?$IPv4)
12523             |
12524             (?$IPv6)
12525             )
12526             )
12527             |
12528             (?:
12529             (? $Regexp::Common::Apache2::REGEXP->{digits} )
12530             )
12531             |
12532             (?:
12533             (?['"])
12534             (?:
12535             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12536             )
12537             \g{word_quote}
12538             )
12539             |
12540             (?:
12541             (?['"])
12542             (?:
12543             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12544             )
12545             \g{word_quote}
12546             )
12547             |
12548             (?:
12549             \(
12550             [[:blank:]\h]*
12551             (? (?&word_lax) )
12552             [[:blank:]\h]*
12553             \)
12554             )
12555             |
12556             (?:
12557             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
12558             (?
12559             (?: (?: (?-2)\. )+ (?-2) )
12560             )
12561             )
12562             )
12563             |
12564             (?:
12565             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
12566             )
12567             |
12568             (?:
12569             (?(?&variable))
12570             )
12571             |
12572             (?:
12573             (?(?=\bsub\b\()
12574             (? (?&sub) )
12575             )
12576             )
12577             |
12578             (?:
12579             (?(?=\bjoin\b\()
12580             (? (?&join) )
12581             )
12582             )
12583             |
12584             (?:
12585             (? (?&function) )
12586             )
12587             |
12588             (?:
12589             (? $Regexp::Common::Apache2::TRUNK->{regex} )
12590             )
12591             )
12592             (?
12593             (?:
12594             (?
12595             (?$IPv4)
12596             |
12597             (?$IPv6)
12598             )
12599             )
12600             |
12601             (?:
12602             (? $Regexp::Common::Apache2::REGEXP->{digits} )
12603             )
12604             |
12605             (?:
12606             (?['"])
12607             (?:
12608             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12609             )
12610             \g{word_quote}
12611             )
12612             |
12613             (?:
12614             (?['"])
12615             (?:
12616             (? (?&string) )
12617             )
12618             \g{word_quote}
12619             )
12620             |
12621             (?:
12622             \(
12623             [[:blank:]\h]*
12624             (? (?-2) )
12625             [[:blank:]\h]*
12626             \)
12627             )
12628             |
12629             (?:
12630             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
12631             (?
12632             (?: (?: (?-2)\. )+ (?-2) )
12633             )
12634             )
12635             )
12636             |
12637             (?:
12638             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
12639             )
12640             |
12641             (?:
12642             (?(?&variable))
12643             )
12644             |
12645             (?:
12646             (?(?=\bsub\b\()
12647             (? (?&sub) )
12648             )
12649             )
12650             |
12651             (?:
12652             (?(?=\bjoin\b\()
12653             (? (?&join) )
12654             )
12655             )
12656             |
12657             (?:
12658             (? (?&function) )
12659             )
12660             |
12661             (?:
12662             (? $Regexp::Common::Apache2::TRUNK->{regex} )
12663             )
12664             )
12665             (?
12666             (?:
12667             [[:blank:]\h]*\K
12668             (? (?&word) )
12669             [[:blank:]\h]*\,[[:blank:]\h]*
12670             (? (?&list) )
12671             )
12672             |
12673             (?:
12674             [[:blank:]\h]*\K
12675             (?
12676             (?:
12677             (?&word)
12678             [[:blank:]\h]*\,[[:blank:]\h]*
12679             )*
12680             (?&word)
12681             )
12682             (?:
12683             [[:blank:]\h]*\,[[:blank:]\h]*
12684             (? (?&word) )
12685             )?
12686             )
12687             |
12688             (?:
12689             [[:blank:]\h]*\K
12690             (? (?&word) )
12691             )
12692             )
12693             )
12694             /x;
12695              
12696             ## "%{" varname "}"
12697             ## | "%{" funcname ":" funcargs "}"
12698             ## | "%{:" word ":}"
12699             ## | "%{:" cond ":}"
12700             ## | rebackref
12701 28         1337771 $TRUNK->{variable} = qr/
12702             (?
12703             (?:
12704             (?:^|\A|(?
12705             (?:
12706             (?(?${FUNCNAME})\:(?(?>\\\}|[^\}])*+))
12707             )
12708             \}
12709             )
12710             |
12711             (?:
12712             (?:^|\A|(?
12713             (?:
12714             (?${VARNAME})
12715             )
12716             \}
12717             )
12718             |
12719             (?:
12720             \bv\(
12721             [[:blank:]\h]*
12722             (?["'])
12723             (?:
12724             (?${VARNAME})
12725             )
12726             [[:blank:]\h]*
12727             \g{var_quote}
12728             \)
12729             )
12730             |
12731             (?:
12732             (?:^|\A|(?
12733             (?
12734             \$(?\{)?
12735             (?${DIGIT})
12736             (?()\})
12737             )
12738             )
12739             |
12740             (?:
12741             (?:^|\A|(?
12742             (?(?=(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))
12743             (? (?&word) )
12744             )
12745             \:\}
12746             )
12747             |
12748             (?:
12749             (?:^|\A|(?
12750             (?:
12751             (?(?&cond))
12752             )
12753             \:\}
12754             )
12755             )
12756             (?(DEFINE)
12757             (?
12758             (?:
12759             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
12760             (?
12761             (?&stringcomp)
12762             )
12763             )
12764             )
12765             |
12766             (?:
12767             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
12768             (?
12769             (?&integercomp)
12770             )
12771             )
12772             )
12773             |
12774             (?:
12775             (?:(?<=\W)|(?<=^)|(?<=\A))
12776             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
12777             [[:blank:]\h]+
12778             (? (?&word_lax) )
12779             )
12780             |
12781             (?:
12782             (? (?&word_lax) )
12783             [[:blank:]\h]+
12784             (?:
12785             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
12786             |
12787             (?:
12788             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
12789             )
12790             )
12791             [[:blank:]\h]+
12792             (? (?&word_lax) )
12793             )
12794             |
12795             (?:
12796             (? (?&word) )
12797             [[:blank:]\h]+
12798             \-?in
12799             [[:blank:]\h]+
12800             (? (?&listfunc) )
12801             )
12802             |
12803             (?:
12804             (? (?&word) )
12805             [[:blank:]\h]+
12806             (? [\=|\!]\~ )
12807             [[:blank:]\h]+
12808             $Regexp::Common::Apache2::REGEXP->{regex}
12809             )
12810             |
12811             (?:
12812             (? (?&word) )
12813             [[:blank:]\h]+
12814             \-?in
12815             [[:blank:]\h]+
12816             \{
12817             [[:blank:]\h]*
12818             (? (?&list) )
12819             [[:blank:]\h]*
12820             \}
12821             )
12822             )
12823             (?
12824             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
12825             |
12826             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
12827             |
12828             (?:
12829             \![[:blank:]\h]*
12830             (? (?-2) )
12831             )
12832             |
12833             (?:
12834             \(
12835             [[:blank:]\h]*
12836             (? (?&cond) )
12837             [[:blank:]\h]*
12838             \)
12839             )
12840             |
12841             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
12842             (?(?&comp))
12843             )
12844             |
12845             (?:
12846             (?(?=(?:.+?)\&\&(?:.+?))
12847             (? (?: (?-2) )+ )
12848             [[:blank:]\h]*
12849             \&\&
12850             [[:blank:]\h]*
12851             (? (?: (?-2) )+ )
12852             )
12853             )
12854             |
12855             (?:
12856             (?(?=(?:.+?)\|\|(?:.+?))
12857             (? (?: (?-2) )+ )
12858             [[:blank:]\h]*
12859             \|\|
12860             [[:blank:]\h]*
12861             (? (?: (?-2) )+ )
12862             )
12863             )
12864             )
12865             (?
12866             (?:
12867             (?!\bv\()(?[a-zA-Z]\w*)
12868             \(
12869             [[:blank:]\h]*
12870             (?
12871             (?> (?&func_words) )?
12872             )
12873             [[:blank:]\h]*
12874             \)
12875             )
12876             |
12877             (?:
12878             ( # paren group 1 (full function)
12879             (?!\bv\() # Take care to avoid catching modern-style variable v()
12880             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
12881             (? # paren group 2 (parens)
12882             \(
12883             (? # paren group 3 (contents of parens)
12884             (?:
12885             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12886             |
12887             (?&paren_group) # Recurse to named capture group
12888             )*
12889             )
12890             \)
12891             )
12892             )
12893             )
12894             )
12895             (?
12896             (?:
12897             (? (?&word) )
12898             )
12899             |
12900             (?:
12901             (?:
12902             (? (?&word) )
12903             [[:blank:]\h]*\,[[:blank:]\h]*
12904             (? (?&list) )
12905             )
12906             |
12907             (?:
12908             (?
12909             (?:
12910             (?&word)
12911             [[:blank:]\h]*\,[[:blank:]\h]*
12912             )*
12913             (?&word)
12914             )
12915             (?:
12916             [[:blank:]\h]*\,[[:blank:]\h]*
12917             (? (?&word) )
12918             )?
12919             )
12920             )
12921             )
12922             (?
12923             (?:
12924             (?(?&word))
12925             [[:blank:]\h]+
12926             \-?(? (?:eq|ne|lt|le|gt|ge) )
12927             [[:blank:]\h]+
12928             (?(?&word))
12929             )
12930             )
12931             (?
12932             \bjoin\(
12933             [[:blank:]\h]*
12934             (?:
12935             (?:
12936             (? (?&list) )
12937             [[:blank:]]*\,[[:blank:]]*
12938             (? (?&word) )
12939             )
12940             |
12941             (? (?&list) )
12942             )
12943             [[:blank:]\h]*
12944             \)
12945             )
12946             (?
12947             (?:
12948             \{
12949             [[:blank:]\h]*
12950             (?(?&words))
12951             [[:blank:]\h]*
12952             \}
12953             )
12954             |
12955             (?:
12956             \(
12957             [[:blank:]\h]*
12958             (? (?&list) )
12959             [[:blank:]\h]*
12960             \)
12961             )
12962             |
12963             (?:
12964             (?(?&listfunc))
12965             )
12966             |
12967             (?:
12968             (?(?=\bsplit\()
12969             (?(?&split))
12970             )
12971             )
12972             )
12973             (?
12974             (?:
12975             (?!\bv\()(?[a-zA-Z]\w*)
12976             \(
12977             [[:blank:]\h]*
12978             (?
12979             (?> (?&func_words) )?
12980             )
12981             [[:blank:]\h]*
12982             \)
12983             )
12984             |
12985             (?:
12986             ( # paren group 1 (full function)
12987             (?!\bv\() # Take care to avoid catching modern-style variable v()
12988             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
12989             (? # paren group 2 (parens)
12990             \(
12991             (? # paren group 3 (contents of parens)
12992             (?:
12993             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12994             |
12995             (?&paren_group) # Recurse to named capture group
12996             )*
12997             )
12998             \)
12999             )
13000             )
13001             )
13002             )
13003             (?
13004             (?:
13005             $Regexp::Common::Apache2::REGEXP->{regex}
13006             |
13007             (?:
13008             (? (?®sub) )
13009             )
13010             )
13011             )
13012             (?
13013             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
13014             |
13015             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
13016             )
13017             (?
13018             s(?${REGSEP})
13019             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
13020             \g{regsep}
13021             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
13022             \g{regsep}
13023             (?${REGFLAGS})?
13024             )
13025             (?
13026             split\(
13027             [[:blank:]\h]*
13028             (?(?®any))
13029             [[:blank:]\h]*\,[[:blank:]\h]*
13030             (?:
13031             (?:
13032             (? (?&word) )
13033             )
13034             |
13035             (?:
13036             (? (?&list) )
13037             )
13038             )
13039             [[:blank:]\h]*
13040             \)
13041             )
13042             (?
13043             (?:
13044             (?: (?&substring) )
13045             )
13046             |
13047             (?:
13048             (?: (?&substring)[[:blank:]\h]+(?&string) )
13049             )
13050             )
13051             (?
13052             (?:
13053             (?$Regexp::Common::Apache2::REGEXP->{cstring})
13054             )
13055             |
13056             (?:
13057             (? (?&variable_recur) )
13058             )
13059             )
13060             (?
13061             (?:
13062             (?(?&word))
13063             [[:blank:]\h]+
13064             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
13065             [[:blank:]\h]+
13066             (?(?&word))
13067             )
13068             )
13069             (?
13070             \bsub\(
13071             [[:blank:]\h]*
13072             (?(?=(?:[s]${REGSEP}))
13073             (? (?®sub) )
13074             )
13075             [[:blank:]\h]*
13076             \,
13077             [[:blank:]\h]*
13078             (?
13079             (? (?>(?&word)) )
13080             )
13081             [[:blank:]\h]*
13082             \)
13083             )
13084             (?
13085             (?:
13086             \%\{
13087             (?:
13088             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
13089             )
13090             \}
13091             )
13092             |
13093             (?:
13094             \%\{
13095             (?:
13096             (?${VARNAME})
13097             )
13098             \}
13099             )
13100             |
13101             (?:
13102             \bv\(
13103             [[:blank:]\h]*
13104             (?["'])
13105             (?:
13106             (?${VARNAME})
13107             )
13108             [[:blank:]\h]*
13109             \g{var_quote}
13110             \)
13111             )
13112             |
13113             (?:
13114             (?:^|\A|(?
13115             (?
13116             \$(?\{)?
13117             (?${DIGIT})
13118             (?()\})
13119             )
13120             )
13121             |
13122             (?:
13123             \%\{\:
13124             (?:
13125             (? (?&word) )
13126             )
13127             \:\}
13128             )
13129             |
13130             (?:
13131             \%\{\:
13132             (?:
13133             (? (?&cond) )
13134             )
13135             \:\}
13136             )
13137             )
13138             (?
13139             (?:
13140             (?
13141             (?$IPv4)
13142             |
13143             (?$IPv6)
13144             )
13145             )
13146             |
13147             (?:
13148             (? $Regexp::Common::Apache2::REGEXP->{digits} )
13149             )
13150             |
13151             (?:
13152             (?['"])
13153             (?:
13154             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13155             )
13156             \g{word_quote}
13157             )
13158             |
13159             (?:
13160             (?['"])
13161             (?:
13162             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13163             )
13164             \g{word_quote}
13165             )
13166             |
13167             (?:
13168             \(
13169             [[:blank:]\h]*
13170             (? (?&word_lax) )
13171             [[:blank:]\h]*
13172             \)
13173             )
13174             |
13175             (?:
13176             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
13177             (?
13178             (?: (?: (?-2)\. )+ (?-2) )
13179             )
13180             )
13181             )
13182             |
13183             (?:
13184             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13185             )
13186             |
13187             (?:
13188             (?(?&variable_recur))
13189             )
13190             |
13191             (?:
13192             (?(?=\bsub\b\()
13193             (? (?&sub) )
13194             )
13195             )
13196             |
13197             (?:
13198             (?(?=\bjoin\b\()
13199             (? (?&join) )
13200             )
13201             )
13202             |
13203             (?:
13204             (? (?&function) )
13205             )
13206             |
13207             (?:
13208             (? $Regexp::Common::Apache2::TRUNK->{regex} )
13209             )
13210             )
13211             (?
13212             (?:
13213             (?
13214             (?$IPv4)
13215             |
13216             (?$IPv6)
13217             )
13218             )
13219             |
13220             (?:
13221             (? $Regexp::Common::Apache2::REGEXP->{digits} )
13222             )
13223             |
13224             (?:
13225             (?['"])
13226             (?:
13227             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13228             )
13229             \g{word_quote}
13230             )
13231             |
13232             (?:
13233             (?['"])
13234             (?:
13235             (? (?&string) )
13236             )
13237             \g{word_quote}
13238             )
13239             |
13240             (?:
13241             \(
13242             [[:blank:]\h]*
13243             (? (?-2) )
13244             [[:blank:]\h]*
13245             \)
13246             )
13247             |
13248             (?:
13249             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
13250             (?
13251             (?: (?: (?-2)\. )+ (?-2) )
13252             )
13253             )
13254             )
13255             |
13256             (?:
13257             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13258             )
13259             |
13260             (?:
13261             (?(?&variable_recur))
13262             )
13263             |
13264             (?:
13265             (?(?=\bsub\b\()
13266             (? (?&sub) )
13267             )
13268             )
13269             |
13270             (?:
13271             (?(?=\bjoin\b\()
13272             (? (?&join) )
13273             )
13274             )
13275             |
13276             (?:
13277             (? (?&function) )
13278             )
13279             |
13280             (?:
13281             (? $Regexp::Common::Apache2::TRUNK->{regex} )
13282             )
13283             )
13284             (?
13285             (?:
13286             [[:blank:]\h]*\K
13287             (? (?&word) )
13288             [[:blank:]\h]*\,[[:blank:]\h]*
13289             (? (?&list) )
13290             )
13291             |
13292             (?:
13293             [[:blank:]\h]*\K
13294             (?
13295             (?:
13296             (?&word)
13297             [[:blank:]\h]*\,[[:blank:]\h]*
13298             )*
13299             (?&word)
13300             )
13301             (?:
13302             [[:blank:]\h]*\,[[:blank:]\h]*
13303             (? (?&word) )
13304             )?
13305             )
13306             |
13307             (?:
13308             [[:blank:]\h]*\K
13309             (? (?&word) )
13310             )
13311             )
13312             )
13313             /x;
13314              
13315             ## digits
13316             ## | "'" string "'"
13317             ## | '"' string '"'
13318             ## | word "." word
13319             ## | variable
13320             ## | sub
13321             ## | join
13322             ## | function
13323             ## | "(" word ")"
13324 28         1704937 $TRUNK->{word} = qr/
13325             (?
13326             (?:
13327             (?
13328             (?$IPv4)
13329             |
13330             (?$IPv6)
13331             )
13332             )
13333             |
13334             (?:
13335             (?$Regexp::Common::Apache2::TRUNK->{digits})
13336             )
13337             |
13338             (?:
13339             (?['"])
13340             (?:
13341             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13342             )
13343             \g{word_quote}
13344             )
13345             |
13346             (?:
13347             (?['"])
13348             (?:
13349             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13350             )
13351             \g{word_quote}
13352             )
13353             |
13354             (?:
13355             (?\()
13356             [[:blank:]\h]*
13357             (?(?&word_lax))
13358             [[:blank:]\h]*
13359             (?\))
13360             )
13361             |
13362             (?:
13363             (? (?: (?&word_recur)\. )+ (?&word_recur) )
13364             )
13365             |
13366             (?:
13367             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13368             )
13369             |
13370             (?:
13371             (?(?&variable))
13372             )
13373             |
13374             (?:
13375             (?(?&sub))
13376             )
13377             |
13378             (?:
13379             (?(?&join))
13380             )
13381             |
13382             (?:
13383             (?(?&function))
13384             )
13385             |
13386             (?:
13387             $Regexp::Common::Apache2::TRUNK->{regex}
13388             )
13389             )
13390             (?(DEFINE)
13391             (?
13392             (?:
13393             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
13394             (?
13395             (?&stringcomp)
13396             )
13397             )
13398             )
13399             |
13400             (?:
13401             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
13402             (?
13403             (?&integercomp)
13404             )
13405             )
13406             )
13407             |
13408             (?:
13409             (?:(?<=\W)|(?<=^)|(?<=\A))
13410             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
13411             [[:blank:]\h]+
13412             (? (?&word_lax) )
13413             )
13414             |
13415             (?:
13416             (? (?&word_lax) )
13417             [[:blank:]\h]+
13418             (?:
13419             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
13420             |
13421             (?:
13422             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
13423             )
13424             )
13425             [[:blank:]\h]+
13426             (? (?&word_lax) )
13427             )
13428             |
13429             (?:
13430             (? (?&word_recur) )
13431             [[:blank:]\h]+
13432             \-?in
13433             [[:blank:]\h]+
13434             (? (?&listfunc) )
13435             )
13436             |
13437             (?:
13438             (? (?&word_recur) )
13439             [[:blank:]\h]+
13440             (? [\=|\!]\~ )
13441             [[:blank:]\h]+
13442             $Regexp::Common::Apache2::REGEXP->{regex}
13443             )
13444             |
13445             (?:
13446             (? (?&word_recur) )
13447             [[:blank:]\h]+
13448             \-?in
13449             [[:blank:]\h]+
13450             \{
13451             [[:blank:]\h]*
13452             (? (?&list) )
13453             [[:blank:]\h]*
13454             \}
13455             )
13456             )
13457             (?
13458             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
13459             |
13460             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
13461             |
13462             (?:
13463             \![[:blank:]\h]*
13464             (? (?-2) )
13465             )
13466             |
13467             (?:
13468             \(
13469             [[:blank:]\h]*
13470             (? (?&cond) )
13471             [[:blank:]\h]*
13472             \)
13473             )
13474             |
13475             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
13476             (?(?&comp))
13477             )
13478             |
13479             (?:
13480             (?(?=(?:.+?)\&\&(?:.+?))
13481             (? (?: (?-2) )+ )
13482             [[:blank:]\h]*
13483             \&\&
13484             [[:blank:]\h]*
13485             (? (?: (?-2) )+ )
13486             )
13487             )
13488             |
13489             (?:
13490             (?(?=(?:.+?)\|\|(?:.+?))
13491             (? (?: (?-2) )+ )
13492             [[:blank:]\h]*
13493             \|\|
13494             [[:blank:]\h]*
13495             (? (?: (?-2) )+ )
13496             )
13497             )
13498             )
13499             (?
13500             (?:
13501             (?!\bv\()(?[a-zA-Z]\w*)
13502             \(
13503             [[:blank:]\h]*
13504             (?
13505             (?> (?&func_words) )?
13506             )
13507             [[:blank:]\h]*
13508             \)
13509             )
13510             |
13511             (?:
13512             ( # paren group 1 (full function)
13513             (?!\bv\() # Take care to avoid catching modern-style variable v()
13514             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
13515             (? # paren group 2 (parens)
13516             \(
13517             (? # paren group 3 (contents of parens)
13518             (?:
13519             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13520             |
13521             (?&paren_group) # Recurse to named capture group
13522             )*
13523             )
13524             \)
13525             )
13526             )
13527             )
13528             )
13529             (?
13530             (?:
13531             (? (?&word) )
13532             )
13533             |
13534             (?:
13535             (?:
13536             (? (?&word) )
13537             [[:blank:]\h]*\,[[:blank:]\h]*
13538             (? (?&list) )
13539             )
13540             |
13541             (?:
13542             (?
13543             (?:
13544             (?&word)
13545             [[:blank:]\h]*\,[[:blank:]\h]*
13546             )*
13547             (?&word)
13548             )
13549             (?:
13550             [[:blank:]\h]*\,[[:blank:]\h]*
13551             (? (?&word) )
13552             )?
13553             )
13554             )
13555             )
13556             (?
13557             (?:
13558             (?(?&word_recur))
13559             [[:blank:]\h]+
13560             \-?(? (?:eq|ne|lt|le|gt|ge) )
13561             [[:blank:]\h]+
13562             (?(?&word_recur))
13563             )
13564             )
13565             (?
13566             \bjoin\(
13567             [[:blank:]\h]*
13568             (?:
13569             (?:
13570             (? (?&list) )
13571             [[:blank:]]*\,[[:blank:]]*
13572             (? (?&word_recur) )
13573             )
13574             |
13575             (? (?&list) )
13576             )
13577             [[:blank:]\h]*
13578             \)
13579             )
13580             (?
13581             (?:
13582             \{
13583             [[:blank:]\h]*
13584             (?(?&words))
13585             [[:blank:]\h]*
13586             \}
13587             )
13588             |
13589             (?:
13590             \(
13591             [[:blank:]\h]*
13592             (? (?&list) )
13593             [[:blank:]\h]*
13594             \)
13595             )
13596             |
13597             (?:
13598             (?(?&listfunc))
13599             )
13600             |
13601             (?:
13602             (?(?=\bsplit\()
13603             (?(?&split))
13604             )
13605             )
13606             )
13607             (?
13608             (?:
13609             (?!\bv\()(?[a-zA-Z]\w*)
13610             \(
13611             [[:blank:]\h]*
13612             (?
13613             (?> (?&func_words) )?
13614             )
13615             [[:blank:]\h]*
13616             \)
13617             )
13618             |
13619             (?:
13620             ( # paren group 1 (full function)
13621             (?!\bv\() # Take care to avoid catching modern-style variable v()
13622             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
13623             (? # paren group 2 (parens)
13624             \(
13625             (? # paren group 3 (contents of parens)
13626             (?:
13627             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13628             |
13629             (?&paren_group) # Recurse to named capture group
13630             )*
13631             )
13632             \)
13633             )
13634             )
13635             )
13636             )
13637             (?
13638             (?:
13639             $Regexp::Common::Apache2::REGEXP->{regex}
13640             |
13641             (?:
13642             (? (?®sub) )
13643             )
13644             )
13645             )
13646             (?
13647             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
13648             |
13649             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
13650             )
13651             (?
13652             s(?${REGSEP})
13653             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
13654             \g{regsep}
13655             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
13656             \g{regsep}
13657             (?${REGFLAGS})?
13658             )
13659             (?
13660             split\(
13661             [[:blank:]\h]*
13662             (?(?®any))
13663             [[:blank:]\h]*\,[[:blank:]\h]*
13664             (?:
13665             (?:
13666             (? (?&word_recur) )
13667             )
13668             |
13669             (?:
13670             (? (?&list) )
13671             )
13672             )
13673             [[:blank:]\h]*
13674             \)
13675             )
13676             (?
13677             (?:
13678             (?: (?&substring) )
13679             )
13680             |
13681             (?:
13682             (?: (?&substring)[[:blank:]\h]+(?&string) )
13683             )
13684             )
13685             (?
13686             (?:
13687             (?(?&word_recur))
13688             [[:blank:]\h]+
13689             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
13690             [[:blank:]\h]+
13691             (?(?&word_recur))
13692             )
13693             )
13694             (?
13695             \bsub\(
13696             [[:blank:]\h]*
13697             (?(?=(?:[s]${REGSEP}))
13698             (? (?®sub) )
13699             )
13700             [[:blank:]\h]*
13701             \,
13702             [[:blank:]\h]*
13703             (?
13704             (? (?>(?&word_recur)) )
13705             )
13706             [[:blank:]\h]*
13707             \)
13708             )
13709             (?
13710             (?:
13711             (?$Regexp::Common::Apache2::REGEXP->{cstring})
13712             )
13713             |
13714             (?:
13715             (? (?&variable) )
13716             )
13717             )
13718             (?
13719             (?:
13720             \%\{
13721             (?:
13722             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
13723             )
13724             \}
13725             )
13726             |
13727             (?:
13728             \%\{
13729             (?:
13730             (?${VARNAME})
13731             )
13732             \}
13733             )
13734             |
13735             (?:
13736             \bv\(
13737             [[:blank:]\h]*
13738             (?["'])
13739             (?:
13740             (?${VARNAME})
13741             )
13742             [[:blank:]\h]*
13743             \g{var_quote}
13744             \)
13745             )
13746             |
13747             (?:
13748             (?:^|\A|(?
13749             (?
13750             \$(?\{)?
13751             (?${DIGIT})
13752             (?()\})
13753             )
13754             )
13755             |
13756             (?:
13757             \%\{\:
13758             (?:
13759             (? (?&word_recur) )
13760             )
13761             \:\}
13762             )
13763             |
13764             (?:
13765             \%\{\:
13766             (?:
13767             (? (?&cond) )
13768             )
13769             \:\}
13770             )
13771             )
13772             (?
13773             (?:
13774             (?
13775             (?$IPv4)
13776             |
13777             (?$IPv6)
13778             )
13779             )
13780             |
13781             (?:
13782             (? $Regexp::Common::Apache2::REGEXP->{digits} )
13783             )
13784             |
13785             (?:
13786             (?['"])
13787             (?:
13788             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13789             )
13790             \g{word_quote}
13791             )
13792             |
13793             (?:
13794             (?['"])
13795             (?:
13796             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13797             )
13798             \g{word_quote}
13799             )
13800             |
13801             (?:
13802             \(
13803             [[:blank:]\h]*
13804             (? (?&word_lax) )
13805             [[:blank:]\h]*
13806             \)
13807             )
13808             |
13809             (?:
13810             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
13811             (?
13812             (?: (?: (?-2)\. )+ (?-2) )
13813             )
13814             )
13815             )
13816             |
13817             (?:
13818             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13819             )
13820             |
13821             (?:
13822             (?(?&variable))
13823             )
13824             |
13825             (?:
13826             (?(?=\bsub\b\()
13827             (? (?&sub) )
13828             )
13829             )
13830             |
13831             (?:
13832             (?(?=\bjoin\b\()
13833             (? (?&join) )
13834             )
13835             )
13836             |
13837             (?:
13838             (? (?&function) )
13839             )
13840             |
13841             (?:
13842             (? $Regexp::Common::Apache2::TRUNK->{regex} )
13843             )
13844             )
13845             (?
13846             (?:
13847             (?
13848             (?$IPv4)
13849             |
13850             (?$IPv6)
13851             )
13852             )
13853             |
13854             (?:
13855             (? $Regexp::Common::Apache2::REGEXP->{digits} )
13856             )
13857             |
13858             (?:
13859             (?['"])
13860             (?:
13861             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13862             )
13863             \g{word_quote}
13864             )
13865             |
13866             (?:
13867             (?['"])
13868             (?:
13869             (? (?&string) )
13870             )
13871             \g{word_quote}
13872             )
13873             |
13874             (?:
13875             \(
13876             [[:blank:]\h]*
13877             (? (?-2) )
13878             [[:blank:]\h]*
13879             \)
13880             )
13881             |
13882             (?:
13883             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
13884             (?
13885             (?: (?: (?-2)\. )+ (?-2) )
13886             )
13887             )
13888             )
13889             |
13890             (?:
13891             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13892             )
13893             |
13894             (?:
13895             (?(?&variable))
13896             )
13897             |
13898             (?:
13899             (?(?=\bsub\b\()
13900             (? (?&sub) )
13901             )
13902             )
13903             |
13904             (?:
13905             (?(?=\bjoin\b\()
13906             (? (?&join) )
13907             )
13908             )
13909             |
13910             (?:
13911             (? (?&function) )
13912             )
13913             |
13914             (?:
13915             (? $Regexp::Common::Apache2::TRUNK->{regex} )
13916             )
13917             )
13918             (?
13919             (?:
13920             [[:blank:]\h]*\K
13921             (? (?&word_recur) )
13922             [[:blank:]\h]*\,[[:blank:]\h]*
13923             (? (?&list) )
13924             )
13925             |
13926             (?:
13927             [[:blank:]\h]*\K
13928             (?
13929             (?:
13930             (?&word_recur)
13931             [[:blank:]\h]*\,[[:blank:]\h]*
13932             )*
13933             (?&word_recur)
13934             )
13935             (?:
13936             [[:blank:]\h]*\,[[:blank:]\h]*
13937             (? (?&word_recur) )
13938             )?
13939             )
13940             |
13941             (?:
13942             [[:blank:]\h]*\K
13943             (? (?&word_recur) )
13944             )
13945             )
13946             )
13947             /x;
13948            
13949             ## word
13950             ## | word "," list
13951 28         1406628 $TRUNK->{words} = qr/
13952             (?
13953             (?:
13954             (?:
13955             (?
13956             (?:
13957             (? (?&word) )
13958             [[:blank:]\h]*\,[[:blank:]\h]*
13959             )*
13960             (? (?&word) )
13961             )
13962             (?
13963             (?[[:blank:]\h]*\,[[:blank:]\h]*)
13964             (? (?&word) )
13965             )?
13966             (?()
13967             (?\g{words_list_word}\g{words_list_more})
13968             |
13969             (?()
13970             (?\g{words_list_word})
13971             )
13972             )
13973             (?()
13974             (?()
13975             (? \g{words_list_word1} )
13976             |
13977             (? \g{words_list_word2} )
13978             )
13979             |
13980             (?()
13981             |
13982             (? \g{words_list_word2} )
13983             )
13984             )
13985             (?()
13986             (?()
13987             (?()
13988             (? \g{words_list_word2}\g{words_list_more} )
13989             |
13990             (? \g{words_list_word1} )
13991             )
13992             |
13993             (? \g{words_list_word2} )
13994             )
13995             )
13996             )
13997             |
13998             (?:
13999             (?
14000             (?(?&word))
14001             [[:blank:]\h]*\,[[:blank:]\h]*
14002             (?(?&list))
14003             )
14004             )
14005             |
14006             (?:
14007             (?(?&word))
14008             )
14009             )
14010             )
14011             (?(DEFINE)
14012             (?
14013             (?:
14014             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
14015             (?
14016             (?&stringcomp)
14017             )
14018             )
14019             )
14020             |
14021             (?:
14022             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|sub|join|${FUNCNAME}|\%\{))))
14023             (?
14024             (?&integercomp)
14025             )
14026             )
14027             )
14028             |
14029             (?:
14030             (?:(?<=\W)|(?<=^)|(?<=\A))
14031             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14032             [[:blank:]\h]+
14033             (? (?&word_lax) )
14034             )
14035             |
14036             (?:
14037             (? (?&word_lax) )
14038             [[:blank:]\h]+
14039             (?:
14040             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14041             |
14042             (?:
14043             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
14044             )
14045             )
14046             [[:blank:]\h]+
14047             (? (?&word_lax) )
14048             )
14049             |
14050             (?:
14051             (? (?&word) )
14052             [[:blank:]\h]+
14053             \-?in
14054             [[:blank:]\h]+
14055             (? (?&listfunc) )
14056             )
14057             |
14058             (?:
14059             (? (?&word) )
14060             [[:blank:]\h]+
14061             (? [\=|\!]\~ )
14062             [[:blank:]\h]+
14063             $Regexp::Common::Apache2::REGEXP->{regex}
14064             )
14065             |
14066             (?:
14067             (? (?&word) )
14068             [[:blank:]\h]+
14069             \-?in
14070             [[:blank:]\h]+
14071             \{
14072             [[:blank:]\h]*
14073             (? (?&list) )
14074             [[:blank:]\h]*
14075             \}
14076             )
14077             )
14078             (?
14079             (?:$Regexp::Common::Apache2::TRUNK->{is_true})
14080             |
14081             (?:$Regexp::Common::Apache2::TRUNK->{is_false})
14082             |
14083             (?:
14084             \![[:blank:]\h]*
14085             (? (?-2) )
14086             )
14087             |
14088             (?:
14089             \(
14090             [[:blank:]\h]*
14091             (? (?&cond) )
14092             [[:blank:]\h]*
14093             \)
14094             )
14095             |
14096             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
14097             (?(?&comp))
14098             )
14099             |
14100             (?:
14101             (?(?=(?:.+?)\&\&(?:.+?))
14102             (? (?: (?-2) )+ )
14103             [[:blank:]\h]*
14104             \&\&
14105             [[:blank:]\h]*
14106             (? (?: (?-2) )+ )
14107             )
14108             )
14109             |
14110             (?:
14111             (?(?=(?:.+?)\|\|(?:.+?))
14112             (? (?: (?-2) )+ )
14113             [[:blank:]\h]*
14114             \|\|
14115             [[:blank:]\h]*
14116             (? (?: (?-2) )+ )
14117             )
14118             )
14119             )
14120             (?
14121             (?:
14122             (?!\bv\()(?[a-zA-Z]\w*)
14123             \(
14124             [[:blank:]\h]*
14125             (?
14126             (?> (?&func_words) )?
14127             )
14128             [[:blank:]\h]*
14129             \)
14130             )
14131             |
14132             (?:
14133             ( # paren group 1 (full function)
14134             (?!\bv\() # Take care to avoid catching modern-style variable v()
14135             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
14136             (? # paren group 2 (parens)
14137             \(
14138             (? # paren group 3 (contents of parens)
14139             (?:
14140             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14141             |
14142             (?&paren_group) # Recurse to named capture group
14143             )*
14144             )
14145             \)
14146             )
14147             )
14148             )
14149             )
14150             (?
14151             (?:
14152             (? (?&word) )
14153             )
14154             |
14155             (?:
14156             (?:
14157             (? (?&word) )
14158             [[:blank:]\h]*\,[[:blank:]\h]*
14159             (? (?&list) )
14160             )
14161             |
14162             (?:
14163             (?
14164             (?:
14165             (?&word)
14166             [[:blank:]\h]*\,[[:blank:]\h]*
14167             )*
14168             (?&word)
14169             )
14170             (?:
14171             [[:blank:]\h]*\,[[:blank:]\h]*
14172             (? (?&word) )
14173             )?
14174             )
14175             )
14176             )
14177             (?
14178             (?:
14179             (?(?&word))
14180             [[:blank:]\h]+
14181             \-?(? (?:eq|ne|lt|le|gt|ge) )
14182             [[:blank:]\h]+
14183             (?(?&word))
14184             )
14185             )
14186             (?
14187             \bjoin\(
14188             [[:blank:]\h]*
14189             (?:
14190             (?:
14191             (? (?&list) )
14192             [[:blank:]]*\,[[:blank:]]*
14193             (? (?&word) )
14194             )
14195             |
14196             (? (?&list) )
14197             )
14198             [[:blank:]\h]*
14199             \)
14200             )
14201             (?
14202             (?:
14203             \{
14204             [[:blank:]\h]*
14205             (?(?&words_recur))
14206             [[:blank:]\h]*
14207             \}
14208             )
14209             |
14210             (?:
14211             \(
14212             [[:blank:]\h]*
14213             (? (?&list) )
14214             [[:blank:]\h]*
14215             \)
14216             )
14217             |
14218             (?:
14219             (?(?&listfunc))
14220             )
14221             |
14222             (?:
14223             (?(?=\bsplit\()
14224             (?(?&split))
14225             )
14226             )
14227             )
14228             (?
14229             (?:
14230             (?!\bv\()(?[a-zA-Z]\w*)
14231             \(
14232             [[:blank:]\h]*
14233             (?
14234             (?> (?&func_words) )?
14235             )
14236             [[:blank:]\h]*
14237             \)
14238             )
14239             |
14240             (?:
14241             ( # paren group 1 (full function)
14242             (?!\bv\() # Take care to avoid catching modern-style variable v()
14243             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
14244             (? # paren group 2 (parens)
14245             \(
14246             (? # paren group 3 (contents of parens)
14247             (?:
14248             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14249             |
14250             (?&paren_group) # Recurse to named capture group
14251             )*
14252             )
14253             \)
14254             )
14255             )
14256             )
14257             )
14258             (?
14259             (?:
14260             $Regexp::Common::Apache2::REGEXP->{regex}
14261             |
14262             (?:
14263             (? (?®sub) )
14264             )
14265             )
14266             )
14267             (?
14268             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
14269             |
14270             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
14271             )
14272             (?
14273             s(?${REGSEP})
14274             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
14275             \g{regsep}
14276             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
14277             \g{regsep}
14278             (?${REGFLAGS})?
14279             )
14280             (?
14281             split\(
14282             [[:blank:]\h]*
14283             (?(?®any))
14284             [[:blank:]\h]*\,[[:blank:]\h]*
14285             (?:
14286             (?:
14287             (? (?&word) )
14288             )
14289             |
14290             (?:
14291             (? (?&list) )
14292             )
14293             )
14294             [[:blank:]\h]*
14295             \)
14296             )
14297             (?
14298             (?:
14299             (?: (?&substring) )
14300             )
14301             |
14302             (?:
14303             (?: (?&substring)[[:blank:]\h]+(?&string) )
14304             )
14305             )
14306             (?
14307             (?:
14308             (?(?&word))
14309             [[:blank:]\h]+
14310             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
14311             [[:blank:]\h]+
14312             (?(?&word))
14313             )
14314             )
14315             (?
14316             \bsub\(
14317             [[:blank:]\h]*
14318             (?(?=(?:[s]${REGSEP}))
14319             (? (?®sub) )
14320             )
14321             [[:blank:]\h]*
14322             \,
14323             [[:blank:]\h]*
14324             (?
14325             (? (?>(?&word)) )
14326             )
14327             [[:blank:]\h]*
14328             \)
14329             )
14330             (?
14331             (?:
14332             (?$Regexp::Common::Apache2::REGEXP->{cstring})
14333             )
14334             |
14335             (?:
14336             (? (?&variable) )
14337             )
14338             )
14339             (?
14340             (?:
14341             \%\{
14342             (?:
14343             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
14344             )
14345             \}
14346             )
14347             |
14348             (?:
14349             \%\{
14350             (?:
14351             (?${VARNAME})
14352             )
14353             \}
14354             )
14355             |
14356             (?:
14357             \bv\(
14358             [[:blank:]\h]*
14359             (?["'])
14360             (?:
14361             (?${VARNAME})
14362             )
14363             [[:blank:]\h]*
14364             \g{var_quote}
14365             \)
14366             )
14367             |
14368             (?:
14369             (?:^|\A|(?
14370             (?
14371             \$(?\{)?
14372             (?${DIGIT})
14373             (?()\})
14374             )
14375             )
14376             |
14377             (?:
14378             \%\{\:
14379             (?:
14380             (? (?&word) )
14381             )
14382             \:\}
14383             )
14384             |
14385             (?:
14386             \%\{\:
14387             (?:
14388             (? (?&cond) )
14389             )
14390             \:\}
14391             )
14392             )
14393             (?
14394             (?:
14395             (?
14396             (?$IPv4)
14397             |
14398             (?$IPv6)
14399             )
14400             )
14401             |
14402             (?:
14403             (? $Regexp::Common::Apache2::REGEXP->{digits} )
14404             )
14405             |
14406             (?:
14407             (?['"])
14408             (?:
14409             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14410             )
14411             \g{word_quote}
14412             )
14413             |
14414             (?:
14415             (?['"])
14416             (?:
14417             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14418             )
14419             \g{word_quote}
14420             )
14421             |
14422             (?:
14423             \(
14424             [[:blank:]\h]*
14425             (? (?&word_lax) )
14426             [[:blank:]\h]*
14427             \)
14428             )
14429             |
14430             (?:
14431             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
14432             (?
14433             (?: (?: (?-2)\. )+ (?-2) )
14434             )
14435             )
14436             )
14437             |
14438             (?:
14439             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
14440             )
14441             |
14442             (?:
14443             (?(?&variable))
14444             )
14445             |
14446             (?:
14447             (?(?=\bsub\b\()
14448             (? (?&sub) )
14449             )
14450             )
14451             |
14452             (?:
14453             (?(?=\bjoin\b\()
14454             (? (?&join) )
14455             )
14456             )
14457             |
14458             (?:
14459             (? (?&function) )
14460             )
14461             |
14462             (?:
14463             (? $Regexp::Common::Apache2::TRUNK->{regex} )
14464             )
14465             )
14466             (?
14467             (?:
14468             (?
14469             (?$IPv4)
14470             |
14471             (?$IPv6)
14472             )
14473             )
14474             |
14475             (?:
14476             (? $Regexp::Common::Apache2::REGEXP->{digits} )
14477             )
14478             |
14479             (?:
14480             (?['"])
14481             (?:
14482             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14483             )
14484             \g{word_quote}
14485             )
14486             |
14487             (?:
14488             (?['"])
14489             (?:
14490             (? (?&string) )
14491             )
14492             \g{word_quote}
14493             )
14494             |
14495             (?:
14496             \(
14497             [[:blank:]\h]*
14498             (? (?-2) )
14499             [[:blank:]\h]*
14500             \)
14501             )
14502             |
14503             (?:
14504             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
14505             (?
14506             (?: (?: (?-2)\. )+ (?-2) )
14507             )
14508             )
14509             )
14510             |
14511             (?:
14512             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
14513             )
14514             |
14515             (?:
14516             (?(?&variable))
14517             )
14518             |
14519             (?:
14520             (?(?=\bsub\b\()
14521             (? (?&sub) )
14522             )
14523             )
14524             |
14525             (?:
14526             (?(?=\bjoin\b\()
14527             (? (?&join) )
14528             )
14529             )
14530             |
14531             (?:
14532             (? (?&function) )
14533             )
14534             |
14535             (?:
14536             (? $Regexp::Common::Apache2::TRUNK->{regex} )
14537             )
14538             )
14539             (?
14540             (?:
14541             [[:blank:]\h]*\K
14542             (? (?&word) )
14543             [[:blank:]\h]*\,[[:blank:]\h]*
14544             (? (?&list) )
14545             )
14546             |
14547             (?:
14548             [[:blank:]\h]*\K
14549             (?
14550             (?:
14551             (?&word)
14552             [[:blank:]\h]*\,[[:blank:]\h]*
14553             )*
14554             (?&word)
14555             )
14556             (?:
14557             [[:blank:]\h]*\,[[:blank:]\h]*
14558             (? (?&word) )
14559             )?
14560             )
14561             |
14562             (?:
14563             [[:blank:]\h]*\K
14564             (? (?&word) )
14565             )
14566             )
14567             )
14568             /x;
14569              
14570             ## Here is the addition to be compliant with expression from 2.3.12 and before,
14571             ## ie old fashioned variable such as $REQUEST_URI instead of the modern version %{REQUEST_URI}
14572             @$REGEXP_LEGACY{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false is_true is_false )} =
14573 28         16712 @$REGEXP{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false is_true is_false )};
14574              
14575             ## stringcomp
14576             ## | integercomp
14577             ## | unaryop word
14578             ## | word binaryop word
14579             ## | word "in" listfunc
14580             ## | word "=~" regex
14581             ## | word "!~" regex
14582             ## | word "in" "{" list "}"
14583             ## Ref:
14584             ##
14585             ##
14586             ## Here we allow regular expression to be writen like: expression = //, ie without the ~
14587 28         138407 $REGEXP_LEGACY->{comp} = qr/
14588             (?
14589             (?:
14590             (?
14591             (?(?&word))
14592             [[:blank:]\h]+
14593             (?[\=\=|\=|\!\=])
14594             [[:blank:]\h]+
14595             (?(?®ex))
14596             )
14597             )
14598             |
14599             (?:
14600             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
14601             (?(?&stringcomp))
14602             )
14603             )
14604             |
14605             (?:
14606             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
14607             (?(?&integercomp))
14608             )
14609             )
14610             |
14611             (?:
14612             (?
14613             (?:(?<=\W)|(?<=^)|(?<=\A))
14614             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14615             [[:blank:]\h]+
14616             (?(?&word_lax))
14617             )
14618             )
14619             |
14620             (?:
14621             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
14622             (?
14623             (?(?&word_lax))
14624             [[:blank:]\h]+
14625             (?:
14626             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14627             |
14628             (?:
14629             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
14630             )
14631             )
14632             [[:blank:]\h]+
14633             (?(?&word_lax))
14634             )
14635             )
14636             )
14637             |
14638             (?
14639             (? (?&word_lax) )
14640             [[:blank:]\h]+
14641             \-?in
14642             [[:blank:]\h]+
14643             (?(?&listfunc))
14644             )
14645             |
14646             (?
14647             (?(?&word))
14648             [[:blank:]\h]+
14649             (?[\=|\!]\~)
14650             [[:blank:]\h]+
14651             (?$Regexp::Common::Apache2::REGEXP->{regex})
14652             )
14653             |
14654             (?
14655             (?(?&word))
14656             [[:blank:]\h]+
14657             \-?in
14658             [[:blank:]\h]+
14659             \{
14660             [[:blank:]\h]*
14661             (?(?&words))
14662             [[:blank:]\h]*
14663             \}
14664             )
14665             )
14666             (?(DEFINE)
14667             (?
14668             (?:
14669             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
14670             (?
14671             (?&stringcomp)
14672             )
14673             )
14674             )
14675             |
14676             (?:
14677             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
14678             (?
14679             (?&integercomp)
14680             )
14681             )
14682             )
14683             |
14684             (?:
14685             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
14686             (?:(?<=\W)|(?<=^)|(?<=\A))
14687             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14688             [[:blank:]\h]+
14689             (? (?&word_lax) )
14690             )
14691             )
14692             |
14693             (?:
14694             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
14695             (? (?&word_lax) )
14696             [[:blank:]\h]+
14697             (?:
14698             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14699             |
14700             (?:
14701             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
14702             )
14703             )
14704             [[:blank:]\h]+
14705             (? (?&word_lax) )
14706             )
14707             )
14708             |
14709             (?:
14710             (? (?&word_lax) )
14711             [[:blank:]\h]+
14712             \-?in
14713             [[:blank:]\h]+
14714             (? (?&listfunc) )
14715             )
14716             |
14717             (?:
14718             (? (?&word) )
14719             [[:blank:]\h]+
14720             (? [\=|\!]\~ )
14721             [[:blank:]\h]+
14722             $Regexp::Common::Apache2::REGEXP->{regex}
14723             )
14724             |
14725             (?
14726             (?=)
14727             (?(?&word))
14728             [[:blank:]\h]+
14729             (?[\=\=|\=|\!\=])
14730             [[:blank:]\h]+
14731             (?(?®ex))
14732             )
14733             |
14734             (?:
14735             (? (?&word) )
14736             [[:blank:]\h]+
14737             \-?in
14738             [[:blank:]\h]+
14739             \{
14740             [[:blank:]\h]*
14741             (? (?&words) )
14742             [[:blank:]\h]*
14743             \}
14744             )
14745             )
14746             (?
14747             (?:
14748             (?!\bv\()(?[a-zA-Z]\w*)
14749             \(
14750             [[:blank:]\h]*
14751             (?
14752             (?> (?&func_words) )?
14753             )
14754             [[:blank:]\h]*
14755             \)
14756             )
14757             |
14758             (?:
14759             ( # paren group 1 (full function)
14760             (?!\bv\() # Take care to avoid catching modern-style variable v()
14761             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
14762             (? # paren group 2 (parens)
14763             \(
14764             (? # paren group 3 (contents of parens)
14765             (?:
14766             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14767             |
14768             (?&paren_group) # Recurse to named capture group
14769             )*
14770             )
14771             \)
14772             )
14773             )
14774             )
14775             )
14776             (?
14777             (?:
14778             (?
14779             (?:
14780             (?&word)
14781             [[:blank:]\h]*\,[[:blank:]\h]*
14782             )*
14783             (?&word)
14784             )
14785             (?:
14786             [[:blank:]\h]*\,[[:blank:]\h]*
14787             (? (?&word) )
14788             )?
14789             )
14790             |
14791             (?:
14792             (? (?&word) )
14793             [[:blank:]\h]*\,[[:blank:]\h]*
14794             (? (?-2) )
14795             )
14796             |
14797             (?:
14798             (? (?&word) )
14799             )
14800             )
14801             (?
14802             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_true})
14803             |
14804             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_false})
14805             |
14806             (?:
14807             \(
14808             [[:blank:]\h]*
14809             (? (?&cond) )
14810             [[:blank:]\h]*
14811             \)
14812             )
14813             |
14814             (?:
14815             \![[:blank:]\h]*
14816             (? (?-2) )
14817             )
14818             |
14819             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
14820             (?(?&comp_recur))
14821             )
14822             |
14823             (?:
14824             (?(?=(?:.+?)\&\&(?:.+?))
14825             (? (?: (?-2) )+ )
14826             [[:blank:]\h]*
14827             \&\&
14828             [[:blank:]\h]*
14829             (? (?: (?-2) )+ )
14830             )
14831             )
14832             |
14833             (?:
14834             (?(?=(?:.+?)\|\|(?:.+?))
14835             (? (?: (?-2) )+ )
14836             [[:blank:]\h]*
14837             \|\|
14838             [[:blank:]\h]*
14839             (? (?: (?-2) )+ )
14840             )
14841             (?()
14842             (?()
14843             (*ACCEPT)
14844             )
14845             )
14846             )
14847             |
14848             (?:
14849             (?(?&variable))
14850             )
14851             )
14852             (?
14853             (?:
14854             (?!\bv\()(?[a-zA-Z]\w*)
14855             \(
14856             [[:blank:]\h]*
14857             (?
14858             (?> (?&func_words) )?
14859             )
14860             [[:blank:]\h]*
14861             \)
14862             )
14863             |
14864             (?:
14865             ( # paren group 1 (full function)
14866             (?!\bv\() # Take care to avoid catching modern-style variable v()
14867             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
14868             (? # paren group 2 (parens)
14869             \(
14870             (? # paren group 3 (contents of parens)
14871             (?:
14872             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14873             |
14874             (?&paren_group) # Recurse to named capture group
14875             )*
14876             )
14877             \)
14878             )
14879             )
14880             )
14881             )
14882             (?
14883             (?:
14884             (?
14885             (?:
14886             (?&word)
14887             [[:blank:]\h]*\,[[:blank:]\h]*
14888             )*
14889             (?&word)
14890             )
14891             (?:
14892             [[:blank:]\h]*\,[[:blank:]\h]*
14893             (? (?&word) )
14894             )?
14895             )
14896             |
14897             (?:
14898             (? (?&word) )
14899             [[:blank:]\h]*\,[[:blank:]\h]*
14900             (? (?-2) )
14901             )
14902             |
14903             (?:
14904             (? (?&word) )
14905             )
14906             )
14907             (?
14908             (?:
14909             (?(?&word))
14910             [[:blank:]\h]+
14911             \-?(? (?:eq|ne|lt|le|gt|ge) )
14912             [[:blank:]\h]+
14913             (?(?&word))
14914             )
14915             )
14916             (?
14917             (?:
14918             (?!\bv\()(?[a-zA-Z]\w*)
14919             \(
14920             [[:blank:]\h]*
14921             (?
14922             (?> (?&func_words) )?
14923             )
14924             [[:blank:]\h]*
14925             \)
14926             )
14927             |
14928             (?:
14929             ( # paren group 1 (full function)
14930             (?!\bv\() # Take care to avoid catching modern-style variable v()
14931             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
14932             (? # paren group 2 (parens)
14933             \(
14934             (? # paren group 3 (contents of parens)
14935             (?:
14936             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14937             |
14938             (?&paren_group) # Recurse to named capture group
14939             )*
14940             )
14941             \)
14942             )
14943             )
14944             )
14945             )
14946             (?
14947             (?:
14948             (?
14949             (?:
14950             (?&word)
14951             [[:blank:]\h]*\,[[:blank:]\h]*
14952             )*
14953             (?&word)
14954             )
14955             (?:
14956             [[:blank:]\h]*\,[[:blank:]\h]*
14957             (? (?&word) )
14958             )?
14959             )
14960             |
14961             (?:
14962             (? (?&word) )
14963             [[:blank:]\h]*\,[[:blank:]\h]*
14964             (? (?-2) )
14965             )
14966             |
14967             (?:
14968             (? (?&word) )
14969             )
14970             )
14971             (?
14972             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
14973             |
14974             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
14975             )
14976             (?
14977             (?:
14978             (?: (?&substring)[[:blank:]\h]+(?&string) )
14979             )
14980             |
14981             (?:
14982             (?: (?&substring) )
14983             )
14984             )
14985             (?
14986             (?:
14987             (?(?&word))
14988             [[:blank:]\h]+
14989             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
14990             [[:blank:]\h]+
14991             (?(?&word))
14992             )
14993             )
14994             (?
14995             (?:
14996             (?$Regexp::Common::Apache2::REGEXP->{cstring})
14997             )
14998             |
14999             (?:
15000             (? (?&variable) )
15001             )
15002             |
15003             (?:
15004             \$(?\{)?(?${DIGIT})(?()\})
15005             )
15006             )
15007             (?
15008             (?:
15009             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15010             )
15011             |
15012             (?:
15013             \%\{
15014             (?:
15015             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15016             )
15017             \}
15018             )
15019             |
15020             (?:
15021             \%\{
15022             (?:
15023             (?${VARNAME})
15024             )
15025             \}
15026             )
15027             |
15028             (?:
15029             \bv\(
15030             [[:blank:]\h]*
15031             (?["'])
15032             (?:
15033             (?${VARNAME})
15034             )
15035             [[:blank:]\h]*
15036             \g{var_quote}
15037             \)
15038             )
15039             |
15040             (?:
15041             (?:^|\A|(?
15042             (?
15043             \$(?\{)?
15044             (?${DIGIT})
15045             (?()\})
15046             )
15047             )
15048             )
15049             (?
15050             (?:
15051             (?
15052             (?$IPv4)
15053             |
15054             (?$IPv6)
15055             )
15056             )
15057             |
15058             (?:
15059             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15060             )
15061             |
15062             (?:
15063             (?['"])
15064             (?:
15065             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15066             )
15067             \g{word_quote}
15068             )
15069             |
15070             (?:
15071             (?['"])
15072             (?:
15073             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15074             )
15075             \g{word_quote}
15076             )
15077             |
15078             (?:
15079             (? (?: (?-2)\. )+ (?-2) )
15080             )
15081             |
15082             (?:
15083             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15084             )
15085             |
15086             (?:
15087             (?(?&variable))
15088             )
15089             |
15090             (?:
15091             (? (?&function) )
15092             )
15093             |
15094             (?:
15095             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15096             )
15097             )
15098             (?
15099             (?:
15100             (?
15101             (?$IPv4)
15102             |
15103             (?$IPv6)
15104             )
15105             )
15106             |
15107             (?:
15108             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15109             )
15110             |
15111             (?:
15112             (?['"])
15113             (?:
15114             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15115             )
15116             \g{word_quote}
15117             )
15118             |
15119             (?:
15120             (?['"])
15121             (?:
15122             (? (?&string) )
15123             )
15124             \g{word_quote}
15125             )
15126             |
15127             (?:
15128             (? (?: (?-2)\. )+ (?-2) )
15129             )
15130             |
15131             (?:
15132             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15133             )
15134             |
15135             (?:
15136             (?(?&variable))
15137             )
15138             |
15139             (?:
15140             (? (?&function) )
15141             )
15142             |
15143             (?:
15144             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15145             )
15146             )
15147             (?
15148             (?:
15149             (? (?&word) )
15150             [[:blank:]\h]*\,[[:blank:]\h]*
15151             (? (?-2) )
15152             )
15153             |
15154             (?:
15155             (? (?&word) )
15156             )
15157             )
15158             )
15159             /x;
15160              
15161             ## "true"
15162             ## | "false"
15163             ## | "!" cond
15164             ## | cond "&&" cond
15165             ## | cond "||" cond
15166             ## | "(" cond ")"
15167             ## | comp
15168 28         296751 $REGEXP_LEGACY->{cond} = qr/
15169             (?
15170             (?:
15171             (?$Regexp::Common::Apache2::REGEXP_LEGACY->{is_true})
15172             )
15173             |
15174             (?:
15175             (?$Regexp::Common::Apache2::REGEXP_LEGACY->{is_false})
15176             )
15177             |
15178             (?:
15179             (?:
15180             \(
15181             [[:blank:]\h]*
15182             (?
15183             (?&cond_recur)
15184             )
15185             [[:blank:]\h]*
15186             \)
15187             )
15188             )
15189             |
15190             (?:
15191             (?\![[:blank:]\h]*(?(?&cond_recur)))
15192             )
15193             |
15194             (?:
15195             (?(?=(?:.+?)\&\&(?:.+?))
15196             (?
15197             (?
15198             (?: (?&cond_recur) )+
15199             )
15200             [[:blank:]\h]*
15201             \&\&
15202             [[:blank:]\h]*
15203             (?
15204             (?: (?&cond_recur) )+
15205             )
15206             )
15207             )
15208             )
15209             |
15210             (?:
15211             (?(?=(?:.+?)\|\|(?:.+?))
15212             (?
15213             (?
15214             (?: (?&cond_recur) )+
15215             )
15216             [[:blank:]\h]*
15217             \|\|
15218             [[:blank:]\h]*
15219             (?
15220             (?: (?&cond_recur) )+
15221             )
15222             )
15223             )
15224             )
15225             |
15226             (?:
15227             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
15228             (? (?&comp) )
15229             )
15230             )
15231             |
15232             (?:
15233             (?(?&variable))
15234             )
15235             )
15236             (?(DEFINE)
15237             (?
15238             (?:
15239             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
15240             (?
15241             (?&stringcomp)
15242             )
15243             )
15244             )
15245             |
15246             (?:
15247             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
15248             (?
15249             (?&integercomp)
15250             )
15251             )
15252             )
15253             |
15254             (?:
15255             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
15256             (?:(?<=\W)|(?<=^)|(?<=\A))
15257             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
15258             [[:blank:]\h]+
15259             (? (?&word_lax) )
15260             )
15261             )
15262             |
15263             (?:
15264             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
15265             (? (?&word_lax) )
15266             [[:blank:]\h]+
15267             (?:
15268             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
15269             |
15270             (?:
15271             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
15272             )
15273             )
15274             [[:blank:]\h]+
15275             (? (?&word_lax) )
15276             )
15277             )
15278             |
15279             (?:
15280             (? (?&word_lax) )
15281             [[:blank:]\h]+
15282             \-?in
15283             [[:blank:]\h]+
15284             (? (?&listfunc) )
15285             )
15286             |
15287             (?:
15288             (? (?&word) )
15289             [[:blank:]\h]+
15290             (? [\=|\!]\~ )
15291             [[:blank:]\h]+
15292             $Regexp::Common::Apache2::REGEXP->{regex}
15293             )
15294             |
15295             (?
15296             (?=)
15297             (?(?&word))
15298             [[:blank:]\h]+
15299             (?[\=\=|\=|\!\=])
15300             [[:blank:]\h]+
15301             (?(?®ex))
15302             )
15303             |
15304             (?:
15305             (? (?&word) )
15306             [[:blank:]\h]+
15307             \-?in
15308             [[:blank:]\h]+
15309             \{
15310             [[:blank:]\h]*
15311             (? (?&words) )
15312             [[:blank:]\h]*
15313             \}
15314             )
15315             )
15316             (?
15317             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_true})
15318             |
15319             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_false})
15320             |
15321             (?:
15322             \(
15323             [[:blank:]\h]*
15324             (? (?&cond_recur) )
15325             [[:blank:]\h]*
15326             \)
15327             )
15328             |
15329             (?:
15330             \![[:blank:]\h]*
15331             (? (?-2) )
15332             )
15333             |
15334             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
15335             (?(?&comp))
15336             )
15337             |
15338             (?:
15339             (?(?=(?:.+?)\&\&(?:.+?))
15340             (? (?: (?-2) )+ )
15341             [[:blank:]\h]*
15342             \&\&
15343             [[:blank:]\h]*
15344             (? (?: (?-2) )+ )
15345             )
15346             )
15347             |
15348             (?:
15349             (?(?=(?:.+?)\|\|(?:.+?))
15350             (? (?: (?-2) )+ )
15351             [[:blank:]\h]*
15352             \|\|
15353             [[:blank:]\h]*
15354             (? (?: (?-2) )+ )
15355             )
15356             (?()
15357             (?()
15358             (*ACCEPT)
15359             )
15360             )
15361             )
15362             |
15363             (?:
15364             (?(?&variable))
15365             )
15366             )
15367             (?
15368             (?:
15369             (?!\bv\()(?[a-zA-Z]\w*)
15370             \(
15371             [[:blank:]\h]*
15372             (?
15373             (?> (?&func_words) )?
15374             )
15375             [[:blank:]\h]*
15376             \)
15377             )
15378             |
15379             (?:
15380             ( # paren group 1 (full function)
15381             (?!\bv\() # Take care to avoid catching modern-style variable v()
15382             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
15383             (? # paren group 2 (parens)
15384             \(
15385             (? # paren group 3 (contents of parens)
15386             (?:
15387             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15388             |
15389             (?&paren_group) # Recurse to named capture group
15390             )*
15391             )
15392             \)
15393             )
15394             )
15395             )
15396             )
15397             (?
15398             (?:
15399             (?
15400             (?:
15401             (?&word)
15402             [[:blank:]\h]*\,[[:blank:]\h]*
15403             )*
15404             (?&word)
15405             )
15406             (?:
15407             [[:blank:]\h]*\,[[:blank:]\h]*
15408             (? (?&word) )
15409             )?
15410             )
15411             |
15412             (?:
15413             (? (?&word) )
15414             [[:blank:]\h]*\,[[:blank:]\h]*
15415             (? (?-2) )
15416             )
15417             |
15418             (?:
15419             (? (?&word) )
15420             )
15421             )
15422             (?
15423             (?:
15424             (?(?&word))
15425             [[:blank:]\h]+
15426             \-?(? (?:eq|ne|lt|le|gt|ge) )
15427             [[:blank:]\h]+
15428             (?(?&word))
15429             )
15430             )
15431             (?
15432             (?:
15433             (?!\bv\()(?[a-zA-Z]\w*)
15434             \(
15435             [[:blank:]\h]*
15436             (?
15437             (?> (?&func_words) )?
15438             )
15439             [[:blank:]\h]*
15440             \)
15441             )
15442             |
15443             (?:
15444             ( # paren group 1 (full function)
15445             (?!\bv\() # Take care to avoid catching modern-style variable v()
15446             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
15447             (? # paren group 2 (parens)
15448             \(
15449             (? # paren group 3 (contents of parens)
15450             (?:
15451             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15452             |
15453             (?&paren_group) # Recurse to named capture group
15454             )*
15455             )
15456             \)
15457             )
15458             )
15459             )
15460             )
15461             (?
15462             (?:
15463             (?
15464             (?:
15465             (?&word)
15466             [[:blank:]\h]*\,[[:blank:]\h]*
15467             )*
15468             (?&word)
15469             )
15470             (?:
15471             [[:blank:]\h]*\,[[:blank:]\h]*
15472             (? (?&word) )
15473             )?
15474             )
15475             |
15476             (?:
15477             (? (?&word) )
15478             [[:blank:]\h]*\,[[:blank:]\h]*
15479             (? (?-2) )
15480             )
15481             |
15482             (?:
15483             (? (?&word) )
15484             )
15485             )
15486             (?
15487             (?:
15488             (?: (?&substring)[[:blank:]\h]+(?&string) )
15489             )
15490             |
15491             (?:
15492             (?: (?&substring) )
15493             )
15494             )
15495             (?
15496             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
15497             |
15498             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
15499             )
15500             (?
15501             (?:
15502             (?(?&word))
15503             [[:blank:]\h]+
15504             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
15505             [[:blank:]\h]+
15506             (?(?&word))
15507             )
15508             )
15509             (?
15510             (?:
15511             (?$Regexp::Common::Apache2::REGEXP->{cstring})
15512             )
15513             |
15514             (?:
15515             (? (?&variable) )
15516             )
15517             |
15518             (?:
15519             \$(?\{)?(?${DIGIT})(?()\})
15520             )
15521             )
15522             (?
15523             (?:
15524             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15525             )
15526             |
15527             (?:
15528             \%\{
15529             (?:
15530             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15531             )
15532             \}
15533             )
15534             |
15535             (?:
15536             \%\{
15537             (?:
15538             (?${VARNAME})
15539             )
15540             \}
15541             )
15542             |
15543             (?:
15544             \bv\(
15545             [[:blank:]\h]*
15546             (?["'])
15547             (?:
15548             (?${VARNAME})
15549             )
15550             [[:blank:]\h]*
15551             \g{var_quote}
15552             \)
15553             )
15554             |
15555             (?:
15556             (?:^|\A|(?
15557             (?
15558             \$(?\{)?
15559             (?${DIGIT})
15560             (?()\})
15561             )
15562             )
15563             )
15564             (?
15565             (?:
15566             (?
15567             (?$IPv4)
15568             |
15569             (?$IPv6)
15570             )
15571             )
15572             |
15573             (?:
15574             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15575             )
15576             |
15577             (?:
15578             (?['"])
15579             (?:
15580             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15581             )
15582             \g{word_quote}
15583             )
15584             |
15585             (?:
15586             (?['"])
15587             (?:
15588             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15589             )
15590             \g{word_quote}
15591             )
15592             |
15593             (?:
15594             (? (?: (?-2)\. )+ (?-2) )
15595             )
15596             |
15597             (?:
15598             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15599             )
15600             |
15601             (?:
15602             (?(?&variable))
15603             )
15604             |
15605             (?:
15606             (? (?&function) )
15607             )
15608             |
15609             (?:
15610             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15611             )
15612             )
15613             (?
15614             (?:
15615             (?
15616             (?$IPv4)
15617             |
15618             (?$IPv6)
15619             )
15620             )
15621             |
15622             (?:
15623             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15624             )
15625             |
15626             (?:
15627             (?['"])
15628             (?:
15629             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15630             )
15631             \g{word_quote}
15632             )
15633             |
15634             (?:
15635             (?['"])
15636             (?:
15637             (? (?&string) )
15638             )
15639             \g{word_quote}
15640             )
15641             |
15642             (?:
15643             (? (?: (?-2)\. )+ (?-2) )
15644             )
15645             |
15646             (?:
15647             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15648             )
15649             |
15650             (?:
15651             (?(?&variable))
15652             )
15653             |
15654             (?:
15655             (? (?&function) )
15656             )
15657             |
15658             (?:
15659             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15660             )
15661             )
15662             (?
15663             (?:
15664             (? (?&word) )
15665             [[:blank:]\h]*\,[[:blank:]\h]*
15666             (? (?-2) )
15667             )
15668             |
15669             (?:
15670             (? (?&word) )
15671             )
15672             )
15673             )
15674             /xi;
15675              
15676             ## cond
15677             ## | string
15678 28         185770 $REGEXP_LEGACY->{expr} = qr/
15679             (?
15680             (?:
15681             (?(?&cond))
15682             )
15683             |
15684             (?:
15685             (?(?&string))
15686             )
15687             )
15688             (?(DEFINE)
15689             (?
15690             (?:
15691             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
15692             (?
15693             (?&stringcomp)
15694             )
15695             )
15696             )
15697             |
15698             (?:
15699             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
15700             (?
15701             (?&integercomp)
15702             )
15703             )
15704             )
15705             |
15706             (?:
15707             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
15708             (?:(?<=\W)|(?<=^)|(?<=\A))
15709             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
15710             [[:blank:]\h]+
15711             (? (?&word_lax) )
15712             )
15713             )
15714             |
15715             (?:
15716             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
15717             (? (?&word_lax) )
15718             [[:blank:]\h]+
15719             (?:
15720             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
15721             |
15722             (?:
15723             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
15724             )
15725             )
15726             [[:blank:]\h]+
15727             (? (?&word_lax) )
15728             )
15729             )
15730             |
15731             (?:
15732             (? (?&word_lax) )
15733             [[:blank:]\h]+
15734             \-?in
15735             [[:blank:]\h]+
15736             (? (?&listfunc) )
15737             )
15738             |
15739             (?:
15740             (? (?&word) )
15741             [[:blank:]\h]+
15742             (? [\=|\!]\~ )
15743             [[:blank:]\h]+
15744             $Regexp::Common::Apache2::REGEXP->{regex}
15745             )
15746             |
15747             (?
15748             (?=)
15749             (?(?&word))
15750             [[:blank:]\h]+
15751             (?[\=\=|\=|\!\=])
15752             [[:blank:]\h]+
15753             (?(?®ex))
15754             )
15755             |
15756             (?:
15757             (? (?&word) )
15758             [[:blank:]\h]+
15759             \-?in
15760             [[:blank:]\h]+
15761             \{
15762             [[:blank:]\h]*
15763             (? (?&words) )
15764             [[:blank:]\h]*
15765             \}
15766             )
15767             )
15768             (?
15769             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_true})
15770             |
15771             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_false})
15772             |
15773             (?:
15774             \(
15775             [[:blank:]\h]*
15776             (? (?&cond) )
15777             [[:blank:]\h]*
15778             \)
15779             )
15780             |
15781             (?:
15782             \![[:blank:]\h]*
15783             (? (?-2) )
15784             )
15785             |
15786             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
15787             (?(?&comp))
15788             )
15789             |
15790             (?:
15791             (?(?=(?:.+?)\&\&(?:.+?))
15792             (? (?: (?-2) )+ )
15793             [[:blank:]\h]*
15794             \&\&
15795             [[:blank:]\h]*
15796             (? (?: (?-2) )+ )
15797             )
15798             )
15799             |
15800             (?:
15801             (?(?=(?:.+?)\|\|(?:.+?))
15802             (? (?: (?-2) )+ )
15803             [[:blank:]\h]*
15804             \|\|
15805             [[:blank:]\h]*
15806             (? (?: (?-2) )+ )
15807             )
15808             (?()
15809             (?()
15810             (*ACCEPT)
15811             )
15812             )
15813             )
15814             |
15815             (?:
15816             (?(?&variable))
15817             )
15818             )
15819             (?
15820             (?:
15821             (?!\bv\()(?[a-zA-Z]\w*)
15822             \(
15823             [[:blank:]\h]*
15824             (?
15825             (?> (?&func_words) )?
15826             )
15827             [[:blank:]\h]*
15828             \)
15829             )
15830             |
15831             (?:
15832             ( # paren group 1 (full function)
15833             (?!\bv\() # Take care to avoid catching modern-style variable v()
15834             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
15835             (? # paren group 2 (parens)
15836             \(
15837             (? # paren group 3 (contents of parens)
15838             (?:
15839             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15840             |
15841             (?&paren_group) # Recurse to named capture group
15842             )*
15843             )
15844             \)
15845             )
15846             )
15847             )
15848             )
15849             (?
15850             (?:
15851             (?
15852             (?:
15853             (?&word)
15854             [[:blank:]\h]*\,[[:blank:]\h]*
15855             )*
15856             (?&word)
15857             )
15858             (?:
15859             [[:blank:]\h]*\,[[:blank:]\h]*
15860             (? (?&word) )
15861             )?
15862             )
15863             |
15864             (?:
15865             (? (?&word) )
15866             [[:blank:]\h]*\,[[:blank:]\h]*
15867             (? (?-2) )
15868             )
15869             |
15870             (?:
15871             (? (?&word) )
15872             )
15873             )
15874             (?
15875             (?:
15876             (?(?&word))
15877             [[:blank:]\h]+
15878             \-?(? (?:eq|ne|lt|le|gt|ge) )
15879             [[:blank:]\h]+
15880             (?(?&word))
15881             )
15882             )
15883             (?
15884             (?:
15885             (?!\bv\()(?[a-zA-Z]\w*)
15886             \(
15887             [[:blank:]\h]*
15888             (?
15889             (?> (?&func_words) )?
15890             )
15891             [[:blank:]\h]*
15892             \)
15893             )
15894             |
15895             (?:
15896             ( # paren group 1 (full function)
15897             (?!\bv\() # Take care to avoid catching modern-style variable v()
15898             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
15899             (? # paren group 2 (parens)
15900             \(
15901             (? # paren group 3 (contents of parens)
15902             (?:
15903             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15904             |
15905             (?&paren_group) # Recurse to named capture group
15906             )*
15907             )
15908             \)
15909             )
15910             )
15911             )
15912             )
15913             (?
15914             (?:
15915             (?
15916             (?:
15917             (?&word)
15918             [[:blank:]\h]*\,[[:blank:]\h]*
15919             )*
15920             (?&word)
15921             )
15922             (?:
15923             [[:blank:]\h]*\,[[:blank:]\h]*
15924             (? (?&word) )
15925             )?
15926             )
15927             |
15928             (?:
15929             (? (?&word) )
15930             [[:blank:]\h]*\,[[:blank:]\h]*
15931             (? (?-2) )
15932             )
15933             |
15934             (?:
15935             (? (?&word) )
15936             )
15937             )
15938             (?
15939             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
15940             |
15941             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
15942             )
15943             (?
15944             (?:
15945             (?: (?&substring)[[:blank:]\h]+(?&string) )
15946             )
15947             |
15948             (?:
15949             (?: (?&substring) )
15950             )
15951             )
15952             (?
15953             (?:
15954             (?(?&word))
15955             [[:blank:]\h]+
15956             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
15957             [[:blank:]\h]+
15958             (?(?&word))
15959             )
15960             )
15961             (?
15962             (?:
15963             (?$Regexp::Common::Apache2::REGEXP->{cstring})
15964             )
15965             |
15966             (?:
15967             (? (?&variable) )
15968             )
15969             |
15970             (?:
15971             \$(?\{)?(?${DIGIT})(?()\})
15972             )
15973             )
15974             (?
15975             (?:
15976             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15977             )
15978             |
15979             (?:
15980             \%\{
15981             (?:
15982             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15983             )
15984             \}
15985             )
15986             |
15987             (?:
15988             \%\{
15989             (?:
15990             (?${VARNAME})
15991             )
15992             \}
15993             )
15994             |
15995             (?:
15996             \bv\(
15997             [[:blank:]\h]*
15998             (?["'])
15999             (?:
16000             (?${VARNAME})
16001             )
16002             [[:blank:]\h]*
16003             \g{var_quote}
16004             \)
16005             )
16006             |
16007             (?:
16008             (?:^|\A|(?
16009             (?
16010             \$(?\{)?
16011             (?${DIGIT})
16012             (?()\})
16013             )
16014             )
16015             )
16016             (?
16017             (?:
16018             (?
16019             (?$IPv4)
16020             |
16021             (?$IPv6)
16022             )
16023             )
16024             |
16025             (?:
16026             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16027             )
16028             |
16029             (?:
16030             (?['"])
16031             (?:
16032             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16033             )
16034             \g{word_quote}
16035             )
16036             |
16037             (?:
16038             (?['"])
16039             (?:
16040             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16041             )
16042             \g{word_quote}
16043             )
16044             |
16045             (?:
16046             (? (?: (?-2)\. )+ (?-2) )
16047             )
16048             |
16049             (?:
16050             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16051             )
16052             |
16053             (?:
16054             (?(?&variable))
16055             )
16056             |
16057             (?:
16058             (? (?&function) )
16059             )
16060             |
16061             (?:
16062             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16063             )
16064             )
16065             (?
16066             (?:
16067             (?
16068             (?$IPv4)
16069             |
16070             (?$IPv6)
16071             )
16072             )
16073             |
16074             (?:
16075             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16076             )
16077             |
16078             (?:
16079             (?['"])
16080             (?:
16081             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16082             )
16083             \g{word_quote}
16084             )
16085             |
16086             (?:
16087             (?['"])
16088             (?:
16089             (? (?&string) )
16090             )
16091             \g{word_quote}
16092             )
16093             |
16094             (?:
16095             (? (?: (?-2)\. )+ (?-2) )
16096             )
16097             |
16098             (?:
16099             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16100             )
16101             |
16102             (?:
16103             (?(?&variable))
16104             )
16105             |
16106             (?:
16107             (? (?&function) )
16108             )
16109             |
16110             (?:
16111             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16112             )
16113             )
16114             (?
16115             (?:
16116             (? (?&word) )
16117             [[:blank:]\h]*\,[[:blank:]\h]*
16118             (? (?-2) )
16119             )
16120             |
16121             (?:
16122             (? (?&word) )
16123             )
16124             )
16125             )
16126             /x;
16127              
16128             ## funcname "(" words ")"
16129             ## -> Same as LISTFUNC
16130 28         73415 $REGEXP_LEGACY->{function} = qr/
16131             (?
16132             (?:
16133             (?!\bv\()(?[a-zA-Z]\w*)
16134             \(
16135             [[:blank:]\h]*
16136             (?
16137             (?> (?&func_words) )?
16138             )
16139             [[:blank:]\h]*
16140             \)
16141             )
16142             |
16143             (?:
16144             ( # paren group 1 (full function)
16145             (?!\bv\() # Take care to avoid catching modern-style variable v()
16146             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16147             (? # paren group 2 (parens)
16148             \(
16149             (? # paren group 3 (contents of parens)
16150             (?:
16151             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16152             |
16153             (?&paren_group) # Recurse to named capture group
16154             )*
16155             )
16156             \)
16157             )
16158             )
16159             )
16160             )
16161             (?(DEFINE)
16162             (?
16163             (?:
16164             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16165             (?
16166             (?&stringcomp)
16167             )
16168             )
16169             )
16170             |
16171             (?:
16172             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16173             (?
16174             (?&integercomp)
16175             )
16176             )
16177             )
16178             |
16179             (?:
16180             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
16181             (?:(?<=\W)|(?<=^)|(?<=\A))
16182             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
16183             [[:blank:]\h]+
16184             (? (?&word_lax) )
16185             )
16186             )
16187             |
16188             (?:
16189             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
16190             (? (?&word_lax) )
16191             [[:blank:]\h]+
16192             (?:
16193             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
16194             |
16195             (?:
16196             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
16197             )
16198             )
16199             [[:blank:]\h]+
16200             (? (?&word_lax) )
16201             )
16202             )
16203             |
16204             (?:
16205             (? (?&word_lax) )
16206             [[:blank:]\h]+
16207             \-?in
16208             [[:blank:]\h]+
16209             (? (?&listfunc) )
16210             )
16211             |
16212             (?:
16213             (? (?&word) )
16214             [[:blank:]\h]+
16215             (? [\=|\!]\~ )
16216             [[:blank:]\h]+
16217             $Regexp::Common::Apache2::REGEXP->{regex}
16218             )
16219             |
16220             (?
16221             (?=)
16222             (?(?&word))
16223             [[:blank:]\h]+
16224             (?[\=\=|\=|\!\=])
16225             [[:blank:]\h]+
16226             (?(?®ex))
16227             )
16228             |
16229             (?:
16230             (? (?&word) )
16231             [[:blank:]\h]+
16232             \-?in
16233             [[:blank:]\h]+
16234             \{
16235             [[:blank:]\h]*
16236             (? (?&words) )
16237             [[:blank:]\h]*
16238             \}
16239             )
16240             )
16241             (?
16242             (?:
16243             (?!\bv\()(?[a-zA-Z]\w*)
16244             \(
16245             [[:blank:]\h]*
16246             (?
16247             (?> (?&func_words) )?
16248             )
16249             [[:blank:]\h]*
16250             \)
16251             )
16252             |
16253             (?:
16254             ( # paren group 1 (full function)
16255             (?!\bv\() # Take care to avoid catching modern-style variable v()
16256             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16257             (? # paren group 2 (parens)
16258             \(
16259             (? # paren group 3 (contents of parens)
16260             (?:
16261             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16262             |
16263             (?&paren_group) # Recurse to named capture group
16264             )*
16265             )
16266             \)
16267             )
16268             )
16269             )
16270             )
16271             (?
16272             (?:
16273             (?
16274             (?:
16275             (?&word)
16276             [[:blank:]\h]*\,[[:blank:]\h]*
16277             )*
16278             (?&word)
16279             )
16280             (?:
16281             [[:blank:]\h]*\,[[:blank:]\h]*
16282             (? (?&word) )
16283             )?
16284             )
16285             |
16286             (?:
16287             (? (?&word) )
16288             [[:blank:]\h]*\,[[:blank:]\h]*
16289             (? (?-2) )
16290             )
16291             |
16292             (?:
16293             (? (?&word) )
16294             )
16295             )
16296             (?
16297             (?:
16298             (?(?&word))
16299             [[:blank:]\h]+
16300             \-?(? (?:eq|ne|lt|le|gt|ge) )
16301             [[:blank:]\h]+
16302             (?(?&word))
16303             )
16304             )
16305             (?
16306             (?:
16307             (?!\bv\()(?[a-zA-Z]\w*)
16308             \(
16309             [[:blank:]\h]*
16310             (?
16311             (?> (?&func_words) )?
16312             )
16313             [[:blank:]\h]*
16314             \)
16315             )
16316             |
16317             (?:
16318             ( # paren group 1 (full function)
16319             (?!\bv\() # Take care to avoid catching modern-style variable v()
16320             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16321             (? # paren group 2 (parens)
16322             \(
16323             (? # paren group 3 (contents of parens)
16324             (?:
16325             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16326             |
16327             (?&paren_group) # Recurse to named capture group
16328             )*
16329             )
16330             \)
16331             )
16332             )
16333             )
16334             )
16335             (?
16336             (?:
16337             (?
16338             (?:
16339             (?&word)
16340             [[:blank:]\h]*\,[[:blank:]\h]*
16341             )*
16342             (?&word)
16343             )
16344             (?:
16345             [[:blank:]\h]*\,[[:blank:]\h]*
16346             (? (?&word) )
16347             )?
16348             )
16349             |
16350             (?:
16351             (? (?&word) )
16352             [[:blank:]\h]*\,[[:blank:]\h]*
16353             (? (?-2) )
16354             )
16355             |
16356             (?:
16357             (? (?&word) )
16358             )
16359             )
16360             (?
16361             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
16362             |
16363             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
16364             )
16365             (?
16366             (?:
16367             (?: (?&substring)[[:blank:]\h]+(?&string) )
16368             )
16369             |
16370             (?:
16371             (?: (?&substring) )
16372             )
16373             )
16374             (?
16375             (?:
16376             (?(?&word))
16377             [[:blank:]\h]+
16378             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
16379             [[:blank:]\h]+
16380             (?(?&word))
16381             )
16382             )
16383             (?
16384             (?:
16385             (?$Regexp::Common::Apache2::REGEXP->{cstring})
16386             )
16387             |
16388             (?:
16389             (? (?&variable) )
16390             )
16391             |
16392             (?:
16393             \$(?\{)?(?${DIGIT})(?()\})
16394             )
16395             )
16396             (?
16397             (?:
16398             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
16399             )
16400             |
16401             (?:
16402             \%\{
16403             (?:
16404             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
16405             )
16406             \}
16407             )
16408             |
16409             (?:
16410             \%\{
16411             (?:
16412             (?${VARNAME})
16413             )
16414             \}
16415             )
16416             |
16417             (?:
16418             \bv\(
16419             [[:blank:]\h]*
16420             (?["'])
16421             (?:
16422             (?${VARNAME})
16423             )
16424             [[:blank:]\h]*
16425             \g{var_quote}
16426             \)
16427             )
16428             |
16429             (?:
16430             (?:^|\A|(?
16431             (?
16432             \$(?\{)?
16433             (?${DIGIT})
16434             (?()\})
16435             )
16436             )
16437             )
16438             (?
16439             (?:
16440             (?
16441             (?$IPv4)
16442             |
16443             (?$IPv6)
16444             )
16445             )
16446             |
16447             (?:
16448             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16449             )
16450             |
16451             (?:
16452             (?['"])
16453             (?:
16454             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16455             )
16456             \g{word_quote}
16457             )
16458             |
16459             (?:
16460             (?['"])
16461             (?:
16462             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16463             )
16464             \g{word_quote}
16465             )
16466             |
16467             (?:
16468             (? (?: (?-2)\. )+ (?-2) )
16469             )
16470             |
16471             (?:
16472             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16473             )
16474             |
16475             (?:
16476             (?(?&variable))
16477             )
16478             |
16479             (?:
16480             (? (?&function_recur) )
16481             )
16482             |
16483             (?:
16484             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16485             )
16486             )
16487             (?
16488             (?:
16489             (?
16490             (?$IPv4)
16491             |
16492             (?$IPv6)
16493             )
16494             )
16495             |
16496             (?:
16497             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16498             )
16499             |
16500             (?:
16501             (?['"])
16502             (?:
16503             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16504             )
16505             \g{word_quote}
16506             )
16507             |
16508             (?:
16509             (?['"])
16510             (?:
16511             (? (?&string) )
16512             )
16513             \g{word_quote}
16514             )
16515             |
16516             (?:
16517             (? (?: (?-2)\. )+ (?-2) )
16518             )
16519             |
16520             (?:
16521             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16522             )
16523             |
16524             (?:
16525             (?(?&variable))
16526             )
16527             |
16528             (?:
16529             (? (?&function_recur) )
16530             )
16531             |
16532             (?:
16533             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16534             )
16535             )
16536             (?
16537             (?:
16538             (? (?&word) )
16539             [[:blank:]\h]*\,[[:blank:]\h]*
16540             (? (?-2) )
16541             )
16542             |
16543             (?:
16544             (? (?&word) )
16545             )
16546             )
16547             )
16548             /x;
16549              
16550             ## word "-eq" word | word "eq" word
16551             ## | word "-ne" word | word "ne" word
16552             ## | word "-lt" word | word "lt" word
16553             ## | word "-le" word | word "le" word
16554             ## | word "-gt" word | word "gt" word
16555             ## | word "-ge" word | word "ge" word
16556 28         68080 $REGEXP_LEGACY->{integercomp} = qr/
16557             (?
16558             (?(?&word))
16559             [[:blank:]\h]+
16560             \-?(?eq|ne|lt|le|gt|ge)
16561             [[:blank:]\h]+
16562             (?(?&word))
16563             )
16564             (?(DEFINE)
16565             (?
16566             (?:
16567             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16568             (?
16569             (?&stringcomp)
16570             )
16571             )
16572             )
16573             |
16574             (?:
16575             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16576             (?
16577             (?&integercomp_recur)
16578             )
16579             )
16580             )
16581             |
16582             (?:
16583             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
16584             (?:(?<=\W)|(?<=^)|(?<=\A))
16585             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
16586             [[:blank:]\h]+
16587             (? (?&word_lax) )
16588             )
16589             )
16590             |
16591             (?:
16592             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
16593             (? (?&word_lax) )
16594             [[:blank:]\h]+
16595             (?:
16596             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
16597             |
16598             (?:
16599             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
16600             )
16601             )
16602             [[:blank:]\h]+
16603             (? (?&word_lax) )
16604             )
16605             )
16606             |
16607             (?:
16608             (? (?&word_lax) )
16609             [[:blank:]\h]+
16610             \-?in
16611             [[:blank:]\h]+
16612             (? (?&listfunc) )
16613             )
16614             |
16615             (?:
16616             (? (?&word) )
16617             [[:blank:]\h]+
16618             (? [\=|\!]\~ )
16619             [[:blank:]\h]+
16620             $Regexp::Common::Apache2::REGEXP->{regex}
16621             )
16622             |
16623             (?
16624             (?=)
16625             (?(?&word))
16626             [[:blank:]\h]+
16627             (?[\=\=|\=|\!\=])
16628             [[:blank:]\h]+
16629             (?(?®ex))
16630             )
16631             |
16632             (?:
16633             (? (?&word) )
16634             [[:blank:]\h]+
16635             \-?in
16636             [[:blank:]\h]+
16637             \{
16638             [[:blank:]\h]*
16639             (? (?&words) )
16640             [[:blank:]\h]*
16641             \}
16642             )
16643             )
16644             (?
16645             (?:
16646             (?!\bv\()(?[a-zA-Z]\w*)
16647             \(
16648             [[:blank:]\h]*
16649             (?
16650             (?> (?&func_words) )?
16651             )
16652             [[:blank:]\h]*
16653             \)
16654             )
16655             |
16656             (?:
16657             ( # paren group 1 (full function)
16658             (?!\bv\() # Take care to avoid catching modern-style variable v()
16659             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16660             (? # paren group 2 (parens)
16661             \(
16662             (? # paren group 3 (contents of parens)
16663             (?:
16664             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16665             |
16666             (?&paren_group) # Recurse to named capture group
16667             )*
16668             )
16669             \)
16670             )
16671             )
16672             )
16673             )
16674             (?
16675             (?:
16676             (?
16677             (?:
16678             (?&word)
16679             [[:blank:]\h]*\,[[:blank:]\h]*
16680             )*
16681             (?&word)
16682             )
16683             (?:
16684             [[:blank:]\h]*\,[[:blank:]\h]*
16685             (? (?&word) )
16686             )?
16687             )
16688             |
16689             (?:
16690             (? (?&word) )
16691             [[:blank:]\h]*\,[[:blank:]\h]*
16692             (? (?-2) )
16693             )
16694             |
16695             (?:
16696             (? (?&word) )
16697             )
16698             )
16699             (?
16700             (?:
16701             (?(?&word))
16702             [[:blank:]\h]+
16703             \-?(? (?:eq|ne|lt|le|gt|ge) )
16704             [[:blank:]\h]+
16705             (?(?&word))
16706             )
16707             )
16708             (?
16709             (?:
16710             (?!\bv\()(?[a-zA-Z]\w*)
16711             \(
16712             [[:blank:]\h]*
16713             (?
16714             (?> (?&func_words) )?
16715             )
16716             [[:blank:]\h]*
16717             \)
16718             )
16719             |
16720             (?:
16721             ( # paren group 1 (full function)
16722             (?!\bv\() # Take care to avoid catching modern-style variable v()
16723             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16724             (? # paren group 2 (parens)
16725             \(
16726             (? # paren group 3 (contents of parens)
16727             (?:
16728             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16729             |
16730             (?&paren_group) # Recurse to named capture group
16731             )*
16732             )
16733             \)
16734             )
16735             )
16736             )
16737             )
16738             (?
16739             (?:
16740             (?
16741             (?:
16742             (?&word)
16743             [[:blank:]\h]*\,[[:blank:]\h]*
16744             )*
16745             (?&word)
16746             )
16747             (?:
16748             [[:blank:]\h]*\,[[:blank:]\h]*
16749             (? (?&word) )
16750             )?
16751             )
16752             |
16753             (?:
16754             (? (?&word) )
16755             [[:blank:]\h]*\,[[:blank:]\h]*
16756             (? (?-2) )
16757             )
16758             |
16759             (?:
16760             (? (?&word) )
16761             )
16762             )
16763             (?
16764             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
16765             |
16766             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
16767             )
16768             (?
16769             (?:
16770             (?: (?&substring)[[:blank:]\h]+(?&string) )
16771             )
16772             |
16773             (?:
16774             (?: (?&substring) )
16775             )
16776             )
16777             (?
16778             (?:
16779             (?(?&word))
16780             [[:blank:]\h]+
16781             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
16782             [[:blank:]\h]+
16783             (?(?&word))
16784             )
16785             )
16786             (?
16787             (?:
16788             (?$Regexp::Common::Apache2::REGEXP->{cstring})
16789             )
16790             |
16791             (?:
16792             (? (?&variable) )
16793             )
16794             |
16795             (?:
16796             \$(?\{)?(?${DIGIT})(?()\})
16797             )
16798             )
16799             (?
16800             (?:
16801             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
16802             )
16803             |
16804             (?:
16805             \%\{
16806             (?:
16807             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
16808             )
16809             \}
16810             )
16811             |
16812             (?:
16813             \%\{
16814             (?:
16815             (?${VARNAME})
16816             )
16817             \}
16818             )
16819             |
16820             (?:
16821             \bv\(
16822             [[:blank:]\h]*
16823             (?["'])
16824             (?:
16825             (?${VARNAME})
16826             )
16827             [[:blank:]\h]*
16828             \g{var_quote}
16829             \)
16830             )
16831             |
16832             (?:
16833             (?:^|\A|(?
16834             (?
16835             \$(?\{)?
16836             (?${DIGIT})
16837             (?()\})
16838             )
16839             )
16840             )
16841             (?
16842             (?:
16843             (?
16844             (?$IPv4)
16845             |
16846             (?$IPv6)
16847             )
16848             )
16849             |
16850             (?:
16851             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16852             )
16853             |
16854             (?:
16855             (?['"])
16856             (?:
16857             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16858             )
16859             \g{word_quote}
16860             )
16861             |
16862             (?:
16863             (?['"])
16864             (?:
16865             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16866             )
16867             \g{word_quote}
16868             )
16869             |
16870             (?:
16871             (? (?: (?-2)\. )+ (?-2) )
16872             )
16873             |
16874             (?:
16875             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16876             )
16877             |
16878             (?:
16879             (?(?&variable))
16880             )
16881             |
16882             (?:
16883             (? (?&function) )
16884             )
16885             |
16886             (?:
16887             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16888             )
16889             )
16890             (?
16891             (?:
16892             (?
16893             (?$IPv4)
16894             |
16895             (?$IPv6)
16896             )
16897             )
16898             |
16899             (?:
16900             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16901             )
16902             |
16903             (?:
16904             (?['"])
16905             (?:
16906             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16907             )
16908             \g{word_quote}
16909             )
16910             |
16911             (?:
16912             (?['"])
16913             (?:
16914             (? (?&string) )
16915             )
16916             \g{word_quote}
16917             )
16918             |
16919             (?:
16920             (? (?: (?-2)\. )+ (?-2) )
16921             )
16922             |
16923             (?:
16924             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16925             )
16926             |
16927             (?:
16928             (?(?&variable))
16929             )
16930             |
16931             (?:
16932             (? (?&function) )
16933             )
16934             |
16935             (?:
16936             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16937             )
16938             )
16939             (?
16940             (?:
16941             (? (?&word) )
16942             [[:blank:]\h]*\,[[:blank:]\h]*
16943             (? (?-2) )
16944             )
16945             |
16946             (?:
16947             (? (?&word) )
16948             )
16949             )
16950             )
16951             /x;
16952            
16953             ## listfuncname "(" words ")"
16954             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
16955             #(??{$Regexp::Common::Apache2::REGEXP_LEGACY->{words}})
16956 28         98505 $REGEXP_LEGACY->{listfunc} = qr/
16957             (?
16958             (?:
16959             (?!\bv\()(?[a-zA-Z]\w*)
16960             \(
16961             [[:blank:]\h]*
16962             (?
16963             (?> (?&func_words) )?
16964             )
16965             [[:blank:]\h]*
16966             \)
16967             )
16968             |
16969             (?:
16970             ( # paren group 1 (full function)
16971             (?!\bv\() # Take care to avoid catching modern-style variable v()
16972             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
16973             (? # paren group 2 (parens)
16974             \(
16975             (? # paren group 3 (contents of parens)
16976             (?:
16977             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16978             |
16979             (?&paren_group) # Recurse to named capture group
16980             )*
16981             )
16982             \)
16983             )
16984             )
16985             )
16986             )
16987             (?(DEFINE)
16988             (?
16989             (?:
16990             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16991             (?
16992             (?&stringcomp)
16993             )
16994             )
16995             )
16996             |
16997             (?:
16998             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
16999             (?
17000             (?&integercomp)
17001             )
17002             )
17003             )
17004             |
17005             (?:
17006             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
17007             (?:(?<=\W)|(?<=^)|(?<=\A))
17008             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
17009             [[:blank:]\h]+
17010             (? (?&word_lax) )
17011             )
17012             )
17013             |
17014             (?:
17015             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
17016             (? (?&word_lax) )
17017             [[:blank:]\h]+
17018             (?:
17019             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
17020             |
17021             (?:
17022             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
17023             )
17024             )
17025             [[:blank:]\h]+
17026             (? (?&word_lax) )
17027             )
17028             )
17029             |
17030             (?:
17031             (? (?&word_lax) )
17032             [[:blank:]\h]+
17033             \-?in
17034             [[:blank:]\h]+
17035             (? (?&listfunc_recur) )
17036             )
17037             |
17038             (?:
17039             (? (?&word) )
17040             [[:blank:]\h]+
17041             (? [\=|\!]\~ )
17042             [[:blank:]\h]+
17043             $Regexp::Common::Apache2::REGEXP->{regex}
17044             )
17045             |
17046             (?
17047             (?=)
17048             (?(?&word))
17049             [[:blank:]\h]+
17050             (?[\=\=|\=|\!\=])
17051             [[:blank:]\h]+
17052             (?(?®ex))
17053             )
17054             |
17055             (?:
17056             (? (?&word) )
17057             [[:blank:]\h]+
17058             \-?in
17059             [[:blank:]\h]+
17060             \{
17061             [[:blank:]\h]*
17062             (? (?&words) )
17063             [[:blank:]\h]*
17064             \}
17065             )
17066             )
17067             (?
17068             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_true})
17069             |
17070             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{is_false})
17071             |
17072             (?:
17073             \(
17074             [[:blank:]\h]*
17075             (? (?&cond) )
17076             [[:blank:]\h]*
17077             \)
17078             )
17079             |
17080             (?:
17081             \![[:blank:]\h]*
17082             (? (?-2) )
17083             )
17084             |
17085             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b)|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
17086             (?(?&comp))
17087             )
17088             |
17089             (?:
17090             (?(?=(?:.+?)\&\&(?:.+?))
17091             (? (?: (?-2) )+ )
17092             [[:blank:]\h]*
17093             \&\&
17094             [[:blank:]\h]*
17095             (? (?: (?-2) )+ )
17096             )
17097             )
17098             |
17099             (?:
17100             (?(?=(?:.+?)\|\|(?:.+?))
17101             (? (?: (?-2) )+ )
17102             [[:blank:]\h]*
17103             \|\|
17104             [[:blank:]\h]*
17105             (? (?: (?-2) )+ )
17106             )
17107             (?()
17108             (?()
17109             (*ACCEPT)
17110             )
17111             )
17112             )
17113             |
17114             (?:
17115             (?(?&variable))
17116             )
17117             )
17118             (?
17119             (?:
17120             (?!\bv\()(?[a-zA-Z]\w*)
17121             \(
17122             [[:blank:]\h]*
17123             (?
17124             (?> (?&func_words) )?
17125             )
17126             [[:blank:]\h]*
17127             \)
17128             )
17129             |
17130             (?:
17131             ( # paren group 1 (full function)
17132             (?!\bv\() # Take care to avoid catching modern-style variable v()
17133             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
17134             (? # paren group 2 (parens)
17135             \(
17136             (? # paren group 3 (contents of parens)
17137             (?:
17138             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
17139             |
17140             (?&paren_group) # Recurse to named capture group
17141             )*
17142             )
17143             \)
17144             )
17145             )
17146             )
17147             )
17148             (?
17149             (?:
17150             (?
17151             (?:
17152             (?&word)
17153             [[:blank:]\h]*\,[[:blank:]\h]*
17154             )*
17155             (?&word)
17156             )
17157             (?:
17158             [[:blank:]\h]*\,[[:blank:]\h]*
17159             (? (?&word) )
17160             )?
17161             )
17162             |
17163             (?:
17164             (? (?&word) )
17165             [[:blank:]\h]*\,[[:blank:]\h]*
17166             (? (?-2) )
17167             )
17168             |
17169             (?:
17170             (? (?&word) )
17171             )
17172             )
17173             (?
17174             (?:
17175             (?(?&word))
17176             [[:blank:]\h]+
17177             \-?(? (?:eq|ne|lt|le|gt|ge) )
17178             [[:blank:]\h]+
17179             (?(?&word))
17180             )
17181             )
17182             (?
17183             (?:
17184             (?!\bv\()(?[a-zA-Z]\w*)
17185             \(
17186             [[:blank:]\h]*
17187             (?
17188             (?> (?&func_words) )?
17189             )
17190             [[:blank:]\h]*
17191             \)
17192             )
17193             |
17194             (?:
17195             ( # paren group 1 (full function)
17196             (?!\bv\() # Take care to avoid catching modern-style variable v()
17197             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
17198             (? # paren group 2 (parens)
17199             \(
17200             (? # paren group 3 (contents of parens)
17201             (?:
17202             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
17203             |
17204             (?&paren_group) # Recurse to named capture group
17205             )*
17206             )
17207             \)
17208             )
17209             )
17210             )
17211             )
17212             (?
17213             (?:
17214             (?
17215             (?:
17216             (?&word)
17217             [[:blank:]\h]*\,[[:blank:]\h]*
17218             )*
17219             (?&word)
17220             )
17221             (?:
17222             [[:blank:]\h]*\,[[:blank:]\h]*
17223             (? (?&word) )
17224             )?
17225             )
17226             |
17227             (?:
17228             (? (?&word) )
17229             [[:blank:]\h]*\,[[:blank:]\h]*
17230             (? (?-2) )
17231             )
17232             |
17233             (?:
17234             (? (?&word) )
17235             )
17236             )
17237             (?
17238             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
17239             |
17240             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
17241             )
17242             (?
17243             (?:
17244             (?: (?&substring)[[:blank:]\h]+(?&string) )
17245             )
17246             |
17247             (?:
17248             (?: (?&substring) )
17249             )
17250             )
17251             (?
17252             (?:
17253             (?(?&word))
17254             [[:blank:]\h]+
17255             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
17256             [[:blank:]\h]+
17257             (?(?&word))
17258             )
17259             )
17260             (?
17261             (?:
17262             (?$Regexp::Common::Apache2::REGEXP->{cstring})
17263             )
17264             |
17265             (?:
17266             (? (?&variable) )
17267             )
17268             |
17269             (?:
17270             \$(?\{)?(?${DIGIT})(?()\})
17271             )
17272             )
17273             (?
17274             (?:
17275             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
17276             )
17277             |
17278             (?:
17279             \%\{
17280             (?:
17281             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
17282             )
17283             \}
17284             )
17285             |
17286             (?:
17287             \%\{
17288             (?:
17289             (?${VARNAME})
17290             )
17291             \}
17292             )
17293             |
17294             (?:
17295             \bv\(
17296             [[:blank:]\h]*
17297             (?["'])
17298             (?:
17299             (?${VARNAME})
17300             )
17301             [[:blank:]\h]*
17302             \g{var_quote}
17303             \)
17304             )
17305             |
17306             (?:
17307             (?:^|\A|(?
17308             (?
17309             \$(?\{)?
17310             (?${DIGIT})
17311             (?()\})
17312             )
17313             )
17314             )
17315             (?
17316             (?:
17317             (?
17318             (?$IPv4)
17319             |
17320             (?$IPv6)
17321             )
17322             )
17323             |
17324             (?:
17325             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
17326             )
17327             |
17328             (?:
17329             (?['"])
17330             (?:
17331             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17332             )
17333             \g{word_quote}
17334             )
17335             |
17336             (?:
17337             (?['"])
17338             (?:
17339             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17340             )
17341             \g{word_quote}
17342             )
17343             |
17344             (?:
17345             (? (?: (?-2)\. )+ (?-2) )
17346             )
17347             |
17348             (?:
17349             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
17350             )
17351             |
17352             (?:
17353             (?(?&variable))
17354             )
17355             |
17356             (?:
17357             (? (?&function) )
17358             )
17359             |
17360             (?:
17361             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
17362             )
17363             )
17364             (?
17365             (?:
17366             (?
17367             (?$IPv4)
17368             |
17369             (?$IPv6)
17370             )
17371             )
17372             |
17373             (?:
17374             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
17375             )
17376             |
17377             (?:
17378             (?['"])
17379             (?:
17380             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17381             )
17382             \g{word_quote}
17383             )
17384             |
17385             (?:
17386             (?['"])
17387             (?:
17388             (? (?&string) )
17389             )
17390             \g{word_quote}
17391             )
17392             |
17393             (?:
17394             (? (?: (?-2)\. )+ (?-2) )
17395             )
17396             |
17397             (?:
17398             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
17399             )
17400             |
17401             (?:
17402             (?(?&variable))
17403             )
17404             |
17405             (?:
17406             (? (?&function) )
17407             )
17408             |
17409             (?:
17410             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
17411             )
17412             )
17413             (?
17414             (?:
17415             (? (?&word) )
17416             [[:blank:]\h]*\,[[:blank:]\h]*
17417             (? (?-2) )
17418             )
17419             |
17420             (?:
17421             (? (?&word) )
17422             )
17423             )
17424             )
17425             /x;
17426              
17427             ## substring
17428             ## | string substring
17429 28         73125 $REGEXP_LEGACY->{string} = qr/
17430             (?
17431             (?:
17432             (?&substring) # Recurse on the entire substring regexp
17433             )
17434             |
17435             (?:
17436             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
17437             )
17438             )
17439             (?(DEFINE)
17440             (?
17441             (?:
17442             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
17443             (?
17444             (?&stringcomp)
17445             )
17446             )
17447             )
17448             |
17449             (?:
17450             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
17451             (?
17452             (?&integercomp)
17453             )
17454             )
17455             )
17456             |
17457             (?:
17458             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
17459             (?:(?<=\W)|(?<=^)|(?<=\A))
17460             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
17461             [[:blank:]\h]+
17462             (? (?&word_lax) )
17463             )
17464             )
17465             |
17466             (?:
17467             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
17468             (? (?&word_lax) )
17469             [[:blank:]\h]+
17470             (?:
17471             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
17472             |
17473             (?:
17474             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
17475             )
17476             )
17477             [[:blank:]\h]+
17478             (? (?&word_lax) )
17479             )
17480             )
17481             |
17482             (?:
17483             (? (?&word_lax) )
17484             [[:blank:]\h]+
17485             \-?in
17486             [[:blank:]\h]+
17487             (? (?&listfunc) )
17488             )
17489             |
17490             (?:
17491             (? (?&word) )
17492             [[:blank:]\h]+
17493             (? [\=|\!]\~ )
17494             [[:blank:]\h]+
17495             $Regexp::Common::Apache2::REGEXP->{regex}
17496             )
17497             |
17498             (?
17499             (?=)
17500             (?(?&word))
17501             [[:blank:]\h]+
17502             (?[\=\=|\=|\!\=])
17503             [[:blank:]\h]+
17504             (?(?®ex))
17505             )
17506             |
17507             (?:
17508             (? (?&word) )
17509             [[:blank:]\h]+
17510             \-?in
17511             [[:blank:]\h]+
17512             \{
17513             [[:blank:]\h]*
17514             (? (?&words) )
17515             [[:blank:]\h]*
17516             \}
17517             )
17518             )
17519             (?
17520             (?:
17521             (?!\bv\()(?[a-zA-Z]\w*)
17522             \(
17523             [[:blank:]\h]*
17524             (?
17525             (?> (?&func_words) )?
17526             )
17527             [[:blank:]\h]*
17528             \)
17529             )
17530             |
17531             (?:
17532             ( # paren group 1 (full function)
17533             (?!\bv\() # Take care to avoid catching modern-style variable v()
17534             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
17535             (? # paren group 2 (parens)
17536             \(
17537             (? # paren group 3 (contents of parens)
17538             (?:
17539             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
17540             |
17541             (?&paren_group) # Recurse to named capture group
17542             )*
17543             )
17544             \)
17545             )
17546             )
17547             )
17548             )
17549             (?
17550             (?:
17551             (?
17552             (?:
17553             (?&word)
17554             [[:blank:]\h]*\,[[:blank:]\h]*
17555             )*
17556             (?&word)
17557             )
17558             (?:
17559             [[:blank:]\h]*\,[[:blank:]\h]*
17560             (? (?&word) )
17561             )?
17562             )
17563             |
17564             (?:
17565             (? (?&word) )
17566             [[:blank:]\h]*\,[[:blank:]\h]*
17567             (? (?-2) )
17568             )
17569             |
17570             (?:
17571             (? (?&word) )
17572             )
17573             )
17574             (?
17575             (?:
17576             (?(?&word))
17577             [[:blank:]\h]+
17578             \-?(? (?:eq|ne|lt|le|gt|ge) )
17579             [[:blank:]\h]+
17580             (?(?&word))
17581             )
17582             )
17583             (?
17584             (?:
17585             (?!\bv\()(?[a-zA-Z]\w*)
17586             \(
17587             [[:blank:]\h]*
17588             (?
17589             (?> (?&func_words) )?
17590             )
17591             [[:blank:]\h]*
17592             \)
17593             )
17594             |
17595             (?:
17596             ( # paren group 1 (full function)
17597             (?!\bv\() # Take care to avoid catching modern-style variable v()
17598             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
17599             (? # paren group 2 (parens)
17600             \(
17601             (? # paren group 3 (contents of parens)
17602             (?:
17603             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
17604             |
17605             (?&paren_group) # Recurse to named capture group
17606             )*
17607             )
17608             \)
17609             )
17610             )
17611             )
17612             )
17613             (?
17614             (?:
17615             (?
17616             (?:
17617             (?&word)
17618             [[:blank:]\h]*\,[[:blank:]\h]*
17619             )*
17620             (?&word)
17621             )
17622             (?:
17623             [[:blank:]\h]*\,[[:blank:]\h]*
17624             (? (?&word) )
17625             )?
17626             )
17627             |
17628             (?:
17629             (? (?&word) )
17630             [[:blank:]\h]*\,[[:blank:]\h]*
17631             (? (?-2) )
17632             )
17633             |
17634             (?:
17635             (? (?&word) )
17636             )
17637             )
17638             (?
17639             (?:
17640             (?: (?&substring)[[:blank:]\h]+(?&string_recur) )
17641             )
17642             |
17643             (?:
17644             (?: (?&substring) )
17645             )
17646             )
17647             (?
17648             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
17649             |
17650             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
17651             )
17652             (?
17653             (?:
17654             (?(?&word))
17655             [[:blank:]\h]+
17656             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
17657             [[:blank:]\h]+
17658             (?(?&word))
17659             )
17660             )
17661             (?
17662             (?:
17663             (?$Regexp::Common::Apache2::REGEXP->{cstring})
17664             )
17665             |
17666             (?:
17667             (? (?&variable) )
17668             )
17669             |
17670             (?:
17671             \$(?\{)?(?${DIGIT})(?()\})
17672             )
17673             )
17674             (?
17675             (?:
17676             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
17677             )
17678             |
17679             (?:
17680             \%\{
17681             (?:
17682             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
17683             )
17684             \}
17685             )
17686             |
17687             (?:
17688             \%\{
17689             (?:
17690             (?${VARNAME})
17691             )
17692             \}
17693             )
17694             |
17695             (?:
17696             \bv\(
17697             [[:blank:]\h]*
17698             (?["'])
17699             (?:
17700             (?${VARNAME})
17701             )
17702             [[:blank:]\h]*
17703             \g{var_quote}
17704             \)
17705             )
17706             |
17707             (?:
17708             (?:^|\A|(?
17709             (?
17710             \$(?\{)?
17711             (?${DIGIT})
17712             (?()\})
17713             )
17714             )
17715             )
17716             (?
17717             (?:
17718             (?
17719             (?$IPv4)
17720             |
17721             (?$IPv6)
17722             )
17723             )
17724             |
17725             (?:
17726             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
17727             )
17728             |
17729             (?:
17730             (?['"])
17731             (?:
17732             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17733             )
17734             \g{word_quote}
17735             )
17736             |
17737             (?:
17738             (?['"])
17739             (?:
17740             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17741             )
17742             \g{word_quote}
17743             )
17744             |
17745             (?:
17746             (? (?: (?-2)\. )+ (?-2) )
17747             )
17748             |
17749             (?:
17750             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
17751             )
17752             |
17753             (?:
17754             (?(?&variable))
17755             )
17756             |
17757             (?:
17758             (? (?&function) )
17759             )
17760             |
17761             (?:
17762             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
17763             )
17764             )
17765             (?
17766             (?:
17767             (?
17768             (?$IPv4)
17769             |
17770             (?$IPv6)
17771             )
17772             )
17773             |
17774             (?:
17775             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
17776             )
17777             |
17778             (?:
17779             (?['"])
17780             (?:
17781             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
17782             )
17783             \g{word_quote}
17784             )
17785             |
17786             (?:
17787             (?['"])
17788             (?:
17789             (? (?&string_recur) )
17790             )
17791             \g{word_quote}
17792             )
17793             |
17794             (?:
17795             (? (?: (?-2)\. )+ (?-2) )
17796             )
17797             |
17798             (?:
17799             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
17800             )
17801             |
17802             (?:
17803             (?(?&variable))
17804             )
17805             |
17806             (?:
17807             (? (?&function) )
17808             )
17809             |
17810             (?:
17811             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
17812             )
17813             )
17814             (?
17815             (?:
17816             (? (?&word) )
17817             [[:blank:]\h]*\,[[:blank:]\h]*
17818             (? (?-2) )
17819             )
17820             |
17821             (?:
17822             (? (?&word) )
17823             )
17824             )
17825             )/x;
17826              
17827             ## word "==" word
17828             ## | word "!=" word
17829             ## | word "<" word
17830             ## | word "<=" word
17831             ## | word ">" word
17832             ## | word ">=" word
17833 28         76016 $REGEXP_LEGACY->{stringcomp} = qr/
17834             (?
17835             (?(?&word))
17836             [[:blank:]\h]+
17837             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
17838             [[:blank:]\h]+
17839             (?(?&word))
17840             )
17841             (?(DEFINE)
17842             (?
17843             (?:
17844             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
17845             (?
17846             (?&stringcomp_recur)
17847             )
17848             )
17849             )
17850             |
17851             (?:
17852             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
17853             (?
17854             (?&integercomp)
17855             )
17856             )
17857             )
17858             |
17859             (?:
17860             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
17861             (?:(?<=\W)|(?<=^)|(?<=\A))
17862             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
17863             [[:blank:]\h]+
17864             (? (?&word_lax) )
17865             )
17866             )
17867             |
17868             (?:
17869             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
17870             (? (?&word_lax) )
17871             [[:blank:]\h]+
17872             (?:
17873             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
17874             |
17875             (?:
17876             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
17877             )
17878             )
17879             [[:blank:]\h]+
17880             (? (?&word_lax) )
17881             )
17882             )
17883             |
17884             (?:
17885             (? (?&word_lax) )
17886             [[:blank:]\h]+
17887             \-?in
17888             [[:blank:]\h]+
17889             (? (?&listfunc) )
17890             )
17891             |
17892             (?:
17893             (? (?&word) )
17894             [[:blank:]\h]+
17895             (? [\=|\!]\~ )
17896             [[:blank:]\h]+
17897             $Regexp::Common::Apache2::REGEXP->{regex}
17898             )
17899             |
17900             (?
17901             (?=)
17902             (?(?&word))
17903             [[:blank:]\h]+
17904             (?[\=\=|\=|\!\=])
17905             [[:blank:]\h]+
17906             (?(?®ex))
17907             )
17908             |
17909             (?:
17910             (? (?&word) )
17911             [[:blank:]\h]+
17912             \-?in
17913             [[:blank:]\h]+
17914             \{
17915             [[:blank:]\h]*
17916             (? (?&words) )
17917             [[:blank:]\h]*
17918             \}
17919             )
17920             )
17921             (?
17922             (?:
17923             (?!\bv\()(?[a-zA-Z]\w*)
17924             \(
17925             [[:blank:]\h]*
17926             (?
17927             (?> (?&func_words) )?
17928             )
17929             [[:blank:]\h]*
17930             \)
17931             )
17932             |
17933             (?:
17934             ( # paren group 1 (full function)
17935             (?!\bv\() # Take care to avoid catching modern-style variable v()
17936             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
17937             (? # paren group 2 (parens)
17938             \(
17939             (? # paren group 3 (contents of parens)
17940             (?:
17941             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
17942             |
17943             (?&paren_group) # Recurse to named capture group
17944             )*
17945             )
17946             \)
17947             )
17948             )
17949             )
17950             )
17951             (?
17952             (?:
17953             (?
17954             (?:
17955             (?&word)
17956             [[:blank:]\h]*\,[[:blank:]\h]*
17957             )*
17958             (?&word)
17959             )
17960             (?:
17961             [[:blank:]\h]*\,[[:blank:]\h]*
17962             (? (?&word) )
17963             )?
17964             )
17965             |
17966             (?:
17967             (? (?&word) )
17968             [[:blank:]\h]*\,[[:blank:]\h]*
17969             (? (?-2) )
17970             )
17971             |
17972             (?:
17973             (? (?&word) )
17974             )
17975             )
17976             (?
17977             (?:
17978             (?(?&word))
17979             [[:blank:]\h]+
17980             \-?(? (?:eq|ne|lt|le|gt|ge) )
17981             [[:blank:]\h]+
17982             (?(?&word))
17983             )
17984             )
17985             (?
17986             (?:
17987             (?!\bv\()(?[a-zA-Z]\w*)
17988             \(
17989             [[:blank:]\h]*
17990             (?
17991             (?> (?&func_words) )?
17992             )
17993             [[:blank:]\h]*
17994             \)
17995             )
17996             |
17997             (?:
17998             ( # paren group 1 (full function)
17999             (?!\bv\() # Take care to avoid catching modern-style variable v()
18000             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
18001             (? # paren group 2 (parens)
18002             \(
18003             (? # paren group 3 (contents of parens)
18004             (?:
18005             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
18006             |
18007             (?&paren_group) # Recurse to named capture group
18008             )*
18009             )
18010             \)
18011             )
18012             )
18013             )
18014             )
18015             (?
18016             (?:
18017             (?
18018             (?:
18019             (?&word)
18020             [[:blank:]\h]*\,[[:blank:]\h]*
18021             )*
18022             (?&word)
18023             )
18024             (?:
18025             [[:blank:]\h]*\,[[:blank:]\h]*
18026             (? (?&word) )
18027             )?
18028             )
18029             |
18030             (?:
18031             (? (?&word) )
18032             [[:blank:]\h]*\,[[:blank:]\h]*
18033             (? (?-2) )
18034             )
18035             |
18036             (?:
18037             (? (?&word) )
18038             )
18039             )
18040             (?
18041             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
18042             |
18043             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
18044             )
18045             (?
18046             (?:
18047             (?: (?&substring)[[:blank:]\h]+(?&string) )
18048             )
18049             |
18050             (?:
18051             (?: (?&substring) )
18052             )
18053             )
18054             (?
18055             (?:
18056             (?(?&word))
18057             [[:blank:]\h]+
18058             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
18059             [[:blank:]\h]+
18060             (?(?&word))
18061             )
18062             )
18063             (?
18064             (?:
18065             (?$Regexp::Common::Apache2::REGEXP->{cstring})
18066             )
18067             |
18068             (?:
18069             (? (?&variable) )
18070             )
18071             |
18072             (?:
18073             \$(?\{)?(?${DIGIT})(?()\})
18074             )
18075             )
18076             (?
18077             (?:
18078             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
18079             )
18080             |
18081             (?:
18082             \%\{
18083             (?:
18084             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
18085             )
18086             \}
18087             )
18088             |
18089             (?:
18090             \%\{
18091             (?:
18092             (?${VARNAME})
18093             )
18094             \}
18095             )
18096             |
18097             (?:
18098             \bv\(
18099             [[:blank:]\h]*
18100             (?["'])
18101             (?:
18102             (?${VARNAME})
18103             )
18104             [[:blank:]\h]*
18105             \g{var_quote}
18106             \)
18107             )
18108             |
18109             (?:
18110             (?:^|\A|(?
18111             (?
18112             \$(?\{)?
18113             (?${DIGIT})
18114             (?()\})
18115             )
18116             )
18117             )
18118             (?
18119             (?:
18120             (?
18121             (?$IPv4)
18122             |
18123             (?$IPv6)
18124             )
18125             )
18126             |
18127             (?:
18128             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
18129             )
18130             |
18131             (?:
18132             (?['"])
18133             (?:
18134             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18135             )
18136             \g{word_quote}
18137             )
18138             |
18139             (?:
18140             (?['"])
18141             (?:
18142             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18143             )
18144             \g{word_quote}
18145             )
18146             |
18147             (?:
18148             (? (?: (?-2)\. )+ (?-2) )
18149             )
18150             |
18151             (?:
18152             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18153             )
18154             |
18155             (?:
18156             (?(?&variable))
18157             )
18158             |
18159             (?:
18160             (? (?&function) )
18161             )
18162             |
18163             (?:
18164             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
18165             )
18166             )
18167             (?
18168             (?:
18169             (?
18170             (?$IPv4)
18171             |
18172             (?$IPv6)
18173             )
18174             )
18175             |
18176             (?:
18177             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
18178             )
18179             |
18180             (?:
18181             (?['"])
18182             (?:
18183             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18184             )
18185             \g{word_quote}
18186             )
18187             |
18188             (?:
18189             (?['"])
18190             (?:
18191             (? (?&string) )
18192             )
18193             \g{word_quote}
18194             )
18195             |
18196             (?:
18197             (? (?: (?-2)\. )+ (?-2) )
18198             )
18199             |
18200             (?:
18201             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18202             )
18203             |
18204             (?:
18205             (?(?&variable))
18206             )
18207             |
18208             (?:
18209             (? (?&function) )
18210             )
18211             |
18212             (?:
18213             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
18214             )
18215             )
18216             (?
18217             (?:
18218             (? (?&word) )
18219             [[:blank:]\h]*\,[[:blank:]\h]*
18220             (? (?-2) )
18221             )
18222             |
18223             (?:
18224             (? (?&word) )
18225             )
18226             )
18227             )
18228             /x;
18229              
18230 28         71451 $REGEXP_LEGACY->{substring} = qr/
18231             (?
18232             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{cstring})
18233             |
18234             (?:
18235             (?&variable)
18236             )
18237             |
18238             (?:
18239             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18240             )
18241             )
18242             (?(DEFINE)
18243             (?
18244             (?:
18245             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
18246             (?
18247             (?&stringcomp)
18248             )
18249             )
18250             )
18251             |
18252             (?:
18253             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
18254             (?
18255             (?&integercomp)
18256             )
18257             )
18258             )
18259             |
18260             (?:
18261             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
18262             (?:(?<=\W)|(?<=^)|(?<=\A))
18263             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
18264             [[:blank:]\h]+
18265             (? (?&word_lax) )
18266             )
18267             )
18268             |
18269             (?:
18270             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
18271             (? (?&word_lax) )
18272             [[:blank:]\h]+
18273             (?:
18274             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
18275             |
18276             (?:
18277             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
18278             )
18279             )
18280             [[:blank:]\h]+
18281             (? (?&word_lax) )
18282             )
18283             )
18284             |
18285             (?:
18286             (? (?&word_lax) )
18287             [[:blank:]\h]+
18288             \-?in
18289             [[:blank:]\h]+
18290             (? (?&listfunc) )
18291             )
18292             |
18293             (?:
18294             (? (?&word) )
18295             [[:blank:]\h]+
18296             (? [\=|\!]\~ )
18297             [[:blank:]\h]+
18298             $Regexp::Common::Apache2::REGEXP->{regex}
18299             )
18300             |
18301             (?
18302             (?=)
18303             (?(?&word))
18304             [[:blank:]\h]+
18305             (?[\=\=|\=|\!\=])
18306             [[:blank:]\h]+
18307             (?(?®ex))
18308             )
18309             |
18310             (?:
18311             (? (?&word) )
18312             [[:blank:]\h]+
18313             \-?in
18314             [[:blank:]\h]+
18315             \{
18316             [[:blank:]\h]*
18317             (? (?&words) )
18318             [[:blank:]\h]*
18319             \}
18320             )
18321             )
18322             (?
18323             (?:
18324             (?!\bv\()(?[a-zA-Z]\w*)
18325             \(
18326             [[:blank:]\h]*
18327             (?
18328             (?> (?&func_words) )?
18329             )
18330             [[:blank:]\h]*
18331             \)
18332             )
18333             |
18334             (?:
18335             ( # paren group 1 (full function)
18336             (?!\bv\() # Take care to avoid catching modern-style variable v()
18337             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
18338             (? # paren group 2 (parens)
18339             \(
18340             (? # paren group 3 (contents of parens)
18341             (?:
18342             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
18343             |
18344             (?&paren_group) # Recurse to named capture group
18345             )*
18346             )
18347             \)
18348             )
18349             )
18350             )
18351             )
18352             (?
18353             (?:
18354             (?
18355             (?:
18356             (?&word)
18357             [[:blank:]\h]*\,[[:blank:]\h]*
18358             )*
18359             (?&word)
18360             )
18361             (?:
18362             [[:blank:]\h]*\,[[:blank:]\h]*
18363             (? (?&word) )
18364             )?
18365             )
18366             |
18367             (?:
18368             (? (?&word) )
18369             [[:blank:]\h]*\,[[:blank:]\h]*
18370             (? (?-2) )
18371             )
18372             |
18373             (?:
18374             (? (?&word) )
18375             )
18376             )
18377             (?
18378             (?:
18379             (?(?&word))
18380             [[:blank:]\h]+
18381             \-?(? (?:eq|ne|lt|le|gt|ge) )
18382             [[:blank:]\h]+
18383             (?(?&word))
18384             )
18385             )
18386             (?
18387             (?:
18388             (?!\bv\()(?[a-zA-Z]\w*)
18389             \(
18390             [[:blank:]\h]*
18391             (?
18392             (?> (?&func_words) )?
18393             )
18394             [[:blank:]\h]*
18395             \)
18396             )
18397             |
18398             (?:
18399             ( # paren group 1 (full function)
18400             (?!\bv\() # Take care to avoid catching modern-style variable v()
18401             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
18402             (? # paren group 2 (parens)
18403             \(
18404             (? # paren group 3 (contents of parens)
18405             (?:
18406             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
18407             |
18408             (?&paren_group) # Recurse to named capture group
18409             )*
18410             )
18411             \)
18412             )
18413             )
18414             )
18415             )
18416             (?
18417             (?:
18418             (?
18419             (?:
18420             (?&word)
18421             [[:blank:]\h]*\,[[:blank:]\h]*
18422             )*
18423             (?&word)
18424             )
18425             (?:
18426             [[:blank:]\h]*\,[[:blank:]\h]*
18427             (? (?&word) )
18428             )?
18429             )
18430             |
18431             (?:
18432             (? (?&word) )
18433             [[:blank:]\h]*\,[[:blank:]\h]*
18434             (? (?-2) )
18435             )
18436             |
18437             (?:
18438             (? (?&word) )
18439             )
18440             )
18441             (?
18442             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
18443             |
18444             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
18445             )
18446             (?
18447             (?:
18448             (?: (?&substring_recur)[[:blank:]\h]+(?&string) )
18449             )
18450             |
18451             (?:
18452             (?: (?&substring_recur) )
18453             )
18454             )
18455             (?
18456             (?:
18457             (?(?&word))
18458             [[:blank:]\h]+
18459             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
18460             [[:blank:]\h]+
18461             (?(?&word))
18462             )
18463             )
18464             (?
18465             (?:
18466             (?$Regexp::Common::Apache2::REGEXP->{cstring})
18467             )
18468             |
18469             (?:
18470             (? (?&variable) )
18471             )
18472             |
18473             (?:
18474             \$(?\{)?(?${DIGIT})(?()\})
18475             )
18476             )
18477             (?
18478             (?:
18479             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
18480             )
18481             |
18482             (?:
18483             \%\{
18484             (?:
18485             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
18486             )
18487             \}
18488             )
18489             |
18490             (?:
18491             \%\{
18492             (?:
18493             (?${VARNAME})
18494             )
18495             \}
18496             )
18497             |
18498             (?:
18499             \bv\(
18500             [[:blank:]\h]*
18501             (?["'])
18502             (?:
18503             (?${VARNAME})
18504             )
18505             [[:blank:]\h]*
18506             \g{var_quote}
18507             \)
18508             )
18509             |
18510             (?:
18511             (?:^|\A|(?
18512             (?
18513             \$(?\{)?
18514             (?${DIGIT})
18515             (?()\})
18516             )
18517             )
18518             )
18519             (?
18520             (?:
18521             (?
18522             (?$IPv4)
18523             |
18524             (?$IPv6)
18525             )
18526             )
18527             |
18528             (?:
18529             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
18530             )
18531             |
18532             (?:
18533             (?['"])
18534             (?:
18535             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18536             )
18537             \g{word_quote}
18538             )
18539             |
18540             (?:
18541             (?['"])
18542             (?:
18543             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18544             )
18545             \g{word_quote}
18546             )
18547             |
18548             (?:
18549             (? (?: (?-2)\. )+ (?-2) )
18550             )
18551             |
18552             (?:
18553             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18554             )
18555             |
18556             (?:
18557             (?(?&variable))
18558             )
18559             |
18560             (?:
18561             (? (?&function) )
18562             )
18563             |
18564             (?:
18565             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
18566             )
18567             )
18568             (?
18569             (?:
18570             (?
18571             (?$IPv4)
18572             |
18573             (?$IPv6)
18574             )
18575             )
18576             |
18577             (?:
18578             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
18579             )
18580             |
18581             (?:
18582             (?['"])
18583             (?:
18584             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18585             )
18586             \g{word_quote}
18587             )
18588             |
18589             (?:
18590             (?['"])
18591             (?:
18592             (? (?&string) )
18593             )
18594             \g{word_quote}
18595             )
18596             |
18597             (?:
18598             (? (?: (?-2)\. )+ (?-2) )
18599             )
18600             |
18601             (?:
18602             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18603             )
18604             |
18605             (?:
18606             (?(?&variable))
18607             )
18608             |
18609             (?:
18610             (? (?&function) )
18611             )
18612             |
18613             (?:
18614             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
18615             )
18616             )
18617             (?
18618             (?:
18619             (? (?&word) )
18620             [[:blank:]\h]*\,[[:blank:]\h]*
18621             (? (?-2) )
18622             )
18623             |
18624             (?:
18625             (? (?&word) )
18626             )
18627             )
18628             )
18629             /x;
18630              
18631             ## "%{" varname "}"
18632             ## | "%{" funcname ":" funcargs "}"
18633             ## | "v('" varname "')"
18634             ## | "%{:" word ":}"
18635             ## | "%{:" cond ":}"
18636             ## | rebackref
18637 28         72807 $REGEXP_LEGACY->{variable} = qr/
18638             (?
18639             (?:
18640             (?:^|\A|(?\{)?(?[a-zA-Z\_]\w*)(?()\})
18641             )
18642             |
18643             (?:
18644             (?:^|\A|(?
18645             (?:
18646             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
18647             )
18648             \}
18649             )
18650             |
18651             (?:
18652             (?:^|\A|(?
18653             (?:
18654             (?${VARNAME})
18655             )
18656             \}
18657             )
18658             |
18659             (?:
18660             \bv\(
18661             [[:blank:]\h]*
18662             (?["'])
18663             (?:
18664             (?${VARNAME})
18665             )
18666             [[:blank:]\h]*
18667             \g{var_quote}
18668             \)
18669             )
18670             |
18671             (?:
18672             (?:^|\A|(?
18673             (?
18674             \$(?\{)?
18675             (?${DIGIT})
18676             (?()\})
18677             )
18678             )
18679             )
18680             (?(DEFINE)
18681             (?
18682             (?:
18683             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
18684             (?
18685             (?&stringcomp)
18686             )
18687             )
18688             )
18689             |
18690             (?:
18691             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
18692             (?
18693             (?&integercomp)
18694             )
18695             )
18696             )
18697             |
18698             (?:
18699             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
18700             (?:(?<=\W)|(?<=^)|(?<=\A))
18701             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
18702             [[:blank:]\h]+
18703             (? (?&word_lax) )
18704             )
18705             )
18706             |
18707             (?:
18708             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
18709             (? (?&word_lax) )
18710             [[:blank:]\h]+
18711             (?:
18712             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
18713             |
18714             (?:
18715             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
18716             )
18717             )
18718             [[:blank:]\h]+
18719             (? (?&word_lax) )
18720             )
18721             )
18722             |
18723             (?:
18724             (? (?&word_lax) )
18725             [[:blank:]\h]+
18726             \-?in
18727             [[:blank:]\h]+
18728             (? (?&listfunc) )
18729             )
18730             |
18731             (?:
18732             (? (?&word) )
18733             [[:blank:]\h]+
18734             (? [\=|\!]\~ )
18735             [[:blank:]\h]+
18736             $Regexp::Common::Apache2::REGEXP->{regex}
18737             )
18738             |
18739             (?
18740             (?=)
18741             (?(?&word))
18742             [[:blank:]\h]+
18743             (?[\=\=|\=|\!\=])
18744             [[:blank:]\h]+
18745             (?(?®ex))
18746             )
18747             |
18748             (?:
18749             (? (?&word) )
18750             [[:blank:]\h]+
18751             \-?in
18752             [[:blank:]\h]+
18753             \{
18754             [[:blank:]\h]*
18755             (? (?&words) )
18756             [[:blank:]\h]*
18757             \}
18758             )
18759             )
18760             (?
18761             (?:
18762             (?!\bv\()(?[a-zA-Z]\w*)
18763             \(
18764             [[:blank:]\h]*
18765             (?
18766             (?> (?&func_words) )?
18767             )
18768             [[:blank:]\h]*
18769             \)
18770             )
18771             |
18772             (?:
18773             ( # paren group 1 (full function)
18774             (?!\bv\() # Take care to avoid catching modern-style variable v()
18775             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
18776             (? # paren group 2 (parens)
18777             \(
18778             (? # paren group 3 (contents of parens)
18779             (?:
18780             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
18781             |
18782             (?&paren_group) # Recurse to named capture group
18783             )*
18784             )
18785             \)
18786             )
18787             )
18788             )
18789             )
18790             (?
18791             (?:
18792             (?
18793             (?:
18794             (?&word)
18795             [[:blank:]\h]*\,[[:blank:]\h]*
18796             )*
18797             (?&word)
18798             )
18799             (?:
18800             [[:blank:]\h]*\,[[:blank:]\h]*
18801             (? (?&word) )
18802             )?
18803             )
18804             |
18805             (?:
18806             (? (?&word) )
18807             [[:blank:]\h]*\,[[:blank:]\h]*
18808             (? (?-2) )
18809             )
18810             |
18811             (?:
18812             (? (?&word) )
18813             )
18814             )
18815             (?
18816             (?:
18817             (?(?&word))
18818             [[:blank:]\h]+
18819             \-?(? (?:eq|ne|lt|le|gt|ge) )
18820             [[:blank:]\h]+
18821             (?(?&word))
18822             )
18823             )
18824             (?
18825             (?:
18826             (?!\bv\()(?[a-zA-Z]\w*)
18827             \(
18828             [[:blank:]\h]*
18829             (?
18830             (?> (?&func_words) )?
18831             )
18832             [[:blank:]\h]*
18833             \)
18834             )
18835             |
18836             (?:
18837             ( # paren group 1 (full function)
18838             (?!\bv\() # Take care to avoid catching modern-style variable v()
18839             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
18840             (? # paren group 2 (parens)
18841             \(
18842             (? # paren group 3 (contents of parens)
18843             (?:
18844             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
18845             |
18846             (?&paren_group) # Recurse to named capture group
18847             )*
18848             )
18849             \)
18850             )
18851             )
18852             )
18853             )
18854             (?
18855             (?:
18856             (?
18857             (?:
18858             (?&word)
18859             [[:blank:]\h]*\,[[:blank:]\h]*
18860             )*
18861             (?&word)
18862             )
18863             (?:
18864             [[:blank:]\h]*\,[[:blank:]\h]*
18865             (? (?&word) )
18866             )?
18867             )
18868             |
18869             (?:
18870             (? (?&word) )
18871             [[:blank:]\h]*\,[[:blank:]\h]*
18872             (? (?-2) )
18873             )
18874             |
18875             (?:
18876             (? (?&word) )
18877             )
18878             )
18879             (?
18880             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
18881             |
18882             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
18883             )
18884             (?
18885             (?:
18886             (?: (?&substring)[[:blank:]\h]+(?&string) )
18887             )
18888             |
18889             (?:
18890             (?: (?&substring) )
18891             )
18892             )
18893             (?
18894             (?:
18895             (?$Regexp::Common::Apache2::REGEXP->{cstring})
18896             )
18897             |
18898             (?:
18899             (? (?&variable_recur) )
18900             )
18901             |
18902             (?:
18903             \$(?\{)?(?${DIGIT})(?()\})
18904             )
18905             )
18906             (?
18907             (?:
18908             (?(?&word))
18909             [[:blank:]\h]+
18910             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
18911             [[:blank:]\h]+
18912             (?(?&word))
18913             )
18914             )
18915             (?
18916             (?:
18917             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
18918             )
18919             |
18920             (?:
18921             \%\{
18922             (?:
18923             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
18924             )
18925             \}
18926             )
18927             |
18928             (?:
18929             \%\{
18930             (?:
18931             (?${VARNAME})
18932             )
18933             \}
18934             )
18935             |
18936             (?:
18937             \bv\(
18938             [[:blank:]\h]*
18939             (?["'])
18940             (?:
18941             (?${VARNAME})
18942             )
18943             [[:blank:]\h]*
18944             \g{var_quote}
18945             \)
18946             )
18947             |
18948             (?:
18949             (?:^|\A|(?
18950             (?
18951             \$(?\{)?
18952             (?${DIGIT})
18953             (?()\})
18954             )
18955             )
18956             )
18957             (?
18958             (?:
18959             (?
18960             (?$IPv4)
18961             |
18962             (?$IPv6)
18963             )
18964             )
18965             |
18966             (?:
18967             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
18968             )
18969             |
18970             (?:
18971             (?['"])
18972             (?:
18973             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18974             )
18975             \g{word_quote}
18976             )
18977             |
18978             (?:
18979             (?['"])
18980             (?:
18981             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
18982             )
18983             \g{word_quote}
18984             )
18985             |
18986             (?:
18987             (? (?: (?-2)\. )+ (?-2) )
18988             )
18989             |
18990             (?:
18991             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
18992             )
18993             |
18994             (?:
18995             (?(?&variable_recur))
18996             )
18997             |
18998             (?:
18999             (? (?&function) )
19000             )
19001             |
19002             (?:
19003             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19004             )
19005             )
19006             (?
19007             (?:
19008             (?
19009             (?$IPv4)
19010             |
19011             (?$IPv6)
19012             )
19013             )
19014             |
19015             (?:
19016             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
19017             )
19018             |
19019             (?:
19020             (?['"])
19021             (?:
19022             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19023             )
19024             \g{word_quote}
19025             )
19026             |
19027             (?:
19028             (?['"])
19029             (?:
19030             (? (?&string) )
19031             )
19032             \g{word_quote}
19033             )
19034             |
19035             (?:
19036             (? (?: (?-2)\. )+ (?-2) )
19037             )
19038             |
19039             (?:
19040             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19041             )
19042             |
19043             (?:
19044             (?(?&variable_recur))
19045             )
19046             |
19047             (?:
19048             (? (?&function) )
19049             )
19050             |
19051             (?:
19052             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19053             )
19054             )
19055             (?
19056             (?:
19057             (? (?&word) )
19058             [[:blank:]\h]*\,[[:blank:]\h]*
19059             (? (?-2) )
19060             )
19061             |
19062             (?:
19063             (? (?&word) )
19064             )
19065             )
19066             )
19067             /x;
19068              
19069             ## digits
19070             ## | "'" string "'"
19071             ## | '"' string '"'
19072             ## | word "." word
19073             ## | variable
19074             ## | sub
19075             ## | join
19076             ## | function
19077             ## | "(" word ")"
19078 28         94133 $REGEXP_LEGACY->{word} = qr/
19079             (?
19080             (?:
19081             (?
19082             (?$IPv4)
19083             |
19084             (?$IPv6)
19085             )
19086             )
19087             |
19088             (?:
19089             (?$Regexp::Common::Apache2::REGEXP_LEGACY->{digits})
19090             )
19091             |
19092             (?:
19093             (?['"])
19094             (?:
19095             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19096             )
19097             \g{word_quote}
19098             )
19099             |
19100             (?:
19101             (?['"])
19102             (?:
19103             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19104             )
19105             \g{word_quote}
19106             )
19107             |
19108             (?:
19109             (?
19110             (?: (?&word_recur)\. )+ (?&word_recur)
19111             )
19112             )
19113             |
19114             (?:
19115             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19116             )
19117             |
19118             (?:
19119             (?(?&variable))
19120             )
19121             |
19122             (?:
19123             (?(?&function))
19124             )
19125             |
19126             (?:
19127             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19128             )
19129             )
19130             (?(DEFINE)
19131             (?
19132             (?:
19133             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
19134             (?
19135             (?&stringcomp)
19136             )
19137             )
19138             )
19139             |
19140             (?:
19141             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
19142             (?
19143             (?&integercomp)
19144             )
19145             )
19146             )
19147             |
19148             (?:
19149             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
19150             (?:(?<=\W)|(?<=^)|(?<=\A))
19151             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
19152             [[:blank:]\h]+
19153             (? (?&word_lax) )
19154             )
19155             )
19156             |
19157             (?:
19158             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
19159             (? (?&word_lax) )
19160             [[:blank:]\h]+
19161             (?:
19162             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
19163             |
19164             (?:
19165             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
19166             )
19167             )
19168             [[:blank:]\h]+
19169             (? (?&word_lax) )
19170             )
19171             )
19172             |
19173             (?:
19174             (? (?&word_lax) )
19175             [[:blank:]\h]+
19176             \-?in
19177             [[:blank:]\h]+
19178             (? (?&listfunc) )
19179             )
19180             |
19181             (?:
19182             (? (?&word_recur) )
19183             [[:blank:]\h]+
19184             (? [\=|\!]\~ )
19185             [[:blank:]\h]+
19186             $Regexp::Common::Apache2::REGEXP->{regex}
19187             )
19188             |
19189             (?
19190             (?=)
19191             (?(?&word_recur))
19192             [[:blank:]\h]+
19193             (?[\=\=|\=|\!\=])
19194             [[:blank:]\h]+
19195             (?(?®ex))
19196             )
19197             |
19198             (?:
19199             (? (?&word_recur) )
19200             [[:blank:]\h]+
19201             \-?in
19202             [[:blank:]\h]+
19203             \{
19204             [[:blank:]\h]*
19205             (? (?&words) )
19206             [[:blank:]\h]*
19207             \}
19208             )
19209             )
19210             (?
19211             (?:
19212             (?!\bv\()(?[a-zA-Z]\w*)
19213             \(
19214             [[:blank:]\h]*
19215             (?
19216             (?> (?&func_words) )?
19217             )
19218             [[:blank:]\h]*
19219             \)
19220             )
19221             |
19222             (?:
19223             ( # paren group 1 (full function)
19224             (?!\bv\() # Take care to avoid catching modern-style variable v()
19225             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
19226             (? # paren group 2 (parens)
19227             \(
19228             (? # paren group 3 (contents of parens)
19229             (?:
19230             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
19231             |
19232             (?&paren_group) # Recurse to named capture group
19233             )*
19234             )
19235             \)
19236             )
19237             )
19238             )
19239             )
19240             (?
19241             (?:
19242             (?
19243             (?:
19244             (?&word)
19245             [[:blank:]\h]*\,[[:blank:]\h]*
19246             )*
19247             (?&word)
19248             )
19249             (?:
19250             [[:blank:]\h]*\,[[:blank:]\h]*
19251             (? (?&word) )
19252             )?
19253             )
19254             |
19255             (?:
19256             (? (?&word) )
19257             [[:blank:]\h]*\,[[:blank:]\h]*
19258             (? (?-2) )
19259             )
19260             |
19261             (?:
19262             (? (?&word) )
19263             )
19264             )
19265             (?
19266             (?:
19267             (?(?&word_recur))
19268             [[:blank:]\h]+
19269             \-?(? (?:eq|ne|lt|le|gt|ge) )
19270             [[:blank:]\h]+
19271             (?(?&word_recur))
19272             )
19273             )
19274             (?
19275             (?:
19276             (?!\bv\()(?[a-zA-Z]\w*)
19277             \(
19278             [[:blank:]\h]*
19279             (?
19280             (?> (?&func_words) )?
19281             )
19282             [[:blank:]\h]*
19283             \)
19284             )
19285             |
19286             (?:
19287             ( # paren group 1 (full function)
19288             (?!\bv\() # Take care to avoid catching modern-style variable v()
19289             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
19290             (? # paren group 2 (parens)
19291             \(
19292             (? # paren group 3 (contents of parens)
19293             (?:
19294             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
19295             |
19296             (?&paren_group) # Recurse to named capture group
19297             )*
19298             )
19299             \)
19300             )
19301             )
19302             )
19303             )
19304             (?
19305             (?:
19306             (?
19307             (?:
19308             (?&word)
19309             [[:blank:]\h]*\,[[:blank:]\h]*
19310             )*
19311             (?&word)
19312             )
19313             (?:
19314             [[:blank:]\h]*\,[[:blank:]\h]*
19315             (? (?&word) )
19316             )?
19317             )
19318             |
19319             (?:
19320             (? (?&word) )
19321             [[:blank:]\h]*\,[[:blank:]\h]*
19322             (? (?-2) )
19323             )
19324             |
19325             (?:
19326             (? (?&word) )
19327             )
19328             )
19329             (?
19330             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
19331             |
19332             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
19333             )
19334             (?
19335             (?:
19336             (?: (?&substring)[[:blank:]\h]+(?&string) )
19337             )
19338             |
19339             (?:
19340             (?: (?&substring) )
19341             )
19342             )
19343             (?
19344             (?:
19345             (?(?&word_recur))
19346             [[:blank:]\h]+
19347             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
19348             [[:blank:]\h]+
19349             (?(?&word_recur))
19350             )
19351             )
19352             (?
19353             (?:
19354             (?$Regexp::Common::Apache2::REGEXP->{cstring})
19355             )
19356             |
19357             (?:
19358             (? (?&variable) )
19359             )
19360             |
19361             (?:
19362             \$(?\{)?(?${DIGIT})(?()\})
19363             )
19364             )
19365             (?
19366             (?:
19367             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
19368             )
19369             |
19370             (?:
19371             \%\{
19372             (?:
19373             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
19374             )
19375             \}
19376             )
19377             |
19378             (?:
19379             \%\{
19380             (?:
19381             (?${VARNAME})
19382             )
19383             \}
19384             )
19385             |
19386             (?:
19387             \bv\(
19388             [[:blank:]\h]*
19389             (?["'])
19390             (?:
19391             (?${VARNAME})
19392             )
19393             [[:blank:]\h]*
19394             \g{var_quote}
19395             \)
19396             )
19397             |
19398             (?:
19399             (?:^|\A|(?
19400             (?
19401             \$(?\{)?
19402             (?${DIGIT})
19403             (?()\})
19404             )
19405             )
19406             )
19407             (?
19408             (?:
19409             (?
19410             (?$IPv4)
19411             |
19412             (?$IPv6)
19413             )
19414             )
19415             |
19416             (?:
19417             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
19418             )
19419             |
19420             (?:
19421             (?['"])
19422             (?:
19423             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19424             )
19425             \g{word_quote}
19426             )
19427             |
19428             (?:
19429             (?['"])
19430             (?:
19431             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19432             )
19433             \g{word_quote}
19434             )
19435             |
19436             (?:
19437             (? (?: (?-2)\. )+ (?-2) )
19438             )
19439             |
19440             (?:
19441             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19442             )
19443             |
19444             (?:
19445             (?(?&variable))
19446             )
19447             |
19448             (?:
19449             (? (?&function) )
19450             )
19451             |
19452             (?:
19453             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19454             )
19455             )
19456             (?
19457             (?:
19458             (?
19459             (?$IPv4)
19460             |
19461             (?$IPv6)
19462             )
19463             )
19464             |
19465             (?:
19466             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
19467             )
19468             |
19469             (?:
19470             (?['"])
19471             (?:
19472             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19473             )
19474             \g{word_quote}
19475             )
19476             |
19477             (?:
19478             (?['"])
19479             (?:
19480             (? (?&string) )
19481             )
19482             \g{word_quote}
19483             )
19484             |
19485             (?:
19486             (? (?: (?-2)\. )+ (?-2) )
19487             )
19488             |
19489             (?:
19490             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19491             )
19492             |
19493             (?:
19494             (?(?&variable))
19495             )
19496             |
19497             (?:
19498             (? (?&function) )
19499             )
19500             |
19501             (?:
19502             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19503             )
19504             )
19505             (?
19506             (?:
19507             (? (?&word_recur) )
19508             [[:blank:]\h]*\,[[:blank:]\h]*
19509             (? (?-2) )
19510             )
19511             |
19512             (?:
19513             (? (?&word_recur) )
19514             )
19515             )
19516             )
19517             /x;
19518            
19519             ## word
19520             ## | word "," list
19521 28         78515 $REGEXP_LEGACY->{words} = qr/
19522             (?
19523             (?:
19524             (?:
19525             (?
19526             (?(?&word))
19527             [[:blank:]\h]*\,[[:blank:]\h]*
19528             (?(?&words_recur))
19529             )
19530             )
19531             |
19532             (?:
19533             (?(?&word))
19534             )
19535             )
19536             )
19537             (?(DEFINE)
19538             (?
19539             (?:
19540             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
19541             (?
19542             (?&stringcomp)
19543             )
19544             )
19545             )
19546             |
19547             (?:
19548             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))))
19549             (?
19550             (?&integercomp)
19551             )
19552             )
19553             )
19554             |
19555             (?:
19556             (?(?=(?:(?:(?<=\W)|(?<=^)|(?<=\A))\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])\b))
19557             (?:(?<=\W)|(?<=^)|(?<=\A))
19558             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
19559             [[:blank:]\h]+
19560             (? (?&word_lax) )
19561             )
19562             )
19563             |
19564             (?:
19565             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{|\$\{?${VARNAME}\}?))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:(?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?:ipmatch|strmatch|strcmatch|fnmatch)))))
19566             (? (?&word_lax) )
19567             [[:blank:]\h]+
19568             (?:
19569             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
19570             |
19571             (?:
19572             (?:(?\!)[[:blank:]]*)?(?:(?<=\W)|(?<=^)|(?<=\A))\-(?ipmatch|strmatch|strcmatch|fnmatch)
19573             )
19574             )
19575             [[:blank:]\h]+
19576             (? (?&word_lax) )
19577             )
19578             )
19579             |
19580             (?:
19581             (? (?&word_lax) )
19582             [[:blank:]\h]+
19583             \-?in
19584             [[:blank:]\h]+
19585             (? (?&listfunc) )
19586             )
19587             |
19588             (?:
19589             (? (?&word) )
19590             [[:blank:]\h]+
19591             (? [\=|\!]\~ )
19592             [[:blank:]\h]+
19593             $Regexp::Common::Apache2::REGEXP->{regex}
19594             )
19595             |
19596             (?
19597             (?=)
19598             (?(?&word))
19599             [[:blank:]\h]+
19600             (?[\=\=|\=|\!\=])
19601             [[:blank:]\h]+
19602             (?(?®ex))
19603             )
19604             |
19605             (?:
19606             (? (?&word) )
19607             [[:blank:]\h]+
19608             \-?in
19609             [[:blank:]\h]+
19610             \{
19611             [[:blank:]\h]*
19612             (? (?&words) )
19613             [[:blank:]\h]*
19614             \}
19615             )
19616             )
19617             (?
19618             (?:
19619             (?!\bv\()(?[a-zA-Z]\w*)
19620             \(
19621             [[:blank:]\h]*
19622             (?
19623             (?> (?&func_words) )?
19624             )
19625             [[:blank:]\h]*
19626             \)
19627             )
19628             |
19629             (?:
19630             ( # paren group 1 (full function)
19631             (?!\bv\() # Take care to avoid catching modern-style variable v()
19632             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
19633             (? # paren group 2 (parens)
19634             \(
19635             (? # paren group 3 (contents of parens)
19636             (?:
19637             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
19638             |
19639             (?&paren_group) # Recurse to named capture group
19640             )*
19641             )
19642             \)
19643             )
19644             )
19645             )
19646             )
19647             (?
19648             (?:
19649             (?
19650             (?:
19651             (?&word)
19652             [[:blank:]\h]*\,[[:blank:]\h]*
19653             )*
19654             (?&word)
19655             )
19656             (?:
19657             [[:blank:]\h]*\,[[:blank:]\h]*
19658             (? (?&word) )
19659             )?
19660             )
19661             |
19662             (?:
19663             (? (?&word) )
19664             [[:blank:]\h]*\,[[:blank:]\h]*
19665             (? (?-2) )
19666             )
19667             |
19668             (?:
19669             (? (?&word) )
19670             )
19671             )
19672             (?
19673             (?:
19674             (?(?&word))
19675             [[:blank:]\h]+
19676             \-?(? (?:eq|ne|lt|le|gt|ge) )
19677             [[:blank:]\h]+
19678             (?(?&word))
19679             )
19680             )
19681             (?
19682             (?:
19683             (?!\bv\()(?[a-zA-Z]\w*)
19684             \(
19685             [[:blank:]\h]*
19686             (?
19687             (?> (?&func_words) )?
19688             )
19689             [[:blank:]\h]*
19690             \)
19691             )
19692             |
19693             (?:
19694             ( # paren group 1 (full function)
19695             (?!\bv\() # Take care to avoid catching modern-style variable v()
19696             (?[a-zA-Z_]\w*) # possible a function with its name, or just parenthesis
19697             (? # paren group 2 (parens)
19698             \(
19699             (? # paren group 3 (contents of parens)
19700             (?:
19701             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
19702             |
19703             (?&paren_group) # Recurse to named capture group
19704             )*
19705             )
19706             \)
19707             )
19708             )
19709             )
19710             )
19711             (?
19712             (?:
19713             (?
19714             (?:
19715             (?&word)
19716             [[:blank:]\h]*\,[[:blank:]\h]*
19717             )*
19718             (?&word)
19719             )
19720             (?:
19721             [[:blank:]\h]*\,[[:blank:]\h]*
19722             (? (?&word) )
19723             )?
19724             )
19725             |
19726             (?:
19727             (? (?&word) )
19728             [[:blank:]\h]*\,[[:blank:]\h]*
19729             (? (?-2) )
19730             )
19731             |
19732             (?:
19733             (? (?&word) )
19734             )
19735             )
19736             (?
19737             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
19738             |
19739             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
19740             )
19741             (?
19742             (?:
19743             (?: (?&substring)[[:blank:]\h]+(?&string) )
19744             )
19745             |
19746             (?:
19747             (?: (?&substring) )
19748             )
19749             )
19750             (?
19751             (?:
19752             (?(?&word))
19753             [[:blank:]\h]+
19754             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=)
19755             [[:blank:]\h]+
19756             (?(?&word))
19757             )
19758             )
19759             (?
19760             (?:
19761             (?$Regexp::Common::Apache2::REGEXP->{cstring})
19762             )
19763             |
19764             (?:
19765             (? (?&variable) )
19766             )
19767             |
19768             (?:
19769             \$(?\{)?(?${DIGIT})(?()\})
19770             )
19771             )
19772             (?
19773             (?:
19774             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
19775             )
19776             |
19777             (?:
19778             \%\{
19779             (?:
19780             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
19781             )
19782             \}
19783             )
19784             |
19785             (?:
19786             \%\{
19787             (?:
19788             (?${VARNAME})
19789             )
19790             \}
19791             )
19792             |
19793             (?:
19794             \bv\(
19795             [[:blank:]\h]*
19796             (?["'])
19797             (?:
19798             (?${VARNAME})
19799             )
19800             [[:blank:]\h]*
19801             \g{var_quote}
19802             \)
19803             )
19804             |
19805             (?:
19806             (?:^|\A|(?
19807             (?
19808             \$(?\{)?
19809             (?${DIGIT})
19810             (?()\})
19811             )
19812             )
19813             )
19814             (?
19815             (?:
19816             (?
19817             (?$IPv4)
19818             |
19819             (?$IPv6)
19820             )
19821             )
19822             |
19823             (?:
19824             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
19825             )
19826             |
19827             (?:
19828             (?['"])
19829             (?:
19830             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19831             )
19832             \g{word_quote}
19833             )
19834             |
19835             (?:
19836             (?['"])
19837             (?:
19838             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19839             )
19840             \g{word_quote}
19841             )
19842             |
19843             (?:
19844             (? (?: (?-2)\. )+ (?-2) )
19845             )
19846             |
19847             (?:
19848             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19849             )
19850             |
19851             (?:
19852             (?(?&variable))
19853             )
19854             |
19855             (?:
19856             (? (?&function) )
19857             )
19858             |
19859             (?:
19860             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19861             )
19862             )
19863             (?
19864             (?:
19865             (?
19866             (?$IPv4)
19867             |
19868             (?$IPv6)
19869             )
19870             )
19871             |
19872             (?:
19873             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
19874             )
19875             |
19876             (?:
19877             (?['"])
19878             (?:
19879             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
19880             )
19881             \g{word_quote}
19882             )
19883             |
19884             (?:
19885             (?['"])
19886             (?:
19887             (? (?&string) )
19888             )
19889             \g{word_quote}
19890             )
19891             |
19892             (?:
19893             (? (?: (?-2)\. )+ (?-2) )
19894             )
19895             |
19896             (?:
19897             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
19898             )
19899             |
19900             (?:
19901             (?(?&variable))
19902             )
19903             |
19904             (?:
19905             (? (?&function) )
19906             )
19907             |
19908             (?:
19909             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
19910             )
19911             )
19912             (?
19913             (?:
19914             (? (?&word) )
19915             [[:blank:]\h]*\,[[:blank:]\h]*
19916             (? (?-2) )
19917             )
19918             |
19919             (?:
19920             (? (?&word) )
19921             )
19922             )
19923             )
19924             /x;
19925              
19926             pattern name => [qw( Apache2 -legacy=1 -trunk=1 ) ],
19927             create => sub
19928             {
19929 0         0 my( $self, $flags ) = @_;
19930 0         0 my %re = %$REGEXP;
19931             ## Override vanilla regular expressions by the extended ones
19932 0 0       0 if( $flags->{'-legacy'} )
    0          
19933             {
19934 0         0 my @k = keys( %$REGEXP_LEGACY );
19935 0         0 @re{ @k } = @$REGEXP_LEGACY{ @k };
19936             }
19937             elsif( $flags->{'-trunk'} )
19938             {
19939 0         0 my @k = keys( %$TRUNK );
19940 0         0 @re{ @k } = @$TRUNK{ @k };
19941             }
19942 0         0 my $pat = join( '|' => values( %re ) );
19943 0         0 return( "(?k:$pat)" );
19944 28         2352 };
19945              
19946             pattern name => [qw( Apache2 Comp )],
19947 28         4384 create => $REGEXP->{comp};
19948              
19949             pattern name => [qw( Apache2 Cond )],
19950 28         3606 create => $REGEXP->{cond};
19951              
19952             pattern name => [qw( Apache2 Digits )],
19953 28         2811 create => $REGEXP->{digits};
19954              
19955             pattern name => [qw( Apache2 Expression )],
19956 28         1507 create => $REGEXP->{expr};
19957              
19958             pattern name => [qw( Apache2 Function )],
19959 28         2619 create => $REGEXP->{function};
19960              
19961             pattern name => [qw( Apache2 IntegerComp )],
19962 28         2660 create => $REGEXP->{integercomp};
19963              
19964             pattern name => [qw( Apache2 ListFunc )],
19965 28         2529 create => $REGEXP->{listfunc};
19966              
19967             pattern name => [qw( Apache2 Regexp )],
19968 28         2712 create => $REGEXP->{regex};
19969              
19970             pattern name => [qw( Apache2 String )],
19971 28         1908 create => $REGEXP->{string};
19972              
19973             pattern name => [qw( Apache2 StringComp )],
19974 28         2557 create => $REGEXP->{stringcomp};
19975              
19976             pattern name => [qw( Apache2 Substring )],
19977 28         2871 create => $REGEXP->{substring};
19978              
19979             pattern name => [qw( Apache2 Variable )],
19980 28         2550 create => $REGEXP->{variable};
19981              
19982             pattern name => [qw( Apache2 Word )],
19983 28         2915 create => $REGEXP->{word};
19984              
19985             pattern name => [qw( Apache2 Words )],
19986 28         2778 create => $REGEXP->{words};
19987              
19988             ## Apache2 Trunk expressions
19989             pattern name => [qw( Apache2 TrunkComp )],
19990 28         2603 create => $TRUNK->{comp};
19991              
19992             pattern name => [qw( Apache2 TrunkCond )],
19993 28         2864 create => $TRUNK->{cond};
19994              
19995             pattern name => [qw( Apache2 TrunkDigits )],
19996 28         2845 create => $TRUNK->{digits};
19997              
19998             pattern name => [qw( Apache2 TrunkExpression )],
19999 28         1461 create => $TRUNK->{expr};
20000              
20001             pattern name => [qw( Apache2 TrunkFunction )],
20002 28         2890 create => $TRUNK->{function};
20003              
20004             pattern name => [qw( Apache2 TrunkIntegerComp )],
20005 28         2866 create => $TRUNK->{integercomp};
20006              
20007             pattern name => [qw( Apache2 TrunkJoin )],
20008 28         2875 create => $TRUNK->{join};
20009              
20010             pattern name => [qw( Apache2 TrunkList )],
20011 28         3114 create => $TRUNK->{list};
20012              
20013             pattern name => [qw( Apache2 TrunkListFunc )],
20014 28         2737 create => $TRUNK->{listfunc};
20015              
20016             pattern name => [qw( Apache2 TrunkRegany )],
20017 28         2829 create => $TRUNK->{regany};
20018              
20019             pattern name => [qw( Apache2 TrunkRegexp )],
20020 28         1529 create => $TRUNK->{regex};
20021              
20022             pattern name => [qw( Apache2 TrunkRegsub )],
20023 28         1653 create => $TRUNK->{regsub};
20024              
20025             pattern name => [qw( Apache2 TrunkSplit )],
20026 28         1671 create => $TRUNK->{split};
20027              
20028             pattern name => [qw( Apache2 TrunkString )],
20029 28         3086 create => $TRUNK->{string};
20030              
20031             pattern name => [qw( Apache2 TrunkStringComp )],
20032 28         2713 create => $TRUNK->{stringcomp};
20033              
20034             pattern name => [qw( Apache2 TrunkSub )],
20035 28         2791 create => $TRUNK->{sub};
20036              
20037             pattern name => [qw( Apache2 TrunkSubstring )],
20038 28         2865 create => $TRUNK->{substring};
20039              
20040             pattern name => [qw( Apache2 TrunkVariable )],
20041 28         2857 create => $TRUNK->{variable};
20042              
20043             pattern name => [qw( Apache2 TrunkWord )],
20044 28         2845 create => $TRUNK->{word};
20045              
20046             pattern name => [qw( Apache2 TrunkWords )],
20047 28         2988 create => $TRUNK->{words};
20048              
20049             ## Legacy expressions
20050             pattern name => [qw( Apache2 LegacyComp )],
20051 28         3293 create => $REGEXP_LEGACY->{comp};
20052              
20053             pattern name => [qw( Apache2 LegacyCond )],
20054 28         2814 create => $REGEXP_LEGACY->{cond};
20055              
20056             pattern name => [qw( Apache2 LegacyDigits )],
20057 28         2730 create => $REGEXP_LEGACY->{digits};
20058              
20059             pattern name => [qw( Apache2 LegacyExpression )],
20060 28         1538 create => $REGEXP_LEGACY->{expr};
20061              
20062             pattern name => [qw( Apache2 LegacyFunction )],
20063 28         2877 create => $REGEXP_LEGACY->{function};
20064              
20065             pattern name => [qw( Apache2 LegacyIntegerComp )],
20066 28         2787 create => $REGEXP_LEGACY->{integercomp};
20067              
20068             pattern name => [qw( Apache2 LegacyListFunc )],
20069 28         3046 create => $REGEXP_LEGACY->{listfunc};
20070              
20071             pattern name => [qw( Apache2 LegacyRegexp )],
20072 28         2736 create => $REGEXP_LEGACY->{regex};
20073              
20074             pattern name => [qw( Apache2 LegacyString )],
20075 28         1511 create => $REGEXP_LEGACY->{string};
20076              
20077             pattern name => [qw( Apache2 LegacyStringComp )],
20078 28         2591 create => $REGEXP_LEGACY->{stringcomp};
20079              
20080             pattern name => [qw( Apache2 LegacySubstring )],
20081 28         2873 create => $REGEXP_LEGACY->{substring};
20082              
20083             pattern name => [qw( Apache2 LegacyVariable )],
20084 28         2682 create => $REGEXP_LEGACY->{variable};
20085              
20086             pattern name => [qw( Apache2 LegacyWord )],
20087 28         2568 create => $REGEXP_LEGACY->{word};
20088              
20089             pattern name => [qw( Apache2 LegacyWords )],
20090 28         2698 create => $REGEXP_LEGACY->{words};
20091             };
20092              
20093             {
20094             package
20095             Regexp::Common::Apache2::Boolean;
20096             BEGIN
20097             {
20098 28     28   7939 use strict;
  28         61  
  28         880  
20099 28     28   149 use warnings;
  28         53  
  28         3432  
20100             use overload
20101 0     0   0 "0+" => sub{ ${$_[0]} },
  0         0  
20102 0     0   0 "++" => sub{ $_[0] = ${$_[0]} + 1 },
  0         0  
20103 0     0   0 "--" => sub{ $_[0] = ${$_[0]} - 1 },
  0         0  
20104 28     28   166 fallback => 1;
  28         58  
  28         370  
20105 28     28   10685 our( $VERSION ) = '0.1.0';
20106             };
20107              
20108 0 0   0     sub new { return( $_[1] ? $true : $false ); }
20109              
20110 0     0     sub defined { return( 1 ); }
20111              
20112             our $true = do{ bless( \( my $dummy = 1 ) => Regexp::Common::Apache2::Boolean ) };
20113             our $false = do{ bless( \( my $dummy = 0 ) => Regexp::Common::Apache2::Boolean ) };
20114              
20115 0     0     sub true () { $true }
20116 0     0     sub false () { $false }
20117              
20118 0     0     sub is_bool ($) { UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
20119 0 0   0     sub is_true ($) { $_[0] && UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
20120 0 0   0     sub is_false ($) { !$_[0] && UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
20121              
20122             sub TO_JSON
20123             {
20124             ## JSON does not check that the value is a proper true or false. It stupidly assumes this is a string
20125             ## The only way to make it understand is to return a scalar ref of 1 or 0
20126             # return( $_[0] ? 'true' : 'false' );
20127 0 0   0     return( $_[0] ? \1 : \0 );
20128             }
20129             }
20130              
20131             1;
20132              
20133             __END__