]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Auth: Adapt backend regression tests harness to Meson builds
authorFred Morcos <fred.morcos@open-xchange.com>
Wed, 15 May 2024 11:27:06 +0000 (13:27 +0200)
committerFred Morcos <fred.morcos@open-xchange.com>
Wed, 12 Jun 2024 10:14:50 +0000 (12:14 +0200)
15 files changed:
regression-tests/backends/bind-master
regression-tests/backends/geoip-master
regression-tests/backends/gmysql-master
regression-tests/backends/godbc_mssql-master
regression-tests/backends/godbc_sqlite3-master
regression-tests/backends/gpgsql-master
regression-tests/backends/gsql-common
regression-tests/backends/gsqlite3-master
regression-tests/backends/ldap-master
regression-tests/backends/lmdb-master
regression-tests/backends/lua2-master
regression-tests/backends/remote-master
regression-tests/backends/tinydns-master
regression-tests/runtests
regression-tests/start-test-stop

index 6fb6e5a1ff8682e641ea9075567cae0fd80272fd..2e89eb6739c86372f9c0e47237e3921df1c68aa0 100644 (file)
@@ -1,13 +1,13 @@
 case $context in
     bind)
         cat > pdns-bind.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=bind
 bind-config=./named.conf
 bind-ignore-broken-records=yes
 __EOF__
 
-        $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --config-dir=. \
+        $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --config-dir=. \
             --config-name=bind --socket-dir=./ --no-shuffle \
             --cache-ttl=$cachettl --dname-processing \
             --disable-axfr-rectify=yes &
@@ -18,7 +18,7 @@ __EOF__
     bind-dnssec | bind-dnssec-nsec3 | bind-hybrid-nsec3 | bind-dnssec-nsec3-optout | bind-dnssec-nsec3-narrow)
         rm -f dnssec.sqlite3
         cat > pdns-bind.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=bind
 bind-config=./named.conf
 bind-ignore-broken-records=yes
@@ -103,7 +103,7 @@ __EOF__
             skipreasons="nodyndns noalias nsec"
         fi
 
-        $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --config-dir=. \
+        $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --config-dir=. \
             --config-name=bind --socket-dir=./ --no-shuffle \
             --cache-ttl=$cachettl --dname-processing \
             --disable-axfr-rectify=yes $lua_prequery &
index 2018929324075cb97c80557617d88374161b1409..ad05c1dd25f6a026f62157a26162e255334d5b05 100644 (file)
@@ -132,12 +132,12 @@ EOF
 
                geoipdatabase=${geoipdatabase:-$testsdir/GeoLiteCity.dat}
 
-               $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
+               $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
                        --no-shuffle --launch=geoip \
                        --cache-ttl=$cachettl --dname-processing --no-config \
                        --distributor-threads=1 \
                         --geoip-zones-file=$testsdir/geo.yaml --geoip-database-files="$geoipdatabase" \
-                        --module-dir=./modules --edns-subnet-processing=yes \
+                        --module-dir="$PDNS_MESON_PATH/./modules" --edns-subnet-processing=yes \
                        $geoipkeydir &
                ;;
 
index 5b2ed60fc252afad205864b4b1497d056a6b0611..222795aa52a16124b2790e39496cd016844ca90d 100644 (file)
@@ -17,7 +17,7 @@ case $context in
                        "$GMYSQLDB"
 
                cat > pdns-gmysql.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=gmysql
 gmysql-dbname=$GMYSQLDB
 gmysql-user=$GMYSQLUSER
index 6ece162d9729c97002f0f8f0598f303455f4eb7a..75d87e7ce9a0d2bc73391bda532d956926a88f62 100644 (file)
@@ -17,7 +17,7 @@ case $context in
                # actually terminates
                tosql gsqlite | grep -v -E '(COMMIT|TRANSACTION)' | awk '1;!(NR%98){print "go"}' | cat - <(echo go) /dev/null | $BSQLODBC
                cat > pdns-godbc_mssql.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=godbc
 godbc-datasource=$GODBC_MSSQL_DSN
 godbc-username=$GODBC_MSSQL_USERNAME
index 0c6f3eab8af7a1b2340d7ecc7621052b274c0b67..dce76695a86dfb6c2f9fab59039bed651a35dfaa 100644 (file)
@@ -7,7 +7,7 @@ case $context in
                echo 'ANALYZE; PRAGMA journal_mode=WAL;' | sqlite3 pdns.sqlite3
 
                cat > pdns-godbc_sqlite3.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=godbc
 godbc-datasource=$GODBC_SQLITE3_DSN
 
