From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D370D606A31A for ; Fri, 30 Oct 2026 14:19:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key, unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=nHEu/u3f; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=wJNKSFcl; dkim=fail reason="signature verification failed" (1024-bit key) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=c2TkwkUF; dkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=o6trbJ08 Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 870633E9891 for ; Fri, 30 Oct 2026 15:19:00 +0100 (CET) Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [IPv6:2001:4b78:1:20::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 693043C0224 for ; Fri, 30 Oct 2026 15:18:45 +0100 (CET) Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 2D3EB1A01089 for ; Fri, 30 Oct 2026 15:18:43 +0100 (CET) Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 4BECC1F449; Fri, 30 Oct 2026 14:18:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1793369917; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S9pbFTcY3ViMbWJjVjOy/izDX46DTqJuqjd3zjUVWZ4=; b=nHEu/u3ftYQIfPozMOeKBElqWIJMfl2ppAB1eLp+hPh/4dCeWGzNvzpXhYf0ihB1o4UGuM VKpStx2e6pS3QZtmuhQy3D1Eb/yfYrmghVd5e/bhveJ/WvAS9VyuU9Ui5yqHtjILuIH3ET kvmDXy2N0wUZK5qSkowi1xxZUTt5sAE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1793369917; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S9pbFTcY3ViMbWJjVjOy/izDX46DTqJuqjd3zjUVWZ4=; b=wJNKSFclu/j0DWMhHDSGWfrQmxXcUqLrsmKuS2S6gzWXbxlZELrqwRJTUgiW4klwdi2xfv tbFdREXpk3/iCBCw== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1793369916; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S9pbFTcY3ViMbWJjVjOy/izDX46DTqJuqjd3zjUVWZ4=; b=c2TkwkUFhYaESptQnocU73GGnuwci3YGjQ96QMV0e5KjZ9oJzZwh/046513PHgcc4tKq8T mKVEFeB1x4nkZqqYqiA/jrugDHIwKE2Ewcb1vk8u6wb3MQmF+uagh7HNDOxUzWVaY8wiom 3AfpLJHDIp84+jrgJ5MJwIWmsIMHnfc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1793369916; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S9pbFTcY3ViMbWJjVjOy/izDX46DTqJuqjd3zjUVWZ4=; b=o6trbJ08XlfL88JJTGo98VfIOM6w9xl/N484NeQLsF3F8guzuhfo4yV/W26xhgVUumScHC o9VPoKXr74wEcQBQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0BD3213419; Fri, 30 Oct 2026 14:18:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id PCGGNjun5GpADgAAD6G6ig (envelope-from ); Fri, 30 Oct 2026 14:18:36 +0000 Date: Fri, 30 Oct 2026 15:18:54 +0100 From: Cyril Hrubis To: Samir Mulani Message-ID: References: <20260928051740.591819-1-samir@linux.ibm.com> <20260928051740.591819-2-samir@linux.ibm.com> X-Archived-By: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20260928051740.591819-2-samir@linux.ibm.com> X-Spamd-Result: default: False [-13.30 / 50.00]; SUSE_INTERNAL_BYPASS(-9.00)[]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; URIBL_BLOCKED(0.00)[imap1.dmz-prg2.suse.org:helo,suse.cz:email,cgroup_regression_test.sh:url,linux.it:url,memcg_failcnt.sh:url]; DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; ARC_NA(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_ALL(0.00)[]; MISSING_XM_UA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; RCVD_VIA_SMTP_AUTH(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[cgroup_regression_test.sh:url, linux.it:url, memcg_regression_test.sh:url, imap1.dmz-prg2.suse.org:helo, memcg_failcnt.sh:url, suse.cz:email] X-Spam-Score: -13.30 X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 X-Virus-Scanned: clamav-milter 1.0.9 at in-3.smtp.seeweb.it X-Virus-Status: Clean Subject: Re: [LTP] [PATCH 1/2] cgroup: Add cgroup_burst01 test X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ltp@lists.linux.it Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ltp" SGkhCj4gZGlmZiAtLWdpdCBhL3J1bnRlc3QvY29udHJvbGxlcnMgYi9ydW50ZXN0L2NvbnRyb2xs ZXJzCj4gaW5kZXggOTNjNTJjNDM5Li5hYTkzZWE1YWYgMTAwNjQ0Cj4gLS0tIGEvcnVudGVzdC9j b250cm9sbGVycwo+ICsrKyBiL3J1bnRlc3QvY29udHJvbGxlcnMKPiBAQCAtMyw2ICszLDcgQEAg Y2dyb3VwX2NvcmUwMQljZ3JvdXBfY29yZTAxCj4gIGNncm91cF9jb3JlMDIJY2dyb3VwX2NvcmUw Mgo+ICBjZ3JvdXBfY29yZTAzCWNncm91cF9jb3JlMDMKPiAgY2dyb3VwCQljZ3JvdXBfcmVncmVz c2lvbl90ZXN0LnNoCj4gK2NwdV9tYXhfYnVyc3QwMSAgY3B1X21heF9idXJzdDAxCj4gIG1lbWNn X3JlZ3Jlc3Npb24JbWVtY2dfcmVncmVzc2lvbl90ZXN0LnNoCj4gIG1lbWNnX3Rlc3RfMwltZW1j Z190ZXN0XzMKPiAgbWVtY2dfZmFpbGNudCBtZW1jZ19mYWlsY250LnNoCj4gZGlmZiAtLWdpdCBh L3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY2dyb3VwLy5naXRpZ25vcmUgYi90ZXN0Y2Fz ZXMva2VybmVsL2NvbnRyb2xsZXJzL2Nncm91cC8uZ2l0aWdub3JlCj4gaW5kZXggOWYxZDFhZGE5 Li4yNTA2Mzg4ZmQgMTAwNjQ0Cj4gLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9j Z3JvdXAvLmdpdGlnbm9yZQo+ICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY2dy b3VwLy5naXRpZ25vcmUKPiBAQCAtMywzICszLDQgQEAKPiAgL2Nncm91cF9jb3JlMDEKPiAgL2Nn cm91cF9jb3JlMDIKPiAgL2Nncm91cF9jb3JlMDMKPiArL2NwdV9tYXhfYnVyc3QwMQo+IGRpZmYg LS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2Nncm91cC9jcHVfbWF4X2J1cnN0 MDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY2dyb3VwL2NwdV9tYXhfYnVyc3Qw MS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAuLmFmYjhiZWZhNgo+ IC0tLSAvZGV2L251bGwKPiArKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2Nncm91 cC9jcHVfbWF4X2J1cnN0MDEuYwo+IEBAIC0wLDAgKzEsNjUwIEBACj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykg MjAyNiBTYW1pciBNdWxhbmksIElCTSBDb3Jwb3JhdGlvbi4KPiArICovCj4gKwo+ICsvKlwKPiAr ICogRnVuY3Rpb25hbCB0ZXN0cyBmb3IgdGhlIGNncm91cHYyIGNwdS5tYXguYnVyc3QgaW50ZXJm YWNlLgo+ICsgKgo+ICsgKiBjcHUubWF4LmJ1cnN0IGNvbnRyb2xzIHRoZSBidXJzdCBidWRnZXQg Zm9yIENGUyBiYW5kd2lkdGggdGhyb3R0bGluZy4KPiArICogV2hlbiBhIGNncm91cCB1c2VzIGxl c3MgdGhhbiBpdHMgcXVvdGEgaW4gYSBwZXJpb2QsIHRoZSBrZXJuZWwgcmV0YWlucwo+ICsgKiB1 cCB0byAocXVvdGEgKyBidXJzdCkgbWljcm9zZWNvbmRzIGluIHRoZSBydW50aW1lIHBvb2wuICBB IGxhdGVyIGJ1c3kKPiArICogcGVyaW9kIG1heSBkcmF3IGZyb20gdGhhdCByZXRhaW5lZCBjcmVk aXQsIHRlbXBvcmFyaWx5IHJ1bm5pbmcgYmV5b25kCj4gKyAqIHRoZSBub21pbmFsIHF1b3RhIHJh dGUuCj4gKyAqCj4gKyAqIEtlcm5lbCBhY2NvdW50aW5nIChrZXJuZWwvc2NoZWQvZmFpci5jIF9f cmVmaWxsX2Nmc19iYW5kd2lkdGhfcnVudGltZSk6Cj4gKyAqCj4gKyAqICAgQXQgZXZlcnkgcGVy aW9kIGJvdW5kYXJ5Ogo+ICsgKiAgICAgcnVudGltZSAgICArPSBxdW90YQo+ICsgKiAgICAgc3Vy cGx1cyAgICAgPSBydW50aW1lX3NuYXAgLSBydW50aW1lCj4gKyAqICAgICBpZiAoc3VycGx1cyA+ IDApOgo+ICsgKiAgICAgICAgIGJ1cnN0X3RpbWUgKz0gc3VycGx1cwo+ICsgKiAgICAgICAgIG5y X2J1cnN0KysKPiArICogICAgIHJ1bnRpbWUgICAgID0gbWluKHJ1bnRpbWUsIHF1b3RhICsgYnVy c3QpCj4gKyAqICAgICBydW50aW1lX3NuYXAgPSBydW50aW1lCj4gKyAqCj4gKyAqIFRlc3Qgc2Nl bmFyaW9zOgo+ICsgKiAgIFRDIDEgLSBEZWZhdWx0IHZhbHVlIGFuZCB3cml0ZS16ZXJvOiBjcHUu bWF4LmJ1cnN0IGRlZmF1bHRzIHRvIDA7Cj4gKyAqICAgICAgICAgIHNldHRpbmcgYnVyc3QgdG8g bm9uLXplcm8gdGhlbiBiYWNrIHRvIDAgaXMgYWNjZXB0ZWQuCj4gKyAqICAgVEMgMiAtIFdyaXRl L3JlYWRiYWNrLCBidXJzdCA9PSBxdW90YSBib3VuZGFyeSBhY2NlcHRlZCwgYW5kCj4gKyAqICAg ICAgICAgIGJ1cnN0ID4gcXVvdGEgcmVqZWN0ZWQgd2l0aCBFSU5WQUwuCj4gKyAqICAgVEMgMyAt IEZ1bmN0aW9uYWwgYnVyc3QgYWNjb3VudGluZzogYSB3b3JrZXIgdW5kZXJydW5zIHRvIGZpbGwg dGhlCj4gKyAqICAgICAgICAgIHBvb2wsIHRoZW4gb3ZlcmxvYWRzIHRvIHRyaWdnZXIgYnVyc3Qg YWNjb3VudGluZzsgbnJfYnVyc3RzCj4gKyAqICAgICAgICAgIGFuZCBidXJzdF91c2VjIGluIGNw dS5zdGF0IG11c3QgYm90aCBpbmNyZWFzZS4KPiArICogICBUQyA0IC0gQnVyc3QgcHJlc2VydmVk IGFmdGVyIHF1b3RhIGNsZWFyZWQgKGNwdS5tYXggPSAibWF4IikuCj4gKyAqICAgVEMgNSAtIEJ1 cnN0IHByZXNlcnZlZCBhZnRlciBwZXJpb2QgY2hhbmdlLgo+ICsgKgo+ICsgKiBSZXF1aXJlczog Q09ORklHX0NGU19CQU5EV0lEVEg9eSwgY2dyb3VwIHYyIGNwdSBjb250cm9sbGVyLgo+ICsgKi8K PiArCj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsjaW5j bHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3RyaW5n Lmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNs dWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8dGltZS5oPgo+ICsjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgo+ICsKPiArI2luY2x1ZGUgInRzdF90ZXN0Lmgi Cj4gKyNpbmNsdWRlICJ0c3Rfc2FmZV9jbG9ja3MuaCIKPiArI2luY2x1ZGUgInRzdF9zYWZlX2Zp bGVfYXQuaCIKPiArCj4gKyNkZWZpbmUgUEVSSU9EX1VTCTEwMDAwMFVMTAo+ICsjZGVmaW5lIFFV T1RBX1VTCSAyMDAwMFVMTAo+ICsjZGVmaW5lIEJVUlNUX1VTCSAxMDAwMFVMTAo+ICsKPiArc3Rh dGljIHN0cnVjdCB0c3RfY2dfZ3JvdXAgKmNnX2NoaWxkOwo+ICsKPiArc3RhdGljIGludCBjZ19k aXJmZChjb25zdCBzdHJ1Y3QgdHN0X2NnX2dyb3VwICpjZykKPiArewo+ICsJaW50IGZkID0gdHN0 X2NnX2dyb3VwX3VuaWZpZWRfZGlyX2ZkKGNnKTsKPiArCj4gKwlpZiAoZmQgPCAwKQo+ICsJCXRz dF9icmsoVEJST0ssICJ0c3RfY2dfZ3JvdXBfdW5pZmllZF9kaXJfZmQgcmV0dXJuZWQgJWQiLCBm ZCk7Cj4gKwlyZXR1cm4gZmQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcg Y2dfcmVhZF91bGwoY29uc3Qgc3RydWN0IHRzdF9jZ19ncm91cCAqY2csCj4gKwkJCQkgICAgICBj b25zdCBjaGFyICpmbmFtZSkKPiArewo+ICsJY2hhciBidWZbNjRdOwo+ICsJY2hhciAqZW5kcDsK PiArCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7Cj4gKwo+ICsJU0FGRV9GSUxFX1JFQURBVChjZ19k aXJmZChjZyksIGZuYW1lLCBidWYsIHNpemVvZihidWYpIC0gMSk7Cj4gKwo+ICsJdmFsID0gc3Ry dG91bGwoYnVmLCAmZW5kcCwgMTApOwo+ICsJaWYgKGVuZHAgPT0gYnVmKQo+ICsJCXRzdF9icmso VEJST0ssICJzdHJ0b3VsbCBmYWlsZWQgb24gJyVzJyBmcm9tICVzIiwgYnVmLCBmbmFtZSk7Cj4g KwlyZXR1cm4gdmFsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjZ193cml0ZV91bGwoY29uc3Qg c3RydWN0IHRzdF9jZ19ncm91cCAqY2csCj4gKwkJCSBjb25zdCBjaGFyICpmbmFtZSwgdW5zaWdu ZWQgbG9uZyBsb25nIHZhbCkKPiArewo+ICsJU0FGRV9GSUxFX1BSSU5URkFUKGNnX2RpcmZkKGNn KSwgZm5hbWUsICIlbGx1IiwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY2dfd3JpdGVf c3RyX3NhZmUoY29uc3Qgc3RydWN0IHRzdF9jZ19ncm91cCAqY2csCj4gKwkJCSAgICAgIGNvbnN0 IGNoYXIgKmZuYW1lLCBjb25zdCBjaGFyICpzdHIpCj4gK3sKPiArCVNBRkVfRklMRV9QUklOVEZB VChjZ19kaXJmZChjZyksIGZuYW1lLCAiJXMiLCBzdHIpOwo+ICt9CgpUaGVzZSBhcmUgbW9zdGx5 IG1pcy11c2Ugb2YgdGhlIGNncm91cCBBUEkuIFRoZXJlIGlzIFNBRkVfQ0dfUFJJTlRGKCkKdGhh dCBtdXN0IGJlIHVzZSB0byB3cml0ZSB0aGUgdmFsdWVzIGluc3RlYWQgb2Ygcm9sbGluZyBvdXQg eW91ciBvd24KdmVyc2lvbnMuCgpGb3IgcmVhZGluZyB2YWx1ZXMgdGhlcmUgaXMgYSBUU1RfQ0df U0NBTkYoKS4KCj4gKy8qCj4gKyAqIGNnX3dyaXRlX3N0cigpIC0gYXR0ZW1wdCBhIHdyaXRlIHRo YXQgbWF5IGxlZ2l0aW1hdGVseSBmYWlsLgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJy bm8gb24gZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbnQgY2dfd3JpdGVfc3RyKGNvbnN0IHN0 cnVjdCB0c3RfY2dfZ3JvdXAgKmNnLAo+ICsJCQljb25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hh ciAqc3RyKQo+ICt7Cj4gKwlpbnQgZmQsIHNhdmVkID0gMDsKPiArCXNzaXplX3QgbjsKPiArCj4g KwlmZCA9IFNBRkVfT1BFTkFUKGNnX2RpcmZkKGNnKSwgZm5hbWUsIE9fV1JPTkxZKTsKPiArCW4g ID0gd3JpdGUoZmQsIHN0ciwgc3RybGVuKHN0cikpOwo+ICsJaWYgKG4gPCAwKQo+ICsJCXNhdmVk ID0gZXJybm87Cj4gKwlTQUZFX0NMT1NFKGZkKTsKPiArCXJldHVybiBzYXZlZDsKPiArfQoKVGhl IGZkIHRvIGEgZmlsZSBpbnNpZGUgb2YgYSBwYXJ0aWN1bGFyIGNncm91cCBjYW4gYmUgb2J0YWlu ZWQgd2l0aApTQUZFX0NHX09QRU4oKS4KCj4gK3N0YXRpYyB2b2lkIHNldF9jcHVfbWF4KGNvbnN0 IHN0cnVjdCB0c3RfY2dfZ3JvdXAgKmNnLAo+ICsJCQl1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFf dXMsCj4gKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBwZXJpb2RfdXMpCj4gK3sKPiArCWNoYXIgYnVm WzY0XTsKPiArCj4gKwlpZiAocXVvdGFfdXMgPT0gVUxMT05HX01BWCkKPiArCQlzbnByaW50Zihi dWYsIHNpemVvZihidWYpLCAibWF4ICVsbHUiLCBwZXJpb2RfdXMpOwo+ICsJZWxzZQo+ICsJCXNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlbGx1ICVsbHUiLCBxdW90YV91cywgcGVyaW9kX3Vz KTsKPiArCj4gKwljZ193cml0ZV9zdHJfc2FmZShjZywgImNwdS5tYXgiLCBidWYpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHJlYWRfYnVyc3QoY29uc3Qgc3RydWN0IHRz dF9jZ19ncm91cCAqY2cpCj4gK3sKPiArCXJldHVybiBjZ19yZWFkX3VsbChjZywgImNwdS5tYXgu YnVyc3QiKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgd3JpdGVfYnVyc3QoY29uc3Qgc3RydWN0 IHRzdF9jZ19ncm91cCAqY2csCj4gKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBidXJzdF91cykKPiAr ewo+ICsJY2dfd3JpdGVfdWxsKGNnLCAiY3B1Lm1heC5idXJzdCIsIGJ1cnN0X3VzKTsKPiArfQoK VGhlc2UgYXJlIGFsc28gbWlzdXNlIG9mIHRoZSBBUEksIHRoZSB0ZXN0cyBzaG91bGQgdXNlIFNB RkVfQ0dfU0NBTkYoKQpkaXJlY3RseS4KCj4gKy8qCj4gKyAqIHRyeV93cml0ZV9idXJzdCgpIC0g YXR0ZW1wdCBhIGJ1cnN0IHdyaXRlIHRoYXQgbWF5IGxlZ2l0aW1hdGVseSBmYWlsLgo+ICsgKiBS ZXR1cm5zIDAgb24gc3VjY2VzcywgZXJybm8gb24gZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBp bnQgdHJ5X3dyaXRlX2J1cnN0KGNvbnN0IHN0cnVjdCB0c3RfY2dfZ3JvdXAgKmNnLAo+ICsJCQkg ICB1bnNpZ25lZCBsb25nIGxvbmcgYnVyc3RfdXMpCj4gK3sKPiArCWNoYXIgYnVmWzMyXTsKPiAr Cj4gKwlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJWxsdSIsIGJ1cnN0X3VzKTsKPiArCXJl dHVybiBjZ193cml0ZV9zdHIoY2csICJjcHUubWF4LmJ1cnN0IiwgYnVmKTsKPiArfQo+ICsKPiAr c3RydWN0IGJ1cnN0X3N0YXQgewo+ICsJdW5zaWduZWQgbG9uZyBsb25nIG5yX2J1cnN0czsKPiAr CXVuc2lnbmVkIGxvbmcgbG9uZyBidXJzdF91c2VjOwo+ICt9Owo+ICsKPiArc3RhdGljIGludCBy ZWFkX2J1cnN0X3N0YXQoY29uc3Qgc3RydWN0IHRzdF9jZ19ncm91cCAqY2csCj4gKwkJCSAgIHN0 cnVjdCBidXJzdF9zdGF0ICpzKQo+ICt7Cj4gKwljaGFyIGJ1Zls0MDk2XTsKPiArCWNoYXIgKmxp bmUsICpzYXZlOwo+ICsJc3NpemVfdCBuOwo+ICsJaW50IGZkOwo+ICsJaW50IGdvdF9idXJzdHMg PSAwLCBnb3RfdXNlYyA9IDA7Cj4gKwo+ICsJbWVtc2V0KHMsIDAsIHNpemVvZigqcykpOwo+ICsK PiArCWZkID0gU0FGRV9PUEVOQVQoY2dfZGlyZmQoY2cpLCAiY3B1LnN0YXQiLCBPX1JET05MWSk7 Cj4gKwluICA9IFNBRkVfUkVBRCgwLCBmZCwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwo+ICsJU0FG RV9DTE9TRShmZCk7CgpUaGlzIHNob3VsZCBiZSByZXBsYWNlZCBieSBTQUZFX0NHX1JFQUQoKS4K Cj4gKwlpZiAobiA8PSAwKQo+ICsJCXJldHVybiAtMTsKPiArCWJ1ZltuXSA9ICdcMCc7Cj4gKwo+ ICsJZm9yIChsaW5lID0gc3RydG9rX3IoYnVmLCAiXG4iLCAmc2F2ZSk7IGxpbmU7Cj4gKwkgICAg IGxpbmUgPSBzdHJ0b2tfcihOVUxMLCAiXG4iLCAmc2F2ZSkpIHsKPiArCQlpZiAoc3NjYW5mKGxp bmUsICJucl9idXJzdHMgJWxsdSIsICAmcy0+bnJfYnVyc3RzKSA9PSAxKQo+ICsJCQlnb3RfYnVy c3RzID0gMTsKPiArCQlpZiAoc3NjYW5mKGxpbmUsICJidXJzdF91c2VjICVsbHUiLCAmcy0+YnVy c3RfdXNlYykgPT0gMSkKPiArCQkJZ290X3VzZWMgPSAxOwo+ICsJfQo+ICsKPiArCXJldHVybiAo Z290X2J1cnN0cyAmJiBnb3RfdXNlYykgPyAwIDogLTE7Cj4gK30KPiArCj4gK2VudW0gd29ya2Vy X2NtZCB7Cj4gKwlDTURfVU5ERVJSVU4sCj4gKwlDTURfT1ZFUkxPQUQsCj4gKwlDTURfRVhJVCwK PiArfTsKPiArCj4gK2VudW0gd29ya2VyX2FjayB7IEFDS19ET05FIH07Cj4gKwo+ICtzdGF0aWMg aW50ICAgY21kX3BpcGVbMl0gPSB7IC0xLCAtMSB9Owo+ICtzdGF0aWMgaW50ICAgYWNrX3BpcGVb Ml0gPSB7IC0xLCAtMSB9Owo+ICtzdGF0aWMgcGlkX3Qgd29ya2VyX3BpZCAgPSAtMTsKPiArCj4g K3N0YXRpYyBsb25nIGxvbmcgbW9ub3RvbmljX3VzKHZvaWQpCj4gK3sKPiArCXN0cnVjdCB0aW1l c3BlYyB0czsKPiArCj4gKwlTQUZFX0NMT0NLX0dFVFRJTUUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMp Owo+ICsJcmV0dXJuIChsb25nIGxvbmcpdHMudHZfc2VjICogMTAwMDAwMExMICsgdHMudHZfbnNl YyAvIDEwMDBMTDsKPiArfQo+ICsKPiArc3RhdGljIGxvbmcgbG9uZyBwcm9jZXNzX2NwdV91cyh2 b2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMgdHM7Cj4gKwo+ICsJU0FGRV9DTE9DS19HRVRU SU1FKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCwgJnRzKTsKPiArCXJldHVybiAobG9uZyBsb25n KXRzLnR2X3NlYyAqIDEwMDAwMDBMTCArIHRzLnR2X25zZWMgLyAxMDAwTEw7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGJ1cm5fY3B1X2Zvcihsb25nIGxvbmcgZHVyX3VzKQo+ICt7Cj4gKwlsb25n IGxvbmcgc3RhcnQgPSBwcm9jZXNzX2NwdV91cygpOwo+ICsJdm9sYXRpbGUgdW5zaWduZWQgbG9u ZyB2ID0gMTsKPiArCj4gKwl3aGlsZSAocHJvY2Vzc19jcHVfdXMoKSAtIHN0YXJ0IDwgZHVyX3Vz KQo+ICsJCXYgPSB2ICogMTEwMzUxNTI0NVVMICsgMTIzNDVVTDsKPiArfQoKVGhpcyBzaG91bGQg dXNlIENQVVRJTUUgY2xvY2sgaWYgaXQgd2FudHMgdG8gZW5zdXJlIHRoYXQgdGhlIENQVSB3YXMK cmVhbGx5IGJ1cm5lZCBmb3IgYSBkZWZpbmVkIHBlcmlvZC4KCj4gKy8qCj4gKyAqIHdvcmtlcl9t YWluKCkgLSBjb21tYW5kIGxvb3AgcnVuIGJ5IHRoZSBmb3JrZWQgY2hpbGQgaW5zaWRlIHRoZSBj Z3JvdXAuCj4gKyAqCj4gKyAqIENNRF9VTkRFUlJVTjoKPiArICogICBSdW5zIDUgcGVyaW9kcy4g IEluIGVhY2ggcGVyaW9kIHRoZSB3b3JrZXIgYnVybnMgMSBtcyBvZiBDUFUgdGltZSB0aGVuCj4g KyAqICAgc2xlZXBzIGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZSBwZXJpb2QgdmlhIGNsb2NrX25h bm9zbGVlcChDTE9DS19NT05PVE9OSUMpLgo+ICsgKiAgIGNsb2NrX25hbm9zbGVlcCgpIGdlbnVp bmVseSBibG9ja3Mg4oCUIHRoZSBwcm9jZXNzIGdvZXMgb2ZmLUNQVSBhbmQgY29uc3VtZXMKPiAr ICogICBubyBxdW90YSB3aGlsZSBzbGVlcGluZyDigJQgc28gdGhlIGNncm91cCB1c2VzIH4xIG1z IG91dCBvZiAyMCBtcyBxdW90YSBlYWNoCj4gKyAqICAgcGVyaW9kLiAgQWZ0ZXIgMiBwZXJpb2Rz IHRoZSBydW50aW1lIHBvb2wgcmVhY2hlcyB0aGUgKHF1b3RhICsgYnVyc3QgPSAzMCBtcykKPiAr ICogICBjZWlsaW5nLiAgbnJfYnVyc3RzIHN0YXlzIDAgZHVyaW5nIHRoaXMgcGhhc2UgYmVjYXVz ZSB0aGUgcG9vbCBpcyBuZXZlcgo+ICsgKiAgIGZ1bGx5IGRyYWluZWQuCj4gKyAqCj4gKyAqIENN RF9PVkVSTE9BRDoKPiArICogICBCdXJucyA0IHggUVVPVEFfVVMgPSA4MCBtcyBvZiBwcm9jZXNz IENQVSB0aW1lIHRvIGRyYWluIHRoZSBwb29sCj4gKyAqICAgYWNyb3NzIG11bHRpcGxlIHBlcmlv ZCBib3VuZGFyaWVzIGFuZCB0cmlnZ2VyIGJ1cnN0IGFjY291bnRpbmcuCj4gKyAqLwo+ICtzdGF0 aWMgdm9pZCB3b3JrZXJfbWFpbih2b2lkKQo+ICt7Cj4gKwllbnVtIHdvcmtlcl9jbWQgY21kOwo+ ICsJZW51bSB3b3JrZXJfYWNrIGFjayA9IEFDS19ET05FOwo+ICsJc3NpemVfdCBuOwo+ICsKPiAr CVNBRkVfQ0xPU0UoY21kX3BpcGVbMV0pOwo+ICsJU0FGRV9DTE9TRShhY2tfcGlwZVswXSk7Cj4g Kwo+ICsJZm9yICg7Oykgewo+ICsJCW4gPSBTQUZFX1JFQUQoMSwgY21kX3BpcGVbMF0sICZjbWQs IHNpemVvZihjbWQpKTsKPiArCQlpZiAobiAhPSAoc3NpemVfdClzaXplb2YoY21kKSkKPiArCQkJ YnJlYWs7Cj4gKwo+ICsJCXN3aXRjaCAoY21kKSB7Cj4gKwkJY2FzZSBDTURfVU5ERVJSVU46Cj4g KwkJCXsKPiArCQkJCWludCBpOwo+ICsKPiArCQkJCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsK PiArCQkJCQlzdHJ1Y3QgdGltZXNwZWMgZGVhZGxpbmU7Cj4gKwkJCQkJbG9uZyBsb25nIG5vd191 czsKPiArCj4gKwkJCQkJLyoKPiArCQkJCQkgKiBCdXJuIDEgbXMgb2YgQ1BVIHF1b3RhLCB0aGVu Cj4gKwkJCQkJICogZ2VudWluZWx5IHNsZWVwIGZvciB0aGUgcmVzdCBvZiB0aGUKPiArCQkJCQkg KiBwZXJpb2QuICBjbG9ja19uYW5vc2xlZXAoKSBibG9ja3MgdGhlCj4gKwkJCQkJICogcHJvY2Vz cyBvZmYtQ1BVIHNvIG5vIHF1b3RhIGlzIHVzZWQKPiArCQkJCQkgKiB3aGlsZSB3YWl0aW5nLgo+ ICsJCQkJCSAqLwo+ICsJCQkJCWJ1cm5fY3B1X2ZvcigxMDAwTEwpOwo+ICsKPiArCQkJCQlub3df dXMgPSBtb25vdG9uaWNfdXMoKTsKPiArCQkJCQlkZWFkbGluZS50dl9zZWMgID0KPiArCQkJCQkJ KG5vd191cyArIChsb25nIGxvbmcpUEVSSU9EX1VTKQo+ICsJCQkJCQkvIDEwMDAwMDBMTDsKPiAr CQkJCQlkZWFkbGluZS50dl9uc2VjID0KPiArCQkJCQkJKChub3dfdXMgKyAobG9uZyBsb25nKVBF UklPRF9VUykKPiArCQkJCQkJJSAxMDAwMDAwTEwpICogMTAwMExMOwo+ICsJCQkJCXdoaWxlIChj bG9ja19uYW5vc2xlZXAoQ0xPQ0tfTU9OT1RPTklDLAo+ICsJCQkJCQlUSU1FUl9BQlNUSU1FLCAm ZGVhZGxpbmUsCj4gKwkJCQkJCU5VTEwpID09IEVJTlRSKQo+ICsJCQkJCQk7Cj4gKwkJCQl9Cj4g KwkJCX0KPiArCQkJYnJlYWs7Cj4gKwo+ICsJCWNhc2UgQ01EX09WRVJMT0FEOgo+ICsJCQlidXJu X2NwdV9mb3IoNExMICogKGxvbmcgbG9uZylRVU9UQV9VUyk7Cj4gKwkJCWJyZWFrOwo+ICsKPiAr CQljYXNlIENNRF9FWElUOgo+ICsJCQlTQUZFX0NMT1NFKGNtZF9waXBlWzBdKTsKPiArCQkJU0FG RV9DTE9TRShhY2tfcGlwZVsxXSk7Cj4gKwkJCWV4aXQoMCk7Cj4gKwo+ICsJCWRlZmF1bHQ6Cj4g KwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJU0FGRV9XUklURSgxLCBhY2tfcGlwZVsxXSwgJmFj aywgc2l6ZW9mKGFjaykpOwo+ICsJfQo+ICsKPiArCWV4aXQoMSk7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIHdvcmtlcl9zdGFydChjb25zdCBzdHJ1Y3QgdHN0X2NnX2dyb3VwICpjZykKPiArewo+ ICsJU0FGRV9QSVBFKGNtZF9waXBlKTsKPiArCVNBRkVfUElQRShhY2tfcGlwZSk7Cj4gKwo+ICsJ d29ya2VyX3BpZCA9IFNBRkVfRk9SSygpOwo+ICsJaWYgKCF3b3JrZXJfcGlkKSB7Cj4gKwkJU0FG RV9DR19QUklOVEYoY2csICJjZ3JvdXAucHJvY3MiLCAiJWQiLCBnZXRwaWQoKSk7Cj4gKwkJd29y a2VyX21haW4oKTsKPiArCQlleGl0KDEpOwo+ICsJfQo+ICsKPiArCVNBRkVfQ0xPU0UoY21kX3Bp cGVbMF0pOwo+ICsJU0FGRV9DTE9TRShhY2tfcGlwZVsxXSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIHdvcmtlcl9zZW5kKGVudW0gd29ya2VyX2NtZCBjbWQpCj4gK3sKPiArCWVudW0gd29ya2Vy X2FjayBhY2s7Cj4gKwo+ICsJU0FGRV9XUklURSgxLCBjbWRfcGlwZVsxXSwgJmNtZCwgc2l6ZW9m KGNtZCkpOwo+ICsJaWYgKGNtZCAhPSBDTURfRVhJVCkKPiArCQlTQUZFX1JFQUQoMSwgYWNrX3Bp cGVbMF0sICZhY2ssIHNpemVvZihhY2spKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgd29ya2Vy X3N0b3Aodm9pZCkKPiArewo+ICsJaWYgKHdvcmtlcl9waWQgPCAwKQo+ICsJCXJldHVybjsKPiAr Cj4gKwl3b3JrZXJfc2VuZChDTURfRVhJVCk7Cj4gKwlTQUZFX1dBSVRQSUQod29ya2VyX3BpZCwg TlVMTCwgMCk7Cj4gKwl3b3JrZXJfcGlkID0gLTE7Cj4gKwo+ICsJaWYgKGNtZF9waXBlWzFdID49 IDApIHsKPiArCQlTQUZFX0NMT1NFKGNtZF9waXBlWzFdKTsKPiArCQljbWRfcGlwZVsxXSA9IC0x Owo+ICsJfQo+ICsJaWYgKGFja19waXBlWzBdID49IDApIHsKPiArCQlTQUZFX0NMT1NFKGFja19w aXBlWzBdKTsKPiArCQlhY2tfcGlwZVswXSA9IC0xOwo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsg KiB0YzFfZGVmYXVsdF9hbmRfemVybyAtIGRlZmF1bHQgdmFsdWUgaXMgMDsgY2xlYXJpbmcgYmFj ayB0byAwIHdvcmtzLgo+ICsgKgo+ICsgKiBBIGZyZXNobHkgY3JlYXRlZCBjZ3JvdXAgbXVzdCBy ZWFkIDAgZnJvbSBjcHUubWF4LmJ1cnN0LiAgQWZ0ZXIgd3JpdGluZwo+ICsgKiBhIG5vbi16ZXJv IHZhbHVlLCB3cml0aW5nIDAgbXVzdCByZXN0b3JlIGl0IHRvIDAuCj4gKyAqLwoKVGhlIHRlc3Rj YXNlcyBtdXN0IGJlIGRlc2NyaWJlZCBpbiB0aGUgdG9wLWxldmVsIGRvY3VtZW50YXRpb24gY29t bWVudCwKbm90IGluIHRoZSBjb2RlLgoKPiArc3RhdGljIHZvaWQgdGMxX2RlZmF1bHRfYW5kX3pl cm8odm9pZCkKPiArewo+ICsJdW5zaWduZWQgbG9uZyBsb25nIGJ1cnN0Owo+ICsKPiArCWNnX2No aWxkID0gdHN0X2NnX2dyb3VwX21rKHRzdF9jZywgImJ1cnN0X3RjMSIpOwo+ICsKPiArCWJ1cnN0 ID0gcmVhZF9idXJzdChjZ19jaGlsZCk7Cj4gKwlpZiAoYnVyc3QgIT0gMCkKPiArCQl0c3RfcmVz KFRGQUlMLCAiJXM6IGV4cGVjdGVkIGRlZmF1bHQgMCwgZ290ICVsbHUiLCBfX2Z1bmNfXywgYnVy c3QpOwo+ICsJZWxzZQo+ICsJCXRzdF9yZXMoVFBBU1MsICIlczogY3B1Lm1heC5idXJzdCBkZWZh dWx0cyB0byAwIiwgX19mdW5jX18pOwoKVGhpcyBzaG91bGQgYmUganVzdCBUU1RfRVhQX0VRX0xV KCkuCgo+ICsJc2V0X2NwdV9tYXgoY2dfY2hpbGQsIFFVT1RBX1VTLCBQRVJJT0RfVVMpOwo+ICsJ d3JpdGVfYnVyc3QoY2dfY2hpbGQsIEJVUlNUX1VTKTsKPiArCXdyaXRlX2J1cnN0KGNnX2NoaWxk LCAwKTsKPiArCj4gKwlidXJzdCA9IHJlYWRfYnVyc3QoY2dfY2hpbGQpOwo+ICsJaWYgKGJ1cnN0 ID09IDApCj4gKwkJdHN0X3JlcyhUUEFTUywgIiVzOiBidXJzdCBjbGVhcmVkIGJhY2sgdG8gMCIs IF9fZnVuY19fKTsKPiArCWVsc2UKPiArCQl0c3RfcmVzKFRGQUlMLCAiJXM6IGV4cGVjdGVkIDAg YWZ0ZXIgY2xlYXIsIGdvdCAlbGx1IHVzIiwgX19mdW5jX18sIGJ1cnN0KTsKClRoaXMgc2hvdWxk IGJlIGp1c3QgVFNUX0VYUF9FUV9MVSgpIGFzIHdlbGwuCgo+ICsJY2dfY2hpbGQgPSB0c3RfY2df Z3JvdXBfcm0oY2dfY2hpbGQpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiB0YzJfd3JpdGVfcmVhZGJh Y2tfYW5kX2JvdW5kYXJ5IC0gdmFsaWQgcmVhZGJhY2ssIGJ1cnN0ID09IHF1b3RhIGFjY2VwdGVk LAo+ICsgKiBidXJzdCA+IHF1b3RhIHJlamVjdGVkLgo+ICsgKgo+ICsgKiBWZXJpZmllcyB3cml0 ZS9yZWFkYmFjayBjb3JyZWN0bmVzcyBmb3IgYnVyc3QgPSBxdW90YS8yLCBjb25maXJtcwo+ICsg KiBidXJzdCA9PSBxdW90YSBpcyB0aGUgdXBwZXIgdmFsaWQgYm91bmRhcnksIGFuZCBjb25maXJt cyBidXJzdCA+IHF1b3RhCj4gKyAqIGlzIHJlamVjdGVkIHdpdGggRUlOVkFMIHdpdGhvdXQgY29y cnVwdGluZyB0aGUgc3RvcmVkIHZhbHVlLgo+ICsgKi8KCkhlcmUgYXMgd2VsbC4KCj4gK3N0YXRp YyB2b2lkIHRjMl93cml0ZV9yZWFkYmFja19hbmRfYm91bmRhcnkodm9pZCkKPiArewo+ICsJY29u c3QgdW5zaWduZWQgbG9uZyBsb25nIGJhZF9idXJzdCA9IFFVT1RBX1VTICsgMTsKPiArCXVuc2ln bmVkIGxvbmcgbG9uZyBidXJzdDsKPiArCWludCBlcnI7Cj4gKwo+ICsJY2dfY2hpbGQgPSB0c3Rf Y2dfZ3JvdXBfbWsodHN0X2NnLCAiYnVyc3RfdGMyIik7Cj4gKwo+ICsJc2V0X2NwdV9tYXgoY2df Y2hpbGQsIFFVT1RBX1VTLCBQRVJJT0RfVVMpOwo+ICsJd3JpdGVfYnVyc3QoY2dfY2hpbGQsIEJV UlNUX1VTKTsKPiArCj4gKwlidXJzdCA9IHJlYWRfYnVyc3QoY2dfY2hpbGQpOwo+ICsJaWYgKGJ1 cnN0ID09IEJVUlNUX1VTKQo+ICsJCXRzdF9yZXMoVFBBU1MsICJ0YzJfd3JpdGVfcmVhZGJhY2s6 IGNwdS5tYXguYnVyc3Qgd3JpdGUvcmVhZGJhY2sgJWxsdSB1cyIsIGJ1cnN0KTsKPiArCWVsc2UK PiArCQl0c3RfcmVzKFRGQUlMLCAidGMyX3dyaXRlX3JlYWRiYWNrOiBleHBlY3RlZCAlbGx1IHVz LCBnb3QgJWxsdSB1cyIsCj4gKwkJCUJVUlNUX1VTLCBidXJzdCk7CgpUaGlzIHNob3VsZCBiZSBq dXN0IFRTVF9FWFBfRVFfTFUoKSBhcyB3ZWxsLgoKPiArCXdyaXRlX2J1cnN0KGNnX2NoaWxkLCBR VU9UQV9VUyk7Cj4gKwo+ICsJYnVyc3QgPSByZWFkX2J1cnN0KGNnX2NoaWxkKTsKPiArCWlmIChi dXJzdCA9PSBRVU9UQV9VUykKPiArCQl0c3RfcmVzKFRQQVNTLCAidGMyX2J1cnN0X2VxdWFsc19x dW90YTogYnVyc3QgPT0gcXVvdGEgKCVsbHUgdXMpIGFjY2VwdGVkIiwgYnVyc3QpOwo+ICsJZWxz ZQo+ICsJCXRzdF9yZXMoVEZBSUwsICJ0YzJfYnVyc3RfZXF1YWxzX3F1b3RhOiBleHBlY3RlZCAl bGx1IHVzLCBnb3QgJWxsdSB1cyIsCj4gKwkJCVFVT1RBX1VTLCBidXJzdCk7CgpUaGlzIHNob3Vs ZCBiZSBqdXN0IFRTVF9FWFBfRVFfTFUoKSBhcyB3ZWxsLgoKPiArCS8qCj4gKwkgKiBSZXN0b3Jl IGEga25vd24gcHJlLXNlZWQgdmFsdWUgYmVmb3JlIHRoZSByZWplY3Rpb24gdGVzdCBzbyB0aGF0 Cj4gKwkgKiBzaWxlbnQgY29ycnVwdGlvbiBvZiB0aGUgc3RvcmVkIGJ1cnN0IGlzIGRldGVjdGFi bGUuCj4gKwkgKi8KPiArCXdyaXRlX2J1cnN0KGNnX2NoaWxkLCBCVVJTVF9VUyk7Cj4gKwo+ICsJ ZXJyID0gdHJ5X3dyaXRlX2J1cnN0KGNnX2NoaWxkLCBiYWRfYnVyc3QpOwo+ICsJYnVyc3QgPSBy ZWFkX2J1cnN0KGNnX2NoaWxkKTsKPiArCj4gKwlpZiAoIWVycikgewo+ICsJCXRzdF9yZXMoVEZB SUwsCj4gKwkJCSJ0YzJfYnVyc3RfZXhjZWVkc19xdW90YTogYnVyc3Q9JWxsdSAocXVvdGErMSkg d3JpdGUgc3VjY2VlZGVkLCBleHBlY3RlZCBFSU5WQUwiLAo+ICsJCQliYWRfYnVyc3QpOwo+ICsJ fSBlbHNlIHsKPiArCQlpZiAoZXJyICE9IEVJTlZBTCkgewo+ICsJCQl0c3RfcmVzKFRXQVJOLAo+ ICsJCQkJInRjMl9idXJzdF9leGNlZWRzX3F1b3RhOiBnb3QgZXJybm89JWQgKCVzKSwgZXhwZWN0 ZWQgRUlOVkFMIiwKPiArCQkJCWVyciwgdHN0X3N0cmVycm5vKGVycikpOwo+ICsJCX0KPiArCj4g KwkJaWYgKGJ1cnN0ICE9IEJVUlNUX1VTKSB7Cj4gKwkJCXRzdF9yZXMoVEZBSUwsCj4gKwkJCQki dGMyX2J1cnN0X2V4Y2VlZHNfcXVvdGE6IGJ1cnN0IGNvcnJ1cHRlZCBhZnRlciByZWplY3RlZCB3 cml0ZSAoZXhwZWN0ZWQgJWxsdSB1cywgZ290ICVsbHUgdXMpIiwKPiArCQkJCUJVUlNUX1VTLCBi dXJzdCk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdHN0X3JlcyhUUEFTUywKPiArCQkJCSJ0YzJfYnVy c3RfZXhjZWVkc19xdW90YTogYnVyc3Q9JWxsdSByZWplY3RlZCAoZXJybm89JWQpLCBzdG9yZWQg dmFsdWUgdW5jaGFuZ2VkICglbGx1IHVzKSIsCj4gKwkJCQliYWRfYnVyc3QsIGVyciwgYnVyc3Qp Owo+ICsJCX0KPiArCX0KClRoaXMgaXMgdWdseSBzcGFnaGV0dGkgY29kZS4KCk1heWJlIGl0IHdv dWxkIGJlIGJlc3QgdG8gYWRkIGEgZnVuY3Rpb24gdG8gdGhlIGxpYnJhcnkgdGhhdCB3b3VsZApw cm9wYWdhdGUgdGhlIGVycm9yIGZyb20gd3JpdGUsIGUuZy4gVFNUX0NHX1BSSU5URigpIHRoYXQg Y291bGQgYmUgdGhlbgp1c2VkIHRvZ2V0aGVyIHdpdGggVFNUX0VYUF9GQUlMKCk6CgoJVFNUX0VY UF9GQUlMKFRTVF9DR19QUklOVEYoY2dfY2hpbGQsICJjcHUuYnVyc3QubWF4IiwgIiVsbHUiLCBC VVJTVF9VUyArIDEpLCBFSU5WQUwpOwoKCWlmIChUU1RfUEFTUykgewoJCVNBRkVfQ0dfU0NBTkYo Y2dfY2hpbGQsICJjcHUuYnVyc3QubWF4IiwgIiVsbHUiLCBidXJzdCk7CgoJCVRTVF9FWFBfRVFf TFUoYnVyc3QsIEJVUlNUX1VTKTsKCX0KCj4gKwljZ19jaGlsZCA9IHRzdF9jZ19ncm91cF9ybShj Z19jaGlsZCk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIHRjM19mdW5jdGlvbmFsX2J1cnN0X2FjY291 bnRpbmcgLSB2ZXJpZnkgbnJfYnVyc3RzIGFuZCBidXJzdF91c2VjIGluY3JlYXNlLgo+ICsgKgo+ ICsgKiBDb25maWd1cmF0aW9uOiBxdW90YT0yMG1zICBidXJzdD0xMG1zICBwZXJpb2Q9MTAwbXMK PiArICogUG9vbCBjZWlsaW5nOiAgcXVvdGEgKyBidXJzdCA9IDMwbXMKPiArICoKPiArICogUGhh c2UgQSAodW5kZXJydW4pIC0gd29ya2VyIGJ1cm5zIH4xIG1zIENQVSBwZXIgcGVyaW9kIG92ZXIg NSBwZXJpb2RzOgo+ICsgKiAgIENQVSB1c2FnZSB+MSBtcy9wZXJpb2QgPDwgMjAgbXMgcXVvdGEu ICBBZnRlciAyIHBlcmlvZHMgdGhlIHBvb2wgcmVhY2hlcwo+ICsgKiAgIHRoZSAzMCBtcyBjZWls aW5nLiAgbnJfYnVyc3RzIHN0YXlzIDA6IHRoZSBwb29sIGZpbGxzIGJ1dCBpcyBuZXZlciBkcmFp bmVkCj4gKyAqICAgYmVsb3cgcnVudGltZV9zbmFwLCBzbyB0aGUgc3VycGx1cyBhdCByZWZpbGwg aXMgbmV2ZXIgcG9zaXRpdmUuCj4gKyAqCj4gKyAqIFBoYXNlIEIgKG92ZXJsb2FkKSAtIHdvcmtl ciBidXJucyA0IHggUVVPVEFfVVMgPSA4MCBtcyBwcm9jZXNzIENQVSB0aW1lOgo+ICsgKiAgIFVu ZGVyIDIwIG1zIHF1b3RhIHRoaXMgc3BhbnMgPj0gNCB3YWxsLWNsb2NrIHBlcmlvZHMuCj4gKyAq ICAgUGVyaW9kIEIxOiBwb29sPTMwbXMsIHRhc2sgY29uc3VtZXMgMzBtcyAtPiBwb29sLT4wLCB0 aHJvdHRsZWQuCj4gKyAqICAgUGVyaW9kIEIyIHJlZmlsbDoKPiArICogICAgIHJ1bnRpbWUgICAr PSAyMG1zICAgICAgICAgLT4gMjBtcwo+ICsgKiAgICAgc3VycGx1cyAgICA9IHNuYXAoMzApIC0g MjAgPSArMTBtcyA+IDAKPiArICogICAgIG5yX2J1cnN0KysgLCBidXJzdF90aW1lICArPSAxMG1z Cj4gKyAqICAgICBydW50aW1lICAgID0gbWluKDIwLCAzMCkgID0gMjBtcwo+ICsgKgo+ICsgKiBU aGUgJ2JlZm9yZScgc25hcHNob3QgaXMgdGFrZW4gYWZ0ZXIgc2V0dXAgYnV0IEJFRk9SRSB0aGUg d29ya2VyIHN0YXJ0cywKPiArICogc28gaXQgY2FwdHVyZXMgdGhlIHplcm8gYmFzZWxpbmUuICBB bnkgYnVyc3QgYWN0aXZpdHkgZnJvbSB0aGUgdW5kZXJydW4KPiArICogcGhhc2UgKHRoZXJlIHNo b3VsZCBiZSBub25lKSBpcyBhbHJlYWR5IGNvdW50ZWQgaW4gJ2JlZm9yZScuICBBZnRlciB0aGUK PiArICogb3ZlcmxvYWQgcGhhc2UgYm90aCBjb3VudGVycyBtdXN0IGJlIHN0cmljdGx5IGdyZWF0 ZXIgdGhhbiAnYmVmb3JlJy4KPiArICovCgpIZXJlIGFzIHdlbGwsIHRoZSBkZXNjcmlwdGlvbiBz aG91bGQgYmUgaW4gdGhlIHRvcCBsZXZlbCBjb21tZW50LgoKPiArc3RhdGljIHZvaWQgdGMzX2Z1 bmN0aW9uYWxfYnVyc3RfYWNjb3VudGluZyh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgYnVyc3Rfc3Rh dCBiZWZvcmUsIGFmdGVyOwo+ICsJaW50IHN0YXRfb2s7Cj4gKwo+ICsJY2dfY2hpbGQgPSB0c3Rf Y2dfZ3JvdXBfbWsodHN0X2NnLCAiYnVyc3RfdGMzIik7Cj4gKwo+ICsJc2V0X2NwdV9tYXgoY2df Y2hpbGQsIFFVT1RBX1VTLCBQRVJJT0RfVVMpOwo+ICsJd3JpdGVfYnVyc3QoY2dfY2hpbGQsIEJV UlNUX1VTKTsKPiArCj4gKwkvKgo+ICsJICogU25hcHNob3QgQkVGT1JFIHRoZSB3b3JrZXIgc3Rh cnRzLiAgY3B1LnN0YXQgY291bnRlcnMgc3RhcnQgYXQgMAo+ICsJICogb24gYSBmcmVzaGx5IGNy ZWF0ZWQgY2dyb3VwOyBjYXB0dXJpbmcgaGVyZSBnaXZlcyBhIGNsZWFuIGJhc2VsaW5lCj4gKwkg KiB0aGF0IGlzIHVuYWZmZWN0ZWQgYnkgYW55IHNjaGVkdWxpbmcgYWN0aXZpdHkgaW5zaWRlIHRo ZSB3b3JrZXIuCj4gKwkgKi8KPiArCXN0YXRfb2sgPSByZWFkX2J1cnN0X3N0YXQoY2dfY2hpbGQs ICZiZWZvcmUpOwo+ICsJaWYgKHN0YXRfb2sgPCAwKSB7Cj4gKwkJdHN0X3JlcyhUQ09ORiwKPiAr CQkJIiVzOiBucl9idXJzdHMvYnVyc3RfdXNlYyBhYnNlbnQgZnJvbSBjcHUuc3RhdCAtLSBrZXJu ZWwgbWF5IGxhY2sgQ09ORklHX0NGU19CQU5EV0lEVEgiLAo+ICsJCQlfX2Z1bmNfXyk7Cj4gKwkJ Y2dfY2hpbGQgPSB0c3RfY2dfZ3JvdXBfcm0oY2dfY2hpbGQpOwo+ICsJCXJldHVybjsKPiArCX0K PiArCj4gKwl3b3JrZXJfc3RhcnQoY2dfY2hpbGQpOwo+ICsJd29ya2VyX3NlbmQoQ01EX1VOREVS UlVOKTsKPiArCXdvcmtlcl9zZW5kKENNRF9PVkVSTE9BRCk7Cj4gKwl3b3JrZXJfc3RvcCgpOwo+ ICsKPiArCXJlYWRfYnVyc3Rfc3RhdChjZ19jaGlsZCwgJmFmdGVyKTsKPiArCj4gKwl0c3RfcmVz KFRJTkZPLCAiJXM6IG5yX2J1cnN0cyAlbGx1LT4lbGx1ICBidXJzdF91c2VjICVsbHUtPiVsbHUi LAo+ICsJCV9fZnVuY19fLAo+ICsJCWJlZm9yZS5ucl9idXJzdHMsIGFmdGVyLm5yX2J1cnN0cywK PiArCQliZWZvcmUuYnVyc3RfdXNlYywgYWZ0ZXIuYnVyc3RfdXNlYyk7Cj4gKwo+ICsJaWYgKGFm dGVyLm5yX2J1cnN0cyA+IGJlZm9yZS5ucl9idXJzdHMgJiYKPiArCSAgICBhZnRlci5idXJzdF91 c2VjID4gYmVmb3JlLmJ1cnN0X3VzZWMpIHsKPiArCQl0c3RfcmVzKFRQQVNTLAo+ICsJCQkiJXM6 IG5yX2J1cnN0cyArJWxsdSAgYnVyc3RfdXNlYyArJWxsdSB1cyIsCj4gKwkJCV9fZnVuY19fLAo+ ICsJCQlhZnRlci5ucl9idXJzdHMgIC0gYmVmb3JlLm5yX2J1cnN0cywKPiArCQkJYWZ0ZXIuYnVy c3RfdXNlYyAtIGJlZm9yZS5idXJzdF91c2VjKTsKPiArCX0gZWxzZSB7Cj4gKwkJdHN0X3JlcyhU RkFJTCwKPiArCQkJIiVzOiBidXJzdCBhY2NvdW50aW5nIGRpZCBub3QgaW5jcmVhc2UgKG5yX2J1 cnN0cyAlbGx1LT4lbGx1ICBidXJzdF91c2VjICVsbHUtPiVsbHUpIiwKPiArCQkJX19mdW5jX18s Cj4gKwkJCWJlZm9yZS5ucl9idXJzdHMsIGFmdGVyLm5yX2J1cnN0cywKPiArCQkJYmVmb3JlLmJ1 cnN0X3VzZWMsIGFmdGVyLmJ1cnN0X3VzZWMpOwo+ICsJfQo+ICsKPiArCWNnX2NoaWxkID0gdHN0 X2NnX2dyb3VwX3JtKGNnX2NoaWxkKTsKPiArfQoKVGhlIGZ1bmN0aW9uYWwgdGVzdCBpcyB0aGUg bW9zdCBjb21wbGV4IGluIHRoZSBmaWxlLiBJdCB3b3VsZCBiZSBiZXR0ZXIKaWYgdGhhdCB0ZXN0 IHdhcyBzcGxpdCBpbnRvIGEgc2VwYXJhdGUgdGVzdGNhc2VzLgoKPiArLyoKPiArICogdGM0X3By ZXNlcnZlZF9hZnRlcl9xdW90YV9jbGVhciAtIGJ1cnN0IHZhbHVlIHN1cnZpdmVzIHF1b3RhIHJl bW92YWwuCj4gKyAqCj4gKyAqIFNldHRpbmcgY3B1Lm1heCB0byAibWF4IDxwZXJpb2Q+IiAobm8g cXVvdGEpIG11c3Qgbm90IHJlc2V0IHRoZSBzdG9yZWQKPiArICogYnVyc3QgdmFsdWUuCj4gKyAq LwoKSGVyZSBhcyB3ZWxsLgoKPiArc3RhdGljIHZvaWQgdGM0X3ByZXNlcnZlZF9hZnRlcl9xdW90 YV9jbGVhcih2b2lkKQo+ICt7Cj4gKwl1bnNpZ25lZCBsb25nIGxvbmcgYnVyc3RfYWZ0ZXI7Cj4g Kwo+ICsJY2dfY2hpbGQgPSB0c3RfY2dfZ3JvdXBfbWsodHN0X2NnLCAiYnVyc3RfdGM0Iik7Cj4g Kwo+ICsJc2V0X2NwdV9tYXgoY2dfY2hpbGQsIFFVT1RBX1VTLCBQRVJJT0RfVVMpOwo+ICsJd3Jp dGVfYnVyc3QoY2dfY2hpbGQsIEJVUlNUX1VTKTsKPiArCXNldF9jcHVfbWF4KGNnX2NoaWxkLCBV TExPTkdfTUFYLCBQRVJJT0RfVVMpOwo+ICsKPiArCWJ1cnN0X2FmdGVyID0gcmVhZF9idXJzdChj Z19jaGlsZCk7Cj4gKwlpZiAoYnVyc3RfYWZ0ZXIgPT0gQlVSU1RfVVMpCj4gKwkJdHN0X3JlcyhU UEFTUywgIiVzOiBidXJzdCBwcmVzZXJ2ZWQgKCVsbHUgdXMpIGFmdGVyIHF1b3RhIGNsZWFyZWQi LAo+ICsJCQlfX2Z1bmNfXywgYnVyc3RfYWZ0ZXIpOwo+ICsJZWxzZQo+ICsJCXRzdF9yZXMoVEZB SUwsICIlczogZXhwZWN0ZWQgJWxsdSB1cyBhZnRlciBxdW90YSBjbGVhciwgZ290ICVsbHUgdXMi LAo+ICsJCQlfX2Z1bmNfXywgQlVSU1RfVVMsIGJ1cnN0X2FmdGVyKTsKClRoaXMgc2hvdWxkIGJl IFRTVF9FWFBfRVFfTFUoKS4KCj4gKwljZ19jaGlsZCA9IHRzdF9jZ19ncm91cF9ybShjZ19jaGls ZCk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIHRjNV9wcmVzZXJ2ZWRfYWZ0ZXJfcGVyaW9kX2NoYW5n ZSAtIGJ1cnN0IHZhbHVlIHN1cnZpdmVzIHBlcmlvZCB1cGRhdGUuCj4gKyAqCj4gKyAqIFVwZGF0 aW5nIG9ubHkgdGhlIHBlcmlvZCBpbiBjcHUubWF4IG11c3Qgbm90IHNpbGVudGx5IGNsZWFyIHRo ZSBidXJzdCB2YWx1ZS4KPiArICovCgpIZXJlIGFzIHdlbGwuCgo+ICtzdGF0aWMgdm9pZCB0YzVf cHJlc2VydmVkX2FmdGVyX3BlcmlvZF9jaGFuZ2Uodm9pZCkKPiArewo+ICsJY29uc3QgdW5zaWdu ZWQgbG9uZyBsb25nIG5ld19wZXJpb2QgPSAyMDAwMDBVTEw7Cj4gKwl1bnNpZ25lZCBsb25nIGxv bmcgYnVyc3RfYWZ0ZXI7Cj4gKwo+ICsJY2dfY2hpbGQgPSB0c3RfY2dfZ3JvdXBfbWsodHN0X2Nn LCAiYnVyc3RfdGM1Iik7Cj4gKwo+ICsJc2V0X2NwdV9tYXgoY2dfY2hpbGQsIFFVT1RBX1VTLCBQ RVJJT0RfVVMpOwo+ICsJd3JpdGVfYnVyc3QoY2dfY2hpbGQsIEJVUlNUX1VTKTsKPiArCXNldF9j cHVfbWF4KGNnX2NoaWxkLCBRVU9UQV9VUywgbmV3X3BlcmlvZCk7Cj4gKwo+ICsJYnVyc3RfYWZ0 ZXIgPSByZWFkX2J1cnN0KGNnX2NoaWxkKTsKPiArCWlmIChidXJzdF9hZnRlciA9PSBCVVJTVF9V UykKPiArCQl0c3RfcmVzKFRQQVNTLCAiJXM6IGJ1cnN0IHByZXNlcnZlZCAoJWxsdSB1cykgYWZ0 ZXIgcGVyaW9kIGNoYW5nZWQgdG8gJWxsdSB1cyIsCj4gKwkJCV9fZnVuY19fLCBidXJzdF9hZnRl ciwgbmV3X3BlcmlvZCk7Cj4gKwllbHNlCj4gKwkJdHN0X3JlcyhURkFJTCwgIiVzOiBleHBlY3Rl ZCAlbGx1IHVzIGFmdGVyIHBlcmlvZCBjaGFuZ2UsIGdvdCAlbGx1IHVzIiwKPiArCQkJX19mdW5j X18sIEJVUlNUX1VTLCBidXJzdF9hZnRlcik7CgpUaGlzIHNob3VsZCBiZSBUU1RfRVhQX0VRX0xV KCkuCgo+ICsJY2dfY2hpbGQgPSB0c3RfY2dfZ3JvdXBfcm0oY2dfY2hpbGQpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCAoKmNvbnN0IHRjX2Z1bmNzW10pKHZvaWQpID0gewo+ICsJdGMxX2RlZmF1 bHRfYW5kX3plcm8sCj4gKwl0YzJfd3JpdGVfcmVhZGJhY2tfYW5kX2JvdW5kYXJ5LAo+ICsJdGMz X2Z1bmN0aW9uYWxfYnVyc3RfYWNjb3VudGluZywKPiArCXRjNF9wcmVzZXJ2ZWRfYWZ0ZXJfcXVv dGFfY2xlYXIsCj4gKwl0YzVfcHJlc2VydmVkX2FmdGVyX3BlcmlvZF9jaGFuZ2UsCj4gK307Cj4g Kwo+ICtzdGF0aWMgdm9pZCBydW5fdGVzdCh1bnNpZ25lZCBpbnQgbikKPiArewo+ICsJdGNfZnVu Y3Nbbl0oKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKPiArewo+ICsJaW50 IGRpcmZkOwo+ICsKPiArCWRpcmZkID0gdHN0X2NnX2dyb3VwX3VuaWZpZWRfZGlyX2ZkKHRzdF9j Zyk7Cj4gKwlpZiAoZGlyZmQgPCAwKQo+ICsJCXRzdF9icmsoVEJST0ssICJ0c3RfY2dfZ3JvdXBf dW5pZmllZF9kaXJfZmQgZmFpbGVkIik7CgpUaGlzIGNhbGwgY2FuIG9ubHkgZmFpbCBvbiB2MS4K Cj4gKwlpZiAoZmFjY2Vzc2F0KGRpcmZkLCAiY3B1Lm1heC5idXJzdCIsIEZfT0ssIDApICE9IDAp Cj4gKwkJdHN0X2JyayhUQ09ORiwKPiArCQkJImNwdS5tYXguYnVyc3Qgbm90IHByZXNlbnQgLS0g a2VybmVsIHJlcXVpcmVzIENPTkZJR19DRlNfQkFORFdJRFRIPXkiKTsKClRoaXMgY2hlY2sgaXMg dXNlbGVzcywgd2UgYWxyZWFkeSBoYXZlIENPTkZJR19DRlNfQkFORFdJRFRIIGluCi5uZWVkc19r Y29uZmlnLgoKPiArCWlmIChmYWNjZXNzYXQoZGlyZmQsICJjcHUuc3RhdCIsIEZfT0ssIDApICE9 IDApCj4gKwkJdHN0X2JyayhUQ09ORiwgImNwdS5zdGF0IG5vdCBwcmVzZW50Iik7Cj4gKwo+ICsJ dHN0X3JlcyhUSU5GTywgInF1b3RhPSVsbHUgdXMgIGJ1cnN0PSVsbHUgdXMgIHBlcmlvZD0lbGx1 IHVzIiwKPiArCQlRVU9UQV9VUywgQlVSU1RfVVMsIFBFUklPRF9VUyk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGNsZWFudXAodm9pZCkKPiArewo+ICsJaWYgKHdvcmtlcl9waWQgPj0gMCkKPiAr CQl3b3JrZXJfc3RvcCgpOwo+ICsKPiArCWlmIChjbWRfcGlwZVsxXSA+PSAwKSB7Cj4gKwkJU0FG RV9DTE9TRShjbWRfcGlwZVsxXSk7Cj4gKwkJY21kX3BpcGVbMV0gPSAtMTsKPiArCX0KPiArCWlm IChhY2tfcGlwZVswXSA+PSAwKSB7Cj4gKwkJU0FGRV9DTE9TRShhY2tfcGlwZVswXSk7Cj4gKwkJ YWNrX3BpcGVbMF0gPSAtMTsKPiArCX0KPiArCj4gKwlpZiAoY2dfY2hpbGQpCj4gKwkJY2dfY2hp bGQgPSB0c3RfY2dfZ3JvdXBfcm0oY2dfY2hpbGQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IHRzdF90ZXN0IHRlc3QgPSB7Cj4gKwkudGNudAkJPSBBUlJBWV9TSVpFKHRjX2Z1bmNzKSwKPiAr CS50ZXN0CQk9IHJ1bl90ZXN0LAo+ICsJLnNldHVwCQk9IHNldHVwLAo+ICsJLmNsZWFudXAJPSBj bGVhbnVwLAo+ICsJLm5lZWRzX3Jvb3QJPSAxLAo+ICsJLmZvcmtzX2NoaWxkCT0gMSwKPiArCS50 aW1lb3V0CT0gNjAsCj4gKwkudGFpbnRfY2hlY2sJPSBUU1RfVEFJTlRfVyB8IFRTVF9UQUlOVF9E LAo+ICsJLm5lZWRzX2tjb25maWdzID0gKGNvbnN0IGNoYXIgKltdKSB7Cj4gKwkJIkNPTkZJR19D RlNfQkFORFdJRFRIIiwKPiArCQlOVUxMCj4gKwl9LAo+ICsJLm5lZWRzX2Nncm91cF92ZXIgICAg PSBUU1RfQ0dfVjIsCj4gKwkubmVlZHNfY2dyb3VwX2N0cmxzICA9IChjb25zdCBjaGFyICpjb25z dCBbXSkgeyAiY3B1IiwgTlVMTCB9LAo+ICt9Owo+IC0tIAo+IDIuNTMuMAo+IAo+IAo+IC0tIAo+ IE1haWxpbmcgbGlzdCBpbmZvOiBodHRwczovL2xpc3RzLmxpbnV4Lml0L2xpc3RpbmZvL2x0cAoK LS0gCkN5cmlsIEhydWJpcwpjaHJ1YmlzQHN1c2UuY3oKCi0tIApNYWlsaW5nIGxpc3QgaW5mbzog aHR0cHM6Ly9saXN0cy5saW51eC5pdC9saXN0aW5mby9sdHAK