From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80074.outbound.protection.outlook.com [40.107.8.74]) by sourceware.org (Postfix) with ESMTPS id CA4403857365 for ; Mon, 16 May 2022 12:17:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CA4403857365 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=DNwnA+viYMKl91Tl8a3gFA23C9Tg/m3b1Ws9eQRPUZLJqxPfyOxpZT0GOTLdEFDy4PZWquAaQiE2F53bYK/41k3I7RIXmI1VQetaYogQDGtAprYe7URUlI1jO8BAnUoG/rukDynpbY80qyJ/dKjNlHR1yY4EZgJD8q0EFEuXFu5Jat2X5POTrSxP9TJ7noVbbXnazjJeigO1L/ZWiedHGI6ikCIZVlKscrYWtkSEN/j71U/W41oiN9s0ld2LQ1nLBoIopjJrqdLYOskGEHiGiUTI7NkBMw0x14NL12pBNcUsUqxJGYDiEjHh+XJa3cbExU7m6G/pJkC+UUeirQre2A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ol/EOfqtaKUrvcftKh4NWhxVZNGpr9xy8H/pdlZwaJ0=; b=dWhek2ls6Ka33eWqgplKbgAMLJQobnapdSnnKHPqn2052L+nruJAdj3SUu4weUmEoir3cANJ8PuhFahGeL8XLD/u3wASRn4um0IhB70uP08Z5qTeirz1UxAih7bF9KauINuNbEDLbisMp7Bdmt2tzTbTG9sM9rseKXzL0MxI03DbkdR8zexLF8aTQMNd/FsMdKTCcDPv/zQLZhKejCE49KJFOkBPFOhyxPL7xIqJuziPSz+k8v8xTNQPThRfK2oS/b1a51RxMCRreHwY4leV1+ryjQBqwGsFSzNno/8pMXY5qNwC/rgATA8Iu8Qlqh0caDEnmzntK7VpvhoQEKl/yg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AM7PR04CA0027.eurprd04.prod.outlook.com (2603:10a6:20b:110::37) by DB7PR08MB3338.eurprd08.prod.outlook.com (2603:10a6:5:1b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.14; Mon, 16 May 2022 12:17:46 +0000 Received: from AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:110:cafe::4c) by AM7PR04CA0027.outlook.office365.com (2603:10a6:20b:110::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18 via Frontend Transport; Mon, 16 May 2022 12:17:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT003.mail.protection.outlook.com (10.152.16.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13 via Frontend Transport; Mon, 16 May 2022 12:17:46 +0000 Received: ("Tessian outbound 3314dea8c23c:v119"); Mon, 16 May 2022 12:17:46 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7c9ad8f3b8426e48 X-CR-MTA-TID: 64aa7808 Received: from 5a7c89bdfdf0.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8DF1C42D-9283-4DC1-AAFD-883A0F03BD5A.1; Mon, 16 May 2022 12:17:34 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5a7c89bdfdf0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 16 May 2022 12:17:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GbrSHJlpSJM//x/e35wsZDmBeSGHacU4WEgi7F8a+tDwF4mHxwCLTf18sFbCF9Hx207YH8fFNkVZdR0pBRoRlukeD63VGrQVMDSCAvg0D5JVetskpCQR1hQJnnHBf/6bsLvx+NZUBjcZsJzQWbok7VKz83u76ZTqBM9hPcFX1JzEuPETPylaSwdA+T9TnfOGhPhT+66zhjLrQl6W5eAdSiJruYa9oijXC9iVjPwiBD2AaVopyI2utuNzY59mcF9YZMCXumcv/45b1opWLIYwVChRY+BPQpg17l8gspNr2mjhBVNOfi4jFZCwx+bH5jYpAVmanuxnP1ZLeLV7ZyFObQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ol/EOfqtaKUrvcftKh4NWhxVZNGpr9xy8H/pdlZwaJ0=; b=f/YVDoFnT1n1sQ9/cVjrVeSBlCHGK2/UOkV7oENpiaS3LJ/hXMoU+sZxoOpDjvcTARxova84NBh/+cQktiPtoWL+KMu+bhJSoy3wtPc91Vbijr4WoqU5D4tzDtLj1g8dLcz3K3GLD0B/z08k4B/5Iz4WXy/IND/0Ud/C8kGcVykFKXK7g1ug0ij58hQaEgmR6O62Ts+NuHDa96utDDJZS92wTuBOAsm9iVpB4EUaCPLWqxs00lzzStERpnVe9dAQA8o//tlQ+0nsD87TdSy/Pwhnpzvo786lNASy/Vx5c/bqE1e1V8bBmPCblNrhXEt/j5dfw/xpN5zS1/5cRlgBew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3694.eurprd08.prod.outlook.com (2603:10a6:803:b6::26) by AS8PR08MB6087.eurprd08.prod.outlook.com (2603:10a6:20b:29c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Mon, 16 May 2022 12:17:32 +0000 Received: from VI1PR08MB3694.eurprd08.prod.outlook.com ([fe80::1916:206:dd8b:6a91]) by VI1PR08MB3694.eurprd08.prod.outlook.com ([fe80::1916:206:dd8b:6a91%4]) with mapi id 15.20.5250.018; Mon, 16 May 2022 12:17:31 +0000 Content-Type: multipart/mixed; boundary="------------s4rh9IbwbQ2R0IhtLR48Ddmo" Message-ID: <95205c6b-5d80-3b76-d619-8c2fd4f3f4a8@arm.com> Date: Mon, 16 May 2022 14:17:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [PATCH v2 02/10] aarch64: Add backend support for DFP Content-Language: en-US To: Christophe Lyon via Gcc-patches , richard.sandiford@arm.com References: <20220509143507.239804-3-christophe.lyon@arm.com> <20220513160827.303091-1-christophe.lyon@arm.com> From: Christophe Lyon In-Reply-To: X-ClientProxiedBy: LO4P123CA0491.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::10) To VI1PR08MB3694.eurprd08.prod.outlook.com (2603:10a6:803:b6::26) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: aab01401-5899-4930-7bce-08da37361602 X-MS-TrafficTypeDiagnostic: AS8PR08MB6087:EE_|AM5EUR03FT003:EE_|DB7PR08MB3338:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 0367yyEuKyxvY1/VmCn0zK8+SzfgBNE9sFUJ9fV2M6c1nMsC+Do3P6/ANvqnlBYRa7lcqzxZyG/IWLnoj3PwNSzMVD/6BikcSIIRLCAGaY3lqPJrEm1XYvAV2Og05xhOKNTfRCfgOhS/zyQSCGKsikmEbOPx6d6zfCxrg6rxDkrOISf6vksW5iI/cEwpFsAnZVriznjZIuJfBvVuXP0e4D+aO3zOp+ksFYHYWegqKVI0mIvWGwXTaRe1QDHZCmrBvnCQmi1YqVsgF3S/kQatb5maGX8DzpVWlgNK2OwAXOZkE95MPaZmZampHwrqBj2ESRyotP10k+eGilA+av4ZgGAV2u4dBdzHJvKdIVqIHizsOf51NIWdQ0gFDlNPO/BQTGM70fKzZac4sNfrqX3u1wikfYl4JdQvdiPxxYOTHronZWXgafJrXzAVigmCvFhUBo20eGrP7Zjr53ND5DF4p/cqnTkXkpUeMOs42B7d9I3O2OJF7PSWYcrBeexMdgCfcEP25WPWYPWoh87QA7RXZJ4lyUfEcl+wPuQphrqNdCvQC895/IgGOpmk0jk5C5zvNMHY4EvMIcNf39LA1y5XZ0ZzoUiS1Pi3cSkoVyCXSv9paHOvtk86MfTi1GhR5Nz0rRjruWEC5b//O4kl+0sPon4UCNDrRfrKusbhERZmRxugIFG6uppDqYIv2og/xCDqoEzD4JiIIr/Dj8BWF7H4VAASHufSPccxo3atzV7utIY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB3694.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(31696002)(44832011)(86362001)(66476007)(38100700002)(2906002)(66556008)(508600001)(53546011)(66946007)(33964004)(235185007)(5660300002)(36756003)(8676002)(8936002)(186003)(2616005)(6636002)(316002)(31686004)(6506007)(6486002)(6512007)(26005)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6087 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 595553f4-fb17-4454-81c8-08da37360c97 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XnFCCMID4h4kHh1PSR2/loNSdtSjFvxyODcmFh0yrSBwlXQFarWoPD9WmuzHMOYjCoLQ5++hlwZQD9P94r7J8pEDlmqcNGCaTe9qR3t9NmgASiNlU3ZLf6UDRoZAGPN2sOAuD/mkV6Bu3+KdeSCe3X/VSc68N9ppyt4Pr4/HI8FnvkbWyI3KwMipUJ5emfgwtrSsuigODo6K8bVHkSKxjCIyCHA6hgPvBZg5GYzplt3sdRNT17c/C1dl75yWNzv52wFIxzTHynOBTg74d28bakYi7aOE9k+zPCzlzpmkE66goZQf0wBECLnOgocU+ZVswXx+4YrpcUuahFz+tBU3lMntXSiL6+wd7I1pxM/t+xt1VsDcOckpeRm+ZrVKX/nLagxs38fEu+0B2DLC3R3w0fOvjCEyR3IAFs9TfuFdDjk22v5Xj+SPMvRI6u9g1wpfEnFby0hDS9jIYH4felFXXcytXp6B4HlwlgpOUueR9lwMjqxC7krIOv90P7WHSF7V1LUSdt7vCMT9ZC7XfPO7s9DvpK99qu/0KIiG9EkJZpRZ6f4xiRmmHFxYdi5RSTtSbQPIxpGd5enhMW9Ls93jDNb9ZtqcB5eVIYU22gMCUUVfmWnACKh4EbE/kt1PAHiNh11qVSgoKi2w98FgV9CBwFaabbFTiAq65toc99eSFNhv9MP7td3q3xtsw3M11ZBIWpzg9osXMGfpNKOnN9/yAg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(316002)(356005)(82310400005)(33964004)(8676002)(6506007)(2616005)(47076005)(86362001)(6636002)(186003)(235185007)(70206006)(5660300002)(70586007)(508600001)(31696002)(40460700003)(36860700001)(31686004)(26005)(81166007)(6512007)(336012)(44832011)(6486002)(2906002)(8936002)(36756003)(53546011)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2022 12:17:46.2588 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aab01401-5899-4930-7bce-08da37361602 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3338 X-Spam-Status: No, score=-13.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 May 2022 12:17:53 -0000 --------------s4rh9IbwbQ2R0IhtLR48Ddmo Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 5/13/22 18:35, Richard Sandiford wrote: > Christophe Lyon via Gcc-patches writes: >> @@ -19352,7 +19363,9 @@ aarch64_legitimate_constant_p (machine_mode mode, rtx x) >> { >> /* Support CSE and rematerialization of common constants. */ >> if (CONST_INT_P (x) >> - || (CONST_DOUBLE_P (x) && GET_MODE_CLASS (mode) == MODE_FLOAT)) >> + || (CONST_DOUBLE_P (x) >> + && (GET_MODE_CLASS (mode) == MODE_FLOAT >> + || GET_MODE_CLASS (mode) == MODE_DECIMAL_FLOAT))) >> return true; >> >> /* Only accept variable-length vector constants if they can be > > I'd prefer to remove the mode check here, rather than extend it. > If we see a CONST_DOUBLE that doesn't have a scalar float mode > then something has gone wrong. (No need to assert for that though. > It's a fundamental assumption when TARGET_SUPPORTS_WIDE_INT.) > > For consistency… > >> @@ -11114,11 +11116,16 @@ aarch64_float_const_rtx_p (rtx x) >> return false; >> } >> >> -/* Return TRUE if rtx X is immediate constant 0.0 */ >> +/* Return TRUE if rtx X is immediate constant 0.0 (but not in Decimal >> + Floating Point). */ >> bool >> aarch64_float_const_zero_rtx_p (rtx x) >> { >> - if (GET_MODE (x) == VOIDmode) >> + if (GET_MODE (x) == VOIDmode >> + /* 0.0 in Decimal Floating Point cannot be represented by #0 or >> + zr as our callers expect, so no need to check the actual >> + value if X is of Decimal Floating Point type. */ >> + || GET_MODE_CLASS (GET_MODE (x)) == MODE_DECIMAL_FLOAT) > > …it would be good to drop the VOIDmode check here at the same time. > > OK with those changes, thanks. > Thanks, here is what I will commit once patch 9/10 is approved. > Richard --------------s4rh9IbwbQ2R0IhtLR48Ddmo Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-aarch64-Add-backend-support-for-DFP.patch" Content-Disposition: attachment; filename="v3-0002-aarch64-Add-backend-support-for-DFP.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZGJlZjZkMzg3MDBiMjUyNTUxMzA5YmZkNjU3YzA0MDJhN2UzMzlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGhlIEx5b24gPGNocmlzdG9waGUubHlvbkBhcm0u Y29tPgpEYXRlOiBGcmksIDExIE1hciAyMDIyIDE2OjIxOjAyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MyAwMi8xMF0gYWFyY2g2NDogQWRkIGJhY2tlbmQgc3VwcG9ydCBmb3IgREZQCgpUaGlzIHBh dGNoIHVwZGF0ZXMgdGhlIGFhcmNoNjQgYmFja2VuZCBhcyBuZWVkZWQgdG8gc3VwcG9ydCBERlAg bW9kZXMKKFNELCBERCBhbmQgVEQpLgoKQ2hhbmdlcwl2MS0+djI6CgoqIERyb3AJc3VwcG9ydAlm b3IgREZQCW1vZGVzIGluCiAgYWFyY2g2NF9nZW5fe2xvYWR8fHN0b3JlfVt3Yl1fcGFpciBhcyB0 aGVzZSBhcmUgb25seSB1c2VkIGluCiAgcHJvbG9ndWUvZXBpbG9ndWUgd2hlcmUgREZQIG1vZGVz IGFyZSBub3QgdXNlZC4gIERyb3AJdGhlCiAgY2hhbmdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBw YXR0ZXJucyBpbiBhYXJjaDY0Lm1kLCBhbmQKICB1c2VsZXNzIEdQRl9QQUlSIGl0ZXJhdG9yLgoK KiBJbiBhYXJjaDY0X3JlaW50ZXJwcmV0X2Zsb2F0X2FzX2ludCwgaGFuZGxlIEREbW9kZSB0aGUg c2FtZSB3YXkKICBhcyBERm1vZGUgKG5lZWRlZCBpbiBjYXNlIHRoZSByZXByZXNlbnRhdGlvbiBv ZiB0aGUKICBmbG9hdGluZy1wb2ludCB2YWx1ZSBjYW4gYmUgbG9hZGVkIHVzaW5nIG1vdi9tb3Zr LgoKKiBJbiBhYXJjaDY0X2Zsb2F0X2NvbnN0X3plcm9fcnR4X3AsIHJlamVjdCBjb25zdGFudHMg d2l0aCBERlAKICBtb2RlOiB3aGVuIFggaXMgemVybywgdGhlIGNhbGxlcnMgd2FudCB0byBlbWl0 IGVpdGhlciAnMCcgb3IKICAnenInIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCwgd2hpY2ggaXMg bm90IHRoZSB3YXkgMC4wIGlzCiAgcmVwcmVzZW50ZWQgaW4gREZQIG1vZGUgKGluIHBhcnRpY3Vs YXIgZm1vdiBkMCwgIzAgaXMgbm90IHJpZ2h0CiAgZm9yIERGUCkuCgoqIEluIGFhcmNoNjRfbGVn aXRpbWF0ZV9jb25zdGFudF9wLCBhY2NlcHQgREZQCgoyMDIyLTAzLTMxICBDaHJpc3RvcGhlIEx5 b24gIDxjaHJpc3RvcGhlLmx5b25AYXJtLmNvbT4KCglnY2MvCgkqIGNvbmZpZy9hYXJjaDY0L2Fh cmNoNjQuY2MKCShhYXJjaDY0X3NwbGl0XzEyOGJpdF9tb3ZlKTogSGFuZGxlIERGUCBtb2Rlcy4K CShhYXJjaDY0X21vZGVfdmFsaWRfZm9yX3NjaGVkX2Z1c2lvbl9wKTogTGlrZXdpc2UuCgkoYWFy Y2g2NF9jbGFzc2lmeV9hZGRyZXNzKTogTGlrZXdpc2UuCgkoYWFyY2g2NF9sZWdpdGltaXplX2Fk ZHJlc3NfZGlzcGxhY2VtZW50KTogTGlrZXdpc2UuCgkoYWFyY2g2NF9yZWludGVycHJldF9mbG9h dF9hc19pbnQpOiBMaWtld2lzZS4KCShhYXJjaDY0X2Zsb2F0X2NvbnN0X3plcm9fcnR4X3ApOiBM aWtld2lzZS4KCShhYXJjaDY0X2Nhbl9jb25zdF9tb3ZpX3J0eF9wKTogTGlrZXdpc2UuCgkoYWFy Y2g2NF9hbmNob3Jfb2Zmc2V0KTogTGlrZXdpc2UuCgkoYWFyY2g2NF9zZWNvbmRhcnlfcmVsb2Fk KTogTGlrZXdpc2UuCgkoYWFyY2g2NF9ydHhfY29zdHMpOiBMaWtld2lzZS4KCShhYXJjaDY0X2xl Z2l0aW1hdGVfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKGFhcmNoNjRfZ2ltcGxpZnlfdmFfYXJn X2V4cHIpOiBMaWtld2lzZS4KCShhYXBjc192ZnBfc3ViX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJ KGFhcmNoNjRfdmZwX2lzX2NhbGxfb3JfcmV0dXJuX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGFh cmNoNjRfb3V0cHV0X3NjYWxhcl9zaW1kX21vdl9pbW1lZGlhdGUpOiBMaWtld2lzZS4KCShhYXJj aDY0X2dlbl9hZGp1c3RlZF9sZHBzdHApOiBMaWtld2lzZS4KCShhYXJjaDY0X3NjYWxhcl9tb2Rl X3N1cHBvcnRlZF9wKTogQWNjZXB0IERGUCBtb2RlcyBpZiBlbmFibGVkLgoJKiBjb25maWcvYWFy Y2g2NC9hYXJjaDY0Lm1kCgkobW92c2ZfYWFyY2g2NCk6IFVzZSBTRkQgaXRlcmF0b3IgYW5kIHJl bmFtZSBpbnRvCgltb3Y8bW9kZT5fYWFyY2g2NC4KCShtb3ZkZl9hYXJjaDY0KTogVXNlIERGRCBp dGVyYXRvciBhbmQgcmVuYW1lIGludG8KCW1vdjxtb2RlPl9hYXJjaDY0LgoJKG1vdnRmX2FhcmNo NjQpOiBVc2UgVEZEIGl0ZXJhdG9yIGFuZCByZW5hbWUgaW50bwoJbW92PG1vZGU+X2FhcmNoNjQu Cgkoc3BsaXQgcGF0dGVybiBmb3IgbW92ZSBURiBtb2RlKTogVXNlIFRGRCBpdGVyYXRvci4KCSog Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC9pdGVyYXRvcnMubWQKCShHUEZfVEZfRjE2X01PVik6IEFk ZCBERlAgbW9kZXMuCgkoU0ZELCBERkQsIFRGRCk6IE5ldyBpdGVyYXRvcnMuCgkoR1BGX1RGKTog QWRkIERGUCBtb2Rlcy4KCShUWCwgRFgsIERYMik6IExpa2V3aXNlLgotLS0KIGdjYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LmNjICAgfCA4MiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0KIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kICAgfCAzNCArKysrKysrLS0tLS0tLQog Z2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZCB8IDI0ICsrKysrKystLS0KIDMgZmlsZXMg Y2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2 NC5jYwppbmRleCBiZDg1NTc1ODc3OC4uOTQ4OWMyZmNhZjkgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LmNjCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNj CkBAIC00ODI4LDcgKzQ4MjgsNyBAQCBhYXJjaDY0X3NwbGl0XzEyOGJpdF9tb3ZlIChydHggZHN0 LCBydHggc3JjKQogCiAgIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGRzdCk7CiAKLSAg Z2NjX2Fzc2VydCAobW9kZSA9PSBUSW1vZGUgfHwgbW9kZSA9PSBURm1vZGUpOworICBnY2NfYXNz ZXJ0IChtb2RlID09IFRJbW9kZSB8fCBtb2RlID09IFRGbW9kZSB8fCBtb2RlID09IFREbW9kZSk7 CiAgIGdjY19hc3NlcnQgKCEoc2lkZV9lZmZlY3RzX3AgKHNyYykgfHwgc2lkZV9lZmZlY3RzX3Ag KGRzdCkpKTsKICAgZ2NjX2Fzc2VydCAobW9kZSA9PSBHRVRfTU9ERSAoc3JjKSB8fCBHRVRfTU9E RSAoc3JjKSA9PSBWT0lEbW9kZSk7CiAKQEAgLTEwNTY4LDYgKzEwNTY4LDcgQEAgYWFyY2g2NF9t b2RlX3ZhbGlkX2Zvcl9zY2hlZF9mdXNpb25fcCAobWFjaGluZV9tb2RlIG1vZGUpCiB7CiAgIHJl dHVybiBtb2RlID09IFNJbW9kZSB8fCBtb2RlID09IERJbW9kZQogCSB8fCBtb2RlID09IFNGbW9k ZSB8fCBtb2RlID09IERGbW9kZQorCSB8fCBtb2RlID09IFNEbW9kZSB8fCBtb2RlID09IEREbW9k ZQogCSB8fCAoYWFyY2g2NF92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcCAobW9kZSkKIAkgICAgICYm IChrbm93bl9lcSAoR0VUX01PREVfU0laRSAobW9kZSksIDgpCiAJCSB8fCAoa25vd25fZXEgKEdF VF9NT0RFX1NJWkUgKG1vZGUpLCAxNikKQEAgLTEwNjEwLDEyICsxMDYxMSwxMyBAQCBhYXJjaDY0 X2NsYXNzaWZ5X2FkZHJlc3MgKHN0cnVjdCBhYXJjaDY0X2FkZHJlc3NfaW5mbyAqaW5mbywKICAg dmVjX2ZsYWdzICY9IH5WRUNfUEFSVElBTDsKIAogICAvKiBPbiBCRSwgd2UgdXNlIGxvYWQvc3Rv cmUgcGFpciBmb3IgYWxsIGxhcmdlIGludCBtb2RlIGxvYWQvc3RvcmVzLgotICAgICBUSS9URm1v ZGUgbWF5IGFsc28gdXNlIGEgbG9hZC9zdG9yZSBwYWlyLiAgKi8KKyAgICAgVEkvVEYvVERtb2Rl IG1heSBhbHNvIHVzZSBhIGxvYWQvc3RvcmUgcGFpci4gICovCiAgIGJvb2wgYWR2c2ltZF9zdHJ1 Y3RfcCA9ICh2ZWNfZmxhZ3MgPT0gKFZFQ19BRFZTSU1EIHwgVkVDX1NUUlVDVCkpOwogICBib29s IGxvYWRfc3RvcmVfcGFpcl9wID0gKHR5cGUgPT0gQUREUl9RVUVSWV9MRFBfU1RQCiAJCQkgICAg fHwgdHlwZSA9PSBBRERSX1FVRVJZX0xEUF9TVFBfTgogCQkJICAgIHx8IG1vZGUgPT0gVEltb2Rl CiAJCQkgICAgfHwgbW9kZSA9PSBURm1vZGUKKwkJCSAgICB8fCBtb2RlID09IFREbW9kZQogCQkJ ICAgIHx8IChCWVRFU19CSUdfRU5ESUFOICYmIGFkdnNpbWRfc3RydWN0X3ApKTsKICAgLyogSWYg d2UgYXJlIGRlYWxpbmcgd2l0aCBBRERSX1FVRVJZX0xEUF9TVFBfTiB0aGF0IG1lYW5zIHRoZSBp bmNvbWluZyBtb2RlCiAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUg bWVtb3J5IGJlaW5nIGxvYWRlZC9zdG9yZWQgYW5kIHRoZQpAQCAtMTA2ODksNyArMTA2OTEsNyBA QCBhYXJjaDY0X2NsYXNzaWZ5X2FkZHJlc3MgKHN0cnVjdCBhYXJjaDY0X2FkZHJlc3NfaW5mbyAq aW5mbywKIAkgIGluZm8tPm9mZnNldCA9IG9wMTsKIAkgIGluZm8tPmNvbnN0X29mZnNldCA9IG9m ZnNldDsKIAotCSAgLyogVEltb2RlIGFuZCBURm1vZGUgdmFsdWVzIGFyZSBhbGxvd2VkIGluIGJv dGggcGFpcnMgb2YgWAorCSAgLyogVEltb2RlLCBURm1vZGUgYW5kIFREbW9kZSB2YWx1ZXMgYXJl IGFsbG93ZWQgaW4gYm90aCBwYWlycyBvZiBYCiAJICAgICByZWdpc3RlcnMgYW5kIGluZGl2aWR1 YWwgUSByZWdpc3RlcnMuICBUaGUgYXZhaWxhYmxlCiAJICAgICBhZGRyZXNzIG1vZGVzIGFyZToK IAkgICAgIFgsWDogNy1iaXQgc2lnbmVkIHNjYWxlZCBvZmZzZXQKQEAgLTEwNjk4LDcgKzEwNzAw LDcgQEAgYWFyY2g2NF9jbGFzc2lmeV9hZGRyZXNzIChzdHJ1Y3QgYWFyY2g2NF9hZGRyZXNzX2lu Zm8gKmluZm8sCiAJICAgICBXaGVuIHBlcmZvcm1pbmcgdGhlIGNoZWNrIGZvciBwYWlycyBvZiBY IHJlZ2lzdGVycyBpLmUuICBMRFAvU1RQCiAJICAgICBwYXNzIGRvd24gREltb2RlIHNpbmNlIHRo YXQgaXMgdGhlIG5hdHVyYWwgc2l6ZSBvZiB0aGUgTERQL1NUUAogCSAgICAgaW5zdHJ1Y3Rpb24g bWVtb3J5IGFjY2Vzc2VzLiAgKi8KLQkgIGlmIChtb2RlID09IFRJbW9kZSB8fCBtb2RlID09IFRG bW9kZSkKKwkgIGlmIChtb2RlID09IFRJbW9kZSB8fCBtb2RlID09IFRGbW9kZSB8fCBtb2RlID09 IFREbW9kZSkKIAkgICAgcmV0dXJuIChhYXJjaDY0X29mZnNldF83Yml0X3NpZ25lZF9zY2FsZWRf cCAoREltb2RlLCBvZmZzZXQpCiAJCSAgICAmJiAoYWFyY2g2NF9vZmZzZXRfOWJpdF9zaWduZWRf dW5zY2FsZWRfcCAobW9kZSwgb2Zmc2V0KQogCQkJfHwgb2Zmc2V0XzEyYml0X3Vuc2lnbmVkX3Nj YWxlZF9wIChtb2RlLCBvZmZzZXQpKSk7CkBAIC0xMDgyMSwxNCArMTA4MjMsMTQgQEAgYWFyY2g2 NF9jbGFzc2lmeV9hZGRyZXNzIChzdHJ1Y3QgYWFyY2g2NF9hZGRyZXNzX2luZm8gKmluZm8sCiAJ ICBpbmZvLT5vZmZzZXQgPSBYRVhQIChYRVhQICh4LCAxKSwgMSk7CiAJICBpbmZvLT5jb25zdF9v ZmZzZXQgPSBvZmZzZXQ7CiAKLQkgIC8qIFRJbW9kZSBhbmQgVEZtb2RlIHZhbHVlcyBhcmUgYWxs b3dlZCBpbiBib3RoIHBhaXJzIG9mIFgKKwkgIC8qIFRJbW9kZSwgVEZtb2RlIGFuZCBURG1vZGUg dmFsdWVzIGFyZSBhbGxvd2VkIGluIGJvdGggcGFpcnMgb2YgWAogCSAgICAgcmVnaXN0ZXJzIGFu ZCBpbmRpdmlkdWFsIFEgcmVnaXN0ZXJzLiAgVGhlIGF2YWlsYWJsZQogCSAgICAgYWRkcmVzcyBt b2RlcyBhcmU6CiAJICAgICBYLFg6IDctYml0IHNpZ25lZCBzY2FsZWQgb2Zmc2V0CiAJICAgICBR OiAgIDktYml0IHNpZ25lZCBvZmZzZXQKIAkgICAgIFdlIGNvbnNlcnZhdGl2ZWx5IHJlcXVpcmUg YW4gb2Zmc2V0IHJlcHJlc2VudGFibGUgaW4gZWl0aGVyIG1vZGUuCiAJICAgKi8KLQkgIGlmICht b2RlID09IFRJbW9kZSB8fCBtb2RlID09IFRGbW9kZSkKKwkgIGlmIChtb2RlID09IFRJbW9kZSB8 fCBtb2RlID09IFRGbW9kZSB8fCBtb2RlID09IFREbW9kZSkKIAkgICAgcmV0dXJuIChhYXJjaDY0 X29mZnNldF83Yml0X3NpZ25lZF9zY2FsZWRfcCAobW9kZSwgb2Zmc2V0KQogCQkgICAgJiYgYWFy Y2g2NF9vZmZzZXRfOWJpdF9zaWduZWRfdW5zY2FsZWRfcCAobW9kZSwgb2Zmc2V0KSk7CiAKQEAg LTEwOTkwLDkgKzEwOTkyLDkgQEAgYWFyY2g2NF9sZWdpdGltaXplX2FkZHJlc3NfZGlzcGxhY2Vt ZW50IChydHggKm9mZnNldDEsIHJ0eCAqb2Zmc2V0MiwKIAkgb2Zmc2V0LiAgVXNlIDRLQiByYW5n ZSBmb3IgMS0gYW5kIDItYnl0ZSBhY2Nlc3NlcyBhbmQgYSAxNktCCiAJIHJhbmdlIG90aGVyd2lz ZSB0byBpbmNyZWFzZSBvcHBvcnR1bml0aWVzIGZvciBzaGFyaW5nIHRoZSBiYXNlCiAJIGFkZHJl c3Mgb2YgZGlmZmVyZW50IHNpemVzLiAgVW5hbGlnbmVkIGFjY2Vzc2VzIHVzZSB0aGUgc2lnbmVk Ci0JIDktYml0IHJhbmdlLCBUSW1vZGUvVEZtb2RlIHVzZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHNp Z25lZAorCSA5LWJpdCByYW5nZSwgVEltb2RlL1RGbW9kZS9URG1vZGUgdXNlIHRoZSBpbnRlcnNl Y3Rpb24gb2Ygc2lnbmVkCiAJIHNjYWxlZCA3LWJpdCBhbmQgc2lnbmVkIDktYml0IG9mZnNldC4g ICovCi0gICAgICBpZiAobW9kZSA9PSBUSW1vZGUgfHwgbW9kZSA9PSBURm1vZGUpCisgICAgICBp ZiAobW9kZSA9PSBUSW1vZGUgfHwgbW9kZSA9PSBURm1vZGUgfHwgbW9kZSA9PSBURG1vZGUpCiAJ c2Vjb25kX29mZnNldCA9ICgoY29uc3Rfb2Zmc2V0ICsgMHgxMDApICYgMHgxZjgpIC0gMHgxMDA7 CiAgICAgICBlbHNlIGlmICgoY29uc3Rfb2Zmc2V0ICYgKHNpemUgLSAxKSkgIT0gMCkKIAlzZWNv bmRfb2Zmc2V0ID0gKChjb25zdF9vZmZzZXQgKyAweDEwMCkgJiAweDFmZikgLSAweDEwMDsKQEAg LTExMDczLDcgKzExMDc1LDcgQEAgYWFyY2g2NF9yZWludGVycHJldF9mbG9hdF9hc19pbnQgKHJ0 eCB2YWx1ZSwgdW5zaWduZWQgSE9TVF9XSURFX0lOVCAqaW50dmFsKQogCQkgIENPTlNUX0RPVUJM RV9SRUFMX1ZBTFVFICh2YWx1ZSksCiAJCSAgUkVBTF9NT0RFX0ZPUk1BVCAobW9kZSkpOwogCi0g IGlmIChtb2RlID09IERGbW9kZSkKKyAgaWYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERt b2RlKQogICAgIHsKICAgICAgIGludCBvcmRlciA9IEJZVEVTX0JJR19FTkRJQU4gPyAxIDogMDsK ICAgICAgIGl2YWwgPSB6ZXh0X2h3aSAocmVzW29yZGVyXSwgMzIpOwpAQCAtMTExMTQsMTEgKzEx MTE2LDE1IEBAIGFhcmNoNjRfZmxvYXRfY29uc3RfcnR4X3AgKHJ0eCB4KQogICByZXR1cm4gZmFs c2U7CiB9CiAKLS8qIFJldHVybiBUUlVFIGlmIHJ0eCBYIGlzIGltbWVkaWF0ZSBjb25zdGFudCAw LjAgKi8KKy8qIFJldHVybiBUUlVFIGlmIHJ0eCBYIGlzIGltbWVkaWF0ZSBjb25zdGFudCAwLjAg KGJ1dCBub3QgaW4gRGVjaW1hbAorICAgRmxvYXRpbmcgUG9pbnQpLiAgKi8KIGJvb2wKIGFhcmNo NjRfZmxvYXRfY29uc3RfemVyb19ydHhfcCAocnR4IHgpCiB7Ci0gIGlmIChHRVRfTU9ERSAoeCkg PT0gVk9JRG1vZGUpCisgIC8qIDAuMCBpbiBEZWNpbWFsIEZsb2F0aW5nIFBvaW50IGNhbm5vdCBi ZSByZXByZXNlbnRlZCBieSAjMCBvcgorICAgICB6ciBhcyBvdXIgY2FsbGVycyBleHBlY3QsIHNv IG5vIG5lZWQgdG8gY2hlY2sgdGhlIGFjdHVhbAorICAgICB2YWx1ZSBpZiBYIGlzIG9mIERlY2lt YWwgRmxvYXRpbmcgUG9pbnQgdHlwZS4gICovCisgIGlmIChHRVRfTU9ERV9DTEFTUyAoR0VUX01P REUgKHgpKSA9PSBNT0RFX0RFQ0lNQUxfRkxPQVQpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGlm IChSRUFMX1ZBTFVFX01JTlVTX1pFUk8gKCpDT05TVF9ET1VCTEVfUkVBTF9WQUxVRSAoeCkpKQpA QCAtMTExNTYsNyArMTExNjIsNyBAQCBhYXJjaDY0X2Nhbl9jb25zdF9tb3ZpX3J0eF9wIChydHgg eCwgbWFjaGluZV9tb2RlIG1vZGUpCiAgIGVsc2UKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgIC8q IHVzZSBhIDY0IGJpdCBtb2RlIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgREkvREYgbW9kZSwg d2hlcmUgd2UgdXNlCisgICAvKiB1c2UgYSA2NCBiaXQgbW9kZSBmb3IgZXZlcnl0aGluZyBleGNl cHQgZm9yIERJL0RGL0REIG1vZGUsIHdoZXJlIHdlIHVzZQogICAgICBhIDEyOCBiaXQgdmVjdG9y IG1vZGUuICAqLwogICBpbnQgd2lkdGggPSBHRVRfTU9ERV9CSVRTSVpFIChpbW9kZSkgPT0gNjQg PyAxMjggOiA2NDsKIApAQCAtMTIzNTYsNyArMTIzNjIsNyBAQCBhYXJjaDY0X2FuY2hvcl9vZmZz ZXQgKEhPU1RfV0lERV9JTlQgb2Zmc2V0LCBIT1NUX1dJREVfSU5UIHNpemUsCiAgIGlmIChJTl9S QU5HRSAob2Zmc2V0LCAtMjU2LCAwKSkKICAgICByZXR1cm4gMDsKIAotICBpZiAobW9kZSA9PSBU SW1vZGUgfHwgbW9kZSA9PSBURm1vZGUpCisgIGlmIChtb2RlID09IFRJbW9kZSB8fCBtb2RlID09 IFRGbW9kZSB8fCBtb2RlID09IFREbW9kZSkKICAgICByZXR1cm4gKG9mZnNldCArIDB4MTAwKSAm IH4weDFmZjsKIAogICAvKiBVc2UgMTItYml0IG9mZnNldCBieSBhY2Nlc3Mgc2l6ZS4gICovCkBA IC0xMjQ2NSw3ICsxMjQ3MSw5IEBAIGFhcmNoNjRfc2Vjb25kYXJ5X3JlbG9hZCAoYm9vbCBpbl9w IEFUVFJJQlVURV9VTlVTRUQsIHJ0eCB4LAogCiAgIC8qIFdpdGhvdXQgdGhlIFRBUkdFVF9TSU1E IGluc3RydWN0aW9ucyB3ZSBjYW5ub3QgbW92ZSBhIFEgcmVnaXN0ZXIKICAgICAgdG8gYSBRIHJl Z2lzdGVyIGRpcmVjdGx5LiAgV2UgbmVlZCBhIHNjcmF0Y2guICAqLwotICBpZiAoUkVHX1AgKHgp ICYmIChtb2RlID09IFRGbW9kZSB8fCBtb2RlID09IFRJbW9kZSkgJiYgbW9kZSA9PSBHRVRfTU9E RSAoeCkKKyAgaWYgKFJFR19QICh4KQorICAgICAgJiYgKG1vZGUgPT0gVEZtb2RlIHx8IG1vZGUg PT0gVEltb2RlIHx8IG1vZGUgPT0gVERtb2RlKQorICAgICAgJiYgbW9kZSA9PSBHRVRfTU9ERSAo eCkKICAgICAgICYmIEZQX1JFR05VTV9QIChSRUdOTyAoeCkpICYmICFUQVJHRVRfU0lNRAogICAg ICAgJiYgcmVnX2NsYXNzX3N1YnNldF9wIChyY2xhc3MsIEZQX1JFR1MpKQogICAgIHsKQEAgLTEy NDczLDE0ICsxMjQ4MSwxNiBAQCBhYXJjaDY0X3NlY29uZGFyeV9yZWxvYWQgKGJvb2wgaW5fcCBB VFRSSUJVVEVfVU5VU0VELCBydHggeCwKICAgICAgIHJldHVybiBOT19SRUdTOwogICAgIH0KIAot ICAvKiBBIFRGbW9kZSBvciBUSW1vZGUgbWVtb3J5IGFjY2VzcyBzaG91bGQgYmUgaGFuZGxlZCB2 aWEgYW4gRlBfUkVHUworICAvKiBBIFRGbW9kZSwgVEltb2RlIG9yIFREbW9kZSBtZW1vcnkgYWNj ZXNzIHNob3VsZCBiZSBoYW5kbGVkIHZpYSBhbiBGUF9SRUdTCiAgICAgIGJlY2F1c2UgQUFyY2g2 NCBoYXMgcmljaGVyIGFkZHJlc3NpbmcgbW9kZXMgZm9yIExEUi9TVFIgaW5zdHJ1Y3Rpb25zCiAg ICAgIHRoYW4gTERQL1NUUCBpbnN0cnVjdGlvbnMuICAqLwogICBpZiAoVEFSR0VUX0ZMT0FUICYm IHJjbGFzcyA9PSBHRU5FUkFMX1JFR1MKICAgICAgICYmIGtub3duX2VxIChHRVRfTU9ERV9TSVpF IChtb2RlKSwgMTYpICYmIE1FTV9QICh4KSkKICAgICByZXR1cm4gRlBfUkVHUzsKIAotICBpZiAo cmNsYXNzID09IEZQX1JFR1MgJiYgKG1vZGUgPT0gVEltb2RlIHx8IG1vZGUgPT0gVEZtb2RlKSAm JiBDT05TVEFOVF9QKHgpKQorICBpZiAocmNsYXNzID09IEZQX1JFR1MKKyAgICAgICYmIChtb2Rl ID09IFRJbW9kZSB8fCBtb2RlID09IFRGbW9kZSB8fCBtb2RlID09IFREbW9kZSkKKyAgICAgICYm IENPTlNUQU5UX1AoeCkpCiAgICAgICByZXR1cm4gR0VORVJBTF9SRUdTOwogCiAgIHJldHVybiBO T19SRUdTOwpAQCAtMTM2MTEsOSArMTM2MjEsOSBAQCBhYXJjaDY0X3J0eF9jb3N0cyAocnR4IHgs IG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgb3V0ZXIgQVRUUklCVVRFX1VOVVNFRCwKIAkJKmNvc3Qg Kz0gZXh0cmFfY29zdC0+bGRzdC5zdG9yZXY7CiAJICAgICAgZWxzZSBpZiAoR0VUX01PREVfQ0xB U1MgKG1vZGUpID09IE1PREVfSU5UKQogCQkqY29zdCArPSBleHRyYV9jb3N0LT5sZHN0LnN0b3Jl OwotCSAgICAgIGVsc2UgaWYgKG1vZGUgPT0gU0Ztb2RlKQorCSAgICAgIGVsc2UgaWYgKG1vZGUg PT0gU0Ztb2RlIHx8IG1vZGUgPT0gU0Rtb2RlKQogCQkqY29zdCArPSBleHRyYV9jb3N0LT5sZHN0 LnN0b3JlZjsKLQkgICAgICBlbHNlIGlmIChtb2RlID09IERGbW9kZSkKKwkgICAgICBlbHNlIGlm IChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IEREbW9kZSkKIAkJKmNvc3QgKz0gZXh0cmFfY29z dC0+bGRzdC5zdG9yZWQ7CiAKIAkgICAgICAqY29zdCArPQpAQCAtMTM3MzcsMTEgKzEzNzQ3LDEx IEBAIGFhcmNoNjRfcnR4X2Nvc3RzIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIGludCBvdXRl ciBBVFRSSUJVVEVfVU5VU0VELAogCSAgLyogbW92W2RmLHNmXV9hYXJjaDY0LiAgKi8KIAkgIGlm IChhYXJjaDY0X2Zsb2F0X2NvbnN0X3JlcHJlc2VudGFibGVfcCAoeCkpCiAJICAgIC8qIEZNT1Yg KHNjYWxhciBpbW1lZGlhdGUpLiAgKi8KLQkgICAgKmNvc3QgKz0gZXh0cmFfY29zdC0+ZnBbbW9k ZSA9PSBERm1vZGVdLmZwY29uc3Q7CisJICAgICpjb3N0ICs9IGV4dHJhX2Nvc3QtPmZwW21vZGUg PT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlXS5mcGNvbnN0OwogCSAgZWxzZSBpZiAoIWFhcmNo NjRfZmxvYXRfY29uc3RfemVyb19ydHhfcCAoeCkpCiAJICAgIHsKIAkgICAgICAvKiBUaGlzIHdp bGwgYmUgYSBsb2FkIGZyb20gbWVtb3J5LiAgKi8KLQkgICAgICBpZiAobW9kZSA9PSBERm1vZGUp CisJICAgICAgaWYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlKQogCQkqY29zdCAr PSBleHRyYV9jb3N0LT5sZHN0LmxvYWRkOwogCSAgICAgIGVsc2UKIAkJKmNvc3QgKz0gZXh0cmFf Y29zdC0+bGRzdC5sb2FkZjsKQEAgLTEzNzY3LDkgKzEzNzc3LDkgQEAgYWFyY2g2NF9ydHhfY29z dHMgKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgaW50IG91dGVyIEFUVFJJQlVURV9VTlVTRUQs CiAJICAgICpjb3N0ICs9IGV4dHJhX2Nvc3QtPmxkc3QubG9hZHY7CiAJICBlbHNlIGlmIChHRVRf TU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9JTlQpCiAJICAgICpjb3N0ICs9IGV4dHJhX2Nvc3Qt Pmxkc3QubG9hZDsKLQkgIGVsc2UgaWYgKG1vZGUgPT0gU0Ztb2RlKQorCSAgZWxzZSBpZiAobW9k ZSA9PSBTRm1vZGUgfHwgbW9kZSA9PSBTRG1vZGUpCiAJICAgICpjb3N0ICs9IGV4dHJhX2Nvc3Qt Pmxkc3QubG9hZGY7Ci0JICBlbHNlIGlmIChtb2RlID09IERGbW9kZSkKKwkgIGVsc2UgaWYgKG1v ZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlKQogCSAgICAqY29zdCArPSBleHRyYV9jb3N0 LT5sZHN0LmxvYWRkOwogCiAJICAqY29zdCArPQpAQCAtMTkzNTIsNyArMTkzNjIsNyBAQCBhYXJj aDY0X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCAobWFjaGluZV9tb2RlIG1vZGUsIHJ0eCB4KQogewog ICAvKiBTdXBwb3J0IENTRSBhbmQgcmVtYXRlcmlhbGl6YXRpb24gb2YgY29tbW9uIGNvbnN0YW50 cy4gICovCiAgIGlmIChDT05TVF9JTlRfUCAoeCkKLSAgICAgIHx8IChDT05TVF9ET1VCTEVfUCAo eCkgJiYgR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfRkxPQVQpKQorICAgICAgfHwgQ09O U1RfRE9VQkxFX1AgKHgpKQogICAgIHJldHVybiB0cnVlOwogCiAgIC8qIE9ubHkgYWNjZXB0IHZh cmlhYmxlLWxlbmd0aCB2ZWN0b3IgY29uc3RhbnRzIGlmIHRoZXkgY2FuIGJlCkBAIC0xOTc5NSw2 ICsxOTgwNSwxOCBAQCBhYXJjaDY0X2dpbXBsaWZ5X3ZhX2FyZ19leHByICh0cmVlIHZhbGlzdCwg dHJlZSB0eXBlLCBnaW1wbGVfc2VxICpwcmVfcCwKIAkgIGZpZWxkX3QgPSBsb25nX2RvdWJsZV90 eXBlX25vZGU7CiAJICBmaWVsZF9wdHJfdCA9IGxvbmdfZG91YmxlX3B0cl90eXBlX25vZGU7CiAJ ICBicmVhazsKKwljYXNlIFNEbW9kZToKKwkgIGZpZWxkX3QgPSBkZmxvYXQzMl90eXBlX25vZGU7 CisJICBmaWVsZF9wdHJfdCA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoZGZsb2F0MzJfdHlwZV9ub2Rl KTsKKwkgIGJyZWFrOworCWNhc2UgRERtb2RlOgorCSAgZmllbGRfdCA9IGRmbG9hdDY0X3R5cGVf bm9kZTsKKwkgIGZpZWxkX3B0cl90ID0gYnVpbGRfcG9pbnRlcl90eXBlIChkZmxvYXQ2NF90eXBl X25vZGUpOworCSAgYnJlYWs7CisJY2FzZSBURG1vZGU6CisJICBmaWVsZF90ID0gZGZsb2F0MTI4 X3R5cGVfbm9kZTsKKwkgIGZpZWxkX3B0cl90ID0gYnVpbGRfcG9pbnRlcl90eXBlIChkZmxvYXQx MjhfdHlwZV9ub2RlKTsKKwkgIGJyZWFrOwogCWNhc2UgRV9IRm1vZGU6CiAJICBmaWVsZF90ID0g YWFyY2g2NF9mcDE2X3R5cGVfbm9kZTsKIAkgIGZpZWxkX3B0cl90ID0gYWFyY2g2NF9mcDE2X3B0 cl90eXBlX25vZGU7CkBAIC0yMDA0Niw3ICsyMDA2OCw4IEBAIGFhcGNzX3ZmcF9zdWJfY2FuZGlk YXRlIChjb25zdF90cmVlIHR5cGUsIG1hY2hpbmVfbW9kZSAqbW9kZXAsCiAgICAgY2FzZSBSRUFM X1RZUEU6CiAgICAgICBtb2RlID0gVFlQRV9NT0RFICh0eXBlKTsKICAgICAgIGlmIChtb2RlICE9 IERGbW9kZSAmJiBtb2RlICE9IFNGbW9kZQotCSAgJiYgbW9kZSAhPSBURm1vZGUgJiYgbW9kZSAh PSBIRm1vZGUpCisJICAmJiBtb2RlICE9IFRGbW9kZSAmJiBtb2RlICE9IEhGbW9kZQorCSAgJiYg bW9kZSAhPSBTRG1vZGUgJiYgbW9kZSAhPSBERG1vZGUgJiYgbW9kZSAhPSBURG1vZGUpCiAJcmV0 dXJuIC0xOwogCiAgICAgICBpZiAoKm1vZGVwID09IFZPSURtb2RlKQpAQCAtMjAzNjIsNyArMjAz ODUsOSBAQCBhYXJjaDY0X3ZmcF9pc19jYWxsX29yX3JldHVybl9jYW5kaWRhdGUgKG1hY2hpbmVf bW9kZSBtb2RlLAogICBtYWNoaW5lX21vZGUgbmV3X21vZGUgPSBWT0lEbW9kZTsKICAgYm9vbCBj b21wb3NpdGVfcCA9IGFhcmNoNjRfY29tcG9zaXRlX3R5cGVfcCAodHlwZSwgbW9kZSk7CiAKLSAg aWYgKCghY29tcG9zaXRlX3AgJiYgR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfRkxPQVQp CisgIGlmICgoIWNvbXBvc2l0ZV9wCisgICAgICAgJiYgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9 PSBNT0RFX0ZMT0FUCisJICAgfHwgR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfREVDSU1B TF9GTE9BVCkpCiAgICAgICB8fCBhYXJjaDY0X3Nob3J0X3ZlY3Rvcl9wICh0eXBlLCBtb2RlKSkK ICAgICB7CiAgICAgICAqY291bnQgPSAxOwpAQCAtMjMyNjQsNyArMjMyODksNyBAQCBhYXJjaDY0 X291dHB1dF9zY2FsYXJfc2ltZF9tb3ZfaW1tZWRpYXRlIChydHggaW1tZWRpYXRlLCBzY2FsYXJf aW50X21vZGUgbW9kZSkKICAgICB9CiAKICAgbWFjaGluZV9tb2RlIHZtb2RlOwotICAvKiB1c2Ug YSA2NCBiaXQgbW9kZSBmb3IgZXZlcnl0aGluZyBleGNlcHQgZm9yIERJL0RGIG1vZGUsIHdoZXJl IHdlIHVzZQorICAvKiB1c2UgYSA2NCBiaXQgbW9kZSBmb3IgZXZlcnl0aGluZyBleGNlcHQgZm9y IERJL0RGL0REIG1vZGUsIHdoZXJlIHdlIHVzZQogICAgICBhIDEyOCBiaXQgdmVjdG9yIG1vZGUu ICAqLwogICBpbnQgd2lkdGggPSBHRVRfTU9ERV9CSVRTSVpFIChtb2RlKSA9PSA2NCA/IDEyOCA6 IDY0OwogCkBAIC0yNjA4Miw3ICsyNjEwNyw3IEBAIGFhcmNoNjRfZ2VuX2FkanVzdGVkX2xkcHN0 cCAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAogICAgIGJhc2Vfb2ZmID0gKG9mZl92YWxfMSAr IG9mZl92YWxfMykgLyAyOwogICBlbHNlCiAgICAgLyogSG93ZXZlciwgZHVlIHRvIGlzc3VlcyB3 aXRoIG5lZ2F0aXZlIExEUC9TVFAgb2Zmc2V0IGdlbmVyYXRpb24gZm9yCi0gICAgICAgbGFyZ2Vy IG1vZGVzLCBmb3IgREYsIERJIGFuZCB2ZWN0b3IgbW9kZXMuIHdlIG11c3Qgbm90IHVzZSBuZWdh dGl2ZQorICAgICAgIGxhcmdlciBtb2RlcywgZm9yIERGLCBERCwgREkgYW5kIHZlY3RvciBtb2Rl cy4gd2UgbXVzdCBub3QgdXNlIG5lZ2F0aXZlCiAgICAgICAgYWRkcmVzc2VzIHNtYWxsZXIgdGhh biA5IHNpZ25lZCB1bmFkanVzdGVkIGJpdHMgY2FuIHN0b3JlLiAgVGhpcwogICAgICAgIHByb3Zp ZGVzIHRoZSBtb3N0IHJhbmdlIGluIHRoaXMgY2FzZS4gICovCiAgICAgYmFzZV9vZmYgPSBvZmZf dmFsXzE7CkBAIC0yNjM2MCw2ICsyNjM4NSw5IEBAIGFhcmNoNjRfbGliZ2NjX2Zsb2F0aW5nX21v ZGVfc3VwcG9ydGVkX3AgKHNjYWxhcl9mbG9hdF9tb2RlIG1vZGUpCiBzdGF0aWMgYm9vbAogYWFy Y2g2NF9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCAoc2NhbGFyX21vZGUgbW9kZSkKIHsKKyAgaWYg KERFQ0lNQUxfRkxPQVRfTU9ERV9QIChtb2RlKSkKKyAgICByZXR1cm4gZGVmYXVsdF9kZWNpbWFs X2Zsb2F0X3N1cHBvcnRlZF9wICgpOworCiAgIHJldHVybiAobW9kZSA9PSBIRm1vZGUKIAkgID8g dHJ1ZQogCSAgOiBkZWZhdWx0X3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9wIChtb2RlKSk7CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZCBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0Lm1kCmluZGV4IGY1YzYzNTkzOGFkLi4yYWM4ZDU2NDc2MiAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2Fh cmNoNjQubWQKQEAgLTE0NzcsMTEgKzE0NzcsMTEgQEAgKGRlZmluZV9pbnNuICIqbW92PG1vZGU+ X2FhcmNoNjQiCiAgICAoc2V0X2F0dHIgImFyY2giICJzaW1kLGZwMTYsc2ltZCxzaW1kLHNpbWQs ZnAxNixzaW1kLCosKiwqLCosKiIpXQogKQogCi0oZGVmaW5lX2luc24gIiptb3ZzZl9hYXJjaDY0 IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj13 LHcgICw/cix3LHcgICx3ICAsdyxtLHIsbSAscixyIikKLQkobWF0Y2hfb3BlcmFuZDpTRiAxICJn ZW5lcmFsX29wZXJhbmQiICAgICAgIlkgLD9yWSwgdyx3LFVmYyxVdmksbSx3LG0sclkscixNIikp XQotICAiVEFSR0VUX0ZMT0FUICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgU0Zt b2RlKQotICAgIHx8IGFhcmNoNjRfcmVnX29yX2ZwX3plcm8gKG9wZXJhbmRzWzFdLCBTRm1vZGUp KSIKKyhkZWZpbmVfaW5zbiAiKm1vdjxtb2RlPl9hYXJjaDY0IgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTRkQgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9dyx3ICAsP3Isdyx3ICAsdyAgLHcs bSxyLG0gLHIsciIpCisJKG1hdGNoX29wZXJhbmQ6U0ZEIDEgImdlbmVyYWxfb3BlcmFuZCIgICAg ICAiWSAsP3JZLCB3LHcsVWZjLFV2aSxtLHcsbSxyWSxyLE0iKSldCisgICJUQVJHRVRfRkxPQVQg JiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKQorICAgIHx8IGFh cmNoNjRfcmVnX29yX2ZwX3plcm8gKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSkiCiAgICJACiAg ICBtb3ZpXFx0JTAuMnMsICMwCiAgICBmbW92XFx0JXMwLCAldzEKQEAgLTE1MDEsMTEgKzE1MDEs MTEgQEAgKGRlZmluZV9pbnNuICIqbW92c2ZfYWFyY2g2NCIKICAgIChzZXRfYXR0ciAiYXJjaCIg InNpbWQsKiwqLCosKixzaW1kLCosKiwqLCosKiwqIildCiApCiAKLShkZWZpbmVfaW5zbiAiKm1v dmRmX2FhcmNoNjQiCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9v cGVyYW5kIiAiPXcsIHcgICw/cix3LHcgICx3ICAsdyxtLHIsbSAscixyIikKLQkobWF0Y2hfb3Bl cmFuZDpERiAxICJnZW5lcmFsX29wZXJhbmQiICAgICAgIlkgLCA/clksIHcsdyxVZmMsVXZpLG0s dyxtLHJZLHIsTiIpKV0KLSAgIlRBUkdFVF9GTE9BVCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3Bl cmFuZHNbMF0sIERGbW9kZSkKLSAgICB8fCBhYXJjaDY0X3JlZ19vcl9mcF96ZXJvIChvcGVyYW5k c1sxXSwgREZtb2RlKSkiCisoZGVmaW5lX2luc24gIiptb3Y8bW9kZT5fYWFyY2g2NCIKKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6REZEIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPXcsIHcgICw/ cix3LHcgICx3ICAsdyxtLHIsbSAscixyIikKKwkobWF0Y2hfb3BlcmFuZDpERkQgMSAiZ2VuZXJh bF9vcGVyYW5kIiAgICAgICJZICwgP3JZLCB3LHcsVWZjLFV2aSxtLHcsbSxyWSxyLE4iKSldCisg ICJUQVJHRVRfRkxPQVQgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5t b2RlKQorICAgIHx8IGFhcmNoNjRfcmVnX29yX2ZwX3plcm8gKG9wZXJhbmRzWzFdLCA8TU9ERT5t b2RlKSkiCiAgICJACiAgICBtb3ZpXFx0JWQwLCAjMAogICAgZm1vdlxcdCVkMCwgJXgxCkBAIC0x NTQ1LDEzICsxNTQ1LDEzIEBAIChkZWZpbmVfc3BsaXQKICAgfQogKQogCi0oZGVmaW5lX2luc24g Iiptb3Z0Zl9hYXJjaDY0IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpURiAwCisoZGVmaW5lX2lu c24gIiptb3Y8bW9kZT5fYWFyY2g2NCIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VEZEIDAKIAkg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPXcsP3IgLHcgLD9yLHcsP3csdyxtLD9yLG0gLG0iKQot CShtYXRjaF9vcGVyYW5kOlRGIDEKKwkobWF0Y2hfb3BlcmFuZDpURkQgMQogCSAiZ2VuZXJhbF9v cGVyYW5kIiAgICAgICIgdyw/clksP3IsdyAsWSxZICxtLHcsbSAsP3IsWSIpKV0KLSAgIlRBUkdF VF9GTE9BVCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0sIFRGbW9kZSkKLSAgICB8 fCBhYXJjaDY0X3JlZ19vcl9mcF96ZXJvIChvcGVyYW5kc1sxXSwgVEZtb2RlKSkiCisgICJUQVJH RVRfRkxPQVQgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKQor ICAgIHx8IGFhcmNoNjRfcmVnX29yX2ZwX3plcm8gKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSki CiAgICJACiAgICBtb3ZcXHQlMC4xNmIsICUxLjE2YgogICAgIwpAQCAtMTU3MSw4ICsxNTcxLDgg QEAgKGRlZmluZV9pbnNuICIqbW92dGZfYWFyY2g2NCIKICkKIAogKGRlZmluZV9zcGxpdAotICAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VEYgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0JIChtYXRj aF9vcGVyYW5kOlRGIDEgIm5vbm1lbW9yeV9vcGVyYW5kIiAiIikpXQorICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VEZEIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQorCSAobWF0Y2hfb3BlcmFuZDpU RkQgMSAibm9ubWVtb3J5X29wZXJhbmQiICIiKSldCiAgICJyZWxvYWRfY29tcGxldGVkICYmIGFh cmNoNjRfc3BsaXRfMTI4Yml0X21vdmVfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSIKICAg Wyhjb25zdF9pbnQgMCldCiAgIHsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9pdGVy YXRvcnMubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCmluZGV4IDg4YWY5NjRk ZTdlLi4xYzEwNDgzNjhmMCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9y cy5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCkBAIC02NCwxNCArNjQs MjQgQEAgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIEdQRl9IRiBbSEYgU0YgREZdKQogKGRlZmluZV9t b2RlX2l0ZXJhdG9yIEhGQkYgW0hGIEJGXSkKIAogOzsgSXRlcmF0b3IgZm9yIGFsbCBzY2FsYXIg ZmxvYXRpbmcgcG9pbnQgbW9kZXMgc3VpdGFibGUgZm9yIG1vdmluZywgaW5jbHVkaW5nCi07OyBz cGVjaWFsIEJGIHR5cGUgKEhGLCBTRiwgREYsIFRGIGFuZCBCRikKLShkZWZpbmVfbW9kZV9pdGVy YXRvciBHUEZfVEZfRjE2X01PViBbSEYgQkYgU0YgREYgVEZdKQorOzsgc3BlY2lhbCBCRiB0eXBl IGFuZCBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IHR5cGVzIChIRiwgU0YsIERGLCBURiwgQkYsCis7 OyBTRCwgREQgYW5kIFREKQorKGRlZmluZV9tb2RlX2l0ZXJhdG9yIEdQRl9URl9GMTZfTU9WIFtI RiBCRiBTRiBERiBURiBTRCBERCBURF0pCisKKzs7IEl0ZXJhdG9yIGZvciBzY2FsYXIgMzJiaXQg ZnAgbW9kZXMgKFNGLCBTRCkKKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBTRkQgW1NEIFNGXSkKKwor OzsgSXRlcmF0b3IgZm9yIHNjYWxhciA2NGJpdCBmcCBtb2RlcyAoREYsIEREKQorKGRlZmluZV9t b2RlX2l0ZXJhdG9yIERGRCBbREQgREZdKQorCis7OyBJdGVyYXRvciBmb3Igc2NhbGFyIDEyOGJp dCBmcCBtb2RlcyAoVEYsIFREKQorKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFRGRCBbVEQgVEZdKQog CiA7OyBEb3VibGUgdmVjdG9yIG1vZGVzLgogKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZERiBbVjJT RiBWNEhGXSkKIAotOzsgSXRlcmF0b3IgZm9yIGFsbCBzY2FsYXIgZmxvYXRpbmcgcG9pbnQgbW9k ZXMgKFNGLCBERiBhbmQgVEYpCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgR1BGX1RGIFtTRiBERiBU Rl0pCis7OyBJdGVyYXRvciBmb3IgYWxsIHNjYWxhciBmbG9hdGluZyBwb2ludCBtb2RlcyAoU0Ys IERGLCBURiwgU0QsIERELCBhbmQgVEQpCisoZGVmaW5lX21vZGVfaXRlcmF0b3IgR1BGX1RGIFtT RiBERiBURiBTRCBERCBURF0pCiAKIDs7IEludGVnZXIgQWR2YW5jZWQgU0lNRCBtb2Rlcy4KIChk ZWZpbmVfbW9kZV9pdGVyYXRvciBWRFFfSSBbVjhRSSBWMTZRSSBWNEhJIFY4SEkgVjJTSSBWNFNJ IFYyREldKQpAQCAtMjk4LDcgKzMwOCw3IEBAIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWQiBbVjhR SSBWMTZRSV0pCiA7OyAyIGFuZCA0IGxhbmUgU0kgbW9kZXMuCiAoZGVmaW5lX21vZGVfaXRlcmF0 b3IgVlMgW1YyU0kgVjRTSV0pCiAKLShkZWZpbmVfbW9kZV9pdGVyYXRvciBUWCBbVEkgVEZdKQor KGRlZmluZV9tb2RlX2l0ZXJhdG9yIFRYIFtUSSBURiBURF0pCiAKIDs7IEFkdmFuY2VkIFNJTUQg b3BhcXVlIHN0cnVjdHVyZSBtb2Rlcy4KIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1RSVUNUIFtP SSBDSSBYSV0pCkBAIC00MDAsMTAgKzQxMCwxMCBAQCAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNU UlVDVF9RRCBbVjJ4OFFJIFYyeDRISSBWMngyU0kgVjJ4MURJCiAJCQkJICBWNHg4SEYgVjR4NFNG IFY0eDJERiBWNHg4QkZdKQogCiA7OyBEb3VibGUgc2NhbGFyIG1vZGVzCi0oZGVmaW5lX21vZGVf aXRlcmF0b3IgRFggW0RJIERGXSkKKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBEWCBbREkgREYgRERd KQogCiA7OyBEdXBsaWNhdGUgb2YgdGhlIGFib3ZlCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgRFgy IFtESSBERl0pCisoZGVmaW5lX21vZGVfaXRlcmF0b3IgRFgyIFtESSBERiBERF0pCiAKIDs7IFNp bmdsZSBzY2FsYXIgbW9kZXMKIChkZWZpbmVfbW9kZV9pdGVyYXRvciBTWCBbU0kgU0ZdKQotLSAK Mi4yNS4xCgo= --------------s4rh9IbwbQ2R0IhtLR48Ddmo--