index 4f2fa3ef05056fbc17d8b5b67b7d8bb61fe78faa..3d252e9d96b4b34e3d46fc07965ec6dad3b54fe7 100644 (file)
@@ -12,7 +12,7 @@ case $context in
                 psql --user="$GPGSQLUSER" -c "ANALYZE" "$GPGSQLDB"
 
                cat > pdns-gpgsql.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=gpgsql
 gpgsql-dbname=$GPGSQLDB
 gpgsql-user=$GPGSQLUSER
index a1134d23118c6dc1f41ad7f9ec84103d1b2960d1..3bce7d18ae0eb5d78af5c19e0297474faeb4f7cd 100644 (file)
@@ -46,7 +46,7 @@ gsql_master()
     done
 
 
-    $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --config-dir=. \
+    $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --config-dir=. \
         --config-name=$backend --socket-dir=./ --no-shuffle \
         --dnsupdate=yes --resolver=$RESOLVERIP --outgoing-axfr-expand-alias=yes \
         --expand-alias=yes \
index b465e23a8835580c32c82e32b8521306e30de1a1..2eb433fcced632987c57f420d68d3a4c959a93db 100644 (file)
@@ -8,7 +8,7 @@ case $context in
                echo ANALYZE\; | sqlite3 pdns.sqlite3
 
                cat > pdns-gsqlite3.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=gsqlite3
 gsqlite3-database=pdns.sqlite3
 consistent-backends
index cb7047e2d492c757541f9c0fd422999acd7e131d..9f53b4fb0f005aad035994f3fa4ce4d0fdd7334f 100644 (file)
@@ -17,7 +17,7 @@ __EOF__
                $ZONE2LDAP --dnsttl=yes --basedn=$LDAPBASEDN --layout=$layout --named-conf=named.conf | ldapmodify -D $LDAPUSER -w $LDAPPASSWD -H $LDAPHOST -c > /dev/null || true
 
                cat > pdns-ldap.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=ldap
 ldap-basedn=$LDAPBASEDN
 ldap-binddn=$LDAPUSER
@@ -26,7 +26,7 @@ ldap-method=$layout
 ldap-host=$LDAPHOST
 __EOF__
 
-               $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --config-dir=. \
+               $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --config-dir=. \
                        --config-name=ldap --socket-dir=./ --no-shuffle \
                        --query-logging --dnsupdate=yes \
                        --expand-alias=yes --outgoing-axfr-expand-alias=yes \
index c1bf9346b205b1cd6517b965c24947e4816eedda..7703b61016d852280ea16fbf0c1893c5220038b2 100644 (file)
@@ -1,7 +1,7 @@
 case $context in
     lmdb | lmdb-nodnssec | lmdb-nsec3 | lmdb-nsec3-optout | lmdb-nsec3-narrow)
         cat > pdns-lmdb.conf << __EOF__
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=lmdb
 lmdb-filename=./pdns.lmdb
 lmdb-random-ids=yes
@@ -68,7 +68,7 @@ __EOF__
             $PDNSUTIL --config-dir=. --config-name=lmdb set-options-json tsig.com '{"producer":{"group":["pdns-group-x","pdns-group-y"]}}'
         fi
 
-        $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --config-dir=. \
+        $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --config-dir=. \
             --config-name=lmdb --socket-dir=./ --no-shuffle \
             --dnsupdate=no \
             --expand-alias=yes --resolver=$RESOLVERIP \
index 785a71c9de697cd3aa980c87a98a52a53fb56b50..4dd1ca63f43e2e6faebf40b2508b75ed6f359cbf 100644 (file)
@@ -23,14 +23,14 @@ case $context in
 
                # generate pdns.conf for pdnsutil
                cat > pdns-lua2.conf <<EOF
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=lua2
 lua2-filename=$testsdir/$luascript
 lua2-api=2
 allow-axfr-ips=0.0.0.0/0,::/0
 EOF
 
-               $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
+               $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
                        --no-shuffle --launch=lua2 \
                        --cache-ttl=$cachettl --dname-processing --no-config \
                        --distributor-threads=1 --zone-cache-refresh-interval=$interval \
index 8aca1fafb026e7d93aee2d2aab2096920ce55e32..8530eb7b5c96e374d90b2430a2150e69b8187172 100644 (file)
@@ -77,7 +77,7 @@ case $context in
                                extracontexts="dnssec nsec3"
                                skipreasons="nsec3 nodyndns"
                        fi
-                       
+
                        remote_add_param="--remote-dnssec=yes"
                elif [ "$remotesec" = "dnssec" ]
                then
@@ -90,7 +90,7 @@ case $context in
 
                # generate pdns.conf for pdnsutil
                cat > pdns-remote.conf <<EOF
-module-dir=./modules
+module-dir=$PDNS_MESON_PATH/./modules
 launch=remote
 remote-connection-string=$connstr,timeout=10000
 EOF
