From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130071.outbound.protection.outlook.com [40.107.13.71]) by sourceware.org (Postfix) with ESMTPS id 20AFE3858409 for ; Mon, 13 Dec 2021 14:29:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 20AFE3858409 Received: from AS9PR06CA0216.eurprd06.prod.outlook.com (2603:10a6:20b:45e::30) by PR2PR08MB4778.eurprd08.prod.outlook.com (2603:10a6:101:21::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.17; Mon, 13 Dec 2021 14:29:33 +0000 Received: from AM5EUR03FT034.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:45e:cafe::d8) by AS9PR06CA0216.outlook.office365.com (2603:10a6:20b:45e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16 via Frontend Transport; Mon, 13 Dec 2021 14:29:33 +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 AM5EUR03FT034.mail.protection.outlook.com (10.152.16.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.12 via Frontend Transport; Mon, 13 Dec 2021 14:29:33 +0000 Received: ("Tessian outbound c61f076cbd30:v110"); Mon, 13 Dec 2021 14:29:33 +0000 X-CR-MTA-TID: 64aa7808 Received: from ad20688999a2.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6791E0AB-7A9B-413D-9219-3CC857D5EDE2.1; Mon, 13 Dec 2021 14:29:28 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ad20688999a2.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 13 Dec 2021 14:29:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZWOEeGW04tHZp+uLNmXFmW7mRUeOWieqmZZUijtqM1bamekfuWCWZVFpbYI5f3trj89rVS/6Cljcrkeix6/9ZQv2+Y33l5ymA4g8IMLJG6tRQ5WnTorbNOHxX16s8jhwziO4vUCeEdj8Ie/rZML9USfsROcpDeRO4vHTGFH5MzXkxOp+aTg0BJoge3XrcOK4h3akbcdmoAmFq4CjuPTPhh8dF3/7PgCOjv9nI/CzllsPxq9ceRw8VLzWB6KHFYochde+OCwvngHg+yVvMInQxRzqQwZfpK3BqD43SvC7Dg+CYsZG78z0r+yHn5TA2VxUJjnGhdwS7u16ZQNf+dbbEw== 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=u9FXtWLefnD6FJsY/FnQyNMOz6unIPYmmjScgmUgLMA=; b=YEy6UhWt6ZNa3UJFOJcInZKhxQn7YUiP8CGhhqWmE/MfPSiK8WloSEchIexUoeMCCyTys6dRrJeQQs9mluw0RO6aZJwO+PbVbl4k8aG1pE4eFOoZNBtFozWKJiYNWG4H/iGDQJeufoQO8gYnRXqlzgogVlha2mZ+Dm+FIYZwMG/wfOkY9SAKRLfAZFESBlgQW6tDW2AFxPqbsFZZRIgu1gplLPzNxMWVGThCevgq8CBq1oE8xyWRu6RLe1ZLz8Y8FwGm6rqIhulUhQLatI1IrVQDM+xygVGGqnqoXOqAYgb6J6nw6Uu1YFoTCHIlDczM9hZPFOexxmLnI4xMKTyEMQ== 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 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by PA4PR08MB6094.eurprd08.prod.outlook.com (2603:10a6:102:f0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.17; Mon, 13 Dec 2021 14:29:26 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::e0ea:e9fa:7b50:e5bd]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::e0ea:e9fa:7b50:e5bd%5]) with mapi id 15.20.4778.017; Mon, 13 Dec 2021 14:29:26 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][1/4][committed] aarch64: Add support for Armv8.8-a memory operations and memcpy expansion Thread-Topic: [PATCH][1/4][committed] aarch64: Add support for Armv8.8-a memory operations and memcpy expansion Thread-Index: AdfwLS0StRAJN+XLT8aqHoVKMEwQmw== Date: Mon, 13 Dec 2021 14:29:26 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 55D0D9EA3793ED44868F1B936B796FA9.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-Office365-Filtering-Correlation-Id: 4943be71-2506-4cd3-86eb-08d9be44fb7c x-ms-traffictypediagnostic: PA4PR08MB6094:EE_|AM5EUR03FT034:EE_|PR2PR08MB4778:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: q83hFKweyLIbvoAyqln9dq72i/CxSvnSpofDntNY/xYvYRbLLpSwaqrxo1bcLUKCsr+qUk9ROZXur4acZ1laKhB8ZoRewlh+KRbqJddyeG+080flvYWGsusqkrXv0hmIgNGdphgBCc7rqDggpw13C4f8ytSz1/+hekCy2BTKzAqNr99CSnXEQHmYYqJJEuQ9U3C45A5OMFap0Td69eEXJyg/mVM23eR78KtriHASyzWslLZPEB9VomFjVp9J21Pg8BSMcbUB+ViAsG0DX2o+P3wiqPVWsrEdEhS815dxd4z05HRSYO/pz32bL1RhEup+kR0Vnczmy9flUhuf1yf12xFXu8GZHszo3UylLYr5n2h3B8TLsv6yDKjgjyr8ZD7cqaxOQN4+BwlKaSpIQu0hw8mFFJEgil+G2ZQwKT7tZZeID+luaTJURrssKxUVxCNW8tq9kGgsvvzFxOgfXhTAa/pJP7zUe/B2jW3YqBc38z/cci+LxXkPRlmaE4quBREUj5sWNYMb1Ocw/2Bobzjhesm5Bycd33V0gjcHPS9Z6xlt+5MgHT3cQMld6Ym05sD4gSQZecL0qUQfcy4p8giE2wuUtvGPNMI2A8jDyGNT0s7s+lszUKcEyfA6oT/S4PyFecQnFAl0ccMU3zGy3Qj+WNgsfBzV478ywDzZ1qTPsqIF0iOyPtg1RsQiz0S9txc/2cCOOuhbky7m99ZM4G3JjgesL2P0T4TQxAMshg2krVADSkm8pYvoMQB6F+d46xRgqL++NrlHOxO4jCgzLxgD09ISgr50KasWeX4bgjATknA= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6926.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6506007)(76116006)(66476007)(7696005)(55016003)(55236004)(26005)(71200400001)(64756008)(122000001)(508600001)(9686003)(66446008)(8676002)(66946007)(99936003)(38100700002)(84970400001)(2906002)(52536014)(66556008)(6916009)(186003)(8936002)(33656002)(316002)(86362001)(38070700005)(5660300002); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB6926889697F016D7C07DE3C493749PAXPR08MB6926eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6094 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: AM5EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5d4b7714-7b19-4c0d-d610-08d9be44f74e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fL/jDZvoA/JP/AnMbOrd2XA6H7woS9bDYKRAHwc6B2eYBN+B1ZG4pDOBGLG3v4hLD2gWEcbJ4oQSGxz96sg/G1FumxpGRvj9YrUbh0TiWc7GnhUOVCo8fLgkC+gMOyzRirigoaBPsDOiw1ZjoQfLFXBiZEApWY3M/Rv84EGgYFVhV95i7j+NOV7FHmmc3UD7FogaJPczTxZVjljZKtq5wU0itu33faHW5vt/f4VmOGz76wUemN7XFm2VLj8wXb4EpgsciwwEpKi9BBj0T5GX3fT4nhE/ZXt1btXACuwOFrz4hCOb/r0p5cagMrrHJX6MyKo9fIxY76xKPsOBszcH0AF5MSnP9P1IIqYDs15jMwJCxwauqoQ7U0sT/rfiRhqRVl4qiRkCb8GPSKHHJ5I22Rh611mR5JLSCn/Ber70KHLoW1H0LlJmfQvRKMvivULIS8zM2bG9TQpO77LxcJNWkNEh1ko9rCOzporU6OlpI4Uo4GySwgiAEVv5eIYKI2O8WTrIv4Uh2+X1qGXyy2V5hG0dGjVQJQh46zzRTroK7WTVzyF53q2Y5pL4HjqryxkT9AG7c4/k/or5JhzHYeVbRU4Ltcq7h10/99LNmU8OAX+JEfaz6HZlYnhnk1IyUJWCr5u15F0OKl3mVCsbiAodCuhcEfavz9K5iT93avYEOpSKnKm0zmVZGEx4HA1fUuDIWOKLmkClNcn73x9+qZPbbTLfMTwImhjp21eRG8mCS+Zm5S+nM+1PBsMTqaFfxOkmxKu9bN3QXz4h+kcrshbKRRGJUSvFtwK/rdhOTnUDQIU= 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:(4636009)(46966006)(36840700001)(235185007)(55016003)(356005)(5660300002)(36860700001)(336012)(316002)(82310400004)(8936002)(52536014)(81166007)(86362001)(7696005)(6506007)(47076005)(70586007)(70206006)(99936003)(508600001)(33656002)(26005)(9686003)(8676002)(186003)(84970400001)(2906002)(6916009); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2021 14:29:33.5222 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4943be71-2506-4cd3-86eb-08d9be44fb7c 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: AM5EUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4778 X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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, 13 Dec 2021 14:29:38 -0000 --_002_PAXPR08MB6926889697F016D7C07DE3C493749PAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, This patch adds the +mops architecture extension flag from the 2021 Arm Arc= hitecture extensions, Armv8.8-a. The +mops extensions introduce instructions to accelerate the memcpy, memse= t, memmove standard functions. The first patch here uses the instructions in the inline memcpy expansion. Further patches in the series will use similar instructions to inline memmo= ve and memset. A new param, aarch64-mops-memcpy-size-threshold, is introduced to control t= he size threshold above which to emit the new sequence. Its default setting is 256 bytes, which is the same = as the current threshold above which we'd emit a libcall. Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk. Thanks, Kyrill gcc/ChangeLog: * config/aarch64/aarch64-option-extensions.def (mops): Define. * config/aarch64/aarch64.c (aarch64_expand_cpymem_mops): Define. (aarch64_expand_cpymem): Define. * config/aarch64/aarch64.h (AARCH64_FL_MOPS): Define. (AARCH64_ISA_MOPS): Define. (TARGET_MOPS): Define. (MOVE_RATIO): Adjust for TARGET_MOPS. * config/aarch64/aarch64.md ("unspec"): Add UNSPEC_CPYMEM. (aarch64_cpymemdi): New pattern. (cpymemdi): Adjust for TARGET_MOPS. * config/aarch64/aarch64.opt (aarch64-mops-memcpy-size-threshol): New param. * doc/invoke.texi (AArch64 Options): Document +mops. gcc/testsuite/ChangeLog: * gcc.target/aarch64/mops_1.c: New test. --_002_PAXPR08MB6926889697F016D7C07DE3C493749PAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="mops_1.patch" Content-Description: mops_1.patch Content-Disposition: attachment; filename="mops_1.patch"; size=11565; creation-date="Mon, 13 Dec 2021 14:21:35 GMT"; modification-date="Mon, 13 Dec 2021 14:21:10 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LW9wdGlvbi1leHRlbnNpb25z LmRlZiBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LW9wdGlvbi1leHRlbnNpb25zLmRlZgpp bmRleCBiNjFmMWRmOTAxOWU2NTU1MDNmMDNjOWE1YWE0ZWNmZmE2NThkMGZkLi4zZjQ0OWZiYTQx NTU3YWZkNjZkMTFmOTc2ZWM5ZmJkY2RkZmFmYjQyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC1vcHRpb24tZXh0ZW5zaW9ucy5kZWYKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtb3B0aW9uLWV4dGVuc2lvbnMuZGVmCkBAIC0yMzUsNCArMjM1LDcgQEAgQUFS Q0g2NF9PUFRfRVhURU5TSU9OKCJwYXV0aCIsIEFBUkNINjRfRkxfUEFVVEgsIDAsIDAsIGZhbHNl LCAicGFjYSBwYWNnIikKIC8qIEVuYWJsaW5nL0Rpc2FibGluZyAibHM2NCIgb25seSBjaGFuZ2Vz ICJsczY0Ii4gICovCiBBQVJDSDY0X09QVF9FWFRFTlNJT04oImxzNjQiLCBBQVJDSDY0X0ZMX0xT NjQsIDAsIDAsIGZhbHNlLCAiIikKIAorLyogRW5hYmxpbmcvZGlzYWJsaW5nICJtb3BzIiBvbmx5 IGNoYW5nZXMgIm1vcHMiLiAgKi8KK0FBUkNINjRfT1BUX0VYVEVOU0lPTigibW9wcyIsIEFBUkNI NjRfRkxfTU9QUywgMCwgMCwgZmFsc2UsICIiKQorCiAjdW5kZWYgQUFSQ0g2NF9PUFRfRVhURU5T SU9OCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuaAppbmRleCAyNzkyYmIyOWFkYmJiNWIzMTQ1YjNmNzY3NjE1YWY4 ZWRiYzMwYjA4Li43OWQwYmNkMzU3ZmM3NWM4Yjg1YTI1MjgxM2IyYWFjMGUyYjZlNWJkIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oCisrKyBiL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LmgKQEAgLTIzMSwxNCArMjMxLDE3IEBAIGV4dGVybiB1bnNpZ25lZCBhYXJj aDY0X2FyY2hpdGVjdHVyZV92ZXJzaW9uOwogLyogUG9pbnRlciBBdXRoZW50aWNhdGlvbiAoUEFV VEgpIGV4dGVuc2lvbi4gICovCiAjZGVmaW5lIEFBUkNINjRfRkxfUEFVVEggICAgICAoMVVMTCA8 PCA0MCkKIAorLyogQXJtdjkuMC1BLiAgKi8KKyNkZWZpbmUgQUFSQ0g2NF9GTF9WOSAgICAgICAg ICgxVUxMIDw8IDQxKSAgLyogQXJtdjkuMC1BIEFyY2hpdGVjdHVyZS4gICovCisKIC8qIDY0LWJ5 dGUgYXRvbWljIGxvYWQvc3RvcmUgZXh0ZW5zaW9ucy4gICovCi0jZGVmaW5lIEFBUkNINjRfRkxf TFM2NCAgICAgICgxVUxMIDw8IDQxKQorI2RlZmluZSBBQVJDSDY0X0ZMX0xTNjQgICAgICAoMVVM TCA8PCA0MikKIAogLyogQXJtdjguNy1hIGFyY2hpdGVjdHVyZSBleHRlbnNpb25zLiAgKi8KLSNk ZWZpbmUgQUFSQ0g2NF9GTF9WOF83ICAgICAgICgxVUxMIDw8IDQyKQorI2RlZmluZSBBQVJDSDY0 X0ZMX1Y4XzcgICAgICAgKDFVTEwgPDwgNDMpCiAKLS8qIEFybXY5LjAtQS4gICovCi0jZGVmaW5l IEFBUkNINjRfRkxfVjkgICAgICAgICAoMVVMTCA8PCA0MykgIC8qIEFybXY5LjAtQSBBcmNoaXRl Y3R1cmUuICAqLworLyogSGFyZHdhcmUgbWVtb3J5IG9wZXJhdGlvbiBpbnN0cnVjdGlvbnMuICAq LworI2RlZmluZSBBQVJDSDY0X0ZMX01PUFMgICAgICAgKDFVTEwgPDwgNDQpCiAKIC8qIEhhcyBG UCBhbmQgU0lNRC4gICovCiAjZGVmaW5lIEFBUkNINjRfRkxfRlBTSU1EICAgICAoQUFSQ0g2NF9G TF9GUCB8IEFBUkNINjRfRkxfU0lNRCkKQEAgLTMxMCw2ICszMTMsNyBAQCBleHRlcm4gdW5zaWdu ZWQgYWFyY2g2NF9hcmNoaXRlY3R1cmVfdmVyc2lvbjsKICNkZWZpbmUgQUFSQ0g2NF9JU0FfVjhf UgkgICAoYWFyY2g2NF9pc2FfZmxhZ3MgJiBBQVJDSDY0X0ZMX1Y4X1IpCiAjZGVmaW5lIEFBUkNI NjRfSVNBX1BBVVRICSAgIChhYXJjaDY0X2lzYV9mbGFncyAmIEFBUkNINjRfRkxfUEFVVEgpCiAj ZGVmaW5lIEFBUkNINjRfSVNBX1Y5CQkgICAoYWFyY2g2NF9pc2FfZmxhZ3MgJiBBQVJDSDY0X0ZM X1Y5KQorI2RlZmluZSBBQVJDSDY0X0lTQV9NT1BTCSAgIChhYXJjaDY0X2lzYV9mbGFncyAmIEFB UkNINjRfRkxfTU9QUykKIAogLyogQ3J5cHRvIGlzIGFuIG9wdGlvbmFsIGV4dGVuc2lvbiB0byBB ZHZTSU1ELiAgKi8KICNkZWZpbmUgVEFSR0VUX0NSWVBUTyAoVEFSR0VUX1NJTUQgJiYgQUFSQ0g2 NF9JU0FfQ1JZUFRPKQpAQCAtNDAxLDYgKzQwNSw5IEBAIGV4dGVybiB1bnNpZ25lZCBhYXJjaDY0 X2FyY2hpdGVjdHVyZV92ZXJzaW9uOwogLyogUEFVVEggaW5zdHJ1Y3Rpb25zIGFyZSBlbmFibGVk IHRocm91Z2ggK3BhdXRoLiAgKi8KICNkZWZpbmUgVEFSR0VUX1BBVVRIIChBQVJDSDY0X0lTQV9Q QVVUSCkKIAorLyogTU9QUyBpbnN0cnVjdGlvbnMgYXJlIGVuYWJsZWQgdGhyb3VnaCArbW9wcy4g ICovCisjZGVmaW5lIFRBUkdFVF9NT1BTIChBQVJDSDY0X0lTQV9NT1BTKQorCiAvKiBNYWtlIHN1 cmUgdGhpcyBpcyBhbHdheXMgZGVmaW5lZCBzbyB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGZvciBp ZmRlZnMKICAgIGJ1dCByYXRoZXIgdXNlIG5vcm1hbCBpZnMuICAqLwogI2lmbmRlZiBUQVJHRVRf RklYX0VSUl9BNTNfODM1NzY5X0RFRkFVTFQKQEAgLTEwNDYsOSArMTA1MywxMCBAQCB0eXBlZGVm IHN0cnVjdAogICAgNy1ieXRlIGNvcHkgaXMgYSA0LWJ5dGUgKyAyLWJ5dGUgKyBieXRlIGNvcHku ICBUaGlzIHByb3ZlcyBpbmVmZmljaWVudAogICAgZm9yIGJvdGggc2l6ZSBhbmQgc3BlZWQgb2Yg Y29weSwgc28gd2Ugd2lsbCBpbnN0ZWFkIHVzZSB0aGUgImNweW1lbSIKICAgIHN0YW5kYXJkIG5h bWUgdG8gaW1wbGVtZW50IHRoZSBjb3B5LiAgVGhpcyBsb2dpYyBkb2VzIG5vdCBhcHBseSB3aGVu Ci0gICB0YXJnZXRpbmcgLW1zdHJpY3QtYWxpZ24sIHNvIGtlZXAgYSBzZW5zaWJsZSBkZWZhdWx0 IGluIHRoYXQgY2FzZS4gICovCisgICB0YXJnZXRpbmcgLW1zdHJpY3QtYWxpZ24gb3IgVEFSR0VU X01PUFMsIHNvIGtlZXAgYSBzZW5zaWJsZSBkZWZhdWx0IGluCisgICB0aGF0IGNhc2UuICAqLwog I2RlZmluZSBNT1ZFX1JBVElPKHNwZWVkKSBcCi0gICghU1RSSUNUX0FMSUdOTUVOVCA/IDIgOiAo KChzcGVlZCkgPyAxNSA6IEFBUkNINjRfQ0FMTF9SQVRJTykgLyAyKSkKKyAgKCghU1RSSUNUX0FM SUdOTUVOVCB8fCBUQVJHRVRfTU9QUykgPyAyIDogKCgoc3BlZWQpID8gMTUgOiBBQVJDSDY0X0NB TExfUkFUSU8pIC8gMikpCiAKIC8qIExpa2UgTU9WRV9SQVRJTywgd2l0aG91dCAtbXN0cmljdC1h bGlnbiwgbWFrZSBkZWNpc2lvbnMgaW4gInNldG1lbSIgd2hlbgogICAgd2Ugd291bGQgdXNlIG1v cmUgdGhhbiAzIHNjYWxhciBpbnN0cnVjdGlvbnMuCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYwppbmRleCBiZTI0 YjczMjBkMjhkZWVkOWExOWEwNDUxYzk2YmQ2N2QyZmIzMTA0Li5iZDc1NGU0ZTJjMmI0M2U3NjAy MWQzZGQ0YjEwY2MwM2Q3OGQ5NTQzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC5jCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKQEAgLTIzNTY4LDYgKzIz NTY4LDI4IEBAIGFhcmNoNjRfY29weV9vbmVfYmxvY2tfYW5kX3Byb2dyZXNzX3BvaW50ZXJzIChy dHggKnNyYywgcnR4ICpkc3QsCiAgICpkc3QgPSBhYXJjaDY0X3Byb2dyZXNzX3BvaW50ZXIgKCpk c3QpOwogfQogCisvKiBFeHBhbmQgYSBjcHltZW0gdXNpbmcgdGhlIE1PUFMgZXh0ZW5zaW9uLiAg T1BFUkFORFMgYXJlIHRha2VuCisgICBmcm9tIHRoZSBjcHltZW0gcGF0dGVybi4gIFJldHVybiB0 cnVlIGlmZiB3ZSBzdWNjZWVkZWQuICAqLworc3RhdGljIGJvb2wKK2FhcmNoNjRfZXhwYW5kX2Nw eW1lbV9tb3BzIChydHggKm9wZXJhbmRzKQoreworICBpZiAoIVRBUkdFVF9NT1BTKQorICAgIHJl dHVybiBmYWxzZTsKKyAgcnR4IGFkZHJfZHN0ID0gWEVYUCAob3BlcmFuZHNbMF0sIDApOworICBy dHggYWRkcl9zcmMgPSBYRVhQIChvcGVyYW5kc1sxXSwgMCk7CisgIHJ0eCBzel9yZWcgPSBvcGVy YW5kc1syXTsKKworICBpZiAoIVJFR19QIChzel9yZWcpKQorICAgIHN6X3JlZyA9IGZvcmNlX3Jl ZyAoREltb2RlLCBzel9yZWcpOworICBpZiAoIVJFR19QIChhZGRyX2RzdCkpCisgICAgYWRkcl9k c3QgPSBmb3JjZV9yZWcgKERJbW9kZSwgYWRkcl9kc3QpOworICBpZiAoIVJFR19QIChhZGRyX3Ny YykpCisgICAgYWRkcl9zcmMgPSBmb3JjZV9yZWcgKERJbW9kZSwgYWRkcl9zcmMpOworICBlbWl0 X2luc24gKGdlbl9hYXJjaDY0X2NweW1lbWRpIChhZGRyX2RzdCwgYWRkcl9zcmMsIHN6X3JlZykp OworCisgIHJldHVybiB0cnVlOworfQorCiAvKiBFeHBhbmQgY3B5bWVtLCBhcyBpZiBmcm9tIGEg X19idWlsdGluX21lbWNweS4gIFJldHVybiB0cnVlIGlmCiAgICB3ZSBzdWNjZWVkLCBvdGhlcndp c2UgcmV0dXJuIGZhbHNlLCBpbmRpY2F0aW5nIHRoYXQgYSBsaWJjYWxsIHRvCiAgICBtZW1jcHkg c2hvdWxkIGJlIGVtaXR0ZWQuICAqLwpAQCAtMjM1ODEsMTkgKzIzNjAzLDI1IEBAIGFhcmNoNjRf ZXhwYW5kX2NweW1lbSAocnR4ICpvcGVyYW5kcykKICAgcnR4IGJhc2U7CiAgIG1hY2hpbmVfbW9k ZSBjdXJfbW9kZSA9IEJMS21vZGU7CiAKLSAgLyogT25seSBleHBhbmQgZml4ZWQtc2l6ZSBjb3Bp ZXMuICAqLworICAvKiBWYXJpYWJsZS1zaXplZCBtZW1jcHkgY2FuIGdvIHRocm91Z2ggdGhlIE1P UFMgZXhwYW5zaW9uIGlmIGF2YWlsYWJsZS4gICovCiAgIGlmICghQ09OU1RfSU5UX1AgKG9wZXJh bmRzWzJdKSkKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFhcmNoNjRfZXhwYW5kX2Nw eW1lbV9tb3BzIChvcGVyYW5kcyk7CiAKICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBzaXplID0g SU5UVkFMIChvcGVyYW5kc1syXSk7CiAKLSAgLyogVHJ5IHRvIGlubGluZSB1cCB0byAyNTYgYnl0 ZXMuICAqLwotICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIG1heF9jb3B5X3NpemUgPSAyNTY7Cisg IC8qIFRyeSB0byBpbmxpbmUgdXAgdG8gMjU2IGJ5dGVzIG9yIHVzZSB0aGUgTU9QUyB0aHJlc2hv bGQgaWYgYXZhaWxhYmxlLiAgKi8KKyAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBtYXhfY29weV9z aXplCisgICAgPSBUQVJHRVRfTU9QUyA/IGFhcmNoNjRfbW9wc19tZW1jcHlfc2l6ZV90aHJlc2hv bGQgOiAyNTY7CiAKICAgYm9vbCBzaXplX3AgPSBvcHRpbWl6ZV9mdW5jdGlvbl9mb3Jfc2l6ZV9w IChjZnVuKTsKIAorICAvKiBMYXJnZSBjb25zdGFudC1zaXplZCBjcHltZW0gc2hvdWxkIGdvIHRo cm91Z2ggTU9QUyB3aGVuIHBvc3NpYmxlLgorICAgICBJdCBzaG91bGQgYmUgYSB3aW4gZXZlbiBm b3Igc2l6ZSBvcHRpbWl6YXRpb24gaW4gdGhlIGdlbmVyYWwgY2FzZS4KKyAgICAgRm9yIHNwZWVk IG9wdGltaXphdGlvbiB0aGUgY2hvaWNlIGJldHdlZW4gTU9QUyBhbmQgdGhlIFNJTUQgc2VxdWVu Y2UKKyAgICAgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgY29weSwgcmF0aGVyIHRoYW4gbnVt YmVyIG9mIGluc3RydWN0aW9ucywKKyAgICAgYWxpZ25tZW50IGV0Yy4gICovCiAgIGlmIChzaXpl ID4gbWF4X2NvcHlfc2l6ZSkKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFhcmNoNjRf ZXhwYW5kX2NweW1lbV9tb3BzIChvcGVyYW5kcyk7CiAKICAgaW50IGNvcHlfYml0cyA9IDI1NjsK IApAQCAtMjM2NDMsOSArMjM2NzEsOSBAQCBhYXJjaDY0X2V4cGFuZF9jcHltZW0gKHJ0eCAqb3Bl cmFuZHMpCiAgICAgICBub3BzICs9IDI7CiAgICAgICBuIC09IG1vZGVfYml0czsKIAotICAgICAg LyogRW1pdCB0cmFpbGluZyBjb3BpZXMgdXNpbmcgb3ZlcmxhcHBpbmcgdW5hbGlnbmVkIGFjY2Vz c2VzIC0gdGhpcyBpcwotCSBzbWFsbGVyIGFuZCBmYXN0ZXIuICAqLwotICAgICAgaWYgKG4gPiAw ICYmIG4gPCBjb3B5X2JpdHMgLyAyKQorICAgICAgLyogRW1pdCB0cmFpbGluZyBjb3BpZXMgdXNp bmcgb3ZlcmxhcHBpbmcgdW5hbGlnbmVkIGFjY2Vzc2VzCisJKHdoZW4gIVNUUklDVF9BTElHTk1F TlQpIC0gdGhpcyBpcyBzbWFsbGVyIGFuZCBmYXN0ZXIuICAqLworICAgICAgaWYgKG4gPiAwICYm IG4gPCBjb3B5X2JpdHMgLyAyICYmICFTVFJJQ1RfQUxJR05NRU5UKQogCXsKIAkgIG1hY2hpbmVf bW9kZSBuZXh0X21vZGUgPSBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplIChuLCBNT0RFX0lOVCk7CiAJ ICBpbnQgbl9iaXRzID0gR0VUX01PREVfQklUU0laRSAobmV4dF9tb2RlKS50b19jb25zdGFudCAo KTsKQEAgLTIzNjU3LDkgKzIzNjg1LDI1IEBAIGFhcmNoNjRfZXhwYW5kX2NweW1lbSAocnR4ICpv cGVyYW5kcykKICAgICB9CiAgIHJ0eF9pbnNuICpzZXEgPSBnZXRfaW5zbnMgKCk7CiAgIGVuZF9z ZXF1ZW5jZSAoKTsKKyAgLyogTU9QUyBzZXF1ZW5jZSByZXF1aXJlcyAzIGluc3RydWN0aW9ucyBm b3IgdGhlIG1lbW9yeSBjb3B5aW5nICsgMSB0byBtb3ZlCisgICAgIHRoZSBjb25zdGFudCBzaXpl IGludG8gYSByZWdpc3Rlci4gICovCisgIHVuc2lnbmVkIG1vcHNfY29zdCA9IDMgKyAxOworCisg IC8qIElmIE1PUFMgaXMgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgd2UgZG9uJ3QgY29uc2lkZXIg dGhlIGxpYmNhbGwgYXMgaXQncworICAgICBub3QgYSB3aW4gZXZlbiBvbiBjb2RlIHNpemUuICBB dCB0aGlzIHBvaW50IG9ubHkgY29uc2lkZXIgTU9QUyBpZgorICAgICBvcHRpbWl6aW5nIGZvciBz aXplLiAgRm9yIHNwZWVkIG9wdGltaXphdGlvbnMgd2Ugd2lsbCBoYXZlIGNob3NlbiBiZXR3ZWVu CisgICAgIHRoZSB0d28gYmFzZWQgb24gY29weSBzaXplIGFscmVhZHkuICAqLworICBpZiAoVEFS R0VUX01PUFMpCisgICAgeworICAgICAgaWYgKHNpemVfcCAmJiBtb3BzX2Nvc3QgPCBub3BzKQor CXJldHVybiBhYXJjaDY0X2V4cGFuZF9jcHltZW1fbW9wcyAob3BlcmFuZHMpOworICAgICAgZW1p dF9pbnNuIChzZXEpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgIC8qIEEgbWVtY3B5 IGxpYmNhbGwgaW4gdGhlIHdvcnN0IGNhc2UgdGFrZXMgMyBpbnN0cnVjdGlvbnMgdG8gcHJlcGFy ZSB0aGUKLSAgICAgYXJndW1lbnRzICsgMSBmb3IgdGhlIGNhbGwuICAqLworICAgICBhcmd1bWVu dHMgKyAxIGZvciB0aGUgY2FsbC4gIFdoZW4gTU9QUyBpcyBub3QgYXZhaWxhYmxlIGFuZCB3ZSdy ZQorICAgICBvcHRpbWl6aW5nIGZvciBzaXplIGEgbGliY2FsbCBtYXkgYmUgcHJlZmVyYWJsZS4g ICovCiAgIHVuc2lnbmVkIGxpYmNhbGxfY29zdCA9IDQ7CiAgIGlmIChzaXplX3AgJiYgbGliY2Fs bF9jb3N0IDwgbm9wcykKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5tZCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCmluZGV4 IDUyOTdiMmQzZjk1NzQ0YWM3MmUzNjgxNGM2Njc2Y2M5NzQ3OGQ0OGIuLmQ2MjNjMWIwMGJmNjJi ZjI0NDIwODEzZmI3YTNhNmJmMDlmZjFkYzAgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0Lm1kCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCkBAIC0xNDMs NiArMTQzLDcgQEAgKGRlZmluZV9jX2VudW0gInVuc3BlYyIgWwogICAgIFVOU1BFQ19BVVRJQlNQ CiAgICAgVU5TUEVDX0NBTExFRV9BQkkKICAgICBVTlNQRUNfQ0FTRVNJCisgICAgVU5TUEVDX0NQ WU1FTQogICAgIFVOU1BFQ19DUkMzMkIKICAgICBVTlNQRUNfQ1JDMzJDQgogICAgIFVOU1BFQ19D UkMzMkNICkBAIC0xNTcyLDYgKzE1NzMsMTggQEAgKGRlZmluZV9zcGxpdAogICB9CiApCiAKKyhk ZWZpbmVfaW5zbiAiYWFyY2g2NF9jcHltZW1kaSIKKyAgWyhwYXJhbGxlbCBbCisgICAoc2V0ICht YXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICIrJnIiKSAoY29uc3RfaW50IDAp KQorICAgKGNsb2JiZXIgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIism ciIpKQorICAgKGNsb2JiZXIgKG1hdGNoX29wZXJhbmQ6REkgMSAicmVnaXN0ZXJfb3BlcmFuZCIg IismciIpKQorICAgKHNldCAobWVtOkJMSyAobWF0Y2hfZHVwIDApKQorICAgICAgICAodW5zcGVj OkJMSyBbKG1lbTpCTEsgKG1hdGNoX2R1cCAxKSkgKG1hdGNoX2R1cCAyKV0gVU5TUEVDX0NQWU1F TSkpXSldCisgIlRBUkdFVF9NT1BTIgorICJjcHlmcFx0WyV4MF0hLCBbJXgxXSEsICV4MiFcO2Nw eWZtXHRbJXgwXSEsIFsleDFdISwgJXgyIVw7Y3B5ZmVcdFsleDBdISwgWyV4MV0hLCAleDIhIgor IFsoc2V0X2F0dHIgImxlbmd0aCIgIjEyIildCispCisKIDs7IDAgaXMgZHN0CiA7OyAxIGlzIHNy YwogOzsgMiBpcyBzaXplIG9mIGNvcHkgaW4gYnl0ZXMKQEAgLTE1ODAsOSArMTU5Myw5IEBAIChk ZWZpbmVfc3BsaXQKIChkZWZpbmVfZXhwYW5kICJjcHltZW1kaSIKICAgWyhtYXRjaF9vcGVyYW5k OkJMSyAwICJtZW1vcnlfb3BlcmFuZCIpCiAgICAobWF0Y2hfb3BlcmFuZDpCTEsgMSAibWVtb3J5 X29wZXJhbmQiKQotICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiaW1tZWRpYXRlX29wZXJhbmQiKQor ICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ2VuZXJhbF9vcGVyYW5kIikKICAgIChtYXRjaF9vcGVy YW5kOkRJIDMgImltbWVkaWF0ZV9vcGVyYW5kIildCi0gICAiIVNUUklDVF9BTElHTk1FTlQiCisg ICAiIVNUUklDVF9BTElHTk1FTlQgfHwgVEFSR0VUX01PUFMiCiB7CiAgIGlmIChhYXJjaDY0X2V4 cGFuZF9jcHltZW0gKG9wZXJhbmRzKSkKICAgICBET05FOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQub3B0IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0Cmlu ZGV4IDMyMTkxY2YxYWNmNDMzMDJjNGE1NDRiODVkYjYwYjdiNmUxNGRhNDguLjc0NDVlZDEwNmNj YTljYjhhNDUzNzQxNDQ5OWY2ZjI4NDc2OTUxYmYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0Lm9wdAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5vcHQKQEAg LTI4MCwzICsyODAsNyBAQCBUYXJnZXQgSm9pbmVkIFVJbnRlZ2VyIFZhcihhYXJjaDY0X2F1dG92 ZWNfcHJlZmVyZW5jZSkgSW5pdCgwKSBJbnRlZ2VyUmFuZ2UoMCwgNAogCiAtcGFyYW09YWFyY2g2 NC1sb29wLXZlY3QtaXNzdWUtcmF0ZS1uaXRlcnM9CiBUYXJnZXQgSm9pbmVkIFVJbnRlZ2VyIFZh cihhYXJjaDY0X2xvb3BfdmVjdF9pc3N1ZV9yYXRlX25pdGVycykgSW5pdCg2KSBJbnRlZ2VyUmFu Z2UoMCwgNjU1MzYpIFBhcmFtCisKKy1wYXJhbT1hYXJjaDY0LW1vcHMtbWVtY3B5LXNpemUtdGhy ZXNob2xkPQorVGFyZ2V0IEpvaW5lZCBVSW50ZWdlciBWYXIoYWFyY2g2NF9tb3BzX21lbWNweV9z aXplX3RocmVzaG9sZCkgSW5pdCgyNTYpIFBhcmFtCitDb25zdGFudCBtZW1jcHkgc2l6ZSBpbiBi eXRlcyBhYm92ZSB3aGljaCB0byBzdGFydCB1c2luZyBNT1BTIHNlcXVlbmNlLgpkaWZmIC0tZ2l0 IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXggNTEwZWQw NzliOTkzNzQwMjhlMzhkMjBmM2VkYmFjMTJkNzVmNzg0Mi4uOWMzODI3N2U0ZjMxNzMzMjA4ODU1 NWM5OTQ4ZWYxOTkzNWFlODkwYyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysg Yi9nY2MvZG9jL2ludm9rZS50ZXhpCkBAIC0xOTEzNSw2ICsxOTEzNSw5IEBAIHByaW9yIHRvIEFy bXY4LjItQSBpcyBub3Qgc3VwcG9ydGVkLgogQGl0ZW0gbHM2NAogRW5hYmxlIHRoZSA2NC1ieXRl IGF0b21pYyBsb2FkIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMgZm9yIGFjY2VsZXJhdG9ycy4KIFRo aXMgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgQG9wdGlvbnstbWFyY2g9YXJtdjgu Ny1hfS4KK0BpdGVtIG1vcHMKK0VuYWJsZSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGFjY2VsZXJhdGUg bWVtb3J5IG9wZXJhdGlvbnMgbGlrZSBAY29kZXttZW1jcHl9LAorQGNvZGV7bWVtbW92ZX0sIEBj b2Rle21lbXNldH0uCiBAaXRlbSBmbGFnbQogRW5hYmxlIHRoZSBGbGFnIE1hbmlwdWxhdGlvbiBp bnN0cnVjdGlvbnMgRXh0ZW5zaW9uLgogQGl0ZW0gcGF1dGgKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L21vcHNfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvbW9wc18xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYxYzE0MTkyZThhODRmZDQ2NDFhNGQ4 MThiOGRiNDZhYjRmMWIyOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L21vcHNfMS5jCkBAIC0wLDAgKzEsNTcgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFyY2g9YXJtdjguNi1hK21vcHMgLS1wYXJh bT1hYXJjaDY0LW1vcHMtbWVtY3B5LXNpemUtdGhyZXNob2xkPTAiIH0gKi8KKy8qIHsgZGctZmlu YWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiIiB9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGxpYi5oPgorCisvKiBXZSB3YW50IHRvIGlubGluZSB2YXJpYWJsZS1zaXplZCBtZW1jcHku CisqKiBkb19pdF9jcHk6CisqKgljcHlmcAlcW3gxXF1cISwgXFt4MFxdXCEsIHgyXCEKKyoqCWNw eWZtCVxbeDFcXVwhLCBcW3gwXF1cISwgeDJcIQorKioJY3B5ZmUJXFt4MVxdXCEsIFxbeDBcXVwh LCB4MlwhCisqKglyZXQKKyovCit2b2lkIGRvX2l0X2NweSAoY2hhciAqIGluLCBjaGFyICogb3V0 LCBzaXplX3Qgc2l6ZSkKK3sKKyAgX19idWlsdGluX21lbWNweSAob3V0LCBpbiwgc2l6ZSk7Cit9 CisKKy8qCisqKiBkb19pdF9jcHlfbGFyZ2U6CisqKgltb3YJeDIsIDEwMjQKKyoqCWNweWZwCVxb eDFcXVwhLCBcW3gwXF0hLCB4MlwhCisqKgljcHlmbQlcW3gxXF1cISwgXFt4MFxdISwgeDJcIQor KioJY3B5ZmUJXFt4MVxdXCEsIFxbeDBcXVwhLCB4MlwhCisqKglyZXQKKyovCit2b2lkIGRvX2l0 X2NweV9sYXJnZSAoY2hhciAqIGluLCBjaGFyICogb3V0KQoreworICBfX2J1aWx0aW5fbWVtY3B5 IChvdXQsIGluLCAxMDI0KTsKK30KKworLyoKKyoqIGRvX2l0X2NweV8xMjc6CisqKgltb3YJeDIs IDEyNworKioJY3B5ZnAJXFt4MVxdXCEsIFxbeDBcXSEsIHgyXCEKKyoqCWNweWZtCVxbeDFcXVwh LCBcW3gwXF0hLCB4MlwhCisqKgljcHlmZQlcW3gxXF1cISwgXFt4MFxdXCEsIHgyXCEKKyoqCXJl dAorKi8KK3ZvaWQgZG9faXRfY3B5XzEyNyAoY2hhciAqIGluLCBjaGFyICogb3V0KQoreworICBf X2J1aWx0aW5fbWVtY3B5IChvdXQsIGluLCAxMjcpOworfQorCisvKgorKiogZG9faXRfY3B5XzEy ODoKKyoqCW1vdgl4MiwgMTI4CisqKgljcHlmcAlcW3gxXF1cISwgXFt4MFxdISwgeDJcIQorKioJ Y3B5Zm0JXFt4MVxdXCEsIFxbeDBcXSEsIHgyXCEKKyoqCWNweWZlCVxbeDFcXVwhLCBcW3gwXF1c ISwgeDJcIQorKioJcmV0CisqLwordm9pZCBkb19pdF9jcHlfMTI4IChjaGFyICogaW4sIGNoYXIg KiBvdXQpCit7CisgIF9fYnVpbHRpbl9tZW1jcHkgKG91dCwgaW4sIDEyOCk7Cit9CisK --_002_PAXPR08MB6926889697F016D7C07DE3C493749PAXPR08MB6926eurp_--