From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id 596B42B678 for ; Sat, 3 Feb 2024 18:38:39 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1706981919; b=B5WebgBjDdV+uivfb8B90tlFri4xYk3a4Lzv/eQ7EQJLRkW1JrNyEc90mC1W5DrI6AdxnfYyPZ 7wEKFCqF7uq1qBhxJmGPDDdr4Cxu5qfqhek0RspC22SCvyQq6KnEp/nPLahGiKlxb513HfxMU/ hnNXLbQxc7hECYCV858WEi2ag91udYhl4OL84e/XEAlZa3V2ikRUU5ZD637qBIiJSpP3se2ZgW p/yvGanroLadmGqUu6Xg3QRAzwoAUlnkIRwvcxlxT94hsDNL27/3nkEWAbpRZ4W0zaPyF/z/Rv Hor9gofeB+u+EQjAm1L8NWuVM7+9VcBZQA/w9sDIcUW2TA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f46.google.com) smtp.remote-ip=209.85.167.46; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1706981919; bh=a8OSV8npSsr6TuybdPA318cTv/qh++XWlAuejI8DlWY=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=ZpmMIA7ORocemk3fER2yOGkER5ZWDTMX3PAki7a5iHNKbmLzZJC9ILhzxQYBpJ6chsoLR2O7ts ywcLmnwRFhO24eaXhaVasB3STr6WjFnmXO6Vrpznu0CYUvOray8l5PgqPrasunKu42ER913K5J FXs54xpJXza+G8iBY4fwcSWxIjBe3VFYW9PSC+XShOySBbEBmfqAeVmIw9EgMkmlhVhyJ8tW+5 dGSO+/1swDQTUk1oE3rjcWIhnYhPbvKonJKGkF/AWJudDUVIZ0lfz6guDuJO9p+zd7icxRU92e BMzqnE4e3Fyr4okRxqL3xlx/ZHfy6aa/Re1liSyJUTwhBg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=vlPhc1qh3nU28AVOXMw2rOtZrumd6J2QSJjv6kYT6Yg=; b=OVXI22aC6nzgVbt+x0n80V9dVE lDPhTz1A5GkkhlbZR12pfQ/UVM7HFJc7Ip7iql6kWImz3kcKTg4g6BobZlqbX0iFaudVbLoLVnbZT co77hCKM+VS6TqrsCi2qMe/YB8DCWazi9JLJXQoIJ3nnGYNxiOrUGJekzBw7RkCXj94jSovuPp4Kk P6KEX6pAgSjWQpdhEX5WZXzybZVyFhhnnECC5nBGPx3bN93BVTRaRvZacu3kkpD+WhlIfI4O8MbxO Z4W6TbSlH5XyTC7wqkeVE4jfEuy7mYCrkOqSzkaIAeoRkP34VV0RyZ3s7qsjR41aHAvZvHjVpo89G cs2TegXw==; Received: by zero.zsh.org with local id 1rWJyQ-000NDQ-Lz; Sat, 03 Feb 2024 17:38:38 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f46.google.com) smtp.remote-ip=209.85.167.46; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-lf1-f46.google.com ([209.85.167.46]:44303) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rWJxq-000MtQ-Sn; Sat, 03 Feb 2024 17:38:04 +0000 Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5113abf9b05so1344924e87.1 for ; Sat, 03 Feb 2024 09:38:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1706981882; x=1707586682; darn=zsh.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=vlPhc1qh3nU28AVOXMw2rOtZrumd6J2QSJjv6kYT6Yg=; b=FBg+FIn7K+FosLzZRqbOUysfi6Oo9ceR4ZqkasZE115zy62TvXXIZtg53UxgpvzfDb b4LvdWXF4eKc70CShDNkZuPy6gmDlQl2Yo+eAM/brgYFubmrAoXsovvBC2UjcjSek94o PvtI0JfcT/Ac9i3YiQkHUM9t0uZGifXpjEOtTCRCirmaqJ18VGasFVEJAaJC2LTvXopW OGs/3fR1i2gtVDs+/Bu2XbogpjH4hNmL3oMo1trdLbTUbTDLZEzttcCSNBtgx6PbRtox qoGBal2GENtRhcP43x0ETAaRuOaQByaZT+4nncIh3VhD9f0tSOZ6wiW8jZBGJFg9fNs/ 1jfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706981882; x=1707586682; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vlPhc1qh3nU28AVOXMw2rOtZrumd6J2QSJjv6kYT6Yg=; b=LpfEk/0mG5ap/qp6JihlF/mI8G2bim32tO3flQcgDXxrp9BkNR4pd6hTO1SKMgo27E EalAAbufQUTrB+4mO4N+T6iej879ef1ucFW5+DFDuk+hPhrNhUoja/DhK0LXRar/hJlP Fmb1WFf+Tp7yON42li0SWqYRXK0o2Luwu8sHezwuny136H8vTEHxvaKs6TbLbv1kYp3w NOJ4BGgKa9UV20MEKUYHOzpWYxXgNtThd4LRi2HfgDQs7O42l612K/hD22lbEC9WK4yg dNzKe5ehA3zfQmzSEuRK1OtjEi1xhVfGBiiqEBZ4o/0Ni1oI7qz321UulZfPDIenQ9mQ p+NA== X-Gm-Message-State: AOJu0YwsAg+1EtF/Dlnpw2aIstkexsP71ehBoziuqGaSDgPYuIIp0qjV oCiXGecsmlH2eGBzz+r5O3gKRDTdS3BKVN6YgmVCNIv4f2ElRYsmWnQKEy4PKPIJiz9vguDX7De Jwp9R2PzHU1TVLKTiJvmTieU3t/IEQtMkCRd8K9VAcKTKB3rlZA== X-Google-Smtp-Source: AGHT+IFwEK7arTcmuutv8pHVLSOWVCjniMtvE0rJqZkTry9FSRp37SKbZfOH7gohZmaxlJKK9+PL3B6NSE0Hxszev9E= X-Received: by 2002:a05:6512:4cd:b0:511:46c0:d879 with SMTP id w13-20020a05651204cd00b0051146c0d879mr1176140lfq.47.1706981881768; Sat, 03 Feb 2024 09:38:01 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Sat, 3 Feb 2024 09:37:50 -0800 Message-ID: Subject: [PATCH] Rectify "private" and nofork To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000b42c2606107db03f" X-Seq: 52513 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000b42c2606107db03f Content-Type: text/plain; charset="UTF-8" This is a follow-up to workers/52510. The patch permits nofork substitutions ("current shell command substitutions") to access private parameters in the calling function scope, just as other current shell constructs like brace commands are able to. However, private parameters declared within a nofork substitution are not accessible by nested nofork substitutions. Also fixed is an existing crash bug on explosive { exec {kaboom}>&2 } detonator() { private kaboom explosive } Fixes/adds tests for using "private" along with TYPESET_TO_UNSET, plus tests and doc for all of the above. --000000000000b42c2606107db03f Content-Type: text/plain; charset="US-ASCII"; name="private-nofork.txt" Content-Disposition: attachment; filename="private-nofork.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls6cd3ag0 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvbW9kX3ByaXZhdGUueW8gYi9Eb2MvWnNoL21vZF9wcml2YXRl LnlvCmluZGV4IDY5YTVmNThiZS4uMDhhYzRjYWZlIDEwMDY0NAotLS0gYS9Eb2MvWnNoL21vZF9w cml2YXRlLnlvCisrKyBiL0RvYy9ac2gvbW9kX3ByaXZhdGUueW8KQEAgLTg0LDkgKzg0LDE0IEBA IGNyZWF0ZWQgb3V0c2lkZSB0aGUgbG9jYWwgc2NvcGUgd2hlbiBpdCB3YXMgbm90IHByZXZpb3Vz bHkgZGVjbGFyZWQuKQogaXRlbWl6KEFuIGV4cG9ydGVkIHByaXZhdGUgcmVtYWlucyBpbiB0aGUg ZW52aXJvbm1lbnQgb2YgaW5uZXIgc2NvcGVzIGJ1dAogYXBwZWFycyB1bnNldCBmb3IgdGhlIGN1 cnJlbnQgc2hlbGwgaW4gdGhvc2Ugc2NvcGVzLiAgR2VuZXJhbGx5LCBleHBvcnRpbmcKIHByaXZh dGUgcGFyYW1ldGVycyBzaG91bGQgYmUgYXZvaWRlZC4pCitpdGVtaXooQ3VycmVudCBzaGVsbCBj b21tYW5kIHN1YnN0aXR1dGlvbnMgc3VjaCBhcyBgdHQoJHt8KS4uLnR0KH0pJywKK2B0dCgke3wp dmFyKHZhcil0dCh8KS4uLnR0KH0pJyBhbmQgYHR0KCR7ICkuLi50dCggfSknIG1heSByZWFkIGFu ZCBhc3NpZ24KK3ByaXZhdGUgcGFyYW1ldGVycyBmcm9tIHRoZSBlbmNsb3NpbmcgZnVuY3Rpb24u KQogaXRlbWl6KERlY2xhcmluZyBhIHByaXZhdGUgcGFyYW1ldGVyIGluIGEgY3VycmVudCBzaGVs bCBjb21tYW5kIHN1YnN0aXR1dGlvbgotc3VjaCBhcyBgdHQoJHsgKS4uLnR0KCB9KScgbGltaXRz IHRoZSBwYXJhbWV0ZXIgdG8gdGhlIHNjb3BlIG9mIHRoZSBjb21tYW5kCi1zdWJzdGl0dXRpb24s IGp1c3QgYXMgaWYgdGhlIHBhcmFtZXRlciB3ZXJlIGRlY2xhcmVkIGluIGEgZnVuY3Rpb24uKQor bGltaXRzIHRoYXQgcGFyYW1ldGVyIHRvIHRoZSBzY29wZSBvZiB0aGUgY29tbWFuZCBzdWJzdGl0 dXRpb24sIGp1c3QgYXMgaWYKK3RoZSBwYXJhbWV0ZXIgd2VyZSBkZWNsYXJlZCBpbiBhIGZ1bmN0 aW9uLiAgVGhpcyBhbHNvIHByZXZlbnRzIGFjY2VzcyBieQorYW55IGVuY2xvc2VkIGN1cnJlbnQg c2hlbGwgY29tbWFuZCBzdWJzdGl0dXRpb25zLCBidXQgb3RoZXIgc3Vic3RpdHV0aW9ucworbWF5 IHVzZSB0aGUgcHJpdmF0ZSBwYXJhbWV0ZXIgYmVjYXVzZSB0aG9zZSBoYXZlIHRoZSBzYW1lIGNh bGxpbmcgc2NvcGUuKQogZW5kaXRlbWl6ZSgpCiAKIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJv bSB0aGUgc3RhdGljIHNjb3BlIGRlZmluZWQgYnkgY29tcGlsZWQgbGFuZ3VhZ2VzCmRpZmYgLS1n aXQgYS9TcmMvTW9kdWxlcy9wYXJhbV9wcml2YXRlLmMgYi9TcmMvTW9kdWxlcy9wYXJhbV9wcml2 YXRlLmMKaW5kZXggN2VmNjYzM2RhLi41MDAzZDQ2MjcgMTAwNjQ0Ci0tLSBhL1NyYy9Nb2R1bGVz L3BhcmFtX3ByaXZhdGUuYworKysgYi9TcmMvTW9kdWxlcy9wYXJhbV9wcml2YXRlLmMKQEAgLTI5 OCw3ICsyOTgsNyBAQCBwcHNfc2V0Zm4oUGFyYW0gcG0sIGNoYXIgKngpCiB7CiAgICAgc3RydWN0 IGdzdV9jbG9zdXJlICpjID0gKHN0cnVjdCBnc3VfY2xvc3VyZSAqKShwbS0+Z3N1LnMpOwogICAg IEdzdVNjYWxhciBnc3UgPSAoR3N1U2NhbGFyKShjLT5nKTsKLSAgICBpZiAobG9jYWxsZXZlbCA9 PSBwbS0+bGV2ZWwpCisgICAgaWYgKGxvY2FsbGV2ZWwgPT0gcG0tPmxldmVsIHx8IGxvY2FsbGV2 ZWwgPiBwcml2YXRlX3dyYXBsZXZlbCkKIAlnc3UtPnNldGZuKHBtLCB4KTsKICAgICBlbHNlCiAJ c2V0Zm5fZXJyb3IocG0pOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHBwaV9zZXRmbihQYXJhbSBwbSwg emxvbmcgeCkKIHsKICAgICBzdHJ1Y3QgZ3N1X2Nsb3N1cmUgKmMgPSAoc3RydWN0IGdzdV9jbG9z dXJlICopKHBtLT5nc3UuaSk7CiAgICAgR3N1SW50ZWdlciBnc3UgPSAoR3N1SW50ZWdlcikoYy0+ Zyk7Ci0gICAgaWYgKGxvY2FsbGV2ZWwgPT0gcG0tPmxldmVsKQorICAgIGlmIChsb2NhbGxldmVs ID09IHBtLT5sZXZlbCB8fCBsb2NhbGxldmVsID4gcHJpdmF0ZV93cmFwbGV2ZWwpCiAJZ3N1LT5z ZXRmbihwbSwgeCk7CiAgICAgZWxzZQogCXNldGZuX2Vycm9yKHBtKTsKQEAgLTM3OCw3ICszNzgs NyBAQCBwcGZfc2V0Zm4oUGFyYW0gcG0sIGRvdWJsZSB4KQogewogICAgIHN0cnVjdCBnc3VfY2xv c3VyZSAqYyA9IChzdHJ1Y3QgZ3N1X2Nsb3N1cmUgKikocG0tPmdzdS5mKTsKICAgICBHc3VGbG9h dCBnc3UgPSAoR3N1RmxvYXQpKGMtPmcpOwotICAgIGlmIChsb2NhbGxldmVsID09IHBtLT5sZXZl bCkKKyAgICBpZiAobG9jYWxsZXZlbCA9PSBwbS0+bGV2ZWwgfHwgbG9jYWxsZXZlbCA+IHByaXZh dGVfd3JhcGxldmVsKQogCWdzdS0+c2V0Zm4ocG0sIHgpOwogICAgIGVsc2UKIAlzZXRmbl9lcnJv cihwbSk7CkBAIC00MTksNyArNDE5LDcgQEAgcHBhX3NldGZuKFBhcmFtIHBtLCBjaGFyICoqeCkK IHsKICAgICBzdHJ1Y3QgZ3N1X2Nsb3N1cmUgKmMgPSAoc3RydWN0IGdzdV9jbG9zdXJlICopKHBt LT5nc3UuYSk7CiAgICAgR3N1QXJyYXkgZ3N1ID0gKEdzdUFycmF5KShjLT5nKTsKLSAgICBpZiAo bG9jYWxsZXZlbCA9PSBwbS0+bGV2ZWwpCisgICAgaWYgKGxvY2FsbGV2ZWwgPT0gcG0tPmxldmVs IHx8IGxvY2FsbGV2ZWwgPiBwcml2YXRlX3dyYXBsZXZlbCkKIAlnc3UtPnNldGZuKHBtLCB4KTsK ICAgICBlbHNlCiAJc2V0Zm5fZXJyb3IocG0pOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHBwaF9zZXRm bihQYXJhbSBwbSwgSGFzaFRhYmxlIHgpCiB7CiAgICAgc3RydWN0IGdzdV9jbG9zdXJlICpjID0g KHN0cnVjdCBnc3VfY2xvc3VyZSAqKShwbS0+Z3N1LmgpOwogICAgIEdzdUhhc2ggZ3N1ID0gKEdz dUhhc2gpKGMtPmcpOwotICAgIGlmIChsb2NhbGxldmVsID09IHBtLT5sZXZlbCkKKyAgICBpZiAo bG9jYWxsZXZlbCA9PSBwbS0+bGV2ZWwgfHwgbG9jYWxsZXZlbCA+IHByaXZhdGVfd3JhcGxldmVs KQogCWdzdS0+c2V0Zm4ocG0sIHgpOwogICAgIGVsc2UKIAlzZXRmbl9lcnJvcihwbSk7CkBAIC01 MzksMTkgKzUzOSwyMCBAQCBzdGF0aWMgc3RydWN0IGZ1bmN3cmFwIHdyYXBwZXJbXSA9IHsKICAg ICBXUkFQREVGKHdyYXBfcHJpdmF0ZSkKIH07CiAKKy8qKi8KK3N0YXRpYyBpbnQgcHJpdmF0ZV93 cmFwbGV2ZWwgPSAwOworCiAvKiovCiBzdGF0aWMgaW50CiB3cmFwX3ByaXZhdGUoRXByb2cgcHJv ZywgRnVuY1dyYXAgdywgY2hhciAqbmFtZSkKIHsKLSAgICBzdGF0aWMgaW50IHdyYXBsZXZlbCA9 IDA7Ci0KLSAgICBpZiAod3JhcGxldmVsIDwgbG9jYWxsZXZlbCAvKiAmJiBzdHJjbXAobmFtZSwg Iihhbm9uKSIpICE9IDAgKi8pIHsKLQlpbnQgb3dsID0gd3JhcGxldmVsOwotCXdyYXBsZXZlbCA9 IGxvY2FsbGV2ZWw7CisgICAgaWYgKHByaXZhdGVfd3JhcGxldmVsIDwgbG9jYWxsZXZlbCAvKiAm JiBzdHJjbXAobmFtZSwgIihhbm9uKSIpICE9IDAgKi8pIHsKKwlpbnQgb3dsID0gcHJpdmF0ZV93 cmFwbGV2ZWw7CisJcHJpdmF0ZV93cmFwbGV2ZWwgPSBsb2NhbGxldmVsOwogCXNjYW5oYXNodGFi bGUocGFyYW10YWIsIDAsIDAsIDAsIHNjb3BlcHJpdmF0ZSwgUE1fVU5TRVQpOwogCXJ1bnNoZnVu Yyhwcm9nLCB3LCBuYW1lKTsKIAlzY2FuaGFzaHRhYmxlKHBhcmFtdGFiLCAwLCAwLCAwLCBzY29w ZXByaXZhdGUsIDApOwotCXdyYXBsZXZlbCA9IG93bDsKKwlwcml2YXRlX3dyYXBsZXZlbCA9IG93 bDsKIAlyZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBAIC01NzMsMjIgKzU3NCwzMiBA QCBnZXRwcml2YXRlbm9kZShIYXNoVGFibGUgaHQsIGNvbnN0IGNoYXIgKm5hbSkKIAlwbSA9IChQ YXJhbSkgaG47CiAJLyogaG93IHdvdWxkIGFuIGF1dG9sb2FkZWQgcHJpdmF0ZSBiZWhhdmU/ICBy ZXR1cm4gaGVyZT8gKi8KICAgICB9Ci0gICAgd2hpbGUgKCFmYWtlbGV2ZWwgJiYgcG0gJiYgbG9j YWxsZXZlbCA+IHBtLT5sZXZlbCAmJiBpc19wcml2YXRlKHBtKSkgeworICAgIHdoaWxlICghZmFr ZWxldmVsICYmIHBtICYmIGlzX3ByaXZhdGUocG0pICYmIGxvY2FsbGV2ZWwgPiBwbS0+bGV2ZWwp IHsKKwlpZiAocG0tPmxldmVsID09IHByaXZhdGVfd3JhcGxldmVsICsgMSkgeworCSAgICAvKiBW YXJpYWJsZSBpcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBzY29wZSAqLworCSAgICBicmVhazsK Kwl9CisjaWYgMAogCWlmICghKHBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpKSB7CiAJICAgIC8q CiAJICAgICAqIHByaXZhdGUgcGFyYW1ldGVycyBhcmUgYWx3YXlzIG1hcmtlZCBQTV9VTlNFVCBi ZWZvcmUgd2UKLQkgICAgICogaW5jcmVtZW50IGxvY2FsbGV2ZWwsIHNvIHRoZSBvbmx5IHdheSB3 ZSBnZXQgaGVyZSBpcwotCSAgICAgKiB3aGVuIGNyZWF0ZXBhcmFtKCkgd2FudHMgYSBuZXcgcGFy YW1ldGVyIHRoYXQgaXMgbm90IGF0Ci0JICAgICAqIHRoZSBjdXJyZW50IGxvY2FsbGV2ZWwgYW5k IGl0IGhhcyB0aGVyZWZvcmUgY2xlYXJlZCB0aGUKLQkgICAgICogUE1fVU5TRVQgZmxhZy4KKwkg ICAgICogaW5jcmVtZW50IGxvY2FsbGV2ZWwsIHNvIHRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSB3 YXlzCisJICAgICAqIHRvIGdldCBoZXJlOgorCSAgICAgKiAgMSkgY3JlYXRlcGFyYW0oKSB3YW50 cyBhIG5ldyBwYXJhbWV0ZXIgdGhhdCBpcyBub3QgYXQKKwkgICAgICogIHRoZSBjdXJyZW50IGxv Y2FsbGV2ZWwgYW5kIGl0IGhhcyB0aGVyZWZvcmUgY2xlYXJlZCB0aGUKKwkgICAgICogIFBNX1VO U0VUIGZsYWcKKwkgICAgICogIDIpIGxvY2FsbGV2ZWwgaGFzIGJlZW4gaW5jcmVtZW50ZWQgKHN0 YXJ0cGFyYW1zY29wZSgpKQorCSAgICAgKiAgb3V0c2lkZSB0aGUgdXN1YWwgZnVuY3Rpb24gY2Fs bCBzdGFjayAocHJpdmF0ZV93cmFwbGV2ZWwpCisJICAgICAqICAzKSBkeW5hbWljIHNjb3Bpbmcg aXMgZmV0Y2hpbmcgYSB2YWx1ZSBmcm9tIGEgc3Vycm91bmRpbmcKKwkgICAgICogIHNjb3BlLCB3 ZSBkb24ndCBrbm93IGlmIHRoYXQncyBmb3IgYXNzaWduIG9yIGp1c3QgZXhwYW5kCisJICAgICAq IFRoZSBmaXJzdCBvZiB0aG9zZSBpcyBub3cgY2F1Z2h0IGluIGNyZWF0ZXBhcmFtKCkgd2hlbgor CSAgICAgKiB0ZXN0aW5nIFBNX1JPX0JZX0RFU0lHTiBhbmQgdGhlIHNlY29uZCBvY2N1cnMgb25s eSBpbgorCSAgICAgKiBub2Zvcmsgc3Vic3RpdHV0aW9uIG9yIGhhbmRsaW5nIG9mIFpMRSBzcGVj aWFscy4gIElmIHRoZQorCSAgICAgKiB0aGlyZCBpcyBhbiBhc3NpZ25tZW50LCB0aGUgR1NVIHNl dGZuIHJlamVjdHMgaXQuCiAJICAgICAqLwogCSAgICBEUFVUUyhwbS0+b2xkLCAiQlVHOiBQTV9V TlNFVCBjbGVhcmVkIGluIHdyb25nIHNjb3BlIik7Ci0JICAgIHNldGZuX2Vycm9yKHBtKTsKLQkg ICAgLyoKLQkgICAgICogVE9ETzogaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvciBoZXJlLCBj cmVhdGUgYSBnbG9iYWwKLQkgICAgICogcGFyYW1ldGVyLCBpbnNlcnQgYXMgcG0tPm9sZCwgaGFu ZGxlIFdBUk5fQ1JFQVRFX0dMT0JBTC4KLQkgICAgICovCiAJfQorI2VuZGlmCiAJcG0gPSBwbS0+ b2xkOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU3JjL3BhcmFtcy5jIGIvU3JjL3BhcmFtcy5jCmlu ZGV4IDlmMGNiY2Q2Ny4uYTcyMmEyMGY2IDEwMDY0NAotLS0gYS9TcmMvcGFyYW1zLmMKKysrIGIv U3JjL3BhcmFtcy5jCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBjcmVhdGVwYXJhbShjaGFyICpuYW1l LCBpbnQgZmxhZ3MpCiAJCS8qIFBPU0lYQlVJTFRJTlMgaG9ycm9yOiB3ZSBuZWVkIHRvIHJldGFp biAnZXhwb3J0JyBmbGFncyAqLwogCQkoaXNzZXQoUE9TSVhCVUlMVElOUykgJiYgKG9sZHBtLT5u b2RlLmZsYWdzICYgUE1fRVhQT1JURUQpKSkgewogCQlpZiAob2xkcG0tPm5vZGUuZmxhZ3MgJiBQ TV9ST19CWV9ERVNJR04pIHsKLQkJICAgIHplcnIoIiVzOiBjYW4ndCBjaGFuZ2UgcGFyYW1ldGVy IGF0dHJpYnV0ZSIsCisJCSAgICB6ZXJyKCIlczogY2FuJ3QgbW9kaWZ5IHJlYWQtb25seSBwYXJh bWV0ZXIiLAogCQkJIG5hbWUpOwogCQkgICAgcmV0dXJuIE5VTEw7CiAJCX0KQEAgLTM2MTUsOSAr MzYxNSwxOCBAQCBhc3NpZ25ucGFyYW0oY2hhciAqcywgbW51bWJlciB2YWwsIGludCBmbGFncykK IAlwbSA9IGNyZWF0ZXBhcmFtKHQsIHNzID8gUE1fQVJSQVkgOgogCQkJIGlzc2V0KFBPU0lYSURF TlRJRklFUlMpID8gUE1fU0NBTEFSIDoKIAkJCSAodmFsLnR5cGUgJiBNTl9JTlRFR0VSKSA/IFBN X0lOVEVHRVIgOiBQTV9GRkxPQVQpOwotCWlmICghcG0pCi0JICAgIHBtID0gKFBhcmFtKSBwYXJh bXRhYi0+Z2V0bm9kZShwYXJhbXRhYiwgdCk7Ci0JRFBVVFMoIXBtLCAiQlVHOiBwYXJhbWV0ZXIg bm90IGNyZWF0ZWQiKTsKKwlpZiAoZXJyZmxhZykgeworCSAgICAvKiBhc3N1bWUgZXJyb3IgbWVz c2FnZSBhbHJlYWR5IG91dHB1dCAqLworCSAgICB1bnF1ZXVlX3NpZ25hbHMoKTsKKwkgICAgcmV0 dXJuIE5VTEw7CisJfQorCWlmICghcG0gJiYgIShwbSA9IChQYXJhbSkgcGFyYW10YWItPmdldG5v ZGUocGFyYW10YWIsIHQpKSkgeworCSAgICBEUFVUUyghcG0sICJCVUc6IHBhcmFtZXRlciBub3Qg Y3JlYXRlZCIpOworCSAgICBpZiAoIWVycmZsYWcpCisJCXplcnIoIiVzOiBwYXJhbWV0ZXIgbm90 IGZvdW5kIiwgdCk7CisJICAgIHVucXVldWVfc2lnbmFscygpOworCSAgICByZXR1cm4gTlVMTDsK Kwl9CiAJaWYgKHNzKSB7CiAJICAgICpzcyA9ICdbJzsKIAl9IGVsc2UgaWYgKHZhbC50eXBlICYg TU5fSU5URUdFUikgewpkaWZmIC0tZ2l0IGEvVGVzdC9WMTBwcml2YXRlLnp0c3QgYi9UZXN0L1Yx MHByaXZhdGUuenRzdAppbmRleCBkOTAyY2FjNTYuLjllZWRhMGY0NyAxMDA2NDQKLS0tIGEvVGVz dC9WMTBwcml2YXRlLnp0c3QKKysrIGIvVGVzdC9WMTBwcml2YXRlLnp0c3QKQEAgLTEwLDYgKzEw LDggQEAKICAgIHNlZCAtZSAncywjIHRlc3RfenNoX3BhcmFtX3ByaXZhdGUsem1vZGxvYWQgenNo L3BhcmFtL3ByaXZhdGUsJyA8ICRaVFNUX3NyY2Rpci9CMDJ0eXBlc2V0Lnp0c3QgPiBwcml2YXRl LlRNUC9CMDIKICBmaQogCisgc2V0b3B0IFRZUEVTRVRfVE9fVU5TRVQKKwogJXRlc3QKIAogICh6 bW9kbG9hZCAtdSB6c2gvcGFyYW0vcHJpdmF0ZSAmJiB6bW9kbG9hZCB6c2gvcGFyYW0vcHJpdmF0 ZSkKQEAgLTI0Niw3ICsyNDgsNyBAQCBGOm5vdGUgInR5cGVzZXQiIHJhdGhlciB0aGFuICJwcml2 YXRlIiBpbiBvdXRwdXQgZnJvbSBvdXRlcgogMTpwcml2YXRlcyBhcmUgbm90IHZpc2libGUgaW4g YW5vbnltb3VzIGZ1bmN0aW9ucywgcGFydCAzCiA+WCB0b3AgbGV2ZWwKID5hcnJheV90ZXN0IG5v dCBzZXQKLT8oYW5vbik6NDogYXJyYXlfdGVzdDogY2FuJ3QgY2hhbmdlIHBhcmFtZXRlciBhdHRy aWJ1dGUKKz8oYW5vbik6NDogYXJyYXlfdGVzdDogY2FuJ3QgbW9kaWZ5IHJlYWQtb25seSBwYXJh bWV0ZXIKIEY6ZnV0dXJlIHJldmlzaW9uIHdpbGwgY3JlYXRlIGEgZ2xvYmFsIHdpdGggdGhpcyBh c3NpZ25tZW50CiAKICB0eXBlc2V0IC1hIGFycmF5X3Rlc3QKQEAgLTMxMSwxMSArMzEzLDMwIEBA IEY6ZnV0dXJlIHJldmlzaW9uIHdpbGwgY3JlYXRlIGEgZ2xvYmFsIHdpdGggdGhpcyBhc3NpZ25t ZW50CiAKICAoKSB7CiAgICB0eXBlc2V0IC1uIHB0cjE9cHRyMgotICAgcHJpdmF0ZSAtbiBwdHIy CisgICBwcml2YXRlIC1uIHB0cjIJIyBUWVBFU0VUX1RPX1VOU0VUIG1ha2VzIHRoaXMgbm90IGEg InBsYWNlaG9sZGVyIgogICAgdHlwZXNldCAtcCBwdHIxIHB0cjIKICAgIHR5cGVzZXQgdmFsPUxP Q0FMCiAgICAoKSB7Ci0gICAgIHB0cjE9dmFsCisgICAgIHB0cjE9dmFsCQkjIFRlc3QgZGllcyBo ZXJlIGFzIHB0cjIgaXMgcHJpdmF0ZSBhbmQgdW5zZXQKKyAgICAgdHlwZXNldCAtbgorICAgICBw cmludGYgIiVzPSVzXG4iIHB0cjEgIiRwdHIxIiBwdHIyICIkcHRyMiIKKyAgIH0KKyAgIHR5cGVz ZXQgLXAgcHRyMSBwdHIyCisgfQorIHR5cGVzZXQgLXAgcHRyMgorMTp1cC1yZWZlcmVuY2UgZm9y IHByaXZhdGUgbmFtZXJlZnMsIGVuZCB1bnNldCBhbmQgbm90IGluIHNjb3BlCitGOlNlZSBLMDFu YW1lcmVmLnp0c3QgdXAtcmVmZXJlbmNlIHBhcnQgNQorRjpIZXJlIHB0cjEgZmluZHMgcHJpdmF0 ZSBwdHIyIGJ5IHNjb3BlIG1pc21hdGNoCis+dHlwZXNldCAtbiBwdHIxPXB0cjIKKyo/KnJlYWQt b25seSB2YXJpYWJsZTogcHRyMgorCisgKCkgeworICAgdHlwZXNldCAtbiBwdHIxPXB0cjIKKyAg IHByaXZhdGUgLW4gcHRyMj0JIyBBc3NpZ25tZW50IG1ha2VzIHRoaXMgYSBwbGFjZWhvbGRlciwg bm90IHVuc2V0CisgICB0eXBlc2V0IC1wIHB0cjEgcHRyMgorICAgdHlwZXNldCB2YWw9TE9DQUwK KyAgICgpIHsKKyAgICAgcHRyMT12YWwJCSMgVGhpcyBpcyBhIHNpbGVudCBuby1vcCwgd2h5Pwog ICAgICB0eXBlc2V0IC1uCiAgICAgIHByaW50ZiAiJXM9JXNcbiIgcHRyMSAiJHB0cjEiIHB0cjIg IiRwdHIyIgogICAgfQpAQCAtMzIzLDggKzM0NCw5IEBAIEY6ZnV0dXJlIHJldmlzaW9uIHdpbGwg Y3JlYXRlIGEgZ2xvYmFsIHdpdGggdGhpcyBhc3NpZ25tZW50CiAgfQogIHR5cGVzZXQgLXAgcHRy MgogMTp1cC1yZWZlcmVuY2UgZm9yIHByaXZhdGUgbmFtZXJlZnMsIGVuZCBub3QgaW4gc2NvcGUK LUY6U2VlIEswMXR5cGVzZXQuenRzdCB1cC1yZWZlcmVuY2UgcGFydCA1Ci1GOkhlcmUgcHRyMSBm aW5kcyBwcml2YXRlIHB0cjIgYnkgc2NvcGUgbWlzbWF0Y2gsIGFzc2lnbm1lbnQgc2lsZW50bHkg ZmFpbHMKK0Y6U2VlIEswMW5hbWVyZWYuenRzdCB1cC1yZWZlcmVuY2UgcGFydCA1CitGOkhlcmUg cHRyMSBmaW5kcyBwcml2YXRlIHB0cjIgYnkgc2NvcGUgbWlzbWF0Y2gKK0Y6QXNzaWdubWVudCBz aWxlbnRseSBmYWlscywgaXMgdGhhdCBjb3JyZWN0PwogPnR5cGVzZXQgLW4gcHRyMT1wdHIyCiA+ cHRyMT1wdHIyCiA+cHRyMT0KQEAgLTMzNSwxMSArMzU3LDExIEBAIEY6SGVyZSBwdHIxIGZpbmRz IHByaXZhdGUgcHRyMiBieSBzY29wZSBtaXNtYXRjaCwgYXNzaWdubWVudCBzaWxlbnRseSBmYWls cwogIHR5cGVzZXQgcHRyMgogICgpIHsKICAgIHR5cGVzZXQgLW4gcHRyMT1wdHIyCi0gICBwcml2 YXRlIC1uIHB0cjIKKyAgIHByaXZhdGUgLW4gcHRyMgkjIFNldC91bnNldCBpcyBpcnJlbGV2YW50 LCBub3QgcmVmZXJlbmNlZAogICAgdHlwZXNldCAtcCBwdHIxIHB0cjIKICAgIHR5cGVzZXQgdmFs PUxPQ0FMCiAgICAoKSB7Ci0gICAgIHB0cjE9dmFsOworICAgICBwdHIxPXZhbAogICAgICB0eXBl c2V0IC1uCiAgICAgIHByaW50ZiAiJXM9JXNcbiIgcHRyMSAiJHB0cjEiIHB0cjIgIiRwdHIyIgog ICAgfQpAQCAtNDAxLDYgKzQyMyw4OCBAQCBGOlNob3VsZCB3ZSBhbGxvdyAicHVibGljIiBuYW1l cmVmcyB0byBwcml2YXRlIHBhcmFtZXRlcnM/CiAxOnByaXZhdGUgbWF5IG5vdCBjaGFuZ2UgcGFy YW1ldGVyIHR5cGUKID8oYW5vbik6cHJpdmF0ZToyOiBjYW4ndCBjaGFuZ2UgdHlwZSBvZiBwcml2 YXRlIHBhcmFtOiB4CiAKKyAoKSB7CisgICBwcml2YXRlIGZkMSBmZDIKKyAgIGV4ZWMge2ZkMX0+ JjEKKyAgIHByaW50IE9LCisgICAoKSB7IGV4ZWMge2ZkMn0+JjIgfQorICAgcHJpbnQgQkFEICRm ZDIKKyB9CisxOnJlZGlyZWN0aW9uIGNhbm5vdCBhc3NpZ24gcHJpdmF0ZSBpbiB3cm9uZyBzY29w ZQorRjpCZXR0ZXIgaWYgY2F1Z2h0IGluIGNoZWNrY2xvYmJlcnBhcmFtKCkgYnV0IGV4ZWMuYyBk b2Vzbid0IGtub3cgc2NvcGUKKz5PSworPyhhbm9uKTogZmQyOiBjYW4ndCBtb2RpZnkgcmVhZC1v bmx5IHBhcmFtZXRlcgorCisgKCkgeworICAgcHJpdmF0ZSB6PW91dGVyCisgICBwcmludCAkeyh0 KXp9ICR6CisgICBwcmludCAke3wKKyAgICBwcmludCAkeyh0KXp9ICR6CisgICAgUkVQTFk9JHoK KyAgIH0KKyB9CiswOm5vZm9yayBtYXkgcmVhZCBwcml2YXRlIGluIGNhbGxpbmcgZnVuY3Rpb24K Kz5zY2FsYXItbG9jYWwtaGlkZS1zcGVjaWFsIG91dGVyCis+c2NhbGFyLWxvY2FsLWhpZGUtc3Bl Y2lhbCBvdXRlcgorPm91dGVyCisKKyAoKSB7CisgICBwcml2YXRlIHo9b3V0ZXIKKyAgIHByaW50 ICR7KHQpen0gJHoKKyAgIHByaW50ICR7fCBSRVBMWT0ke3x6fCB6PW5vZm9ya30gfQorICAgcHJp bnQgJHsodCl6fSAkegorIH0KKzA6bm9mb3JrIG1heSB3cml0ZSB0byBwcml2YXRlIGluIGNhbGxp bmcgZnVuY3Rpb24KKz5zY2FsYXItbG9jYWwtaGlkZS1zcGVjaWFsIG91dGVyCis+bm9mb3JrCis+ c2NhbGFyLWxvY2FsLWhpZGUtc3BlY2lhbCBub2ZvcmsKKworICgpIHsKKyAgIGxvY2FsIHE9b3V0 ZXIKKyAgIHByaW50ICR7fAorICAgICBwcml2YXRlIHE9bm9mb3JrCisgICAgIFJFUExZPSR7fCBS RVBMWT0kcX0KKyAgIH0KKyB9CiswOm5vZm9yayBjYW5ub3Qgc2VlIHByaXZhdGUgaW4gc3Vycm91 bmRpbmcgbm9mb3JrCis+b3V0ZXIKKworICgpIHsKKyAgIHByaXZhdGUgej1vdXRlcgorICAgcHJp bnQgJHsodCl6fSAkegorICAgcHJpbnQgJHt8enwKKyAgICAgcHJpdmF0ZSBxCisgICAgIHo9JHt8 cXwgcT1ub2Zvcmt9CisgICB9CisgICBwcmludCAkeyh0KXp9ICR6CisgfQorMTpub2ZvcmsgbWF5 IG5vdCBjaGFuZ2UgcHJpdmF0ZSBpbiBzdXJyb3VuZGluZyBub2ZvcmsKKz5zY2FsYXItbG9jYWwt aGlkZS1zcGVjaWFsIG91dGVyCisqPyo6IHE6IGNhbid0IG1vZGlmeSByZWFkLW9ubHkgcGFyYW1l dGVyCisKKyAoKSB7CisgICBwcml2YXRlIHE9b3V0ZXIKKyAgIHByaW50ICR7fAorICAgICAoKSB7 IFJFUExZPSJ7JHF9IiB9CisgICB9CisgICBwcmludCAke3xxfAorICAgICAoKSB7IHE9bm9mb3Jr IH0KKyAgIH0KKyB9CisxOmZ1bmN0aW9uIG1heSBub3QgYWNjZXNzIHByaXZhdGUgZnJvbSBpbnNp ZGUgbm9mb3JrCis+e30KKyo/KjogcTogY2FuJ3QgbW9kaWZ5IHJlYWQtb25seSBwYXJhbWV0ZXIK KworICgpIHsKKyAgIHByaW50ICR7fAorICAgICBwcml2YXRlIHEKKyAgICAgKCkgeyBxPW5vZm9y ayB9CisgICB9CisgfQorMTpmdW5jdGlvbiBtYXkgbm90IGFjY2VzcyBwcml2YXRlIGRlY2xhcmVk IGluIG5vZm9yaworKj8qOiBxOiBjYW4ndCBtb2RpZnkgcmVhZC1vbmx5IHBhcmFtZXRlcgorCiAl Y2xlYW4KIAorICB1bnNldG9wdCBUWVBFU0VUX1RPX1VOU0VUCiAgIHJtIC1yIHByaXZhdGUuVE1Q Cg== --000000000000b42c2606107db03f--