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 1v3oyf-0046jS-Ex for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 05:02:09 +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 1v3oyd-00FXwO-HO for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 05:02:08 +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 1v3oyc-00FXvv-Rc for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 05:02:07 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v3oya-000oL2-2K for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 05:02:06 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-5688ac2f39dso8167681e87.3 for ; Tue, 30 Sep 2025 22:02:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759294924; x=1759899724; 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=LdVGMAFNc9iAqDYVHmAFifkSmFi/cMjOsq9qlJXttRE=; b=ZzEAKGg0rtDakf9p8D7mIsdZWxlh8PTGn/zt2WtefbE68jfM7jMGNBV9lCqDxguAPn N8kNRejUtlSX/q5oFbklx/JFXy6a1qPv1vbKl+69WYPMn73sTG0FcuAW+t1Es39HsSOc arYsqUMlztf9LKSmKGxXr5Fn6IxpA8es2VCZUSSpWyOkXbrisuG9nB7ilwUsktIhtldp bR0Hud86lvpa7C/XHy8HQnDLByGtXncvh70gaFAzogfgNCNk8s2EQZloHGDlyHTiKhDw RCtyNgnHFmfA7aQfRw43ygfI34JTp3lfVjxUHB1skUsuWLyi1XNQo2SP0FIlKF9z/hqM 3lRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759294924; x=1759899724; 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=LdVGMAFNc9iAqDYVHmAFifkSmFi/cMjOsq9qlJXttRE=; b=Af4s+V2wTzSJPvCqVr14U7hkNzincMjK6Yg6WHDStEvQWgxWHjI/pzLc0pcn0k5sOa CwHOXc+lTwYuX6r9bMgPsBpWMf8ZKl+SgMSokaZRBO1kBEUpVs8XIu0cvsUfjdDXkmjv L2HFzIPBGZKakfKDjVXZuMyKKZWW3Om84kxoCYdUkE6jZlsQDqaeJu1VUsC8pltoHq1G iLonnvpHBfQ9x98OuZ4URzTwZkUy7MO2xfqwy/MGi/T658DfxjB8akkJOPsfxDM3S7NP zdlnt4jKAHkBUrhZ+9zzOMZw/3XhSCpCUwAqtM0k53scdaSBF+WfXlNYpHqMM3kgRO9h 71UQ== X-Forwarded-Encrypted: i=1; AJvYcCVl+NLWaZQ+QX4t6WgY+sSDVXGIuu/gYe+GteHZftZnhR6rtuFgzQ/ea2Xpls2HToprrvmv880KX7+a3tFh@lists.postgresql.org X-Gm-Message-State: AOJu0YyJGPas5OPXYOqeQsDJj+2e/fR6nOZzbWD6+sY2WJ9tCy8lcvKl HlBAPk9aDefjQo3PMVFw93P6E8yYg3f+FNWIx43eNv7tHohqcMLQUMKcNvz6kvNtL/esNUrpRBj DRCwTyOwmM8qS97Zph+0lNkTaTfjrG+EOF5wj X-Gm-Gg: ASbGnctlQEQTQ8GbsiM3trbl7b+eA7QVvff96IPAeHTspfbJizTgjcgi+GpWi/bSUaI eW1FipklYtdTkYCReQAGJMdjTxUvHefdGHcHlAi4dkRaoHUuNS9tl6KKhX1Dxc5YX0pABP6xJ10 FYkhPmZppcwGCNxj2UNr9ni7g+lu4zs1+VPcNHZvJEVtaYAswe9dWHUd2aeRMwLbv7l5/wEGF2G q6JGZyPYFtF8YRDpCJmS4mb8cbl4UCLe0eCMIqL09peSC3g5gjFVspv+BDLm6Ej3jK2+ERViezA psFpZeiUB2Vv39BFsvVaKA== X-Google-Smtp-Source: AGHT+IGCOBKiqM82DQ2yCg5ZjJl0hxXk0w0MhIJ+CBAc6jLfuJZQOhsJQddGQHQLeq9bMAwbOaPLu31a7Lhj1weL+sw= X-Received: by 2002:a05:6512:b02:b0:576:e6ef:1815 with SMTP id 2adb3069b0e04-58af9f755d3mr559678e87.47.1759294923611; Tue, 30 Sep 2025 22:02:03 -0700 (PDT) MIME-Version: 1.0 References: <76DBEF5D-EA47-4C30-8D28-97B3B88E2E2D@greg.burd.me> In-Reply-To: From: David Rowley Date: Wed, 1 Oct 2025 18:01:51 +1300 X-Gm-Features: AS18NWClz2xbCbV_vy6JCxu-0b-iInrjVXVVWGizeUUMReRBVvaoL8Rsi7WYZQQ Message-ID: Subject: Re: [PATCH] Add tests for Bitmapset To: Michael Paquier Cc: Greg Burd , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fa3a2a064011c414" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fa3a2a064011c414 Content-Type: text/plain; charset="UTF-8" On Wed, 1 Oct 2025 at 18:00, David Rowley wrote: > git diff --stat > .../test_bitmapset/expected/test_bitmapset.out | 400 ++------------ > .../modules/test_bitmapset/sql/test_bitmapset.sql | 101 +--- > .../modules/test_bitmapset/test_bitmapset--1.0.sql | 2 +- > src/test/modules/test_bitmapset/test_bitmapset.c | 605 +++++---------------- > 4 files changed, 222 insertions(+), 886 deletions(-) And once more, with the patch this time around... David --000000000000fa3a2a064011c414 Content-Type: application/octet-stream; name="adjustments_to_test_bitmapset_module_v2.patch" Content-Disposition: attachment; filename="adjustments_to_test_bitmapset_module_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg7irc3n0 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvZXhwZWN0ZWQvdGVz dF9iaXRtYXBzZXQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9leHBlY3Rl ZC90ZXN0X2JpdG1hcHNldC5vdXQKaW5kZXggYmU3YjYzOTljODIuLjhhZDdjYjcxMzMwIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L2V4cGVjdGVkL3Rlc3RfYml0 bWFwc2V0Lm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L2V4cGVjdGVk L3Rlc3RfYml0bWFwc2V0Lm91dApAQCAtNTksMTMgKzU5LDYgQEAgU0VMRUNUIHRlc3RfYm1zX2Fk ZF9tZW1iZXIoJyhiIDEwKScsIDEwKSBBUyByZXN1bHQ7CiAgKGIgMTApCiAoMSByb3cpCiAKLS0t IFRlc3QgbW9kdWxlIGNoZWNrCi1TRUxFQ1QgdGVzdF9ibXNfYWRkX21lbWJlcignKGIpJywgTlVM TCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KIC0tIGJtc19y ZXBsYWNlX21lbWJlcnMoKQogU0VMRUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycyhOVUxMLCAn KGIgMSAyIDMpJykgQVMgcmVzdWx0OwogICByZXN1bHQgICAKQEAgLTc2LDcgKzY5LDcgQEAgU0VM RUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycyhOVUxMLCAnKGIgMSAyIDMpJykgQVMgcmVzdWx0 OwogU0VMRUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycygnKGIgMSAyIDMpJywgTlVMTCkgQVMg cmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRl c3RfYm1zX3JlcGxhY2VfbWVtYmVycygnKGIgMSAyIDMpJywgJyhiIDMgNSA2KScpIEFTIHJlc3Vs dDsKQEAgLTEwNCwxOSArOTcsMjAgQEAgU0VMRUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycygn KGIgMSAyIDMgNCA1KScsICcoYiA1MDAgNjAwKScpIEFTIHJlc3VsdDsKICAoYiA1MDAgNjAwKQog KDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKKy0tIFJlcGxhY2Ugd2l0aCBhbiBlbXB0 eSBzZXQKIFNFTEVDVCB0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoJyhiIDEgMiAzKScsIE5VTEwp IEFTIHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotIAorIDw+CiAoMSByb3cpCiAKIFNFTEVD VCB0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwogIHJl c3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAorLS0gUmVwbGFjZSBlbXB0eSBzZXQg d2l0aCBhbm90aGVyIHNldAogU0VMRUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycyhOVUxMLCAn KGIgNSknKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KQEAgLTEyNiw3ICsxMjAsNyBA QCBTRUxFQ1QgdGVzdF9ibXNfcmVwbGFjZV9tZW1iZXJzKE5VTEwsICcoYiA1KScpIEFTIHJlc3Vs dDsKIFNFTEVDVCB0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoTlVMTCwgTlVMTCkgQVMgcmVzdWx0 OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogLS0gYm1zX2RlbF9tZW1i ZXIoKQpAQCAtMTM1LDEzICsxMjksMTMgQEAgRVJST1I6ICBuZWdhdGl2ZSBiaXRtYXBzZXQgbWVt YmVyIG5vdCBhbGxvd2VkCiBTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcignKGIpJywgMTApIEFT IHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotIAorIDw+CiAoMSByb3cpCiAKIFNFTEVDVCB0 ZXN0X2Jtc19kZWxfbWVtYmVyKCcoYiAxMCknLCAxMCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0t LS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIoJyhi IDEwKScsIDUpIEFTIHJlc3VsdDsKQEAgLTE4OSwzMCArMTgzLDI0IEBAIFNFTEVDVCB0ZXN0X2Jt c19kZWxfbWVtYmVyKCcoYiAxIDUwIDEwMCAyMDApJywgMTAwKSBBUyByZXN1bHQ7CiAgKGIgMSA1 MCAyMDApCiAoMSByb3cpCiAKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcworLS0gRW1wdHkgcmVzdWx0 aW5nIHNldAogU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIoJyhiIDQyKScsIDQyKSBBUyByZXN1 bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIHRlc3RfYm1zX2Rl bF9tZW1iZXIoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0g CisgPD4KICgxIHJvdykKIAogLS0gYm1zX2RlbF9tZW1iZXJzKCkKIFNFTEVDVCB0ZXN0X2Jtc19k ZWxfbWVtYmVycygnKGIpJywgJyhiIDEwKScpIEFTIHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0t LQotIAorIDw+CiAoMSByb3cpCiAKIFNFTEVDVCB0ZXN0X2Jtc19kZWxfbWVtYmVycygnKGIgMTAp JywgJyhiIDEwKScpIEFTIHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotIAorIDw+CiAoMSBy b3cpCiAKIFNFTEVDVCB0ZXN0X2Jtc19kZWxfbWVtYmVycygnKGIgMTApJywgJyhiIDUpJykgQVMg cmVzdWx0OwpAQCAtMjUyLDcgKzI0MCw3IEBAIFNFTEVDVCB0ZXN0X2Jtc19kZWxfbWVtYmVycygn KGIgMSAyIDEwMCAyMDAgMzAwKScsICcoYiAyMDAgMzAwKScpIEFTIHJlc3VsdDsKICAoYiAxIDIg MTAwKQogKDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKKy0tIFRlc3Qgd2l0aCBlbXB0 eSBzZXRzCiBTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcnMoJyhiIDUpJywgTlVMTCkgQVMgcmVz dWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCkBAIC0yNjIsNyArMjUwLDcgQEAgU0VMRUNUIHRlc3Rf Ym1zX2RlbF9tZW1iZXJzKCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jt c19kZWxfbWVtYmVycyhOVUxMLCAnKGIgNSknKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0t LS0KLSAKKyA8PgogKDEgcm93KQogCiAtLSBibXNfam9pbigpCkBAIC0zMDMsMjMgKzI5MSwxMSBA QCBTRUxFQ1QgdGVzdF9ibXNfam9pbignKGIgMSAyKScsICcoYiAxMDAgMjAwIDMwMCknKSBBUyBy ZXN1bHQ7CiAgKGIgMSAyIDEwMCAyMDAgMzAwKQogKDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBj aGVja3MKLVNFTEVDVCB0ZXN0X2Jtc19qb2luKCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKLSBy ZXN1bHQgCi0tLS0tLS0tLQotIChiIDUpCi0oMSByb3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19qb2lu KE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQotIChiIDUpCi0o MSByb3cpCi0KKy0tIEJvdGggc2V0cyBlbXB0eQogU0VMRUNUIHRlc3RfYm1zX2pvaW4oTlVMTCwg TlVMTCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAog LS0gYm1zX3VuaW9uKCkKQEAgLTMzMCwxOCArMzA2LDE4IEBAIFNFTEVDVCB0ZXN0X2Jtc191bmlv bignKGIgMSAzIDUpJywgJyhiIDMgNSA3KScpIEFTIHJlc3VsdDsKICAoYiAxIDMgNSA3KQogKDEg cm93KQogCi0tLSBVbmlvbiB3aXRoIE5VTEwKKy0tIFVuaW9uIHdpdGggZW1wdHkgc2V0CiBTRUxF Q1QgdGVzdF9ibXNfdW5pb24oJyhiIDEgMyA1KScsICcoYiknKSBBUyByZXN1bHQ7CiAgIHJlc3Vs dCAgIAogLS0tLS0tLS0tLS0KICAoYiAxIDMgNSkKICgxIHJvdykKIAotLS0gVW5pb24gb2YgZW1w dHkgd2l0aCBlbXB0eQorLS0gVHJ5IGJvdGggc2V0cyBlbXB0eQogU0VMRUNUIHRlc3RfYm1zX3Vu aW9uKCcoYiknLCAnKGIpJykgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4K ICgxIHJvdykKIAogLS0gT3ZlcmxhcHBpbmcgcmFuZ2VzCkBAIC0zNTQsNyArMzMwLDcgQEAgU0VM RUNUIHRlc3RfYm1zX3VuaW9uKAogIChiIDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMg MTQgMTUgMTYgMTcgMTggMTkgMjApCiAoMSByb3cpCiAKLS0tIFVuaW9uIHdpdGggdmFycnlpbmcg d29yZCBjb3VudHMKKy0tIFVuaW9uIHdpdGggdmFyeWluZyB3b3JkIGNvdW50cwogU0VMRUNUIHRl c3RfYm1zX3VuaW9uKCcoYiAxIDIpJywgJyhiIDEwMCAzMDApJykgQVMgcmVzdWx0OwogICAgICBy ZXN1bHQgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNjcsNyArMzQzLDcgQEAgU0VMRUNU IHRlc3RfYm1zX3VuaW9uKCcoYiAxMDAgMzAwKScsICcoYiAxIDIpJykgQVMgcmVzdWx0OwogIChi IDEgMiAxMDAgMzAwKQogKDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKKy0tIFVuaW9u cyB0byBlbXB0eSBzZXRzCiBTRUxFQ1QgdGVzdF9ibXNfdW5pb24oJyhiIDUpJywgTlVMTCkgQVMg cmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCkBAIC0zODMsNyArMzU5LDcgQEAgU0VMRUNUIHRl c3RfYm1zX3VuaW9uKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jtc191 bmlvbihOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8Pgog KDEgcm93KQogCiAtLSBibXNfaW50ZXJzZWN0KCkKQEAgLTM5OCwxNyArMzc0LDE3IEBAIFNFTEVD VCB0ZXN0X2Jtc19pbnRlcnNlY3QoJyhiIDEgMyA1KScsICcoYiAzIDUgNyknKSBBUyByZXN1bHQ7 CiBTRUxFQ1QgdGVzdF9ibXNfaW50ZXJzZWN0KCcoYiAxIDMgNSknLCAnKGIgMiA0IDYpJykgQVMg cmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogLS0gSW50ZXJz ZWN0IHdpdGggZW1wdHkKIFNFTEVDVCB0ZXN0X2Jtc19pbnRlcnNlY3QoJyhiIDEgMyA1KScsICco YiknKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8PgogKDEgcm93KQogCi0t LSBJbnRlcnNlY3Qgd2l0aCB2YXJyeWluZyB3b3JkIGNvdW50cworLS0gSW50ZXJzZWN0IHdpdGgg dmFyeWluZyB3b3JkIGNvdW50cwogU0VMRUNUIHRlc3RfYm1zX2ludGVyc2VjdCgnKGIgMSAzMDAp JywgJyhiIDEgMiAzIDQgNSknKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KQEAgLTQy MSwyOSArMzk3LDIzIEBAIFNFTEVDVCB0ZXN0X2Jtc19pbnRlcnNlY3QoJyhiIDEgMiAzIDQgNSkn LCAnKGIgMSAzMDApJykgQVMgcmVzdWx0OwogIChiIDEpCiAoMSByb3cpCiAKLS0tIFRlc3QgbW9k dWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX2ludGVyc2VjdCgnKGIgMSknLCAnKGIgMiknKSBB UyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAKLSgxIHJvdykKLQorLS0gSW50ZXJzZWN0 IHdpdGggZW1wdHkgc2V0cwogU0VMRUNUIHRlc3RfYm1zX2ludGVyc2VjdCgnKGIgNSknLCBOVUxM KSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8PgogKDEgcm93KQogCiBTRUxF Q1QgdGVzdF9ibXNfaW50ZXJzZWN0KE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKICByZXN1bHQg CiAtLS0tLS0tLQotIAorIDw+CiAoMSByb3cpCiAKIFNFTEVDVCB0ZXN0X2Jtc19pbnRlcnNlY3Qo TlVMTCwgTlVMTCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJv dykKIAogLS0gYm1zX2ludF9tZW1iZXJzKCkKQEAgLTQ1OCwxNCArNDI4LDE0IEBAIFNFTEVDVCB0 ZXN0X2Jtc19pbnRfbWVtYmVycygnKGIgMSAzIDUpJywgJyhiIDMgNSA3KScpIEFTIHJlc3VsdDsK IFNFTEVDVCB0ZXN0X2Jtc19pbnRfbWVtYmVycygnKGIgMSAzIDUpJywgJyhiIDIgNCA2KScpIEFT IHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotIAorIDw+CiAoMSByb3cpCiAKIC0tIEludGVy c2VjdCB3aXRoIGVtcHR5CiBTRUxFQ1QgdGVzdF9ibXNfaW50X21lbWJlcnMoJyhiIDEgMyA1KScs ICcoYiknKSBBUyByZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8PgogKDEgcm93KQog CiAtLSBNdWx0aXBsZSBtZW1iZXJzCkBAIC00NzUsMjkgKzQ0NSwyMyBAQCBTRUxFQ1QgdGVzdF9i bXNfaW50X21lbWJlcnMoJyhiIDAgMzEgMzIgNjMgNjQpJywgJyhiIDMxIDMyIDY0IDY1KScpIEFT IHJlc3VsdDsKICAoYiAzMSAzMiA2NCkKICgxIHJvdykKIAotLS0gVGVzdCBtb2R1bGUgY2hlY2tz Ci1TRUxFQ1QgdGVzdF9ibXNfaW50X21lbWJlcnMoJyhiIDEpJywgJyhiIDIpJykgQVMgcmVzdWx0 OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KKy0tIEludGVyc2VjdCB3aXRoIGVt cHR5IHNldHMKIFNFTEVDVCB0ZXN0X2Jtc19pbnRfbWVtYmVycygnKGIgNSknLCBOVUxMKSBBUyBy ZXN1bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8PgogKDEgcm93KQogCiBTRUxFQ1QgdGVz dF9ibXNfaW50X21lbWJlcnMoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0t LS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRlc3RfYm1zX2ludF9tZW1iZXJzKE5V TEwsIE5VTEwpIEFTIHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotIAorIDw+CiAoMSByb3cp CiAKIC0tIGJtc19kaWZmZXJlbmNlKCkKQEAgLTUxOSwxNCArNDgzLDE0IEBAIFNFTEVDVCB0ZXN0 X2Jtc19kaWZmZXJlbmNlKCcoYiAxIDMgNSknLCAnKGIgMiA0IDYpJykgQVMgcmVzdWx0OwogU0VM RUNUIHRlc3RfYm1zX2RpZmZlcmVuY2UoJyhiIDEgMyA1KScsICcoYiAxIDMgNSknKSBBUyByZXN1 bHQ7CiAgcmVzdWx0IAogLS0tLS0tLS0KLSAKKyA8PgogKDEgcm93KQogCiAtLSBTdWJzdHJhY3Rp b24gdG8gZW1wdHkKIFNFTEVDVCB0ZXN0X2Jtc19kaWZmZXJlbmNlKCcoYiA0MiknLCAnKGIgNDIp JykgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogLS0g U3VidHJhY3Rpb24gZWRnZSBjYXNlCkBAIC01NTYsNyArNTIwLDcgQEAgU0VMRUNUIHRlc3RfYm1z X2RpZmZlcmVuY2UoJyhiIDEgMiAxMDAgMjAwKScsICcoYiAxIDIpJykgQVMgcmVzdWx0OwogU0VM RUNUIHRlc3RfYm1zX2RpZmZlcmVuY2UoJyhiIDUpJywgJyhiIDUgMTApJykgQVMgcmVzdWx0Owog IHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRlc3RfYm1zX2Rp ZmZlcmVuY2UoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwpAQCAtNTY4LDEzICs1MzIsMTMgQEAg U0VMRUNUIHRlc3RfYm1zX2RpZmZlcmVuY2UoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwogU0VM RUNUIHRlc3RfYm1zX2RpZmZlcmVuY2UoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwogIHJlc3Vs dCAKIC0tLS0tLS0tCi0gCisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRlc3RfYm1zX2RpZmZlcmVu Y2UoTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gCisgPD4KICgx IHJvdykKIAogLS0gYm1zX2lzX21lbWJlcigpCkBAIC02MDQsMTMgKzU2OCw2IEBAIFNFTEVDVCB0 ZXN0X2Jtc19pc19tZW1iZXIoJyhiKScsIDEpIEFTIHJlc3VsdDsKICBmCiAoMSByb3cpCiAKLS0t IFRlc3QgbW9kdWxlIGNoZWNrCi1TRUxFQ1QgdGVzdF9ibXNfaXNfbWVtYmVyKCcoYiA1KScsIE5V TEwpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQotIGYKLSgxIHJvdykKLQogLS0gYm1z X21lbWJlcl9pbmRleCgpCiBTRUxFQ1QgdGVzdF9ibXNfbWVtYmVyX2luZGV4KE5VTEwsIDEpIEFT IHJlc3VsdDsKICByZXN1bHQgCkBAIC02NTUsMTkgKzYxMiw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19t ZW1iZXJfaW5kZXgoJyhiIDEgNTAgMTAwIDIwMCknLCAyMDApIEFTIHJlc3VsdDsKICAgICAgIDMK ICgxIHJvdykKIAotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9ibXNfbWVtYmVy X2luZGV4KCcnLCA1KSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgLTEKLSgx IHJvdykKLQotU0VMRUNUIHRlc3RfYm1zX21lbWJlcl9pbmRleChOVUxMLCA1KSBBUyByZXN1bHQ7 Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgLTEKLSgxIHJvdykKLQogLS0gYm1zX251bV9tZW1i ZXJzKCkKIFNFTEVDVCB0ZXN0X2Jtc19udW1fbWVtYmVycygnKGIpJykgQVMgcmVzdWx0OwogIHJl c3VsdCAKQEAgLTY5NCw2ICs2MzgsMTIgQEAgU0VMRUNUIHRlc3RfYm1zX2VxdWFsKCcoYiknLCAn KGIpJykgQVMgcmVzdWx0OwogIHQKICgxIHJvdykKIAorU0VMRUNUIHRlc3RfYm1zX2VxdWFsKE5V TEwsIE5VTEwpIEFTIHJlc3VsdDsKKyByZXN1bHQgCistLS0tLS0tLQorIHQKKygxIHJvdykKKwog U0VMRUNUIHRlc3RfYm1zX2VxdWFsKCcoYiknLCAnKGIgMSAzIDUpJykgQVMgcmVzdWx0OwogIHJl c3VsdCAKIC0tLS0tLS0tCkBAIC03MzEsMjUgKzY4MSw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19lcXVh bCgnKGIgNSAxMCknLCAnKGIgMTAwIDIwMCAzMDApJykgQVMgcmVzdWx0OwogIGYKICgxIHJvdykK IAotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9ibXNfZXF1YWwoJyhiIDUpJywg TlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gZgotKDEgcm93KQotCi1TRUxF Q1QgdGVzdF9ibXNfZXF1YWwoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0t LS0tLS0tCi0gZgotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfZXF1YWwoTlVMTCwgTlVMTCkg QVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gdAotKDEgcm93KQotCiAtLSBibXNfY29t cGFyZSgpCiBTRUxFQ1QgdGVzdF9ibXNfY29tcGFyZSgnKGIpJywgJyhiKScpIEFTIHJlc3VsdDsK ICByZXN1bHQgCkBAIC03OTYsMjUgKzcyNyw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19jb21wYXJlKAog ICAgICAtMQogKDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2Jt c19jb21wYXJlKCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQot ICAgICAgMQotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfY29tcGFyZShOVUxMLCAnKGIgNSkn KSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgLTEKLSgxIHJvdykKLQotU0VM RUNUIHRlc3RfYm1zX2NvbXBhcmUoTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0t LS0tLS0tCi0gICAgICAwCi0oMSByb3cpCi0KIC0tIGJtc19hZGRfcmFuZ2UoKQogU0VMRUNUIHRl c3RfYm1zX2FkZF9yYW5nZSgnKGIpJywgLTUsIDEwKTsgLS0gZXJyb3IKIEVSUk9SOiAgbmVnYXRp dmUgYml0bWFwc2V0IG1lbWJlciBub3QgYWxsb3dlZApAQCAtODgzLDQzICs3OTUsNiBAQCBTRUxF Q1QgbGVuZ3RoKHRlc3RfYm1zX2FkZF9yYW5nZSgnKGIgMSAyKScsIDIwMCwgMjUwKSkgQVMgcmVz dWx0OwogICAgIDIxMQogKDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0 ZXN0X2Jtc19hZGRfcmFuZ2UoJyhiIDUpJywgNSwgTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAK LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19hZGRfcmFuZ2UoJyhiIDUp JywgTlVMTCwgMTApIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQotIAotKDEgcm93KQot Ci1TRUxFQ1QgdGVzdF9ibXNfYWRkX3JhbmdlKCcoYiA1KScsIE5VTEwsIE5VTEwpIEFTIHJlc3Vs dDsKLSByZXN1bHQgCi0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfYWRk X3JhbmdlKE5VTEwsIDUsIDEwKSBBUyByZXN1bHQ7Ci0gICAgICByZXN1bHQgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLQotIChiIDUgNiA3IDggOSAxMCkKLSgxIHJvdykKLQotU0VMRUNUIHRlc3Rf Ym1zX2FkZF9yYW5nZShOVUxMLCAxMCwgNSkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0t Ci0gCi0oMSByb3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19hZGRfcmFuZ2UoTlVMTCwgTlVMTCwgTlVM TCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KIC0tIGJtc19t ZW1iZXJzaGlwKCkKIFNFTEVDVCB0ZXN0X2Jtc19tZW1iZXJzaGlwKCcoYiknKSBBUyByZXN1bHQ7 CiAgcmVzdWx0IApAQCAtOTY1LDE3ICs4NDAsMTAgQEAgU0VMRUNUIHRlc3RfYm1zX2lzX2VtcHR5 KCcoYiAxKScpIEFTIHJlc3VsdDsKICBmCiAoMSByb3cpCiAKLS0tIFRlc3QgbW9kdWxlIGNoZWNr Ci1TRUxFQ1QgdGVzdF9ibXNfaXNfZW1wdHkoTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0t LS0tLS0tCi0gdAotKDEgcm93KQotCiAtLSBibXNfc2luZ2xldG9uX21lbWJlcigpCi1TRUxFQ1Qg dGVzdF9ibXNfc2luZ2xldG9uX21lbWJlcignKGIpJyk7IC0tIGVycm9yCitTRUxFQ1QgdGVzdF9i bXNfc2luZ2xldG9uX21lbWJlcignKGIpJyk7IC0tIGVycm9yIGVtcHR5IHNldAogRVJST1I6ICBi aXRtYXBzZXQgaXMgZW1wdHkKLVNFTEVDVCB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVyKCcoYiAx IDIpJyk7IC0tIGVycm9yCitTRUxFQ1QgdGVzdF9ibXNfc2luZ2xldG9uX21lbWJlcignKGIgMSAy KScpOyAtLSBlcnJvciBtdWx0aXBsZSBtZW1iZXJzCiBFUlJPUjogIGJpdG1hcHNldCBoYXMgbXVs dGlwbGUgbWVtYmVycwogU0VMRUNUIHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1iZXIoJyhiIDQyKScp IEFTIHJlc3VsdDsKICByZXN1bHQgCkBAIC05ODMsNDUgKzg1MSwyNiBAQCBTRUxFQ1QgdGVzdF9i bXNfc2luZ2xldG9uX21lbWJlcignKGIgNDIpJykgQVMgcmVzdWx0OwogICAgICA0MgogKDEgcm93 KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVjawotU0VMRUNUIHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1i ZXIoTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gICAgICAgCi0oMSByb3cp Ci0KIC0tIGJtc19nZXRfc2luZ2xldG9uX21lbWJlcigpCi1TRUxFQ1QgdGVzdF9ibXNfZ2V0X3Np bmdsZXRvbl9tZW1iZXIoJyhiKScsIDEwMDApOwotIHRlc3RfYm1zX2dldF9zaW5nbGV0b25fbWVt YmVyIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgICAg ICAgICAgICAxMDAwCi0oMSByb3cpCi0KLS0tIE5vdCBhIHNpbmdsZXRvbiwgcmV0dXJucyBpbnB1 dCBkZWZhdWx0Ci1TRUxFQ1QgdGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoJyhiIDMgNikn LCAxMDAwKSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgIDEwMDAKLSgxIHJvdykK LQotLS0gU2luZ2xldG9uZSwgcmV0dXJucyBzb2xlIG1lbWJlcgotU0VMRUNUIHRlc3RfYm1zX2dl dF9zaW5nbGV0b25fbWVtYmVyKCcoYiA0MDApJywgMTAwMCkgQVMgcmVzdWx0OworLS0gVHJ5IHdp dGggYW4gZW1wdHkgc2V0CitTRUxFQ1QgdGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoTlVM TCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0gICAgNDAwCisgICAgIC0xCiAoMSBy b3cpCiAKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX2dldF9zaW5nbGV0 b25fbWVtYmVyKCcnLCAxMDAwKSBBUyByZXN1bHQ7CistLSBOb3QgYSBzaW5nbGV0b24sIHJldHVy bnMgLTEKK1NFTEVDVCB0ZXN0X2Jtc19nZXRfc2luZ2xldG9uX21lbWJlcignKGIgMyA2KScpIEFT IHJlc3VsdDsKICByZXN1bHQgCiAtLS0tLS0tLQotICAgMTAwMAorICAgICAtMQogKDEgcm93KQog Ci1TRUxFQ1QgdGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoTlVMTCwgLTEpIEFTIHJlc3Vs dDsKKy0tIFNpbmdsZXRvbiwgcmV0dXJucyBzb2xlIG1lbWJlcgorU0VMRUNUIHRlc3RfYm1zX2dl dF9zaW5nbGV0b25fbWVtYmVyKCcoYiA0MDApJykgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0t LS0tCi0gICAgIC0xCisgICAgNDAwCiAoMSByb3cpCiAKIC0tIGJtc19uZXh0X21lbWJlcigpIGFu ZCBibXNfcHJldl9tZW1iZXIoKQpAQCAtMTA4OCw0OSArOTM3LDYgQEAgU0VMRUNUIHRlc3RfYm1z X3ByZXZfbWVtYmVyKCcoYiAwIDYzIDY0IDEyNyknLCAtMSkgQVMgcmVzdWx0OwogICAgIDEyNwog KDEgcm93KQogCi0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2Jtc19uZXh0X21l bWJlcignJywgNSkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gICAgIC0yCi0oMSBy b3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19uZXh0X21lbWJlcignKGIgNSknLCBOVUxMKSBBUyByZXN1 bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgLTIKLSgxIHJvdykKLQotU0VMRUNUIHRlc3Rf Ym1zX25leHRfbWVtYmVyKE5VTEwsIDUpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQot ICAgICAtMgotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfbmV4dF9tZW1iZXIoTlVMTCwgTlVM TCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gICAgIC0yCi0oMSByb3cpCi0KLVNF TEVDVCB0ZXN0X2Jtc19wcmV2X21lbWJlcignJywgNSkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0t LS0tLS0tCi0gICAgIC0yCi0oMSByb3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19wcmV2X21lbWJlcign KGIgNSknLCBOVUxMKSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgLTIKLSgx IHJvdykKLQotU0VMRUNUIHRlc3RfYm1zX3ByZXZfbWVtYmVyKE5VTEwsIDUpIEFTIHJlc3VsdDsK LSByZXN1bHQgCi0tLS0tLS0tLQotICAgICAtMgotKDEgcm93KQotCiAtLSBibXNfaGFzaF92YWx1 ZSgpCiBTRUxFQ1QgdGVzdF9ibXNfaGFzaF92YWx1ZSgnKGIpJykgPSAwIEFTIHJlc3VsdDsKICBy ZXN1bHQgCkBAIC0xMTc2LDI1ICs5ODIsNiBAQCBTRUxFQ1QgdGVzdF9ibXNfb3ZlcmxhcCgnKGIp JywgJyhiIDEgMyA1KScpIEFTIHJlc3VsdDsKICBmCiAoMSByb3cpCiAKLS0tIFRlc3QgbW9kdWxl IGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX292ZXJsYXAoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0 OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gZgotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfb3Zl cmxhcChOVUxMLCAnKGIgNSknKSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSBmCi0o MSByb3cpCi0KLVNFTEVDVCB0ZXN0X2Jtc19vdmVybGFwKE5VTEwsIE5VTEwpIEFTIHJlc3VsdDsK LSByZXN1bHQgCi0tLS0tLS0tLQotIGYKLSgxIHJvdykKLQogLS0gYm1zX2lzX3N1YnNldCgpCiBT RUxFQ1QgdGVzdF9ibXNfaXNfc3Vic2V0KCcoYiknLCAnKGIgMSAzIDUpJykgQVMgcmVzdWx0Owog IHJlc3VsdCAKQEAgLTEzOTgsMzAgKzExODUsMTEgQEAgU0VMRUNUIHRlc3RfYm1zX3N1YnNldF9j b21wYXJlKCcoYiAyIDY0IDEyOCknLCAnKGIgMSA2NSknKSBBUyByZXN1bHQ7CiAgICAgICAzCiAo MSByb3cpCiAKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX3N1YnNldF9j b21wYXJlKCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQotICAg ICAgMgotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9ibXNfc3Vic2V0X2NvbXBhcmUoTlVMTCwgJyhi IDUpJykgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gICAgICAxCi0oMSByb3cpCi0K LVNFTEVDVCB0ZXN0X2Jtc19zdWJzZXRfY29tcGFyZShOVUxMLCBOVUxMKSBBUyByZXN1bHQ7Ci0g cmVzdWx0IAotLS0tLS0tLS0KLSAgICAgIDAKLSgxIHJvdykKLQogLS0gYm1zX2NvcHkoKQogU0VM RUNUIHRlc3RfYm1zX2NvcHkoTlVMTCkgQVMgcmVzdWx0OwogIHJlc3VsdCAKIC0tLS0tLS0tCi0g CisgPD4KICgxIHJvdykKIAogU0VMRUNUIHRlc3RfYm1zX2NvcHkoJyhiIDEgMyA1IDcpJykgQVMg cmVzdWx0OwpAQCAtMTQzMCwxMyArMTE5OCw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19jb3B5KCcoYiAx IDMgNSA3KScpIEFTIHJlc3VsdDsKICAoYiAxIDMgNSA3KQogKDEgcm93KQogCi0tLSBUZXN0IG1v ZHVsZSBjaGVjawotU0VMRUNUIHRlc3RfYm1zX2NvcHkoTlVMTCkgQVMgcmVzdWx0OwotIHJlc3Vs dCAKLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KIC0tIGJtc19hZGRfbWVtYmVycygpCiBTRUxFQ1Qg dGVzdF9ibXNfYWRkX21lbWJlcnMoJyhiIDEgMyknLCAnKGIgNSA3KScpIEFTIHJlc3VsdDsKICAg IHJlc3VsdCAgICAKQEAgLTE0ODEsMTMgKzEyNDIsNiBAQCBTRUxFQ1QgdGVzdF9iaXRtYXBfaGFz aCgnKGIgMSAzIDUpJykgIT0gdGVzdF9iaXRtYXBfaGFzaCgnKGIgMiA0IDYpJykgQVMgcmVzdWx0 OwogIHQKICgxIHJvdykKIAotLS0gVGVzdCBtb2R1bGUgY2hlY2sKLVNFTEVDVCB0ZXN0X2JpdG1h cF9oYXNoKE5VTEwpIEFTIHJlc3VsdDsKLSByZXN1bHQgCi0tLS0tLS0tLQotICAgICAgMAotKDEg cm93KQotCiAtLSBiaXRtYXBfbWF0Y2goKQogU0VMRUNUIHRlc3RfYml0bWFwX21hdGNoKCcoYikn LCAnKGIpJykgQVMgcmVzdWx0OwogIHJlc3VsdCAKQEAgLTE1NDcsMjUgKzEzMDEsNiBAQCBTRUxF Q1QgKHRlc3RfYml0bWFwX21hdGNoKCcoYiknLCAnKGIpJykgPSAwKSA9CiAgdAogKDEgcm93KQog Ci0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2JpdG1hcF9tYXRjaCgnKGIgNSkn LCBOVUxMKSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSAgICAgIDEKLSgxIHJvdykK LQotU0VMRUNUIHRlc3RfYml0bWFwX21hdGNoKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKLSBy ZXN1bHQgCi0tLS0tLS0tLQotICAgICAgMQotKDEgcm93KQotCi1TRUxFQ1QgdGVzdF9iaXRtYXBf bWF0Y2goTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0tCi0gICAgICAw Ci0oMSByb3cpCi0KIC0tIGJtc19vdmVybGFwX2xpc3QoKQogU0VMRUNUIHRlc3RfYm1zX292ZXJs YXBfbGlzdCgnKGIgMCknLCBBUlJBWVswXSkgQVMgcmVzdWx0OwogIHJlc3VsdCAKQEAgLTE2Nzgs MjUgKzE0MTMsNiBAQCBTRUxFQ1QgdGVzdF9ibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSgnKGIgMSAy KScsICcoYiA1MCAxMDApJykgQVMgcmVzdWx0OwogIHQKICgxIHJvdykKIAotLS0gVGVzdCBtb2R1 bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9ibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSgnKGIgNSknLCBO VUxMKSBBUyByZXN1bHQ7Ci0gcmVzdWx0IAotLS0tLS0tLS0KLSB0Ci0oMSByb3cpCi0KLVNFTEVD VCB0ZXN0X2Jtc19ub25lbXB0eV9kaWZmZXJlbmNlKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsK LSByZXN1bHQgCi0tLS0tLS0tLQotIGYKLSgxIHJvdykKLQotU0VMRUNUIHRlc3RfYm1zX25vbmVt cHR5X2RpZmZlcmVuY2UoTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwotIHJlc3VsdCAKLS0tLS0tLS0t Ci0gZgotKDEgcm93KQotCiAtLSByYW5kb20gb3BlcmF0aW9ucwogU0VMRUNUIHRlc3RfcmFuZG9t X29wZXJhdGlvbnMoLTEsIDEwMDAwLCA4MTkyMCwgMCkgPiAwIEFTIHJlc3VsdDsKICByZXN1bHQg CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3NxbC90ZXN0X2Jp dG1hcHNldC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3NxbC90ZXN0X2Jp dG1hcHNldC5zcWwKaW5kZXggYzZlNmJjZTYwYTMuLjE4MzEzZGZhMzUwIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3NxbC90ZXN0X2JpdG1hcHNldC5zcWwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3Fs CkBAIC0xOCw4ICsxOCw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19hZGRfbWVtYmVyKCcoYiA1KScsIDEw KSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfYWRkX21lbWJlcignKGIgMTApJywgNSkgQVMg cmVzdWx0OwogLS0gaWRlbXBvdGVudCBjaGFuZ2UKIFNFTEVDVCB0ZXN0X2Jtc19hZGRfbWVtYmVy KCcoYiAxMCknLCAxMCkgQVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2sKLVNFTEVDVCB0 ZXN0X2Jtc19hZGRfbWVtYmVyKCcoYiknLCBOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19yZXBs YWNlX21lbWJlcnMoKQogU0VMRUNUIHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycyhOVUxMLCAnKGIg MSAyIDMpJykgQVMgcmVzdWx0OwpAQCAtMjksOSArMjcsMTAgQEAgU0VMRUNUIHRlc3RfYm1zX3Jl cGxhY2VfbWVtYmVycygnKGIgMSAyIDMpJywgJyhiIDMgNSknKSBBUyByZXN1bHQ7CiBTRUxFQ1Qg dGVzdF9ibXNfcmVwbGFjZV9tZW1iZXJzKCcoYiAxIDIpJywgJyhiIDMgNSA3KScpIEFTIHJlc3Vs dDsKIC0tIEZvcmNlIHJlcGFsbG9jKCkgd2l0aCBsYXJnZXIgc2V0CiBTRUxFQ1QgdGVzdF9ibXNf cmVwbGFjZV9tZW1iZXJzKCcoYiAxIDIgMyA0IDUpJywgJyhiIDUwMCA2MDApJykgQVMgcmVzdWx0 OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCistLSBSZXBsYWNlIHdpdGggYW4gZW1wdHkgc2V0CiBT RUxFQ1QgdGVzdF9ibXNfcmVwbGFjZV9tZW1iZXJzKCcoYiAxIDIgMyknLCBOVUxMKSBBUyByZXN1 bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfcmVwbGFjZV9tZW1iZXJzKCcoYiA1KScsIE5VTEwpIEFTIHJl c3VsdDsKKy0tIFJlcGxhY2UgZW1wdHkgc2V0IHdpdGggYW5vdGhlciBzZXQKIFNFTEVDVCB0ZXN0 X2Jtc19yZXBsYWNlX21lbWJlcnMoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRl c3RfYm1zX3JlcGxhY2VfbWVtYmVycyhOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiAKQEAgLTQ5LDkg KzQ4LDggQEAgU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIodGVzdF9ibXNfYWRkX3JhbmdlKCco YiknLCAzMCwgMzQpLCAzMikgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIo JyhiIDEgMjAwKScsIDIwMCkgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIo JyhiIDEgNTAgMTAwIDIwMCknLCAyMDApIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jtc19kZWxf bWVtYmVyKCcoYiAxIDUwIDEwMCAyMDApJywgMTAwKSBBUyByZXN1bHQ7Ci0tLSBUZXN0IG1vZHVs ZSBjaGVja3MKKy0tIEVtcHR5IHJlc3VsdGluZyBzZXQKIFNFTEVDVCB0ZXN0X2Jtc19kZWxfbWVt YmVyKCcoYiA0MiknLCA0MikgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIo JyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwogCiAtLSBibXNfZGVsX21lbWJlcnMoKQogU0VMRUNU IHRlc3RfYm1zX2RlbF9tZW1iZXJzKCcoYiknLCAnKGIgMTApJykgQVMgcmVzdWx0OwpAQCAtNjMs NyArNjEsNyBAQCBTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcnMoJyhiIDUgMTAwIDIwMCknLCAn KGIgMjAwKScpIEFTIHJlc3VsdDsKIC0tIEZvcmNlIHdvcmQgY291bnQgY2hhbmdlcwogU0VMRUNU IHRlc3RfYm1zX2RlbF9tZW1iZXJzKCcoYiAxIDIgMTAwIDIwMCAzMDApJywgJyhiIDEgMiknKSBB UyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcnMoJyhiIDEgMiAxMDAgMjAwIDMw MCknLCAnKGIgMjAwIDMwMCknKSBBUyByZXN1bHQ7Ci0tLSBUZXN0IG1vZHVsZSBjaGVja3MKKy0t IFRlc3Qgd2l0aCBlbXB0eSBzZXRzCiBTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcnMoJyhiIDUp JywgTlVMTCkgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXJzKE5VTEwsICco YiA1KScpIEFTIHJlc3VsdDsKIApAQCAtNzUsMjcgKzczLDI1IEBAIFNFTEVDVCB0ZXN0X2Jtc19q b2luKCcoYiAxIDMgNSknLCAnKGIgMSA0IDUpJykgQVMgcmVzdWx0OwogLS0gRm9yY2Ugd29yZCBj b3VudCBjaGFuZ2VzCiBTRUxFQ1QgdGVzdF9ibXNfam9pbignKGIgNSknLCAnKGIgMTAwKScpIEFT IHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jtc19qb2luKCcoYiAxIDIpJywgJyhiIDEwMCAyMDAgMzAw KScpIEFTIHJlc3VsdDsKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX2pv aW4oJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX2pvaW4oTlVMTCwg JyhiIDUpJykgQVMgcmVzdWx0OworLS0gQm90aCBzZXRzIGVtcHR5CiBTRUxFQ1QgdGVzdF9ibXNf am9pbihOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc191bmlvbigpCiAtLSBPdmVybGFw cGluZyBzZXRzCiBTRUxFQ1QgdGVzdF9ibXNfdW5pb24oJyhiIDEgMyA1KScsICcoYiAzIDUgNykn KSBBUyByZXN1bHQ7Ci0tLSBVbmlvbiB3aXRoIE5VTEwKKy0tIFVuaW9uIHdpdGggZW1wdHkgc2V0 CiBTRUxFQ1QgdGVzdF9ibXNfdW5pb24oJyhiIDEgMyA1KScsICcoYiknKSBBUyByZXN1bHQ7Ci0t LSBVbmlvbiBvZiBlbXB0eSB3aXRoIGVtcHR5CistLSBUcnkgYm90aCBzZXRzIGVtcHR5CiBTRUxF Q1QgdGVzdF9ibXNfdW5pb24oJyhiKScsICcoYiknKSBBUyByZXN1bHQ7CiAtLSBPdmVybGFwcGlu ZyByYW5nZXMKIFNFTEVDVCB0ZXN0X2Jtc191bmlvbigKICAgICAgICAgIHRlc3RfYm1zX2FkZF9y YW5nZSgnKGIpJywgMCwgMTUpLAogICAgICAgICAgdGVzdF9ibXNfYWRkX3JhbmdlKCcoYiknLCAx MCwgMjApCiAgICAgICAgKSBBUyByZXN1bHQ7Ci0tLSBVbmlvbiB3aXRoIHZhcnJ5aW5nIHdvcmQg Y291bnRzCistLSBVbmlvbiB3aXRoIHZhcnlpbmcgd29yZCBjb3VudHMKIFNFTEVDVCB0ZXN0X2Jt c191bmlvbignKGIgMSAyKScsICcoYiAxMDAgMzAwKScpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0 X2Jtc191bmlvbignKGIgMTAwIDMwMCknLCAnKGIgMSAyKScpIEFTIHJlc3VsdDsKLS0tIFRlc3Qg bW9kdWxlIGNoZWNrcworLS0gVW5pb25zIHRvIGVtcHR5IHNldHMKIFNFTEVDVCB0ZXN0X2Jtc191 bmlvbignKGIgNSknLCBOVUxMKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfdW5pb24oTlVM TCwgJyhiIDUpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX3VuaW9uKE5VTEwsIE5VTEwp IEFTIHJlc3VsdDsKQEAgLTEwNywxMSArMTAzLDEwIEBAIFNFTEVDVCB0ZXN0X2Jtc19pbnRlcnNl Y3QoJyhiIDEgMyA1KScsICcoYiAzIDUgNyknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNf aW50ZXJzZWN0KCcoYiAxIDMgNSknLCAnKGIgMiA0IDYpJykgQVMgcmVzdWx0OwogLS0gSW50ZXJz ZWN0IHdpdGggZW1wdHkKIFNFTEVDVCB0ZXN0X2Jtc19pbnRlcnNlY3QoJyhiIDEgMyA1KScsICco YiknKSBBUyByZXN1bHQ7Ci0tLSBJbnRlcnNlY3Qgd2l0aCB2YXJyeWluZyB3b3JkIGNvdW50cwor LS0gSW50ZXJzZWN0IHdpdGggdmFyeWluZyB3b3JkIGNvdW50cwogU0VMRUNUIHRlc3RfYm1zX2lu dGVyc2VjdCgnKGIgMSAzMDApJywgJyhiIDEgMiAzIDQgNSknKSBBUyByZXN1bHQ7CiBTRUxFQ1Qg dGVzdF9ibXNfaW50ZXJzZWN0KCcoYiAxIDIgMyA0IDUpJywgJyhiIDEgMzAwKScpIEFTIHJlc3Vs dDsKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX2ludGVyc2VjdCgnKGIg MSknLCAnKGIgMiknKSBBUyByZXN1bHQ7CistLSBJbnRlcnNlY3Qgd2l0aCBlbXB0eSBzZXRzCiBT RUxFQ1QgdGVzdF9ibXNfaW50ZXJzZWN0KCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKIFNFTEVD VCB0ZXN0X2Jtc19pbnRlcnNlY3QoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRl c3RfYm1zX2ludGVyc2VjdChOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CkBAIC0xMjUsOCArMTIwLDcg QEAgU0VMRUNUIHRlc3RfYm1zX2ludF9tZW1iZXJzKCcoYiAxIDMgNSknLCAnKGIgMiA0IDYpJykg QVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX2ludF9tZW1iZXJzKCcoYiAxIDMgNSknLCAnKGIp JykgQVMgcmVzdWx0OwogLS0gTXVsdGlwbGUgbWVtYmVycwogU0VMRUNUIHRlc3RfYm1zX2ludF9t ZW1iZXJzKCcoYiAwIDMxIDMyIDYzIDY0KScsICcoYiAzMSAzMiA2NCA2NSknKSBBUyByZXN1bHQ7 Ci0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2Jtc19pbnRfbWVtYmVycygnKGIg MSknLCAnKGIgMiknKSBBUyByZXN1bHQ7CistLSBJbnRlcnNlY3Qgd2l0aCBlbXB0eSBzZXRzCiBT RUxFQ1QgdGVzdF9ibXNfaW50X21lbWJlcnMoJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwogU0VM RUNUIHRlc3RfYm1zX2ludF9tZW1iZXJzKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKIFNFTEVD VCB0ZXN0X2Jtc19pbnRfbWVtYmVycyhOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CkBAIC0xNjAsOCAr MTU0LDYgQEAgU0VMRUNUIHRlc3RfYm1zX2lzX21lbWJlcignKGIgMSAzIDUpJywgMSkgQVMgcmVz dWx0OwogU0VMRUNUIHRlc3RfYm1zX2lzX21lbWJlcignKGIgMSAzIDUpJywgMikgQVMgcmVzdWx0 OwogU0VMRUNUIHRlc3RfYm1zX2lzX21lbWJlcignKGIgMSAzIDUpJywgMykgQVMgcmVzdWx0Owog U0VMRUNUIHRlc3RfYm1zX2lzX21lbWJlcignKGIpJywgMSkgQVMgcmVzdWx0OwotLS0gVGVzdCBt b2R1bGUgY2hlY2sKLVNFTEVDVCB0ZXN0X2Jtc19pc19tZW1iZXIoJyhiIDUpJywgTlVMTCkgQVMg cmVzdWx0OwogCiAtLSBibXNfbWVtYmVyX2luZGV4KCkKIFNFTEVDVCB0ZXN0X2Jtc19tZW1iZXJf aW5kZXgoTlVMTCwgMSkgQVMgcmVzdWx0OwpAQCAtMTcyLDkgKzE2NCw2IEBAIFNFTEVDVCB0ZXN0 X2Jtc19tZW1iZXJfaW5kZXgoJyhiIDEgMyA1KScsIDMpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0 X2Jtc19tZW1iZXJfaW5kZXgoJyhiIDEwMCAyMDApJywgMTAwKSBBUyByZXN1bHQ7CiBTRUxFQ1Qg dGVzdF9ibXNfbWVtYmVyX2luZGV4KCcoYiAxMDAgMjAwKScsIDIwMCkgQVMgcmVzdWx0OwogU0VM RUNUIHRlc3RfYm1zX21lbWJlcl9pbmRleCgnKGIgMSA1MCAxMDAgMjAwKScsIDIwMCkgQVMgcmVz dWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9ibXNfbWVtYmVyX2luZGV4 KCcnLCA1KSBBUyByZXN1bHQ7Ci1TRUxFQ1QgdGVzdF9ibXNfbWVtYmVyX2luZGV4KE5VTEwsIDUp IEFTIHJlc3VsdDsKIAogLS0gYm1zX251bV9tZW1iZXJzKCkKIFNFTEVDVCB0ZXN0X2Jtc19udW1f bWVtYmVycygnKGIpJykgQVMgcmVzdWx0OwpAQCAtMTgzLDYgKzE3Miw3IEBAIFNFTEVDVCB0ZXN0 X2Jtc19udW1fbWVtYmVycygnKGIgMiA0IDYgOCAxMCknKSBBUyByZXN1bHQ7CiAKIC0tIHRlc3Rf Ym1zX2VxdWFsKCkKIFNFTEVDVCB0ZXN0X2Jtc19lcXVhbCgnKGIpJywgJyhiKScpIEFTIHJlc3Vs dDsKK1NFTEVDVCB0ZXN0X2Jtc19lcXVhbChOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiBTRUxFQ1Qg dGVzdF9ibXNfZXF1YWwoJyhiKScsICcoYiAxIDMgNSknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVz dF9ibXNfZXF1YWwoJyhiIDEgMyA1KScsICcoYiknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9i bXNfZXF1YWwoJyhiIDEgMyA1KScsICcoYiAxIDMgNSknKSBBUyByZXN1bHQ7CkBAIC0xOTAsMTAg KzE4MCw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19lcXVhbCgnKGIgMSAzIDUpJywgJyhiIDIgNCA2KScp IEFTIHJlc3VsdDsKIC0tIEVxdWFsIHdpdGggZGlmZmVyZW50IHdvcmQgY291bnRzCiBTRUxFQ1Qg dGVzdF9ibXNfZXF1YWwoJyhiIDUpJywgJyhiIDEwMCknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVz dF9ibXNfZXF1YWwoJyhiIDUgMTApJywgJyhiIDEwMCAyMDAgMzAwKScpIEFTIHJlc3VsdDsKLS0t IFRlc3QgbW9kdWxlIGNoZWNrcwotU0VMRUNUIHRlc3RfYm1zX2VxdWFsKCcoYiA1KScsIE5VTEwp IEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jtc19lcXVhbChOVUxMLCAnKGIgNSknKSBBUyByZXN1 bHQ7Ci1TRUxFQ1QgdGVzdF9ibXNfZXF1YWwoTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwogCiAtLSBi bXNfY29tcGFyZSgpCiBTRUxFQ1QgdGVzdF9ibXNfY29tcGFyZSgnKGIpJywgJyhiKScpIEFTIHJl c3VsdDsKQEAgLTIwNiwxMCArMTkyLDYgQEAgU0VMRUNUIHRlc3RfYm1zX2NvbXBhcmUoCiAgICAg ICAgICB0ZXN0X2Jtc19hZGRfcmFuZ2UoJyhiKScsIDAsIDYzKSwKICAgICAgICAgIHRlc3RfYm1z X2FkZF9yYW5nZSgnKGIpJywgMCwgNjQpCiAgICAgICAgKSBBUyByZXN1bHQ7Ci0tLSBUZXN0IG1v ZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2Jtc19jb21wYXJlKCcoYiA1KScsIE5VTEwpIEFTIHJl c3VsdDsKLVNFTEVDVCB0ZXN0X2Jtc19jb21wYXJlKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsK LVNFTEVDVCB0ZXN0X2Jtc19jb21wYXJlKE5VTEwsIE5VTEwpIEFTIHJlc3VsdDsKIAogLS0gYm1z X2FkZF9yYW5nZSgpCiBTRUxFQ1QgdGVzdF9ibXNfYWRkX3JhbmdlKCcoYiknLCAtNSwgMTApOyAt LSBlcnJvcgpAQCAtMjI4LDEzICsyMTAsNiBAQCBTRUxFQ1QgbGVuZ3RoKHRlc3RfYm1zX2FkZF9y YW5nZSgnKGIpJywgMTAwMCwgMTEwMCkpIEFTIHJlc3VsdDsKIC0tIEZvcmNlIHdvcmQgY291bnQg ZXhwYW5zaW9uCiBTRUxFQ1QgdGVzdF9ibXNfYWRkX3JhbmdlKCcoYiA1KScsIDEwMCwgMTA1KSBB UyByZXN1bHQ7CiBTRUxFQ1QgbGVuZ3RoKHRlc3RfYm1zX2FkZF9yYW5nZSgnKGIgMSAyKScsIDIw MCwgMjUwKSkgQVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9i bXNfYWRkX3JhbmdlKCcoYiA1KScsIDUsIE5VTEwpIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jt c19hZGRfcmFuZ2UoJyhiIDUpJywgTlVMTCwgMTApIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jt c19hZGRfcmFuZ2UoJyhiIDUpJywgTlVMTCwgTlVMTCkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3Rf Ym1zX2FkZF9yYW5nZShOVUxMLCA1LCAxMCkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX2Fk ZF9yYW5nZShOVUxMLCAxMCwgNSkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCBOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19tZW1iZXJzaGlwKCkKIFNF TEVDVCB0ZXN0X2Jtc19tZW1iZXJzaGlwKCcoYiknKSBBUyByZXN1bHQ7CkBAIC0yNDcsMjUgKzIy MiwxOSBAQCBTRUxFQ1QgdGVzdF9ibXNfbWVtYmVyc2hpcChOVUxMKSBBUyByZXN1bHQ7CiBTRUxF Q1QgdGVzdF9ibXNfaXNfZW1wdHkoTlVMTCkgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX2lz X2VtcHR5KCcoYiknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfaXNfZW1wdHkoJyhiIDEp JykgQVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2sKLVNFTEVDVCB0ZXN0X2Jtc19pc19l bXB0eShOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19zaW5nbGV0b25fbWVtYmVyKCkKLVNFTEVD VCB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVyKCcoYiknKTsgLS0gZXJyb3IKLVNFTEVDVCB0ZXN0 X2Jtc19zaW5nbGV0b25fbWVtYmVyKCcoYiAxIDIpJyk7IC0tIGVycm9yCitTRUxFQ1QgdGVzdF9i bXNfc2luZ2xldG9uX21lbWJlcignKGIpJyk7IC0tIGVycm9yIGVtcHR5IHNldAorU0VMRUNUIHRl c3RfYm1zX3NpbmdsZXRvbl9tZW1iZXIoJyhiIDEgMiknKTsgLS0gZXJyb3IgbXVsdGlwbGUgbWVt YmVycwogU0VMRUNUIHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1iZXIoJyhiIDQyKScpIEFTIHJlc3Vs dDsKLS0tIFRlc3QgbW9kdWxlIGNoZWNrCi1TRUxFQ1QgdGVzdF9ibXNfc2luZ2xldG9uX21lbWJl cihOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19nZXRfc2luZ2xldG9uX21lbWJlcigpCi1TRUxF Q1QgdGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoJyhiKScsIDEwMDApOwotLS0gTm90IGEg c2luZ2xldG9uLCByZXR1cm5zIGlucHV0IGRlZmF1bHQKLVNFTEVDVCB0ZXN0X2Jtc19nZXRfc2lu Z2xldG9uX21lbWJlcignKGIgMyA2KScsIDEwMDApIEFTIHJlc3VsdDsKLS0tIFNpbmdsZXRvbmUs IHJldHVybnMgc29sZSBtZW1iZXIKLVNFTEVDVCB0ZXN0X2Jtc19nZXRfc2luZ2xldG9uX21lbWJl cignKGIgNDAwKScsIDEwMDApIEFTIHJlc3VsdDsKLS0tIFRlc3QgbW9kdWxlIGNoZWNrcwotU0VM RUNUIHRlc3RfYm1zX2dldF9zaW5nbGV0b25fbWVtYmVyKCcnLCAxMDAwKSBBUyByZXN1bHQ7Ci1T RUxFQ1QgdGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoTlVMTCwgLTEpIEFTIHJlc3VsdDsK Ky0tIFRyeSB3aXRoIGFuIGVtcHR5IHNldAorU0VMRUNUIHRlc3RfYm1zX2dldF9zaW5nbGV0b25f bWVtYmVyKE5VTEwpIEFTIHJlc3VsdDsKKy0tIE5vdCBhIHNpbmdsZXRvbiwgcmV0dXJucyAtMQor U0VMRUNUIHRlc3RfYm1zX2dldF9zaW5nbGV0b25fbWVtYmVyKCcoYiAzIDYpJykgQVMgcmVzdWx0 OworLS0gU2luZ2xldG9uLCByZXR1cm5zIHNvbGUgbWVtYmVyCitTRUxFQ1QgdGVzdF9ibXNfZ2V0 X3NpbmdsZXRvbl9tZW1iZXIoJyhiIDQwMCknKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19uZXh0X21l bWJlcigpIGFuZCBibXNfcHJldl9tZW1iZXIoKQogLS0gRmlyc3QgbWVtYmVyCkBAIC0yODYsMTQg KzI1NSw2IEBAIFNFTEVDVCB0ZXN0X2Jtc19wcmV2X21lbWJlcignKGIgNSAxMCAxNSAyMCknLCA1 KSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfcHJldl9tZW1iZXIoJyhiKScsIDEwMCkgQVMg cmVzdWx0OwogLS0gTmVnYXRpdmUgcHJldmJpdCBzaG91bGQgcmVzdWx0IGluIGhpZ2hlc3QgcG9z c2libGUgYml0IGluIHNldAogU0VMRUNUIHRlc3RfYm1zX3ByZXZfbWVtYmVyKCcoYiAwIDYzIDY0 IDEyNyknLCAtMSkgQVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVz dF9ibXNfbmV4dF9tZW1iZXIoJycsIDUpIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jtc19uZXh0 X21lbWJlcignKGIgNSknLCBOVUxMKSBBUyByZXN1bHQ7Ci1TRUxFQ1QgdGVzdF9ibXNfbmV4dF9t ZW1iZXIoTlVMTCwgNSkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX25leHRfbWVtYmVyKE5V TEwsIE5VTEwpIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jtc19wcmV2X21lbWJlcignJywgNSkg QVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYm1zX3ByZXZfbWVtYmVyKCcoYiA1KScsIE5VTEwpIEFT IHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2Jtc19wcmV2X21lbWJlcihOVUxMLCA1KSBBUyByZXN1bHQ7 CiAKIC0tIGJtc19oYXNoX3ZhbHVlKCkKIFNFTEVDVCB0ZXN0X2Jtc19oYXNoX3ZhbHVlKCcoYikn KSA9IDAgQVMgcmVzdWx0OwpAQCAtMzA2LDEwICsyNjcsNiBAQCBTRUxFQ1QgdGVzdF9ibXNfaGFz aF92YWx1ZShOVUxMKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfb3ZlcmxhcCgnKGIgMSAz IDUpJywgJyhiIDMgNSA3KScpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jtc19vdmVybGFwKCco YiAxIDMgNSknLCAnKGIgMiA0IDYpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX292ZXJs YXAoJyhiKScsICcoYiAxIDMgNSknKSBBUyByZXN1bHQ7Ci0tLSBUZXN0IG1vZHVsZSBjaGVja3MK LVNFTEVDVCB0ZXN0X2Jtc19vdmVybGFwKCcoYiA1KScsIE5VTEwpIEFTIHJlc3VsdDsKLVNFTEVD VCB0ZXN0X2Jtc19vdmVybGFwKE5VTEwsICcoYiA1KScpIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0 X2Jtc19vdmVybGFwKE5VTEwsIE5VTEwpIEFTIHJlc3VsdDsKIAogLS0gYm1zX2lzX3N1YnNldCgp CiBTRUxFQ1QgdGVzdF9ibXNfaXNfc3Vic2V0KCcoYiknLCAnKGIgMSAzIDUpJykgQVMgcmVzdWx0 OwpAQCAtMzUwLDE2ICszMDcsMTAgQEAgU0VMRUNUIHRlc3RfYm1zX3N1YnNldF9jb21wYXJlKCco YiAxIDIpJywgJyhiIDEgMiA2NCknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVzdF9ibXNfc3Vic2V0 X2NvbXBhcmUoJyhiIDY0IDIwMCknLCAnKGIgMSAyMDEpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRl c3RfYm1zX3N1YnNldF9jb21wYXJlKCcoYiAxIDY0IDY1KScsICcoYiAxIDIgNjQpJykgQVMgcmVz dWx0OwogU0VMRUNUIHRlc3RfYm1zX3N1YnNldF9jb21wYXJlKCcoYiAyIDY0IDEyOCknLCAnKGIg MSA2NSknKSBBUyByZXN1bHQ7Ci0tLSBUZXN0IG1vZHVsZSBjaGVja3MKLVNFTEVDVCB0ZXN0X2Jt c19zdWJzZXRfY29tcGFyZSgnKGIgNSknLCBOVUxMKSBBUyByZXN1bHQ7Ci1TRUxFQ1QgdGVzdF9i bXNfc3Vic2V0X2NvbXBhcmUoTlVMTCwgJyhiIDUpJykgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3Rf Ym1zX3N1YnNldF9jb21wYXJlKE5VTEwsIE5VTEwpIEFTIHJlc3VsdDsKIAogLS0gYm1zX2NvcHko KQogU0VMRUNUIHRlc3RfYm1zX2NvcHkoTlVMTCkgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1z X2NvcHkoJyhiIDEgMyA1IDcpJykgQVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2sKLVNF TEVDVCB0ZXN0X2Jtc19jb3B5KE5VTEwpIEFTIHJlc3VsdDsKIAogLS0gYm1zX2FkZF9tZW1iZXJz KCkKIFNFTEVDVCB0ZXN0X2Jtc19hZGRfbWVtYmVycygnKGIgMSAzKScsICcoYiA1IDcpJykgQVMg cmVzdWx0OwpAQCAtMzcxLDggKzMyMiw2IEBAIFNFTEVDVCB0ZXN0X2JpdG1hcF9oYXNoKCcoYikn KSA9IDAgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYml0bWFwX2hhc2goJyhiIDEgMyA1KScpID0g dGVzdF9iaXRtYXBfaGFzaCgnKGIgMSAzIDUpJykgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYml0 bWFwX2hhc2goJyhiIDEgMyA1KScpID0gdGVzdF9ibXNfaGFzaF92YWx1ZSgnKGIgMSAzIDUpJykg QVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYml0bWFwX2hhc2goJyhiIDEgMyA1KScpICE9IHRlc3Rf Yml0bWFwX2hhc2goJyhiIDIgNCA2KScpIEFTIHJlc3VsdDsKLS0tIFRlc3QgbW9kdWxlIGNoZWNr Ci1TRUxFQ1QgdGVzdF9iaXRtYXBfaGFzaChOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJpdG1hcF9t YXRjaCgpCiBTRUxFQ1QgdGVzdF9iaXRtYXBfbWF0Y2goJyhiKScsICcoYiknKSBBUyByZXN1bHQ7 CkBAIC0zODgsMTAgKzMzNyw2IEBAIFNFTEVDVCAodGVzdF9iaXRtYXBfbWF0Y2goJyhiIDEgMyA1 KScsICcoYiAyIDQgNiknKSA9IDApID0KICAgICAgICAgdGVzdF9ibXNfZXF1YWwoJyhiIDEgMyA1 KScsICcoYiAyIDQgNiknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgKHRlc3RfYml0bWFwX21hdGNoKCco YiknLCAnKGIpJykgPSAwKSA9CiAgICAgICAgIHRlc3RfYm1zX2VxdWFsKCcoYiknLCAnKGIpJykg QVMgcmVzdWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9iaXRtYXBfbWF0 Y2goJyhiIDUpJywgTlVMTCkgQVMgcmVzdWx0OwotU0VMRUNUIHRlc3RfYml0bWFwX21hdGNoKE5V TEwsICcoYiA1KScpIEFTIHJlc3VsdDsKLVNFTEVDVCB0ZXN0X2JpdG1hcF9tYXRjaChOVUxMLCBO VUxMKSBBUyByZXN1bHQ7CiAKIC0tIGJtc19vdmVybGFwX2xpc3QoKQogU0VMRUNUIHRlc3RfYm1z X292ZXJsYXBfbGlzdCgnKGIgMCknLCBBUlJBWVswXSkgQVMgcmVzdWx0OwpAQCAtNDE5LDEwICsz NjQsNiBAQCBTRUxFQ1QgdGVzdF9ibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSgnKGIgMSAzIDUpJywg JyhiIDEgMyA1KScpIEFTIHJlc3VsdDsKIFNFTEVDVCB0ZXN0X2Jtc19ub25lbXB0eV9kaWZmZXJl bmNlKCcoYiA1KScsICcoYiAxMDApJykgQVMgcmVzdWx0OwogU0VMRUNUIHRlc3RfYm1zX25vbmVt cHR5X2RpZmZlcmVuY2UoJyhiIDEwMCknLCAnKGIgNSknKSBBUyByZXN1bHQ7CiBTRUxFQ1QgdGVz dF9ibXNfbm9uZW1wdHlfZGlmZmVyZW5jZSgnKGIgMSAyKScsICcoYiA1MCAxMDApJykgQVMgcmVz dWx0OwotLS0gVGVzdCBtb2R1bGUgY2hlY2tzCi1TRUxFQ1QgdGVzdF9ibXNfbm9uZW1wdHlfZGlm ZmVyZW5jZSgnKGIgNSknLCBOVUxMKSBBUyByZXN1bHQ7Ci1TRUxFQ1QgdGVzdF9ibXNfbm9uZW1w dHlfZGlmZmVyZW5jZShOVUxMLCAnKGIgNSknKSBBUyByZXN1bHQ7Ci1TRUxFQ1QgdGVzdF9ibXNf bm9uZW1wdHlfZGlmZmVyZW5jZShOVUxMLCBOVUxMKSBBUyByZXN1bHQ7CiAKIC0tIHJhbmRvbSBv cGVyYXRpb25zCiBTRUxFQ1QgdGVzdF9yYW5kb21fb3BlcmF0aW9ucygtMSwgMTAwMDAsIDgxOTIw LCAwKSA+IDAgQVMgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Jp dG1hcHNldC90ZXN0X2JpdG1hcHNldC0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9i aXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQtLTEuMC5zcWwKaW5kZXggYjk1YzRkMGRkYTUuLjIyN2Vj YjVhYTNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3Rf Yml0bWFwc2V0LS0xLjAuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv dGVzdF9iaXRtYXBzZXQtLTEuMC5zcWwKQEAgLTY4LDcgKzY4LDcgQEAgQ1JFQVRFIEZVTkNUSU9O IHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1iZXIodGV4dCkKIFJFVFVSTlMgaW50ZWdlciBTVFJJQ1QK IEFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CiAKLUNSRUFURSBGVU5DVElPTiB0ZXN0 X2Jtc19nZXRfc2luZ2xldG9uX21lbWJlcih0ZXh0LCBpbnRlZ2VyKQorQ1JFQVRFIEZVTkNUSU9O IHRlc3RfYm1zX2dldF9zaW5nbGV0b25fbWVtYmVyKHRleHQpCiBSRVRVUk5TIGludGVnZXIKIEFT ICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYwppbmRleCAyZTgyMTMyMDgzNi4uMDZmMTVh NWQwNjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9i aXRtYXBzZXQuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0 bWFwc2V0LmMKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIK LSNpbmNsdWRlICJ2YXJhdHQuaCIKIAogUEdfTU9EVUxFX01BR0lDOwogCkBAIC04OCwxMDEgKzg3 LDkzIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9yYW5kb21fb3BlcmF0aW9ucyk7CiAjZGVm aW5lIEJJVE1BUFNFVF9UT19URVhUKGJtcykgY3N0cmluZ190b190ZXh0KG5vZGVUb1N0cmluZyhi bXMpKQogI2RlZmluZSBURVhUX1RPX0JJVE1BUFNFVChzdHIpICgoQml0bWFwc2V0ICopIHN0cmlu Z1RvTm9kZSh0ZXh0X3RvX2NzdHJpbmcoc3RyKSkpCiAKKy8qIEhlbHBlciBtYWNybyB0byBmZXRj aCBUZXh0IHBhcmFtZXRlcnMgYXMgQml0bWFwc2V0cy4gU1FMLU5VTEwgbWVhbnMgZW1wdHkgc2V0 ICovCisjZGVmaW5lIFBHX0FSR19HRVRCSVRNQVBTRVQobikgXAorCShQR19BUkdJU05VTEwobikg PyBOVUxMIDogVEVYVF9UT19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAobikpKQorCisvKgor ICogSGVscGVyIG1hY3JvIHRvIGhhbmRsZSBjb252ZXJ0aW5nIHNldHMgYmFjayB0byB0ZXh0LCBy ZXR1cm5pbmcgdGhlCisgKiByZXN1bHRpbmcgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2V0 LgorICovCisjZGVmaW5lIFBHX1JFVFVSTl9CSVRNQVBTRVRfQVNfVEVYVChibXMpIFwKKwlQR19S RVRVUk5fVEVYVF9QKEJJVE1BUFNFVF9UT19URVhUKGJtcykpCisKIC8qCiAgKiBJbmRpdmlkdWFs IHRlc3QgZnVuY3Rpb25zIGZvciBlYWNoIGJpdG1hcHNldCBBUEkgZnVuY3Rpb24KKyAqCisgKiBQ cmltYXJpbHksIHdlIGFpbSB0byBrZWVwIHRoZXNlIGFzIGNsb3NlIHRvIHNpbXBsZSB3cmFwcGVy IGZ1bmN0aW9ucyBhcworICogcG9zc2libGUgaW4gb3JkZXIgdG8gcHVibGlzaCB0aGUgZnVuY3Rp b25zIG9mIGJpdG1hcHNldC5jIHRvIHRoZSBTUUwgbGF5ZXIKKyAqIHdpdGggYXMgbGl0dGxlIGlu dGVyZmVyZW5jZSBhcyBwb3NzaWJsZS4gIFdlIG9wdCB0byByZXR1cm4gU1FMIE5VTEwgaW4KKyAq IGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBnaXZlbiB0byB0aGUgU1FMIGZ1bmN0aW9uIGlzbid0IHZh bGlkIHRvIHBhc3MgdG8gdGhlCisgKiB1bmRlcmx5aW5nIGJpdG1hcHNldC5jIGZ1bmN0aW9uLiAg Rm9yIGV4YW1wbGUsIHdlIGNhbm5vdCBkbyBtdWNoIHVzZWZ1bAorICogdGVzdGluZyBpZiBzb21l b25lIGNhbGxzIHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKE5VTEwpIHNpbmNlCisgKiBibXNfbWFr ZV9zaW5nbGV0b24oKSBleHBlY3RzIGFuIGludGVnZXIgYXJndW1lbnQuCisgKgorICogRm9yIGZ1 bmN0aW9uIGFyZ3VtZW50cyB3aGljaCBhcmUgdG8gYmUgY29udmVydGVkIHRvIEJpdG1hcHNldHMs IHdlIGFjY2VwdAorICogU1FMIE5VTEwgYXMgYSB2YWxpZCBhcmd1bWVudCB0byBtZWFuIGFuIGVt cHR5IHNldC4gIE9wdGlvbmFsbHksIGNhbGxlcnMgbWF5CisgKiBwYXNzICcoYiknLgogICovCiAK IERhdHVtCiB0ZXN0X2Jtc19hZGRfbWVtYmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CisJQml0bWFw c2V0ICAqYm1zOwogCWludAkJCW1lbWJlcjsKLQlCaXRtYXBzZXQgICpibXMgPSBOVUxMOwotCXRl eHQJICAgKnJlc3VsdDsKIAogCWlmIChQR19BUkdJU05VTEwoMSkpCi0JCVBHX1JFVFVSTl9OVUxM KCk7Ci0KLQlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKLQkJYm1zID0gVEVYVF9UT19CSVRNQVBTRVQo UEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCQlQR19SRVRVUk5fTlVMTCgpOwkJLyogaW52YWxpZCBp bnB1dCAqLwogCisJYm1zID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKIAltZW1iZXIgPSBQR19H RVRBUkdfSU5UMzIoMSk7Ci0JYm1zID0gYm1zX2FkZF9tZW1iZXIoYm1zLCBtZW1iZXIpOwotCXJl c3VsdCA9IEJJVE1BUFNFVF9UT19URVhUKGJtcyk7CiAKLQlpZiAoYm1zKQotCQlibXNfZnJlZShi bXMpOworCWJtcyA9IGJtc19hZGRfbWVtYmVyKGJtcywgbWVtYmVyKTsKIAotCVBHX1JFVFVSTl9U RVhUX1AocmVzdWx0KTsKKwlQR19SRVRVUk5fQklUTUFQU0VUX0FTX1RFWFQoYm1zKTsKIH0KIAog RGF0dW0KIHRlc3RfYm1zX2FkZF9tZW1iZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFw c2V0ICAqYm1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7Ci0JdGV4dAkgICAqcmVzdWx0 OwotCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtczEgPSBURVhUX1RPX0JJVE1BUFNFVChQ R19HRVRBUkdfVEVYVF9QUCgwKSk7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRN QVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAK LQlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dF VEFSR19URVhUX1BQKDEpKTsKLQotCS8qIElNUE9SVEFOVDogYm1zX2FkZF9tZW1iZXJzIG1vZGlm aWVzL2ZyZWVzIHRoZSBmaXJzdCBhcmd1bWVudCAqLworCS8qIGxlZnQgaW5wdXQgaXMgcmVjeWNs ZWQgKi8KIAlibXMxID0gYm1zX2FkZF9tZW1iZXJzKGJtczEsIGJtczIpOwogCi0JaWYgKGJtczIp Ci0JCWJtc19mcmVlKGJtczIpOwotCi0JcmVzdWx0ID0gQklUTUFQU0VUX1RPX1RFWFQoYm1zMSk7 Ci0JYm1zX2ZyZWUoYm1zMSk7Ci0KLQlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7CisJUEdfUkVU VVJOX0JJVE1BUFNFVF9BU19URVhUKGJtczEpOwogfQogCiBEYXR1bQogdGVzdF9ibXNfZGVsX21l bWJlcihQR19GVU5DVElPTl9BUkdTKQogewotCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJQml0 bWFwc2V0ICAqYm1zOwogCWludDMyCQltZW1iZXI7Ci0JdGV4dAkgICAqcmVzdWx0OwogCiAJaWYg KFBHX0FSR0lTTlVMTCgxKSkKLQkJUEdfUkVUVVJOX05VTEwoKTsKLQotCWlmICghUEdfQVJHSVNO VUxMKDApKQotCQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7 CisJCVBHX1JFVFVSTl9OVUxMKCk7CQkvKiBpbnZhbGlkIGlucHV0ICovCiAKKwlibXMgPSBQR19B UkdfR0VUQklUTUFQU0VUKDApOwogCW1lbWJlciA9IFBHX0dFVEFSR19JTlQzMigxKTsKLQlibXMg PSBibXNfZGVsX21lbWJlcihibXMsIG1lbWJlcik7CiAKLQlpZiAoYm1zX2lzX2VtcHR5KGJtcykp Ci0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1bHQgPSBCSVRNQVBTRVRfVE9fVEVYVChibXMp OwotCWJtc19mcmVlKGJtcyk7CisJYm1zID0gYm1zX2RlbF9tZW1iZXIoYm1zLCBtZW1iZXIpOwog Ci0JUEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworCVBHX1JFVFVSTl9CSVRNQVBTRVRfQVNfVEVY VChibXMpOwogfQogCiBEYXR1bQogdGVzdF9ibXNfaXNfbWVtYmVyKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0JQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRtYXBzZXQgICpibXM7CiAJaW50MzIJ CW1lbWJlcjsKIAlib29sCQlyZXN1bHQ7CiAKIAlpZiAoUEdfQVJHSVNOVUxMKDEpKQotCQlQR19S RVRVUk5fQk9PTChmYWxzZSk7Ci0KLQlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKLQkJYm1zID0gVEVY VF9UT19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCQlQR19SRVRVUk5fTlVMTCgp OwkJLyogaW52YWxpZCBpbnB1dCAqLwogCisJYm1zID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsK IAltZW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7Ci0JcmVzdWx0ID0gYm1zX2lzX21lbWJlciht ZW1iZXIsIGJtcyk7CiAKLQlpZiAoYm1zKQotCQlibXNfZnJlZShibXMpOworCXJlc3VsdCA9IGJt c19pc19tZW1iZXIobWVtYmVyLCBibXMpOwogCiAJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKIH0K QEAgLTE5MCwxNTAgKzE4MSw4OSBAQCB0ZXN0X2Jtc19pc19tZW1iZXIoUEdfRlVOQ1RJT05fQVJH UykKIERhdHVtCiB0ZXN0X2Jtc19udW1fbWVtYmVycyhQR19GVU5DVElPTl9BUkdTKQogewotCUJp dG1hcHNldCAgKmJtcyA9IE5VTEw7Ci0JaW50CQkJcmVzdWx0ID0gMDsKLQotCWlmICghUEdfQVJH SVNOVUxMKDApKQotCQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgw KSk7CisJQml0bWFwc2V0ICAqYm1zID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKKwlpbnQJCQly ZXN1bHQ7CiAKIAlyZXN1bHQgPSBibXNfbnVtX21lbWJlcnMoYm1zKTsKIAotCWlmIChibXMpCi0J CWJtc19mcmVlKGJtcyk7Ci0KIAlQR19SRVRVUk5fSU5UMzIocmVzdWx0KTsKIH0KIAogRGF0dW0K IHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JaW50MzIJCW1l bWJlcjsKIAlCaXRtYXBzZXQgICpibXM7Ci0JdGV4dAkgICAqcmVzdWx0OworCWludDMyCQltZW1i ZXI7CiAKIAlpZiAoUEdfQVJHSVNOVUxMKDApKQotCQlQR19SRVRVUk5fTlVMTCgpOworCQlQR19S RVRVUk5fTlVMTCgpOwkJLyogaW52YWxpZCBpbnB1dCAqLwogCiAJbWVtYmVyID0gUEdfR0VUQVJH X0lOVDMyKDApOwogCWJtcyA9IGJtc19tYWtlX3NpbmdsZXRvbihtZW1iZXIpOwogCi0JcmVzdWx0 ID0gQklUTUFQU0VUX1RPX1RFWFQoYm1zKTsKLQlibXNfZnJlZShibXMpOwotCi0JUEdfUkVUVVJO X1RFWFRfUChyZXN1bHQpOworCVBHX1JFVFVSTl9CSVRNQVBTRVRfQVNfVEVYVChibXMpOwogfQog CiBEYXR1bQogdGVzdF9ibXNfY29weShQR19GVU5DVElPTl9BUkdTKQogewotCXRleHQJICAgKmJt c19kYXRhOwotCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJQml0bWFwc2V0ICAqYm1zID0gUEdf QVJHX0dFVEJJVE1BUFNFVCgwKTsKIAlCaXRtYXBzZXQgICpjb3B5X2JtczsKLQl0ZXh0CSAgICpy ZXN1bHQ7Ci0KLQlpZiAoUEdfQVJHSVNOVUxMKDApKQotCQlQR19SRVRVUk5fTlVMTCgpOwogCi0J Ym1zX2RhdGEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKLQlibXMgPSBURVhUX1RPX0JJVE1BUFNF VChibXNfZGF0YSk7CiAJY29weV9ibXMgPSBibXNfY29weShibXMpOwotCXJlc3VsdCA9IEJJVE1B UFNFVF9UT19URVhUKGNvcHlfYm1zKTsKIAotCWlmIChibXMpCi0JCWJtc19mcmVlKGJtcyk7Ci0J aWYgKGNvcHlfYm1zKQotCQlibXNfZnJlZShjb3B5X2Jtcyk7Ci0KLQlQR19SRVRVUk5fVEVYVF9Q KHJlc3VsdCk7CisJUEdfUkVUVVJOX0JJVE1BUFNFVF9BU19URVhUKGNvcHlfYm1zKTsKIH0KIAog RGF0dW0KIHRlc3RfYm1zX2VxdWFsKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAq Ym1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBH X0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRN QVBTRVQoMSk7CiAJYm9vbAkJcmVzdWx0OwogCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJt czEgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0KLQlpZiAoIVBH X0FSR0lTTlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhU X1BQKDEpKTsKLQogCXJlc3VsdCA9IGJtc19lcXVhbChibXMxLCBibXMyKTsKIAotCWlmIChibXMx KQotCQlibXNfZnJlZShibXMxKTsKLQlpZiAoYm1zMikKLQkJYm1zX2ZyZWUoYm1zMik7Ci0KIAlQ R19SRVRVUk5fQk9PTChyZXN1bHQpOwogfQogCiBEYXR1bQogdGVzdF9ibXNfdW5pb24oUEdfRlVO Q1RJT05fQVJHUykKIHsKLQlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKLQkJCSAgICpibXMyID0g TlVMTDsKKwlCaXRtYXBzZXQgICpibXMxID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKKwlCaXRt YXBzZXQgICpibXMyID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgxKTsKIAlCaXRtYXBzZXQgICpyZXN1 bHRfYm1zOwotCXRleHQJICAgKnJlc3VsdDsKLQotCWlmICghUEdfQVJHSVNOVUxMKDApKQotCQli bXMxID0gVEVYVF9UT19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOwotCi0JaWYgKCFQ R19BUkdJU05VTEwoMSkpCi0JCWJtczIgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVY VF9QUCgxKSk7CiAKIAlyZXN1bHRfYm1zID0gYm1zX3VuaW9uKGJtczEsIGJtczIpOwogCi0JaWYg KGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMyKTsK LQotCWlmIChyZXN1bHRfYm1zID09IE5VTEwpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1 bHQgPSBCSVRNQVBTRVRfVE9fVEVYVChyZXN1bHRfYm1zKTsKLQlibXNfZnJlZShyZXN1bHRfYm1z KTsKLQotCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKKwlQR19SRVRVUk5fQklUTUFQU0VUX0FT X1RFWFQocmVzdWx0X2Jtcyk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19tZW1iZXJzaGlwKFBHX0ZV TkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRtYXBzZXQgICpi bXMgPSBQR19BUkdfR0VUQklUTUFQU0VUKDApOwogCUJNU19NZW1iZXJzaGlwIHJlc3VsdDsKIAot CWlmIChQR19BUkdJU05VTEwoMCkpCi0JCVBHX1JFVFVSTl9JTlQzMihCTVNfRU1QVFlfU0VUKTsK LQotCWJtcyA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsKIAlyZXN1 bHQgPSBibXNfbWVtYmVyc2hpcChibXMpOwogCi0JaWYgKGJtcykKLQkJYm1zX2ZyZWUoYm1zKTsK LQogCVBHX1JFVFVSTl9JTlQzMigoaW50MzIpIHJlc3VsdCk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jt c19uZXh0X21lbWJlcihQR19GVU5DVElPTl9BUkdTKQogewotCUJpdG1hcHNldCAgKmJtcyA9IE5V TEw7CisJQml0bWFwc2V0ICAqYm1zOwogCWludDMyCQlwcmV2bWVtYmVyOwogCWludAkJCXJlc3Vs dDsKIAotCWlmIChQR19BUkdJU05VTEwoMCkgfHwgUEdfQVJHSVNOVUxMKDEpKQotCQlQR19SRVRV Uk5fSU5UMzIoLTIpOworCWlmIChQR19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7 CQkvKiBpbnZhbGlkIGlucHV0ICovCiAKLQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRB UkdfVEVYVF9QUCgwKSk7CisJYm1zID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKIAlwcmV2bWVt YmVyID0gUEdfR0VUQVJHX0lOVDMyKDEpOwotCXJlc3VsdCA9IGJtc19uZXh0X21lbWJlcihibXMs IHByZXZtZW1iZXIpOwogCi0JaWYgKGJtcykKLQkJYm1zX2ZyZWUoYm1zKTsKKwlyZXN1bHQgPSBi bXNfbmV4dF9tZW1iZXIoYm1zLCBwcmV2bWVtYmVyKTsKIAogCVBHX1JFVFVSTl9JTlQzMihyZXN1 bHQpOwogfQpAQCAtMzQxLDIxMiArMjcxLDExNSBAQCB0ZXN0X2Jtc19uZXh0X21lbWJlcihQR19G VU5DVElPTl9BUkdTKQogRGF0dW0KIHRlc3RfYm1zX2ludGVyc2VjdChQR19GVU5DVElPTl9BUkdT KQogewotCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAotCQkJICAgKmJtczIgPSBOVUxMOworCUJp dG1hcHNldCAgKmJtczEgPSBQR19BUkdfR0VUQklUTUFQU0VUKDApOworCUJpdG1hcHNldCAgKmJt czIgPSBQR19BUkdfR0VUQklUTUFQU0VUKDEpOwogCUJpdG1hcHNldCAgKnJlc3VsdF9ibXM7Ci0J dGV4dAkgICAqcmVzdWx0OwotCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtczEgPSBURVhU X1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0KLQlpZiAoIVBHX0FSR0lTTlVM TCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDEpKTsK IAogCXJlc3VsdF9ibXMgPSBibXNfaW50ZXJzZWN0KGJtczEsIGJtczIpOwogCi0JaWYgKGJtczEp Ci0JCWJtc19mcmVlKGJtczEpOwotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMyKTsKLQotCWlm IChyZXN1bHRfYm1zID09IE5VTEwpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1bHQgPSBC SVRNQVBTRVRfVE9fVEVYVChyZXN1bHRfYm1zKTsKLQlibXNfZnJlZShyZXN1bHRfYm1zKTsKLQot CVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKKwlQR19SRVRVUk5fQklUTUFQU0VUX0FTX1RFWFQo cmVzdWx0X2Jtcyk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19kaWZmZXJlbmNlKFBHX0ZVTkNUSU9O X0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7 CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0 ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAJQml0bWFwc2V0ICAqcmVzdWx0X2Jt czsKLQl0ZXh0CSAgICpyZXN1bHQ7Ci0KLQlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKLQkJYm1zMSA9 IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsKLQotCWlmICghUEdfQVJH SVNOVUxMKDEpKQotCQlibXMyID0gVEVYVF9UT19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAo MSkpOwogCiAJcmVzdWx0X2JtcyA9IGJtc19kaWZmZXJlbmNlKGJtczEsIGJtczIpOwogCi0JaWYg KGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMyKTsK LQotCWlmIChyZXN1bHRfYm1zID09IE5VTEwpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1 bHQgPSBCSVRNQVBTRVRfVE9fVEVYVChyZXN1bHRfYm1zKTsKLQlibXNfZnJlZShyZXN1bHRfYm1z KTsKLQotCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKKwlQR19SRVRVUk5fQklUTUFQU0VUX0FT X1RFWFQocmVzdWx0X2Jtcyk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19jb21wYXJlKFBHX0ZVTkNU SU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5V TEw7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFw c2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAJaW50CQkJcmVzdWx0OwogCi0J aWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtczEgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRB UkdfVEVYVF9QUCgwKSk7Ci0KLQlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRf VE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDEpKTsKLQogCXJlc3VsdCA9IGJtc19jb21w YXJlKGJtczEsIGJtczIpOwogCi0JaWYgKGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChi bXMyKQotCQlibXNfZnJlZShibXMyKTsKLQogCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOwogfQog CiBEYXR1bQogdGVzdF9ibXNfaXNfZW1wdHkoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlCaXRtYXBz ZXQgICpibXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtcyA9IFBHX0FSR19HRVRCSVRNQVBTRVQo MCk7CiAJYm9vbAkJcmVzdWx0OwogCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtcyA9IFRF WFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsKLQogCXJlc3VsdCA9IGJtc19p c19lbXB0eShibXMpOwogCi0JaWYgKGJtcykKLQkJYm1zX2ZyZWUoYm1zKTsKLQogCVBHX1JFVFVS Tl9CT09MKHJlc3VsdCk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19pc19zdWJzZXQoUEdfRlVOQ1RJ T05fQVJHUykKIHsKLQlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKLQkJCSAgICpibXMyID0gTlVM TDsKKwlCaXRtYXBzZXQgICpibXMxID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKKwlCaXRtYXBz ZXQgICpibXMyID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgxKTsKIAlib29sCQlyZXN1bHQ7CiAKLQlp ZiAoIVBHX0FSR0lTTlVMTCgwKSkKLQkJYm1zMSA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFS R19URVhUX1BQKDApKTsKLQotCWlmICghUEdfQVJHSVNOVUxMKDEpKQotCQlibXMyID0gVEVYVF9U T19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOwotCiAJcmVzdWx0ID0gYm1zX2lzX3N1 YnNldChibXMxLCBibXMyKTsKIAotCWlmIChibXMxKQotCQlibXNfZnJlZShibXMxKTsKLQlpZiAo Ym1zMikKLQkJYm1zX2ZyZWUoYm1zMik7Ci0KIAlQR19SRVRVUk5fQk9PTChyZXN1bHQpOwogfQog CiBEYXR1bQogdGVzdF9ibXNfc3Vic2V0X2NvbXBhcmUoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlC aXRtYXBzZXQgICpibXMxID0gTlVMTCwKLQkJCSAgICpibXMyID0gTlVMTDsKKwlCaXRtYXBzZXQg ICpibXMxID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKKwlCaXRtYXBzZXQgICpibXMyID0gUEdf QVJHX0dFVEJJVE1BUFNFVCgxKTsKIAlCTVNfQ29tcGFyaXNvbiByZXN1bHQ7CiAKLQlpZiAoIVBH X0FSR0lTTlVMTCgwKSkKLQkJYm1zMSA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhU X1BQKDApKTsKLQotCWlmICghUEdfQVJHSVNOVUxMKDEpKQotCQlibXMyID0gVEVYVF9UT19CSVRN QVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOwotCiAJcmVzdWx0ID0gYm1zX3N1YnNldF9jb21w YXJlKGJtczEsIGJtczIpOwogCi0JaWYgKGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChi bXMyKQotCQlibXNfZnJlZShibXMyKTsKLQogCVBHX1JFVFVSTl9JTlQzMigoaW50MzIpIHJlc3Vs dCk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVyKFBHX0ZVTkNUSU9OX0FS R1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRtYXBzZXQgICpibXMgPSBQR19B UkdfR0VUQklUTUFQU0VUKDApOwogCWludAkJCXJlc3VsdDsKIAotCWlmICghUEdfQVJHSVNOVUxM KDApKQotCQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0K IAlyZXN1bHQgPSBibXNfc2luZ2xldG9uX21lbWJlcihibXMpOwogCi0JaWYgKGJtcykKLQkJYm1z X2ZyZWUoYm1zKTsKLQogCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOwogfQogCiBEYXR1bQogdGVz dF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlCaXRtYXBz ZXQgICpibXMgPSBOVUxMOwotCWludDMyCQlkZWZhdWx0X21lbWJlciA9IFBHX0dFVEFSR19JTlQz MigxKTsKLQlib29sCQlzdWNjZXNzOwotCWludAkJCW1lbWJlciA9IC0xOwotCi0JaWYgKFBHX0FS R0lTTlVMTCgwKSkKLQkJUEdfUkVUVVJOX0lOVDMyKGRlZmF1bHRfbWVtYmVyKTsKLQotCWJtcyA9 IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlCaXRtYXBzZXQgICpi bXMgPSBQR19BUkdfR0VUQklUTUFQU0VUKDApOworCWludAkJCW1lbWJlcjsKIAogCS8qCi0JICog Ym1zX2dldF9zaW5nbGV0b25fbWVtYmVyIHJldHVybnMgYm9vbCBhbmQgc3RvcmVzIHJlc3VsdCBp biBtZW1iZXIKLQkgKiBwb2ludGVyCisJICogS2VlcCB0aGlzIHNpbXBsZS4gIFJldHVybiAtMSB3 aGVuIHdlIGRldGVjdCB0aGUgc2V0IGlzbid0IGEgc2luZ2xldG9uCisJICogc2V0LCBvdGhlcndp c2UgcmV0dXJuIHRoZSBzaW5nbGV0b24gbWVtYmVyLgogCSAqLwotCXN1Y2Nlc3MgPSBibXNfZ2V0 X3NpbmdsZXRvbl9tZW1iZXIoYm1zLCAmbWVtYmVyKTsKLQlibXNfZnJlZShibXMpOwotCi0JaWYg KHN1Y2Nlc3MpCi0JCVBHX1JFVFVSTl9JTlQzMihtZW1iZXIpOworCWlmICghYm1zX2dldF9zaW5n bGV0b25fbWVtYmVyKGJtcywgJm1lbWJlcikpCisJCW1lbWJlciA9IC0xOwogCi0JUEdfUkVUVVJO X0lOVDMyKGRlZmF1bHRfbWVtYmVyKTsKKwlQR19SRVRVUk5fSU5UMzIobWVtYmVyKTsKIH0KIAog RGF0dW0KIHRlc3RfYm1zX3ByZXZfbWVtYmVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JdGV4dAkg ICAqYm1zX2RhdGE7Ci0JQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRtYXBzZXQgICpibXM7 CiAJaW50MzIJCXByZXZtZW1iZXI7CiAJaW50CQkJcmVzdWx0OwogCi0JaWYgKFBHX0FSR0lTTlVM TCgwKSkKLQkJUEdfUkVUVVJOX0lOVDMyKC0yKTsKKwlpZiAoUEdfQVJHSVNOVUxMKDEpKQorCQlQ R19SRVRVUk5fTlVMTCgpOwkJLyogaW52YWxpZCBpbnB1dCAqLwogCi0JYm1zX2RhdGEgPSBQR19H RVRBUkdfVEVYVF9QUCgwKTsKKwlibXMgPSBQR19BUkdfR0VUQklUTUFQU0VUKDApOwogCXByZXZt ZW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7CiAKLQlpZiAoVkFSU0laRV9BTllfRVhIRFIoYm1z X2RhdGEpID09IDApCi0JCVBHX1JFVFVSTl9JTlQzMigtMik7Ci0KLQlibXMgPSBURVhUX1RPX0JJ VE1BUFNFVChibXNfZGF0YSk7CiAJcmVzdWx0ID0gYm1zX3ByZXZfbWVtYmVyKGJtcywgcHJldm1l bWJlcik7Ci0JYm1zX2ZyZWUoYm1zKTsKIAogCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOwogfQpA QCAtNTU0LDc1ICszODcsNTcgQEAgdGVzdF9ibXNfcHJldl9tZW1iZXIoUEdfRlVOQ1RJT05fQVJH UykKIERhdHVtCiB0ZXN0X2Jtc19vdmVybGFwKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFw c2V0ICAqYm1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7CisJQml0bWFwc2V0ICAqYm1z MSA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19H RVRCSVRNQVBTRVQoMSk7CiAJYm9vbAkJcmVzdWx0OwogCi0JaWYgKCFQR19BUkdJU05VTEwoMCkp Ci0JCWJtczEgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0KLQlp ZiAoIVBHX0FSR0lTTlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFS R19URVhUX1BQKDEpKTsKLQogCXJlc3VsdCA9IGJtc19vdmVybGFwKGJtczEsIGJtczIpOwogCi0J aWYgKGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMy KTsKLQogCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19vdmVy bGFwX2xpc3QoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlCaXRtYXBzZXQgICpibXMgPSBOVUxMOwor CUJpdG1hcHNldCAgKmJtczsKIAlBcnJheVR5cGUgICphcnJheTsKIAlMaXN0CSAgICppbnRfbGlz dCA9IE5JTDsKIAlib29sCQlyZXN1bHQ7Ci0JRGF0dW0JICAgKmVsZW1fZGF0dW1zOwotCWJvb2wJ ICAgKmVsZW1fbnVsbHM7CisJRGF0dW0JICAgKmVsZW1fZGF0dW1zID0gTlVMTDsKKwlib29sCSAg ICplbGVtX251bGxzID0gTlVMTDsKIAlpbnQJCQllbGVtX2NvdW50OwogCWludAkJCWk7CiAKLQlp ZiAoUEdfQVJHSVNOVUxMKDApKQotCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7Ci0KLQlibXMgPSBU RVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJYm1zID0gUEdfQVJHX0dF VEJJVE1BUFNFVCgwKTsKIAotCWlmIChQR19BUkdJU05VTEwoMSkpCisJaWYgKCFQR19BUkdJU05V TEwoMSkpCiAJewotCQlpZiAoYm1zKQotCQkJYm1zX2ZyZWUoYm1zKTsKLQkJUEdfUkVUVVJOX0JP T0woZmFsc2UpOwotCX0KKwkJYXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoMSk7CiAKLQlh cnJheSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgxKTsKKwkJZGVjb25zdHJ1Y3RfYXJyYXkoYXJy YXksCisJCQkJCQkgIElOVDRPSUQsIHNpemVvZihpbnQzMiksIHRydWUsICdpJywKKwkJCQkJCSAg JmVsZW1fZGF0dW1zLCAmZWxlbV9udWxscywgJmVsZW1fY291bnQpOwogCi0JZGVjb25zdHJ1Y3Rf YXJyYXkoYXJyYXksCi0JCQkJCSAgSU5UNE9JRCwgc2l6ZW9mKGludDMyKSwgdHJ1ZSwgJ2knLAot CQkJCQkgICZlbGVtX2RhdHVtcywgJmVsZW1fbnVsbHMsICZlbGVtX2NvdW50KTsKLQotCWZvciAo aSA9IDA7IGkgPCBlbGVtX2NvdW50OyBpKyspCi0JewotCQlpZiAoIWVsZW1fbnVsbHNbaV0pCisJ CWZvciAoaSA9IDA7IGkgPCBlbGVtX2NvdW50OyBpKyspCiAJCXsKLQkJCWludDMyCQltZW1iZXIg PSBEYXR1bUdldEludDMyKGVsZW1fZGF0dW1zW2ldKTsKKwkJCWlmICghZWxlbV9udWxsc1tpXSkK KwkJCXsKKwkJCQlpbnQzMgkJbWVtYmVyID0gRGF0dW1HZXRJbnQzMihlbGVtX2RhdHVtc1tpXSk7 CiAKLQkJCWludF9saXN0ID0gbGFwcGVuZF9pbnQoaW50X2xpc3QsIG1lbWJlcik7CisJCQkJaW50 X2xpc3QgPSBsYXBwZW5kX2ludChpbnRfbGlzdCwgbWVtYmVyKTsKKwkJCX0KIAkJfQogCX0KIAog CXJlc3VsdCA9IGJtc19vdmVybGFwX2xpc3QoYm1zLCBpbnRfbGlzdCk7CiAKLQlpZiAoYm1zKQot CQlibXNfZnJlZShibXMpOwotCiAJbGlzdF9mcmVlKGludF9saXN0KTsKIAotCXBmcmVlKGVsZW1f ZGF0dW1zKTsKLQlwZnJlZShlbGVtX251bGxzKTsKKwlpZiAoZWxlbV9kYXR1bXMpCisJCXBmcmVl KGVsZW1fZGF0dW1zKTsKKworCWlmIChlbGVtX251bGxzKQorCQlwZnJlZShlbGVtX251bGxzKTsK IAogCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CiB9CkBAIC02MzAsNDcgKzQ0NSwyOSBAQCB0ZXN0 X2Jtc19vdmVybGFwX2xpc3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiB0ZXN0X2Jtc19ub25l bXB0eV9kaWZmZXJlbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zMSA9 IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19H RVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQo MSk7CiAJYm9vbAkJcmVzdWx0OwogCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtczEgPSBU RVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0KLQlpZiAoIVBHX0FSR0lT TlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDEp KTsKLQogCXJlc3VsdCA9IGJtc19ub25lbXB0eV9kaWZmZXJlbmNlKGJtczEsIGJtczIpOwogCi0J aWYgKGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMy KTsKLQogCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19tZW1i ZXJfaW5kZXgoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQl0ZXh0CSAgICpibXNfZGF0YTsKLQlCaXRt YXBzZXQgICpibXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtczsKIAlpbnQzMgkJbWVtYmVyOwog CWludAkJCXJlc3VsdDsKIAotCWlmIChQR19BUkdJU05VTEwoMCkpCi0JCVBHX1JFVFVSTl9JTlQz MigtMSk7CisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsJCS8qIGlu dmFsaWQgaW5wdXQgKi8KIAotCWJtc19kYXRhID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7CisJYm1z ID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKIAltZW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7 CiAKLQlpZiAoVkFSU0laRV9BTllfRVhIRFIoYm1zX2RhdGEpID09IDApCi0JCVBHX1JFVFVSTl9J TlQzMigtMSk7Ci0KLQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChibXNfZGF0YSk7Ci0KIAlyZXN1 bHQgPSBibXNfbWVtYmVyX2luZGV4KGJtcywgbWVtYmVyKTsKLQlibXNfZnJlZShibXMpOwogCiAJ UEdfUkVUVVJOX0lOVDMyKHJlc3VsdCk7CiB9CkBAIC02NzgsMTkxICs0NzUsOTIgQEAgdGVzdF9i bXNfbWVtYmVyX2luZGV4KFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQogdGVzdF9ibXNfYWRkX3Jh bmdlKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRt YXBzZXQgICpibXM7CiAJaW50MzIJCWxvd2VyLAogCQkJCXVwcGVyOwotCXRleHQJICAgKnJlc3Vs dDsKIAogCWlmIChQR19BUkdJU05VTEwoMSkgfHwgUEdfQVJHSVNOVUxMKDIpKQotCQlQR19SRVRV Uk5fTlVMTCgpOwotCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtcyA9IFRFWFRfVE9fQklU TUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwkJUEdfUkVUVVJOX05VTEwoKTsJCS8qIGlu dmFsaWQgaW5wdXQgKi8KIAorCWJtcyA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CiAJbG93ZXIg PSBQR19HRVRBUkdfSU5UMzIoMSk7CiAJdXBwZXIgPSBQR19HRVRBUkdfSU5UMzIoMik7CiAKLQkv KiBDaGVjayBmb3IgaW52YWxpZCByYW5nZSAqLwotCWlmICh1cHBlciA8IGxvd2VyKQotCXsKLQkJ aWYgKGJtcykKLQkJCWJtc19mcmVlKGJtcyk7Ci0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0JfQotCiAJ Ym1zID0gYm1zX2FkZF9yYW5nZShibXMsIGxvd2VyLCB1cHBlcik7CiAKLQlyZXN1bHQgPSBCSVRN QVBTRVRfVE9fVEVYVChibXMpOwotCWlmIChibXMpCi0JCWJtc19mcmVlKGJtcyk7Ci0KLQlQR19S RVRVUk5fVEVYVF9QKHJlc3VsdCk7CisJUEdfUkVUVVJOX0JJVE1BUFNFVF9BU19URVhUKGJtcyk7 CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19pbnRfbWVtYmVycyhQR19GVU5DVElPTl9BUkdTKQogewot CUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAotCQkJICAgKmJtczIgPSBOVUxMOwotCXRleHQJICAg KnJlc3VsdDsKLQotCWlmICghUEdfQVJHSVNOVUxMKDApKQotCQlibXMxID0gVEVYVF9UT19CSVRN QVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOwotCi0JaWYgKCFQR19BUkdJU05VTEwoMSkpCi0J CWJtczIgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgxKSk7CisJQml0bWFw c2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9 IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAKKwkvKiBsZWZ0IGlucHV0IGdldHMgcmVjeWNsZWQg Ki8KIAlibXMxID0gYm1zX2ludF9tZW1iZXJzKGJtczEsIGJtczIpOwogCi0JaWYgKGJtczIpCi0J CWJtc19mcmVlKGJtczIpOwotCi0JaWYgKGJtczEgPT0gTlVMTCkKLQkJUEdfUkVUVVJOX05VTEwo KTsKLQotCXJlc3VsdCA9IEJJVE1BUFNFVF9UT19URVhUKGJtczEpOwotCi0JaWYgKGJtczEpCi0J CWJtc19mcmVlKGJtczEpOwotCi0JUEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworCVBHX1JFVFVS Tl9CSVRNQVBTRVRfQVNfVEVYVChibXMxKTsKIH0KIAogRGF0dW0KIHRlc3RfYm1zX2RlbF9tZW1i ZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCi0JCQkg ICAqYm1zMiA9IE5VTEw7Ci0JQml0bWFwc2V0ICAqcmVzdWx0X2JtczsKLQl0ZXh0CSAgICpyZXN1 bHQ7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFw c2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAKLQlpZiAoIVBHX0FSR0lTTlVM TCgwKSkKLQkJYm1zMSA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDApKTsK KwkvKiBsZWZ0IGlucHV0IGdldHMgcmVjeWNsZWQgKi8KKwlibXMxID0gYm1zX2RlbF9tZW1iZXJz KGJtczEsIGJtczIpOwogCi0JaWYgKCFQR19BUkdJU05VTEwoMSkpCi0JCWJtczIgPSBURVhUX1RP X0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgxKSk7Ci0KLQkvKiBJTVBPUlRBTlQ6IGJtc19k ZWxfbWVtYmVycyBtb2RpZmllcy9mcmVlcyB0aGUgZmlyc3QgYXJndW1lbnQgKi8KLQlyZXN1bHRf Ym1zID0gYm1zX2RlbF9tZW1iZXJzKGJtczEsIGJtczIpOwotCi0JLyogYm1zMSBpcyBub3cgaW52 YWxpZCwgZG8gbm90IGZyZWUgaXQgKi8KLQotCWlmIChibXMyKQotCQlibXNfZnJlZShibXMyKTsK LQotCWlmIChyZXN1bHRfYm1zID09IE5VTEwpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1 bHQgPSBCSVRNQVBTRVRfVE9fVEVYVChyZXN1bHRfYm1zKTsKLQlibXNfZnJlZShyZXN1bHRfYm1z KTsKLQotCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKKwlQR19SRVRVUk5fQklUTUFQU0VUX0FT X1RFWFQoYm1zMSk7CiB9CiAKIERhdHVtCiB0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoUEdfRlVO Q1RJT05fQVJHUykKIHsKLQlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKLQkJCSAgICpibXMyID0g TlVMTDsKLQlCaXRtYXBzZXQgICpyZXN1bHRfYm1zOwotCXRleHQJICAgKnJlc3VsdDsKLQotCWlm ICghUEdfQVJHSVNOVUxMKDApKQotCQlibXMxID0gVEVYVF9UT19CSVRNQVBTRVQoUEdfR0VUQVJH X1RFWFRfUFAoMCkpOwotCi0JaWYgKCFQR19BUkdJU05VTEwoMSkpCi0JCWJtczIgPSBURVhUX1RP X0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgxKSk7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBH X0FSR19HRVRCSVRNQVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRN QVBTRVQoMSk7CiAKLQkvKiBJTVBPUlRBTlQ6IGJtc19yZXBsYWNlX21lbWJlcnMgbW9kaWZpZXMv ZnJlZXMgdGhlIGZpcnN0IGFyZ3VtZW50ICovCi0JcmVzdWx0X2JtcyA9IGJtc19yZXBsYWNlX21l bWJlcnMoYm1zMSwgYm1zMik7CisJLyogbGVmdCBpbnB1dCBnZXRzIHJlY3ljbGVkICovCisJYm1z MSA9IGJtc19yZXBsYWNlX21lbWJlcnMoYm1zMSwgYm1zMik7CiAKLQkvKiBibXMxIGlzIG5vdyBp bnZhbGlkLCBkbyBub3QgZnJlZSBpdCAqLwotCi0JaWYgKGJtczIpCi0JCWJtc19mcmVlKGJtczIp OwotCi0JaWYgKHJlc3VsdF9ibXMgPT0gTlVMTCkKLQkJUEdfUkVUVVJOX05VTEwoKTsKLQotCXJl c3VsdCA9IEJJVE1BUFNFVF9UT19URVhUKHJlc3VsdF9ibXMpOwotCWJtc19mcmVlKHJlc3VsdF9i bXMpOwotCi0JUEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworCVBHX1JFVFVSTl9CSVRNQVBTRVRf QVNfVEVYVChibXMxKTsKIH0KIAogRGF0dW0KIHRlc3RfYm1zX2pvaW4oUEdfRlVOQ1RJT05fQVJH UykKIHsKLQlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKLQkJCSAgICpibXMyID0gTlVMTDsKKwlC aXRtYXBzZXQgICpibXMxID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKKwlCaXRtYXBzZXQgICpi bXMyID0gUEdfQVJHX0dFVEJJVE1BUFNFVCgxKTsKIAlCaXRtYXBzZXQgICpyZXN1bHRfYm1zOwot CXRleHQJICAgKnJlc3VsdDsKLQotCWlmICghUEdfQVJHSVNOVUxMKDApKQotCQlibXMxID0gVEVY VF9UT19CSVRNQVBTRVQoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOwogCi0JaWYgKCFQR19BUkdJU05V TEwoMSkpCi0JCWJtczIgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgxKSk7 Ci0KLQkvKiBJTVBPUlRBTlQ6IGJtc19qb2luIG1heSByZWN5Y2xlIGVpdGhlciBpbnB1dCBhcmd1 bWVudHMgKi8KKwkvKiBlaXRoZXIgaW5wdXQgY2FuIGJlIHJlY3ljbGVkICovCiAJcmVzdWx0X2Jt cyA9IGJtc19qb2luKGJtczEsIGJtczIpOwogCi0JLyogYm1zMSBhbmQgYm1zMiBtYXkgaGF2ZSBi ZWVuIHJlY3ljbGVkISBEbyBub3QgZnJlZSBhbnkgb2YgdGhlbS4gKi8KLQotCWlmIChyZXN1bHRf Ym1zID09IE5VTEwpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQlyZXN1bHQgPSBCSVRNQVBTRVRf VE9fVEVYVChyZXN1bHRfYm1zKTsKLQlibXNfZnJlZShyZXN1bHRfYm1zKTsKKwkvKiBtZW1vcnkg Y2xlYW51cCBzZWVtcyBtb3JlIHRyaWNreSB0aGFuIGl0J3Mgd29ydGggaGVyZSAqLwogCi0JUEdf UkVUVVJOX1RFWFRfUChyZXN1bHQpOworCVBHX1JFVFVSTl9CSVRNQVBTRVRfQVNfVEVYVChyZXN1 bHRfYm1zKTsKIH0KIAogRGF0dW0KIHRlc3RfYm1zX2hhc2hfdmFsdWUoUEdfRlVOQ1RJT05fQVJH UykKIHsKLQlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtcyA9IFBHX0FS R19HRVRCSVRNQVBTRVQoMCk7CiAJdWludDMyCQloYXNoX3Jlc3VsdDsKIAotCWlmICghUEdfQVJH SVNOVUxMKDApKQotCQlibXMgPSBURVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgw KSk7Ci0KIAloYXNoX3Jlc3VsdCA9IGJtc19oYXNoX3ZhbHVlKGJtcyk7CiAKLQlpZiAoYm1zKQot CQlibXNfZnJlZShibXMpOwotCiAJUEdfUkVUVVJOX0lOVDMyKGhhc2hfcmVzdWx0KTsKIH0KIAog RGF0dW0KIHRlc3RfYml0bWFwX2hhc2goUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlCaXRtYXBzZXQg ICpibXMgPSBOVUxMOwotCUJpdG1hcHNldCAgKmJtc19wdHI7CisJQml0bWFwc2V0ICAqYm1zID0g UEdfQVJHX0dFVEJJVE1BUFNFVCgwKTsKIAl1aW50MzIJCWhhc2hfcmVzdWx0OwogCi0JaWYgKCFQ R19BUkdJU05VTEwoMCkpCi0JCWJtcyA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhU X1BQKDApKTsKLQotCWJtc19wdHIgPSBibXM7Ci0KIAkvKiBDYWxsIGJpdG1hcF9oYXNoICovCi0J aGFzaF9yZXN1bHQgPSBiaXRtYXBfaGFzaCgmYm1zX3B0ciwgc2l6ZW9mKEJpdG1hcHNldCAqKSk7 Ci0KLQkvKiBDbGVhbiB1cCAqLwotCWlmICghUEdfQVJHSVNOVUxMKDApICYmIGJtc19wdHIpCi0J CWJtc19mcmVlKGJtc19wdHIpOworCWhhc2hfcmVzdWx0ID0gYml0bWFwX2hhc2goJmJtcywgc2l6 ZW9mKEJpdG1hcHNldCAqKSk7CiAKIAlQR19SRVRVUk5fSU5UMzIoaGFzaF9yZXN1bHQpOwogfQpA QCAtODcwLDMwICs1NjgsMTIgQEAgdGVzdF9iaXRtYXBfaGFzaChQR19GVU5DVElPTl9BUkdTKQog RGF0dW0KIHRlc3RfYml0bWFwX21hdGNoKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JQml0bWFwc2V0 ICAqYm1zMSA9IE5VTEwsCi0JCQkgICAqYm1zMiA9IE5VTEw7Ci0JQml0bWFwc2V0ICAqYm1zX3B0 cjEsCi0JCQkgICAqYm1zX3B0cjI7CisJQml0bWFwc2V0ICAqYm1zMSA9IFBHX0FSR19HRVRCSVRN QVBTRVQoMCk7CisJQml0bWFwc2V0ICAqYm1zMiA9IFBHX0FSR19HRVRCSVRNQVBTRVQoMSk7CiAJ aW50CQkJbWF0Y2hfcmVzdWx0OwogCi0JaWYgKCFQR19BUkdJU05VTEwoMCkpCi0JCWJtczEgPSBU RVhUX1RPX0JJVE1BUFNFVChQR19HRVRBUkdfVEVYVF9QUCgwKSk7Ci0KLQlpZiAoIVBHX0FSR0lT TlVMTCgxKSkKLQkJYm1zMiA9IFRFWFRfVE9fQklUTUFQU0VUKFBHX0dFVEFSR19URVhUX1BQKDEp KTsKLQotCS8qIFNldCB1cCBwb2ludGVycyB0byB0aGUgQml0bWFwc2V0cyAqLwotCWJtc19wdHIx ID0gYm1zMTsKLQlibXNfcHRyMiA9IGJtczI7Ci0KIAkvKiBDYWxsIGJpdG1hcF9tYXRjaCB3aXRo IGFkZHJlc3NlcyBvZiB0aGUgQml0bWFwc2V0IHBvaW50ZXJzICovCi0JbWF0Y2hfcmVzdWx0ID0g Yml0bWFwX21hdGNoKCZibXNfcHRyMSwgJmJtc19wdHIyLCBzaXplb2YoQml0bWFwc2V0ICopKTsK LQotCS8qIENsZWFuIHVwICovCi0JaWYgKGJtczEpCi0JCWJtc19mcmVlKGJtczEpOwotCWlmIChi bXMyKQotCQlibXNfZnJlZShibXMyKTsKKwltYXRjaF9yZXN1bHQgPSBiaXRtYXBfbWF0Y2goJmJt czEsICZibXMyLCBzaXplb2YoQml0bWFwc2V0ICopKTsKIAogCVBHX1JFVFVSTl9JTlQzMihtYXRj aF9yZXN1bHQpOwogfQpAQCAtMTAzMSw4ICs3MTEsNyBAQCB0ZXN0X3JhbmRvbV9vcGVyYXRpb25z KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXRvdGFsX29wcysrOwogCX0KIAotCWlmIChibXMpCi0JCWJt c19mcmVlKGJtcyk7CisJYm1zX2ZyZWUoYm1zKTsKIAogCVBHX1JFVFVSTl9JTlQzMih0b3RhbF9v cHMpOwogfQo= --000000000000fa3a2a064011c414--