From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id YRuKDmJ/IWo0TjQAWB0awg (envelope-from ) for ; Thu, 04 Jun 2026 09:36:34 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=BBctBwPM; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 35CAC1E0A6; Thu, 04 Jun 2026 09:36:34 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 642BB1E062 for ; Thu, 04 Jun 2026 09:36:32 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C649A4BA543C for ; Thu, 4 Jun 2026 13:36:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C649A4BA543C Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=BBctBwPM Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) by sourceware.org (Postfix) with ESMTPS id 94C7D4BAE7E0 for ; Thu, 4 Jun 2026 13:30:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 94C7D4BAE7E0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 94C7D4BAE7E0 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780579855; cv=none; b=HxV30UiltoMLnPlEG1/CexvMbcKBKUng+QdrIkZOHxcynQX/fVMAkwxGGNa4tbCk4FszsGnKn6+eexxLpwbl0H4iQge4rO3+yZtcAi23FaJ0/nxT2fSd8srlUfXfFPIzU2gXY2/wmnzEfke6WT4HCY5C2HPPG7/Jx8pTnP2fpjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1780579855; c=relaxed/simple; bh=wMcPFS8pA8MsDJZxt/NogY5HKSJsomZ9aXWK11nw5l8=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=SiSw2N5W5xLuPN0hfoTjmo+CkK8r1HHXA6vooHyRjafBE3FjM0vnuVEcFiwE4dzzvnOCo9umYRhizz7jXoJ7QuN7nGVVxhGCQ7eqYY2T0EjDyEOEbEA3RDaiwV6+sCr/YukDQpg5a1edFLrLnjNUwaNyot6rW/Q00cfJE+1paYo= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=BBctBwPM DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 94C7D4BAE7E0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1780579850; x=1812115850; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=wMcPFS8pA8MsDJZxt/NogY5HKSJsomZ9aXWK11nw5l8=; b=BBctBwPM7JHyCuArhC5AclZwDBp9d/0YSnA8D8lGnThwZjlzKesDQ7lz /AOB+rr9bWBzXmU4QFkBwY35OJaqgXmnhSImREFS4l0cauVe6nseQ3vLy HOSRwkReVnwtfzmu2Vme+nBexbqqWknK4Pz/Hmr9H/A5mu/leFUxh5NaC TvF/+or01o1CuboHH7dwPLNKZovczh5ngctJPoqmGFDgsAnkRFtx5bD4S cNPYvFx0CCPN3JWFbsKOrvqwaPcbEEm7KYOSa+atxSifpiA4LN1e0M555 so/RFsnl21K1yMq+H3AeR/1rfiC0Eye/xFMM8l+CMRJAio82e1zOOA7po g==; X-CSE-ConnectionGUID: Kkr9+X3ZREeAgjXpu+vDlA== X-CSE-MsgGUID: BBlwDc8oSMyDCtjYgX0L2g== X-IronPort-AV: E=McAfee;i="6800,10657,11807"; a="92889369" X-IronPort-AV: E=Sophos;i="6.24,187,1774335600"; d="scan'208";a="92889369" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2026 06:30:48 -0700 X-CSE-ConnectionGUID: OAQ5JhDXTQ+z1qDi7hVwzw== X-CSE-MsgGUID: +OTUswRdS5iT0+G7X269GA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,187,1774335600"; d="scan'208";a="268229059" Received: from dut1533dg2frd.igk.intel.com (HELO localhost) ([10.211.178.246]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2026 06:30:47 -0700 From: Klaus Gerlicher To: gdb-patches@sourceware.org Subject: [PATCH v2 1/1] gdb/linespec: relax block filter to preserve distinct code paths Date: Thu, 4 Jun 2026 13:29:38 +0000 Message-Id: <20260604132938.416526-2-klaus.gerlicher@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260604132938.416526-1-klaus.gerlicher@intel.com> References: <20260604132938.416526-1-klaus.gerlicher@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org VGhlIGJsb2NrLWJhc2VkIGR1cGxpY2F0ZSBmaWx0ZXIgaW4gY3JlYXRlX3NhbHNfbGluZV9vZmZz ZXQga2VlcHMgb25seQp0aGUgZmlyc3QgaXNfc3RtdCBsaW5lIHRhYmxlIGVudHJ5IHBlciBibG9j ay4gIFRoaXMgaGV1cmlzdGljIHJlZHVjZXMKbXVsdGlwbGUgZm9yLWxvb3AgaGVhZGVyIGVudHJp ZXMgKGluaXQvdGVzdC9pbmNyZW1lbnQgb24gc2FtZSBsaW5lKSB0bwpzaW5nbGUgYnJlYWtwb2lu dCBsb2NhdGlvbnMuICBIb3dldmVyLCBpdCBpcyB0b28gYWdncmVzc2l2ZSBmb3IKdmVjdG9yaXpl ZCBsb29wcywgd2hlcmUgdGhlIGNvbXBpbGVyIGVtaXRzIHNlcGFyYXRlIGNvZGUgcmVnaW9ucyBm b3IKdGhlIHZlY3Rvcml6ZWQgYm9keSBhbmQgc2NhbGFyIHJlbWFpbmRlciwgYm90aCBvbiB0aGUg c2FtZSBzb3VyY2UgbGluZS4KVGhlIGZpbHRlciBkaXNjYXJkcyB0aGUgc2NhbGFyIHJlbWFpbmRl ciBlbnRyeSwgY2F1c2luZyBicmVha3BvaW50cyB0bwpiZSBzaWxlbnRseSBtaXNzZWQgd2hlbiBv bmx5IHRoZSBzY2FsYXIgcGF0aCBleGVjdXRlcy4KClRoZSBmaXggaW50cm9kdWNlcyByYW5nZV9o YXNfdW5jb25kaXRpb25hbF9mbG93X2NvbnRyb2wsIHdoaWNoIGFuYWx5emVzCnRoZSBpbnN0cnVj dGlvbiBzdHJlYW0gZm9yIHR3byBjb25kaXRpb25zIGluZGljYXRpbmcgZGlzdGluY3QgY29kZSBw YXRoczoKCjEuIFVuY29uZGl0aW9uYWwgZXhpdDogVGhlIGxhc3QgaW5zdHJ1Y3Rpb24gYmVmb3Jl IHRoZSBzZWNvbmQgUEMgaXMgYW4KICAgdW5jb25kaXRpb25hbCBqbXAgb3IgcmV0IChleGVjdXRp b24gY2Fubm90IGZhbGwgdGhyb3VnaCkuCgoyLiBCYWNrd2FyZCBicmFuY2g6IEFueSBpbnN0cnVj dGlvbiBpbiB0aGUgcmFuZ2UgaXMgYSByZWxhdGl2ZSBicmFuY2gKICAgdGFyZ2V0aW5nIGJlZm9y ZSB0aGUgZmlyc3QgUEMgKGxvb3AgYmFjay1lZGdlIGluZGljYXRpbmcgc2VwYXJhdGUKICAgbG9v cCBib2RpZXMpLgoKQSBuZXcgZ2RiYXJjaCBtZXRob2QgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJn ZXQgZGVjb2RlcyByZWxhdGl2ZSBicmFuY2gKdGFyZ2V0cy4gSW1wbGVtZW50ZWQgZm9yIGFtZDY0 OyBvdGhlciBhcmNoaXRlY3R1cmVzIGRlZmF1bHQgdG8KY29uc2VydmF0aXZlIGJlaGF2aW9yLCBw cmVzZXJ2aW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgpUZXN0aW5nIGNvdmVyczoKLSBmb3Jf bG9vcF9lbXB0eV9ib2R5ICgtTzApOiAxIGxvY2F0aW9uCi0gZm9yX2xvb3BfbGFyZ2VfYm9keSAo LU8wKTogMSBsb2NhdGlvbiAoZXhjZWVkcyBmb3JtZXIgc2NhbiBsaW1pdHMpCi0gZm9yX2xvb3Bf dmVjdG9yaXplZCAoLU8yKTogPj0gMiBsb2NhdGlvbnMgd2l0aCBydW50aW1lIHZlcmlmaWNhdGlv bgotIG5lc3RlZF92ZWN0b3JpemVkX2xvb3BzICgtTzIpOiA+PSAyIGxvY2F0aW9ucwotIGxvb3Bf d2l0aF9lYXJseV9icmVhayAoLU8yKTogPj0gMiBvciAxIGxvY2F0aW9uCi0gaWZlbHNlX3NlcGFy YXRlX2xpbmVzICgtTzApOiAyIGxvY2F0aW9ucyAoc2FuaXR5IGNoZWNrKQoKVGVzdGVkIHdpdGgg R0NDIDExIGFuZCBJQ1ggMjAyNS4yIG9uIHg4Nl82NC4KLS0tCiBnZGIvTkVXUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogZ2RiL2FtZDY0LXRkZXAuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU3ICsrKysKIGdkYi9hcmNoLXV0aWxzLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBnZGIvYXJjaC11dGlscy5oICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2RiL2dkYmFyY2gtZ2VuLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrCiBnZGIvZ2RiYXJjaC1nZW4uaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwogZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSAg ICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrCiBnZGIvbGluZXNwZWMuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgOTggKysrKysrLQogLi4uL2dkYi5saW5lc3BlYy9ibG9jay1m aWx0ZXItY2FzZXMuYyAgICAgICAgIHwgMTI2ICsrKysrKysrKwogLi4uL2dkYi5saW5lc3BlYy9i bG9jay1maWx0ZXItY2FzZXMuZXhwICAgICAgIHwgMjQ4ICsrKysrKysrKysrKysrKysrKwogMTAg ZmlsZXMgY2hhbmdlZCwgNTk1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2Vz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1m aWx0ZXItY2FzZXMuZXhwCgpkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCA3 YzhjZjlhZjRjMi4uZjU1YjY1MTgzNDQgMTAwNjQ0Ci0tLSBhL2dkYi9ORVdTCisrKyBiL2dkYi9O RVdTCkBAIC02NCw2ICs2NCwxNyBAQAogICBUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJlIEdEQiBj b3VsZCBmYWlsIHRvIGZpbmQgYSB0eXBlIHdoZW4gcmVseWluZwogICBvbiB0aGUgaW5kZXguICBB bnkgZXhpc3RpbmcgaW5kZXhlcyBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuCiAKKyogQnJlYWtwb2lu dCBsb2NhdGlvbiByZXNvbHV0aW9uIGhhcyBiZWVuIGltcHJvdmVkIGZvciB2ZWN0b3JpemVkIGxv b3BzLgorICBQcmV2aW91c2x5LCB3aGVuIHNldHRpbmcgYSBicmVha3BvaW50IG9uIGEgc291cmNl IGxpbmUgd2l0aCB2ZWN0b3JpemVkCisgIGNvZGUgKGF0IC1PMiB3aXRoIC1mdHJlZS12ZWN0b3Jp emUpLCBHREIncyBibG9jayBmaWx0ZXIgaGV1cmlzdGljIHdvdWxkCisgIGRpc2NhcmQgdGhlIHNj YWxhciByZW1haW5kZXIgbG9jYXRpb24sIGNhdXNpbmcgYnJlYWtwb2ludHMgdG8gYmUgbWlzc2Vk CisgIHdoZW4gb25seSB0aGUgc2NhbGFyIHBhdGggZXhlY3V0ZWQuIEdEQiBub3cgY29ycmVjdGx5 IHByZXNlcnZlcyBtdWx0aXBsZQorICBsb2NhdGlvbnMgZm9yIHZlY3Rvcml6ZWQgYW5kIHNjYWxh ciBsb29wIHBhdGhzLCBpbXByb3ZpbmcgZGVidWdnYWJpbGl0eQorICBvZiBvcHRpbWl6ZWQgY29k ZS4KKworICBVc2UgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb2ZmIiB0byBk aXNhYmxlIHRoZSBuZXcKKyAgaGV1cmlzdGljIGFuZCByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGJl aGF2aW9yIGlmIG5lZWRlZC4KKwogKiBTdXBwb3J0IGZvciBGbG9hdGluZyBQb2ludCBNb2RlIFJl Z2lzdGVyIChGUE1SKSBpbiBBQXJjaDY0LgogCiAqIFdoZW4gcnVubmluZyBvbiB0aGUgV2luZG93 cyBUZXJtaW5hbCBjb25zb2xlLCBHREIgbm93IHN1cHBvcnRzCmRpZmYgLS1naXQgYS9nZGIvYW1k NjQtdGRlcC5jIGIvZ2RiL2FtZDY0LXRkZXAuYwppbmRleCAwZDIzYWJiMzE2NC4uNzY0NTA3NzVk NDUgMTAwNzU1Ci0tLSBhL2dkYi9hbWQ2NC10ZGVwLmMKKysrIGIvZ2RiL2FtZDY0LXRkZXAuYwpA QCAtMTgyMiw2ICsxODIyLDYyIEBAIGFtZDY0X2luc25faXNfanVtcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKQogICByZXR1cm4gYW1kNjRfY2xhc3NpZnlfaW5zbl9h dCAoZ2RiYXJjaCwgYWRkciwgYW1kNjRfam1wX3ApOwogfQogCisvKiBSZXR1cm4gdGhlIHN0YXRp Y2FsbHkta25vd24gdGFyZ2V0IG9mIGEgcmVsYXRpdmUgYnJhbmNoIGluc3RydWN0aW9uCisgICAo Y29uZGl0aW9uYWwgSmNjLCBKTVAsIExPT1AsIEpDWFopLiAgUmV0dXJuIHN0ZDo6bnVsbG9wdCBm b3Igbm9uLWJyYW5jaCwKKyAgIGluZGlyZWN0IGJyYW5jaGVzLCBvciB3aGVuIG1lbW9yeSBjYW5u b3QgYmUgcmVhZC4gICovCisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4KK2FtZDY0 X2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyKQoreworICBnZGJfYnl0ZSBidWZbMTZdOworCisgIC8qIFJlYWQgZW5vdWdoIGJ5dGVzIGZv ciB0aGUgbG9uZ2VzdCByZWxhdGl2ZS1icmFuY2ggZW5jb2RpbmcuICAqLworICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5IChhZGRyLCBidWYsIHNpemVvZiAoYnVmKSkgIT0gMCkKKyAgICByZXR1cm4g c3RkOjpudWxsb3B0OworCisgIC8qIFNraXAgYSBzaW5nbGUgUkVYIHByZWZpeCBieXRlICgweDQw LTB4NEYpLiAgKi8KKyAgaW50IG9mZiA9IDA7CisgIGlmICgoYnVmWzBdICYgMHhmMCkgPT0gMHg0 MCkKKyAgICBvZmYgPSAxOworCisgIGNvbnN0IGdkYl9ieXRlIG9wYyA9IGJ1ZltvZmZdOworCisg IC8qIFNob3J0IGNvbmRpdGlvbmFsIEpjYzogN3ggY2MgICgyIGJ5dGVzLCBzaWduZWQgOC1iaXQg ZGlzcGxhY2VtZW50KS4gICovCisgIGlmICgob3BjICYgMHhmMCkgPT0gMHg3MCkKKyAgICByZXR1 cm4gYWRkciArIG9mZiArIDIgKyAoTE9OR0VTVCkgKHNpZ25lZCBjaGFyKSBidWZbb2ZmICsgMV07 CisKKyAgLyogU2hvcnQgdW5jb25kaXRpb25hbCBKTVA6IEVCIGNjICAoMiBieXRlcykuICAqLwor ICBpZiAob3BjID09IDB4ZWIpCisgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyAyICsgKExPTkdFU1Qp IChzaWduZWQgY2hhcikgYnVmW29mZiArIDFdOworCisgIC8qIExPT1AvTE9PUEUvTE9PUE5FOiBF Mi9FMS9FMCBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdCBkaXNwbGFjZW1lbnQpLiAgKi8KKyAg aWYgKChvcGMgJiAweGZkKSA9PSAweGUwKQorICAgIHJldHVybiBhZGRyICsgb2ZmICsgMiArIChM T05HRVNUKSAoc2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsKKworICAvKiBKQ1haL0pFQ1haL0pS Q1haOiBFMyBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdCBkaXNwbGFjZW1lbnQpLiAgKi8KKyAg aWYgKG9wYyA9PSAweGUzKQorICAgIHJldHVybiBhZGRyICsgb2ZmICsgMiArIChMT05HRVNUKSAo c2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsKKworICAvKiBOZWFyIGNvbmRpdGlvbmFsIEpjYzog MEYgOHggY2MgY2MgY2MgY2MgICg2IGJ5dGVzLCBzaWduZWQgMzItYml0KS4gICovCisgIGlmIChv cGMgPT0gMHgwZiAmJiAoYnVmW29mZiArIDFdICYgMHhmMCkgPT0gMHg4MCkKKyAgICB7CisgICAg ICBpbnQzMl90IGRpc3A7CisgICAgICBtZW1jcHkgKCZkaXNwLCBidWYgKyBvZmYgKyAyLCBzaXpl b2YgKGRpc3ApKTsKKyAgICAgIHJldHVybiBhZGRyICsgb2ZmICsgNiArIChMT05HRVNUKSBkaXNw OworICAgIH0KKworICAvKiBOZWFyIHVuY29uZGl0aW9uYWwgSk1QOiBFOSBjYyBjYyBjYyBjYyAg KDUgYnl0ZXMsIHNpZ25lZCAzMi1iaXQpLiAgKi8KKyAgaWYgKG9wYyA9PSAweGU5KQorICAgIHsK KyAgICAgIGludDMyX3QgZGlzcDsKKyAgICAgIG1lbWNweSAoJmRpc3AsIGJ1ZiArIG9mZiArIDEs IHNpemVvZiAoZGlzcCkpOworICAgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyA1ICsgKExPTkdFU1Qp IGRpc3A7CisgICAgfQorCisgIC8qIEluZGlyZWN0IG9yIGZhciBicmFuY2hlczogdGFyZ2V0IGNh bm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuICAqLworICByZXR1cm4gc3RkOjpudWxsb3B0 OworfQorCiAvKiBGaXggdXAgdGhlIHN0YXRlIG9mIHJlZ2lzdGVycyBhbmQgbWVtb3J5IGFmdGVy IGhhdmluZyBzaW5nbGUtc3RlcHBlZAogICAgYSBkaXNwbGFjZWQgaW5zdHJ1Y3Rpb24uICAqLwog CkBAIC0zNjQzLDYgKzM2OTksNyBAQCBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5m byBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgc2V0X2dkYmFyY2hfaW5zbl9pc19j YWxsIChnZGJhcmNoLCBhbWQ2NF9pbnNuX2lzX2NhbGwpOwogICBzZXRfZ2RiYXJjaF9pbnNuX2lz X3JldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9pc19yZXQpOwogICBzZXRfZ2RiYXJjaF9pbnNuX2lz X2p1bXAgKGdkYmFyY2gsIGFtZDY0X2luc25faXNfanVtcCk7CisgIHNldF9nZGJhcmNoX2luc25f YnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9icmFuY2hfdGFyZ2V0KTsKIAogICBz ZXRfZ2RiYXJjaF9pbl9pbmRpcmVjdF9icmFuY2hfdGh1bmsgKGdkYmFyY2gsCiAJCQkJCWFtZDY0 X2luX2luZGlyZWN0X2JyYW5jaF90aHVuayk7CmRpZmYgLS1naXQgYS9nZGIvYXJjaC11dGlscy5j IGIvZ2RiL2FyY2gtdXRpbHMuYwppbmRleCA1ZTE1ZmE1YjQzNC4uYWFhZDQxZWUzNzYgMTAwNjQ0 Ci0tLSBhL2dkYi9hcmNoLXV0aWxzLmMKKysrIGIvZ2RiL2FyY2gtdXRpbHMuYwpAQCAtNDUsNiAr NDUsOCBAQAogCiAjaW5jbHVkZSAiZGlzLWFzbS5oIgogCisjaW5jbHVkZSA8b3B0aW9uYWw+CisK IGJvb2wKIGRlZmF1bHRfZGlzcGxhY2VkX3N0ZXBfaHdfc2luZ2xlc3RlcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCiB7CkBAIC05MjMsNiArOTI1LDE0IEBAIGRlZmF1bHRfaW5zbl9pc19qdW1w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpCiAKIC8qICBTZWUgYXJj aC11dGlscy5oLiAgKi8KIAorc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+CitkZWZhdWx0X2luc25f YnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKQor eworICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisvKiAgU2VlIGFyY2gtdXRpbHMuaC4gICov CisKIGJvb2wKIGRlZmF1bHRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAJCQkJICAgQ09SRV9BRERSIGFkZHJlc3MpCmRpZmYgLS1naXQgYS9nZGIv YXJjaC11dGlscy5oIGIvZ2RiL2FyY2gtdXRpbHMuaAppbmRleCAwNjkwMjA1MDA0My4uNDZkOWQ4 OWU2NjggMTAwNjQ0Ci0tLSBhL2dkYi9hcmNoLXV0aWxzLmgKKysrIGIvZ2RiL2FyY2gtdXRpbHMu aApAQCAtMzI3LDYgKzMyNyw3IEBAIGV4dGVybiBib29sIGRlZmF1bHRfcmV0dXJuX2luX2ZpcnN0 X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqLAogZXh0ZXJuIGJvb2wgZGVmYXVsdF9p bnNuX2lzX2NhbGwgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7CiBleHRlcm4gYm9vbCBk ZWZhdWx0X2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIpOwogZXh0ZXJu IGJvb2wgZGVmYXVsdF9pbnNuX2lzX2p1bXAgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7 CitleHRlcm4gc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IGRlZmF1bHRfaW5zbl9icmFuY2hfdGFy Z2V0IChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIpOwogCiAvKiBEZWZhdWx0IGltcGxlbWVu dGF0aW9uIG9mIGdkYmFyY2hfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcC4gICovCiBleHRlcm4g Ym9vbCBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmMgYi9nZGIvZ2RiYXJjaC1nZW4u YwppbmRleCBmNDI0ZmEyYTg2ZS4uYWUzYjIwZjA0ZTAgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJhcmNo LWdlbi5jCisrKyBiL2dkYi9nZGJhcmNoLWdlbi5jCkBAIC0yMzQsNiArMjM0LDcgQEAgc3RydWN0 IGdkYmFyY2gKICAgZ2RiYXJjaF9pbnNuX2lzX2NhbGxfZnR5cGUgKmluc25faXNfY2FsbCA9IGRl ZmF1bHRfaW5zbl9pc19jYWxsOwogICBnZGJhcmNoX2luc25faXNfcmV0X2Z0eXBlICppbnNuX2lz X3JldCA9IGRlZmF1bHRfaW5zbl9pc19yZXQ7CiAgIGdkYmFyY2hfaW5zbl9pc19qdW1wX2Z0eXBl ICppbnNuX2lzX2p1bXAgPSBkZWZhdWx0X2luc25faXNfanVtcDsKKyAgZ2RiYXJjaF9pbnNuX2Jy YW5jaF90YXJnZXRfZnR5cGUgKmluc25fYnJhbmNoX3RhcmdldCA9IGRlZmF1bHRfaW5zbl9icmFu Y2hfdGFyZ2V0OwogICBnZGJhcmNoX3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3BfZnR5cGUgKnBy b2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgPSBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJl X3A7CiAgIGdkYmFyY2hfYXV4dl9wYXJzZV9mdHlwZSAqYXV4dl9wYXJzZSA9IG51bGxwdHI7CiAg IGdkYmFyY2hfcHJpbnRfYXV4dl9lbnRyeV9mdHlwZSAqcHJpbnRfYXV4dl9lbnRyeSA9IGRlZmF1 bHRfcHJpbnRfYXV4dl9lbnRyeTsKQEAgLTQ5NCw2ICs0OTUsNyBAQCB2ZXJpZnlfZ2RiYXJjaCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCiAgIC8qIFNraXAgdmVyaWZ5IG9mIGluc25faXNfY2Fs bCwgaW52YWxpZF9wID09IDAuICAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNuX2lzX3JldCwg aW52YWxpZF9wID09IDAuICAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNuX2lzX2p1bXAsIGlu dmFsaWRfcCA9PSAwLiAgKi8KKyAgLyogU2tpcCB2ZXJpZnkgb2YgaW5zbl9icmFuY2hfdGFyZ2V0 LCBpbnZhbGlkX3AgPT0gMC4gICovCiAgIC8qIFNraXAgdmVyaWZ5IG9mIHByb2dyYW1fYnJlYWtw b2ludF9oZXJlX3AsIGludmFsaWRfcCA9PSAwLiAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2YgYXV4 dl9wYXJzZSwgaGFzIHByZWRpY2F0ZS4gICovCiAgIC8qIFNraXAgdmVyaWZ5IG9mIHByaW50X2F1 eHZfZW50cnksIGludmFsaWRfcCA9PSAwLiAgKi8KQEAgLTEyNzYsNiArMTI3OCw5IEBAIGdkYmFy Y2hfZHVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB1aV9maWxlICpmaWxlKQog ICBnZGJfcHJpbnRmIChmaWxlLAogCSAgICAgICJnZGJhcmNoX2R1bXA6IGluc25faXNfanVtcCA9 IDwlcz5cbiIsCiAJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+aW5zbl9p c19qdW1wKSk7CisgIGdkYl9wcmludGYgKGZpbGUsCisJICAgICAgImdkYmFyY2hfZHVtcDogaW5z bl9icmFuY2hfdGFyZ2V0ID0gPCVzPlxuIiwKKwkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5n IChnZGJhcmNoLT5pbnNuX2JyYW5jaF90YXJnZXQpKTsKICAgZ2RiX3ByaW50ZiAoZmlsZSwKIAkg ICAgICAiZ2RiYXJjaF9kdW1wOiBwcm9ncmFtX2JyZWFrcG9pbnRfaGVyZV9wID0gPCVzPlxuIiwK IAkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5wcm9ncmFtX2JyZWFrcG9p bnRfaGVyZV9wKSk7CkBAIC00OTUwLDYgKzQ5NTUsMjMgQEAgc2V0X2dkYmFyY2hfaW5zbl9pc19q dW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgZ2RiYXJjaC0+aW5zbl9pc19qdW1wID0g aW5zbl9pc19qdW1wOwogfQogCitzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4KK2dkYmFyY2hfaW5z bl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIp Cit7CisgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7CisgIGdkYl9hc3NlcnQgKGdk YmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCAhPSBudWxscHRyKTsKKyAgaWYgKGdkYmFyY2hfZGVi dWcgPj0gMikKKyAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9pbnNuX2JyYW5j aF90YXJnZXQgY2FsbGVkXG4iKTsKKyAgcmV0dXJuIGdkYmFyY2gtPmluc25fYnJhbmNoX3Rhcmdl dCAoZ2RiYXJjaCwgYWRkcik7Cit9CisKK3ZvaWQKK3NldF9nZGJhcmNoX2luc25fYnJhbmNoX3Rh cmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJCQkJZ2RiYXJjaF9pbnNuX2JyYW5jaF90 YXJnZXRfZnR5cGUgaW5zbl9icmFuY2hfdGFyZ2V0KQoreworICBnZGJhcmNoLT5pbnNuX2JyYW5j aF90YXJnZXQgPSBpbnNuX2JyYW5jaF90YXJnZXQ7Cit9CisKIGJvb2wKIGdkYmFyY2hfcHJvZ3Jh bV9icmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBh ZGRyZXNzKQogewpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmggYi9nZGIvZ2RiYXJjaC1n ZW4uaAppbmRleCA2NzhiMzA4ZmJhNS4uOThjMjgzNzEwNmUgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJh cmNoLWdlbi5oCisrKyBiL2dkYi9nZGJhcmNoLWdlbi5oCkBAIC0xNTkyLDYgKzE1OTIsMTYgQEAg dXNpbmcgZ2RiYXJjaF9pbnNuX2lzX2p1bXBfZnR5cGUgPSBib29sIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIGFkZHIKIGJvb2wgZ2RiYXJjaF9pbnNuX2lzX2p1bXAgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7CiB2b2lkIHNldF9nZGJhcmNoX2lu c25faXNfanVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfaW5zbl9pc19qdW1w X2Z0eXBlICppbnNuX2lzX2p1bXApOwogCisvKiBGb3IgYSByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1 Y3Rpb24gYXQgQUREUiAoY29uZGl0aW9uYWwgb3IKKyAgIHVuY29uZGl0aW9uYWwpLCByZXR1cm4g dGhlIHN0YXRpY2FsbHkta25vd24gYnJhbmNoIHRhcmdldCBhZGRyZXNzLgorICAgUmV0dXJuIHN0 ZDo6bnVsbG9wdCBmb3Igbm9uLWJyYW5jaCBpbnN0cnVjdGlvbnMsIGluZGlyZWN0IGJyYW5jaGVz LAorICAgb3Igd2hlbiByZWFkaW5nIG1lbW9yeSBmYWlscy4gIFRoaXMgaXMgdXNlZCB0byBkZXRl Y3QgYmFja3dhcmQKKyAgIGxvb3AgYmFjay1lZGdlcyBkdXJpbmcgRFdBUkYgbGluZS10YWJsZSBh bmFseXNpcy4gKi8KKwordXNpbmcgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXRfZnR5cGUgPSBz dGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFIgYWRkcik7CitzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gZ2RiYXJjaF9pbnNuX2JyYW5jaF90 YXJnZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7Cit2b2lkIHNl dF9nZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdk YmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0X2Z0eXBlICppbnNuX2JyYW5jaF90YXJnZXQpOworCiAv KiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSdzIGEgcHJvZ3JhbS9wZXJtYW5lbnQgYnJlYWtwb2ludCBw bGFudGVkIGluCiAgICBtZW1vcnkgYXQgQUREUkVTUywgcmV0dXJuIGZhbHNlIG90aGVyd2lzZS4g Ki8KIApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSBiL2dkYi9nZGJhcmNo X2NvbXBvbmVudHMucHkKaW5kZXggYjkzMDRkMzAzNmQuLjk5ZjViM2ZlMGJmIDEwMDY0NAotLS0g YS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5CisrKyBiL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMu cHkKQEAgLTI1MjQsNiArMjUyNCwyMSBAQCBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24g YXQgQUREUiBpcyBhIGp1bXA7IGZhbHNlIG90aGVyd2lzZS4KICAgICBpbnZhbGlkPUZhbHNlLAog KQogCitNZXRob2QoCisgICAgY29tbWVudD0iIiIKK0ZvciBhIHJlbGF0aXZlIGJyYW5jaCBpbnN0 cnVjdGlvbiBhdCBBRERSIChjb25kaXRpb25hbCBvcgordW5jb25kaXRpb25hbCksIHJldHVybiB0 aGUgc3RhdGljYWxseS1rbm93biBicmFuY2ggdGFyZ2V0IGFkZHJlc3MuCitSZXR1cm4gc3RkOjpu dWxsb3B0IGZvciBub24tYnJhbmNoIGluc3RydWN0aW9ucywgaW5kaXJlY3QgYnJhbmNoZXMsCitv ciB3aGVuIHJlYWRpbmcgbWVtb3J5IGZhaWxzLiAgVGhpcyBpcyB1c2VkIHRvIGRldGVjdCBiYWNr d2FyZAorbG9vcCBiYWNrLWVkZ2VzIGR1cmluZyBEV0FSRiBsaW5lLXRhYmxlIGFuYWx5c2lzLgor IiIiLAorICAgIHR5cGU9InN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiIsCisgICAgbmFtZT0iaW5z bl9icmFuY2hfdGFyZ2V0IiwKKyAgICBwYXJhbXM9WygiQ09SRV9BRERSIiwgImFkZHIiKV0sCisg ICAgcHJlZGVmYXVsdD0iZGVmYXVsdF9pbnNuX2JyYW5jaF90YXJnZXQiLAorICAgIGludmFsaWQ9 RmFsc2UsCispCisKIE1ldGhvZCgKICAgICBjb21tZW50PSIiIgogUmV0dXJuIHRydWUgaWYgdGhl cmUncyBhIHByb2dyYW0vcGVybWFuZW50IGJyZWFrcG9pbnQgcGxhbnRlZCBpbgpkaWZmIC0tZ2l0 IGEvZ2RiL2xpbmVzcGVjLmMgYi9nZGIvbGluZXNwZWMuYwppbmRleCA1MzcxZDg0MjZhZS4uYTlh MWYwYzc1MjcgMTAwNjQ0Ci0tLSBhL2dkYi9saW5lc3BlYy5jCisrKyBiL2dkYi9saW5lc3BlYy5j CkBAIC00NCw5ICs0NCwxMiBAQAogI2luY2x1ZGUgImdkYnN1cHBvcnQvZnVuY3Rpb24tdmlldy5o IgogI2luY2x1ZGUgImdkYnN1cHBvcnQvZGVmLXZlY3Rvci5oIgogI2luY2x1ZGUgPGFsZ29yaXRo bT4KKyNpbmNsdWRlICJkaXNhc20uaCIKKyNpbmNsdWRlICJnZGJhcmNoLmgiCiAjaW5jbHVkZSAi aW5mZXJpb3IuaCIKICNpbmNsdWRlICJnZGJzdXBwb3J0L3Vub3JkZXJlZF9zZXQuaCIKICNpbmNs dWRlICJjbGkvY2xpLXN0eWxlLmgiCisjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCiAKIC8qIEFu IGVudW1lcmF0aW9uIG9mIHRoZSB2YXJpb3VzIHRoaW5ncyBhIHVzZXIgbWlnaHQgYXR0ZW1wdCB0 bwogICAgY29tcGxldGUgZm9yIGEgbGluZXNwZWMgbG9jYXRpb24uICAqLwpAQCAtNDMyLDYgKzQz NSwxMSBAQCBzdGF0aWMgYm9vbCBjb21wYXJlX21zeW1ib2xzIChjb25zdCBib3VuZF9taW5pbWFs X3N5bWJvbCAmYSwKICAgIHByZXZpb3VzIHBhcnNlci4gICovCiBzdGF0aWMgY29uc3QgY2hhciBs aW5lc3BlY19xdW90ZV9jaGFyYWN0ZXJzW10gPSAiXCJcJyI7CiAKKy8qIENvbnRyb2wgd2hldGhl ciB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBpcyBlbmFibGVkLgorICAgVGhp cyBoZXVyaXN0aWMgaW1wcm92ZXMgYnJlYWtwb2ludCBsb2NhdGlvbiByZXNvbHV0aW9uIGZvciB2 ZWN0b3JpemVkCisgICBsb29wcyBidXQgY2FuIGJlIGRpc2FibGVkIGlmIGl0IGNhdXNlcyB1bmV4 cGVjdGVkIGJlaGF2aW9yLiAgKi8KK3N0YXRpYyBib29sIGRlYnVnX2xpbmVzcGVjX2V4dGVuZGVk X2Jsb2NrX2ZpbHRlciA9IHRydWU7CisKIC8qIExleGVyIGZ1bmN0aW9ucy4gICovCiAKIC8qIExl eCBhIG51bWJlciBmcm9tIHRoZSBpbnB1dCBpbiBQQVJTRVIuICBUaGlzIG9ubHkgc3VwcG9ydHMK QEAgLTE5ODYsNiArMTk5NCw0OCBAQCBjYW5vbmljYWxpemVfbGluZXNwZWMgKHN0cnVjdCBsaW5l c3BlY19zdGF0ZSAqc3RhdGUsIGNvbnN0IGxpbmVzcGVjICpscykKICAgICBleHBsaWNpdF9sb2Mt PnNldF9zdHJpbmcgKGV4cGxpY2l0X2xvYy0+dG9fbGluZXNwZWMgKCkpOwogfQogCisvKiBSZXR1 cm4gdHJ1ZSBpZiBQQ19UTyBpcyB1bnJlYWNoYWJsZSBieSBmYWxsLXRocm91Z2ggZnJvbSBQQ19G Uk9NLgorICAgVHdvIGNvbmRpdGlvbnMgYXJlIHN1ZmZpY2llbnQ6ICgxKSBhbnkgcmV0IGluIFtQ Q19GUk9NLCBQQ19UTyksIG9yCisgICAoMikgdW5jb25kaXRpb25hbCBqdW1wL3JldCBpbW1lZGlh dGVseSBiZWZvcmUgUENfVE8uICBPbmx5IHRoZSBsYXN0CisgICBpbnN0cnVjdGlvbiBiZWZvcmUg UENfVE8gbWF0dGVyczsgbWlkLXJhbmdlIGJyYW5jaGVzIGFyZSBpZ25vcmVkIHRvCisgICBwcmVz ZXJ2ZSBmb3ItbG9vcCBkZWR1cGxpY2F0aW9uLiAgKi8KKworc3RhdGljIGJvb2wKK3JhbmdlX2hh c191bmNvbmRpdGlvbmFsX2Zsb3dfY29udHJvbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJ CQkJICAgICAgQ09SRV9BRERSIHBjX2Zyb20sIENPUkVfQUREUiBwY190bykKK3sKKyAgaWYgKHBj X2Zyb20gPj0gcGNfdG8pCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8qIFJldHVybiB0cnVlIGlm OiBsYXN0IGluc3RydWN0aW9uIGJlZm9yZSBQQ19UTyBpcyB1bmNvbmRpdGlvbmFsCisgICAgIGpt cC9yZXQsIG9yIGFueSBpbnN0cnVjdGlvbiBpbiByYW5nZSBpcyBhIGJhY2t3YXJkIGJyYW5jaAor ICAgICAoaW5kaWNhdGluZyBzZXBhcmF0ZSBsb29wIGJvZGllcykuICAqLworCisgIENPUkVfQURE UiBwYyA9IHBjX2Zyb207CisKKyAgd2hpbGUgKHBjIDwgcGNfdG8pCisgICAgeworICAgICAgaW50 IGxlbiA9IGdkYl9pbnNuX2xlbmd0aCAoZ2RiYXJjaCwgcGMpOworICAgICAgaWYgKGxlbiA8PSAw KQorCXJldHVybiBmYWxzZTsKKworICAgICAgLyogQ2hlY2sgZm9yIGJhY2t3YXJkIGJyYW5jaCAo bG9vcCBiYWNrLWVkZ2UpLiAgKi8KKyAgICAgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiB0YXJn ZXQgPSBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoZ2RiYXJjaCwKKwkJCQkJCQkJICAgIHBj KTsKKyAgICAgIGlmICh0YXJnZXQuaGFzX3ZhbHVlKCkgJiYgdGFyZ2V0LnZhbHVlKCkgPCBwY19m cm9tKQorCXJldHVybiB0cnVlOworCisgICAgICAvKiBJcyB0aGlzIHRoZSBsYXN0IGluc3RydWN0 aW9uIGJlZm9yZSBQQ19UTz8gICovCisgICAgICBpZiAocGMgKyBsZW4gPj0gcGNfdG8pCisJcmV0 dXJuIGdkYmFyY2hfaW5zbl9pc19qdW1wIChnZGJhcmNoLCBwYykKKwkgICAgICAgfHwgZ2RiYXJj aF9pbnNuX2lzX3JldCAoZ2RiYXJjaCwgcGMpOworCisgICAgICBwYyArPSBsZW47CisgICAgfQor CisgIHJldHVybiBmYWxzZTsKK30KKwogLyogR2l2ZW4gYSBsaW5lIG9mZnNldCBpbiBMUywgY29u c3RydWN0IHRoZSByZWxldmFudCBTQUxzLiAgKi8KIAogc3RhdGljIHN0ZDo6dmVjdG9yPHN5bXRh Yl9hbmRfbGluZT4KQEAgLTIwODQsMTMgKzIxMzQsMzggQEAgY3JlYXRlX3NhbHNfbGluZV9vZmZz ZXQgKHN0cnVjdCBsaW5lc3BlY19zdGF0ZSAqc2VsZiwKIAogICAgICAgZm9yIChpID0gMDsgaSA8 IGludGVybWVkaWF0ZV9yZXN1bHRzLnNpemUgKCk7ICsraSkKIAl7Ci0JICBpZiAoYmxvY2tzW2ld ICE9IE5VTEwpCisJICBpZiAoYmxvY2tzW2ldICE9IE5VTEwgJiYgZmlsdGVyW2ldKQogCSAgICBm b3IgKGogPSBpICsgMTsgaiA8IGludGVybWVkaWF0ZV9yZXN1bHRzLnNpemUgKCk7ICsraikKIAkg ICAgICB7Ci0JCWlmIChibG9ja3Nbal0gPT0gYmxvY2tzW2ldKQorCQlpZiAoYmxvY2tzW2pdID09 IGJsb2Nrc1tpXSAmJiBmaWx0ZXJbal0pCiAJCSAgeworCQkgICAgY29uc3Qgc3ltdGFiX2FuZF9s aW5lICZzYWxfaSA9IGludGVybWVkaWF0ZV9yZXN1bHRzW2ldOworCQkgICAgY29uc3Qgc3ltdGFi X2FuZF9saW5lICZzYWxfaiA9IGludGVybWVkaWF0ZV9yZXN1bHRzW2pdOworCQkgICAgCisJCSAg ICBhdXRvIFtwY19sbywgcGNfaGldID0gc3RkOjptaW5tYXggKHNhbF9pLnBjLCBzYWxfai5wYyk7 CisKKwkJICAgIC8qIFdpdGhvdXQgc3ltdGFiIGluZm8sIGRvbid0IGZpbHRlciDigJQgd2UgY2Fu J3QgcmVsaWFibHkKKwkJICAgICAgIGRldGVybWluZSBpZiB0aGVzZSBhcmUgZGlzdGluY3QgY29k ZSBwYXRocy4gICovCisJCSAgICBpZiAoc2FsX2kuc3ltdGFiID09IG51bGxwdHIgfHwgc2FsX2ou c3ltdGFiID09IG51bGxwdHIpCisJCSAgICAgIGNvbnRpbnVlOworCisJCSAgICBpZiAoc2FsX2ku c3ltdGFiICE9IHNhbF9qLnN5bXRhYikKKwkJICAgICAgY29udGludWU7CisKKwkJICAgIC8qIENo ZWNrIGZvciB1bmNvbmRpdGlvbmFsIGZsb3cgY29udHJvbCBpbiB0aGUgcmFuZ2UKKwkJICAgICAg IChleHRlbmRlZCBoZXVyaXN0aWM7IGNhbiBiZSBkaXNhYmxlZCkuICBTa2lwIGlmIHRoZQorCQkg ICAgICAgdGFyZ2V0IGlzIG5vdCBydW5uaW5nIOKAlCBjb2RlIG1lbW9yeSBtYXkgbm90IGJlCisJ CSAgICAgICByZWFkYWJsZSBiZWZvcmUgcmVsb2NhdGlvbi4gICovCisJCSAgICBvYmpmaWxlICpv ZmlsZSA9IHNhbF9pLnN5bXRhYi0+Y29tcHVuaXQgKCktPm9iamZpbGUgKCk7CisJCSAgICBnZGJh cmNoICpnZGJhcmNoID0gb2ZpbGUtPmFyY2ggKCk7CisKKwkJICAgIGlmIChkZWJ1Z19saW5lc3Bl Y19leHRlbmRlZF9ibG9ja19maWx0ZXIKKwkJICAgICAgICAmJiB0YXJnZXRfaGFzX2V4ZWN1dGlv biAoKQorCQkgICAgICAgICYmIHJhbmdlX2hhc191bmNvbmRpdGlvbmFsX2Zsb3dfY29udHJvbCAo Z2RiYXJjaCwKKwkJCQkJCQkgICAgICAgIHBjX2xvLCBwY19oaSkpCisJCSAgICAgIGNvbnRpbnVl OworCiAJCSAgICBmaWx0ZXJbal0gPSAwOwotCQkgICAgYnJlYWs7CiAJCSAgfQogCSAgICAgIH0K IAl9CkBAIC00MzQyLDMgKzQ0MTcsMjAgQEAgZ2V0X2dkYl9saW5lc3BlY19wYXJzZXJfcXVvdGVf Y2hhcmFjdGVycyAodm9pZCkKIHsKICAgcmV0dXJuIGxpbmVzcGVjX3F1b3RlX2NoYXJhY3RlcnM7 CiB9CisKKy8qIFJlZ2lzdGVyIGxpbmVzcGVjIGRlYnVnZ2luZyBjb21tYW5kcy4gICovCisKK0lO SVRfR0RCX0ZJTEUgKGxpbmVzcGVjKQoreworICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIsCisJCQkgICBjbGFzc19zdXBwb3J0LAorCQkJ ICAgJmRlYnVnX2xpbmVzcGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciwgXygiXAorU2V0IHdoZXRo ZXIgdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgZW5hYmxlZC4iKSwgXygi XAorU2hvdyB3aGV0aGVyIHRoZSBleHRlbmRlZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIGVu YWJsZWQuIiksIF8oIlwKK1RoZSBleHRlbmRlZCBoZXVyaXN0aWMgaW1wcm92ZXMgYnJlYWtwb2lu dCBsb2NhdGlvbiByZXNvbHV0aW9uIGZvclxuXAordmVjdG9yaXplZCBsb29wcyBhdCAtTzIuIFdo ZW4gb2ZmLCBicmVha3BvaW50cyB1c2Ugb25seSB0aGUgb3JpZ2luYWxcblwKK2hldXJpc3RpYywg d2hpY2ggbWF5IG1pc3MgbG9jYXRpb25zIGluIHZlY3Rvcml6ZWQgY29kZS5cblwKK0RlZmF1bHQg aXMgb24uIiksCisJCQkgICBudWxscHRyLCBudWxscHRyLAorCQkJICAgJnNldGxpc3QsICZzaG93 bGlzdCk7Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1m aWx0ZXItY2FzZXMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Jsb2NrLWZpbHRlci1j YXNlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44Y2Y4MzRlOTVm NAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Jsb2NrLWZp bHRlci1jYXNlcy5jCkBAIC0wLDAgKzEsMTI2IEBACisvKiBUZXN0IGNhc2VzIGZvciB0aGUgYmxv Y2stZmlsdGVyIGhldXJpc3RpYyBpbiBjcmVhdGVfc2Fsc19saW5lX29mZnNldC4KKworICAgQ29w eXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworICAg T25lIGZ1bmN0aW9uIHBlciB0ZXN0ZWQgcGF0dGVybi4gIFRoZSBhY2NvbXBhbnlpbmcgLmV4cCBm aWxlIHZlcmlmaWVzCisgICB0aGUgYnJlYWtwb2ludCBsb2NhdGlvbiBjb3VudCBmb3IgZWFjaCBw YXR0ZXJuIGFuZCwgd2hlcmUgdmVjdG9yaXNhdGlvbgorICAgaXMgcHJlc2VudCwgY29uZmlybXMg dGhhdCBib3RoIHRoZSB2ZWN0b3JpemVkIGFuZCBzY2FsYXItcmVtYWluZGVyIHBhdGhzCisgICBh cmUgcmVhY2hhYmxlIGF0IHJ1bnRpbWUuCisKKyAgIGFyZ2MgPiAxICAtPiAgZm9yX2xvb3BfdmVj dG9yaXplZCBjYWxsZWQgd2l0aCBuPTEwMjQgICh2ZWN0b3JpemVkIHBhdGgpCisgICBhcmdjID09 IDEgLT4gIGZvcl9sb29wX3ZlY3Rvcml6ZWQgY2FsbGVkIHdpdGggbj0zICAgICAoc2NhbGFyIHBh dGggb25seSkgICovCisKK3ZvbGF0aWxlIGludCBzaW5rOworCisvKiBmb3ItbG9vcCB3aXRoIGVt cHR5IGJvZHkgKC1PMCkuICBFeHBlY3RlZDogMSBsb2NhdGlvbi4gICovCisKK3ZvaWQgX19hdHRy aWJ1dGVfXyAoKG5vaW5saW5lKSkKK2Zvcl9sb29wX2VtcHR5X2JvZHkgKGludCBuKQoreworICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykge30gIC8qIGVtcHR5LWZvci1saW5lICovCit9CisK Ky8qIGZvci1sb29wIHdpdGggbGFyZ2UgYm9keSAoLU8wKS4gIEV4cGVjdGVkOiAxIGxvY2F0aW9u LiAgKi8KKwordm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorZm9yX2xvb3BfbGFyZ2Vf Ym9keSAodm9sYXRpbGUgaW50ICphLCB2b2xhdGlsZSBpbnQgKmIsIHZvbGF0aWxlIGludCAqYywK KwkJICAgICBpbnQgbikKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsgIC8qIGxh cmdlLWJvZHktZm9yLWxpbmUgKi8KKyAgICBzaW5rID0gYVtpXSAqIDMgKyBiW2ldOworICAgIHNp bmsgPSBzaW5rIF4gKHNpbmsgPj4gNSk7CisgICAgc2luayArPSBjW2ldICogNyAtIGFbaV07Cisg ICAgc2luayA9IChzaW5rIDw8IDMpIHwgKHNpbmsgPj4gMjkpOworICAgIHNpbmsgKz0gYVtpXSAr IGJbaV0gKyBjW2ldOworICAgIHNpbmsgPSBzaW5rICogc2luayArIGFbaV07CisgICAgc2luayBe PSBiW2ldICogY1tpXTsKKyAgICBzaW5rICs9IChhW2ldIHwgYltpXSkgJiBjW2ldOworICAgIHNp bmsgPSBzaW5rIC0gYVtpXSAqIGJbaV07CisgICAgc2luayArPSBjW2ldIF4gKGFbaV0gKyBiW2ld KTsKKyAgICBzaW5rICs9IGFbaV0gKiA1IC0gYltpXSAqIDM7CisgICAgc2luayBePSAoc2luayA8 PCA3KSB8IChzaW5rID4+IDI1KTsKKyAgICBzaW5rICs9IGNbaV0gKiBjW2ldICsgYVtpXTsKKyAg ICBzaW5rID0gc2luayAvIChhW2ldICsgMSk7CisgICAgc2luayArPSBiW2ldICogYltpXSAtIGNb aV07CisgICAgc2luayBePSBhW2ldIF4gYltpXSBeIGNbaV07CisgICAgc2luayArPSAoYVtpXSAr IGJbaV0pICogKGJbaV0gKyBjW2ldKTsKKyAgICBzaW5rID0gKHNpbmsgPj4gMykgKyBhW2ldOwor ICAgIHNpbmsgKz0gY1tpXSAqIChhW2ldIC0gYltpXSk7CisgICAgc2luayBePSBzaW5rID4+IDE7 CisgIH0KK30KKworLyogVmVjdG9yaXplZCBmb3ItbG9vcCAoLU8yKS4gIEV4cGVjdGVkOiA+PSAy IGxvY2F0aW9ucy4gICovCisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKK2Zvcl9s b29wX3ZlY3Rvcml6ZWQgKGludCAqYXJyLCBpbnQgbikKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyBpKyspCisgICAgYXJyW2ldID0gaSAqIDM7ICAvKiB2ZWMtbG9vcC1saW5lICovCit9CisK Ky8qIE5lc3RlZCB2ZWN0b3JpemVkIGZvci1sb29wcyAoLU8yKS4gIEV4cGVjdGVkOiA+PSAyIGxv Y2F0aW9ucy4gICovCisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKK25lc3RlZF92 ZWN0b3JpemVkX2xvb3BzIChpbnQgKmFyciwgaW50IG4pCit7CisgIGZvciAoaW50IGkgPSAwOyBp IDwgbjsgaSsrKQorICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKQorICAgICAgYXJyW2kg KiBuICsgal0gPSBpICogajsgIC8qIG5lc3RlZC12ZWMtbGluZSAqLworfQorCisvKiBGb3ItbG9v cCB3aXRoIGVhcmx5IGJyZWFrICgtTzIpLiAgRXhwZWN0ZWQ6ID49IDIgb3IgMSBsb2NhdGlvbi4g ICovCisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKK2xvb3Bfd2l0aF9lYXJseV9i cmVhayAoaW50ICphcnIsIGludCBuLCBpbnQgdGFyZ2V0KQoreworICBmb3IgKGludCBpID0gMDsg aSA8IG47IGkrKykgeworICAgIGFycltpXSA9IGkgKiAyOyAgLyogYnJlYWstbG9vcC1saW5lICov CisgICAgaWYgKGFycltpXSA9PSB0YXJnZXQpCisgICAgICBicmVhazsKKyAgfQorfQorCisvKiBJ Zi1lbHNlIHdpdGggYm90aCBicmFuY2hlcyBvbiBzYW1lIGxpbmUgKC1PMCkuICBFeHBlY3RlZDog MiBsb2NhdGlvbnMuICAqLworCit2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCitpZmVs c2Vfc2VwYXJhdGVfbGluZXMgKGludCB4LCBpbnQgKnJlc3VsdCkKK3sKKyAgaWYgKHggPiAwKQor ICAgICpyZXN1bHQgPSB4ICogMjsgIGVsc2UgKnJlc3VsdCA9IC14OyAgLyogaWZlbHNlLWxpbmUg Ki8KK30KKworCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIGludCBh cnJbMTAyNF07CisgIHZvbGF0aWxlIGludCBhWzRdID0gezEsIDIsIDMsIDR9OworICB2b2xhdGls ZSBpbnQgYls0XSA9IHs0LCAzLCAyLCAxfTsKKyAgdm9sYXRpbGUgaW50IGNbNF0gPSB7MSwgMSwg MSwgMX07CisgIGludCByZXN1bHQgPSAwOworCisgIGZvcl9sb29wX2VtcHR5X2JvZHkgKDQpOwor ICBmb3JfbG9vcF9sYXJnZV9ib2R5IChhLCBiLCBjLCA0KTsKKyAgZm9yX2xvb3BfdmVjdG9yaXpl ZCAoYXJyLCBhcmdjID4gMSA/IDEwMjQgOiAzKTsKKyAgbmVzdGVkX3ZlY3Rvcml6ZWRfbG9vcHMg KGFyciwgYXJnYyA+IDEgPyAzMiA6IDMpOworICBsb29wX3dpdGhfZWFybHlfYnJlYWsgKGFyciwg YXJnYyA+IDEgPyAxMDI0IDogMywgNDIpOworICBpZmVsc2Vfc2VwYXJhdGVfbGluZXMgKGFyZ2Mg PiAxID8gMTAgOiAtNSwgJnJlc3VsdCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmV4cApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmE0Y2U1MzE1YzYKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuZXhwCkBAIC0w LDAgKzEsMjQ4IEBACisjIENvcHlyaWdodCAoQykgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBWZXJpZnkgdGhlIGJsb2NrLWZpbHRl ciBoZXVyaXN0aWMgaW4gY3JlYXRlX3NhbHNfbGluZV9vZmZzZXQgYWdhaW5zdAorIyBrbm93biBw YXR0ZXJucy4gIFRoZSBjb21waWxlciBpcyBzZWxlY3RlZCBieSB0aGUgYm9hcmQgZmlsZTsgdGhp cyB0ZXN0CisjIHVzZXMgY29uc2lzdGVudCBleHBlY3RhdGlvbnMgYWNyb3NzIGNvbXBpbGVycyAo R0NDLCBJQ1gsIGV0Yy4pLgorCitzdGFuZGFyZF90ZXN0ZmlsZQorCitpZiB7IFtidWlsZF9leGVj dXRhYmxlICJmYWlsZWQgdG8gcHJlcGFyZSAoTzApIiBcCisJICAiJHt0ZXN0ZmlsZX0tTzAiICR7 c3JjZmlsZX0geyBkZWJ1ZyBvcHRpbWl6ZT0tTzAgfV0gfSB7CisgICAgcmV0dXJuIC0xCit9CisK K2lmIHsgW2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIChPMikiIFwKKwkgICIk e3Rlc3RmaWxlfS1PMiIgJHtzcmNmaWxlfSBcCisJICB7IGRlYnVnIG9wdGltaXplPS1PMiBhZGRp dGlvbmFsX2ZsYWdzPS1mdHJlZS12ZWN0b3JpemUgfV0gfSB7CisgICAgcmV0dXJuIC0xCit9CisK KyMgUmV0cmlldmUgYWxsIHRhcmdldCBsaW5lIG51bWJlcnMgZnJvbSB0aGUgc2luZ2xlIHNoYXJl ZCBzb3VyY2UgZmlsZS4KK3NldCBsaW5lX2VtcHR5X2ZvciAgICAgIFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJlbXB0eS1mb3ItbGluZSIgJHtzcmNmaWxlfV0KK3NldCBsaW5lX2xhcmdlX2JvZHlfZm9y IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJsYXJnZS1ib2R5LWZvci1saW5lIiAke3NyY2ZpbGV9XQor c2V0IGxpbmVfdmVjX2xvb3AgICAgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgInZlYy1sb29wLWxp bmUiICR7c3JjZmlsZX1dCitzZXQgbGluZV9uZXN0ZWRfdmVjICAgICBbZ2RiX2dldF9saW5lX251 bWJlciAibmVzdGVkLXZlYy1saW5lIiAke3NyY2ZpbGV9XQorc2V0IGxpbmVfYnJlYWtfbG9vcCAg ICAgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWxvb3AtbGluZSIgJHtzcmNmaWxlfV0KK3Nl dCBsaW5lX2lmZWxzZSAgICAgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpZmVsc2UtbGluZSIg JHtzcmNmaWxlfV0KKworIyBTZXQgYnJlYWtwb2ludCBhbmQgcmV0dXJuIGhvdyBtYW55IGxvY2F0 aW9ucyBpdCByZXNvbHZlcyB0by4KK3Byb2MgYnBfbmxvY3MgeyBzcmNmaWxlIGxpbmUgZGVzYyB9 IHsKKyAgICBnbG9iYWwgZ2RiX3Byb21wdAorICAgIHNldCBubG9jcyAtMQorICAgIGdkYl90ZXN0 X211bHRpcGxlICJicmVhayAke3NyY2ZpbGV9OiR7bGluZX0iICRkZXNjIHsKKwktcmUgIkJyZWFr cG9pbnQgXFswLTlcXSsgYXQgLipcXCgoXFswLTlcXSspIGxvY2F0aW9uc1xcKS4qJGdkYl9wcm9t cHQgJCIgeworCSAgICBzZXQgbmxvY3MgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisJICAgIHBhc3Mg JGRlc2MKKwl9CisJLXJlICJCcmVha3BvaW50IFxbMC05XF0rIGF0IC4qJGdkYl9wcm9tcHQgJCIg eworCSAgICBzZXQgbmxvY3MgMQorCSAgICBwYXNzICRkZXNjCisJfQorICAgIH0KKyAgICByZXR1 cm4gJG5sb2NzCit9CisKK2NsZWFuX3Jlc3RhcnQgIiR7dGVzdGZpbGV9LU8wIgorCisjIFZlcmlm eSB0aGUgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIHNldHRpbmcgZXhpc3RzIGFuZCB3 b3Jrcy4KK2dkYl90ZXN0ICJzaG93IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIgXAor ICAgICJXaGV0aGVyIHRoZSBleHRlbmRlZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIGVuYWJs ZWQgaXMgb25cXC4iIFwKKyAgICAic2hvdyBkZWZhdWx0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2Nr LWZpbHRlciAob24pIgorCitnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsaW5lc3BlYy1leHRlbmRl ZC1ibG9jay1maWx0ZXIgb2ZmIiBcCisgICAgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1m aWx0ZXIgb2ZmIgorCitnZGJfdGVzdCAic2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0 ZXIiIFwKKyAgICAiV2hldGhlciB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBp cyBlbmFibGVkIGlzIG9mZlxcLiIgXAorICAgICJzaG93IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2Nr LWZpbHRlciAob2ZmKSIKKworZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgbGluZXNwZWMtZXh0ZW5k ZWQtYmxvY2stZmlsdGVyIG9uIiBcCisgICAgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1m aWx0ZXIgb24iCisKK2dkYl90ZXN0ICJzaG93IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRl ciIgXAorICAgICJXaGV0aGVyIHRoZSBleHRlbmRlZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlz IGVuYWJsZWQgaXMgb25cXC4iIFwKKyAgICAic2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1m aWx0ZXIgcmUtZW5hYmxlZCIKKword2l0aF90ZXN0X3ByZWZpeCAiZm9yLWxvb3AgZW1wdHkgYm9k eSAoLU8wKSIgeworICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfZW1w dHlfZm9yfSAic2V0IGJyZWFrcG9pbnQiXQorCisgICAgaWYgeyAkbmxvY3MgPT0gMSB9IHsKKwlw YXNzICIxIGJyZWFrcG9pbnQgbG9jYXRpb24gKGNvcnJlY3QpIgorICAgIH0gZWxzZSB7CisJZmFp bCAiZXhwZWN0ZWQgMSBsb2NhdGlvbiwgZ290ICRubG9jcyIKKyAgICB9CisKKyAgICBkZWxldGVf YnJlYWtwb2ludHMKK30KKword2l0aF90ZXN0X3ByZWZpeCAiZm9yLWxvb3AgZXhjZWVkaW5nIHNj YW4gbGltaXQgKC1PMCkiIHsKKyAgICBzZXQgbmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0gJHts aW5lX2xhcmdlX2JvZHlfZm9yfSAic2V0IGJyZWFrcG9pbnQiXQorCisgICAgaWYgeyAkbmxvY3Mg PT0gMSB9IHsKKwlwYXNzICIxIGJyZWFrcG9pbnQgbG9jYXRpb24gKGNvcnJlY3QpIgorICAgIH0g ZWxzZSB7CisJZmFpbCAiZXhwZWN0ZWQgMSBsb2NhdGlvbiwgZ290ICRubG9jcyIKKyAgICB9CisK KyAgICBkZWxldGVfYnJlYWtwb2ludHMKK30KKword2l0aF90ZXN0X3ByZWZpeCAiaWYtZWxzZSBz ZXBhcmF0ZSBsaW5lcyAoLU8wKSIgeworICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxl fSAke2xpbmVfaWZlbHNlfSAic2V0IGJyZWFrcG9pbnQiXQorCisgICAgaWYgeyAkbmxvY3MgPT0g MiB9IHsKKwlwYXNzICIyIGxvY2F0aW9ucyAoaWYtZWxzZSBicmFuY2hlcyBvbiBzYW1lIGxpbmUs IGRpZmZlcmVudCBibG9ja3MpIgorICAgIH0gZWxzZSB7CisJZmFpbCAiZXhwZWN0ZWQgMiBsb2Nh dGlvbnMsIGdvdCAkbmxvY3MiCisgICAgfQorCisgICAgZGVsZXRlX2JyZWFrcG9pbnRzCit9CisK K2NsZWFuX3Jlc3RhcnQgIiR7dGVzdGZpbGV9LU8yIgorCit3aXRoX3Rlc3RfcHJlZml4ICJmb3It bG9vcCB2ZWN0b3JpemVkICgtTzIpIiB7CisgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2Zp bGV9ICR7bGluZV92ZWNfbG9vcH0gInNldCBicmVha3BvaW50Il0KKworICAgIGlmIHsgJG5sb2Nz IDwgMiB9IHsKKwl1bnN1cHBvcnRlZCAiY29tcGlsZXIgZGlkIG5vdCBwcm9kdWNlIG11bHRpcGxl IGxvY2F0aW9ucztcCisJCSAgICAgdmVjdG9yaXphdGlvbiBtYXkgbm90IGhhdmUgZmlyZWQiCisg ICAgfSBlbHNlIHsKKwlwYXNzICIkbmxvY3MgbG9jYXRpb25zIHByZXNlcnZlZCAodmVjdG9yaXpl ZCArIHNjYWxhciBwYXRocykiCisgICAgfQorCisgICAgZGVsZXRlX2JyZWFrcG9pbnRzCit9CisK K3dpdGhfdGVzdF9wcmVmaXggIm5lc3RlZCB2ZWN0b3JpemVkIGxvb3BzICgtTzIpIiB7CisgICAg c2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9uZXN0ZWRfdmVjfSAic2V0IGJy ZWFrcG9pbnQiXQorCisgICAgaWYgeyAkbmxvY3MgPCAyIH0geworCXVuc3VwcG9ydGVkICJjb21w aWxlciBkaWQgbm90IHByb2R1Y2UgbXVsdGlwbGUgbG9jYXRpb25zO1wKKwkJICAgICBuZXN0ZWQg dmVjdG9yaXphdGlvbiBtYXkgbm90IGhhdmUgZmlyZWQiCisgICAgfSBlbHNlIHsKKwlwYXNzICIk bmxvY3MgbG9jYXRpb25zIHByZXNlcnZlZCAobmVzdGVkIHBhdGhzKSIKKyAgICB9CisKKyAgICBk ZWxldGVfYnJlYWtwb2ludHMKK30KKword2l0aF90ZXN0X3ByZWZpeCAibG9vcCB3aXRoIGVhcmx5 IGJyZWFrICgtTzIpIiB7CisgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGlu ZV9icmVha19sb29wfSAic2V0IGJyZWFrcG9pbnQiXQorCisgICAgaWYgeyAkbmxvY3MgPj0gMiB9 IHsKKwlwYXNzICIkbmxvY3MgbG9jYXRpb25zIHByZXNlcnZlZCAobm9ybWFsIGFuZCBicmVhayBw YXRocykiCisgICAgfSBlbHNlIHsKKwlwYXNzICIkbmxvY3MgbG9jYXRpb24gKGJyZWFrIHBhdGgg bm90IHNlcGFyYXRlbHkgY29tcGlsZWQpIgorICAgIH0KKworICAgIGRlbGV0ZV9icmVha3BvaW50 cworfQorCit3aXRoX3Rlc3RfcHJlZml4ICJmb3ItbG9vcCB2ZWN0b3JpemVkIHJ1bnRpbWUgKC1P MikiIHsKKyAgICBjbGVhbl9yZXN0YXJ0ICIke3Rlc3RmaWxlfS1PMiIKKworICAgIHNldCBubG9j cyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfdmVjX2xvb3B9ICJzZXQgYnJlYWtwb2ludCAo cHJvYmUpIl0KKyAgICBkZWxldGVfYnJlYWtwb2ludHMKKworICAgIGlmIHsgJG5sb2NzIDwgMiB9 IHsKKwl1bnN1cHBvcnRlZCAib25seSAxIGxvY2F0aW9uOyBza2lwIHJlYWNoYWJpbGl0eSB0ZXN0 IgorICAgIH0gZWxzZSB7CisJd2l0aF90ZXN0X3ByZWZpeCAic2NhbGFyIChuPTMpIiB7CisJICAg IGlmIHsgIVtydW50b19tYWluXSB9IHsKKwkJcmV0dXJuIC0xCisJICAgIH0KKworCSAgICBnZGJf dGVzdCAiYnJlYWsgJHtzcmNmaWxlfToke2xpbmVfdmVjX2xvb3B9IiBcCisJCSJCcmVha3BvaW50 IC4qIGF0IC4qIiBcCisJCSJzZXQgYnJlYWtwb2ludCIKKworCSAgICBnZGJfdGVzdCAiY29udGlu dWUiIFwKKwkJIkJyZWFrcG9pbnQgLiosIGZvcl9sb29wX3ZlY3Rvcml6ZWQgLioiIFwKKwkJImhp dCBicmVha3BvaW50IG9uIHNjYWxhciBwYXRoIgorCisJICAgIGRlbGV0ZV9icmVha3BvaW50cwor CSAgICBnZGJfdGVzdCAiY29udGludWUiICIuKmV4aXRlZCBub3JtYWxseS4qIiAicHJvZ3JhbSBl eGl0cyBjbGVhbmx5IgorCX0KKworCWNsZWFuX3Jlc3RhcnQgIiR7dGVzdGZpbGV9LU8yIgorCWdk Yl90ZXN0X25vX291dHB1dCAic2V0IGFyZ3MgZm9vIiAic2V0IGFyZ3MgZm9yIHZlY3Rvcml6ZWQg cnVuIgorCisJaWYgeyAhW3J1bnRvX21haW5dIH0geworCSAgICByZXR1cm4gLTEKKwl9CisKKwl3 aXRoX3Rlc3RfcHJlZml4ICJ2ZWN0b3JpemVkIChuPTEwMjQpIiB7CisJICAgIGdkYl90ZXN0ICJi cmVhayAke3NyY2ZpbGV9OiR7bGluZV92ZWNfbG9vcH0iIFwKKwkJIkJyZWFrcG9pbnQgLiogYXQg LioiIFwKKwkJInNldCBicmVha3BvaW50IgorCisJICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAor CQkiQnJlYWtwb2ludCAuKiwgZm9yX2xvb3BfdmVjdG9yaXplZCAuKiIgXAorCQkiaGl0IGJyZWFr cG9pbnQgb24gdmVjdG9yaXplZCBwYXRoIgorCisJICAgIGRlbGV0ZV9icmVha3BvaW50cworCSAg ICBnZGJfdGVzdCAiY29udGludWUiICIuKmV4aXRlZCBub3JtYWxseS4qIiAicHJvZ3JhbSBleGl0 cyBjbGVhbmx5IgorCX0KKyAgICB9Cit9CisKKyMgQmVoYXZpb3JhbCB0ZXN0OiB2ZXJpZnkgc2V0 dGluZyBhY3R1YWxseSBhZmZlY3RzIGJyZWFrcG9pbnQgcmVzb2x1dGlvbi4KK3dpdGhfdGVzdF9w cmVmaXggImJlaGF2aW9yYWw6IHNldHRpbmcgdG9nZ2xlIGFmZmVjdHMgcmVzb2x1dGlvbiIgewor ICAgIGNsZWFuX3Jlc3RhcnQgIiR7dGVzdGZpbGV9LU8wIgorCisgICAgIyBUZXN0IHdpdGggZXh0 ZW5kZWQgZmlsdGVyIE9OIChkZWZhdWx0KS4KKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBs aW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb24iIFwKKwkiZW5hYmxlIGV4dGVuZGVkIGJs b2NrLWZpbHRlciIKKworICAgIHNldCBubG9jc19vbiBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xp bmVfaWZlbHNlfSBcCisJInNldCBicmVha3BvaW50IG9uIGlmLWVsc2UgbGluZSB3aXRoIGZpbHRl ciBPTiJdCisgICAgZGVsZXRlX2JyZWFrcG9pbnRzCisKKyAgICBpZiB7ICRubG9jc19vbiA9PSAy IH0geworCXBhc3MgImlmLWVsc2Ugd2l0aCBleHRlbmRlZCBmaWx0ZXIgT046IDIgbG9jYXRpb25z IgorICAgIH0gZWxzZSB7CisJZmFpbCAiZXhwZWN0ZWQgMiBsb2NhdGlvbnMgd2l0aCBleHRlbmRl ZCBmaWx0ZXIgT04sIGdvdCAkbmxvY3Nfb24iCisgICAgfQorCisgICAgIyBUZXN0IHdpdGggZXh0 ZW5kZWQgZmlsdGVyIE9GRi4KKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsaW5lc3BlYy1l eHRlbmRlZC1ibG9jay1maWx0ZXIgb2ZmIiBcCisJImRpc2FibGUgZXh0ZW5kZWQgYmxvY2stZmls dGVyIgorCisgICAgc2V0IG5sb2NzX29mZiBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfaWZl bHNlfSBcCisJInNldCBicmVha3BvaW50IG9uIGlmLWVsc2UgbGluZSB3aXRoIGZpbHRlciBPRkYi XQorICAgIGRlbGV0ZV9icmVha3BvaW50cworCisgICAgaWYgeyAkbmxvY3Nfb2ZmID09IDEgfSB7 CisJcGFzcyAiaWYtZWxzZSB3aXRoIGV4dGVuZGVkIGZpbHRlciBPRkY6IDEgbG9jYXRpb24iCisg ICAgfSBlbHNlIHsKKwlmYWlsICJleHBlY3RlZCAxIGxvY2F0aW9uIHdpdGggZXh0ZW5kZWQgZmls dGVyIE9GRiwgZ290ICRubG9jc19vZmYiCisgICAgfQorCisgICAgIyBWZXJpZnkgdG9nZ2xpbmcg aXQgYmFjayBPTiByZXN0b3JlcyB0aGUgdHdvIGxvY2F0aW9ucy4KKyAgICBnZGJfdGVzdF9ub19v dXRwdXQgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb24iIFwKKwkicmUtZW5h YmxlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciIKKworICAgIHNldCBubG9jc19vbl9hZ2FpbiBbYnBf bmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfaWZlbHNlfSBcCisJInNldCBicmVha3BvaW50IG9uIGlm LWVsc2UgbGluZSB3aXRoIGZpbHRlciByZS1lbmFibGVkIl0KKyAgICBkZWxldGVfYnJlYWtwb2lu dHMKKworICAgIGlmIHsgJG5sb2NzX29uX2FnYWluID09IDIgfSB7CisJcGFzcyAiaWYtZWxzZSB3 aXRoIGV4dGVuZGVkIGZpbHRlciByZS1lbmFibGVkOiAyIGxvY2F0aW9ucyAodmVyaWZpZWQpIgor ICAgIH0gZWxzZSB7CisJZmFpbCAiZXhwZWN0ZWQgMiBsb2NhdGlvbnMgYWZ0ZXIgcmUtZW5hYmxp bmcsIGdvdCAkbmxvY3Nfb25fYWdhaW4iCisgICAgfQorfQotLSAKMi4zNC4xCgoKCkludGVsIERl dXRzY2hsYW5kIEdtYkgKClJlZ2lzdGVyZWQgQWRkcmVzczogRG9ybmFjaGVyIFN0cmHDn2UgMSwg ODU2MjIgRmVsZGtpcmNoZW4sIEdlcm1hbnkKVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3LmludGVs LmRlIDwvL3d3dy5pbnRlbC5kZT4KTWFuYWdpbmcgRGlyZWN0b3JzOiBIYXJyeSBEZW1hcywgSmVm ZnJleSBTY2huZWlkZXJtYW4sIFlpbiBDaG9uZyBTb3JyZWxsCkNoYWlycGVyc29uIG9mIHRoZSBT dXBlcnZpc29yeSBCb2FyZDogTmljb2xlIExhdQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaApDb21t ZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNw7xuY2hlbiBIUkIgMTg2OTI4Cg==