From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10087.outbound.protection.outlook.com [40.107.1.87]) by sourceware.org (Postfix) with ESMTPS id 70F2D385840E for ; Thu, 11 Nov 2021 22:39:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 70F2D385840E Received: from AS9PR06CA0372.eurprd06.prod.outlook.com (2603:10a6:20b:460::26) by AS8PR08MB6119.eurprd08.prod.outlook.com (2603:10a6:20b:290::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Thu, 11 Nov 2021 22:39:26 +0000 Received: from VE1EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:460:cafe::47) by AS9PR06CA0372.outlook.office365.com (2603:10a6:20b:460::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Thu, 11 Nov 2021 22:39:26 +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 VE1EUR03FT010.mail.protection.outlook.com (10.152.18.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.20 via Frontend Transport; Thu, 11 Nov 2021 22:39:26 +0000 Received: ("Tessian outbound f65bc39c8ea9:v109"); Thu, 11 Nov 2021 22:39:26 +0000 X-CR-MTA-TID: 64aa7808 Received: from 22d2f6ee3ee0.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E918F6D4-705F-421A-BF8A-EB480FC53A45.1; Thu, 11 Nov 2021 22:39:15 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 22d2f6ee3ee0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Nov 2021 22:39:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LLbhGvpA551W2crAaTKLDmvZ0gPps39mPuukGZhxq/TkYIg2/yn3at3iCLb7Q08et4NomRqfAfaJsDP5ncWK5684wBKcLHgD5+g8GQ5AUDYbWeAEa+0sAqAB6Hasrrx2+mCtbZ4Nv2qE7tIU2AZcLTkT/ou+fcVz0b5uSNMMSUsNguc5MzOx1ygLlR4eEw0uA0e/5dL6VC0LcD+5N6YLN6jgvE6UPqONBtKyYObid7DPJfrtcdsiHPs0RUHE9lCAFd9QgRQFMnTmuR5QJDl0pwHRaBkUmCeWBhprRCt5tXlnHVhX5B7JoUR0jdxZk5ZSHNC8WZYzYY9PK85BXOmWBg== 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=WXvX7oH9L5ces9k/s2Y32GL9QBznhPaeyP0/f39NC7Q=; b=aMRtncpFJdF1SGZpgQrm4T8RVklBug1tc+19xCxgcmzc6TTJBMXlbwWrhB6u8OtIAC+C0TmA1+lIxXBEft0ZsIsi4KJuFlFKSLrm3pU4Di2b8ikRuRrgG2X5aPGR+bOodE1yx5Mju/93tqxS0TzvoDfq9kD3zgdDIHmou0LWjONkTu/LVS1jVl/ylHkq5u2fdRHTSmKoIv4Esp57zzaKjTMtygepGdONSeO57xyt/WXvmPYNpjUi5FgVWyvafJyfa12HiI1VefqYCPdjKuTzpazfEb0bLLWiFqRVRYlXaKKswtKYpEajfduTb7/UCQbacMstfvNlcy6HdDSFdZZtRQ== 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 PAXPR08MB6621.eurprd08.prod.outlook.com (2603:10a6:102:dc::17) by PAXPR08MB6541.eurprd08.prod.outlook.com (2603:10a6:102:15a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.16; Thu, 11 Nov 2021 22:39:13 +0000 Received: from PAXPR08MB6621.eurprd08.prod.outlook.com ([fe80::fcc0:4974:d8f3:9d2f]) by PAXPR08MB6621.eurprd08.prod.outlook.com ([fe80::fcc0:4974:d8f3:9d2f%7]) with mapi id 15.20.4669.015; Thu, 11 Nov 2021 22:39:11 +0000 From: Przemyslaw Wirkus To: "gcc-patches@gcc.gnu.org" CC: Richard Sandiford , Richard Earnshaw , Marcus Shawcroft , Kyrylo Tkachov Subject: [PATCH][GCC] aarch64: Add LS64 extension and intrinsics Thread-Topic: [PATCH][GCC] aarch64: Add LS64 extension and intrinsics Thread-Index: AdfXS/f5h0znppEmTYieDvi97HZgrw== Date: Thu, 11 Nov 2021 22:39:11 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: B65FD777B95DBE44BC6FF7D286565DA0.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-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: e4bb2315-f817-49ac-3c93-08d9a5641db9 x-ms-traffictypediagnostic: PAXPR08MB6541:|AS8PR08MB6119: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:962;OLM:962; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 99GWg+OEbrZ9ueGPIJ+jAMXzOZI+vc5a4JQDxap4VXrY9TNY278nDbB9R+qRRUjBLXHa1yMs5mDIEMVuMap1d/0pA1b2pWtAARlwmXXXnn0ZKwd4pJ4+GTBCjiJE/OgFPRV4zzeGFkGpwVo2kgVwYHxX7XUce9jyaC1SXNHyQq7zcPJPk2feCt7n5L5Nz0zNTGn4Tihic7Xhx4rv2XGRGrHHz/+hSMJFVaGFQWIHnre+LzglS36OX+FaPTraW09kZ3Pou6DzrCsdEXCyjh89Pkzh4nY2lc2kDhQNZWI1KgzJWXQGi6mB5tem1jFy+5XJSCmjlgAl5bB3qnDzT5l57wUmupOskREjrOJpRBGAO0cpRxo8z8Hz2+dkld4H/NYvQ58TqHrdz7g/vp3YVaVrjtiyi5fDs9iHmC66INmY0TWLlcicQUjxe1Q3G4UuZ7iV/NJe9ueMIU9kayezT2s0Ikiet/zkMFIVWNpl846zTbhAxbJT/IrsywUQ3OaEfS863x+mCvRjV4dhzmgJ3JO1wz5DALwhrYrDE/6FAFZWrSiTWj9anjDbSDCzeGg7pNFp7BVnEYf0GfeugU6QMzlnsG2ONZBN6WHSUXyCJPaFtIVGg3E/4nAgSIX4YNlI7VSZ2obiBNOfaEM0PiJtX5V6SKiiQysnlrl9zwPDvfDuBrkSQJH3hZedU2Qtnz81VTBhWtrZK1uDiN45hOj2TAOiSwMSppMUb6AM06oC7kW9waOn3su/0cE9lBU+H9zofmM2jSX0+N6Edob0mYTIqWdyhY4OcXXin1gHzp+EvYrk2r3O3RXn5olV/BxAdksvs/AWAAW7AMlMnJQ0AZWD9sOwkQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6621.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(38070700005)(86362001)(5660300002)(966005)(54906003)(66556008)(508600001)(316002)(38100700002)(6916009)(33656002)(8936002)(52536014)(8676002)(122000001)(71200400001)(83380400001)(7696005)(6506007)(64756008)(186003)(4001150100001)(4326008)(66476007)(9686003)(55016002)(99936003)(66946007)(76116006)(2906002)(66446008); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB6621C00B26557498A0DA78BCE4949PAXPR08MB6621eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6541 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: VE1EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: ce61cb5b-a1c5-4a31-7b21-08d9a5641549 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wpu2pzR/vysQm7w8EzfvGuK4ulRx8ahnoXVyMQuHz8QZMlTJ8SdBwqUmrYJ9QQGVtKsUCVMNuq4B0OIXNcibUG9E6qHyB/L2dcWR0jUgX04RMXisPM6CPWwjp2zRWwWK24/6PsJm3Qcv/v6W+zlECnMso/7PYahcQXgJpsfe6RCe2TjPOKoxdZxhjxvFupWi3zvHza/t3Si0xs/XHdry6Yj1TanqtvGMt2cyrHKirxxF+d2rkgv1R3iEGoGNTR7c2OEG3KkHadlXEZt9okj412Lzh5adto/v3S9oNGByyvGAIfXvQCnugGyX2Ekm8VWdmlixedX0sqhf52ihexidlcf1paFWDA0gHI1i5k/IKitYHC5DJQKVbwvk59GxSY72r/i3IUE5VKph9Z9uuIjA88gaU4xi2Du61QBGut4Czsa9hjEQ7d0x/as4AcBq9995KZcLWI3MOqELaZf9q8RR8u1fUNEjSZtr6D2O8Uw1JK9qF3pjGSuFsdDRF1SDnsqzFqOmDCm9kSHQR8EIRXWqMK7EfE7Mi4BK7uM12w/TQy0dSTZ1rmgKV3jK1/qKqAacYwH8Wje7+KjbtbzWyBGm/E2aqM2DEaD3zxkkRu6G70Rn2QRAjK/vyQm9cM3KMfu2wcCKchLRTYa531Jh4dC6lKGZWKyDcy94HRIouTalXqj6mjKKzyqRLKeTJme1Vmmdjo5nYLxJSYsIYLUYOmmUnRxbgMd3p56fkMWc1mJmDnmcqskLI6Vo519Rhw7BAKdA+v7LhAmiupQy2ZFq6h+s9qBZMoDt1izcTeXAJ/1C5YS8/pHH+O8cnFODlNW5rpn6TCFb2paMTnBhHS4YGJOJ/g== 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)(36840700001)(46966006)(235185007)(33656002)(4326008)(99936003)(82310400003)(2906002)(4001150100001)(356005)(8936002)(86362001)(316002)(70206006)(8676002)(70586007)(83380400001)(47076005)(9686003)(81166007)(26005)(6506007)(54906003)(6916009)(5660300002)(7696005)(186003)(55016002)(336012)(36860700001)(966005)(508600001)(52536014); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2021 22:39:26.2258 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e4bb2315-f817-49ac-3c93-08d9a5641db9 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: VE1EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6119 X-Spam-Status: No, score=-5.3 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: Thu, 11 Nov 2021 22:39:33 -0000 --_002_PAXPR08MB6621C00B26557498A0DA78BCE4949PAXPR08MB6621eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, This patch is adding support for LS64 (Armv8.7-A Load/Store 64 Byte extensi= on) which is part of Armv8.7-A architecture. Changes include missing plumbing f= or TARGET_LS64, LS64 data structure and intrinsics defined in ACLE [0]. Machin= e description of intrinsics is using new V8DI mode added in a separate patch. __ARM_FEATURE_LS64 is defined if the Armv8.7-A LS64 instructions for atomic 64-byte access to device memory are supported. New compiler internal type is added wrapping ACLE struct data512_t [0]: typedef struct { uint64_t val[8]; } __arm_data512_t; Please note that command line support for this feature was already added [1= ]. [0] https://github.com/ARM-software/acle/blob/main/main/acle.rst#load-sto= re-64-byte-intrinsics [1] commit e159c0aa10e50c292a534535c73f38d22b6129a8 (AArch64: Add command= -line support for Armv8.7-a) For below C code see example snippets of generated code: #include void func(const void * addr, data512_t *data) { *data =3D __arm_ld64b (addr); } func: ld64b x8, [x0] stp x8, x9, [x1] sub sp, sp, #64 stp x10, x11, [x1, 16] stp x12, x13, [x1, 32] stp x14, x15, [x1, 48] add sp, sp, 64 ret ~~~ #include uint64_t func(void *addr, data512_t value) { return __arm_st64bv (addr, value); } func: ldp x8, x9, [x1] ldp x10, x11, [x1, 16] ldp x12, x13, [x1, 32] ldp x14, x15, [x1, 48] st64bv x1, x8, [x0] mov x0, x1 ret ~~~ uint64_t ls64_store_v0(const data512_t *input, void *addr) { uint64_t status; __asm__ volatile ("st64bv0 %0, %2, [%1]" : "=3Dr" (status), "=3Dr" (addr) : "r" (*input) : "memory"); return status; } ls64_store_v0: ldp x8, x9, [x0] ldp x10, x11, [x0, 16] ldp x12, x13, [x0, 32] ldp x14, x15, [x0, 48] st64bv0 x0, x8, [x1] ret Regtested on aarch64-elf cross and no issues. OK for master? gcc/ChangeLog: 2021-11-11 Przemyslaw Wirkus * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Define AARCH64_LS64_BUILTIN_LD64B, AARCH64_LS64_BUILTIN_ST64B, AARCH64_LS64_BUILTIN_ST64BV, AARCH64_LS64_BUILTIN_ST64BV0. (aarch64_init_ls64_builtin_decl): Helper function. (aarch64_init_ls64_builtins): Helper function. (aarch64_init_ls64_builtins_types): Helper function. (aarch64_general_init_builtins): Init LS64 intrisics for TARGET_LS64. (aarch64_expand_builtin_ls64): LS64 intrinsics expander. (aarch64_general_expand_builtin): Handle aarch64_expand_builtin_ls64. (ls64_builtins_data): New helper struct. (v8di_UP): New define. * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define __ARM_FEATURE_LS64. * config/aarch64/aarch64.h (AARCH64_ISA_LS64): New define. (AARCH64_ISA_V8_7): New define. (TARGET_LS64): New define. * config/aarch64/aarch64.md: Add UNSPEC_LD64B, UNSPEC_ST64B, UNSPEC_ST64BV and UNSPEC_ST64BV0. (ld64b): New define_insn. (st64b): New define_insn. (st64bv): New define_insn. (st64bv0): New define_insn. * config/aarch64/arm_acle.h (target): (data512_t): New type derived from __arm_data512_t. (__arm_data512_t): New internal type. (__arm_ld64b): New intrinsic. (__arm_st64b): New intrinsic. (__arm_st64bv): New intrinsic. (__arm_st64bv0): New intrinsic. * config/arm/types.md: Add new type ls64. gcc/testsuite/ChangeLog: 2021-11-11 Przemyslaw Wirkus * gcc.target/aarch64/acle/ls64_asm.c: New test. * gcc.target/aarch64/acle/ls64_ld64b-2.c: New test. * gcc.target/aarch64/acle/ls64_ld64b.c: New test. * gcc.target/aarch64/acle/ls64_st64b.c: New test. * gcc.target/aarch64/acle/ls64_st64bv-2.c: New test. * gcc.target/aarch64/acle/ls64_st64bv.c: New test. * gcc.target/aarch64/acle/ls64_st64bv0-2.c: New test. * gcc.target/aarch64/acle/ls64_st64bv0.c: New test. * gcc.target/aarch64/pragma_cpp_predefs_2.c: Add checks for __ARM_FEATURE_LS64. --_002_PAXPR08MB6621C00B26557498A0DA78BCE4949PAXPR08MB6621eurp_ Content-Type: application/octet-stream; name="rb14982.patch" Content-Description: rb14982.patch Content-Disposition: attachment; filename="rb14982.patch"; size=31392; creation-date="Thu, 11 Nov 2021 22:35:09 GMT"; modification-date="Thu, 11 Nov 2021 22:34:42 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmMgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jCmluZGV4IDUwNTNiZjBmOGZkNjYzOGJm ODRhNmRmMDZjMDk4N2EwMjE2YjY5ZTcuLmQ0YTgyZWVjM2IyNmJmZDFjYjk3NmQwODcwZDYwZWU3 ZDEwYjY4OWEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5z LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuYwpAQCAtNDksNiAr NDksNyBAQAogI2luY2x1ZGUgImdpbXBsZS1mb2xkLmgiCiAKICNkZWZpbmUgdjhxaV9VUCAgRV9W OFFJbW9kZQorI2RlZmluZSB2OGRpX1VQICBFX1Y4REltb2RlCiAjZGVmaW5lIHY0aGlfVVAgIEVf VjRISW1vZGUKICNkZWZpbmUgdjRoZl9VUCAgRV9WNEhGbW9kZQogI2RlZmluZSB2MnNpX1VQICBF X1YyU0ltb2RlCkBAIC02MTUsNiArNjE2LDExIEBAIGVudW0gYWFyY2g2NF9idWlsdGlucwogICBB QVJDSDY0X01FTVRBR19CVUlMVElOX1NFVF9UQUcsCiAgIEFBUkNINjRfTUVNVEFHX0JVSUxUSU5f R0VUX1RBRywKICAgQUFSQ0g2NF9NRU1UQUdfQlVJTFRJTl9FTkQsCisgIC8qIExTNjQgYnVpbHRp bnMuICAqLworICBBQVJDSDY0X0xTNjRfQlVJTFRJTl9MRDY0QiwKKyAgQUFSQ0g2NF9MUzY0X0JV SUxUSU5fU1Q2NEIsCisgIEFBUkNINjRfTFM2NF9CVUlMVElOX1NUNjRCViwKKyAgQUFSQ0g2NF9M UzY0X0JVSUxUSU5fU1Q2NEJWMCwKICAgQUFSQ0g2NF9CVUlMVElOX01BWAogfTsKIApAQCAtMTU3 OSw2ICsxNTg1LDcxIEBAIGFhcmNoNjRfaW5pdF9tZW10YWdfYnVpbHRpbnMgKHZvaWQpCiAjdW5k ZWYgQUFSQ0g2NF9JTklUX01FTVRBR19CVUlMVElOU19ERUNMCiB9CiAKKy8qIEFkZCBidWlsdGlu cyBmb3IgTG9hZC9zdG9yZSA2NCBCeXRlIGluc3RydWN0aW9ucy4gICovCisKK3R5cGVkZWYgc3Ry dWN0Cit7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIHVuc2lnbmVkIGludCBjb2RlOworICB0cmVl IHR5cGU7Cit9IGxzNjRfYnVpbHRpbnNfZGF0YTsKKworc3RhdGljIHZvaWQKK2FhcmNoNjRfaW5p dF9sczY0X2J1aWx0aW5fZGVjbCAoY29uc3QgY2hhciAqbmFtZSwgdHJlZSB0eXBlLCB1bnNpZ25l ZCBpbnQgY29kZSkKK3sKKyAgYWFyY2g2NF9idWlsdGluX2RlY2xzW2NvZGVdID0gYWFyY2g2NF9n ZW5lcmFsX2FkZF9idWlsdGluIChuYW1lLCB0eXBlLCBjb2RlKTsKK30KKworc3RhdGljIEdUWSgo KSkgdHJlZSBsczY0X2FybV9kYXRhX3QgPSBOVUxMX1RSRUU7CisKK3N0YXRpYyB2b2lkCithYXJj aDY0X2luaXRfbHM2NF9idWlsdGluc190eXBlcyAodm9pZCkKK3sKKyAgLyogU3ludGhlc2l6ZSB0 aGUgbmFtZSBvZiB0aGUgdXNlci12aXNpYmxlIHZlY3RvciB0dXBsZSB0eXBlLiAgKi8KKyAgY2hh ciAqdHVwbGVfdHlwZV9uYW1lID0gIl9fYXJtX2RhdGE1MTJfdCI7CisgIHRyZWUgbm9kZV90eXBl ID0gZ2V0X3R5cGVub2RlX2Zyb21fbmFtZSAoVUlOVDY0X1RZUEUpOworICB0cmVlIGFycmF5X3R5 cGUgPSBidWlsZF9hcnJheV90eXBlX25lbHRzIChub2RlX3R5cGUsIDgpOworICBTRVRfVFlQRV9N T0RFIChhcnJheV90eXBlLCBWOERJbW9kZSk7CisgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQgPSBr bm93bl9lcSAoR0VUX01PREVfU0laRSAoRV9WOERJbW9kZSksIDY0KSA/IDY0IDogMDsKKworICBn Y2NfYXNzZXJ0IChUWVBFX01PREVfUkFXIChhcnJheV90eXBlKSA9PSBUWVBFX01PREUgKGFycmF5 X3R5cGUpKTsKKyAgZ2NjX2Fzc2VydCAoVFlQRV9BTElHTiAoYXJyYXlfdHlwZSkgPT0gYWxpZ25t ZW50KTsKKworICB0cmVlIGZpZWxkID0gYnVpbGRfZGVjbCAoaW5wdXRfbG9jYXRpb24sIEZJRUxE X0RFQ0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaWRlbnRpZmllciAoInZhbCIp LCBhcnJheV90eXBlKTsKKworICBsczY0X2FybV9kYXRhX3QgPSBsYW5nX2hvb2tzLnR5cGVzLnNp bXVsYXRlX3JlY29yZF9kZWNsIChpbnB1dF9sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICB0dXBsZV90eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9hcnJh eV9zbGljZSAoJmZpZWxkLCAxKSk7CisKKyAgZ2NjX2Fzc2VydCAoVFlQRV9NT0RFX1JBVyAobHM2 NF9hcm1fZGF0YV90KSA9PSBUWVBFX01PREUgKGxzNjRfYXJtX2RhdGFfdCkpOworICBnY2NfYXNz ZXJ0IChUWVBFX0FMSUdOIChsczY0X2FybV9kYXRhX3QpID09IGFsaWdubWVudCk7Cit9CisKK3N0 YXRpYyB2b2lkCithYXJjaDY0X2luaXRfbHM2NF9idWlsdGlucyAodm9pZCkKK3sKKyAgbHM2NF9i dWlsdGluc19kYXRhIGRhdGFbNF0gPSB7CisgICAgeyJfX2J1aWx0aW5fYWFyY2g2NF9sZDY0YiIs IEFBUkNINjRfTFM2NF9CVUlMVElOX0xENjRCLAorICAgICBidWlsZF9mdW5jdGlvbl90eXBlX2xp c3QgKGFhcmNoNjRfc2ltZF9pbnRYSV90eXBlX25vZGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3RfcHRyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKX0sCisgICAgeyJfX2J1aWx0 aW5fYWFyY2g2NF9zdDY0YiIsIEFBUkNINjRfTFM2NF9CVUlMVElOX1NUNjRCLAorICAgICBidWls ZF9mdW5jdGlvbl90eXBlX2xpc3QgKHZvaWRfdHlwZV9ub2RlLCBwdHJfdHlwZV9ub2RlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFhcmNoNjRfc2ltZF9pbnRYSV90eXBlX25vZGUs IE5VTExfVFJFRSl9LAorICAgIHsiX19idWlsdGluX2FhcmNoNjRfc3Q2NGJ2IiwgQUFSQ0g2NF9M UzY0X0JVSUxUSU5fU1Q2NEJWLAorICAgICBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKHVpbnQ2 NF90eXBlX25vZGUsIHB0cl90eXBlX25vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWFyY2g2NF9zaW1kX2ludFhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKX0sCisgICAgeyJfX2J1 aWx0aW5fYWFyY2g2NF9zdDY0YnYwIiwgQUFSQ0g2NF9MUzY0X0JVSUxUSU5fU1Q2NEJWMCwKKyAg ICAgYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh1aW50NjRfdHlwZV9ub2RlLCBwdHJfdHlwZV9u b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFhcmNoNjRfc2ltZF9pbnRYSV90 eXBlX25vZGUsIE5VTExfVFJFRSl9LAorICB9OworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg QVJSQVlfU0laRSAoZGF0YSk7ICsraSkKKyAgICBhYXJjaDY0X2luaXRfbHM2NF9idWlsdGluX2Rl Y2wgKGRhdGFbaV0ubmFtZSwgZGF0YVtpXS50eXBlLCBkYXRhW2ldLmNvZGUpOworCisgIGFhcmNo NjRfaW5pdF9sczY0X2J1aWx0aW5zX3R5cGVzICgpOworfQorCiAvKiBJbml0aWFsaXplIGZwc3Ig ZnBjciBnZXR0ZXJzIGFuZCBzZXR0ZXJzLiAgKi8KIAogc3RhdGljIHZvaWQKQEAgLTE2NjgsNiAr MTczOSw5IEBAIGFhcmNoNjRfZ2VuZXJhbF9pbml0X2J1aWx0aW5zICh2b2lkKQogCiAgIGlmIChU QVJHRVRfTUVNVEFHKQogICAgIGFhcmNoNjRfaW5pdF9tZW10YWdfYnVpbHRpbnMgKCk7CisKKyAg aWYgKFRBUkdFVF9MUzY0KQorICAgIGFhcmNoNjRfaW5pdF9sczY0X2J1aWx0aW5zICgpOwogfQog CiAvKiBJbXBsZW1lbnQgVEFSR0VUX0JVSUxUSU5fREVDTCBmb3IgdGhlIEFBUkNINjRfQlVJTFRJ Tl9HRU5FUkFMIGdyb3VwLiAgKi8KQEAgLTIxMzgsNiArMjIxMiw2MCBAQCBhYXJjaDY0X2V4cGFu ZF9idWlsdGluX3RtZSAoaW50IGZjb2RlLCB0cmVlIGV4cCwgcnR4IHRhcmdldCkKICAgICByZXR1 cm4gdGFyZ2V0OwogfQogCisvKiBGdW5jdGlvbiB0byBleHBhbmQgYW4gZXhwcmVzc2lvbiBFWFAg d2hpY2ggY2FsbHMgb25lIG9mIHRoZSBMb2FkL1N0b3JlCisgICA2NCBCeXRlIGV4dGVuc2lvbiAo TFM2NCkgYnVpbHRpbnMgRkNPREUgd2l0aCB0aGUgcmVzdWx0IGdvaW5nIHRvIFRBUkdFVC4KKyAg IElmIElHTk9SRSBpcyB0cnVlIHRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC4gICovCitzdGF0 aWMgcnR4CithYXJjaDY0X2V4cGFuZF9idWlsdGluX2xzNjQgKGludCBmY29kZSwgdHJlZSBleHAs IHJ0eCB0YXJnZXQsIGludCBpZ25vcmUpCit7CisgIHN3aXRjaCAoZmNvZGUpCisgICAgeworICAg IGNhc2UgQUFSQ0g2NF9MUzY0X0JVSUxUSU5fTEQ2NEI6CisgICAgICB7CisgICAgICAgIHJ0eCBv cDAgPSBleHBhbmRfbm9ybWFsIChDQUxMX0VYUFJfQVJHIChleHAsIDApKTsKKyAgICAgICAgb3Aw ID0gZm9yY2VfcmVnIChQbW9kZSwgb3AwKTsKKyAgICAgICAgLyogRG8gbm90IGVtaXQgaW5zdHJ1 Y3Rpb24gd2hlbiByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC4gICovCisgICAgICAgIGlmIChpZ25v cmUpCisgICAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICAgICAgdGFyZ2V0ID0gY29udmVydF90 b19tb2RlIChWOERJbW9kZSwgdGFyZ2V0LCB0cnVlKTsKKyAgICAgICAgZW1pdF9pbnNuIChHRU5f RkNOIChDT0RFX0ZPUl9sZDY0YikgKHRhcmdldCwgb3AwKSk7CisgICAgICAgIGJyZWFrOworICAg ICAgfQorICAgIGNhc2UgQUFSQ0g2NF9MUzY0X0JVSUxUSU5fU1Q2NEI6CisgICAgICB7CisgICAg ICAgIHJ0eCBvcDAgPSBleHBhbmRfbm9ybWFsIChDQUxMX0VYUFJfQVJHIChleHAsIDApKTsKKyAg ICAgICAgb3AwID0gZm9yY2VfcmVnIChQbW9kZSwgb3AwKTsKKyAgICAgICAgcnR4IG9wMSA9IGV4 cGFuZF9ub3JtYWwgKENBTExfRVhQUl9BUkcgKGV4cCwgMSkpOworICAgICAgICBvcDEgPSBjb252 ZXJ0X3RvX21vZGUgKFY4REltb2RlLCBvcDEsIHRydWUpOworICAgICAgICBlbWl0X2luc24gKEdF Tl9GQ04gKENPREVfRk9SX3N0NjRiKSAob3AwLCBvcDEpKTsKKyAgICAgICAgYnJlYWs7CisgICAg ICB9CisgICAgY2FzZSBBQVJDSDY0X0xTNjRfQlVJTFRJTl9TVDY0QlY6CisgICAgICB7CisgICAg ICAgIHJ0eCBvcDAgPSBleHBhbmRfbm9ybWFsIChDQUxMX0VYUFJfQVJHIChleHAsIDApKTsKKyAg ICAgICAgb3AwID0gZm9yY2VfcmVnIChQbW9kZSwgb3AwKTsKKyAgICAgICAgcnR4IG9wMSA9IGV4 cGFuZF9ub3JtYWwgKENBTExfRVhQUl9BUkcgKGV4cCwgMSkpOworICAgICAgICBvcDEgPSBjb252 ZXJ0X3RvX21vZGUgKFY4REltb2RlLCBvcDEsIHRydWUpOworICAgICAgICB0YXJnZXQgPSBpZ25v cmUgPyBnZW5fcmVnX3J0eChESW1vZGUpIDogZm9yY2VfcmVnIChESW1vZGUsIHRhcmdldCk7Cisg ICAgICAgIGVtaXRfaW5zbiAoR0VOX0ZDTiAoQ09ERV9GT1Jfc3Q2NGJ2KSAodGFyZ2V0LCBvcDAs IG9wMSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICBjYXNlIEFBUkNINjRfTFM2NF9C VUlMVElOX1NUNjRCVjA6CisgICAgICB7CisgICAgICAgIHJ0eCBvcDAgPSBleHBhbmRfbm9ybWFs IChDQUxMX0VYUFJfQVJHIChleHAsIDApKTsKKyAgICAgICAgb3AwID0gZm9yY2VfcmVnIChQbW9k ZSwgb3AwKTsKKyAgICAgICAgcnR4IG9wMSA9IGV4cGFuZF9ub3JtYWwgKENBTExfRVhQUl9BUkcg KGV4cCwgMSkpOworICAgICAgICBvcDEgPSBjb252ZXJ0X3RvX21vZGUgKFY4REltb2RlLCBvcDEs IHRydWUpOworICAgICAgICB0YXJnZXQgPSBpZ25vcmUgPyBnZW5fcmVnX3J0eChESW1vZGUpIDog Zm9yY2VfcmVnIChESW1vZGUsIHRhcmdldCk7CisgICAgICAgIGVtaXRfaW5zbiAoR0VOX0ZDTiAo Q09ERV9GT1Jfc3Q2NGJ2MCkgKHRhcmdldCwgb3AwLCBvcDEpKTsKKyAgICAgICAgYnJlYWs7Cisg ICAgICB9CisgICAgZGVmYXVsdCA6CisgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisgICAgfQor ICAgIHJldHVybiB0YXJnZXQ7Cit9CisKIC8qIEV4cGFuZCBhIHJhbmRvbSBudW1iZXIgYnVpbHRp biBFWFAgd2l0aCBjb2RlIEZDT0RFLCBwdXR0aW5nIHRoZSByZXN1bHQKICAgIGludCBUQVJHRVQu ICBJZiBJR05PUkUgaXMgdHJ1ZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWQuICAqLwogCkBA IC0yMzk2LDYgKzI1MjQsMTIgQEAgYWFyY2g2NF9nZW5lcmFsX2V4cGFuZF9idWlsdGluICh1bnNp Z25lZCBpbnQgZmNvZGUsIHRyZWUgZXhwLCBydHggdGFyZ2V0LAogICAgICAgfHwgZmNvZGUgPT0g QUFSQ0g2NF9UTUVfQlVJTFRJTl9UQ0FOQ0VMKQogICAgIHJldHVybiBhYXJjaDY0X2V4cGFuZF9i dWlsdGluX3RtZSAoZmNvZGUsIGV4cCwgdGFyZ2V0KTsKIAorICBpZiAoZmNvZGUgPT0gQUFSQ0g2 NF9MUzY0X0JVSUxUSU5fTEQ2NEIKKyAgICAgIHx8IGZjb2RlID09IEFBUkNINjRfTFM2NF9CVUlM VElOX1NUNjRCCisgICAgICB8fCBmY29kZSA9PSBBQVJDSDY0X0xTNjRfQlVJTFRJTl9TVDY0QlYK KyAgICAgIHx8IGZjb2RlID09IEFBUkNINjRfTFM2NF9CVUlMVElOX1NUNjRCVjApCisgICAgcmV0 dXJuIGFhcmNoNjRfZXhwYW5kX2J1aWx0aW5fbHM2NCAoZmNvZGUsIGV4cCwgdGFyZ2V0LCBpZ25v cmUpOworCiAgIGlmIChmY29kZSA+PSBBQVJDSDY0X01FTVRBR19CVUlMVElOX1NUQVJUCiAgICAg ICAmJiBmY29kZSA8PSBBQVJDSDY0X01FTVRBR19CVUlMVElOX0VORCkKICAgICByZXR1cm4gYWFy Y2g2NF9leHBhbmRfYnVpbHRpbl9tZW10YWcgKGZjb2RlLCBleHAsIHRhcmdldCk7CmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmMgYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1jLmMKaW5kZXggZDY2NTNlNDc0ZGVjOWJjZGRkZTIxMDZmMzZjZWIyMmYxZDQzMzc1 Yy4uM2FmM2U1Yzk2ZGFmNjc0NjQ4ZGJjMDA4YjE1YWRlMGUzMDNiNjZmOCAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYy5jCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LWMuYwpAQCAtMjAwLDYgKzIwMCw4IEBAIGFhcmNoNjRfdXBkYXRlX2NwcF9idWlsdGlu cyAoY3BwX3JlYWRlciAqcGZpbGUpCiAJCQkiX19BUk1fRkVBVFVSRV9CRjE2X1ZFQ1RPUl9BUklU SE1FVElDIiwgcGZpbGUpOwogICBhYXJjaDY0X2RlZl9vcl91bmRlZiAoVEFSR0VUX0JGMTZfRlAs CiAJCQkiX19BUk1fRkVBVFVSRV9CRjE2X1NDQUxBUl9BUklUSE1FVElDIiwgcGZpbGUpOworICBh YXJjaDY0X2RlZl9vcl91bmRlZiAoVEFSR0VUX0xTNjQsCisJCQkiX19BUk1fRkVBVFVSRV9MUzY0 IiwgcGZpbGUpOwogCiAgIC8qIE5vdCBmb3IgQUNMRSwgYnV0IHJlcXVpcmVkIHRvIGtlZXAgImZs b2F0LmgiIGNvcnJlY3QgaWYgd2Ugc3dpdGNoCiAgICAgIHRhcmdldCBiZXR3ZWVuIGltcGxlbWVu dGF0aW9ucyB0aGF0IGRvIG9yIGRvIG5vdCBzdXBwb3J0IEFSTXY4LjItQQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LmgKaW5kZXggMjc5MmJiMjlhZGJiYjViMzE0NWIzZjc2NzYxNWFmOGVkYmMzMGIwOC4uNDI2YWQ1 YWM3NzM3NmY1NjFjOTJkM2UzNWI2Mjc5MzllYjQ4MTc3MyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oCkBA IC0zMTAsNiArMzEwLDggQEAgZXh0ZXJuIHVuc2lnbmVkIGFhcmNoNjRfYXJjaGl0ZWN0dXJlX3Zl cnNpb247CiAjZGVmaW5lIEFBUkNINjRfSVNBX1Y4X1IJICAgKGFhcmNoNjRfaXNhX2ZsYWdzICYg QUFSQ0g2NF9GTF9WOF9SKQogI2RlZmluZSBBQVJDSDY0X0lTQV9QQVVUSAkgICAoYWFyY2g2NF9p c2FfZmxhZ3MgJiBBQVJDSDY0X0ZMX1BBVVRIKQogI2RlZmluZSBBQVJDSDY0X0lTQV9WOQkJICAg KGFhcmNoNjRfaXNhX2ZsYWdzICYgQUFSQ0g2NF9GTF9WOSkKKyNkZWZpbmUgQUFSQ0g2NF9JU0Ff TFM2NAkgICAoYWFyY2g2NF9pc2FfZmxhZ3MgJiBBQVJDSDY0X0ZMX0xTNjQpCisjZGVmaW5lIEFB UkNINjRfSVNBX1Y4XzcJICAgKGFhcmNoNjRfaXNhX2ZsYWdzICYgQUFSQ0g2NF9GTF9WOF83KQog CiAvKiBDcnlwdG8gaXMgYW4gb3B0aW9uYWwgZXh0ZW5zaW9uIHRvIEFkdlNJTUQuICAqLwogI2Rl ZmluZSBUQVJHRVRfQ1JZUFRPIChUQVJHRVRfU0lNRCAmJiBBQVJDSDY0X0lTQV9DUllQVE8pCkBA IC00MDEsNiArNDAzLDkgQEAgZXh0ZXJuIHVuc2lnbmVkIGFhcmNoNjRfYXJjaGl0ZWN0dXJlX3Zl cnNpb247CiAvKiBQQVVUSCBpbnN0cnVjdGlvbnMgYXJlIGVuYWJsZWQgdGhyb3VnaCArcGF1dGgu ICAqLwogI2RlZmluZSBUQVJHRVRfUEFVVEggKEFBUkNINjRfSVNBX1BBVVRIKQogCisvKiBMUzY0 IGluc3RydWN0aW9ucyBhcmUgZW5hYmxlZCB0aHJvdWdoICtsczY0LiAgKi8KKyNkZWZpbmUgVEFS R0VUX0xTNjQgKEFBUkNINjRfSVNBX0xTNjQpCisKIC8qIE1ha2Ugc3VyZSB0aGlzIGlzIGFsd2F5 cyBkZWZpbmVkIHNvIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgZm9yIGlmZGVmcwogICAgYnV0IHJh dGhlciB1c2Ugbm9ybWFsIGlmcy4gICovCiAjaWZuZGVmIFRBUkdFVF9GSVhfRVJSX0E1M184MzU3 NjlfREVGQVVMVApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQgYi9n Y2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAppbmRleCA0MDM1ZTA2MTcwNjc5Mzg0OWM2OGFl MDliY2IyZTRiOTU4MGFiN2I2Li5iZjRhMjNjODY4Mjc2N2FlNzA2YmEzODc5OTM4YWVkMDhmMzk0 Y2MyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAorKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApAQCAtMTg3LDYgKzE4NywxMCBAQCAoZGVmaW5lX2Nf ZW51bSAidW5zcGVjIiBbCiAgICAgVU5TUEVDX0xEMl9MQU5FCiAgICAgVU5TUEVDX0xEM19MQU5F CiAgICAgVU5TUEVDX0xENF9MQU5FCisgICAgVU5TUEVDX0xENjRCCisgICAgVU5TUEVDX1NUNjRC CisgICAgVU5TUEVDX1NUNjRCVgorICAgIFVOU1BFQ19TVDY0QlYwCiAgICAgVU5TUEVDX01CCiAg ICAgVU5TUEVDX05PUAogICAgIFVOU1BFQ19QQUNJQTE3MTYKQEAgLTc0OTksNiArNzUwMyw0NSBA QCAoZGVmaW5lX2luc24gInN0ZyIKICAgWyhzZXRfYXR0ciAidHlwZSIgIm1lbXRhZyIpXQogKQog Cis7OyBMb2FkL1N0b3JlIDY0LWJpdCAoTFM2NCkgaW5zdHJ1Y3Rpb25zLgorKGRlZmluZV9pbnNu ICJsZDY0YiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhESSAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXIiKQorICAgICAgICAodW5zcGVjOlY4REkgWyhtZW06VjhESSAobWF0Y2hfb3BlcmFuZDpE SSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0gVU5TUEVDX0xENjRCKQorICApXQorICAiVEFS R0VUX0xTNjQiCisgICJsZDY0YlxcdCUwLCBbJTFdIgorICBbKHNldF9hdHRyICJ0eXBlIiAibHM2 NCIpXQorKQorCisoZGVmaW5lX2luc24gInN0NjRiIgorICBbKHNldCAobWVtOlY4REkgKG1hdGNo X29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikpCisgICAgICAgICh1bnNwZWM6 VjhESSBbKG1hdGNoX29wZXJhbmQ6VjhESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpXSBVTlNQ RUNfU1Q2NEIpCisgICldCisgICJUQVJHRVRfTFM2NCIKKyAgInN0NjRiXFx0JTEsIFslMF0iCisg IFsoc2V0X2F0dHIgInR5cGUiICJsczY0IildCispCisKKyhkZWZpbmVfaW5zbiAic3Q2NGJ2Igor ICBbKGNsb2JiZXIgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikp CisgICAoc2V0IChtZW06VjhESSAobWF0Y2hfb3BlcmFuZDpESSAxICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXIiKSkKKyAgICAgICAgKHVuc3BlYzpWOERJIFsobWF0Y2hfb3BlcmFuZDpWOERJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJyIildIFVOU1BFQ19TVDY0QlYpCisgICldCisgICJUQVJHRVRfTFM2 NCIKKyAgInN0NjRidlxcdCUwLCAlMiwgWyUxXSIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImxzNjQi KV0KKykKKworKGRlZmluZV9pbnNuICJzdDY0YnYwIgorICBbKGNsb2JiZXIgKG1hdGNoX29wZXJh bmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikpCisgICAoc2V0IChtZW06VjhESSAobWF0 Y2hfb3BlcmFuZDpESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKSkKKyAgICAgICAgKHVuc3Bl YzpWOERJIFsobWF0Y2hfb3BlcmFuZDpWOERJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIildIFVO U1BFQ19TVDY0QlYwKQorICApXQorICAiVEFSR0VUX0xTNjQiCisgICJzdDY0YnYwXFx0JTAsICUy LCBbJTFdIgorICBbKHNldF9hdHRyICJ0eXBlIiAibHM2NCIpXQorKQorCiA7OyBBZHZTSU1EIFN0 dWZmCiAoaW5jbHVkZSAiYWFyY2g2NC1zaW1kLm1kIikKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FybV9hY2xlLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaAppbmRl eCAxM2YyMzYzMjQ3NGIyNjAxMjJmMzBhM2M1NjYwMzM2NjRiMGI1OTYzLi4yNmQ4ODY5NDlhMzRm NzdhNjVmNTVmYmYzYjRjYzAxODg0YmZkODgzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNo NjQvYXJtX2FjbGUuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaApAQCAtMjE0 LDYgKzIxNCw1NyBAQCBfX3R0ZXN0ICh2b2lkKQogI3ByYWdtYSBHQ0MgcG9wX29wdGlvbnMKICNl bmRpZgogCisjaWZkZWYgX19BUk1fRkVBVFVSRV9MUzY0CisjcHJhZ21hIEdDQyBwdXNoX29wdGlv bnMKKyNwcmFnbWEgR0NDIHRhcmdldCAoIitub3RoaW5nK2xzNjQiKQorCit0eXBlZGVmIF9fYXJt X2RhdGE1MTJfdCBkYXRhNTEyX3Q7CisKK19fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGRh dGE1MTJfdAorX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQorX19hcm1fbGQ2NGIgKGNvbnN0IHZvaWQgKmFkZHIpCit7Cisg IF9fYnVpbHRpbl9hYXJjaDY0X3NpbWRfeGkgX19vOworICBkYXRhNTEyX3QgX190ZW1wID0geyB9 OworICBfX28gPSBfX2J1aWx0aW5fYWFyY2g2NF9sZDY0YiAoYWRkcik7CisgIF9fYnVpbHRpbl9t ZW1jcHkgKCZfX3RlbXAsICZfX28sIHNpemVvZiAoX19vKSk7CisgIHJldHVybiBfX3RlbXA7Cit9 CisKK19fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHZvaWQKK19fYXR0cmlidXRlX18gKChf X2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19fYXJt X3N0NjRiICh2b2lkICphZGRyLCBkYXRhNTEyX3QgdmFsdWUpCit7CisgIF9fYnVpbHRpbl9hYXJj aDY0X3NpbWRfeGkgX19vOworICBfX2J1aWx0aW5fbWVtY3B5ICgmX19vLCAmdmFsdWUsIHNpemVv ZiAoX19vKSk7CisgIF9fYnVpbHRpbl9hYXJjaDY0X3N0NjRiIChhZGRyLCBfX28pOworfQorCitf X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1aW50NjRfdAorX19hdHRyaWJ1dGVfXyAoKF9f YWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX19hcm1f c3Q2NGJ2ICh2b2lkICphZGRyLCBkYXRhNTEyX3QgdmFsdWUpCit7CisgIHVpbnQ2NF90IF9fcmV0 OworICBfX2J1aWx0aW5fYWFyY2g2NF9zaW1kX3hpIF9fbzsKKyAgX19idWlsdGluX21lbWNweSAo Jl9fbywgJnZhbHVlLCBzaXplb2YgKF9fbykpOworICBfX3JldCA9IF9fYnVpbHRpbl9hYXJjaDY0 X3N0NjRidiAoYWRkciwgX19vKTsKKyAgcmV0dXJuIF9fcmV0OworfQorCitfX2V4dGVuc2lvbl9f IGV4dGVybiBfX2lubGluZSB1aW50NjRfdAorX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX19hcm1fc3Q2NGJ2MCAodm9p ZCAqYWRkciwgZGF0YTUxMl90IHZhbHVlKQoreworICB1aW50NjRfdCBfX3JldDsKKyAgX19idWls dGluX2FhcmNoNjRfc2ltZF94aSBfX287CisgIF9fYnVpbHRpbl9tZW1jcHkgKCZfX28sICZ2YWx1 ZSwgc2l6ZW9mIChfX28pKTsKKyAgX19yZXQgPSBfX2J1aWx0aW5fYWFyY2g2NF9zdDY0YnYwIChh ZGRyLCBfX28pOworICByZXR1cm4gX19yZXQ7Cit9CisKKyNwcmFnbWEgR0NDIHBvcF9vcHRpb25z CisjZW5kaWYKKwogI3ByYWdtYSBHQ0MgcHVzaF9vcHRpb25zCiAjcHJhZ21hIEdDQyB0YXJnZXQg KCIrbm90aGluZytybmciKQogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgaW50CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2FybS90eXBlcy5tZCBiL2djYy9jb25maWcvYXJtL3R5cGVzLm1k CmluZGV4IGI5NTE0ZGFmYjg2YTI4MGJlZTNkM2Y4NDg0NWUwNzQzY2QxOGEzNGQuLjZkY2U3MWZk MjdlNWRmYmQwODc0NjUwOWJjNmZkZWVhZGU2OWE0YTQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv YXJtL3R5cGVzLm1kCisrKyBiL2djYy9jb25maWcvYXJtL3R5cGVzLm1kCkBAIC0xMTIyLDYgKzEx MjIsNyBAQCAoZGVmaW5lX2F0dHIgInR5cGUiCiAgIGNvcHJvYyxcCiAgIHRtZSxcCiAgIG1lbXRh ZyxcCisgIGxzNjQsXAogICBtdmVfbW92ZSxcCiAgIG12ZV9zdG9yZSxcCiAgIG12ZV9sb2FkIgpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X2Fz bS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X2FzbS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLjYwNzM4YTViOGQ2YjM1ODM3YTdiMjg2ZDE2NDE2YTBlYjI4OWUzNGUKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRf YXNtLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1tYXJjaD1hcm12OC1hK2xzNjQgLU8yIiB9ICovCisKKyNpZm5kZWYgX19BUk1f RkVBVFVSRV9MUzY0CisjZXJyb3IgIl9fQVJNX0ZFQVRVUkVfTFM2NCBpcyBub3QgZGVmaW5lZCBi dXQgc2hvdWxkIGJlISIKKyNlbmRpZgorCisvKiBJbmxpbmUgYXNzZW1ibHkgZm9yIExTNjQgaW5z dHJ1Y3Rpb25zLiAgKi8KKworI2luY2x1ZGUgPGFybV9hY2xlLmg+CisKK3ZvaWQKK2xzNjRfbG9h ZChkYXRhNTEyX3QgKm91dHB1dCwgY29uc3Qgdm9pZCAqYWRkcikKK3sKKyAgICBfX2FzbV9fIHZv bGF0aWxlICgibGQ2NGIgJTAsIFslMV0iCisgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiICgq b3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAgIDogInIiIChhZGRyKQorICAgICAgICAgICAg ICAgICAgICAgIDogIm1lbW9yeSIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge2xkNjRiIHhbMC05XSssIFxbeFswLTldK1xdfSAxIH0gfSAqLworCisvKiBMRDY0 QiA8WHQ+LCBbPFhuPl0gLSBtYWtlIHN1cmUgWHQgIT0gWG4gICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0YiB4MCwgXFt4MFxdfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2xkNjRiIHgxLCBcW3gxXF19IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7bGQ2NGIgeDIsIFxbeDJcXX0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0YiB4MywgXFt4M1xdfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2xkNjRiIHg0LCBcW3g0XF19 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7bGQ2NGIgeDUsIFxb eDVcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0YiB4 NiwgXFt4NlxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2xk NjRiIHg3LCBcW3g3XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7bGQ2NGIgeDgsIFxbeDhcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtsZDY0YiB4OSwgXFt4OVxdfSB9IH0gKi8KKwordm9pZAorbHM2NF9zdG9yZShjb25z dCBkYXRhNTEyX3QgKmlucHV0LCB2b2lkICphZGRyKQoreworICAgIF9fYXNtX18gdm9sYXRpbGUg KCJzdDY0YiAlMSwgWyUwXSIKKyAgICAgICAgICAgICAgICAgICAgICA6IC8qIE5vIG91dHB1dHMu ICAqLworICAgICAgICAgICAgICAgICAgICAgIDogInIiIChhZGRyKSwgInIiICgqaW5wdXQpCisg ICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7c3Q2NGIgeFswLTldKywgXFt4WzAtOV0rXF19IDEgfSB9ICov CisKKy8qIFNUNjRCIDxYdD4sIFs8WG4+XSAtIG1ha2Ugc3VyZSBYdCAhPSBYbiAgKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRiIHgwLCBcW3gwXF19IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGIgeDEsIFxbeDFcXX0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YiB4MiwgXFt4Mlxd fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRiIHgzLCBc W3gzXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGIg eDQsIFxbeDRcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YiB4NSwgXFt4NVxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge3N0NjRiIHg2LCBcW3g2XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7c3Q2NGIgeDcsIFxbeDdcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtzdDY0YiB4OCwgXFt4OFxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge3N0NjRiIHg5LCBcW3g5XF19IH0gfSAqLworCit1aW50NjRfdAor bHM2NF9zdG9yZV92KGNvbnN0IGRhdGE1MTJfdCAqaW5wdXQsIHZvaWQgKmFkZHIpCit7CisgICAg dWludDY0X3Qgc3RhdHVzOworICAgIF9fYXNtX18gdm9sYXRpbGUgKCJzdDY0YnYgJTAsICUyLCBb JTFdIgorICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAoc3RhdHVzKSwgIj1yIiAoYWRkcikK KyAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoKmlucHV0KQorICAgICAgICAgICAgICAgICAg ICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyB7c3Q2NGJ2IHhbMC05XSssIHhbMC05XSssIFxbeFswLTld K1xdfSAxIH0gfSAqLworCisvKiBTVDY0QlYgPFhzPiwgPFh0PiwgWzxYbj5dICAtICBtYWtlIHN1 cmUgWHMgIT0gWHQgICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0 YnYgeDAsIHgwLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YnYgeDEsIHgxLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHtzdDY0YnYgeDIsIHgyLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90IHtzdDY0YnYgeDMsIHgzLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtzdDY0YnYgeDQsIHg0LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtzdDY0YnYgeDUsIHg1LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtzdDY0YnYgeDYsIHg2LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHtzdDY0YnYgeDcsIHg3LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYgeDgsIHg4LH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYgeDksIHg5LH0gfSB9ICovCisKKy8qIFNUNjRC ViA8WHM+LCA8WHQ+LCBbPFhuPl0gIC0gIG1ha2Ugc3VyZSBYdCAhPSBYbiAgKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0rLCB4MCwgXFt4MFxdfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0r LCB4MSwgXFt4MVxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3N0NjRidiB4WzAtOV0rLCB4MiwgXFt4MlxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0rLCB4MywgXFt4M1xdfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0rLCB4NCwgXFt4NFxd fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAt OV0rLCB4NSwgXFt4NVxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge3N0NjRidiB4WzAtOV0rLCB4NiwgXFt4NlxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0rLCB4NywgXFt4N1xdfSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4WzAtOV0rLCB4OCwgXFt4 OFxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidiB4 WzAtOV0rLCB4OSwgXFt4OVxdfSB9IH0gKi8KKwordWludDY0X3QKK2xzNjRfc3RvcmVfdjAoY29u c3QgZGF0YTUxMl90ICppbnB1dCwgdm9pZCAqYWRkcikKK3sKKyAgICB1aW50NjRfdCBzdGF0dXM7 CisgICAgX19hc21fXyB2b2xhdGlsZSAoInN0NjRidjAgJTAsICUyLCBbJTFdIgorICAgICAgICAg ICAgICAgICAgICAgIDogIj1yIiAoc3RhdHVzKSwgIj1yIiAoYWRkcikKKyAgICAgICAgICAgICAg ICAgICAgICA6ICJyIiAoKmlucHV0KQorICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIp OworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7c3Q2NGJ2MCB4WzAtOV0rLCB4WzAtOV0rLCBcW3hbMC05XStcXX0gMSB9IH0gKi8K KworLyogU1Q2NEJWMCA8WHM+LCA8WHQ+LCBbPFhuPl0gIC0gIG1ha2Ugc3VyZSBYcyAhPSBYdCAg Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjAgeDAsIHgwLH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwIHgxLCB4 MSx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MCB4 MiwgeDIsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRi djAgeDMsIHgzLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YnYwIHg0LCB4NCx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7c3Q2NGJ2MCB4NSwgeDUsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3Qge3N0NjRidjAgeDYsIHg2LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtzdDY0YnYwIHg3LCB4Nyx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MCB4OCwgeDgsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjAgeDksIHg5LH0gfSB9ICovCisKKy8qIFNUNjRCVjAg PFhzPiwgPFh0PiwgWzxYbj5dICAtICBtYWtlIHN1cmUgWHQgIT0gWG4gICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwIHhbMC05XSssIHgwLCBcW3gwXF19IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MCB4WzAtOV0r LCB4MSwgXFt4MVxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3N0NjRidjAgeFswLTldKywgeDIsIFxbeDJcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHtzdDY0YnYwIHhbMC05XSssIHgzLCBcW3gzXF19IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MCB4WzAtOV0rLCB4NCwgXFt4 NFxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjAg eFswLTldKywgeDUsIFxbeDVcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtzdDY0YnYwIHhbMC05XSssIHg2LCBcW3g2XF19IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MCB4WzAtOV0rLCB4NywgXFt4N1xdfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjAgeFswLTldKywg eDgsIFxbeDhcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YnYwIHhbMC05XSssIHg5LCBcW3g5XF19IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X2xkNjRiLTIuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUvbHM2NF9sZDY0Yi0yLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQz OTYxOGI0NDM2NzUyMmQ4YTI5Yjc3ZjJhNzllMzM5Y2ViMzViNQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUvbHM2NF9sZDY0Yi0yLmMKQEAg LTAsMCArMSwxNSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LW1hcmNoPWFybXY4LWErbHM2NCAtTzIiIH0gKi8KKworI2lmbmRlZiBfX0FSTV9GRUFUVVJFX0xT NjQKKyNlcnJvciAiX19BUk1fRkVBVFVSRV9MUzY0IGlzIG5vdCBkZWZpbmVkIGJ1dCBzaG91bGQg YmUhIgorI2VuZGlmCisKKyNpbmNsdWRlIDxhcm1fYWNsZS5oPgorCit2b2lkCitmdW5jKGNvbnN0 IHZvaWQgKiBhZGRyKSB7CisgICAgZGF0YTUxMl90IHJldCA9IF9fYXJtX2xkNjRiIChhZGRyKTsg ICAvKiBTaG91bGQgYmUgb3B0aW1pemVkIG91dC4gICovCit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge2xkNjRiXHR4WzAtOV0rLCBcW3hbMC05XStcXVxufSB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUvbHM2NF9s ZDY0Yi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X2xkNjRi LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uZDhhM2Y2YzUxZmI1ZjA3MTM3ZWVhNWIwMzJkNGZkY2E5YjFhYTkzYgot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUv bHM2NF9sZDY0Yi5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1hcm12OC1hK2xzNjQgLU8yIiB9ICovCisKKyNpZm5kZWYg X19BUk1fRkVBVFVSRV9MUzY0CisjZXJyb3IgIl9fQVJNX0ZFQVRVUkVfTFM2NCBpcyBub3QgZGVm aW5lZCBidXQgc2hvdWxkIGJlISIKKyNlbmRpZgorCisjaW5jbHVkZSA8YXJtX2FjbGUuaD4KKwor dm9pZAorZnVuYyhjb25zdCB2b2lkICogYWRkciwgZGF0YTUxMl90ICpkYXRhKSB7CisgICpkYXRh ID0gX19hcm1fbGQ2NGIgKGFkZHIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge2xkNjRiXHR4WzAtOV0rLCBcW3hbMC05XStcXVxufSAxIH0gfSAqLworCisvKiBM RDY0QiA8WHQ+LCBbPFhuPl0gLSBtYWtlIHN1cmUgWHQgIT0gWG4gICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDAsIFxbeDBcXX0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDEsIFxbeDFcXX0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDIsIFxbeDJcXX0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDMsIFxbeDNc XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDQs IFxbeDRcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0 Ylx0eDUsIFxbeDVcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHtsZDY0Ylx0eDYsIFxbeDZcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtsZDY0Ylx0eDcsIFxbeDdcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtsZDY0Ylx0eDgsIFxbeDhcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtsZDY0Ylx0eDksIFxbeDlcXX0gfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRfc3Q2NGIuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2FjbGUvbHM2NF9zdDY0Yi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjc1N2ZmNzM4YWRhOGI3MDZiNjhiNTE3ZjIwYmVjN2IxYWQwNWE1YjMKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRfc3Q2NGIu YwpAQCAtMCwwICsxLDI3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItbWFyY2g9YXJtdjgtYStsczY0IC1PMiIgfSAqLworCisjaWZuZGVmIF9fQVJNX0ZFQVRV UkVfTFM2NAorI2Vycm9yICJfX0FSTV9GRUFUVVJFX0xTNjQgaXMgbm90IGRlZmluZWQgYnV0IHNo b3VsZCBiZSEiCisjZW5kaWYKKworI2luY2x1ZGUgPGFybV9hY2xlLmg+CisKK3ZvaWQKK2Z1bmMo dm9pZCAqYWRkciwgZGF0YTUxMl90IHZhbHVlKSB7CisgICAgX19hcm1fc3Q2NGIgKGFkZHIsIHZh bHVlKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtzdDY0Ylx0 eFswLTldKywgXFt4WzAtOV0rXF1cbn0gMSB9IH0gKi8KKworLyogU1Q2NEIgPFh0PiwgWzxYbj5d IC0gbWFrZSBzdXJlIFh0ICE9IFhuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7c3Q2NGJcdHgwLCBcW3gwXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCB7c3Q2NGJcdHgxLCBcW3gxXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHgyLCBcW3gyXF19IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHgzLCBcW3gzXF19IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHg0LCBcW3g0XF19IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHg1LCBcW3g1XF19IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHg2LCBcW3g2 XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJcdHg3 LCBcW3g3XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2 NGJcdHg4LCBcW3g4XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7c3Q2NGJcdHg5LCBcW3g5XF19IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X3N0NjRidi0yLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRfc3Q2NGJ2LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmIyNTIw MjIzYzI5NGRjZDgwNTQ4YmFkMWQwYzE3NmE2OTZjMzdiCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9sczY0X3N0NjRidi0yLmMKQEAgLTAs MCArMSwzOSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1h cmNoPWFybXY4LWErbHM2NCAtTzIiIH0gKi8KKworI2lmbmRlZiBfX0FSTV9GRUFUVVJFX0xTNjQK KyNlcnJvciAiX19BUk1fRkVBVFVSRV9MUzY0IGlzIG5vdCBkZWZpbmVkIGJ1dCBzaG91bGQgYmUh IgorI2VuZGlmCisKKyNpbmNsdWRlIDxhcm1fYWNsZS5oPgorCit2b2lkCitmdW5jKHZvaWQgKmFk ZHIsIGRhdGE1MTJfdCB2YWx1ZSkgeworICAgIF9fYXJtX3N0NjRidiAoYWRkciwgdmFsdWUpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3N0NjRidlx0eFswLTld KywgeFswLTldKywgXFt4WzAtOV0rXF1cbn0gMSB9IH0gKi8KKworLyogU1Q2NEJWIDxYcz4sIDxY dD4sIFs8WG4+XSAgLSAgbWFrZSBzdXJlIFhzICE9IFh0ICAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4MCwgeDAsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDEsIHgxLH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHgyLCB4Mix9IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4MywgeDMsfSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDQsIHg0LH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHg1LCB4NSx9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4NiwgeDYs fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDcs IHg3LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZc dHg4LCB4OCx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2 NGJ2XHR4OSwgeDksfSB9IH0gKi8KKworLyogU1Q2NEJWIDxYcz4sIDxYdD4sIFs8WG4+XSAgLSAg bWFrZSBzdXJlIFh0ICE9IFhuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7c3Q2NGJ2XHR4WzAtOV0rLCB4MCwgXFt4MFxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eFswLTldKywgeDEsIFxbeDFcXX0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHhbMC05XSssIHgyLCBc W3gyXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2 XHR4WzAtOV0rLCB4MywgXFt4M1xdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3Qge3N0NjRidlx0eFswLTldKywgeDQsIFxbeDRcXX0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHhbMC05XSssIHg1LCBcW3g1XF19IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4WzAtOV0r LCB4NiwgXFt4NlxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3N0NjRidlx0eFswLTldKywgeDcsIFxbeDdcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHhbMC05XSssIHg4LCBcW3g4XF19IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4WzAtOV0rLCB4OSwgXFt4 OVxdfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2FjbGUvbHM2NF9zdDY0YnYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2Fj bGUvbHM2NF9zdDY0YnYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmI0MGMzYTlkYjY0M2E1YjI1NDhlNGU3ZTYz OTIyNDEyNmUwM2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYWNsZS9sczY0X3N0NjRidi5jCkBAIC0wLDAgKzEsMzkgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1hcm12OC1hK2xzNjQgLU8yIiB9 ICovCisKKyNpZm5kZWYgX19BUk1fRkVBVFVSRV9MUzY0CisjZXJyb3IgIl9fQVJNX0ZFQVRVUkVf TFM2NCBpcyBub3QgZGVmaW5lZCBidXQgc2hvdWxkIGJlISIKKyNlbmRpZgorCisjaW5jbHVkZSA8 YXJtX2FjbGUuaD4KKwordWludDY0X3QKK2Z1bmModm9pZCAqYWRkciwgZGF0YTUxMl90IHZhbHVl KSB7CisgICAgcmV0dXJuICBfX2FybV9zdDY0YnYgKGFkZHIsIHZhbHVlKTsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtzdDY0YnZcdHhbMC05XSssIHhbMC05XSss IFxbeFswLTldK1xdXG59IDEgfSB9ICovCisKKy8qIFNUNjRCViA8WHM+LCA8WHQ+LCBbPFhuPl0g IC0gIG1ha2Ugc3VyZSBYcyAhPSBYdCAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3Qge3N0NjRidlx0eDAsIHgwLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtzdDY0YnZcdHgxLCB4MSx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4MiwgeDIsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDMsIHgzLH0gfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHg0LCB4NCx9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4NSwgeDUsfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDYsIHg2LH0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHg3LCB4Nyx9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4OCwgeDgsfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eDksIHg5 LH0gfSB9ICovCisKKy8qIFNUNjRCViA8WHM+LCA8WHQ+LCBbPFhuPl0gIC0gIG1ha2Ugc3VyZSBY dCAhPSBYbiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0 eFswLTldKywgeDAsIFxbeDBcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtzdDY0YnZcdHhbMC05XSssIHgxLCBcW3gxXF19IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4WzAtOV0rLCB4MiwgXFt4MlxdfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eFswLTldKywg eDMsIFxbeDNcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YnZcdHhbMC05XSssIHg0LCBcW3g0XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7c3Q2NGJ2XHR4WzAtOV0rLCB4NSwgXFt4NVxdfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eFswLTldKywgeDYsIFxbeDZc XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnZcdHhb MC05XSssIHg3LCBcW3g3XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7c3Q2NGJ2XHR4WzAtOV0rLCB4OCwgXFt4OFxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidlx0eFswLTldKywgeDksIFxbeDlcXX0gfSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRf c3Q2NGJ2MC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xlL2xzNjRf c3Q2NGJ2MC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ4ZmQ1ZGNmNDFkM2IwZTlkYWI2YmU1M2NjMDk5MDE0 Y2RjZjFlMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2FjbGUvbHM2NF9zdDY0YnYwLTIuYwpAQCAtMCwwICsxLDM5IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9YXJtdjgtYStsczY0IC1PMiIgfSAq LworCisjaWZuZGVmIF9fQVJNX0ZFQVRVUkVfTFM2NAorI2Vycm9yICJfX0FSTV9GRUFUVVJFX0xT NjQgaXMgbm90IGRlZmluZWQgYnV0IHNob3VsZCBiZSEiCisjZW5kaWYKKworI2luY2x1ZGUgPGFy bV9hY2xlLmg+CisKK3ZvaWQKK2Z1bmModm9pZCAqYWRkciwgZGF0YTUxMl90IHZhbHVlKSB7Cisg ICAgX19hcm1fc3Q2NGJ2MCAoYWRkciwgdmFsdWUpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge3N0NjRidjBcdHhbMC05XSssIHhbMC05XSssIFxbeFswLTldK1xd XG59IDEgfSB9ICovCisKKy8qIFNUNjRCVjAgPFhzPiwgPFh0PiwgWzxYbj5dICAtICBtYWtlIHN1 cmUgWHMgIT0gWHQgICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0 YnYwXHR4MCwgeDAsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3N0NjRidjBcdHgxLCB4MSx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7c3Q2NGJ2MFx0eDIsIHgyLH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtzdDY0YnYwXHR4MywgeDMsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHg0LCB4NCx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eDUsIHg1LH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4NiwgeDYsfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHg3LCB4Nyx9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eDgsIHg4LH0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4OSwgeDks fSB9IH0gKi8KKworLyogU1Q2NEJWMCA8WHM+LCA8WHQ+LCBbPFhuPl0gIC0gIG1ha2Ugc3VyZSBY dCAhPSBYbiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBc dHhbMC05XSssIHgwLCBcW3gwXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7c3Q2NGJ2MFx0eFswLTldKywgeDEsIFxbeDFcXX0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0rLCB4MiwgXFt4MlxdfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHhbMC05 XSssIHgzLCBcW3gzXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7c3Q2NGJ2MFx0eFswLTldKywgeDQsIFxbeDRcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0rLCB4NSwgXFt4NVxdfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHhbMC05XSssIHg2 LCBcW3g2XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2 NGJ2MFx0eFswLTldKywgeDcsIFxbeDdcXX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0rLCB4OCwgXFt4OFxdfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHhbMC05XSssIHg5LCBcW3g5 XF19IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv YWNsZS9sczY0X3N0NjRidjAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2Fj bGUvbHM2NF9zdDY0YnYwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZTliZjUzYWQwZjAzYTM4MmE5NTA3ODM5 NDk5ODkxODJhZGNmOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2FjbGUvbHM2NF9zdDY0YnYwLmMKQEAgLTAsMCArMSwzOSBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPWFybXY4LWErbHM2NCAtTzIi IH0gKi8KKworI2lmbmRlZiBfX0FSTV9GRUFUVVJFX0xTNjQKKyNlcnJvciAiX19BUk1fRkVBVFVS RV9MUzY0IGlzIG5vdCBkZWZpbmVkIGJ1dCBzaG91bGQgYmUhIgorI2VuZGlmCisKKyNpbmNsdWRl IDxhcm1fYWNsZS5oPgorCit1aW50NjRfdAorZnVuYyh2b2lkICphZGRyLCBkYXRhNTEyX3QgdmFs dWUpIHsKKyAgICByZXR1cm4gX19hcm1fc3Q2NGJ2MCAoYWRkciwgdmFsdWUpOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3N0NjRidjBcdHhbMC05XSssIHhbMC05 XSssIFxbeFswLTldK1xdXG59IDEgfSB9ICovCisKKy8qIFNUNjRCVjAgPFhzPiwgPFh0PiwgWzxY bj5dICAtICBtYWtlIHN1cmUgWHMgIT0gWHQgICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtzdDY0YnYwXHR4MCwgeDAsfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHgxLCB4MSx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eDIsIHgyLH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4MywgeDMsfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHg0LCB4NCx9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eDUsIHg1LH0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4NiwgeDYs fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHg3 LCB4Nyx9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2 MFx0eDgsIHg4LH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtz dDY0YnYwXHR4OSwgeDksfSB9IH0gKi8KKworLyogU1Q2NEJWMCA8WHM+LCA8WHQ+LCBbPFhuPl0g IC0gIG1ha2Ugc3VyZSBYdCAhPSBYbiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3Qge3N0NjRidjBcdHhbMC05XSssIHgwLCBcW3gwXF19IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eFswLTldKywgeDEsIFxbeDFcXX0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0r LCB4MiwgXFt4MlxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3N0NjRidjBcdHhbMC05XSssIHgzLCBcW3gzXF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eFswLTldKywgeDQsIFxbeDRcXX0gfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0rLCB4NSwg XFt4NVxdfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRi djBcdHhbMC05XSssIHg2LCBcW3g2XF19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCB7c3Q2NGJ2MFx0eFswLTldKywgeDcsIFxbeDdcXX0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtzdDY0YnYwXHR4WzAtOV0rLCB4OCwgXFt4OFxd fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3N0NjRidjBcdHhb MC05XSssIHg5LCBcW3g5XF19IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvcHJhZ21hX2NwcF9wcmVkZWZzXzIuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3ByYWdtYV9jcHBfcHJlZGVmc18yLmMKaW5kZXggNzI0NDM1OWNjZmI5 Y2JjYmJkODI4NWIwNTAxMTNjMDA0YTZhZjJhNi4uMmQ3NmJmYzIzZGZkY2Q3OGE3NGVjMGU0ODQ1 YTNiZDhkMTEwYjAxMCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvcHJhZ21hX2NwcF9wcmVkZWZzXzIuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9wcmFnbWFfY3BwX3ByZWRlZnNfMi5jCkBAIC0yNDAsNiArMjQwLDIwIEBACiAjZW5k aWYKICNwcmFnbWEgR0NDIHBvcF9vcHRpb25zCiAKKyNwcmFnbWEgR0NDIHB1c2hfb3B0aW9ucwor I3ByYWdtYSBHQ0MgdGFyZ2V0ICgiYXJjaD1hcm12OC43LWEiKQorI2lmbmRlZiBfX0FSTV9GRUFU VVJFX0xTNjQKKyNlcnJvciAiX19BUk1fRkVBVFVSRV9MUzY0IGlzIG5vdCBkZWZpbmVkIGJ1dCBz aG91bGQgYmUhIgorI2VuZGlmCisjcHJhZ21hIEdDQyBwb3Bfb3B0aW9ucworCisjcHJhZ21hIEdD QyBwdXNoX29wdGlvbnMKKyNwcmFnbWEgR0NDIHRhcmdldCAoImFyY2g9YXJtdjguNy1hK2xzNjQi KQorI2lmbmRlZiBfX0FSTV9GRUFUVVJFX0xTNjQKKyNlcnJvciAiX19BUk1fRkVBVFVSRV9MUzY0 IGlzIG5vdCBkZWZpbmVkIGJ1dCBzaG91bGQgYmUhIgorI2VuZGlmCisjcHJhZ21hIEdDQyBwb3Bf b3B0aW9ucworCiAjcHJhZ21hIEdDQyBwb3Bfb3B0aW9ucwogCiBpbnQK --_002_PAXPR08MB6621C00B26557498A0DA78BCE4949PAXPR08MB6621eurp_--