+# zone requests
+if ($zone) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $zone) {
+ push @expr, "\$f9==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($byzone) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $byzone) {
+ push @expr, "\$f11==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+
+# itu requests
+if ($itu) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $itu) {
+ push @expr, "\$f8==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($byitu) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $byitu) {
+ push @expr, "\$f10==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+
+# state requests
+if ($state) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $state) {
+ push @expr, "\$f12 eq '$_'";
+ push @hint, "m{$_}";
+ }
+ if ($usesql) {
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : "$expr[0]";
+ } else {
+ $expr .= @expr > 1 ? '(\$f12 && (' . join(' || ', @expr) . '))' : "(\$f12 && $expr[0])";
+ }
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($bystate) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $bystate) {
+ push @expr, "\$f13 eq '$_'";
+ push @hint, "m{$_}";
+ }
+ if ($usesql) {
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : "$expr[0]";
+ } else {
+ $expr .= @expr > 1 ? '(\$f13 && (' . join(' || ', @expr) . '))' : "(\$f13 && $expr[0])";
+ }
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+