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_AU,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED 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 F415C21474 for ; Sun, 24 Mar 2024 15:13:23 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1711289603; b=o3hUaGnTsBHLQp8+g8CTwRuAqPMyJGPmxMHh6eDlkjdvR5YvU1GwcuLK2mYeG7wc64hCbRxtmM TXFMfBFsi0LrUKWJEy9fA3rV7/zh4bwq74y1n6Ik4oTJ2KY4eosYYpu9QZfADYaSbd7jqGwill Mu1DBBq04pa+pqucxIr0AklGuE0GbMusTim7nmSkkwMlSVH5G0/HtcOOQQgUn9LM8p0cdvDUoX xsftGinC7h17zW+Mn8P+qmwRvYVKkdTNEuoolWXx5FJu27z7JvTE7dRGfrNyXT4D2JzAvQ4wSA IfUwCHa4krO2WepBcuwTDb4mr+HaKdrvDlUBkFgDarc4Uw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (iris.zentaur.org) smtp.remote-ip=198.58.127.206; dkim=pass header.d=zentaur.org header.s=dkim20200120 header.a=rsa-sha256; dmarc=pass header.from=zentaur.org; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1711289603; bh=K6Otw53RBfttFnRFGTqd0EgwVhicfFte9c51e0+V9xQ=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Subject:From:To:MIME-Version:Date:Message-ID:Content-Type: DKIM-Signature:DKIM-Signature; b=KdEP8k1X2WU5NgTeuRUM10aajIgcm6SEYQGjJCZ4bQd/zDZQ7kf7HxXGMNhVHoklA32kz14aap EANWx5mKdPAbyCVgnbM0PZlGwhPHc4g3SvSWx33/aIshLWPBZ7MKdEWa/U+htClvS296ZcBmRj nARJujca82fQkbEJa5XvLHf5Hdy6tOFdIn60E9EG/RrlE8sRDTc7F8CWkriVsF11TUCwP8o6Rr nOshsTttGmTeIj9JaqNAqAwewHhkHoSvIzL1d9VWleawGuDUhoMXwRahty6T8VNSdNDu1ZcjaM SxTxqrDMQDAXijfM87wyX5LVuOliO6/Aj54pXM1ghcxs/w==; 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:Subject:From:To:MIME-Version:Date: Message-ID:Content-Type: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=K6Otw53RBfttFnRFGTqd0EgwVhicfFte9c51e0+V9xQ=; b=LgxoPwUxragW+YTUGcODkdamaS Nlf6M248FR4k6BgsVEzyfZwjp6FF3+Z78WyHXThn7utNCTtxgi1iczvEUyeNhWNgXtE1wP1tdFzCQ rYfwX2N4dOzXQ61zxxF7CXn2OMDvyjb0GYKsIKSvk4L/+6Lf9KYUUwMEyxVWZHpNX30oxmi3s65U2 V/yLRXOdPv4TQ1MDiYMgDc6LOVMxwGSyWIeoGvtdSpXB9sM7Ye8cLorRyh5gGF3hwUOQvcCKOHjtL 25g7T4DCU2gv3sPYqh+QBhoGZfyB1mOAt+Z7YXGH/MePTe5p4I6x6Vp7+oKv9+Crk3ulHzLrp0AGt WPNweQYQ==; Received: by zero.zsh.org with local id 1roObD-0002sw-RL; Sun, 24 Mar 2024 14:13:23 +0000 Authentication-Results: zsh.org; iprev=pass (iris.zentaur.org) smtp.remote-ip=198.58.127.206; dkim=pass header.d=zentaur.org header.s=dkim20200120 header.a=rsa-sha256; dmarc=pass header.from=zentaur.org; arc=none Received: from iris.zentaur.org ([198.58.127.206]:36790) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1roOZh-0001wP-H2; Sun, 24 Mar 2024 14:11:50 +0000 Received: from iris.zentaur.org (localhost [127.0.0.1]) by iris.zentaur.org (Postfix) with ESMTP id 4V2dKc3rdhz3wZv for ; Sun, 24 Mar 2024 14:11:48 +0000 (UTC) Authentication-Results: iris.zentaur.org (amavis); dkim=pass (2048-bit key) reason="pass (just generated, assumed good)" header.d=zentaur.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=zentaur.org; h= subject:from:to:content-language:user-agent:mime-version:date :message-id:content-type; s=dkim20200120; t=1711289504; x= 1711293105; bh=K6Otw53RBfttFnRFGTqd0EgwVhicfFte9c51e0+V9xQ=; b=D L9R5UGL6p/xQwzqlP4b7JAcoF8N9VLCiG1XfBsmOedASlA03UTNne0MSsB+geO+0 q5mX9xfmZjjYqPfk2y9XwnE4KQ+kyw+fQSmhsKWWuZFY6mdreAYjVfVMN67wUMkq +OvCZpJ+ZZSBfauxxMIoyuCYETndW42Dke/h4Ak/NPCHdD3dTDuncaXDu1dRzAlQ Fla9fRoQwHWZ837FKYvvfbnGmclnyME+DEeVjnAk1tmy1ej6ephkQ+DJNLvipuex a8TP2bTOabzqijUn1XoVn1lfXhVhCPaTsiPzH6osc4PPRUWdUdgP8dHH8/YyEMV4 tpJvWj0qUKKj5UCLDOSVQ== X-Virus-Scanned: amavis at iris.zentaur.org Received: from iris.zentaur.org ([127.0.0.1]) by iris.zentaur.org (iris.zentaur.org [127.0.0.1]) (amavis, port 10026) with ESMTP id 30shE8oWPbLO for ; Sun, 24 Mar 2024 14:11:44 +0000 (UTC) Received: from [IPV6:2605:a601:a57c:ee00::4000] (unknown [IPv6:2605:a601:a57c:ee00::4000]) by iris.zentaur.org (Postfix) with ESMTPSA id 4V2dKX4zd2z3wZt for ; Sun, 24 Mar 2024 14:11:44 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------6I8nZ3aeynTMgs8LWYp0PNT0" Message-ID: Date: Sun, 24 Mar 2024 09:11:44 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: "zsh-workers@zsh.org" From: Clinton Bunch Subject: [PATCH 1/1] zsh/random module X-Seq: 52809 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: This is a multi-part message in MIME format. --------------6I8nZ3aeynTMgs8LWYp0PNT0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit --------------6I8nZ3aeynTMgs8LWYp0PNT0 Content-Type: text/plain; charset=UTF-8; name="zsh-random-20240324.patch.txt" Content-Disposition: attachment; filename="zsh-random-20240324.patch.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZS5pbiBiL0RvYy9NYWtlZmlsZS5pbgppbmRleCBk OWJlMTgyZTkuLjExOTdlNzRhYSAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlLmluCisrKyBi L0RvYy9NYWtlZmlsZS5pbgpAQCAtNjgsNyArNjgsNyBAQCBac2gvbW9kX2hsZ3JvdXAueW8g WnNoL21vZF9sYW5naW5mby55byBcCiBac2gvbW9kX2tzaDkzLnlvIFpzaC9tb2RfbWFwZmls ZS55byBac2gvbW9kX21hdGhmdW5jLnlvIFwKIFpzaC9tb2RfbmVhcmNvbG9yLnlvIFpzaC9t b2RfbmV3dXNlci55byBcCiBac2gvbW9kX3BhcmFtZXRlci55byBac2gvbW9kX3BjcmUueW8g WnNoL21vZF9wcml2YXRlLnlvIFwKLVpzaC9tb2RfcmVnZXgueW8gWnNoL21vZF9zY2hlZC55 byBac2gvbW9kX3NvY2tldC55byBcCitac2gvbW9kX3JlZ2V4LnlvIFpzaC9tb2RfcmFuZG9t LnlvIFpzaC9tb2Rfc2NoZWQueW8gWnNoL21vZF9zb2NrZXQueW8gXAogWnNoL21vZF9zdGF0 LnlvICBac2gvbW9kX3N5c3RlbS55byBac2gvbW9kX3RjcC55byBcCiBac2gvbW9kX3Rlcm1j YXAueW8gWnNoL21vZF90ZXJtaW5mby55byBcCiBac2gvbW9kX3dhdGNoLnlvIFwKZGlmZiAt LWdpdCBhL0RvYy9ac2gvbW9kX3JhbmRvbS55byBiL0RvYy9ac2gvbW9kX3JhbmRvbS55bwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmM5ZGM3NjIzMQotLS0gL2Rl di9udWxsCisrKyBiL0RvYy9ac2gvbW9kX3JhbmRvbS55bwpAQCAtMCwwICsxLDUxIEBACitD T01NRU5UKCFNT0QhenNoL3JhbmRvbQorU29tZSBIaWdoLXF1YWxpdHkgcmFuZG9tbmVzcyBw YXJhbWV0ZXJzIGFuZCBmdW5jdGlvbnMuCishTU9EISkKK1RoZSB0dCh6c2gvcmFuZG9tKSBt b2R1bGUgZ2V0cyByYW5kb20gZGF0YSBmcm9tIHRoZSBrZXJuZWwgcmFuZG9tIHBvb2wuIElm IG5vCitrZXJuZWwgcmFuZG9tIHBvb2wgY2FuIGJlIGZvdW5kLCB0aGUgbW9kdWxlIHdpbGwg bm90IGxvYWQuCisKK3N1YnNlY3QoUGFyYW1ldGVycykKKworc3RhcnRpdGVtKCkKK3ZpbmRl eChTUkFORE9NKQoraXRlbSh0dChTUkFORE9NKSkgKAorQSByYW5kb20gcG9zaXRpdmUgMzIt Yml0IGludGVnZXIgYmV0d2VlbiAwIGFuZCA0LDI5NCw5NjcsMjk1LiAgVGhpcyBwYXJhbWV0 ZXIKK2lzIHJlYWQtb25seS4KKykKK2VuZGl0ZW0oKQorCitzdWJzZWN0KE1hdGggRnVuY3Rp b25zKQorCitzdGFydGl0ZW0oKQoraXRlbSh0dCh6cmFuZF9mbG9hdCtMUEFSKClSUEFSKCkp KSAoCitSZXR1cm5zIGEgcmFuZG9tIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAg YW5kIDEuCispCitlbmRpdGVtKCkKKworc3RhcnRpdGVtKCkKK2l0ZW0odHQoenJhbmRfaW50 KStMUEFSKCl0dCh1cHBlciksIHR0KGxvd2VyKSwgdHQoaW5jbHVzaXZlKVJQQVIoKSkgKAor UmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gdHQobG93ZXIpIGFuZCB0dCh1cHBl cikuIEFsbCBwYXJhbWV0ZXJzIGFyZQorb3B0aW9uYWwuICBJZiBub25lIGFyZSBzcGVjaWZp ZWQgaXQgaXMgZXF1aXZpbGVudCB0bwordHQoU1JBTkRPTSkuCisKK3R0KHVwcGVyKSBpcyB0 aGUgdXBwZXIgYm91bmQgb24gdGhlIHJlc3VsdGFudCBudW1iZXIgYW5kIGRlZmF1bHRzIHRv Cis0LDI5NCw5NjcsMjk1LgorCit0dChsb3dlcikgaXMgdGhlIGxvd2VyIGJvdW5kIGFuZCBk ZWZhdWx0cyB0byAwLgorCit0dChpbmNsdXNpdmUpIGlzIGEgZmxhZyB0byBkZXRlcm1pbmUg d2hldGhlciB0aGUgcmVzdWx0IGNhbiBldmVyIGVxdWFsCit0dCh1cHBlcikuICBCeSBkZWZh dWx0IGl0IGNhbiBub3QuIElmIHRoaXMgYXJndW1lbnQgaXMgc2V0IHRvIGEgbm9uLXplcm8g dmFsdWUKK3RoZW4gaXQgY2FuLgorCitUaGlzIGlzIHRvIGZhY2lsaXRhdGUgYSBjb25zdHJ1 Y3QgbGlrZSB0dCgkYVt6cmFuZF9pbnQoJCNhKSsxXSkgcmF0aGVyCit0aGFuIHR0KCRhW3py YW5kX2ludCtMUEFSKCkkI2EtMStSUEFSKCkrMV0pLgordHQoenJhbmRfaW50K0xQQVIoKTE2 UlBBUigpKSBoYXMgMTYKK3Bvc3NpYmxlIHJldHVybiB2YWx1ZXMgMC0xNSwgaW4gb3JkZXIg dG8gdXNlIGl0IGFzIGFuIGFycmF5IGluZGV4IHdoaWNoIGdvZXMKK2Zyb20gMS0xNiB5b3Ug bmVlZCB0byBhZGQgb25lLiAgU2luY2UgaXQgY2FuIHJldHVybiB6ZXJvLCB5b3UgZG9uJ3Qg d2FudCBpdAordG8gcmV0dXJuIDE2LgorCitNb3N0IHN0YXRpc3RpY3MgYWxnb3JpdGhtcyBz ZWVtIHRvIGFsc28gZXhwZWN0IDAgdG8gdHQodXBwZXIpLTEsIHNvIHRoaXMgd2FzCitkZWVt ZWQgdGhlIG1vc3QgY29tbW9ubHkgZGVzaXJlZCBjYXNlIGFuZCBjaG9zZW4gYXMgdGhlIGRl ZmF1bHQuCispCitlbmRpdGVtKCkKKwpkaWZmIC0tZ2l0IGEvU3JjL01vZHVsZXMvcmFuZG9t LmMgYi9TcmMvTW9kdWxlcy9yYW5kb20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLmEyOTE0YTgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NyYy9Nb2R1bGVzL3Jh bmRvbS5jCkBAIC0wLDAgKzEsMzQ4IEBACisvKgorICogcmFuZG9tLmMgLSBtb2R1bGUgdG8g YWNjZXNzIGtlcm5lbCByYW5kb20gc291cmNlcy4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB6c2gsIHRoZSBaIHNoZWxsLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBDbGlu dG9uIEJ1bmNoCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIHdpdGhvdXQgd3JpdHRlbiBhZ3JlZW1lbnQgYW5kIHdpdGhv dXQKKyAqIGxpY2Vuc2Ugb3Igcm95YWx0eSBmZWVzLCB0byB1c2UsIGNvcHksIG1vZGlmeSwg YW5kIGRpc3RyaWJ1dGUgdGhpcworICogc29mdHdhcmUgYW5kIHRvIGRpc3RyaWJ1dGUgbW9k aWZpZWQgdmVyc2lvbnMgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgKiBwdXJwb3NlLCBw cm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgZm9sbG93 aW5nCisgKiB0d28gcGFyYWdyYXBocyBhcHBlYXIgaW4gYWxsIGNvcGllcyBvZiB0aGlzIHNv ZnR3YXJlLgorICoKKyAqIEluIG5vIGV2ZW50IHNoYWxsIENsaW50b24gQnVuY2ggb3IgdGhl IFpzaCBEZXZlbG9wbWVudCBHcm91cCBiZSBsaWFibGUKKyAqIHRvIGFueSBwYXJ0eSBmb3Ig ZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlh bAorICogZGFtYWdlcyBhcmlzaW5nIG91dCBvZiB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUg YW5kIGl0cyBkb2N1bWVudGF0aW9uLAorICogZXZlbiBpZiBDbGludG9uIEJ1bmNoIGFuZCB0 aGUgWnNoIERldmVsb3BtZW50IEdyb3VwIGhhdmUgYmVlbiBhZHZpc2VkIG9mCisgKiB0aGUg cG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCisgKgorICogQ2xpbnRvbiBCdW5jaCBhbmQg dGhlIFpzaCBEZXZlbG9wbWVudCBHcm91cCBzcGVjaWZpY2FsbHkgZGlzY2xhaW0gYW55Cisg KiB3YXJyYW50aWVzLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdGhlIGltcGxp ZWQgd2FycmFudGllcyBvZgorICogbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBh IHBhcnRpY3VsYXIgcHVycG9zZS4gIFRoZSBzb2Z0d2FyZQorICogcHJvdmlkZWQgaGVyZXVu ZGVyIGlzIG9uIGFuICJhcyBpcyIgYmFzaXMsIGFuZCBDbGludG9uIEJ1bmNoIGFuZCB0aGUK KyAqIFpzaCBEZXZlbG9wbWVudCBHcm91cCBoYXZlIG5vIG9ibGlnYXRpb24gdG8gcHJvdmlk ZSBtYWludGVuYW5jZSwKKyAqIHN1cHBvcnQsIHVwZGF0ZXMsIGVuaGFuY2VtZW50cywgb3Ig bW9kaWZpY2F0aW9ucy4KKyAqCisgKi8KKworI2luY2x1ZGUgInJhbmRvbS5tZGgiCisKKyNp bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg PGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKwor I2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2lmZGVmIEhB VkVfU1lTX1JBTkRPTV9ICisjaW5jbHVkZSA8c3lzL3JhbmRvbS5oPgorI2VuZGlmCisKKy8q IFNpbXBsaWZ5IHNlbGVjdCBVUkFORE9NIHNwZWNpZmljIGNvZGUgKi8KKyNpZiAhZGVmaW5l ZChIQVZFX0FSQzRSQU5ET01fQlVGKSAmJiAhZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkKKyNk ZWZpbmUgVVNFX1VSQU5ET00KKyNlbmRpZgorCisvKiBidWZmZXIgdG8gcHJlLWxvYWQgaW50 ZWdlcnMgZm9yIFNSQU5ET00gdG8gbGVzc2VuIHRoZSBjb250ZXh0IHN3aXRjaGVzICovCit1 aW50MzJfdCByYW5kX2J1ZmZbOF07CitzdGF0aWMgaW50IGJ1Zl9jbnQgPSAtMTsKKworI2lm ZGVmIFVTRV9VUkFORE9NCisvKiBGaWxlIGRlc2NyaXB0b3IgZm9yIC9kZXYvdXJhbmRvbSAq LworaW50IHJhbmRmZCA9IC0xOworI2VuZGlmIC8qIFVTRV9VUkFORE9NICovCisKK3N0YXRp YyB6bG9uZyBnZXRfc3JhbmRvbShVTlVTRUQoUGFyYW0gcCkpOworLyoKKyAqICBGdW5jdGlv biB0YWtlcyBhbiBpbnB1dCBidWZmZXIgYW5kIGNvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIHRv IGhleCBhbmQKKyAqICBwbGFjZXMgdGhlbSBpbiBhbiBvdXRidXQgYnVmZmVyIHR3aWNlIHRo ZSBzaXplLiBSZXR1cm5zIC0xIGlmIGl0IGNhbid0LgorICogIFJldHVybnMgdGhlIHNpemUg b2YgdGhlIG91dHB1dCBvdGhlcndpc2UuCisgKi8KKworLyoqLworc3RhdGljIGludAorenRy X3RvX2hleChjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sIHVpbnQ4X3QgKmlucHV0LCBzaXpl X3QgaW5sZW4pCit7CisgICAgaW50IGkgPSAwLCBqID0gMDsKKworICAgIGlmIChvdXRsZW4g PCAoaW5sZW4gKiAyICsgMSkpCisJcmV0dXJuIC0xOworCisgICAgZm9yKGkgPSAwLCBqID0g MDsgaSA8IGlubGVuOyBpKyssIGorPTIpIHsKKwlpZiAoaiA8IG91dGxlbikgeworCSAgICBz cHJpbnRmKChjaGFyICopKG91dCArIGopLCIlMDJYIixpbnB1dFtpXSk7CisJfSBlbHNlIHsK KwkgICAgcmV0dXJuIC0xOworCX0KKyAgICB9CisgICAgb3V0W2pdPSdcMCc7CisgICAgcmV0 dXJuIGo7Cit9CisKKy8qKi8KK3NzaXplX3QKK2dldHJhbmRvbV9idWZmZXIodm9pZCAqYnVm LCBzaXplX3QgbGVuKQoreworICAgIHNzaXplX3QgcmV0OworICAgIHNpemVfdCAgdmFsICAg ICA9IDA7CisgICAgdWludDhfdCAqYnVmcHRyID0gYnVmOworCisgICAgZG8geworCWVycm5v ID0gMDsKKyNpZmRlZiBIQVZFX0FSQzRSQU5ET01fQlVGCisJYXJjNHJhbmRvbV9idWYoYnVm LGxlbik7CisJcmV0ID0gbGVuOworI2VsaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkKKwly ZXQ9Z2V0cmFuZG9tKGJ1ZnB0ciwobGVuIC0gdmFsKSwwKTsKKyNlbHNlCisJcmV0PXJlYWQo cmFuZGZkLGJ1ZnB0ciwobGVuIC0gdmFsKSk7CisjZW5kaWYKKwlpZiAocmV0IDwgMCkgewor CSAgICBpZiAoZXJybm8gIT0gRUlOVFIgfHwgZXJyZmxhZyB8fCByZXRmbGFnIHx8IGJyZWFr cyB8fCBjb250ZmxhZykgeworCQl6d2FybigiVW5hYmxlIHRvIGdldCByYW5kb20gZGF0YTog JWUuIiwgZXJybm8pOworCQlyZXR1cm4gLTE7CisJICAgIH0KKwl9CisJYnVmcHRyICs9IHJl dDsKKwl2YWwgICAgKz0gcmV0OworICAgIH0gd2hpbGUgKHJldCA8IGxlbik7CisgICAgcmV0 dXJuIHJldDsKK30KKworLyoKKyAqIEdlbmVyYXRlIGNvdW50IG51bWJlciBvZiByYW5kb20g MzItYml0IGludGVnZXJzIGJldHdlZW4gMCBhbmQgbWF4LTEgCisgKiBHb3QgdGhpcyBhbGdv cml0aG0gZnJvbQorICogaHR0cHM6Ly9sZW1pcmUubWUvYmxvZy8yMDE2LzA2LzMwL2Zhc3Qt cmFuZG9tLXNodWZmbGluZy8KKyAqIGFkYXB0aW5nIHRoZSBwdWJsaWMgZG9tYWluIGNvZGUu CisgKgorICovCisKKy8qKi8KK3ZvaWQKK2dldF9ib3VuZF9yYW5kb21fYnVmZmVyKHVpbnQz Ml90ICpidWZmZXIsIHNpemVfdCBjb3VudCwgdWludDMyX3QgbWF4KQoreworICAgIHVpbnQ2 NF90IG11bHRpX3Jlc3VsdDsKKyAgICB1aW50MzJfdCB0aHJlc2hvbGQ9IC1tYXggJSBtYXg7 CisgICAgdWludDMyX3QgbGVmdG92ZXI7CisKKyAgICBzaXplX3QgaTsgLyogbG9vcCBjb3Vu dGVyICovCisKKyAgICBnZXRyYW5kb21fYnVmZmVyKCh2b2lkKikgYnVmZmVyLCBjb3VudCpz aXplb2YodWludDMyX3QpKTsKKyAgICBpZiAobWF4ID09IFVJTlQzMl9NQVgpIAorCXJldHVy bjsKKworICAgIGZvcihpPTA7aTxjb3VudDtpKyspIHsKKwltdWx0aV9yZXN1bHQgPSAoKHVp bnQ2NF90KSBidWZmZXJbaV0pICogbWF4OworCWxlZnRvdmVyID0gKHVpbnQzMl90KSBtdWx0 aV9yZXN1bHQ7CisKKwkvKgorCSAqIFRoZSBmb2xsb3dpbmcgaWYgc3RhdGVtZW50IHNob3Vs ZCAoYWNjb3JkaW5nIHRvIEdvb2dsZSdzIEdlbWluaSkKKwkgKiBvbmx5IGJlIGV4ZWN1dGVk IHdpdGggYSBwcm9iYWJpbGl0eSBvZiAxLzIqKjMyIG9yIDIuMzNlLTEwCisJICovCisJaWYo bGVmdG92ZXIgPCBtYXgpIHsKKwkgICAgd2hpbGUgKGxlZnRvdmVyIDwgdGhyZXNob2xkKSB7 CisJCXVpbnQ2NF90IGo9Z2V0X3NyYW5kb20oTlVMTCk7CisJCW11bHRpX3Jlc3VsdD1qKm1h eDsKKwkJbGVmdG92ZXI9ICh1aW50MzJfdCkgbXVsdGlfcmVzdWx0OworCSAgICB9CisJfQor CWJ1ZmZlcltpXT1tdWx0aV9yZXN1bHQgPj4gMzI7CisgICAgfQorfQorCisvKgorICogUHJv dmlkZXMgZm9yIHRoZSBTUkFORE9NIHBhcmFtZXRlciBhbmQgcmV0dXJucyBhbiB1bnNpZ25l ZCAzMi1iaXQgcmFuZG9tCisgKiBpbnRlZ2VyLgorICovCisKKy8qKi8KK3N0YXRpYyB6bG9u ZworZ2V0X3NyYW5kb20oVU5VU0VEKFBhcmFtIHBtKSkgeworCisgICAgaWYoYnVmX2NudCA8 PSAwKSB7CisJZ2V0cmFuZG9tX2J1ZmZlcigodm9pZCopIHJhbmRfYnVmZixzaXplb2YocmFu ZF9idWZmKSk7CisJYnVmX2NudD1zaXplb2YocmFuZF9idWZmKS9zaXplb2YocmFuZF9idWZm WzBdKTsKKyAgICB9CisgICAgcmV0dXJuIHJhbmRfYnVmZlstLWJ1Zl9jbnRdOworfQorCisv KgorICogSW1wbGVtZW50cyBtYXRoIGZ1bmN0aW9uIHpyYW5kX2ludCB0YWtlcyAwIHRvIDMg YXJndW1lbnRzIGFuIHVwcGVyIGJvdW5kLAorICogYSBsb3dlciBib3VuZCBhbmQgYSBmbGFn IGFzIHRvIHdoZXRoZXIgdGhlIHJhbmdlIGlzIGluY2x1c2l2ZSBvciBub3QuICBUaGUKKyAq IGRlZmF1bHQgaXMgZXhjbHVzaXZlLiAgSWYgbmVpdGhlciB1cHBlciBvciBsb3dlciBpcyBz cGVjaWZpZWQgdGhpcyBpcyBubworICogZGlmZmVyZW50IHRoYW4gU1JBTkRPTS4KKyAqLwor CisvKiovCitzdGF0aWMgbW51bWJlcgorbWF0aF96cmFuZF9pbnQoVU5VU0VEKGNoYXIgKm5h bWUpLCBpbnQgYXJnYywgbW51bWJlciAqYXJndiwgVU5VU0VEKGludCBpZCkpCit7CisgICAg bW51bWJlciByZXQ7CisgICAgdWludDMyX3QgaTsKKyAgICB6bG9uZyBsb3dlcj0wLCB1cHBl cj1VSU5UMzJfTUFYLGluY2w9MCwgZGlmZjsKKworICAgIHJldC50eXBlID0gTU5fSU5URUdF UjsKKworICAgIHN3aXRjaCAoYXJnYykgeworCWNhc2UgMDogcmV0LnUubD1nZXRfc3JhbmRv bShOVUxMKTsKKwkJcmV0dXJuIHJldDsKKwkJYnJlYWs7CisJY2FzZSAzOiBpbmNsID0gKGFy Z3ZbMl0udS5sICE9IDApPzE6MDsKKwljYXNlIDI6IGxvd2VyID0gYXJndlsxXS51Lmw7CisJ Y2FzZSAxOiB1cHBlciA9IGFyZ3ZbMF0udS5sOworCWRlZmF1bHQ6IGRpZmYgPSB1cHBlci1s b3dlcitpbmNsOworICAgIH0KKworICAgIGlmIChsb3dlciA8IDAgfHwgbG93ZXIgPj0gVUlO VDMyX01BWCkgeworCXp3YXJuKCJMb3dlciBib3VuZCAoJXopIG91dCBvZiByYW5nZTogMC00 Mjk0OTY3Mjk1Iixsb3dlcik7CisgICAgfSBlbHNlIGlmICh1cHBlciA8IGxvd2VyKSB7CisJ endhcm4oIlVwcGVyIGJvdW5kICgleikgbXVzdCBiZSBncmVhdGVyIHRoYW4gTG93ZXIgQm91 bmQgKCV6KSIsdXBwZXIsbG93ZXIpOworICAgIH0gZWxzZSBpZiAodXBwZXIgPCAwIHx8IHVw cGVyID49IFVJTlQzMl9NQVgpIHsKKwl6d2FybigiVXBwZXIgYm91bmQgKCV6KSBvdXQgb2Yg cmFuZ2U6IDAtNDI5NDk2NzI5NSIsdXBwZXIpOworICAgIH0KKworICAgIGlmICggZGlmZiA9 PSAwICkgeworCXJldC51Lmw9dXBwZXI7IC8qIHN0aWxsIG5vdCBjb252aW5jZWQgdGhpcyBz aG91bGRuJ3QgYmUgYW4gZXJyb3IuICovCisgICAgfSBlbHNlIHsKKwlnZXRfYm91bmRfcmFu ZG9tX2J1ZmZlcigmaSwxLCh1aW50MzJfdCkgZGlmZik7CisJcmV0LnUubD1pK2xvd2VyOwor ICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCisvKgorICogSW1wbGVtZW50cyB0aGUgbWF0 aGZ1bmMgenJhbmRvbSBhbmQgcmV0dXJucyBhIHJhbmRvbSBmbG9hdGluZy1wb2ludAorICog bnVtYmVyIGJldHdlZW4gMCBhbmQgMS4gIAorICoKKyAqLworCisvKiovCitzdGF0aWMgbW51 bWJlcgorbWF0aF96cmFuZF9mbG9hdChVTlVTRUQoY2hhciAqbmFtZSksIFVOVVNFRChpbnQg YXJnYyksIFVOVVNFRChtbnVtYmVyICphcmd2KSwKKwkgICAgIFVOVVNFRChpbnQgaWQpKQor eworICAgIG1udW1iZXIgcmV0OworICAgIGRvdWJsZSByOworCisgICAgciA9IHJhbmRvbV9y ZWFsKCk7CisgICAgaWYgKHIgPCAwKSB7CisJendhcm5uYW0obmFtZSwgIkZhaWxlZCB0byBn ZXQgc3VmZmljaWVudCByYW5kb20gZGF0YS4iKTsKKyAgICB9CisgICAgcmV0LnR5cGUgPSBN Tl9GTE9BVDsKKyAgICByZXQudS5kID0gcjsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZ3N1X2ludGVnZXIgc3JhbmRvbV9nc3UgPQoreyBnZXRfc3Jh bmRvbSwgbnVsbGludHNldGZuLCBzdGR1bnNldGZuIH07CisKK3N0YXRpYyBzdHJ1Y3QgcGFy YW1kZWYgcGF0YWJbXSA9IHsKKyAgICB7IlNSQU5ET00iLCBQTV9JTlRFR0VSIHwgUE1fUkVB RE9OTFlfU1BFQ0lBTCB8IFBNX0hJREVWQUwsIE5VTEwsCisJICAgICZzcmFuZG9tX2dzdSwg TlVMTCwgTlVMTCwgTlVMTH0sCit9OworCitzdGF0aWMgc3RydWN0IG1hdGhmdW5jIG1mdGFi W10gPSB7CisgICAgTlVNTUFUSEZVTkMoInpyYW5kX2Zsb2F0IiwgbWF0aF96cmFuZF9mbG9h dCwgMCwgMCwgMCksCisgICAgTlVNTUFUSEZVTkMoInpyYW5kX2ludCIsIG1hdGhfenJhbmRf aW50LCAwLCAzLCAwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmVhdHVyZXMgbW9kdWxlX2Zl YXR1cmVzID0geworICAgIE5VTEwsIDAsCisgICAgTlVMTCwgMCwKKyAgICBtZnRhYiwgc2l6 ZW9mKG1mdGFiKS9zaXplb2YoKm1mdGFiKSwKKyAgICBwYXRhYiwgc2l6ZW9mKHBhdGFiKS9z aXplb2YoKnBhdGFiKSwKKyAgICAwCit9OworCisvKiovCitpbnQKK3NldHVwXyhVTlVTRUQo TW9kdWxlIG0pKQoreworI2lmZGVmIFVTRV9VUkFORE9NCisgICAgLyogQ2hlY2sgZm9yIHRo ZSBleGlzdGVuY2Ugb2YgL2Rldi91cmFuZG9tICovCisKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsK KworICAgIGVycm5vPTA7CisgICAgaWYgKHN0YXQoIi9kZXYvdXJhbmRvbSIsJnN0KSA8IDAp IHsKKwl6d2FybigiRXJyb3IgZ2V0dGluZyBrZXJuZWwgcmFuZG9tIHBvb2w6ICVlLiIsIGVy cm5vKTsKKwlyZXR1cm4gMTsKKyAgICB9CisKKyAgICBlcnJubz0wOworICAgIGlmICghKFNf SVNDSFIoc3Quc3RfbW9kZSkpICkgeworCXp3YXJuKCJFcnJvciBnZXR0aW5nIGtlcm5lbCBy YW5kb20gcG9vbDogJWUuIiwgZXJybm8pOworCXJldHVybiAxOworICAgIH0KKyNlbmRpZiAv KiBVU0VfVVJBTkRPTSAqLworICAgIHJldHVybiAwOworfQorCisvKiovCitpbnQKK2ZlYXR1 cmVzXyhNb2R1bGUgbSwgY2hhciAqKipmZWF0dXJlcykKK3sKKyAgICAqZmVhdHVyZXMgPSBm ZWF0dXJlc2FycmF5KG0sICZtb2R1bGVfZmVhdHVyZXMpOworICAgIHJldHVybiAwOworfQor CisvKiovCitpbnQKK2VuYWJsZXNfKE1vZHVsZSBtLCBpbnQgKiplbmFibGVzKQoreworICAg IHJldHVybiBoYW5kbGVmZWF0dXJlcyhtLCAmbW9kdWxlX2ZlYXR1cmVzLCBlbmFibGVzKTsK K30KKworLyoqLworaW50Citib290XyhNb2R1bGUgbSkKK3sKKyNpZmRlZiBVU0VfVVJBTkRP TQorICAgIC8qCisgICAgICogT3BlbiAvZGV2L3VyYW5kb20uICBIZXJlIGJlY2F1c2Ugb2Yg YSB3ZWlyZCBpc3N1ZSBvbiBIUC1VWCAxMS4zMQorICAgICAqIFdoZW4gb3BlbmluZyBpbiBz ZXR1cF8gb3BlbiByZXR1cm5lZCAwLiAgSW4gYm9vdF8sIGl0IHJldHVybnMKKyAgICAgKiBh biB1bnVzZWQgZmlsZSBkZXNjcmlwdG9yLiBEZWNpZGVkIGFnYWluc3QgaWZkZWYgSFBVWCBh cyBpdCB3b3JrcworICAgICAqIGhlcmUganVzdCBhcyB3ZWxsIGZvciBvdGhlciBwbGF0Zm9y bXMuCisgICAgICoKKyAgICAgKi8KKworICAgIGludCB0bXBmZD0tMTsKKworICAgIGVycm5v PTA7CisgICAgaWYgKCh0bXBmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKSkg PCAwKSB7CisJendhcm4oIkNvdWxkIG5vdCBhY2Nlc3Mga2VybmVsIHJhbmRvbSBwb29sOiAl ZS4iLGVycm5vKTsKKwlyZXR1cm4gMTsKKyAgICB9CisgICAgcmFuZGZkID0gbW92ZWZkKHRt cGZkKTsKKyAgICBhZGRtb2R1bGVmZChyYW5kZmQsRkRUX01PRFVMRSk7CisgICAgaWYgKHJh bmRmZCA8IDApIHsKKwl6d2FybigiQ291bGQgbm90IGFjY2VzcyBrZXJuZWwgcmFuZG9tIHBv b2wuIik7CisJcmV0dXJuIDE7CisgICAgfQorI2VuZGlmIC8qIFVTRV9VUkFORE9NICovCisg ICAgcmV0dXJuIDA7Cit9CisKKy8qKi8KK2ludAorY2xlYW51cF8oTW9kdWxlIG0pCit7Cisg ICAgcmV0dXJuIHNldGZlYXR1cmVlbmFibGVzKG0sICZtb2R1bGVfZmVhdHVyZXMsIE5VTEwp OworfQorCisvKiovCitpbnQKK2ZpbmlzaF8oVU5VU0VEKE1vZHVsZSBtKSkKK3sKKyNpZmRl ZiBVU0VfVVJBTkRPTQorICAgIGlmIChyYW5kZmQgPj0gMCkKKwl6Y2xvc2UocmFuZGZkKTsK KyNlbmRpZiAvKiBVU0VfVVJBTkRPTSAqLworICAgIHJldHVybiAwOworfQorCmRpZmYgLS1n aXQgYS9TcmMvTW9kdWxlcy9yYW5kb20ubWRkIGIvU3JjL01vZHVsZXMvcmFuZG9tLm1kZApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdhNzVmMjlmZgotLS0gL2Rl di9udWxsCisrKyBiL1NyYy9Nb2R1bGVzL3JhbmRvbS5tZGQKQEAgLTAsMCArMSw3IEBACitu YW1lPXpzaC9yYW5kb20KK2xpbms9ZWl0aGVyCitsb2FkPXllcworCithdXRvZmVhdHVyZXM9 InA6U1JBTkRPTSBmOnpyYW5kX2Zsb2F0IGY6enJhbmRfaW50IgorCitvYmplY3RzPSJyYW5k b20ubyByYW5kb21fcmVhbC5vIgpkaWZmIC0tZ2l0IGEvU3JjL01vZHVsZXMvcmFuZG9tX3Jl YWwuYyBiL1NyYy9Nb2R1bGVzL3JhbmRvbV9yZWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi45MDAzNjA0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9TcmMvTW9k dWxlcy9yYW5kb21fcmVhbC5jCkBAIC0wLDAgKzEsMjEzIEBACisvKiAgVGhpcyBmaWxlIGNv bnRhaW5zIGNvZGUgdW5kZXIgZGlmZmVyZW50IGNvcHlyaWdodHMgc2VwYXJhdGVkIGJ5ICov CisvKiA9PT09QEBAQEA9PT0gKi8KKworLyoKKyAqIHJhbmRvbV9yZWFsLmMgLSBtb2R1bGUg dG8gYWNjZXNzIGtlcm5lbCByYW5kb20gc291cmNlcy4KKyAqCisgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB6c2gsIHRoZSBaIHNoZWxsLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBD bGludG9uIEJ1bmNoCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIHdpdGhvdXQgd3JpdHRlbiBhZ3JlZW1lbnQgYW5kIHdp dGhvdXQKKyAqIGxpY2Vuc2Ugb3Igcm95YWx0eSBmZWVzLCB0byB1c2UsIGNvcHksIG1vZGlm eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcworICogc29mdHdhcmUgYW5kIHRvIGRpc3RyaWJ1dGUg bW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgKiBwdXJwb3Nl LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgZm9s bG93aW5nCisgKiB0d28gcGFyYWdyYXBocyBhcHBlYXIgaW4gYWxsIGNvcGllcyBvZiB0aGlz IHNvZnR3YXJlLgorICoKKyAqIEluIG5vIGV2ZW50IHNoYWxsIENsaW50b24gQnVuY2ggb3Ig dGhlIFpzaCBEZXZlbG9wbWVudCBHcm91cCBiZSBsaWFibGUKKyAqIHRvIGFueSBwYXJ0eSBm b3IgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVu dGlhbAorICogZGFtYWdlcyBhcmlzaW5nIG91dCBvZiB0aGUgdXNlIG9mIHRoaXMgc29mdHdh cmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uLAorICogZXZlbiBpZiBDbGludG9uIEJ1bmNoIGFu ZCB0aGUgWnNoIERldmVsb3BtZW50IEdyb3VwIGhhdmUgYmVlbiBhZHZpc2VkIG9mCisgKiB0 aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCisgKgorICogQ2xpbnRvbiBCdW5jaCBh bmQgdGhlIFpzaCBEZXZlbG9wbWVudCBHcm91cCBzcGVjaWZpY2FsbHkgZGlzY2xhaW0gYW55 CisgKiB3YXJyYW50aWVzLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdGhlIGlt cGxpZWQgd2FycmFudGllcyBvZgorICogbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZv ciBhIHBhcnRpY3VsYXIgcHVycG9zZS4gIFRoZSBzb2Z0d2FyZQorICogcHJvdmlkZWQgaGVy ZXVuZGVyIGlzIG9uIGFuICJhcyBpcyIgYmFzaXMsIGFuZCBDbGludG9uIEJ1bmNoIGFuZCB0 aGUKKyAqIFpzaCBEZXZlbG9wbWVudCBHcm91cCBoYXZlIG5vIG9ibGlnYXRpb24gdG8gcHJv dmlkZSBtYWludGVuYW5jZSwKKyAqIHN1cHBvcnQsIHVwZGF0ZXMsIGVuaGFuY2VtZW50cywg b3IgbW9kaWZpY2F0aW9ucy4KKyAqCisgKi8KKworI2luY2x1ZGUgInJhbmRvbS5tZGgiCisK KyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8ZXJy bm8uaD4KKworCisvKiBDb3VudCB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MsIGhvcGVm dWxseSBpbiBnY2MvY2xhbmcgYnkgSFcKKyAqIGluc3RydWN0aW9uICovCisjaWYgZGVmaW5l ZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIGNsejY0KHgpIF9f YnVpbHRpbl9jbHpsbCh4KQorI2Vsc2UKKyNkZWZpbmUgY2x6NjQoeCkgX3pjbHo2NCh4KQor CisvKiovCitpbnQKK196Y2x6NjQodWludDY0X3QgeCkgeworICAgIGludCBuID0gMDsKKwor ICAgIGlmICh4ID09IDApCisJcmV0dXJuIDY0OworCisgICAgaWYgKCEoeCAmIDB4RkZGRkZG RkYwMDAwMDAwMHVsbCkpIHsKKwluKz0zMjsKKwl4PDw9MzI7CisgICAgfQorICAgIGlmICgh KHggJiAweEZGRkYwMDAwMDAwMDAwMDB1bGwpKSB7CisJbis9MTY7CisJeDw8PTE2OworICAg IH0KKyAgICBpZiAoISh4ICYgMHhGRjAwMDAwMDAwMDAwMDAwdWxsKSkgeworCW4rPTg7CisJ eDw8PTg7CisgICAgfQorICAgIGlmICghKHggJiAweEYwMDAwMDAwMDAwMDAwMDB1bGwpKSB7 CisJbis9NDsKKwl4PDw9NDsKKyAgICB9CisgICAgaWYgKCEoeCAmIDB4QzAwMDAwMDAwMDAw MDAwMHVsbCkpIHsKKwluKz0yOworCXg8PD0xOworICAgIH0KKyAgICBpZiAoISh4ICYgMHg4 MDAwMDAwMDAwMDAwMDAwdWxsKSkgeworCW4rPTE7CisgICAgfQorICAgIHJldHVybiBuOwor fQorI2VuZGlmIC8qIF9fR05VX0NfXyBvciBfX2NsYW5nX18gKi8KKworLyoqLwordWludDY0 X3QKK3JhbmRvbV82NGJpdCh2b2lkKSB7CisgICAgdWludDY0X3QgcjsKKworICAgIGlmKGdl dHJhbmRvbV9idWZmZXIoJnIsc2l6ZW9mKHIpKSA8IDApIHsKKwl6d2FybigienNoL3JhbmRv bTogQ2FuJ3QgZ2V0IHN1ZmZpY2llbnQgcmFuZG9tIGRhdGEuIik7CisJcmV0dXJuIDE7IC8q IDAgd2lsbCBjYXVzZSBsb29wICovCisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisKKy8q ID09PT1AQEBAQD09PSAqLworLyogRm9sbG93aW5nIGNvZGUgaXMgdW5kZXIgdGhlIGJlbG93 IGNvcHlyaWdodCwgZGVzcGl0ZSBjaGFuZ2VzIGZvciBlcnJvcgorICogaGFuZGxpbmcgYW5k IHJlbW92aW5nIEdDQ2lzbXMgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgVGF5 bG9yIFIuIENhbXBiZWxsCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUg TElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMK KyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor ICovCisKKy8qCisgKiBVbmlmb3JtIHJhbmRvbSBmbG9hdHM6IEhvdyB0byBnZW5lcmF0ZSBh IGRvdWJsZS1wcmVjaXNpb24KKyAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaW4gWzAsIDFd IHVuaWZvcm1seSBhdCByYW5kb20gZ2l2ZW4gYSB1bmlmb3JtCisgKiByYW5kb20gc291cmNl IG9mIGJpdHMuCisgKgorICogU2VlIDxodHRwOi8vbXVtYmxlLm5ldC9+Y2FtcGJlbGwvMjAx NC8wNC8yOC91bmlmb3JtLXJhbmRvbS1mbG9hdD4KKyAqIGZvciBleHBsYW5hdGlvbi4KKyAq CisgKiBVcGRhdGVkIDIwMTUtMDItMjIgdG8gcmVwbGFjZSBsZGV4cCh4LCA8Y29uc3RhbnQ+ KSBieSB4ICogbGRleHAoMSwKKyAqIDxjb25zdGFudD4pLCBzaW5jZSBnbGliYyBhbmQgTmV0 QlNEIGxpYm0gYm90aCBoYXZlIHNsb3cgc29mdHdhcmUKKyAqIGJpdC10d2lkZGxpbmcgaW1w bGVtZW50YXRpb25zIG9mIGxkZXhwLCBidXQgR0NDIGNhbiBjb25zdGFudC1mb2xkCisgKiB0 aGUgbGF0dGVyLgorICovCisKKy8qCisgKiByYW5kb21fcmVhbDogR2VuZXJhdGUgYSBzdHJl YW0gb2YgYml0cyB1bmlmb3JtbHkgYXQgcmFuZG9tIGFuZAorICogaW50ZXJwcmV0IGl0IGFz IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIGJpbmFyeSBleHBhbnNpb24gb2YgYQorICog bnVtYmVyIGluIFswLCAxXSwgMC4wMDAwMTAxMDAxMTExMTAxMDEwMC4uLjsgdGhlbiByb3Vu ZCBpdC4KKyAqLworCisvKiovCitkb3VibGUKK3JhbmRvbV9yZWFsKHZvaWQpCit7CisJaW50 IGV4cG9uZW50ID0gMDsKKwl1aW50NjRfdCBzaWduaWZpY2FuZCA9IDA7CisJdWludDY0X3Qg ciA9IDA7CisJdW5zaWduZWQgc2hpZnQ7CisKKwkvKgorCSAqIFJlYWQgemVyb3MgaW50byB0 aGUgZXhwb25lbnQgdW50aWwgd2UgaGl0IGEgb25lOyB0aGUgcmVzdAorCSAqIHdpbGwgZ28g aW50byB0aGUgc2lnbmlmaWNhbmQuCisJICovCisJd2hpbGUgKHNpZ25pZmljYW5kID09IDAp IHsKKwkJZXhwb25lbnQgLT0gNjQ7CisKKwkJLyogR2V0IHJhbmRvbV82NGJpdCBhbmQgY2hl Y2sgZm9yIGVycm9yICovCisJCWVycm5vID0gMDsKKwkJc2lnbmlmaWNhbmQgPSByYW5kb21f NjRiaXQoKTsKKwkJaWYgKGVycm5vKQorCQkgICAgcmV0dXJuIC0xOworCQkvKgorCQkgKiBJ ZiB0aGUgZXhwb25lbnQgZmFsbHMgYmVsb3cgLTEwNzQgPSBlbWluICsgMSAtIHAsCisJCSAq IHRoZSBleHBvbmVudCBvZiB0aGUgc21hbGxlc3Qgc3Vibm9ybWFsLCB3ZSBhcmUKKwkJICog Z3VhcmFudGVlZCB0aGUgcmVzdWx0IHdpbGwgYmUgcm91bmRlZCB0byB6ZXJvLiAgVGhpcwor CQkgKiBjYXNlIGlzIHNvIHVubGlrZWx5IGl0IHdpbGwgaGFwcGVuIGluIHJlYWxpc3RpYwor CQkgKiB0ZXJtcyBvbmx5IGlmIHJhbmRvbV82NGJpdCBpcyBicm9rZW4uCisJCSAqLworCQlp ZiAoZXhwb25lbnQgPCAtMTA3NCkKKwkJCXJldHVybiAwOworCX0KKworCS8qCisJICogVGhl cmUgaXMgYSAxIHNvbWV3aGVyZSBpbiBzaWduaWZpY2FuZCwgbm90IG5lY2Vzc2FyaWx5IGlu CisJICogdGhlIG1vc3Qgc2lnbmlmaWNhbnQgcG9zaXRpb24uICBJZiB0aGVyZSBhcmUgbGVh ZGluZyB6ZXJvcywKKwkgKiBzaGlmdCB0aGVtIGludG8gdGhlIGV4cG9uZW50IGFuZCByZWZp bGwgdGhlIGxlc3Mtc2lnbmlmaWNhbnQKKwkgKiBiaXRzIG9mIHRoZSBzaWduaWZpY2FuZC4g IENhbid0IHByZWRpY3Qgb25lIHdheSBvciBhbm90aGVyCisJICogd2hldGhlciB0aGVyZSBh cmUgbGVhZGluZyB6ZXJvczogdGhlcmUncyBhIGZpZnR5LWZpZnR5CisJICogY2hhbmNlLCBp ZiByYW5kb21fNjRiaXQgaXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkLgorCSAqLworCXNoaWZ0 ID0gY2x6NjQoc2lnbmlmaWNhbmQpOworCWlmIChzaGlmdCAhPSAwKSB7CisKKwkJZXJybm8g PSAwOworCQlyID0gcmFuZG9tXzY0Yml0KCk7CisJCWlmIChlcnJubykKKwkJICAgIHJldHVy biAtMTsKKworCQlleHBvbmVudCAtPSBzaGlmdDsKKwkJc2lnbmlmaWNhbmQgPDw9IHNoaWZ0 OworCQlzaWduaWZpY2FuZCB8PSAociA+PiAoNjQgLSBzaGlmdCkpOworCX0KKworCS8qCisJ ICogU2V0IHRoZSBzdGlja3kgYml0LCBzaW5jZSB0aGVyZSBpcyBhbG1vc3Qgc3VyZWx5IGFu b3RoZXIgMQorCSAqIGluIHRoZSBiaXQgc3RyZWFtLiAgT3RoZXJ3aXNlLCB3ZSBtaWdodCBy b3VuZCB3aGF0IGxvb2tzCisJICogbGlrZSBhIHRpZSB0byBldmVuIHdoZW4sIGFsbW9zdCBz dXJlbHksIHdlcmUgd2UgdG8gbG9vaworCSAqIGZ1cnRoZXIgaW4gdGhlIGJpdCBzdHJlYW0s IHRoZXJlIHdvdWxkIGJlIGEgMSBicmVha2luZyB0aGUKKwkgKiB0aWUuCisJICovCisJc2ln bmlmaWNhbmQgfD0gMTsKKworCS8qCisJICogRmluYWxseSwgY29udmVydCB0byBkb3VibGUg KHJvdW5kaW5nKSBhbmQgc2NhbGUgYnkKKwkgKiAyXmV4cG9uZW50LgorCSAqLworCXJldHVy biBsZGV4cCgoZG91YmxlKXNpZ25pZmljYW5kLCBleHBvbmVudCk7Cit9CisvKiA9PT09QEBA QEA9PT0gKi8KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRl eCBiYTNmMmZlOTAuLjM3MTM5Mjg4NSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBi L2NvbmZpZ3VyZS5hYwpAQCAtNjM4LDYgKzYzOCw3IEBAIGZpCiBBQ19DSEVDS19IRUFERVJT KHN5cy90aW1lLmggc3lzL3RpbWVzLmggc3lzL3NlbGVjdC5oIHRlcm1jYXAuaCB0ZXJtaW8u aCBcCiAJCSB0ZXJtaW9zLmggc3lzL3BhcmFtLmggc3lzL2ZpbGlvLmggc3RyaW5nLmggbWVt b3J5LmggXAogCQkgbGltaXRzLmggZmNudGwuaCBsaWJjLmggc3lzL3V0c25hbWUuaCBzeXMv cmVzb3VyY2UuaCBcCisgICAgICAgICAgICAgICAgIHN5cy9yYW5kb20uaCBcCiAJCSBsb2Nh bGUuaCBlcnJuby5oIHN0ZGlvLmggc3RkYXJnLmggdmFyYXJncy5oIHN0ZGxpYi5oIFwKIAkJ IHVuaXN0ZC5oIHN5cy9jYXBhYmlsaXR5LmggXAogCQkgdXRtcC5oIHV0bXB4Lmggc3lzL3R5 cGVzLmggcHdkLmggZ3JwLmggcG9sbC5oIHN5cy9tbWFuLmggXApAQCAtMTI5NCw2ICsxMjk1 LDcgQEAgQUNfQ0hFQ0tfRlVOQ1Moc3RyZnRpbWUgc3RycHRpbWUgbWt0aW1lIHRpbWVsb2Nh bCBcCiAJICAgICAgIGN5Z3dpbl9jb252X3BhdGggXAogCSAgICAgICBuYW5vc2xlZXAgXAog CSAgICAgICBzcmFuZF9kZXRlcm1pbmlzdGljIFwKKyAgICAgICAgICAgICAgIGdldHJhbmRv bSBhcmM0cmFuZG9tX2J1ZiBcCiAJICAgICAgIHNldHV0eGVudCBnZXR1dHhlbnQgZW5kdXR4 ZW50IGdldHV0ZW50KQogQUNfRlVOQ19TVFJDT0xMCiAK --------------6I8nZ3aeynTMgs8LWYp0PNT0--