@@ -114,16 +114,16 @@ EOF
 
                        # add DS records into list-all-records
                         $PDNSUTIL --config-dir=. --config-name=remote show-zone -v up.example.com | gawk '{ if ($1=="DS") { printf "up.example.com.            120     IN      DS      " $6 " " $7 " " $8 " " substr(toupper($9),0,56); if (length($9)>56) { print " " substr(toupper($9),57) } else { print "" } } }' > $testsdir/list-all-records/expected_dnssec_part2
-                       cat $testsdir/list-all-records/expected_dnssec_part1 $testsdir/list-all-records/expected_dnssec_part2 $testsdir/list-all-records/expected_dnssec_part3 > $testsdir/list-all-records/expected_result.dnssec 
+                       cat $testsdir/list-all-records/expected_dnssec_part1 $testsdir/list-all-records/expected_dnssec_part2 $testsdir/list-all-records/expected_dnssec_part3 > $testsdir/list-all-records/expected_result.dnssec
                        cp -f $testsdir/list-all-records/expected_result.dnssec $testsdir/list-all-records/expected_result.nsec3
                fi
 
-               $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
+               $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
                        --no-shuffle --launch=remote \
                        --cache-ttl=$cachettl --dname-processing --no-config \
                        --distributor-threads=1 \
                        --dnsupdate=yes --zone-cache-refresh-interval=0 \
-                       --remote-connection-string="$connstr" $remote_add_param --module-dir=./modules &
+                       --remote-connection-string="$connstr" $remote_add_param --module-dir="$PDNS_MESON_PATH/./modules" &
                ;;
 
        *)
index 3ebafbf74ed82dc86751e8569cdb18615fd233be..f3a5975778b561025b7a27a9764dbe83cd40908a 100644 (file)
@@ -1,10 +1,10 @@
 case $context in
        tinydns)
-               $RUNWRAPPER $PDNS --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
+               $RUNWRAPPER $PDNS --loglevel=7 --daemon=no --local-address=$address --local-port=$port --socket-dir=./ \
                        --no-shuffle --launch=tinydns \
                 --cache-ttl=$cachettl --dname-processing --no-config \
                        --dnsupdate=yes \
-                       --tinydns-dbfile=../modules/tinydnsbackend/data.cdb --module-dir=./modules &
+                       --tinydns-dbfile=../modules/tinydnsbackend/data.cdb --module-dir="$PDNS_MESON_PATH/./modules" &
                skipreasons="nodnssec noent nodyndns nometa noaxfr noalias"
                ;;
 
index 60c8844c0c3578dd8bb165cb5c743d255b3314f1..63bf592207d0635f4a6ef93f9a990235a42cadc4 100755 (executable)
@@ -7,19 +7,37 @@ fi
 PATH=.:$PATH:/usr/sbin
 MAKE=${MAKE:-make}
 
-export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
-export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
-export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
-export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
-export SDIG=${SDIG:-${PWD}/../pdns/sdig}
-export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
-export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
-export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
-export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
-export ZONE2JSON=${ZONE2JSON:-${PWD}/../pdns/zone2json}
-export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
-export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
-export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
+if [ -z "$PDNS_MESON_PATH" ]; then
+  # PDNS_MESON_PATH is unset or empty. Assume an autotools build.
+
+  export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
+  export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
+  export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
+  export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
+  export SDIG=${SDIG:-${PWD}/../pdns/sdig}
+  export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
+  export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
+  export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
+  export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
+  export ZONE2JSON=${ZONE2JSON:-${PWD}/../pdns/zone2json}
+  export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
+  export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
+  export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
+else
+  export PDNS=${PDNS:-$PDNS_MESON_PATH/pdns-auth}
+  export PDNS2=${PDNS2:-$PDNS_MESON_PATH/pdns-auth}
+  export PDNSRECURSOR=${PDNSRECURSOR:-$PDNS_MESON_PATH/pdns/recursordist/pdns_recursor}
+  export RECCONTROL=${RECCONTROL:-$PDNS_MESON_PATH/pdns/recursordist/rec_control}
+  export SDIG=${SDIG:-$PDNS_MESON_PATH/sdig}
+  export NOTIFY=${NOTIFY:-$PDNS_MESON_PATH/pdns-auth-notify}
+  export NSEC3DIG=${NSEC3DIG:-$PDNS_MESON_PATH/nsec3dig}
+  export SAXFR=${SAXFR:-$PDNS_MESON_PATH/saxfr}
+  export ZONE2SQL=${ZONE2SQL:-$PDNS_MESON_PATH/pdns-zone2sql}
+  export ZONE2JSON=${ZONE2JSON:-$PDNS_MESON_PATH/pdns-zone2json}
+  export ZONE2LDAP=${ZONE2LDAP:-$PDNS_MESON_PATH/pdns-zone2ldap}
+  export PDNSUTIL=${PDNSUTIL:-$PDNS_MESON_PATH/pdns-auth-util}
+  export PDNSCONTROL=${PDNSCONTROL:-$PDNS_MESON_PATH/pdns-auth-control}
+fi
 
 unset _JAVA_OPTIONS
 
