Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tevtl-00GSkt-M6 for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Feb 2025 12:49:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tevtk-00DZFg-ON for pgsql-hackers@arkaria.postgresql.org; Mon, 03 Feb 2025 12:49:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tevtk-00DZ1D-44 for pgsql-hackers@lists.postgresql.org; Mon, 03 Feb 2025 12:49:56 +0000 Received: from mail-vk1-xa31.google.com ([2607:f8b0:4864:20::a31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tevth-002wtK-2b for pgsql-hackers@lists.postgresql.org; Mon, 03 Feb 2025 12:49:55 +0000 Received: by mail-vk1-xa31.google.com with SMTP id 71dfb90a1353d-518957b0533so1295238e0c.1 for ; Mon, 03 Feb 2025 04:49:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738586993; x=1739191793; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vYBZq6Dn/AwUTi/Kh5/PHp6qY1c4cBiC0jqh2Z6O/Gs=; b=aAFcdp1dOmD75Z+eLjFAeksYUs9sLCA46bJWEJFQbB5kGrSJrVOCPhcp9ahfGBWf5x Qy8IFHZpGsWcKn06V+VipV5y5I3NGKaYNSIwva/CDZ4kAylKqw5Z+UYKddx+p66fu1zV 1DGGvCqE9RrOkKRNKHEriSM/QWaLYYxnP0cR9Ch+B7Cd8N695sckxUG2baF9hiVQeWIt 6Hzy2aI7bfdrG5DEhmp8egr8GZnCvUYmc8K5LzTvFq1/9s0PqNgbl4+O2ZzgJ6nqwFZU Kth4BC/378ZcMhVUZasAMaKesYOMAHz/kUS0yjl5+9tgAXZbqzSSqh+AbsaEffPx7Qwx Gh1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738586993; x=1739191793; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vYBZq6Dn/AwUTi/Kh5/PHp6qY1c4cBiC0jqh2Z6O/Gs=; b=ksEO08oj9zh2IKq6bftv/mZDsei9ASY41OFxqKQdB4qTnLD3etChZPKgr6xINi8s4r y35GFQBAVjpnVkOqI4EcnqTtKblDqn90Bt3tPJ8B9GhacFq4ppwMJGvR0P5+PGt3muTJ et+fw11IzdCEhOcciqGaEWopQG74l2e9RrIK69WxjPXBScTpUqZb3eVS+GNnZ/EkOnow yTXfW12vyt4fh0aqtLfabdYyeqD66gHgX5ZQD7g8gg2dLbwZ1IBOUF4XPckFMk+jbKf0 dYmh7v7rA1rF3m2f823fSabOC+rV9ntdxsm5nSqBwSQ8xGpk+mgx3f3hfy7uHS3dGAZZ W5Tg== X-Forwarded-Encrypted: i=1; AJvYcCVW6E68dLqoYmjK8vNQ5KIEr3n4HjbmltMxuRA6udpYc/6en18lAdteuc6IIRoLFwM9xz6/vd3g4iK+Wkwk@lists.postgresql.org X-Gm-Message-State: AOJu0YyzGT3iZBKjSolVDNSuf/8N9bfricCbOSN2GNUPtFVf6oa/r/c0 EhL9bfHuybcgyokhuhjuoLBpCcbQk3niZ3hnUkV7uonLb9H0RP/OP/XooYFNXdULB4eAnhGWgO8 FB+ekOe/iSSj30YtXj03g0+HQ00w= X-Gm-Gg: ASbGncubrgb8SAWaS/fq7jVh8QAGiTjQhu8adhKi2QlbNpkQ1dwTkvgvdKn8tUod1lr X2FzD0AQznXdcp9gOMXihYvcI4FUYHCQXUyD0Ok7USVtkn4/+sLbJ4kS1onRmsvX92ZnjM8wS X-Google-Smtp-Source: AGHT+IGjnG8MjlRfPKlWFnJKDNrJtoYZDY2yk1lg++oRJF0r+F/uqbpy3dzyteV5FmJ6AVv73nd0BdUpl/1DU6ppeI4= X-Received: by 2002:a05:6122:2498:b0:515:4b68:c37f with SMTP id 71dfb90a1353d-51e9e4e7b86mr15830471e0c.6.1738586992972; Mon, 03 Feb 2025 04:49:52 -0800 (PST) MIME-Version: 1.0 References: <202501110844.5ztsym4vbflm@alvherre.pgsql> In-Reply-To: From: jian he Date: Mon, 3 Feb 2025 20:49:15 +0800 X-Gm-Features: AWEUYZkpG5iFnc2FLP4g_FeMv3kd9GfUBxnDeLjvBBsozHAUgDt8cboerDIUYj4 Message-ID: Subject: Re: Non-text mode for pg_dumpall To: Mahendra Singh Thalor Cc: Srinath Reddy , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002147df062d3c54a0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002147df062d3c54a0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 3, 2025 at 5:14=E2=80=AFPM jian he wrote: > > there is some corner like num_db_restore =3D=3D 0, num_db_restore >=3D 1= 00 > in that scarenio, the execute_global_sql_commands already executed, > which is not ideal, since you have pg_fatal and some sql commands > already executed. > maybe we can be if 0 < num_db_restore < 100 then > call execute_global_sql_commands and restoreAllDatabases. > > > the attached patch trying to do that. > attached patch also doing some cosmetic changes. hi. please ignore the previous patch. see this email attached patch. previously I complained that the ``pg_restore --list`` needed a db connection and also called execute_global_sql_commands in [1] this email attached patch fixes the problem, now pg_restore --list no need db connection. now the logic is: if num_db_restore value is ok (0 < num_db_restore < MAX_ON_EXIT_NICELY) *AND* we didn't specify --list option then call execute_global_sql_commands. [1] https://postgr.es/m/CACJufxHUDGWe=3D2ZukvMfuwEcSK8CsVYm=3D9+rtPnrW7CRCf= oCsw@mail.gmail.com --0000000000002147df062d3c54a0 Content-Type: application/octet-stream; name="v14-0001-fix-pg_restore-list-option-and-handle-invoke-.no-cfbot" Content-Disposition: attachment; filename="v14-0001-fix-pg_restore-list-option-and-handle-invoke-.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6p1rug60 RnJvbSBiY2IzYzljYTZlNDc3NDhmN2E1MTM0ZGI5YjE5ZTU1OTA5Njc3YTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMyBGZWIgMjAyNSAyMDo0ODoyNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDEvMV0gZml4IHBnX3Jlc3RvcmUgLS1saXN0IG9wdGlvbiBhbmQgaGFuZGxlIGludm9rZSBnbG9i YWwKIG9iamVjdHMgZXhlY3V0aW9uCgpjYWxsIGV4ZWN1dGVfZ2xvYmFsX3NxbF9jb21tYW5kcyBv bmx5IHdoZW4KMCA8IG51bV9kYl9yZXN0b3JlIDwgTUFYX09OX0VYSVRfTklDRUxZLgoKYW5kIG90 aGVyIGNvZXNtZXRpYyBjaGFuZ2VzLgoKYWxzbyBtYWtlIHBnX3Jlc3RvcmUgLS1saXN0IG5vIG5l ZWQgZGF0YWJhc2UgY29ubmVjdGlvbiwgcGVyIGNvbXBsYWluIGZyb20KaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUNKdWZ4SFVER1dlPTJadWt2TWZ1d0VjU0s4Q3NWWW09OStydFBuclc3Q1JDZm9Dc3dA bWFpbC5nbWFpbC5jb20KCm5vdyB0aGUgbG9naWMgaXM6CmlmIG51bV9kYl9yZXN0b3JlIHZhbHVl IGlzIG9rICgwIDwgbnVtX2RiX3Jlc3RvcmUgPCBNQVhfT05fRVhJVF9OSUNFTFkpCmFuZCB3ZSBk aWRuJ3Qgc3BlY2lmeSAtLWxpc3Qgb3B0aW9uIHRoZW4gY2FsbCBleGVjdXRlX2dsb2JhbF9zcWxf Y29tbWFuZHMKLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jIHwgNTQgKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9u cygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jl c3RvcmUuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKaW5kZXggNDJjNGZlM2NlMi4u ZWIyMDA3OWNiOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCkBAIC03MSw4ICs3MSw4IEBAIHR5cGVkZWYg c3RydWN0IFNpbXBsZURhdGFiYXNlT2lkTGlzdAogCVNpbXBsZURhdGFiYXNlT2lkTGlzdENlbGwg KnRhaWw7CiB9IFNpbXBsZURhdGFiYXNlT2lkTGlzdDsKIAotc3RhdGljIHZvaWQKLXNpbXBsZV9k Yl9vaWRfbGlzdF9hcHBlbmQoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0LCBPaWQgZGJfb2lk LCBjb25zdCBjaGFyICpkYm5hbWUpOworc3RhdGljIHZvaWQgc2ltcGxlX2RiX29pZF9saXN0X2Fw cGVuZChTaW1wbGVEYXRhYmFzZU9pZExpc3QgKmxpc3QsCisJCQkJCQkJCQkgIE9pZCBkYl9vaWQs IGNvbnN0IGNoYXIgKmRibmFtZSk7CiAKIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnBy b2duYW1lKTsKIHN0YXRpYyB2b2lkIHJlYWRfcmVzdG9yZV9maWx0ZXJzKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBSZXN0b3JlT3B0aW9ucyAqb3B0cyk7CkBAIC00OTUsMTcgKzQ5NSwxNSBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0 IHRvIGRhdGFiYXNlIFwiJXNcIiIsIG9wdHMtPmNwYXJhbXMuZGJuYW1lKTsKIAkJCX0KIAotCQkJ LyoKLQkJCSAqIE9wZW4gZ2xvYmFsLmRhdCBmaWxlIGFuZCBleGVjdXRlL2FwcGVuZCBhbGwgdGhl IGdsb2JhbCBzcWwKLQkJCSAqIGNvbW1hbmRzLgotCQkJICovCi0JCQlleGVjdXRlX2dsb2JhbF9z cWxfY29tbWFuZHMoY29ubiwgaW5wdXRGaWxlU3BlYywgb3B0cy0+ZmlsZW5hbWUpOwotCiAJCQkv KiBJZiBnbG9iYWxzLW9ubHksIHRoZW4gcmV0dXJuIGZyb20gaGVyZS4gKi8KIAkJCWlmIChnbG9i YWxzX29ubHkpCiAJCQl7Ci0JCQkJaWYgKGNvbm4pCi0JCQkJCVBRZmluaXNoKGNvbm4pOworCQkJ CS8qCisJCQkJKiBPcGVuIGdsb2JhbC5kYXQgZmlsZSBhbmQgZXhlY3V0ZS9hcHBlbmQgYWxsIHRo ZSBnbG9iYWwgc3FsCisJCQkJKiBjb21tYW5kcy4KKwkJCQkqLworCQkJCWV4ZWN1dGVfZ2xvYmFs X3NxbF9jb21tYW5kcyhjb25uLCBpbnB1dEZpbGVTcGVjLCBvcHRzLT5maWxlbmFtZSk7CisKIAkJ CQlwZ19sb2dfaW5mbygiZGF0YWJhc2VzIHJlc3RvcmluZyBpcyBza2lwcGVkIGFzIC1nLy0tZ2xv YmFscy1vbmx5IG9wdGlvbiBpcyBzcGVjaWZpZWQiKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTUxNSwx MCArNTEzLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCQkJCQkJCQkJZGJf ZXhjbHVkZV9wYXR0ZXJucywKIAkJCQkJCQkJCQkJCW9wdHMsCiAJCQkJCQkJCQkJCQludW1Xb3Jr ZXJzKTsKKwkJCQkvKiBGcmVlIGRiIHBhdHRlcm4gbGlzdC4gKi8KKwkJCQlzaW1wbGVfc3RyaW5n X2Z1bGxfbGlzdF9kZWxldGUoJmRiX2V4Y2x1ZGVfcGF0dGVybnMpOwogCQkJfQogCi0JCQkvKiBG cmVlIGRiIHBhdHRlcm4gbGlzdC4gKi8KLQkJCXNpbXBsZV9zdHJpbmdfZnVsbF9saXN0X2RlbGV0 ZSgmZGJfZXhjbHVkZV9wYXR0ZXJucyk7CisJCQlpZiAoY29ubikKKwkJCQlQUWZpbmlzaChjb25u KTsKIAogCQkJcmV0dXJuIGV4aXRfY29kZTsKIAkJfQpAQCAtOTg4LDcgKzk4OCw3IEBAIGdldF9k Ym5hbWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgU2ltcGxl RGF0YWJhc2VPaWRMaXN0ICpkCiAJd2hpbGUoKGZnZXRzKGxpbmUsIE1BWFBHUEFUSCwgcGZpbGUp KSAhPSBOVUxMKQogCXsKIAkJT2lkICAgICAgICAgZGJfb2lkID0gSW52YWxpZE9pZDsKLQkJY2hh cgkJZGJfb2lkX3N0cltNQVhQR1BBVEggKyAxXTsKKwkJY2hhcgkJZGJfb2lkX3N0cltNQVhQR1BB VEggKyAxXSA9IHsnXDAnfTsKIAkJY2hhciAgICAgICAgZGJuYW1lW01BWFBHUEFUSCArIDFdID0g eydcMCd9OwogCiAJCS8qIEV4dHJhY3QgZGJvaWQuICovCkBAIC0xMDc4LDE2ICsxMDc4LDEyIEBA IHJlc3RvcmVBbGxEYXRhYmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0 aCwKIAludW1fZGJfcmVzdG9yZSA9IGZpbHRlcl9kYm5hbWVzX2Zvcl9yZXN0b3JlKGNvbm4sICZk Ym5hbWVfb2lkX2xpc3QsCiAJCQkJCQkJCQkJCQlkYl9leGNsdWRlX3BhdHRlcm5zKTsKIAotCS8q IENsb3NlIHRoZSBkYiBjb25uZWN0aW9uIGFzIHdlIGFyZSBkb25lIHdpdGggZ2xvYmFscyBhbmQg cGF0dGVybnMuICovCi0JaWYgKGNvbm4pCi0JCVBRZmluaXNoKGNvbm4pOwotCi0JLyogRXhpdCBp ZiBubyBkYiBuZWVkcyB0byBiZSByZXN0b3JlZC4gKi8KLQlpZiAoZGJuYW1lX29pZF9saXN0Lmhl YWQgPT0gTlVMTCkKLQkJcmV0dXJuIDA7Ci0KIAlwZ19sb2dfaW5mbygibmVlZHMgdG8gcmVzdG9y ZSAlZCBkYXRhYmFzZXMgb3V0IG9mICVkIGRhdGFiYXNlcyIsIG51bV9kYl9yZXN0b3JlLCBudW1f dG90YWxfZGIpOwogCisJLyogRXhpdCBpZiBubyBkYiBuZWVkcyB0byBiZSByZXN0b3JlZC4gKi8K KwlpZiAoZGJuYW1lX29pZF9saXN0LmhlYWQgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKIAkvKgog CSAqIFRvIHJlc3RvcmUgbXVsdGlwbGUgZGF0YWJhc2VzLCAtQyAoY3JlYXRlIGRhdGFiYXNlKSBv cHRpb24gc2hvdWxkIGJlIHNwZWNpZmllZAogCSAqIG9yIGFsbCBkYXRhYmFzZXMgc2hvdWxkIGJl IGNyZWF0ZWQgYmVmb3JlIHBnX3Jlc3RvcmUuCkBAIC0xMDk5LDExICsxMDk1LDE1IEBAIHJlc3Rv cmVBbGxEYXRhYmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwKIAlp ZiAobnVtX2RiX3Jlc3RvcmUgPiBNQVhfT05fRVhJVF9OSUNFTFkpCiAJewogCQlzaW1wbGVfZGJf b2lkX2Z1bGxfbGlzdF9kZWxldGUoJmRibmFtZV9vaWRfbGlzdCk7Ci0JCXBnX2ZhdGFsKCJjb3Vu ZCBub3QgcmVzdG9yZSBtb3JlIHRoYW4gJWQgZGF0YWJhc2VzIGJ5IHNpbmdsZSBwZ19yZXN0b3Jl LCBoZXJlIHRvdGFsIGRiOiVkIiwKKwkJcGdfZmF0YWwoImNvdW5kIG5vdCByZXN0b3JlIG1vcmUg dGhhbiAlZCBkYXRhYmFzZXMgYnkgc2luZ2xlIHBnX3Jlc3RvcmUsIGhlcmUgdG90YWwgZGF0YWJh c2U6JWQiLAogCQkJCSAgTUFYX09OX0VYSVRfTklDRUxZLAogCQkJCSAgbnVtX2RiX3Jlc3RvcmUp OwogCX0KIAorCS8qIHByaW50IG91dCBzdW1tYXJ5LCBkb24ndCBuZWVkIGV4ZWN1dGUgdGhlIGds b2JhbCBvYmplY3RzIHJlbGF0ZWQgc3RhdGVtZW50ICovCisJaWYgKCFvcHRzLT50b2NTdW1tYXJ5 KQorCQlleGVjdXRlX2dsb2JhbF9zcWxfY29tbWFuZHMoY29ubiwgZHVtcGRpcnBhdGgsIG9wdHMt PmZpbGVuYW1lKTsKKwogCS8qCiAJICogWFhYOiBUT0RPIHRpbGwgbm93LCB3ZSBtYWRlIGEgbGlz dCBvZiBkYXRhYmFzZXMsIHRob3NlIG5lZWRzIHRvIGJlIHJlc3RvcmVkCiAJICogYWZ0ZXIgc2tp cHBpbmcgbmFtZXMgb2YgZXhjbHVkZS1kYXRhYmFzZS4gIE5vdyB3ZSBjYW4gbGF1bmNoIHBhcmFs bGVsCkBAIC0xMTUzLDggKzExNTMsOCBAQCByZXN0b3JlQWxsRGF0YWJhc2VzKFBHY29ubiAqY29u biwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiAgKgogICogVGhpcyB3aWxsIG9wZW4gZ2xvYmFs LmRhdCBmaWxlIGFuZCB3aWxsIGV4ZWN1dGUgYWxsIGdsb2JhbCBzcWwgY29tbWFuZHMgb25lCiAg KiBieSBvbmUgc3RhdGVtZW50LgotICogU2VtaWNvbG9uIGlzIGNvbnNpZGVyZWQgYXMgc3RhdGVt ZW50IHRlcm1pbmF0b3IuICBJZiBvdXRmaWxlIGlzIHBhc3NlZCwgdGhlbgotICogdGhpcyB3aWxs IGNvcHkgYWxsIHNxbCBjb21tYW5kcyBpbnRvIG91dGZpbGUgcmF0aGVyIHRoZW4gZXhlY3V0aW5n IHRoZW0uCisgKiBTZW1pY29sb24gaXMgY29uc2lkZXJlZCBhcyBzdGF0ZW1lbnQgdGVybWluYXRv ci4gIElmIG91dGZpbGUgaXMgbm90IE5VTEwsIHRoZW4KKyAqIHdlIGNvcHkgYWxsIHNxbCBjb21t YW5kcyBpbnRvIG91dGZpbGUgcmF0aGVyIHRoZW4gZXhlY3V0aW5nIHRoZW0uCiAgKi8KIHN0YXRp YyB2b2lkCiBleGVjdXRlX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAqb3V0ZmlsZSkKQEAgLTEyNDIsNyArMTI0Miw3 IEBAIGNvcHlfZ2xvYmFsX2ZpbGVfdG9fb3V0X2ZpbGUoY29uc3QgY2hhciAqb3V0ZmlsZSwgRklM RSAqcGZpbGUpCiAgKi8KIHN0YXRpYyB2b2lkCiBzaW1wbGVfZGJfb2lkX2xpc3RfYXBwZW5kKFNp bXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCwgT2lkIGRiX29pZCwKLQkJY29uc3QgY2hhciAqZGJu YW1lKQorCQkJCQkJICBjb25zdCBjaGFyICpkYm5hbWUpCiB7CiAJU2ltcGxlRGF0YWJhc2VPaWRM aXN0Q2VsbCAqY2VsbDsKIApAQCAtMTMxMCw4ICsxMzEwLDggQEAgc2ltcGxlX3N0cmluZ19mdWxs X2xpc3RfZGVsZXRlKFNpbXBsZVN0cmluZ0xpc3QgKmxpc3QpCiAgKi8KIHN0YXRpYyB2b2lkCiBz aW1wbGVfZGJfb2lkX2xpc3RfZGVsZXRlKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCwKLQkJ U2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbCAqY2VsbCwKLQkJU2ltcGxlRGF0YWJhc2VPaWRMaXN0 Q2VsbCAqcHJldikKKwkJCQkJCSAgU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbCAqY2VsbCwKKwkJ CQkJCSAgU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbCAqcHJldikKIHsKIAlpZiAocHJldiA9PSBO VUxMKQogCXsKLS0gCjIuMzQuMQoK --0000000000002147df062d3c54a0--