From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130054.outbound.protection.outlook.com [40.107.13.54]) by sourceware.org (Postfix) with ESMTPS id F17F53857838 for ; Fri, 28 Oct 2022 09:57:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F17F53857838 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Ccvik4RNUSqAXS/Q7Mqw8+GWX+AEDMLK0Fc9/pyMkvtKJ8Tos54CXKdXOM+2poK9D5s1laaxFqN96o3Hoe1Sk8tK5RbCDPMoSYUV0o4UFbdMMceR69+TER2m97i1GMpV5yMG5IvniERb+D5srGcROI5iXswPjhoPr4r4c1oG5ZnaA7kGdNtQN28t87NU7CrcUgqajaNdEIrL49lEx4nFeY0u6BYA3zrnW7IYkoZjQMCapYdDtkqFVfzozIhZC2TrAxaJy8OA1IHMhJlCud4a1eKro08V51thGYEajJn9OE/IulzdFSU8QOHGr6v4kKKyEvZOYmqBBTlVLLKAMiob2g== 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=l0Q/hMRNbXAHhMMH+W2H3UokgGgUswBZrOPQrlvAqt4=; b=QYYufbjAU24c1KUwRUShUDvFi/cy4me3/mX/u7vNbirJL+DlMsHE5owOU6OeMyfjWwf+5G97ks9pilKSkXfIhv+Ev2CVRWczyJhtaAHuqj7nqvl5qLAqZvocyU3k5idlTrGn49eA00CL7tWhJ3cK6iHU9YUsv/LvCP+vEp458IGxQlMQql3BvcEiiwH/F8wK+c3qM95lRcLTmztOIgK4WtU3O94Ym8SMD+jNP0x8kZFLidPF+2fONUBIou0KpAK8mCgaTpY+gDtT8HQ1Dwd/e71SzWcY+usUxhb4O09L8FAszDvqWKSqu45YpHBqfrumpQtoczjFHMPB+rgJQh5FWQ== 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]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l0Q/hMRNbXAHhMMH+W2H3UokgGgUswBZrOPQrlvAqt4=; b=ykl0ATrzW9SjgJisWJGXCEs9XOVY6RXo6nOqzXZP7zTNT/SClGweordR7uFx4GrfUDmsf2hoc0akIgpDUh/dldhG0NBVjRA5Rr6aSSX37UQO5BAS1Izav7PXI5U+uHOJgE4N8vbLvaIxdmQcfnJ6AB/lRaFKb+skBM5Q/9xEtBg= Received: from AS9PR06CA0022.eurprd06.prod.outlook.com (2603:10a6:20b:462::14) by AS8PR08MB6101.eurprd08.prod.outlook.com (2603:10a6:20b:29a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.15; Fri, 28 Oct 2022 09:57:39 +0000 Received: from AM7EUR03FT032.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:462:cafe::b9) by AS9PR06CA0022.outlook.office365.com (2603:10a6:20b:462::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.15 via Frontend Transport; Fri, 28 Oct 2022 09:57:39 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT032.mail.protection.outlook.com (100.127.140.65) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.16 via Frontend Transport; Fri, 28 Oct 2022 09:57:38 +0000 Received: ("Tessian outbound 73ab5f36653e:v130"); Fri, 28 Oct 2022 09:57:38 +0000 X-CR-MTA-TID: 64aa7808 Received: from 55cf3ec014f8.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B4FCB532-D929-410B-A042-DCD0869084F7.1; Fri, 28 Oct 2022 09:57:29 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 55cf3ec014f8.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 28 Oct 2022 09:57:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L/qmDn0Qh660YrD2Q4z/SI5kqHSCHAyeg2vVthdP3K1yro+7G+tGQfdR2P9JIs/UExFNl+UADsmy34l3b+m4zQay3SC56JHg7QSgSPNpBD/gTWr/lKzshvMILl/MnpwQUlZOxH+cKd7wzVeoKOQaO0iad/X/QDM4DFtb98/HKuMDEFnrv3EDPJOWnV2gsQ/V9oYtlMfI2kYazcIGGZDv+mbVjgNC3mbyYUsicVn5kV6V/MiRTv3rp+afgKJoxBs2cWp3UJnhBuTEbjrc+0CT3mjfUN41cTeRLv3iQOAcLm0w9AY60yuB7kk0giZ1IoPxPOqsp9G9C5hF60NCQPM30Q== 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=l0Q/hMRNbXAHhMMH+W2H3UokgGgUswBZrOPQrlvAqt4=; b=eJOaCyEQV6N8ja3Ga9uwmpY4MXwE4vPN3fOODjgusxY2NqUbJvkcZubIVzJU15zrgtKqySHBWTULtLDmXUBsscZllJO5wGGh0VoN9O0UtVUmxq+hm8NcgVWsbqbedIvNiLlRFK2/6UA7GHHecfYNA3raUgz6UVeRlgiHrumEi+Jn6HpF+Hzsys8yt+eWe4BP8BQUdiM+FDOEvRnw7V4fG+pNJn8K+O+vgJd5j9fH7odK/XAhRAh9ZdXD3WmKqvugteyMn/nC3pAzaD5ekQZDJHd6JZUa0Xhwbw6j6pt7BO4EnemJHgnNb3EVLVJQphZ8OZNk3PiPc0ktCMCp4QVD2w== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l0Q/hMRNbXAHhMMH+W2H3UokgGgUswBZrOPQrlvAqt4=; b=ykl0ATrzW9SjgJisWJGXCEs9XOVY6RXo6nOqzXZP7zTNT/SClGweordR7uFx4GrfUDmsf2hoc0akIgpDUh/dldhG0NBVjRA5Rr6aSSX37UQO5BAS1Izav7PXI5U+uHOJgE4N8vbLvaIxdmQcfnJ6AB/lRaFKb+skBM5Q/9xEtBg= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PAXPR08MB7365.eurprd08.prod.outlook.com (2603:10a6:102:225::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Fri, 28 Oct 2022 09:57:25 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52%4]) with mapi id 15.20.5769.014; Fri, 28 Oct 2022 09:57:25 +0000 From: Tamar Christina To: Andrew Pinski CC: "gcc-patches@gcc.gnu.org" , Richard Earnshaw , nd , Richard Sandiford , Marcus Shawcroft Subject: RE: [PATCH 2/3]AArch64 Promote function arguments using a paradoxical subreg when beneficial. Thread-Topic: [PATCH 2/3]AArch64 Promote function arguments using a paradoxical subreg when beneficial. Thread-Index: AQHYZuyFcZc55dLB0USGdmwAdjZqq64iltqAgAICF4A= Date: Fri, 28 Oct 2022 09:57:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: CB1B8E9B4405C540996C93D9EC9FB75E.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PAXPR08MB7365:EE_|AM7EUR03FT032:EE_|AS8PR08MB6101:EE_ X-MS-Office365-Filtering-Correlation-Id: 310f018e-4995-47fe-65d0-08dab8cad8fe 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: celyJSeh7iSOkwQ1JlMWOvlTU9rFDDjEL6M8ogqK0qNl+MzWDrOk5819VyGtt3tLM7hcQ64iP2Eh2EVpjEQK8HTqm9XryhQAaxy5iCql+/OQ9TePhl67SVdQaSGVKdq8CThZMg//6eYqaGjoR8f6PHHzLjWWe5OXprhmrx9KDDAMLGblxSRtnJCbbvmIv7itg0ZV1if/HNNhj9ucBpIDGsQZ6KrsUiy1WU750zd9iCOXITillNt+fj7b9hvqKxow5MU2U8p9VTbusJTs9/Qxm2ZGnmZiL0HiuMnSFt3Y2LBJCy2H/kPpc+3mGEZUltFUbyAf0Eiz8IwCBuLPker4iY6lMc6rAr/lHZVFQmK4wnou5NISfamaeuLfMzJ5u6DagL3sf55dWgD4iHO39UZcxKFtCSybkT9WBFFIA8g0zCzbdGaO/6hHvuFcO6l0E0ELLpo8DADNPnrxC84/nrrb/ycDitMAltuHmKvShlW6UI8tygVqFNLdlMqCzg2j1OY4bJSeCGzPg6xqM76hEBp6oQ3MGVul3pjgKC/jMDqQdzUK/r7XJwvk9AuAfzY8cotP2e5BfyZPdcDZEiav6zu+KJXY1FLdMtj4mJx06p2s2Uw65iYu1kp5qk1F9NWL7pLBUcqTDh7qAP5axF4bqbFIUPYY1aEhUaHSj4S18Yf8WpNNaH3PcnOIP8vi0Bx6Ns83tSp8oHBsyk1RWpRsE7WDze2XeYdU16c0K4TXB8doF32WjLHf8Hruv5+qnR8HNrKKsjOzXxie4gajFad5wHoTH649sM6LFeKTOArUDGCpQCw= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(346002)(376002)(396003)(366004)(451199015)(86362001)(33656002)(84970400001)(38070700005)(38100700002)(41300700001)(2906002)(5660300002)(52536014)(30864003)(83380400001)(4326008)(122000001)(186003)(8676002)(76116006)(66946007)(316002)(6916009)(54906003)(7696005)(6506007)(66446008)(64756008)(66476007)(66556008)(8936002)(53546011)(55016003)(26005)(9686003)(478600001)(71200400001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7365 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: AM7EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6d9bc29b-3baf-45a9-38ef-08dab8cad0c0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Lgomxw9V26SvRNRSmrTBqSHHweKpD5rcdemziN9OUGLFUE6tyLECDJ7d5dWUEtvbeoOpTUQQduB3tZt5LBe7cqTccOnvjxCHJ7wQ2Ci6d2p8XCFzDCWwW4OwLSpTovpLq04xAIjOGBlVbBBi6kZ97pQ25iajMf9MCk4gD5L/3iDm/Hy5WH0C4loQnRiPjhHbHOB3MPgg2H8OebAC4vuXtJuv5hx2nC00w1YDjA27YMzpi7MKqLmaz5ULr3pfbX9tsHKajvuzs3Qskd0Ncqmk3Z+rJ0h/di3c0KfDGZzSRdXDxGF95EvaKYI9QyRnqRs3W4hPnx2Yj594ulh4PwVASLN8jxhjdrcn69xGOPD+JKiZzqf5fVyCny3GNagM+/5uoh9r19o8cll7yjC+R5835o5QBRVvk4urZeIqvdVeWKYonN4Yf/Gv1DF/1DbpJVbDZrLn4arZzEdugMd3AS0463NiJP0ULd8sZvYjUhaPZo0ZVbYVJRly0vzM803e1FyRBwjzJ1Z4h3bF4FSZ2UPFvE7eFtLMzSAfod17+oQ3AzvZPgmffdnFDkT6VMo66+zdxmHz9TjSzLroW/COHN3v0jeC1OXurtQL+CkjcnwJQu/REEJnPoQT5s77HnLqkYU8fN2VM6eoFqSE4lxpPzOhFYIdlJuoNNkDhVUD444RLTFNdhEKSQxp9xRy34Zvqu/LJ9l3bm1wYEIJsLvmJs903MdDs0aA/NDDFuoyXv+AT8qM/LQ3TXlLABGTN8u79k4mWs/HAYC0ScaSnwSStFORCoVE7xrguY1HXsVDyOAwkaA= 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:(13230022)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199015)(36840700001)(46966006)(40470700004)(9686003)(26005)(186003)(478600001)(53546011)(84970400001)(81166007)(7696005)(6506007)(356005)(55016003)(40480700001)(33656002)(86362001)(40460700003)(83380400001)(336012)(47076005)(82740400003)(82310400005)(36860700001)(70586007)(4326008)(70206006)(30864003)(5660300002)(52536014)(2906002)(6862004)(41300700001)(8936002)(54906003)(8676002)(316002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2022 09:57:38.9020 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 310f018e-4995-47fe-65d0-08dab8cad8fe 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: AM7EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6101 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,THIS_AD,TXREP,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 List-Id: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgUGluc2tpIDxwaW5z a2lhQGdtYWlsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgMjcsIDIwMjIgNDoxNSBB TQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6 IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBSaWNoYXJkIEVhcm5zaGF3DQo+IDxSaWNoYXJkLkVh cm5zaGF3QGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT47IFJpY2hhcmQgU2FuZGlmb3JkDQo+IDxS aWNoYXJkLlNhbmRpZm9yZEBhcm0uY29tPjsgTWFyY3VzIFNoYXdjcm9mdA0KPiA8TWFyY3VzLlNo YXdjcm9mdEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDIvM11BQXJjaDY0IFByb21v dGUgZnVuY3Rpb24gYXJndW1lbnRzIHVzaW5nIGENCj4gcGFyYWRveGljYWwgc3VicmVnIHdoZW4g YmVuZWZpY2lhbC4NCj4gDQo+IE9uIEZyaSwgTWF5IDEzLCAyMDIyIGF0IDEwOjE0IEFNIFRhbWFy IENocmlzdGluYSB2aWEgR2NjLXBhdGNoZXMgPGdjYy0NCj4gcGF0Y2hlc0BnY2MuZ251Lm9yZz4g d3JvdGU6DQo+ID4NCj4gPiBIaSBBbGwsDQo+ID4NCj4gPiBUaGUgUFJPTU9URV9NT0RFIGFsd2F5 cyBwcm9tb3RlcyA4IGFuZCAxNi1iaXQgcGFyYW1ldGVycyB0byAzMi1iaXRzLg0KPiA+IFRoaXMg cHJvbW90aW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgdGhlIEFCSSB3aGljaCBzdGF0ZXM6DQo+ID4N Cj4gPg0KPiA+IGBgYA0KPiA+IEMuOSAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGFuIEludGVncmFs IG9yIFBvaW50ZXIgVHlwZSwgdGhlIHNpemUgb2YgdGhlDQo+IGFyZ3VtZW50IGlzDQo+ID4gbGVz cyB0aGFuIG9yIGVxdWFsIHRvIDggYnl0ZXMgYW5kIHRoZSBOR1JOIGlzIGxlc3MgdGhhbiA4LCB0 aGUNCj4gPiBhcmd1bWVudCBpcyBjb3BpZWQgdG8gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMg aW4geFtOR1JOXS4gVGhlIE5HUk4gaXMNCj4gaW5jcmVtZW50ZWQgYnkgb25lLg0KPiA+IFRoZSBh cmd1bWVudCBoYXMgbm93IGJlZW4gYWxsb2NhdGVkLg0KPiA+DQo+ID4gQy4xNiAgICBJZiB0aGUg c2l6ZSBvZiB0aGUgYXJndW1lbnQgaXMgbGVzcyB0aGFuIDggYnl0ZXMgdGhlbiB0aGUgc2l6ZSBv ZiB0aGUNCj4gPiBhcmd1bWVudCBpcyBzZXQgdG8gOCBieXRlcy4gVGhlIGVmZmVjdCBpcyBhcyBp ZiB0aGUgYXJndW1lbnQgd2FzDQo+ID4gY29waWVkIHRvIHRoZSBsZWFzdCBzaWduaWZpY2FudCBi aXRzIG9mIGEgNjQtYml0IHJlZ2lzdGVyIGFuZCB0aGUNCj4gPiByZW1haW5pbmcgYml0cyBmaWxs ZWQgd2l0aCB1bnNwZWNpZmllZCB2YWx1ZXMgYGBgDQo+ID4NCj4gPiBUaGF0IGlzLCB0aGUgYml0 cyBpbiB0aGUgcmVnaXN0ZXJzIGFyZSB1bnNwZWNpZmllZCBhbmQgY2FsbGVlcyBjYW5ub3QNCj4g PiBhc3N1bWUgYW55IHBhcnRpY3VsYXIgc3RhdHVzLg0KPiA+DQo+ID4gVGhpcyBtZWFucyB0aGF0 IHdlIGNhbiBhdm9pZCB0aGUgcHJvbW90aW9uIGFuZCBzdGlsbCBnZXQgY29ycmVjdCBjb2RlDQo+ ID4gYXMgdGhlIGxhbmd1YWdlIGxldmVsIHByb21vdGlvbiBydWxlcyByZXF1aXJlIHZhbHVlcyB0 byBiZSBleHRlbmRlZA0KPiA+IHdoZW4gdGhlIGJpdHMgYXJlIHNpZ25pZmljYW50Lg0KPiA+DQo+ ID4gU28gaWYgd2UgYXJlIC5lLmcgT1ItaW5nIHR3byA4LWJpdCB2YWx1ZXMgbm8gZXh0ZW5kIGlz IG5lZWRlZCBhcyB0aGUNCj4gPiB0b3AgYml0cyBhcmUgaXJyZWxldmFudC4gIElmIHdlIGFyZSBk b2luZyBlLmcuIGFkZGl0aW9uLCB0aGVuIHRoZSB0b3ANCj4gPiBiaXRzICptaWdodCogYmUgcmVs ZXZhbnQgZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgdHlwZS4gIEJ1dCB0aGUgbWlkZGxlDQo+ID4g ZW5kIHdpbGwgYWx3YXlzIGNvbnRhaW4gdGhlIGFwcHJvcHJpYXRlIGV4dGVuZCBpbiB0aG9zZSBj YXNlcy4NCj4gPg0KPiA+IFRoZSBtaWQtZW5kIGFsc28gaGFzIG9wdGltaXphdGlvbnMgYXJvdW5k IHRoaXMgYXNzdW1wdGlvbiBhbmQgdGhlDQo+ID4gQUFyY2g2NCBwb3J0IGFjdGl2ZWx5IHVuZG9l cyB0aGVtLg0KPiA+DQo+ID4gU28gZm9yIGluc3RhbmNlDQo+ID4NCj4gPiB1aW50MTZfdCBmZCAo dWludDhfdCB4cil7DQo+ID4gICAgIHJldHVybiB4ciArIDE7DQo+ID4gfQ0KPiA+DQo+ID4gdWlu dDhfdCBmZDIgKHVpbnQ4X3QgeHIpew0KPiA+ICAgICByZXR1cm4geHIgKyAxOw0KPiA+IH0NCj4g Pg0KPiA+IHNob3VsZCBwcm9kdWNlDQo+ID4NCj4gPiBmZDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gQGZkDQo+ID4gICAgICAgICBhbmQgICAgIHc4LCB3MCwgIzB4ZmYN Cj4gPiAgICAgICAgIGFkZCAgICAgdzAsIHc4LCAjMQ0KPiA+ICAgICAgICAgcmV0DQo+ID4gZmQy OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEBmZDINCj4gPiAgICAgICAg IGFkZCAgICAgdzAsIHcwLCAjMQ0KPiA+ICAgICAgICAgcmV0DQo+ID4NCj4gPiBsaWtlIGNsYW5n IGRvZXMgaW5zdGVhZCBvZg0KPiA+DQo+ID4gZmQ6DQo+ID4gICAgICAgICBhbmQgICAgIHcwLCB3 MCwgMjU1DQo+ID4gICAgICAgICBhZGQgICAgIHcwLCB3MCwgMQ0KPiA+ICAgICAgICAgcmV0DQo+ ID4gZmQyOg0KPiA+ICAgICAgICAgYW5kICAgICB3MCwgdzAsIDI1NQ0KPiA+ICAgICAgICAgYWRk ICAgICB3MCwgdzAsIDENCj4gPiAgICAgICAgIHJldA0KPiA+DQo+ID4gbGlrZSB3ZSBkbyBub3cu ICBSZW1vdmluZyB0aGlzIGZvcmNlZCBleHBhbnNpb24gbWFpbnRhaW5zIGNvcnJlY3RuZXNzDQo+ ID4gYnV0IGZpeGVzIGlzc3VlcyB3aXRoIHZhcmlvdXMgY29kZWdlbiBkZWZlY3RzLiAgSXQgYWxz byBicmluZ3MgdXMgaW5saW5lIHdpdGgNCj4gY2xhbmcuDQo+ID4NCj4gPiBOb3RlIHRoYXQgQywg QysrIGFuZCBGb3J0cmFuIGV0YyBhbGwgY29ycmVjdGx5IHNwZWNpZnkgd2hhdCBzaG91bGQNCj4g PiBoYXBwZW4gdy5yLnQgZXh0ZW5kcyBhbmQgZS5nLiBhcnJheSBpbmRleGluZywgcG9pbnRlciBh cml0aCBldGMgc28gd2UNCj4gPiBuZXZlciBnZXQgaW5jb3JyZWN0IGNvZGUuDQo+ID4NCj4gPiBU aGVyZSBpcyBob3dldmVyIGEgc2Vjb25kIHJlYXNvbiBmb3IgZG9pbmcgdGhpcyBwcm9tb3Rpb246 IFJUTCBlZmZpY2llbmN5Lg0KPiA+IFRoZSBwcm9tb3Rpb24gc3RvcHMgdXMgZnJvbSBoYXZpbmcg dG8gcHJvbW90ZSB0aGUgdmFsdWVzIHRvIFNJIHRvIGJlDQo+ID4gYWJsZSB0byB1c2UgdGhlbSBp biBpbnN0cnVjdGlvbnMgYW5kIHRoZW4gdHJ1bmNhdGluZyBhZ2FpbiBhZnRlcndhcmRzLg0KPiA+ DQo+ID4gVG8gZ2V0IGJvdGggdGhlIGVmZmljaWVuY3kgYW5kIHRoZSBzaW1wbGVyIFJUTCB3ZSBj YW4gaW5zdGVhZCBwcm9tb3RlDQo+ID4gdG8gYSBwYXJhZG94aWNhbCBzdWJyZWcuICBUaGlzIHBh dGNoIGltcGxlbWVudHMgdGhlIGhvb2sgZm9yIEFBcmNoNjQNCj4gPiBhbmQgYWRkcyBhbiBleHBs aWNpdCBvcHQtb3V0IGZvciB2YWx1ZXMgdGhhdCBmZWVkIGludG8gY29tcGFyaXNvbnMuICBUaGlz IGlzDQo+IGRvbmUgYmVjYXVzZToNCj4gPg0KPiA+IDEuIG91ciBjb21wYXJpc29ucyBwYXR0ZXJu cyBhbHJlYWR5IGFsbG93IHVzIHRvIGFic29yYiB0aGUgemVybyBleHRlbmQNCj4gPiAyLiBUaGUg ZXh0ZW5zaW9uIGFsbG93cyB1cyB0byB1c2UgY2J6L2NibnovdGJ6IGV0Yy4gIEluIHNvbWUgY2Fz ZXMNCj4gPiBzdWNoIGFzDQo+ID4NCj4gPiBpbnQgZm9vIChjaGFyIGEsIGNoYXIgYikNCj4gPiB7 DQo+ID4gICAgaWYgKGEpDQo+ID4gICAgICBpZiAoYikNCj4gPiAgICAgICAgYmFyMSAoKTsNCj4g PiAgICAgIGVsc2UNCj4gPiAgICAgICAgLi4uDQo+ID4gICAgIGVsc2UNCj4gPiAgICAgIGlmIChi KQ0KPiA+ICAgICAgICBiYXIyICgpOw0KPiA+ICAgICAgZWxzZQ0KPiA+ICAgICAgICAuLi4NCj4g PiB9DQo+ID4NCj4gPiBieSB6ZXJvIGV4dGVuZGluZyB0aGUgdmFsdWUgd2UgY2FuIGF2b2lkIGhh dmluZyB0byByZXBlYXRlZGx5IHRlc3QgdGhlDQo+ID4gdmFsdWUgYmVmb3JlIGEgYnJhbmNoLiAg QWxsb3dpbmcgdGhlIHplcm8gZXh0ZW5kIGFsc28gYWxsb3dzIG91cg0KPiA+IGV4aXN0aW5nIGBh bmRzYCBwYXR0ZXJucyB0byB3b3JrIGFzIGV4cGVjdGVkLg0KPiA+DQo+ID4gQm9vdHN0cmFwcGVk IFJlZ3Rlc3RlZCBvbiBhYXJjaDY0LW5vbmUtbGludXgtZ251IGFuZCBubyBpc3N1ZXMuDQo+ID4g SSBoYXZlIHRvIGNvbW1pdCB0aGlzIGFuZCB0aGUgbGFzdCBwYXRjaCB0b2dldGhlciBidXQgZWFz ZSBvZiByZXZpZXcgSQ0KPiA+IGhhdmUgc3BsaXQgdGhlbSB1cCBoZXJlLiBIb3dldmVyIDIwOSBt aXNzZWQgb3B0aW1pemF0aW9uIHhmYWlscyBhcmUNCj4gPiBmaXhlZC4NCj4gPg0KPiA+IE5vIHBl cmZvcm1hbmNlIGRpZmZlcmVuY2Ugb24gU1BFQ0NQVSAyMDE3IGJ1dCBubyBmYWlsdXJlcy4NCj4g Pg0KPiA+IE9rIGZvciBtYXN0ZXI/DQo+IA0KPiBEaWQgdGhpcyBwYXRjaCBldmVyIGdldCBhcHBy b3ZlZD8gSXQgaXMgYSBuaWNlIGltcHJvdmVtZW50IHRoYXQgd291bGQgYmUgbmljZQ0KPiB0byBn ZXQgaW50byBHQ0MgMTMgYmVmb3JlIHRoZSBjbG9zZSBvZiBzdGFnZSAxLg0KDQpObywgSXQgd2Fz IHJlcXVlc3RlZCBJIG1ha2UgYSBzdGFuZGFsb25lIHBhc3MgdGhhdCBpbnRyb2R1Y2VzIGEgbmV3 IGtpbmQgb2YgZXh0ZW5zaW9uDQppbiB0aGUgbWlkLWVuZC4gIFVuZm9ydHVuYXRlbHkgZHVlIHRv IGNvbnN0cmFpbnMgb24gaG93IG11Y2ggdGltZSBJIGNhbiBkZWRpY2F0ZSB0bw0KdGhhdCB0aGlz IHllYXIgSSd2ZSBoYWQgdG8gZHJvcCBpdCBmb3IgR0NDIDEzLg0KDQpJJ2xsIHRyeSB0byBwaWNr IGl0IHVwIGFnYWluIGR1cmluZyBHQ0MgMTQuDQoNClJlZ2FyZHMsDQpUYW1hcg0KDQo+IA0KPiBU aGFua3MsDQo+IEFuZHJldw0KPiANCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBUYW1hcg0KPiA+DQo+ ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPg0KPiA+ICAgICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJj aDY0LmNjDQo+IChhYXJjaDY0X3Byb21vdGVfZnVuY3Rpb25fYXJnc19zdWJyZWdfcCk6DQo+ID4g ICAgICAgICAoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHU19TVUJSRUdfUCk6IE5ldy4NCj4g PiAgICAgICAgICogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oIChQUk9NT1RFX01PREUpOiBFeHBh bmQgZG9jLg0KPiA+DQo+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAgICAg ICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L2FwYy1zdWJyZWcuYzogTmV3IHRlc3QuDQo+ID4NCj4g PiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0Y2ggLS0NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuaA0KPiA+IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuaCBp bmRleA0KPiA+DQo+IGVmYTQ2YWMwYjg3OTliNTg0OWI2MDlkNTkxMTg2ZTI2ZTVjYjM3ZmYuLmNj NzRhODE2ZmNjNjQ1OGFhMDY1MjQ2YTMwDQo+IGE0DQo+ID4gZDIxODQ2OTJhZDc0IDEwMDY0NA0K PiA+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmgNCj4gPiArKysgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5oDQo+ID4gQEAgLTM0LDcgKzM0LDggQEANCj4gPg0KPiA+ICAj ZGVmaW5lIFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKCkgYWFyY2g2NF9yZWdpc3Rlcl9wcmFnbWFz ICgpDQo+ID4NCj4gPiAtLyogVGFyZ2V0IG1hY2hpbmUgc3RvcmFnZSBsYXlvdXQuICAqLw0KPiA+ ICsvKiBUYXJnZXQgbWFjaGluZSBzdG9yYWdlIGxheW91dC4gIFNlZSBhbHNvDQo+ID4gKyAgIFRB UkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1NfU1VCUkVHX1AuICAqLw0KPiA+DQo+ID4gICNkZWZp bmUgUFJPTU9URV9NT0RFKE1PREUsIFVOU0lHTkVEUCwgVFlQRSkgICAgXA0KPiA+ICAgIGlmIChH RVRfTU9ERV9DTEFTUyAoTU9ERSkgPT0gTU9ERV9JTlQgICAgICAgICAgICAgICAgXA0KPiA+IGRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYw0KPiA+IGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuY2MgaW5kZXgNCj4gPg0KPiAyZjU1OTYwMGNmZjU1YWY5ZDQ2OGU4 ZDA4MTA1NDU1ODNjYzk4NmY1Li4yNTJkNmMyYWY3MmFmYzFkZmVlMWE4NjY0NGE1DQo+ID4gNzUz Nzg0YjQxZjU5IDEwMDY0NA0KPiA+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNj DQo+ID4gKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MNCj4gPiBAQCAtMzczNiw2 ICszNzM2LDU3IEBAIGFhcmNoNjRfYXJyYXlfbW9kZV9zdXBwb3J0ZWRfcA0KPiAobWFjaGluZV9t b2RlIG1vZGUsDQo+ID4gICAgcmV0dXJuIGZhbHNlOw0KPiA+ICB9DQo+ID4NCj4gPiArLyogSW1w bGVtZW50IHRhcmdldCBob29rDQo+IFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1NfU1VCUkVH X1AgdG8gY29tcGxlbWVudA0KPiA+ICsgICBQUk9NT1RFX01PREUuICBJZiBhbnkgYXJndW1lbnQg cHJvbW90aW9uIHdhcyBkb25lLCBkbyB0aGVtIGFzDQo+ID4gK3N1YnJlZ3MuICAqLyBzdGF0aWMg Ym9vbCBhYXJjaDY0X3Byb21vdGVfZnVuY3Rpb25fYXJnc19zdWJyZWdfcA0KPiA+ICsobWFjaGlu ZV9tb2RlIG1vZGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hY2hpbmVfbW9kZSBwcm9tb3RlZF9tb2RlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgLyogdW5zaWduZWRwICovLCB0cmVlDQo+ID4gK3Bhcm0pIHsN Cj4gPiArICBib29sIGNhbmRpZGF0ZV9wID0gR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVf SU5UDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJiYgR0VUX01PREVfQ0xBU1MgKHByb21vdGVk X21vZGUpID09IE1PREVfSU5UDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgJiYga25vd25fbHQg KEdFVF9NT0RFX1NJWkUgKG1vZGUpLCA0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICYmIHBy b21vdGVkX21vZGUgPT0gU0ltb2RlOw0KPiA+ICsNCj4gPiArICBpZiAoIWNhbmRpZGF0ZV9wKQ0K PiA+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICBpZiAoIXBhcm0gfHwgIWlzX2dp bXBsZV9yZWcgKHBhcm0pKQ0KPiA+ICsgICAgcmV0dXJuIHRydWU7DQo+ID4gKw0KPiA+ICsgIHRy ZWUgdmFyID0gcGFybTsNCj4gPiArICBpZiAoIVZBUl9QICh2YXIpKQ0KPiA+ICsgICAgew0KPiA+ ICsgICAgICBpZiAoVFJFRV9DT0RFIChwYXJtKSA9PSBTU0FfTkFNRQ0KPiA+ICsgICAgICAgICAg JiYgISh2YXIgPSBTU0FfTkFNRV9WQVIgKHZhcikpKQ0KPiA+ICsgICAgICAgcmV0dXJuIHRydWU7 DQo+ID4gKyAgICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAocGFybSkgIT0gUEFSTV9ERUNMKQ0KPiA+ ICsgICAgICAgcmV0dXJuIHRydWU7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIC8qIElmIHRo ZSB2YXJpYWJsZSBpcyB1c2VkIGluc2lkZSBhIGNvbXBhcmlzb24gd2hpY2ggc2V0cyBDQyB0aGVu IHdlDQo+IHNob3VsZA0KPiA+ICsgICAgIHN0aWxsIHByb21vdGUgdXNpbmcgYW4gZXh0ZW5kLiAg QnkgZG9pbmcgdGhpcyB3ZSBtYWtlIGl0IGVhc2llciB0byB1c2UNCj4gPiArICAgICBjYnovY2Ju eiBidXQgYWxzbyByZXBlYXRlZGx5IGhhdmluZyB0byB0ZXN0IHRoZSB2YWx1ZSBpbiBjZXJ0YWlu DQo+ID4gKyAgICAgY2lyY3Vtc3RhbmNlcyBsaWtlIG5lc3RlZCBpZiB2YWx1ZXMgdGhhdCB0ZXN0 IHRoZSBzYW1lIHZhbHVlIHdpdGggY2FsbHMNCj4gPiArICAgICBpbiBiZXR3ZWVuLiAqLw0KPiA+ ICsgIHRyZWUgc3NhX3ZhciA9IHNzYV9kZWZhdWx0X2RlZiAoY2Z1biwgdmFyKTsgIGlmICghc3Nh X3ZhcikNCj4gPiArICAgIHJldHVybiB0cnVlOw0KPiA+ICsNCj4gPiArICBjb25zdCBzc2FfdXNl X29wZXJhbmRfdCAqY29uc3QgaGVhZCA9DQo+ICYoU1NBX05BTUVfSU1NX1VTRV9OT0RFDQo+ID4g KyAoc3NhX3ZhcikpOyAgY29uc3Qgc3NhX3VzZV9vcGVyYW5kX3QgKnB0cjsNCj4gPiArDQo+ID4g KyAgZm9yIChwdHIgPSBoZWFkLT5uZXh0OyBwdHIgIT0gaGVhZDsgcHRyID0gcHRyLT5uZXh0KQ0K PiA+ICsgICAgaWYgKFVTRV9TVE1UKHB0cikgJiYgaXNfZ2ltcGxlX2Fzc2lnbiAoVVNFX1NUTVQg KHB0cikpKQ0KPiA+ICsgICAgICB7DQo+ID4gKyAgICAgICB0cmVlX2NvZGUgY29kZSA9IGdpbXBs ZV9hc3NpZ25fcmhzX2NvZGUgKFVTRV9TVE1UKHB0cikpOw0KPiA+ICsgICAgICAgaWYgKFRSRUVf Q09ERV9DTEFTUyAoY29kZSkgPT0gdGNjX2NvbXBhcmlzb24pDQo+ID4gKyAgICAgICAgIHJldHVy biBmYWxzZTsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gdHJ1ZTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiAgLyogTU9ERSBpcyBzb21lIGZvcm0gb2YgU1ZFIHZlY3RvciBtb2RlLiAg Rm9yIGRhdGEgbW9kZXMsIHJldHVybiB0aGUNCj4gbnVtYmVyDQo+ID4gICAgIG9mIHZlY3RvciBy ZWdpc3RlciBiaXRzIHRoYXQgZWFjaCBlbGVtZW50IG9mIE1PREUgb2NjdXBpZXMsIHN1Y2ggYXMg NjQNCj4gPiAgICAgZm9yIGJvdGggVk54MkRJbW9kZSBhbmQgVk54MlNJbW9kZSAod2hlcmUgZWFj aCAzMi1iaXQgdmFsdWUgaXMNCj4gPiBzdG9yZWQgQEAgLTI3NDkwLDYgKzI3NTQxLDEwIEBADQo+ ID4gYWFyY2g2NF9saWJnY2NfZmxvYXRpbmdfbW9kZV9zdXBwb3J0ZWRfcA0KPiA+ICAjdW5kZWYg VEFSR0VUX0FSUkFZX01PREVfU1VQUE9SVEVEX1ANCj4gPiAgI2RlZmluZSBUQVJHRVRfQVJSQVlf TU9ERV9TVVBQT1JURURfUA0KPiBhYXJjaDY0X2FycmF5X21vZGVfc3VwcG9ydGVkX3ANCj4gPg0K PiA+ICsjdW5kZWYgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHU19TVUJSRUdfUA0KPiA+ICsj ZGVmaW5lIFRBUkdFVF9QUk9NT1RFX0ZVTkNUSU9OX0FSR1NfU1VCUkVHX1AgXA0KPiA+ICsgIGFh cmNoNjRfcHJvbW90ZV9mdW5jdGlvbl9hcmdzX3N1YnJlZ19wDQo+ID4gKw0KPiA+ICAjdW5kZWYg VEFSR0VUX1ZFQ1RPUklaRV9DUkVBVEVfQ09TVFMNCj4gPiAgI2RlZmluZSBUQVJHRVRfVkVDVE9S SVpFX0NSRUFURV9DT1NUUw0KPiBhYXJjaDY0X3ZlY3Rvcml6ZV9jcmVhdGVfY29zdHMNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hcGMtc3Vi cmVnLmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FwYy1zdWJyZWcu Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gPg0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDc1NjNhMTFjZTExZmE2NzdmN2FkNGJm Mg0KPiBhMA0KPiA+IDkwZTZhMTM2ZTRkOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hcGMtc3VicmVnLmMNCj4gPiBAQCAtMCww ICsxLDEwMyBAQA0KPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLU8iIH0gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1 bmN0aW9uLWJvZGllcyAiKioiICIiICIiIH0gfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0 ZGludC5oPg0KPiA+ICsNCj4gPiArLyoNCj4gPiArKiogZjA6DQo+ID4gKyoqICAgICBtdm4gICAg IHcwLCB3MA0KPiA+ICsqKiAgICAgcmV0DQo+ID4gKyovDQo+ID4gK3VpbnQ4X3QgZjAgKHVpbnQ4 X3QgeHIpew0KPiA+ICsgICAgcmV0dXJuICh1aW50OF90KSAoMHhmZiAtIHhyKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoNCj4gPiArKiogZjE6DQo+ID4gKyoqICAgICBtdm4gICAgIHcwLCB3MA0K PiA+ICsqKiAgICAgcmV0DQo+ID4gKyovDQo+ID4gK2ludDhfdCBmMSAoaW50OF90IHhyKXsNCj4g PiArICAgIHJldHVybiAoaW50OF90KSAoMHhmZiAtIHhyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoNCj4gPiArKiogZjI6DQo+ID4gKyoqICAgICBtdm4gICAgIHcwLCB3MA0KPiA+ICsqKiAgICAg cmV0DQo+ID4gKyovDQo+ID4gK3VpbnQxNl90IGYyICh1aW50MTZfdCB4cil7DQo+ID4gKyAgICBy ZXR1cm4gKHVpbnQxNl90KSAoMHhmZkZGIC0geHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0K PiA+ICsqKiBmMzoNCj4gPiArKiogICAgIG12biAgICAgdzAsIHcwDQo+ID4gKyoqICAgICByZXQN Cj4gPiArKi8NCj4gPiArdWludDMyX3QgZjMgKHVpbnQzMl90IHhyKXsNCj4gPiArICAgIHJldHVy biAodWludDMyX3QpICgweGZmRkZmZmZmIC0geHIpOyB9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsq KiBmNDoNCj4gPiArKiogICAgIG12biAgICAgeDAsIHgwDQo+ID4gKyoqICAgICByZXQNCj4gPiAr Ki8NCj4gPiArdWludDY0X3QgZjQgKHVpbnQ2NF90IHhyKXsNCj4gPiArICAgIHJldHVybiAodWlu dDY0X3QpICgweGZmRkZmZmZmZmZmZmZmZmYgLSB4cik7IH0NCj4gPiArDQo+ID4gKy8qDQo+ID4g KyoqIGY1Og0KPiA+ICsqKiAgICAgbXZuICAgICB3MCwgdzANCj4gPiArKiogICAgIHN1YiAgICAg dzAsIHcwLCB3MQ0KPiA+ICsqKiAgICAgcmV0DQo+ID4gKyovDQo+ID4gK3VpbnQ4X3QgZjUgKHVp bnQ4X3QgeHIsIHVpbnQ4X3QgeGMpew0KPiA+ICsgICAgcmV0dXJuICh1aW50OF90KSAoMHhmZiAt IHhyIC0geGMpOyB9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsqKiBmNjoNCj4gPiArKiogICAgIG12 biAgICAgdzAsIHcwDQo+ID4gKyoqICAgICBhbmQgICAgIHcwLCB3MCwgMjU1DQo+ID4gKyoqICAg ICBhbmQgICAgIHcxLCB3MSwgMjU1DQo+ID4gKyoqICAgICBtdWwgICAgIHcwLCB3MCwgdzENCj4g PiArKiogICAgIHJldA0KPiA+ICsqLw0KPiA+ICt1aW50MTZfdCBmNiAodWludDhfdCB4ciwgdWlu dDhfdCB4Yyl7DQo+ID4gKyAgICByZXR1cm4gKCh1aW50OF90KSAoMHhmZiAtIHhyKSkgKiB4Yzsg fQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArKiogZjc6DQo+ID4gKyoqICAgICBhbmQgICAgIHcwLCB3 MCwgMjU1DQo+ID4gKyoqICAgICBhbmQgICAgIHcxLCB3MSwgMjU1DQo+ID4gKyoqICAgICBtdWwg ICAgIHcwLCB3MCwgdzENCj4gPiArKiogICAgIHJldA0KPiA+ICsqLw0KPiA+ICt1aW50MTZfdCBm NyAodWludDhfdCB4ciwgdWludDhfdCB4Yyl7DQo+ID4gKyAgICByZXR1cm4geHIgKiB4YzsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArKiogZjg6DQo+ID4gKyoqICAgICBtdWwgICAgIHcw LCB3MCwgdzENCj4gPiArKiogICAgIGFuZCAgICAgdzAsIHcwLCAyNTUNCj4gPiArKiogICAgIHJl dA0KPiA+ICsqLw0KPiA+ICt1aW50MTZfdCBmOCAodWludDhfdCB4ciwgdWludDhfdCB4Yyl7DQo+ ID4gKyAgICByZXR1cm4gKHVpbnQ4X3QpKHhyICogeGMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv Kg0KPiA+ICsqKiBmOToNCj4gPiArKiogICAgIGFuZCAgICAgdzAsIHcwLCAyNTUNCj4gPiArKiog ICAgIGFkZCAgICAgdzAsIHcwLCB3MQ0KPiA+ICsqKiAgICAgcmV0DQo+ID4gKyovDQo+ID4gK3Vp bnQxNl90IGY5ICh1aW50OF90IHhyLCB1aW50MTZfdCB4Yyl7DQo+ID4gKyAgICByZXR1cm4geHIg KyB4YzsNCj4gPiArfQ0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gLS0NCg==