@@ -45,7 +63,7 @@ skipped=0
 
 touch passed_tests failed_tests skipped_tests
 
-for a in $(find $testsdir -type d | grep -v ^.$ | grep -v .svn | grep -v ^confdir | LC_ALL=C sort) 
+for a in $(find $testsdir -type d | grep -v ^.$ | grep -v .svn | grep -v ^confdir | LC_ALL=C sort)
 do
        if [ ! -x $a/command ]
        then
@@ -60,9 +78,9 @@ do
 
        echo  "$testname: " >> test-results
        cat $a/description >> test-results
-       
+
        SKIPIT=0
-       if [ -e $a/skip ] 
+       if [ -e $a/skip ]
        then
                SKIPIT=1
                result="        Skipped test $a"
@@ -94,7 +112,7 @@ do
                result="        Skipped test $a because it's not the specified single test"
        fi
 
-                               
+
        if [ $SKIPIT = 1 ]
        then
                echo $testname >> skipped_tests
@@ -115,7 +133,7 @@ do
                done
                [ -n "$context" ] && [ -e "$a/expected_result.$context" ] && expected=$a/expected_result.$context
                diff ${diffopts} $expected $a/real_result > $a/diff 2>&1
-               if [ -s $a/diff ] 
+               if [ -s $a/diff ]
                then
                        if [ $FAIL = 0 ]
                        then
@@ -144,7 +162,7 @@ do
                                failed=$[$failed+1]
                        fi
                fi
-       fi      
+       fi
        echo "$result"
        echo
        echo "$result" >> test-results
index fa7f16e41934d4bb3b3d2ec52b962b8fbe97bbc5..d032b725582099ea8ec00171bf593a4939ffdb70 100755 (executable)
@@ -4,22 +4,41 @@ if [ "${PDNS_DEBUG}" = "YES" ]; then
   set -x
 fi
 
-export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
-export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
-export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
-export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
-export SDIG=${SDIG:-${PWD}/../pdns/sdig}
-export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
-export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
-export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
-export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
-export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
-export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
-export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
+if [ -z "$PDNS_MESON_PATH" ]; then
+  # PDNS_MESON_PATH is unset or empty. Assume an autotools build.
+
+  export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
+  export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
+  export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
+  export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
+  export SDIG=${SDIG:-${PWD}/../pdns/sdig}
+  export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
+  export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
+  export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
+  export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
+  export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
+  export ZONE2JSON=${ZONE2JSON:-${PWD}/../pdns/zone2json}
+  export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
+  export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
+else
+  export PDNS=${PDNS:-$PDNS_MESON_PATH/pdns-auth}
+  export PDNS2=${PDNS2:-$PDNS_MESON_PATH/pdns-auth}
+  export PDNSRECURSOR=${PDNSRECURSOR:-$PDNS_MESON_PATH/pdns/recursordist/pdns_recursor}
+  export RECCONTROL=${RECCONTROL:-$PDNS_MESON_PATH/pdns/recursordist/rec_control}
+  export SDIG=${SDIG:-$PDNS_MESON_PATH/sdig}
+  export NOTIFY=${NOTIFY:-$PDNS_MESON_PATH/pdns-auth-notify}
+  export NSEC3DIG=${NSEC3DIG:-$PDNS_MESON_PATH/nsec3dig}
+  export SAXFR=${SAXFR:-$PDNS_MESON_PATH/saxfr}
+  export ZONE2SQL=${ZONE2SQL:-$PDNS_MESON_PATH/pdns-zone2sql}
+  export ZONE2JSON=${ZONE2JSON:-$PDNS_MESON_PATH/pdns-zone2json}
+  export ZONE2LDAP=${ZONE2LDAP:-$PDNS_MESON_PATH/pdns-zone2ldap}
+  export PDNSUTIL=${PDNSUTIL:-$PDNS_MESON_PATH/pdns-auth-util}
+  export PDNSCONTROL=${PDNSCONTROL:-$PDNS_MESON_PATH/pdns-auth-control}
+fi
+
 export RESOLVERIP=${RESOLVERIP:-8.8.8.8}
 export FIX_TESTS=${FIX_TESTS:-NO}
 
-
 ALGORITHM=${ALGORITHM:="hmac-md5"}
 KEY=${KEY:="kp4/24gyYsEzbuTVJRUMoqGFmN3LYgVDzJ/3oRSP7ys="}