From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2043.outbound.protection.outlook.com [40.107.104.43]) by sourceware.org (Postfix) with ESMTPS id 77C5F3858D35 for ; Thu, 9 Nov 2023 16:15:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 77C5F3858D35 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-Filter: OpenARC Filter v1.0.0 sourceware.org 77C5F3858D35 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.104.43 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699546561; cv=pass; b=cFS+zHgFv2NS90AVVlO946loVvFrB+Jq/CUCmRcMAGaQqdecCkxvW75LJcjsWsFHV6vegpu1z2yFnRJvYb1OelVgEFXk2NaU+5i0KUHGrEH5/isEyri9BbLsPBP51oQtKUfIg/7wsGQU0BIbNyV5xFULczG1608xLwFofpr/+NE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699546561; c=relaxed/simple; bh=q0lz9cnWaibTCq8k5w3jQDmIt4L85dBocDUqVmoMXXo=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:From:To:Subject: MIME-Version; b=UcR8I5PGx4ZgTw1o7ofTgMhVInphkyvf+Ji35Vd/KVTaF+v034ZTbRUuvDwqk8urvi9QE5sN0gy733VcbcqLd2tANGCCCDLV+dvHep2wPBFk04tro6zfzjeYKgOEAlhjzbBRO1XKvDPTlJUuOJnqWmsKpB8gwePPPwBNaqTmfm4= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=claC9IXeEIhwYkP8pmLBSvvECZdqYlc9IsUfBZraSTW3st8OKEe3bwbXLiHsYtskgfa+IRlVIVayeCdg8w0OHA9j2bjLf7X53jYWieNK6nTWmkdWukOfpe0SBPAk0+eEeSlcv0tkQeMYBNx5K7GmMoQZ3+JSyum5SkpoJHu6/4xd6usNPRg0SFzOrbXCBMIFd/FQmpQhWx0769gjM0m9c5gGKEQE9KalGVD18bwcu0MfC0NkUUKdAkn5fR6lV/A4xWuwKCTIZMRDb5F3hSlRYVWK/RsYauTsNiVNlNr12Chjk5LedisWUCig9/wGjUCV6kl1CmLjGLoln3JBoEgHpw== 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=clC1S5geldp0/YEi/abQPdyBAZTbP6QQtbTx0xz63TQ=; b=aCDBnmynfatv4WFvmYdO/cIdA43CqUXn8Z/JYVGqY9m2AghIhzV9tIDDydfiMN2SvMvv2Q0XG2QDBlImkz8jyDMG3VHnfR2VMPnBdqpdu23vZJ4sQ/lO+HFPo/0NHBQX3iyFI98GC3TcYArEvAACYshd78JOZh954+jhpYrz3U52bUFhlxaZxkY7G8hV5Xh1p5K7/wD7/jcyci7MVsvv+4tmq2gx1TcHL3cPnKGFuMH8DGf9AvpI8LPYQ6ETQdwyZC9ZKNB8kDi0tWw9OO6INitFrdLlog04q1WPAUJVzJ9q5od4YQDNBD6kYZbiNr9MFLZRyroqOrZdFCwj5aTd1w== 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=clC1S5geldp0/YEi/abQPdyBAZTbP6QQtbTx0xz63TQ=; b=uZTJ+S+KB23oVWLAG86jeUHJ98R4jv5DqzPTMwtAGhg/LESuFWRQPChG+BQJKIRG6roZOWAtX52adXnRzkwnIjY6EDMoshZB+qgoTeYJgah/2wyNPHk6/HQXCmsYbAZcfk5ASA7S7Zw0imT/1pySlDRDJMkIqSRcXgj7X8vy8kw= Received: from DU6P191CA0065.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53e::27) by GV2PR08MB9301.eurprd08.prod.outlook.com (2603:10a6:150:d4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19; Thu, 9 Nov 2023 16:15:50 +0000 Received: from DU6PEPF0000B61D.eurprd02.prod.outlook.com (2603:10a6:10:53e:cafe::1e) by DU6P191CA0065.outlook.office365.com (2603:10a6:10:53e::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18 via Frontend Transport; Thu, 9 Nov 2023 16:15:49 +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 DU6PEPF0000B61D.mail.protection.outlook.com (10.167.8.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19 via Frontend Transport; Thu, 9 Nov 2023 16:15:49 +0000 Received: ("Tessian outbound 5d213238733f:v228"); Thu, 09 Nov 2023 16:15:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3cc2c38576dd4485 X-CR-MTA-TID: 64aa7808 Received: from ae60fb94eac1.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4A80FD13-82A8-4AE8-9529-171E59DC2E8C.1; Thu, 09 Nov 2023 16:15:43 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ae60fb94eac1.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Nov 2023 16:15:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JDjJ92d3NqJxIA8w0RuKpQaCroGraAW/mrMnOSnUnx7QZcVApDwdI112xtHK/+EsvQKYA3FA3n2fOcmeI6ORNxYxtFJ8D+KIXbmRgRXNQLmTfn7kCSBr9jzqKpGyjxcBwnPB6sFzGV1U427h2nLRNJ9TnMWKY8ym4LF4n9KtB7MYbWtp8aLrFCbQpBP5GEMFtRTtbNX2q+L13/k1YvX2Z1+W3mBrM1tbDuXpgJ2JysK2WpgMBz3i5Pc5Sh/ExE92e2P7gMOQt3WFPwNfK/ICwVP1it4NES7YE1CWCq919Hq76L7dzbSGaR9HZ/zSegDM4Bsab5x69CAoaFMMBS4y8A== 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=clC1S5geldp0/YEi/abQPdyBAZTbP6QQtbTx0xz63TQ=; b=kJC+rdvgutYmmFmF4q9Tx0OG3Ld75N80c/jEf26mD5Odg4qVm+Hzk8+7qArIL1tlrkvYZzt5Rxd7oA/xh4yCcK6tFHJbv+fDAZ1IyBS1tjLv6BAhr41fNp0KP0jvAP3uPCrjulUm0bmc/cuVpHZCL28DAE9tpsRd2p7muOTWz3VPrqYwhvcg4ZHfSdvWUZRk52Q3FDAhrV7TZYiIxdilm6dZnd+UYfXZ+1q05bWz+ofAmlZNUGbB1OaSx4o0PrZno/3cMhhIVh2ohlaSQH1hc93jXYd2ci6EvB5HSwLbz4pMJV9WxeXlZKpJmWxfAXyoFVDmQhat1Jb+q+j1Xxm4ZQ== 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=clC1S5geldp0/YEi/abQPdyBAZTbP6QQtbTx0xz63TQ=; b=uZTJ+S+KB23oVWLAG86jeUHJ98R4jv5DqzPTMwtAGhg/LESuFWRQPChG+BQJKIRG6roZOWAtX52adXnRzkwnIjY6EDMoshZB+qgoTeYJgah/2wyNPHk6/HQXCmsYbAZcfk5ASA7S7Zw0imT/1pySlDRDJMkIqSRcXgj7X8vy8kw= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) by VE1PR08MB5807.eurprd08.prod.outlook.com (2603:10a6:800:1b2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Thu, 9 Nov 2023 16:15:37 +0000 Received: from DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::fbca:3ad1:4e78:aae8]) by DB9PR08MB6957.eurprd08.prod.outlook.com ([fe80::fbca:3ad1:4e78:aae8%2]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 16:15:37 +0000 Content-Type: multipart/mixed; boundary="------------aoa0PIkDOmIxH0DONIcbughr" Message-ID: Date: Thu, 9 Nov 2023 16:14:50 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 From: Richard Ball Content-Language: en-US To: "gcc-patches@gcc.gnu.org" , Richard Earnshaw , Richard Sandiford , Kyrylo Tkachov , Marcus Shawcroft Subject: [PATCH v3] aarch64: SVE/NEON Bridging intrinsics X-ClientProxiedBy: LO2P123CA0061.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1::25) To DB9PR08MB6957.eurprd08.prod.outlook.com (2603:10a6:10:2bc::10) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB6957:EE_|VE1PR08MB5807:EE_|DU6PEPF0000B61D:EE_|GV2PR08MB9301:EE_ X-MS-Office365-Filtering-Correlation-Id: 23d46a42-b870-4ccb-18db-08dbe13f238e 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: SLMjYOCj4K3opJKEstic8pVOIxNrUQBqnQtjMZpn2MriVoes0D3l8h1gCew3xx8KpTMJDJMBUKy0wNV3FAXGJRwUpYjjp/oat0W9RpVj2l8NNX7N8/1ghLYSYkisDBx0RKy0lKQRTAin3G2KzXNjq5JMXKXPm5lCQ9nBcIv9Or+rMfhY+A9R6qhRlz0KSUVMQpEWPx/HaRZZeASbfc7EpjhWOTvCzdF+DZVarN7i1d5UTFZGNoIcKwYZwkLTDD1CTuVt7lO85eeSdacJ4W1KXvttBjX2st0XxXumLhQTLMTVJo+ThhgAueRZCfFaX9g2RqsclDlmtVNvtubu1A/mj7YHaj2wmOKJbOEkYIF/LyX2U+0Ppwy235Vv9IMjmZKunnKD1VUA8BcmyjUSE4lmsqKupvszN7kFUdic2d5Psr8n+Nypj9kVyBehbCnA+hn3vq4b+BpX8h7ZwXVcJebMpZSZ4oaPTkc7/TQYamxHg8VO9uo7VK+6ZpZV6gzJ/97f/1CfeLYccOT9xw3jrF2kyamvG7smeK/aGtryV1Q75t5ctI/ZxQn5qgH3lK9UT9H8UeI17qt4lzNFc3W4IBaBrRM0V8vKfsc7Xw9YiunQTm9QufahOlCVkMMawNTjUuAontfUioJ5NY5sGifFT2GH+UME9gBJ9sLzgvMxEDoyAM4csk5wjQd/tMMddfRauhma X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6957.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(39850400004)(366004)(396003)(346002)(376002)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(36756003)(5660300002)(8936002)(8676002)(316002)(66556008)(26005)(6636002)(66476007)(66946007)(110136005)(235185007)(2906002)(33964004)(44832011)(84970400001)(6512007)(478600001)(41300700001)(6486002)(86362001)(2616005)(6506007)(6666004)(31686004)(31696002)(38100700002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5807 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: DU6PEPF0000B61D.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 216b0cdf-5a53-4520-e812-08dbe13f1bc7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ns8JGHfDAN08of66bydes3DeDedS3h/GQHv+icW2IM2Kffdpu0t2ESVKWbXTIvoZRlyn9ZkkxzIReeHkUpXmDq7ShhyLPITn+s6Sbgv3ytf75rbFPScn/m9SXJlbUge8yKbpQBzcZz1jWAzscunWf9sAGzFYqSg5NBSf4uQTCD8bxCdBROwhVB1Hn6gjig8ixq1mtmHHk+A5j8s6SaszMvW6JyTLg0FdBjq5Ua68P8Y5RF9wps8EbeWQtgkLfY2GsfLr9SI6rVxmHTxvC7xwUSGBKtb1Oc8mLTZmV2xyUuUSTxRycdedu9Ys3ImlIL+TKm8mtadJ9HG3YNa/vNeZefVNflaLoRE3qB7snvkgQcXsnJjlRtIYyQzTMRM3vyRDsATph/TXn0FGFZpNUPWRDeQIs1Su5+i05QszhZEYq5UJxLVtkkHKxfhiSybK0aDRlnXT8grlDq24OgOAyOl/oonJs/39Qkj7InCQACIdarelvEFT6730EwhdyqVt+N9MGZPyBeSFnsnNiKRTOUQ1PGTsHkrAZkxzbKiuAAeB787CjucEia6saZJhdew+xTV9iB7ce1QLFudZXDk1/Jw4y/g+BCPuSyrR1HlTltdASUv5ryKPASi2KLICyP53gOziGOMsOlEQGvKb7+7N74PYWjyFdliQ1MQGKcBy6RKFhX/8DEXJ1dvbatzBkmOqjL1RVnLqbipEgIfa3iqt6UklFLvqXXPVFY/UhrBPb45BSEdaR7epTap6dCYSJhlm6Fg8IbYMXWlPHUFHdI/bztU1sJ0KUZ6tt7g1Ofu/0eYJw1+fkx4+hymzND1q9dK9kye3 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:(13230031)(4636009)(39860400002)(376002)(136003)(396003)(346002)(230922051799003)(82310400011)(451199024)(186009)(1800799009)(64100799003)(36840700001)(46966006)(40470700004)(336012)(6486002)(6512007)(47076005)(33964004)(6506007)(2616005)(6666004)(84970400001)(36860700001)(26005)(31686004)(70206006)(70586007)(40480700001)(316002)(6636002)(110136005)(478600001)(44832011)(2906002)(40460700003)(8676002)(81166007)(8936002)(356005)(82740400003)(41300700001)(36756003)(31696002)(86362001)(5660300002)(235185007)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 16:15:49.8761 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 23d46a42-b870-4ccb-18db-08dbe13f238e 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: DU6PEPF0000B61D.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9301 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------aoa0PIkDOmIxH0DONIcbughr Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ACLE has added intrinsics to bridge between SVE and Neon. The NEON_SVE Bridge adds intrinsics that allow conversions between NEON and SVE vectors. This patch adds support to GCC for the following 3 intrinsics: svset_neonq, svget_neonq and svdup_neonq gcc/ChangeLog: * config.gcc: Adds new header to config. * config/aarch64/aarch64-builtins.cc (enum aarch64_type_qualifiers): Moved to header file. (ENTRY): Likewise. (enum aarch64_simd_type): Likewise. (struct aarch64_simd_type_info): Make extern. (GTY): Likewise. * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): Defines pragma for arm_neon_sve_bridge.h. * config/aarch64/aarch64-protos.h: New function. * config/aarch64/aarch64-sve-builtins-base.h: New intrinsics. * config/aarch64/aarch64-sve-builtins-base.cc (class svget_neonq_impl): New intrinsic implementation. (class svset_neonq_impl): Likewise. (class svdup_neonq_impl): Likewise. (NEON_SVE_BRIDGE_FUNCTION): New intrinsics. * config/aarch64/aarch64-sve-builtins-functions.h (NEON_SVE_BRIDGE_FUNCTION): Defines macro for NEON_SVE_BRIDGE functions. * config/aarch64/aarch64-sve-builtins-shapes.h: New shapes. * config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type): Add NEON element types. (parse_type): Likewise. (struct get_neonq_def): Defines function shape for get_neonq. (struct set_neonq_def): Defines function shape for set_neonq. (struct dup_neonq_def): Defines function shape for dup_neonq. * config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE_SUFFIX): (DEF_SVE_NEON_TYPE_SUFFIX): Defines macro for NEON_SVE_BRIDGE type suffixes. (DEF_NEON_SVE_FUNCTION): Defines macro for NEON_SVE_BRIDGE functions. (function_resolver::infer_neon128_vector_type): Infers type suffix for overloaded functions. (init_neon_sve_builtins): Initialise neon_sve_bridge_builtins for LTO. (handle_arm_neon_sve_bridge_h): Handles #pragma arm_neon_sve_bridge.h. * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_NEON_TYPE_SUFFIX): Macro for handling neon_sve type suffixes. (bf16): Replace entry with neon-sve entry. (f16): Likewise. (f32): Likewise. (f64): Likewise. (s8): Likewise. (s16): Likewise. (s32): Likewise. (s64): Likewise. (u8): Likewise. (u16): Likewise. (u32): Likewise. (u64): Likewise. * config/aarch64/aarch64-sve-builtins.h (GCC_AARCH64_SVE_BUILTINS_H): Include aarch64-builtins.h. (ENTRY): Add aarch64_simd_type definiton. (enum aarch64_simd_type): Add neon information to type_suffix_info. (struct type_suffix_info): New function. * config/aarch64/aarch64-sve.md (@aarch64_sve_get_neonq_): New intrinsic insn for big endian. (@aarch64_sve_set_neonq_): Likewise. (@aarch64_sve_dup_neonq_): Likewise. * config/aarch64/aarch64.cc (aarch64_init_builtins): Add call to init_neon_sve_builtins. (aarch64_output_sve_set_neonq): asm output for Big Endian set_neonq. * config/aarch64/iterators.md: Add UNSPEC_SET_NEONQ. * config/aarch64/aarch64-builtins.h: New file. * config/aarch64/aarch64-neon-sve-bridge-builtins.def: New file. * config/aarch64/arm_neon_sve_bridge.h: New file. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h: Add include arm_neon_sve_bridge header file * gcc.dg/torture/neon-sve-bridge.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/get_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_bf16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_f64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_s8.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u16.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u32.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u64.c: New test. * gcc.target/aarch64/sve/acle/asm/set_neonq_u8.c: New test. * gcc.target/aarch64/sve/acle/general-c/dup_neonq_1.c: New test. * gcc.target/aarch64/sve/acle/general-c/get_neonq_1.c: New test. * gcc.target/aarch64/sve/acle/general-c/set_neonq_1.c: New test. --------------aoa0PIkDOmIxH0DONIcbughr Content-Type: text/plain; charset=UTF-8; name="NEON-SVE-Bridge.patch" Content-Disposition: attachment; filename="NEON-SVE-Bridge.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKaW5kZXggZDM0ZWEy NDZhOTgwYjVkOGFhYWI4NmU0NDU5ZGU1ZWY0ZDM0MWZlMi4uMWM5MmMzOTBlOWIxYjE0ZDJmNzU2 ZWMyMzNiYmE3MTNjYThhYWE5NCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrIGIvZ2Nj L2NvbmZpZy5nY2MKQEAgLTM0NSw3ICszNDUsNyBAQCBtMzJjKi0qLSopCiAgICAgICAgIDs7CiBh YXJjaDY0Ki0qLSopCiAJY3B1X3R5cGU9YWFyY2g2NAotCWV4dHJhX2hlYWRlcnM9ImFybV9mcDE2 LmggYXJtX25lb24uaCBhcm1fYmYxNi5oIGFybV9hY2xlLmggYXJtX3N2ZS5oIgorCWV4dHJhX2hl YWRlcnM9ImFybV9mcDE2LmggYXJtX25lb24uaCBhcm1fYmYxNi5oIGFybV9hY2xlLmggYXJtX3N2 ZS5oIGFybV9uZW9uX3N2ZV9icmlkZ2UuaCIKIAljX3RhcmdldF9vYmpzPSJhYXJjaDY0LWMubyIK IAljeHhfdGFyZ2V0X29ianM9ImFhcmNoNjQtYy5vIgogCWRfdGFyZ2V0X29ianM9ImFhcmNoNjQt ZC5vIgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuaCBi L2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM0NTgw OTgxNTg3YWIzYWNiYjM5ZTBiMDcyMWVkMjQ3ZTMwOWE3NAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmgKQEAgLTAsMCArMSw4NiBAQAorLyog QnVpbHRpbnMnIGRlc2NyaXB0aW9uIGZvciBBQXJjaDY0IFNJTUQgYXJjaGl0ZWN0dXJlLgorICAg Q29weXJpZ2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorICAgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRp b24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisjaWZuZGVmIEdDQ19BQVJDSDY0X0JV SUxUSU5TX0gKKyNkZWZpbmUgR0NDX0FBUkNINjRfQlVJTFRJTlNfSAorCitlbnVtIGFhcmNoNjRf dHlwZV9xdWFsaWZpZXJzCit7CisgIC8qIFQgZm9vLiAgKi8KKyAgcXVhbGlmaWVyX25vbmUgPSAw eDAsCisgIC8qIHVuc2lnbmVkIFQgZm9vLiAgKi8KKyAgcXVhbGlmaWVyX3Vuc2lnbmVkID0gMHgx LCAvKiAxIDw8IDAgICovCisgIC8qIGNvbnN0IFQgZm9vLiAgKi8KKyAgcXVhbGlmaWVyX2NvbnN0 ID0gMHgyLCAvKiAxIDw8IDEgICovCisgIC8qIFQgKmZvby4gICovCisgIHF1YWxpZmllcl9wb2lu dGVyID0gMHg0LCAvKiAxIDw8IDIgICovCisgIC8qIFVzZWQgd2hlbiBleHBhbmRpbmcgYXJndW1l bnRzIGlmIGFuIG9wZXJhbmQgY291bGQKKyAgICAgYmUgYW4gaW1tZWRpYXRlLiAgKi8KKyAgcXVh bGlmaWVyX2ltbWVkaWF0ZSA9IDB4OCwgLyogMSA8PCAzICAqLworICBxdWFsaWZpZXJfbWF5YmVf aW1tZWRpYXRlID0gMHgxMCwgLyogMSA8PCA0ICAqLworICAvKiB2b2lkIGZvbyAoLi4uKS4gICov CisgIHF1YWxpZmllcl92b2lkID0gMHgyMCwgLyogMSA8PCA1ICAqLworICAvKiAxIDw8IDYgaXMg bm93IHVudXNlZCAqLworICAvKiBTb21lIGJ1aWx0aW5zIHNob3VsZCB1c2UgdGhlIFRfKm1vZGUq IGVuY29kZWQgaW4gYSBzaW1kX2J1aWx0aW5fZGF0dW0KKyAgICAgcmF0aGVyIHRoYW4gdXNpbmcg dGhlIHR5cGUgb2YgdGhlIG9wZXJhbmQuICAqLworICBxdWFsaWZpZXJfbWFwX21vZGUgPSAweDgw LCAvKiAxIDw8IDcgICovCisgIC8qIHF1YWxpZmllcl9wb2ludGVyIHwgcXVhbGlmaWVyX21hcF9t b2RlICAqLworICBxdWFsaWZpZXJfcG9pbnRlcl9tYXBfbW9kZSA9IDB4ODQsCisgIC8qIHF1YWxp Zmllcl9jb25zdCB8IHF1YWxpZmllcl9wb2ludGVyIHwgcXVhbGlmaWVyX21hcF9tb2RlICAqLwor ICBxdWFsaWZpZXJfY29uc3RfcG9pbnRlcl9tYXBfbW9kZSA9IDB4ODYsCisgIC8qIFBvbHlub21p YWwgdHlwZXMuICAqLworICBxdWFsaWZpZXJfcG9seSA9IDB4MTAwLAorICAvKiBMYW5lIGluZGlj ZXMgLSBtdXN0IGJlIGluIHJhbmdlLCBhbmQgZmxpcHBlZCBmb3IgYmlnZW5kaWFuLiAgKi8KKyAg cXVhbGlmaWVyX2xhbmVfaW5kZXggPSAweDIwMCwKKyAgLyogTGFuZSBpbmRpY2VzIGZvciBzaW5n bGUgbGFuZSBzdHJ1Y3R1cmUgbG9hZHMgYW5kIHN0b3Jlcy4gICovCisgIHF1YWxpZmllcl9zdHJ1 Y3RfbG9hZF9zdG9yZV9sYW5lX2luZGV4ID0gMHg0MDAsCisgIC8qIExhbmUgaW5kaWNlcyBzZWxl Y3RlZCBpbiBwYWlycy4gLSBtdXN0IGJlIGluIHJhbmdlLCBhbmQgZmxpcHBlZCBmb3IKKyAgICAg YmlnZW5kaWFuLiAgKi8KKyAgcXVhbGlmaWVyX2xhbmVfcGFpcl9pbmRleCA9IDB4ODAwLAorICAv KiBMYW5lIGluZGljZXMgc2VsZWN0ZWQgaW4gcXVhZHR1cGxldHMuIC0gbXVzdCBiZSBpbiByYW5n ZSwgYW5kIGZsaXBwZWQgZm9yCisgICAgIGJpZ2VuZGlhbi4gICovCisgIHF1YWxpZmllcl9sYW5l X3F1YWR0dXBfaW5kZXggPSAweDEwMDAsCit9OworI2RlZmluZSBFTlRSWShFLCBNLCBRLCBHKSBF LAorZW51bSBhYXJjaDY0X3NpbWRfdHlwZQoreworI2luY2x1ZGUgImFhcmNoNjQtc2ltZC1idWls dGluLXR5cGVzLmRlZiIKKyAgQVJNX05FT05fSF9UWVBFU19MQVNUCit9OworI3VuZGVmIEVOVFJZ CitzdHJ1Y3QgR1RZKCgpKSBhYXJjaDY0X3NpbWRfdHlwZV9pbmZvCit7CisgIGVudW0gYWFyY2g2 NF9zaW1kX3R5cGUgdHlwZTsKKyAgLyogSW50ZXJuYWwgdHlwZSBuYW1lLiAgKi8KKyAgY29uc3Qg Y2hhciAqbmFtZTsKKyAgLyogSW50ZXJuYWwgdHlwZSBuYW1lKG1hbmdsZWQpLiAgVGhlIG1hbmds ZWQgbmFtZXMgY29uZm9ybSB0byB0aGUKKyAgICAgQUFQQ1M2NCAoc2VlICJQcm9jZWR1cmUgQ2Fs bCBTdGFuZGFyZCBmb3IgdGhlIEFSTSA2NC1iaXQgQXJjaGl0ZWN0dXJlIiwKKyAgICAgQXBwZW5k aXggQSkuICBUbyBxdWFsaWZ5IGZvciBlbWlzc2lvbiB3aXRoIHRoZSBtYW5nbGVkIG5hbWVzIGRl ZmluZWQgaW4KKyAgICAgdGhhdCBkb2N1bWVudCwgYSB2ZWN0b3IgdHlwZSBtdXN0IG5vdCBvbmx5 IGJlIG9mIHRoZSBjb3JyZWN0IG1vZGUgYnV0IGFsc28KKyAgICAgYmUgb2YgdGhlIGNvcnJlY3Qg aW50ZXJuYWwgQWR2U0lNRCB2ZWN0b3IgdHlwZSAoZS5nLiBfX0ludDh4OF90KTsgdGhlc2UKKyAg ICAgdHlwZXMgYXJlIHJlZ2lzdGVyZWQgYnkgYWFyY2g2NF9pbml0X3NpbWRfYnVpbHRpbl90eXBl cyAoKS4gIEluIG90aGVyCisgICAgIHdvcmRzLCB2ZWN0b3IgdHlwZXMgZGVmaW5lZCBpbiBvdGhl ciB3YXlzIGUuZy4gdmlhIHZlY3Rvcl9zaXplIGF0dHJpYnV0ZQorICAgICB3aWxsIGdldCBkZWZh dWx0IG1hbmdsZWQgbmFtZXMuICAqLworICBjb25zdCBjaGFyICptYW5nbGU7CisgIC8qIEludGVy bmFsIHR5cGUuICAqLworICB0cmVlIGl0eXBlOworICAvKiBFbGVtZW50IHR5cGUuICAqLworICB0 cmVlIGVsdHlwZTsKKyAgLyogTWFjaGluZSBtb2RlIHRoZSBpbnRlcm5hbCB0eXBlIG1hcHMgdG8u ICAqLworICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlOworICAvKiBRdWFsaWZpZXJzLiAgKi8KKyAg ZW51bSBhYXJjaDY0X3R5cGVfcXVhbGlmaWVycyBxOworfTsKK2V4dGVybiBhYXJjaDY0X3NpbWRf dHlwZV9pbmZvIGFhcmNoNjRfc2ltZF90eXBlc1tdOworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRp bnMuY2MgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYwppbmRleCAwNGY1 OWZkOWE1NDMwNmQ2NDIyYjAzZTMyZGNlNzliYzAwYWVkNGY4Li4wYjAzOWMwNzVhNWNiMzEyMzM5 NzI5ZDM4OGM5YmUwMDcyZjgwYjkxIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1idWlsdGlucy5jYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlu cy5jYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgInN0cmluZ3Bvb2wuaCIKICNpbmNsdWRl ICJhdHRyaWJzLmgiCiAjaW5jbHVkZSAiZ2ltcGxlLWZvbGQuaCIKKyNpbmNsdWRlICJhYXJjaDY0 LWJ1aWx0aW5zLmgiCiAKICNkZWZpbmUgdjhxaV9VUCAgRV9WOFFJbW9kZQogI2RlZmluZSB2OGRp X1VQICBFX1Y4REltb2RlCkBAIC0xODMsNDcgKzE4NCw4IEBACiAjZGVmaW5lIFNJTURfSU5UUl9R VUFMKHN1ZmZpeCkgUVVBTF8jI3N1ZmZpeAogI2RlZmluZSBTSU1EX0lOVFJfTEVOR1RIX0NIQVIo bGVuZ3RoKSBMRU5HVEhfIyNsZW5ndGgKIAotCiAjZGVmaW5lIFNJTURfTUFYX0JVSUxUSU5fQVJH UyA1CiAKLWVudW0gYWFyY2g2NF90eXBlX3F1YWxpZmllcnMKLXsKLSAgLyogVCBmb28uICAqLwot ICBxdWFsaWZpZXJfbm9uZSA9IDB4MCwKLSAgLyogdW5zaWduZWQgVCBmb28uICAqLwotICBxdWFs aWZpZXJfdW5zaWduZWQgPSAweDEsIC8qIDEgPDwgMCAgKi8KLSAgLyogY29uc3QgVCBmb28uICAq LwotICBxdWFsaWZpZXJfY29uc3QgPSAweDIsIC8qIDEgPDwgMSAgKi8KLSAgLyogVCAqZm9vLiAg Ki8KLSAgcXVhbGlmaWVyX3BvaW50ZXIgPSAweDQsIC8qIDEgPDwgMiAgKi8KLSAgLyogVXNlZCB3 aGVuIGV4cGFuZGluZyBhcmd1bWVudHMgaWYgYW4gb3BlcmFuZCBjb3VsZAotICAgICBiZSBhbiBp bW1lZGlhdGUuICAqLwotICBxdWFsaWZpZXJfaW1tZWRpYXRlID0gMHg4LCAvKiAxIDw8IDMgICov Ci0gIHF1YWxpZmllcl9tYXliZV9pbW1lZGlhdGUgPSAweDEwLCAvKiAxIDw8IDQgICovCi0gIC8q IHZvaWQgZm9vICguLi4pLiAgKi8KLSAgcXVhbGlmaWVyX3ZvaWQgPSAweDIwLCAvKiAxIDw8IDUg ICovCi0gIC8qIDEgPDwgNiBpcyBub3cgdW51c2VkICovCi0gIC8qIFNvbWUgYnVpbHRpbnMgc2hv dWxkIHVzZSB0aGUgVF8qbW9kZSogZW5jb2RlZCBpbiBhIHNpbWRfYnVpbHRpbl9kYXR1bQotICAg ICByYXRoZXIgdGhhbiB1c2luZyB0aGUgdHlwZSBvZiB0aGUgb3BlcmFuZC4gICovCi0gIHF1YWxp Zmllcl9tYXBfbW9kZSA9IDB4ODAsIC8qIDEgPDwgNyAgKi8KLSAgLyogcXVhbGlmaWVyX3BvaW50 ZXIgfCBxdWFsaWZpZXJfbWFwX21vZGUgICovCi0gIHF1YWxpZmllcl9wb2ludGVyX21hcF9tb2Rl ID0gMHg4NCwKLSAgLyogcXVhbGlmaWVyX2NvbnN0IHwgcXVhbGlmaWVyX3BvaW50ZXIgfCBxdWFs aWZpZXJfbWFwX21vZGUgICovCi0gIHF1YWxpZmllcl9jb25zdF9wb2ludGVyX21hcF9tb2RlID0g MHg4NiwKLSAgLyogUG9seW5vbWlhbCB0eXBlcy4gICovCi0gIHF1YWxpZmllcl9wb2x5ID0gMHgx MDAsCi0gIC8qIExhbmUgaW5kaWNlcyAtIG11c3QgYmUgaW4gcmFuZ2UsIGFuZCBmbGlwcGVkIGZv ciBiaWdlbmRpYW4uICAqLwotICBxdWFsaWZpZXJfbGFuZV9pbmRleCA9IDB4MjAwLAotICAvKiBM YW5lIGluZGljZXMgZm9yIHNpbmdsZSBsYW5lIHN0cnVjdHVyZSBsb2FkcyBhbmQgc3RvcmVzLiAg Ki8KLSAgcXVhbGlmaWVyX3N0cnVjdF9sb2FkX3N0b3JlX2xhbmVfaW5kZXggPSAweDQwMCwKLSAg LyogTGFuZSBpbmRpY2VzIHNlbGVjdGVkIGluIHBhaXJzLiAtIG11c3QgYmUgaW4gcmFuZ2UsIGFu ZCBmbGlwcGVkIGZvcgotICAgICBiaWdlbmRpYW4uICAqLwotICBxdWFsaWZpZXJfbGFuZV9wYWly X2luZGV4ID0gMHg4MDAsCi0gIC8qIExhbmUgaW5kaWNlcyBzZWxlY3RlZCBpbiBxdWFkdHVwbGV0 cy4gLSBtdXN0IGJlIGluIHJhbmdlLCBhbmQgZmxpcHBlZCBmb3IKLSAgICAgYmlnZW5kaWFuLiAg Ki8KLSAgcXVhbGlmaWVyX2xhbmVfcXVhZHR1cF9pbmRleCA9IDB4MTAwMCwKLX07Ci0KIC8qIEZs YWdzIHRoYXQgZGVzY3JpYmUgd2hhdCBhIGZ1bmN0aW9uIG1pZ2h0IGRvLiAgKi8KIGNvbnN0IHVu c2lnbmVkIGludCBGTEFHX05PTkUgPSAwVTsKIGNvbnN0IHVuc2lnbmVkIGludCBGTEFHX1JFQURf RlBDUiA9IDFVIDw8IDA7CkBAIC04ODMsNDcgKzg0NSw5IEBAIGNvbnN0IGNoYXIgKmFhcmNoNjRf c2NhbGFyX2J1aWx0aW5fdHlwZXNbXSA9IHsKICAgTlVMTAogfTsKIAotI2RlZmluZSBFTlRSWShF LCBNLCBRLCBHKSBFLAotZW51bSBhYXJjaDY0X3NpbWRfdHlwZQotewotI2luY2x1ZGUgImFhcmNo NjQtc2ltZC1idWlsdGluLXR5cGVzLmRlZiIKLSAgQVJNX05FT05fSF9UWVBFU19MQVNUCi19Owot I3VuZGVmIEVOVFJZCi0KLXN0cnVjdCBHVFkoKCkpIGFhcmNoNjRfc2ltZF90eXBlX2luZm8KLXsK LSAgZW51bSBhYXJjaDY0X3NpbWRfdHlwZSB0eXBlOwotCi0gIC8qIEludGVybmFsIHR5cGUgbmFt ZS4gICovCi0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0KLSAgLyogSW50ZXJuYWwgdHlwZSBuYW1lKG1h bmdsZWQpLiAgVGhlIG1hbmdsZWQgbmFtZXMgY29uZm9ybSB0byB0aGUKLSAgICAgQUFQQ1M2NCAo c2VlICJQcm9jZWR1cmUgQ2FsbCBTdGFuZGFyZCBmb3IgdGhlIEFSTSA2NC1iaXQgQXJjaGl0ZWN0 dXJlIiwKLSAgICAgQXBwZW5kaXggQSkuICBUbyBxdWFsaWZ5IGZvciBlbWlzc2lvbiB3aXRoIHRo ZSBtYW5nbGVkIG5hbWVzIGRlZmluZWQgaW4KLSAgICAgdGhhdCBkb2N1bWVudCwgYSB2ZWN0b3Ig dHlwZSBtdXN0IG5vdCBvbmx5IGJlIG9mIHRoZSBjb3JyZWN0IG1vZGUgYnV0IGFsc28KLSAgICAg YmUgb2YgdGhlIGNvcnJlY3QgaW50ZXJuYWwgQWR2U0lNRCB2ZWN0b3IgdHlwZSAoZS5nLiBfX0lu dDh4OF90KTsgdGhlc2UKLSAgICAgdHlwZXMgYXJlIHJlZ2lzdGVyZWQgYnkgYWFyY2g2NF9pbml0 X3NpbWRfYnVpbHRpbl90eXBlcyAoKS4gIEluIG90aGVyCi0gICAgIHdvcmRzLCB2ZWN0b3IgdHlw ZXMgZGVmaW5lZCBpbiBvdGhlciB3YXlzIGUuZy4gdmlhIHZlY3Rvcl9zaXplIGF0dHJpYnV0ZQot ICAgICB3aWxsIGdldCBkZWZhdWx0IG1hbmdsZWQgbmFtZXMuICAqLwotICBjb25zdCBjaGFyICpt YW5nbGU7Ci0KLSAgLyogSW50ZXJuYWwgdHlwZS4gICovCi0gIHRyZWUgaXR5cGU7Ci0KLSAgLyog RWxlbWVudCB0eXBlLiAgKi8KLSAgdHJlZSBlbHR5cGU7Ci0KLSAgLyogTWFjaGluZSBtb2RlIHRo ZSBpbnRlcm5hbCB0eXBlIG1hcHMgdG8uICAqLwotICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlOwot Ci0gIC8qIFF1YWxpZmllcnMuICAqLwotICBlbnVtIGFhcmNoNjRfdHlwZV9xdWFsaWZpZXJzIHE7 Ci19OwotCiAjZGVmaW5lIEVOVFJZKEUsIE0sIFEsIEcpICBcCiAgIHtFLCAiX18iICNFLCAjRyAi X18iICNFLCBOVUxMX1RSRUUsIE5VTExfVFJFRSwgRV8jI00jI21vZGUsIHF1YWxpZmllcl8jI1F9 LAotc3RhdGljIEdUWSgoKSkgc3RydWN0IGFhcmNoNjRfc2ltZF90eXBlX2luZm8gYWFyY2g2NF9z aW1kX3R5cGVzIFtdID0geworZXh0ZXJuIEdUWSgoKSkgc3RydWN0IGFhcmNoNjRfc2ltZF90eXBl X2luZm8gYWFyY2g2NF9zaW1kX3R5cGVzIFtdID0gewogI2luY2x1ZGUgImFhcmNoNjQtc2ltZC1i dWlsdGluLXR5cGVzLmRlZiIKIH07CiAjdW5kZWYgRU5UUlkKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LWMuY2MgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmNj CmluZGV4IGFiODg0NGY2MDQ5ZGM5NWI5NzY0OGI2NTFiZmNkM2E0Y2NkM2NhMGIuLjU5MWNiYWFk MjRhNDg3NDAyOWViZGRlZGVmMjNmMjJmZjUxOTYyOTUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LWMuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYy5j YwpAQCAtMjk1LDYgKzI5NSw4IEBAIGFhcmNoNjRfcHJhZ21hX2FhcmNoNjQgKGNwcF9yZWFkZXIg KikKICAgICBoYW5kbGVfYXJtX25lb25faCAoKTsKICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAi YXJtX2FjbGUuaCIpID09IDApCiAgICAgaGFuZGxlX2FybV9hY2xlX2ggKCk7CisgIGVsc2UgaWYg KHN0cmNtcCAobmFtZSwgImFybV9uZW9uX3N2ZV9icmlkZ2UuaCIpID09IDApCisgICAgYWFyY2g2 NF9zdmU6OmhhbmRsZV9hcm1fbmVvbl9zdmVfYnJpZGdlX2ggKCk7CiAgIGVsc2UKICAgICBlcnJv ciAoInVua25vd24gJTwjcHJhZ21hIEdDQyBhYXJjaDY0JT4gb3B0aW9uICVxcyIsIG5hbWUpOwog fQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbmVvbi1zdmUtYnJpZGdl LWJ1aWx0aW5zLmRlZiBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LW5lb24tc3ZlLWJyaWRn ZS1idWlsdGlucy5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMzY2YyMzNjOTM4MmIyZjc0MjAzNzkwNTRhNTNm YTg0NmQ0NmM4YwotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LW5lb24tc3ZlLWJyaWRnZS1idWlsdGlucy5kZWYKQEAgLTAsMCArMSwyOCBAQAorLyogQnVpbHRp biBsaXN0cyBmb3IgQUFyY2g2NCBORU9OLVNWRS1CcmlkZ2UKKyAgIENvcHlyaWdodCAoQykgMjAy MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0NDLgorCisgICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBs YXRlciB2ZXJzaW9uLgorCisgICBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgREVGX05FT05fU1ZFX0ZVTkNUSU9O CisjZGVmaW5lIERFRl9ORU9OX1NWRV9GVU5DVElPTihBLCBCLCBDLCBEKQorI2VuZGlmCisKK0RF Rl9ORU9OX1NWRV9GVU5DVElPTiAoc3ZzZXRfbmVvbnEsIHNldF9uZW9ucSwgYWxsX2RhdGEsIG5v bmUpCitERUZfTkVPTl9TVkVfRlVOQ1RJT04gKHN2Z2V0X25lb25xLCBnZXRfbmVvbnEsIGFsbF9k YXRhLCBub25lKQorREVGX05FT05fU1ZFX0ZVTkNUSU9OIChzdmR1cF9uZW9ucSwgZHVwX25lb25x LCBhbGxfZGF0YSwgbm9uZSkKKworI3VuZGVmIERFRl9ORU9OX1NWRV9GVU5DVElPTgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKaW5kZXgg NjBhNTVmNGJjMTk1Njc4NmVhNjg3ZmM3Y2FkN2VjOWU0YTg0ZTFmMC4uNWQwNWNhYzUxYzIzN2Ix MmJkMmIyZjExZWI5MWIwMTQ4MDc1MGRlZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9z LmgKQEAgLTgxNyw2ICs4MTcsNyBAQCBjaGFyICphYXJjaDY0X291dHB1dF9zaW1kX21vdl9pbW1l ZGlhdGUgKHJ0eCwgdW5zaWduZWQsCiAJCQllbnVtIHNpbWRfaW1tZWRpYXRlX2NoZWNrIHcgPSBB QVJDSDY0X0NIRUNLX01PVik7CiBjaGFyICphYXJjaDY0X291dHB1dF9zdmVfbW92X2ltbWVkaWF0 ZSAocnR4KTsKIGNoYXIgKmFhcmNoNjRfb3V0cHV0X3N2ZV9wdHJ1ZXMgKHJ0eCk7Citjb25zdCBj aGFyICphYXJjaDY0X291dHB1dF9zdmVfc2V0X25lb25xIChydHggKiwgbWFjaGluZV9tb2RlKTsK IGJvb2wgYWFyY2g2NF9wYWRfcmVnX3Vwd2FyZCAobWFjaGluZV9tb2RlLCBjb25zdF90cmVlLCBi b29sKTsKIGJvb2wgYWFyY2g2NF9yZWdub19va19mb3JfYmFzZV9wIChpbnQsIGJvb2wpOwogYm9v bCBhYXJjaDY0X3JlZ25vX29rX2Zvcl9pbmRleF9wIChpbnQsIGJvb2wpOwpAQCAtOTkwLDcgKzk5 MSw5IEBAIHZvaWQgaGFuZGxlX2FybV9uZW9uX2ggKHZvaWQpOwogCiBuYW1lc3BhY2UgYWFyY2g2 NF9zdmUgewogICB2b2lkIGluaXRfYnVpbHRpbnMgKCk7CisgIHZvaWQgaW5pdF9uZW9uX3N2ZV9i dWlsdGlucyAoKTsKICAgdm9pZCBoYW5kbGVfYXJtX3N2ZV9oICgpOworICB2b2lkIGhhbmRsZV9h cm1fbmVvbl9zdmVfYnJpZGdlX2ggKCk7CiAgIHRyZWUgYnVpbHRpbl9kZWNsICh1bnNpZ25lZCwg Ym9vbCk7CiAgIGJvb2wgYnVpbHRpbl90eXBlX3AgKGNvbnN0X3RyZWUpOwogICBib29sIGJ1aWx0 aW5fdHlwZV9wIChjb25zdF90cmVlLCB1bnNpZ25lZCBpbnQgKiwgdW5zaWduZWQgaW50ICopOwpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2Uu aCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1iYXNlLmgKaW5kZXgg ZDMwMGUzYTg1ZDAwYjU4YWQ3OTA4NTFhODFkNDNhZjcwOWI2NmJjZS4uZGY3NWU0YzFlY2Y4MWYz ZGRmYTI1NmVkYmNmODYzN2QwOTJmY2ZkZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuaAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC1zdmUtYnVpbHRpbnMtYmFzZS5oCkBAIC0yOTksNiArMjk5LDEyIEBAIG5hbWVzcGFjZSBh YXJjaDY0X3N2ZQogICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCBzdnppcDI7 CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHN2emlwMnE7CiAgIH0KKyAg bmFtZXNwYWNlIG5lb25fc3ZlX2JyaWRnZV9mdW5jdGlvbnMKKyAgeworICAgIGV4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCBzdnNldF9uZW9ucTsKKyAgICBleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3Qgc3ZnZXRfbmVvbnE7CisgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHN2ZHVwX25lb25xOworICB9CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuY2MgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtYmFzZS5jYwppbmRleCA5MDEwZWNjYTZk YTIzYzEwN2Y1ZGVkOWFiM2NmYTY3OGUzMDhkYWY5Li41ZTNiMWZiMTk3NzZhODQ3MTBmMmQ3MzBi YzAyODYxNGVjZDU0MDk1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1z dmUtYnVpbHRpbnMtYmFzZS5jYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUt YnVpbHRpbnMtYmFzZS5jYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgImFhcmNoNjQtc3Zl LWJ1aWx0aW5zLXNoYXBlcy5oIgogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2Uu aCIKICNpbmNsdWRlICJhYXJjaDY0LXN2ZS1idWlsdGlucy1mdW5jdGlvbnMuaCIKKyNpbmNsdWRl ICJhYXJjaDY0LWJ1aWx0aW5zLmgiCiAjaW5jbHVkZSAic3NhLmgiCiAjaW5jbHVkZSAiZ2ltcGxl LWZvbGQuaCIKIApAQCAtMTA2NCw2ICsxMDY1LDEzMSBAQCBwdWJsaWM6CiAgIH0KIH07CiAKK2Ns YXNzIHN2Z2V0X25lb25xX2ltcGwgOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQoreworcHVibGljOgor ICBnaW1wbGUgKgorICBmb2xkIChnaW1wbGVfZm9sZGVyICZmKSBjb25zdCBvdmVycmlkZQorICB7 CisgICAgaWYgKEJZVEVTX0JJR19FTkRJQU4pCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB0cmVl IHJoc190dXBsZSA9IGdpbXBsZV9jYWxsX2FyZyAoZi5jYWxsLCAwKTsKKyAgICB0cmVlIHJoc192 ZWN0b3IgPSBidWlsZDMgKEJJVF9GSUVMRF9SRUYsIFRSRUVfVFlQRSAoZi5saHMpLAorCQkJICAg ICByaHNfdHVwbGUsIGJpdHNpemVfaW50KDEyOCksIGJpdHNpemVfaW50KDApKTsKKyAgICByZXR1 cm4gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZi5saHMsIHJoc192ZWN0b3IpOworICB9CisgIHJ0eAor ICBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZlKSBjb25zdCBvdmVycmlkZQorICB7CisgICAg aWYgKEJZVEVTX0JJR19FTkRJQU4pCisgICAgICB7CisJbWFjaGluZV9tb2RlIG1vZGUgPSBlLnZl Y3Rvcl9tb2RlICgwKTsKKwlpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9hYXJjaDY0X3N2ZV9n ZXRfbmVvbnEgKG1vZGUpOworCXVuc2lnbmVkIGludCBudW5pdHMgPSAxMjggLyBHRVRfTU9ERV9V TklUX0JJVFNJWkUgKG1vZGUpOworCXJ0eCBpbmRpY2VzID0gYWFyY2g2NF9nZW5fc3RlcHBlZF9p bnRfcGFyYWxsZWwKKwkgIChudW5pdHMsIChudW5pdHMgLSAxKSAsIC0xKTsKKworCWUuYWRkX291 dHB1dF9vcGVyYW5kIChpY29kZSk7CisJZS5hZGRfaW5wdXRfb3BlcmFuZCAoaWNvZGUsIGUuYXJn c1swXSk7CisJZS5hZGRfZml4ZWRfb3BlcmFuZCAoaW5kaWNlcyk7CisJcmV0dXJuIGUuZ2VuZXJh dGVfaW5zbiAoaWNvZGUpOworICAgICAgfQorICAgIHJldHVybiBzaW1wbGlmeV9nZW5fc3VicmVn IChlLnZlY3Rvcl9tb2RlICgwKSwgZS5hcmdzWzBdLAorCQkJCUdFVF9NT0RFIChlLmFyZ3NbMF0p LAorCQkJCUlOVFZBTCAoZS5hcmdzWzFdKSAqIEJZVEVTX1BFUl9TVkVfVkVDVE9SKTsKKyAgfQor fTsKKworY2xhc3Mgc3ZzZXRfbmVvbnFfaW1wbCA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCit7Citw dWJsaWM6CisgIHJ0eAorICBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZlKSBjb25zdCBvdmVy cmlkZQorICB7CisgICAgaW5zbl9jb2RlIGljb2RlOworICAgIG1hY2hpbmVfbW9kZSBtb2RlID0g ZS52ZWN0b3JfbW9kZSAoMCk7CisgICAgaWNvZGUgPSBjb2RlX2Zvcl92Y29uZF9tYXNrIChtb2Rl LCBtb2RlKTsKKyAgICBydHhfdmVjdG9yX2J1aWxkZXIgYnVpbGRlciAoVk54MTZCSW1vZGUsIDE2 LCAyKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IDE2OyBpKyspCisgICAgICB7 CisJYnVpbGRlci5xdWlja19wdXNoIChDT05TVDFfUlRYIChCSW1vZGUpKTsKKyAgICAgIH0KKyAg ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IDE2OyBpKyspCisgICAgICB7CisJYnVpbGRl ci5xdWlja19wdXNoIChDT05TVDBfUlRYIChCSW1vZGUpKTsKKyAgICAgIH0KKyAgICBlLmFyZ3Mu cXVpY2tfcHVzaCAoYnVpbGRlci5idWlsZCAoKSk7CisgICAgaWYgKEJZVEVTX0JJR19FTkRJQU4p CisgICAgICB7CisJcmV0dXJuIGUudXNlX2V4YWN0X2luc24gKGNvZGVfZm9yX2FhcmNoNjRfc3Zl X3NldF9uZW9ucSAobW9kZSkpOworICAgICAgfQorICAgIGUuYXJnc1sxXSA9IGxvd3BhcnRfc3Vi cmVnIChtb2RlLCBlLmFyZ3NbMV0sIEdFVF9NT0RFIChlLmFyZ3NbMV0pKTsKKyAgICBlLmFkZF9v dXRwdXRfb3BlcmFuZCAoaWNvZGUpOworICAgIGUuYWRkX2lucHV0X29wZXJhbmQgKGljb2RlLCBl LmFyZ3NbMV0pOworICAgIGUuYWRkX2lucHV0X29wZXJhbmQgKGljb2RlLCBlLmFyZ3NbMF0pOwor ICAgIGUuYWRkX2lucHV0X29wZXJhbmQgKGljb2RlLCBlLmFyZ3NbMl0pOworICAgIHJldHVybiBl LmdlbmVyYXRlX2luc24gKGljb2RlKTsKKyAgfQorfTsKKworY2xhc3Mgc3ZkdXBfbmVvbnFfaW1w bCA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCit7CitwdWJsaWM6CisgIGdpbXBsZSAqCisgIGZvbGQg KGdpbXBsZV9mb2xkZXIgJmYpIGNvbnN0IG92ZXJyaWRlCisgIHsKKyAgICBpZiAoQllURVNfQklH X0VORElBTikKKyAgICAgIHsKKwlyZXR1cm4gTlVMTDsKKyAgICAgIH0KKyAgICB0cmVlIHJoc192 ZWN0b3IgPSBnaW1wbGVfY2FsbF9hcmcgKGYuY2FsbCwgMCk7CisgICAgdW5zaWduZWQgaW50IG5h cmdzID0gZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKGYuY2FsbCk7CisgICAgdW5zaWduZWQgSE9TVF9X SURFX0lOVCBORU9ObmVsdHMKKyAgICAgID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKFRSRUVfVFlQ RSAocmhzX3ZlY3RvcikpLnRvX2NvbnN0YW50ICgpOworICAgIHBvbHlfdWludDY0IFNWRW5lbHRz OworICAgIFNWRW5lbHRzID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKFRSRUVfVFlQRSAoZi5saHMp KTsKKyAgICB2ZWNfcGVybV9idWlsZGVyIGJ1aWxkZXIgKFNWRW5lbHRzLCBORU9ObmVsdHMsIDEp OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTkVPTm5lbHRzOyBpKyspCisgICAg ICB7CisJYnVpbGRlci5xdWlja19wdXNoIChpKTsKKyAgICAgIH0KKyAgICB2ZWNfcGVybV9pbmRp Y2VzIGluZGljZXMgKGJ1aWxkZXIsIDEsIE5FT05uZWx0cyk7CisgICAgdHJlZSBwZXJtX3R5cGUg PSBidWlsZF92ZWN0b3JfdHlwZSAoc3NpemV0eXBlLCBTVkVuZWx0cyk7CisgICAgcmV0dXJuIGdp bXBsZV9idWlsZF9hc3NpZ24gKGYubGhzLCBWRUNfUEVSTV9FWFBSLAorCQkJCXJoc192ZWN0b3Is CisJCQkJcmhzX3ZlY3RvciwKKwkJCQl2ZWNfcGVybV9pbmRpY2VzX3RvX3RyZWUgKHBlcm1fdHlw ZSwgaW5kaWNlcykpOworICB9CisgIHJ0eAorICBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZl KSBjb25zdCBvdmVycmlkZQorICB7CisgICAgaW5zbl9jb2RlIGljb2RlOworICAgIG1hY2hpbmVf bW9kZSBtb2RlID0gZS52ZWN0b3JfbW9kZSAoMCk7CisgICAgaWYgKEJZVEVTX0JJR19FTkRJQU4p CisgICAgICB7CisJaWNvZGUgPSBjb2RlX2Zvcl9hYXJjaDY0X3N2ZV9kdXBfbmVvbnEgKG1vZGUp OworCXVuc2lnbmVkIGludCBudW5pdHMgPSAxMjggLyBHRVRfTU9ERV9VTklUX0JJVFNJWkUgKG1v ZGUpOworCXJ0eCBpbmRpY2VzID0gYWFyY2g2NF9nZW5fc3RlcHBlZF9pbnRfcGFyYWxsZWwKKwkg IChudW5pdHMsIChudW5pdHMgLSAxKSAsIC0xKTsKKworCWUuYWRkX291dHB1dF9vcGVyYW5kIChp Y29kZSk7CisJZS5hZGRfaW5wdXRfb3BlcmFuZCAoaWNvZGUsIGUuYXJnc1swXSk7CisJZS5hZGRf Zml4ZWRfb3BlcmFuZCAoaW5kaWNlcyk7CisJcmV0dXJuIGUuZ2VuZXJhdGVfaW5zbiAoaWNvZGUp OworICAgICAgfQorICAgIGlmICh2YWxpZF9mb3JfY29uc3RfdmVjdG9yX3AgKEdFVF9NT0RFX0lO TkVSIChtb2RlKSwgZS5hcmdzLmxhc3QgKCkpKQorICAgICAgLyogRHVwbGljYXRlIHRoZSBjb25z dGFudCB0byBmaWxsIGEgdmVjdG9yLiAgVGhlIHBhdHRlcm4gb3B0aW1pemVzCisJIHZhcmlvdXMg Y2FzZXMgaW52b2x2aW5nIGNvbnN0YW50IG9wZXJhbmRzLCBmYWxsaW5nIGJhY2sgdG8gU0VMCisJ IGlmIG5lY2Vzc2FyeS4gICovCisgICAgICBpY29kZSA9IGNvZGVfZm9yX3Zjb25kX21hc2sgKG1v ZGUsIG1vZGUpOworICAgIGVsc2UKKyAgICAgIC8qIFVzZSB0aGUgcGF0dGVybiBmb3Igc2VsZWN0 aW5nIGJldHdlZW4gYSBkdXBsaWNhdGVkIHNjYWxhcgorCSB2YXJpYWJsZSBhbmQgYSB2ZWN0b3Ig ZmFsbGJhY2suICAqLworICAgICAgaWNvZGUgPSBjb2RlX2Zvcl9hYXJjaDY0X3NlbF9kdXAgKG1v ZGUpOworICAgIHJldHVybiBlLnVzZV92Y29uZF9tYXNrX2luc24gKGljb2RlKTsKKyAgfQorfTsK KwogY2xhc3Mgc3ZpbmRleF9pbXBsIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKIHsKIHB1YmxpYzoK QEAgLTMwMjgsNSArMzE1NCw4IEBAIEZVTkNUSU9OIChzdnppcDFxLCB1bnNwZWNfYmFzZWRfZnVu Y3Rpb24sIChVTlNQRUNfWklQMVEsIFVOU1BFQ19aSVAxUSwKIEZVTkNUSU9OIChzdnppcDIsIHN2 emlwX2ltcGwsICgxKSkKIEZVTkNUSU9OIChzdnppcDJxLCB1bnNwZWNfYmFzZWRfZnVuY3Rpb24s IChVTlNQRUNfWklQMlEsIFVOU1BFQ19aSVAyUSwKIAkJCQkJICAgVU5TUEVDX1pJUDJRKSkKK05F T05fU1ZFX0JSSURHRV9GVU5DVElPTiAoc3ZnZXRfbmVvbnEsIHN2Z2V0X25lb25xX2ltcGwsKQor TkVPTl9TVkVfQlJJREdFX0ZVTkNUSU9OIChzdnNldF9uZW9ucSwgc3ZzZXRfbmVvbnFfaW1wbCwp CitORU9OX1NWRV9CUklER0VfRlVOQ1RJT04gKHN2ZHVwX25lb25xLCBzdmR1cF9uZW9ucV9pbXBs LCkKIAogfSAvKiBlbmQgbmFtZXNwYWNlIGFhcmNoNjRfc3ZlICovCmRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtZnVuY3Rpb25zLmggYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMtZnVuY3Rpb25zLmgKaW5kZXggMjcyOTg3 N2Q5MTQ0MTRlZmYzMzE4MmUwM2FiMWRmYzk0YTM1MTVmYS4uYmZiN2ZlYTY3NGE5MDVhMmViOTlm MmJhYzdjYmNiNzJhZjY4MWI1MiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNo NjQtc3ZlLWJ1aWx0aW5zLWZ1bmN0aW9ucy5oCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0LXN2ZS1idWlsdGlucy1mdW5jdGlvbnMuaApAQCAtNjIyLDQgKzYyMiw4IEBAIHB1YmxpYzoK ICAgbmFtZXNwYWNlIHsgc3RhdGljIENPTlNURVhQUiBjb25zdCBDTEFTUyBOQU1FIyNfb2JqIEFS R1M7IH0gXAogICBuYW1lc3BhY2UgZnVuY3Rpb25zIHsgY29uc3QgZnVuY3Rpb25fYmFzZSAqY29u c3QgTkFNRSA9ICZOQU1FIyNfb2JqOyB9CiAKKyNkZWZpbmUgTkVPTl9TVkVfQlJJREdFX0ZVTkNU SU9OKE5BTUUsIENMQVNTLCBBUkdTKSBcCisgIG5hbWVzcGFjZSB7IHN0YXRpYyBDT05TVEVYUFIg Y29uc3QgQ0xBU1MgTkFNRSMjX29iaiBBUkdTOyB9IFwKKyAgbmFtZXNwYWNlIG5lb25fc3ZlX2Jy aWRnZV9mdW5jdGlvbnMgeyBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCBOQU1FID0gJk5BTUUj I19vYmo7IH0KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2 NC1zdmUtYnVpbHRpbnMtc2hhcGVzLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUt YnVpbHRpbnMtc2hhcGVzLmgKaW5kZXggNzQ4M2MxZDA0YjhlNDYzZTYwN2U4ZTY1YWE5NDIzMzQ2 MGY3NzY0OC4uNWFmZjIwZDFkMjFhZmRkYjkzNGJlNGQ1YTEwMzA0OWIwYjZjNDBlYSAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNoYXBlcy5oCisr KyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1zaGFwZXMuaApAQCAt MTA1LDkgKzEwNSwxMSBAQCBuYW1lc3BhY2UgYWFyY2g2NF9zdmUKICAgICBleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGNvdW50X3ZlY3RvcjsKICAgICBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IGNyZWF0ZTsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hh cGUgKmNvbnN0IGR1cHE7CisgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBk dXBfbmVvbnE7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBleHQ7CiAg ICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBmb2xkX2xlZnQ7CiAgICAgZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBnZXQ7CisgICAgZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX3NoYXBlICpjb25zdCBnZXRfbmVvbnE7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCBpbmNfZGVjOwogICAgIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAq Y29uc3QgaW5jX2RlY19wYXQ7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25z dCBpbmNfZGVjX3ByZWQ7CkBAIC0xMzUsNiArMTM3LDcgQEAgbmFtZXNwYWNlIGFhcmNoNjRfc3Zl CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCByZWR1Y3Rpb25fd2lkZTsK ICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHNldDsKICAgICBleHRlcm4g Y29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHNldGZmcjsKKyAgICBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IHNldF9uZW9ucTsKICAgICBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IHNoaWZ0X2xlZnRfaW1tX2xvbmc7CiAgICAgZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX3NoYXBlICpjb25zdCBzaGlmdF9sZWZ0X2ltbV90b191aW50OwogICAgIGV4dGVybiBjb25z dCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2hpZnRfcmlnaHRfaW1tOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLXNoYXBlcy5jYyBiL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy1zaGFwZXMuY2MKaW5kZXggYWY4MTZjNGM5 ZTcwNWQ5Y2M0YmNlNWNjNTA0ODFjYjI3ZTZhMDNhNy4uNGIwYTg0ZmUwY2I1YjVmNGJjNmI3ZGQw MTJkZTBiYzc1ZWU0MzI2YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c3ZlLWJ1aWx0aW5zLXNoYXBlcy5jYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1z dmUtYnVpbHRpbnMtc2hhcGVzLmNjCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAib3B0YWJz LmgiCiAjaW5jbHVkZSAiYWFyY2g2NC1zdmUtYnVpbHRpbnMuaCIKICNpbmNsdWRlICJhYXJjaDY0 LXN2ZS1idWlsdGlucy1zaGFwZXMuaCIKKyNpbmNsdWRlICJhYXJjaDY0LWJ1aWx0aW5zLmgiCiAK IC8qIEluIHRoZSBjb21tZW50cyBiZWxvdywgX3QwIHJlcHJlc2VudHMgdGhlIGZpcnN0IHR5cGUg c3VmZml4IGFuZCBfdDEKICAgIHJlcHJlc2VudHMgdGhlIHNlY29uZC4gIFNxdWFyZSBicmFja2V0 cyBlbmNsb3NlIGNoYXJhY3RlcnMgdGhhdCBhcmUKQEAgLTE1OCw2ICsxNTksOCBAQCBwYXJzZV9l bGVtZW50X3R5cGUgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICZpbnN0YW5jZSwgY29uc3QgY2hh ciAqJmZvcm1hdCkKICAgIHM8ZWx0PiAgLSBhIHNjYWxhciB0eXBlIHdpdGggdGhlIGdpdmVuIGVs ZW1lbnQgc3VmZml4CiAgICB0PGVsdD4gIC0gYSB2ZWN0b3Igb3IgdHVwbGUgdHlwZSB3aXRoIGdp dmVuIGVsZW1lbnQgc3VmZml4IFsqMV0KICAgIHY8ZWx0PiAgLSBhIHZlY3RvciB3aXRoIHRoZSBn aXZlbiBlbGVtZW50IHN1ZmZpeAorICAgRDxlbHQ+ICAtIGEgNjQgYml0IG5lb24gdmVjdG9yCisg ICBRPGVsdD4gIC0gYSAxMjggYml0IG5lb24gdmVjdG9yCiAKICAgIHdoZXJlIDxlbHQ+IGhhcyB0 aGUgZm9ybWF0IGRlc2NyaWJlZCBhYm92ZSBwYXJzZV9lbGVtZW50X3R5cGUKIApAQCAtMjI0LDYg KzIyNywyMCBAQCBwYXJzZV90eXBlIChjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2Us IGNvbnN0IGNoYXIgKiZmb3JtYXQpCiAgICAgICByZXR1cm4gYWNsZV92ZWN0b3JfdHlwZXNbMF1b dHlwZV9zdWZmaXhlc1tzdWZmaXhdLnZlY3Rvcl90eXBlXTsKICAgICB9CiAKKyAgaWYgKGNoID09 ICdEJykKKyAgICB7CisgICAgICB0eXBlX3N1ZmZpeF9pbmRleCBzdWZmaXggPSBwYXJzZV9lbGVt ZW50X3R5cGUgKGluc3RhbmNlLCBmb3JtYXQpOworICAgICAgaW50IG5lb25faW5kZXggPSB0eXBl X3N1ZmZpeGVzW3N1ZmZpeF0ubmVvbjY0X3R5cGU7CisgICAgICByZXR1cm4gYWFyY2g2NF9zaW1k X3R5cGVzW25lb25faW5kZXhdLml0eXBlOworICAgIH0KKworICBpZiAoY2ggPT0gJ1EnKQorICAg IHsKKyAgICAgIHR5cGVfc3VmZml4X2luZGV4IHN1ZmZpeCA9IHBhcnNlX2VsZW1lbnRfdHlwZSAo aW5zdGFuY2UsIGZvcm1hdCk7CisgICAgICBpbnQgbmVvbl9pbmRleCA9IHR5cGVfc3VmZml4ZXNb c3VmZml4XS5uZW9uMTI4X3R5cGU7CisgICAgICByZXR1cm4gYWFyY2g2NF9zaW1kX3R5cGVzW25l b25faW5kZXhdLml0eXBlOworICAgIH0KKwogICBnY2NfdW5yZWFjaGFibGUgKCk7CiB9CiAKQEAg LTE5MTcsNiArMTkzNCw2NyBAQCBzdHJ1Y3QgZ2V0X2RlZiA6IHB1YmxpYyBvdmVybG9hZGVkX2Jh c2U8MD4KIH07CiBTSEFQRSAoZ2V0KQogCisvKiA8dDA+eE5fdCBzdmZvb1tfdDBdKHN2PHQwPl90 KS4gICovCitzdHJ1Y3QgZ2V0X25lb25xX2RlZiA6IHB1YmxpYyBvdmVybG9hZGVkX2Jhc2U8MD4K K3sKKyAgdm9pZAorICBidWlsZCAoZnVuY3Rpb25fYnVpbGRlciAmYiwgY29uc3QgZnVuY3Rpb25f Z3JvdXBfaW5mbyAmZ3JvdXApIGNvbnN0IG92ZXJyaWRlCisgIHsKKyAgICBiLmFkZF9vdmVybG9h ZGVkX2Z1bmN0aW9ucyAoZ3JvdXAsIE1PREVfbm9uZSk7CisgICAgYnVpbGRfYWxsIChiLCAiUTAs djAiLCBncm91cCwgTU9ERV9ub25lKTsKKyAgfQorICB0cmVlCisgIHJlc29sdmUgKGZ1bmN0aW9u X3Jlc29sdmVyICZyKSBjb25zdCBvdmVycmlkZQorICB7CisgICAgcmV0dXJuIHIucmVzb2x2ZV91 bmFyeSAoKTsKKyAgfQorfTsKK1NIQVBFIChnZXRfbmVvbnEpCisKKy8qIHN2PHQwPl90IHN2Zm9v W190MF0oc3Y8dDA+X3QsIDx0MD54Tl90KS4gICovCitzdHJ1Y3Qgc2V0X25lb25xX2RlZiA6IHB1 YmxpYyBvdmVybG9hZGVkX2Jhc2U8MD4KK3sKKyAgdm9pZAorICBidWlsZCAoZnVuY3Rpb25fYnVp bGRlciAmYiwgY29uc3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyAmZ3JvdXApIGNvbnN0IG92ZXJyaWRl CisgIHsKKyAgICBiLmFkZF9vdmVybG9hZGVkX2Z1bmN0aW9ucyAoZ3JvdXAsIE1PREVfbm9uZSk7 CisgICAgYnVpbGRfYWxsIChiLCAidjAsdjAsUTAiLCBncm91cCwgTU9ERV9ub25lKTsKKyAgfQor ICB0cmVlCisgIHJlc29sdmUgKGZ1bmN0aW9uX3Jlc29sdmVyICZyKSBjb25zdCBvdmVycmlkZQor ICB7CisgICAgdW5zaWduZWQgaW50IGksIG5hcmdzOworICAgIHR5cGVfc3VmZml4X2luZGV4IHR5 cGU7CisgICAgaWYgKCFyLmNoZWNrX2dwX2FyZ3VtZW50ICgyLCBpLCBuYXJncykKKwl8fCAodHlw ZSA9IHIuaW5mZXJfbmVvbjEyOF92ZWN0b3JfdHlwZSAoaSArIDEpKSA9PSBOVU1fVFlQRV9TVUZG SVhFUykKKyAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisgICAgcmV0dXJuIHIucmVzb2x2 ZV90byAoci5tb2RlX3N1ZmZpeF9pZCwgdHlwZSk7CisgIH0KK307CitTSEFQRSAoc2V0X25lb25x KQorCisvKiBzdjx0MD5fdCBzdmZvb1tfdDBdKDx0MD54Tl90KS4gICovCitzdHJ1Y3QgZHVwX25l b25xX2RlZiA6IHB1YmxpYyBvdmVybG9hZGVkX2Jhc2U8MD4KK3sKKyAgdm9pZAorICBidWlsZCAo ZnVuY3Rpb25fYnVpbGRlciAmYiwgY29uc3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyAmZ3JvdXApIGNv bnN0IG92ZXJyaWRlCisgIHsKKyAgICBiLmFkZF9vdmVybG9hZGVkX2Z1bmN0aW9ucyAoZ3JvdXAs IE1PREVfbm9uZSk7CisgICAgYnVpbGRfYWxsIChiLCAidjAsUTAiLCBncm91cCwgTU9ERV9ub25l KTsKKyAgfQorICB0cmVlCisgIHJlc29sdmUgKGZ1bmN0aW9uX3Jlc29sdmVyICZyKSBjb25zdCBv dmVycmlkZQorICB7CisgICAgdW5zaWduZWQgaW50IGksIG5hcmdzOworICAgIHR5cGVfc3VmZml4 X2luZGV4IHR5cGU7CisgICAgaWYgKCFyLmNoZWNrX2dwX2FyZ3VtZW50ICgxLCBpLCBuYXJncykK Kwl8fCAodHlwZSA9IHIuaW5mZXJfbmVvbjEyOF92ZWN0b3JfdHlwZSAoaSkpID09IE5VTV9UWVBF X1NVRkZJWEVTKQorICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKyAgICByZXR1cm4gci5y ZXNvbHZlX3RvIChyLm1vZGVfc3VmZml4X2lkLCB0eXBlKTsKKyAgfQorfTsKK1NIQVBFIChkdXBf bmVvbnEpCisKIC8qIHN2PHQwPl90IHN2Zm9vW190MF0oc3Y8dDA+X3QsIHVpbnQ2NF90KQogICAg PHQwPl90IHN2Zm9vW19uX3QwXSg8dDA+X3QsIHVpbnQ2NF90KQogCmRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMuY2MgYi9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC1zdmUtYnVpbHRpbnMuY2MKaW5kZXggMTYxYTE0ZWRkZTdjOWZiMWIxM2IxNDZj ZjUwNDYzZTJkNzhkYjI2NC4uNmZmNWM2NWUyNjEwZGU4MzA5YTU3YjAwNGUxNmQ0NjAyZWE3Njk5 OSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmNj CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5jYwpAQCAtNTIs NiArNTIsNyBAQAogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuaCIKICNpbmNs dWRlICJhYXJjaDY0LXN2ZS1idWlsdGlucy1zdmUyLmgiCiAjaW5jbHVkZSAiYWFyY2g2NC1zdmUt YnVpbHRpbnMtc2hhcGVzLmgiCisjaW5jbHVkZSAiYWFyY2g2NC1idWlsdGlucy5oIgogCiBuYW1l c3BhY2UgYWFyY2g2NF9zdmUgewogCkBAIC0xMjcsNyArMTI4LDggQEAgQ09OU1RFWFBSIGNvbnN0 IG1vZGVfc3VmZml4X2luZm8gbW9kZV9zdWZmaXhlc1tdID0gewogCiAvKiBTdGF0aWMgaW5mb3Jt YXRpb24gYWJvdXQgZWFjaCB0eXBlX3N1ZmZpeF9pbmRleC4gICovCiBDT05TVEVYUFIgY29uc3Qg dHlwZV9zdWZmaXhfaW5mbyB0eXBlX3N1ZmZpeGVzW05VTV9UWVBFX1NVRkZJWEVTICsgMV0gPSB7 Ci0jZGVmaW5lIERFRl9TVkVfVFlQRV9TVUZGSVgoTkFNRSwgQUNMRV9UWVBFLCBDTEFTUywgQklU UywgTU9ERSkgXAorI2RlZmluZSBERUZfU1ZFX05FT05fVFlQRV9TVUZGSVgoTkFNRSwgQUNMRV9U WVBFLCBDTEFTUywgQklUUywgTU9ERSwgXAorCQkJCSBORU9ONjQsIE5FT04xMjgpIFwKICAgeyAi XyIgI05BTUUsIFwKICAgICBWRUNUT1JfVFlQRV8jI0FDTEVfVFlQRSwgXAogICAgIFRZUEVfIyND TEFTUywgXApAQCAtMTM4LDEwICsxNDAsMTUgQEAgQ09OU1RFWFBSIGNvbnN0IHR5cGVfc3VmZml4 X2luZm8gdHlwZV9zdWZmaXhlc1tOVU1fVFlQRV9TVUZGSVhFUyArIDFdID0gewogICAgIFRZUEVf IyNDTEFTUyA9PSBUWVBFX2Zsb2F0LCBcCiAgICAgVFlQRV8jI0NMQVNTID09IFRZUEVfYm9vbCwg XAogICAgIDAsIFwKLSAgICBNT0RFIH0sCisgICAgTU9ERSwgXAorICAgIE5FT042NCwgXAorICAg IE5FT04xMjggfSwKKyNkZWZpbmUgREVGX1NWRV9UWVBFX1NVRkZJWChOQU1FLCBBQ0xFX1RZUEUs IENMQVNTLCBCSVRTLCBNT0RFKSBcCisgIERFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoTkFNRSwg QUNMRV9UWVBFLCBDTEFTUywgQklUUywgTU9ERSwgXAorCQkJICAgIEFSTV9ORU9OX0hfVFlQRVNf TEFTVCwgQVJNX05FT05fSF9UWVBFU19MQVNUKQogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0 aW5zLmRlZiIKICAgeyAiIiwgTlVNX1ZFQ1RPUl9UWVBFUywgVFlQRV9ib29sLCAwLCAwLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLSAgICAwLCBWT0lEbW9kZSB9CisgICAgMCwgVk9JRG1v ZGUsIEFSTV9ORU9OX0hfVFlQRVNfTEFTVCwgQVJNX05FT05fSF9UWVBFU19MQVNUIH0KIH07CiAK IC8qIERlZmluZSBhIFRZUEVTXzxjb21iaW5hdGlvbj4gbWFjcm8gZm9yIGVhY2ggY29tYmluYXRp b24gb2YgdHlwZQpAQCAtNTI5LDYgKzUzNiwxMyBAQCBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IGZ1 bmN0aW9uX2dyb3VwX2luZm8gZnVuY3Rpb25fZ3JvdXBzW10gPSB7CiAjaW5jbHVkZSAiYWFyY2g2 NC1zdmUtYnVpbHRpbnMuZGVmIgogfTsKIAorLyogQSBsaXN0IG9mIGFsbCBORU9OLVNWRS1Ccmlk Z2UgQUNMRSBmdW5jdGlvbnMuICAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBmdW5jdGlvbl9n cm91cF9pbmZvIG5lb25fc3ZlX2Z1bmN0aW9uX2dyb3Vwc1tdID0geworI2RlZmluZSBERUZfTkVP Tl9TVkVfRlVOQ1RJT04oTkFNRSwgU0hBUEUsIFRZUEVTLCBQUkVEUykgXAorICB7ICNOQU1FLCAm bmVvbl9zdmVfYnJpZGdlX2Z1bmN0aW9uczo6TkFNRSwgJnNoYXBlczo6U0hBUEUsIHR5cGVzXyMj VFlQRVMsIHByZWRzXyMjUFJFRFMgfSwKKyNpbmNsdWRlICJhYXJjaDY0LW5lb24tc3ZlLWJyaWRn ZS1idWlsdGlucy5kZWYiCit9OworCiAvKiBUaGUgc2NhbGFyIHR5cGUgYXNzb2NpYXRlZCB3aXRo IGVhY2ggdmVjdG9yIHR5cGUuICAqLwogZXh0ZXJuIEdUWSgoKSkgdHJlZSBzY2FsYXJfdHlwZXNb TlVNX1ZFQ1RPUl9UWVBFU107CiB0cmVlIHNjYWxhcl90eXBlc1tOVU1fVkVDVE9SX1RZUEVTXTsK QEAgLTE0MDMsNiArMTQxNywzMiBAQCBmdW5jdGlvbl9yZXNvbHZlcjo6aW5mZXJfaW50ZWdlcl92 ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50IGFyZ25vKQogICByZXR1cm4gdHlwZTsKIH0KIAordHlw ZV9zdWZmaXhfaW5kZXgKK2Z1bmN0aW9uX3Jlc29sdmVyOjppbmZlcl9uZW9uMTI4X3ZlY3Rvcl90 eXBlICh1bnNpZ25lZCBpbnQgYXJnbm8pCit7CisgIHRyZWUgYWN0dWFsID0gZ2V0X2FyZ3VtZW50 X3R5cGUgKGFyZ25vKTsKKyAgaWYgKGFjdHVhbCA9PSBlcnJvcl9tYXJrX25vZGUpCisgICAgcmV0 dXJuIE5VTV9UWVBFX1NVRkZJWEVTOworCisgIGZvciAodW5zaWduZWQgaW50IHN1ZmZpeF9pID0g MDsgc3VmZml4X2kgPCBOVU1fVFlQRV9TVUZGSVhFUzsgKytzdWZmaXhfaSkKKyAgICB7CisgICAg ICBpbnQgbmVvbl9pbmRleCA9IHR5cGVfc3VmZml4ZXNbc3VmZml4X2ldLm5lb24xMjhfdHlwZTsK KyAgICAgIGlmIChuZW9uX2luZGV4ICE9IEFSTV9ORU9OX0hfVFlQRVNfTEFTVCkKKwl7CisJICB0 cmVlIHR5cGUgPSBhYXJjaDY0X3NpbWRfdHlwZXNbbmVvbl9pbmRleF0uaXR5cGU7CisJICBpZiAo dHlwZSAmJiBtYXRjaGVzX3R5cGVfcCAodHlwZSwgYWN0dWFsKSkKKwkgICAgeworCSAgICAgIHJl dHVybiB0eXBlX3N1ZmZpeF9pbmRleCAoc3VmZml4X2kpOworCSAgICB9CisJfQorICAgIH0KKwor ICBlcnJvcl9hdCAobG9jYXRpb24sICJwYXNzaW5nICVxVCB0byBhcmd1bWVudCAlZCBvZiAlcUUs IHdoaWNoIgorCSAgICAiIGV4cGVjdHMgYSAxMjggYml0IE5FT04gdmVjdG9yIHR5cGUiLCBhY3R1 YWwsIGFyZ25vICsgMSwgZm5kZWNsKTsKKyAgcmV0dXJuIE5VTV9UWVBFX1NVRkZJWEVTOworfQor CisKIC8qIExpa2UgaW5mZXJfdmVjdG9yX3R5cGUsIGJ1dCBhbHNvIHJlcXVpcmUgdGhlIHR5cGUg dG8gYmUgYW4gdW5zaWduZWQKICAgIGludGVnZXIuICAqLwogdHlwZV9zdWZmaXhfaW5kZXgKQEAg LTM0MTAsNiArMzQ1MCwxMyBAQCBpbml0X2J1aWx0aW5zICgpCiAgICAgaGFuZGxlX2FybV9zdmVf aCAoKTsKIH0KIAordm9pZAoraW5pdF9uZW9uX3N2ZV9idWlsdGlucyAoKQoreworICBpZiAoaW5f bHRvX3ApCisgICAgaGFuZGxlX2FybV9uZW9uX3N2ZV9icmlkZ2VfaCAoKTsKK30KKwogLyogUmVn aXN0ZXIgdmVjdG9yIHR5cGUgVFlQRSB1bmRlciBpdHMgYXJtX3N2ZS5oIG5hbWUuICAqLwogc3Rh dGljIHZvaWQKIHJlZ2lzdGVyX3ZlY3Rvcl90eXBlICh2ZWN0b3JfdHlwZV9pbmRleCB0eXBlKQpA QCAtMzU2MCw2ICszNjA3LDE2IEBAIGhhbmRsZV9hcm1fc3ZlX2ggKCkKICAgICBidWlsZGVyLnJl Z2lzdGVyX2Z1bmN0aW9uX2dyb3VwIChmdW5jdGlvbl9ncm91cHNbaV0pOwogfQogCisvKiBJbXBs ZW1lbnQgI3ByYWdtYSBHQ0MgYWFyY2g2NCAiYXJtX25lb25fc3ZlX2JyaWRnZS5oIi4gICovCit2 b2lkCitoYW5kbGVfYXJtX25lb25fc3ZlX2JyaWRnZV9oICgpCit7CisgIC8qIERlZmluZSB0aGUg ZnVuY3Rpb25zLiAgKi8KKyAgZnVuY3Rpb25fYnVpbGRlciBidWlsZGVyOworICBmb3IgKHVuc2ln bmVkIGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUgKG5lb25fc3ZlX2Z1bmN0aW9uX2dyb3Vwcyk7 ICsraSkKKyAgICBidWlsZGVyLnJlZ2lzdGVyX2Z1bmN0aW9uX2dyb3VwIChuZW9uX3N2ZV9mdW5j dGlvbl9ncm91cHNbaV0pOworfQorCiAvKiBSZXR1cm4gdGhlIGZ1bmN0aW9uIGRlY2wgd2l0aCBT VkUgZnVuY3Rpb24gc3ViY29kZSBDT0RFLCBvciBlcnJvcl9tYXJrX25vZGUKICAgIGlmIG5vIHN1 Y2ggZnVuY3Rpb24gZXhpc3RzLiAgKi8KIHRyZWUKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5kZWYgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2 NC1zdmUtYnVpbHRpbnMuZGVmCmluZGV4IDUzNGY2ZTY5ZDcyMzQyZmRjZmNjMDBiZDMzMDU4NWRi MWVhZTMyZTEuLmU4YjRhOTE5ZTFiYjdhMmQ1ZDMyMzllNmQzMDNjOWVlNGU3M2Q1NGYgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5kZWYKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmRlZgpAQCAtMjksNiArMjks MTEgQEAKICNkZWZpbmUgREVGX1NWRV9UWVBFX1NVRkZJWChBLCBCLCBDLCBELCBFKQogI2VuZGlm CiAKKyNpZm5kZWYgREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYCisjZGVmaW5lIERFRl9TVkVfTkVP Tl9UWVBFX1NVRkZJWChBLCBCLCBDLCBELCBFLCBGLCBHKSBcCisgIERFRl9TVkVfVFlQRV9TVUZG SVgoQSwgQiwgQywgRCwgRSkKKyNlbmRpZgorCiAjaWZuZGVmIERFRl9TVkVfRlVOQ1RJT04KICNk ZWZpbmUgREVGX1NWRV9GVU5DVElPTihBLCBCLCBDLCBEKQogI2VuZGlmCkBAIC04MiwyMyArODcs MzYgQEAgREVGX1NWRV9UWVBFX1NVRkZJWCAoYjgsIHN2Ym9vbF90LCBib29sLCA4LCBWTngxNkJJ bW9kZSkKIERFRl9TVkVfVFlQRV9TVUZGSVggKGIxNiwgc3Zib29sX3QsIGJvb2wsIDE2LCBWTng4 Qkltb2RlKQogREVGX1NWRV9UWVBFX1NVRkZJWCAoYjMyLCBzdmJvb2xfdCwgYm9vbCwgMzIsIFZO eDRCSW1vZGUpCiBERUZfU1ZFX1RZUEVfU1VGRklYIChiNjQsIHN2Ym9vbF90LCBib29sLCA2NCwg Vk54MkJJbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGJmMTYsIHN2YmZsb2F0MTZfdCwgYmZs b2F0LCAxNiwgVk54OEJGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGYxNiwgc3ZmbG9hdDE2 X3QsIGZsb2F0LCAxNiwgVk54OEhGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGYzMiwgc3Zm bG9hdDMyX3QsIGZsb2F0LCAzMiwgVk54NFNGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKGY2 NCwgc3ZmbG9hdDY0X3QsIGZsb2F0LCA2NCwgVk54MkRGbW9kZSkKLURFRl9TVkVfVFlQRV9TVUZG SVggKHM4LCBzdmludDhfdCwgc2lnbmVkLCA4LCBWTngxNlFJbW9kZSkKLURFRl9TVkVfVFlQRV9T VUZGSVggKHMxNiwgc3ZpbnQxNl90LCBzaWduZWQsIDE2LCBWTng4SEltb2RlKQotREVGX1NWRV9U WVBFX1NVRkZJWCAoczMyLCBzdmludDMyX3QsIHNpZ25lZCwgMzIsIFZOeDRTSW1vZGUpCi1ERUZf U1ZFX1RZUEVfU1VGRklYIChzNjQsIHN2aW50NjRfdCwgc2lnbmVkLCA2NCwgVk54MkRJbW9kZSkK LURFRl9TVkVfVFlQRV9TVUZGSVggKHU4LCBzdnVpbnQ4X3QsIHVuc2lnbmVkLCA4LCBWTngxNlFJ bW9kZSkKLURFRl9TVkVfVFlQRV9TVUZGSVggKHUxNiwgc3Z1aW50MTZfdCwgdW5zaWduZWQsIDE2 LCBWTng4SEltb2RlKQotREVGX1NWRV9UWVBFX1NVRkZJWCAodTMyLCBzdnVpbnQzMl90LCB1bnNp Z25lZCwgMzIsIFZOeDRTSW1vZGUpCi1ERUZfU1ZFX1RZUEVfU1VGRklYICh1NjQsIHN2dWludDY0 X3QsIHVuc2lnbmVkLCA2NCwgVk54MkRJbW9kZSkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAo YmYxNiwgc3ZiZmxvYXQxNl90LCBiZmxvYXQsIDE2LCBWTng4QkZtb2RlLAorCQkJICBCZmxvYXQx Nng0X3QsIEJmbG9hdDE2eDhfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAoZjE2LCBzdmZs b2F0MTZfdCwgZmxvYXQsIDE2LCBWTng4SEZtb2RlLAorCQkJICBGbG9hdDE2eDRfdCwgRmxvYXQx Nng4X3QpCitERUZfU1ZFX05FT05fVFlQRV9TVUZGSVggKGYzMiwgc3ZmbG9hdDMyX3QsIGZsb2F0 LCAzMiwgVk54NFNGbW9kZSwKKwkJCSAgRmxvYXQzMngyX3QsIEZsb2F0MzJ4NF90KQorREVGX1NW RV9ORU9OX1RZUEVfU1VGRklYIChmNjQsIHN2ZmxvYXQ2NF90LCBmbG9hdCwgNjQsIFZOeDJERm1v ZGUsCisJCQkgIEZsb2F0NjR4MV90LCBGbG9hdDY0eDJfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NV RkZJWCAoczgsIHN2aW50OF90LCBzaWduZWQsIDgsIFZOeDE2UUltb2RlLAorCQkJICBJbnQ4eDhf dCwgSW50OHgxNl90KQorREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYIChzMTYsIHN2aW50MTZfdCwg c2lnbmVkLCAxNiwgVk54OEhJbW9kZSwKKwkJCSAgSW50MTZ4NF90LCBJbnQxNng4X3QpCitERUZf U1ZFX05FT05fVFlQRV9TVUZGSVggKHMzMiwgc3ZpbnQzMl90LCBzaWduZWQsIDMyLCBWTng0U0lt b2RlLAorCQkJICBJbnQzMngyX3QsIEludDMyeDRfdCkKK0RFRl9TVkVfTkVPTl9UWVBFX1NVRkZJ WCAoczY0LCBzdmludDY0X3QsIHNpZ25lZCwgNjQsIFZOeDJESW1vZGUsCisJCQkgIEludDY0eDFf dCwgSW50NjR4Ml90KQorREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYICh1OCwgc3Z1aW50OF90LCB1 bnNpZ25lZCwgOCwgVk54MTZRSW1vZGUsCisJCQkgIFVpbnQ4eDhfdCwgVWludDh4MTZfdCkKK0RF Rl9TVkVfTkVPTl9UWVBFX1NVRkZJWCAodTE2LCBzdnVpbnQxNl90LCB1bnNpZ25lZCwgMTYsIFZO eDhISW1vZGUsCisJCQkgIFVpbnQxNng0X3QsIFVpbnQxNng4X3QpCitERUZfU1ZFX05FT05fVFlQ RV9TVUZGSVggKHUzMiwgc3Z1aW50MzJfdCwgdW5zaWduZWQsIDMyLCBWTng0U0ltb2RlLAorCQkJ ICBVaW50MzJ4Ml90LCBVaW50MzJ4NF90KQorREVGX1NWRV9ORU9OX1RZUEVfU1VGRklYICh1NjQs IHN2dWludDY0X3QsIHVuc2lnbmVkLCA2NCwgVk54MkRJbW9kZSwKKwkJCSAgVWludDY0eDFfdCwg VWludDY0eDJfdCkKIAogI2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLWJhc2UuZGVmIgog I2luY2x1ZGUgImFhcmNoNjQtc3ZlLWJ1aWx0aW5zLXN2ZTIuZGVmIgogCiAjdW5kZWYgREVGX1NW RV9GVU5DVElPTgorI3VuZGVmIERFRl9TVkVfTkVPTl9UWVBFX1NVRkZJWAogI3VuZGVmIERFRl9T VkVfVFlQRV9TVUZGSVgKICN1bmRlZiBERUZfU1ZFX1RZUEUKICN1bmRlZiBERUZfU1ZFX01PREUK ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS1idWlsdGlucy5oIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0aW5zLmgKaW5kZXggYTMwMTU3MGI4 MmVkMzQ3NzMwNmQyMDMwODBjY2I3NjYwODMyMmMwOS4uZDMyYmY1YjU3YWU3YjQ4YTEzMGE3Nzk0 ZjNmODI3N2FkNTllZDAzZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c3ZlLWJ1aWx0aW5zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLWJ1aWx0 aW5zLmgKQEAgLTIwLDYgKzIwLDggQEAKICNpZm5kZWYgR0NDX0FBUkNINjRfU1ZFX0JVSUxUSU5T X0gKICNkZWZpbmUgR0NDX0FBUkNINjRfU1ZFX0JVSUxUSU5TX0gKIAorI2luY2x1ZGUgImFhcmNo NjQtYnVpbHRpbnMuaCIKKwogLyogVGhlIGZ1bGwgbmFtZSBvZiBhbiBTVkUgQUNMRSBmdW5jdGlv biBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZjoKIAogICAgLSB0aGUgYmFzZSBuYW1lICgic3ZhZGQi LCBldGMuKQpAQCAtMjA2LDYgKzIwOCwxNCBAQCBzdHJ1Y3QgbW9kZV9zdWZmaXhfaW5mbwogICB1 bml0c19pbmRleCBkaXNwbGFjZW1lbnRfdW5pdHM7CiB9OwogCisjZGVmaW5lIEVOVFJZKEUsIE0s IFEsIEcpIEUsCitlbnVtIGFhcmNoNjRfc2ltZF90eXBlCit7CisjaW5jbHVkZSAiYWFyY2g2NC1z aW1kLWJ1aWx0aW4tdHlwZXMuZGVmIgorICBBUk1fTkVPTl9IX1RZUEVTX0xBU1QKK307CisjdW5k ZWYgRU5UUlkKKwogLyogU3RhdGljIGluZm9ybWF0aW9uIGFib3V0IGEgdHlwZSBzdWZmaXguICAq Lwogc3RydWN0IHR5cGVfc3VmZml4X2luZm8KIHsKQEAgLTIzNSw2ICsyNDUsMTEgQEAgc3RydWN0 IHR5cGVfc3VmZml4X2luZm8KIAogICAvKiBUaGUgYXNzb2NpYXRlZCB2ZWN0b3Igb3IgcHJlZGlj YXRlIG1vZGUuICAqLwogICBtYWNoaW5lX21vZGUgdmVjdG9yX21vZGUgOiAxNjsKKworICAvKiBU aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgYW5kIDEyOC1iaXQgYXJtX25lb24uaCB0eXBlcywgb3IK KyAgICAgQVJNX05FT05fSF9UWVBFU19MQVNUIGlmIG5vbmUuICAqLworICBhYXJjaDY0X3NpbWRf dHlwZSBuZW9uNjRfdHlwZTsKKyAgYWFyY2g2NF9zaW1kX3R5cGUgbmVvbjEyOF90eXBlOwogfTsK IAogLyogU3RhdGljIGluZm9ybWF0aW9uIGFib3V0IGEgc2V0IG9mIGZ1bmN0aW9ucy4gICovCkBA IC00MDAsNiArNDE1LDcgQEAgcHVibGljOgogICB0eXBlX3N1ZmZpeF9pbmRleCBpbmZlcl92ZWN0 b3Jfb3JfdHVwbGVfdHlwZSAodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICB0eXBlX3N1 ZmZpeF9pbmRleCBpbmZlcl92ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50KTsKICAgdHlwZV9zdWZm aXhfaW5kZXggaW5mZXJfaW50ZWdlcl92ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50KTsKKyAgdHlw ZV9zdWZmaXhfaW5kZXggaW5mZXJfbmVvbjEyOF92ZWN0b3JfdHlwZSAodW5zaWduZWQgaW50KTsK ICAgdHlwZV9zdWZmaXhfaW5kZXggaW5mZXJfdW5zaWduZWRfdmVjdG9yX3R5cGUgKHVuc2lnbmVk IGludCk7CiAgIHR5cGVfc3VmZml4X2luZGV4IGluZmVyX3NkX3ZlY3Rvcl90eXBlICh1bnNpZ25l ZCBpbnQpOwogICB0eXBlX3N1ZmZpeF9pbmRleCBpbmZlcl90dXBsZV90eXBlICh1bnNpZ25lZCBp bnQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLm1kIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc3ZlLm1kCmluZGV4IDVhNjUyZDg1MzZhMGVmOTQ2MWY0 MGRhN2IyMjgzNGU2ODNlNzNjZWIuLjNlMDE2NjlmYmFhYTgwNWFjNGRlMGQyNjE1ZTUwNjc0ZjI2 NWVlNTkgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXN2ZS5tZAorKysg Yi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zdmUubWQKQEAgLTEwODM0LDMgKzEwODM0LDU3 IEBACiAgICAgb3BlcmFuZHNbNF0gPSBDT05TVE0xX1JUWCAoPFZQUkVEPm1vZGUpOwogICB9CiAp CisKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIkBhYXJjaDY0X3N2ZV9nZXRfbmVvbnFfPG1vZGU+ IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VjEyOD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13 IikKKwkgICh2ZWNfc2VsZWN0OjxWMTI4PgorCSAgICAobWF0Y2hfb3BlcmFuZDpTVkVfRlVMTCAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisJICAgIChtYXRjaF9vcGVyYW5kIDIgImRlc2NlbmRp bmdfaW50X3BhcmFsbGVsIikpKV0KKyAgIlRBUkdFVF9TVkUKKyAgICYmIEJZVEVTX0JJR19FTkRJ QU4KKyAgICYmIGtub3duX2VxIChJTlRWQUwgKFhWRUNFWFAgKG9wZXJhbmRzWzJdLCAwLCAwKSks CisJCUdFVF9NT0RFX05VTklUUyAoPFYxMjg+bW9kZSkgLSAxKSIKKyAgIiMiCisgICImJiByZWxv YWRfY29tcGxldGVkIgorICBbKHNldCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMSkpXQorICB7 CisgICAgb3BlcmFuZHNbMV0gPSBnZW5fcnR4X1JFRyAoPFYxMjg+bW9kZSwgUkVHTk8gKG9wZXJh bmRzWzFdKSk7CisgIH0KKykKKworKGRlZmluZV9pbnNuICJAYWFyY2g2NF9zdmVfc2V0X25lb25x Xzxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U1ZFX0ZVTEwgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj13IikKKyAgICAgICh1bnNwZWM6U1ZFX0ZVTEwKKwlbKG1hdGNoX29wZXJhbmQ6U1ZF X0ZVTEwgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKQorCShtYXRjaF9vcGVyYW5kOjxWMTI4PiAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisJKG1hdGNoX29wZXJhbmQ6PFZQUkVEPiAzICJyZWdp c3Rlcl9vcGVyYW5kIiAiVXBsIildCisJVU5TUEVDX1NFVF9ORU9OUSkpXQorICAiVEFSR0VUX1NW RQorICAgJiYgQllURVNfQklHX0VORElBTiIKKyAgeworICAgIG9wZXJhbmRzWzJdID0gbG93cGFy dF9zdWJyZWcgKDxNT0RFPm1vZGUsIG9wZXJhbmRzWzJdLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdFVF9NT0RFIChvcGVyYW5kc1syXSkpOworICAgIHJldHVybiBhYXJjaDY0 X291dHB1dF9zdmVfc2V0X25lb25xIChvcGVyYW5kcywgPE1PREU+bW9kZSk7CisgIH0KKykKKwor KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiQGFhcmNoNjRfc3ZlX2R1cF9uZW9ucV88bW9kZT4iCisg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNWRV9GVUxMIDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCSh2 ZWNfZHVwbGljYXRlOlNWRV9GVUxMCisJICAodmVjX3NlbGVjdDo8VjEyOD4KKwkgICAgKG1hdGNo X29wZXJhbmQ6PFYxMjg+IDEgInJlZ2lzdGVyX29wZXJhbmQiKQorCSAgICAobWF0Y2hfb3BlcmFu ZCAyICJkZXNjZW5kaW5nX2ludF9wYXJhbGxlbCIpKSkpXQorICAiVEFSR0VUX1NWRQorICAgJiYg QllURVNfQklHX0VORElBTgorICAgJiYga25vd25fZXEgKElOVFZBTCAoWFZFQ0VYUCAob3BlcmFu ZHNbMl0sIDAsIDApKSwKKwkJR0VUX01PREVfTlVOSVRTICg8TU9ERT5tb2RlKSAtIDEpIgorICB7 QCBbIGNvbnM6ID0wICwgMSAgXQorICAgICBbIHcgICAgICAgICwgMCAgXSAjCisgICAgIFsgdyAg ICAgICAgLCA/dyBdICMKKyAgfQorICAiJiYgcmVsb2FkX2NvbXBsZXRlZCIKKyAgWyhzZXQgKG1h dGNoX2R1cCAwKSAobWF0Y2hfZHVwIDEpKV0KKyAgeworICAgIG9wZXJhbmRzWzFdID0gZ2VuX3J0 eF9SRUcgKDxNT0RFPm1vZGUsIFJFR05PIChvcGVyYW5kc1sxXSkpOworICB9CispClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNo NjQuY2MgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYwppbmRleCA1ZmQ3MDYzNjYzYzY3 YTE1ZTY1NGVlYTY2ZmZlNzE5M2NhZWJmNmI2Li5iZjliNzI1ZWI2M2Y2YjcxM2E0Y2FjNDMwNTU0 MTY2YmQ2NzdlMDFhIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYwor KysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYwpAQCAtMTU1OTQsNiArMTU1OTQsNyBA QCBhYXJjaDY0X2luaXRfYnVpbHRpbnMgKCkKIHsKICAgYWFyY2g2NF9nZW5lcmFsX2luaXRfYnVp bHRpbnMgKCk7CiAgIGFhcmNoNjRfc3ZlOjppbml0X2J1aWx0aW5zICgpOworICBhYXJjaDY0X3N2 ZTo6aW5pdF9uZW9uX3N2ZV9idWlsdGlucyAoKTsKICNpZmRlZiBTVUJUQVJHRVRfSU5JVF9CVUlM VElOUwogICBTVUJUQVJHRVRfSU5JVF9CVUlMVElOUzsKICNlbmRpZgpAQCAtMjQxMDAsNiArMjQx MDEsMjMgQEAgYWFyY2g2NF9vdXRwdXRfc3ZlX3B0cnVlcyAocnR4IGNvbnN0X3Vuc3BlYykKICAg cmV0dXJuIHRlbXBsOwogfQogCitjb25zdCBjaGFyICoKK2FhcmNoNjRfb3V0cHV0X3N2ZV9zZXRf bmVvbnEgKHJ0eCAqIG9wZXJhbmRzLCBtYWNoaW5lX21vZGUgbW9kZSkKK3sKKyAgc3dpdGNoKEdF VF9NT0RFX1VOSVRfQklUU0laRShtb2RlKSkKKyAgICB7CisgICAgY2FzZSA2NDoKKyAgICAgIHJl dHVybiAic2VsXHQlMC5kLCAlMywgJTIuZCwgJTEuZCI7CisgICAgY2FzZSAzMjoKKyAgICAgIHJl dHVybiAic2VsXHQlMC5zLCAlMywgJTIucywgJTEucyI7CisgICAgY2FzZSAxNjoKKyAgICAgIHJl dHVybiAic2VsXHQlMC5oLCAlMywgJTIuaCwgJTEuaCI7CisgICAgY2FzZSA4OgorICAgICAgcmV0 dXJuICJzZWxcdCUwLmIsICUzLCAlMi5iLCAlMS5iIjsKKyAgICB9CisKK30KKwogLyogU3BsaXQg b3BlcmFuZHMgaW50byBtb3ZlcyBmcm9tIG9wWzFdICsgb3BbMl0gaW50byBvcFswXS4gICovCiAK IHZvaWQKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hcm1fbmVvbl9zdmVfYnJpZGdl LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX25lb25fc3ZlX2JyaWRnZS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjhmNTI2ZWFlODZiOTRmNjE1ZDIyZmU4ZGU1MjU4M2JiNDAzZTEwMmUKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX25lb25fc3ZlX2JyaWRnZS5oCkBAIC0wLDAgKzEs MzggQEAKKy8qIEFBcmNoNjQgTkVPTi1TVkUgQnJpZGdlIGludHJpbnNpY3MgaW5jbHVkZSBmaWxl LgorICAgQ29weXJpZ2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKKyAgIEdDQyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0 IHlvdXIKKyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIEdDQyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICAg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB TlRBQklMSVRZCisgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg IFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRp b25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiwgdmVyc2lvbgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICBhIGNvcHkgb2YgdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisj aWZuZGVmIF9BUk1fTkVPTl9TVkVfQlJJREdFX0hfCisjZGVmaW5lIF9BUk1fTkVPTl9TVkVfQlJJ REdFX0hfCisKKyNpbmNsdWRlIDxhcm1fbmVvbi5oPgorI2luY2x1ZGUgPGFybV9zdmUuaD4KKwor LyogTk9URTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBhcm1fbmVvbl9zdmVfYnJpZGdlLmggaXMg aW50ZW50aW9uYWxseSBzaG9ydC4gIEl0IGRvZXMKKyAgIG5vdCBkZWZpbmUgdGhlIHR5cGVzIGFu ZCBpbnRyaW5zaWMgZnVuY3Rpb25zIGRpcmVjdGx5IGluIEMgYW5kIEMrKworICAgY29kZSwgYnV0 IGluc3RlYWQgdXNlcyB0aGUgZm9sbG93aW5nIHByYWdtYSB0byB0ZWxsIEdDQyB0byBpbnNlcnQg dGhlCisgICBuZWNlc3NhcnkgdHlwZSBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaXRzZWxmLiAg VGhlIG5ldCBlZmZlY3QgaXMgdGhlCisgICBzYW1lLCBhbmQgdGhlIGZpbGUgaXMgYSBjb21wbGV0 ZSBpbXBsZW1lbnRhdGlvbiBvZiBhcm1fbmVvbl9zdmVfYnJpZGdlLmguICAqLworI3ByYWdtYSBH Q0MgYWFyY2g2NCAiYXJtX25lb25fc3ZlX2JyaWRnZS5oIgorCisjZW5kaWYKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3Jz Lm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZAppbmRleCBmOWUyMjEwMDk1ZWE5 ZDZkOWM5Njk3MTIyMmE3NzU3YTJmNDE4YzJkLi5jM2U3YjM4YmNiZmI0NmFlOWRkOGRmYTI0Njlh YmNiMWIxYTk3ZDY5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1k CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKQEAgLTc1Miw2ICs3NTIsNyBA QAogICAgIFVOU1BFQ19GVFNNVUwJOyBVc2VkIGluIGFhcmNoNjQtc3ZlLm1kLgogICAgIFVOU1BF Q19GVFNTRUwJOyBVc2VkIGluIGFhcmNoNjQtc3ZlLm1kLgogICAgIFVOU1BFQ19TTUFUTVVMCTsg VXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4KKyAgICBVTlNQRUNfU0VUX05FT05RCTsgVXNlZCBpbiBh YXJjaDY0LXN2ZS5tZC4KICAgICBVTlNQRUNfVU1BVE1VTAk7IFVzZWQgaW4gYWFyY2g2NC1zdmUu bWQuCiAgICAgVU5TUEVDX1VTTUFUTVVMCTsgVXNlZCBpbiBhYXJjaDY0LXN2ZS5tZC4KICAgICBV TlNQRUNfVFJOMVEJOyBVc2VkIGluIGFhcmNoNjQtc3ZlLm1kLgpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9uZW9uLXN2ZS1icmlkZ2UuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvbmVvbi1zdmUtYnJpZGdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY4ZjI2Y2VjMWI0 NGNkYmEyMjI3NTdhMjk4ODA4OWI1ZWQ0YWNjNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvbmVvbi1zdmUtYnJpZGdlLmMKQEAgLTAsMCArMSw2NCBAQAor Ly8geyBkZy1vcHRpb25zICItbWFyY2g9YXJtdjguMi1hK3N2ZSIgfQorLy8geyBkZy1kbyBydW4g eyB0YXJnZXQgYWFyY2g2NF9zdmVfaHcgfSB9CisKKyNpbmNsdWRlIDxhcm1fbmVvbl9zdmVfYnJp ZGdlLmg+CisKK2V4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKKworaW50CitzdmdldF9uZW9ucV90 ZXN0ICgpCit7CisgIGludDY0X3QgdmFsMSA9IDk4NzY1NDMyMTsKKyAgaW50NjRfdCB2YWwyID0g MTIzNDU2Nzg5OworICBzdmludDY0X3Qgc3ZlSW5wdXQgPSBzdmR1cHFfbl9zNjQgKHZhbDEsIHZh bDIpOworICBpbnQ2NHgyX3QgbmVvblJldHVybiA9IHN2Z2V0X25lb25xX3M2NCAoc3ZlSW5wdXQp OworICBpbnQ2NF90IHZhbDFSZXR1cm4gPSB2Z2V0cV9sYW5lX3M2NCAobmVvblJldHVybiwgMCk7 CisgIGludDY0X3QgdmFsMlJldHVybiA9IHZnZXRxX2xhbmVfczY0IChuZW9uUmV0dXJuLCAxKTsK KyAgaWYgKHZhbDEgPT0gdmFsMVJldHVybiAmJiB2YWwyID09IHZhbDJSZXR1cm4pCisgICAgcmV0 dXJuIDA7CisgIHJldHVybiAxOworfQorCitpbnQKK3N2c2V0X25lb25xX3Rlc3QgKCkKK3sKKyAg aW50NjRfdCB2YWwxID0gOTg3NjU0MzIxOworICBpbnQ2NF90IHZhbDIgPSAxMjM0NTY3ODk7Cisg IGludDY0eDJfdCBOZW9uSW5wdXQ7CisgIE5lb25JbnB1dCA9IHZzZXRxX2xhbmVfczY0ICh2YWwx LCBOZW9uSW5wdXQsIDApOworICBOZW9uSW5wdXQgPSB2c2V0cV9sYW5lX3M2NCAodmFsMiwgTmVv bklucHV0LCAxKTsKKyAgc3ZpbnQ2NF90IHN2ZVJldHVybiA9IHN2c2V0X25lb25xX3M2NCAoc3Zl UmV0dXJuLCBOZW9uSW5wdXQpOworICBpbnQ2NF90IHZhbDFSZXR1cm4gPSBzdmxhc3RhX3M2NCAo c3ZwdHJ1ZV9iNjQoKSwgc3ZlUmV0dXJuKTsKKyAgaW50NjRfdCB2YWwyUmV0dXJuID0gc3ZsYXN0 Yl9zNjQgKHN2cHRydWVfcGF0X2I4KFNWX1ZMMTYpLCBzdmVSZXR1cm4pOworICBpZiAodmFsMSA9 PSB2YWwxUmV0dXJuICYmIHZhbDIgPT0gdmFsMlJldHVybikKKyAgICByZXR1cm4gMDsKKyAgcmV0 dXJuIDE7Cit9CisKK2ludAorc3ZkdXBfbmVvbnFfdGVzdCAoKQoreworICBpbnQ2NF90IHZhbDEg PSA5ODc2NTQzMjE7CisgIGludDY0X3QgdmFsMiA9IDEyMzQ1Njc4OTsKKyAgaW50NjR4Ml90IE5l b25JbnB1dDsKKyAgTmVvbklucHV0ID0gdnNldHFfbGFuZV9zNjQgKHZhbDEsIE5lb25JbnB1dCwg MCk7CisgIE5lb25JbnB1dCA9IHZzZXRxX2xhbmVfczY0ICh2YWwyLCBOZW9uSW5wdXQsIDEpOwor ICBzdmludDY0X3Qgc3ZlUmV0dXJuID0gc3ZkdXBfbmVvbnFfczY0IChOZW9uSW5wdXQpOworICBp bnQ2NF90IHZhbDFSZXR1cm4gPSBzdmxhc3RhX3M2NCAoc3ZwdHJ1ZV9iNjQoKSwgc3ZlUmV0dXJu KTsKKyAgaW50NjRfdCB2YWwyUmV0dXJuID0gc3ZsYXN0Yl9zNjQgKHN2cHRydWVfYjY0KCksIHN2 ZVJldHVybik7CisgIGlmICh2YWwxID09IHZhbDFSZXR1cm4gJiYgdmFsMiA9PSB2YWwyUmV0dXJu KQorICAgIHJldHVybiAwOworICByZXR1cm4gMTsKK30KKworaW50CittYWluICgpCit7CisgIGlm IChzdmdldF9uZW9ucV90ZXN0ICgpID09IDEpCisgICAgYWJvcnQgKCk7CisgIGlmIChzdnNldF9u ZW9ucV90ZXN0ICgpID09IDEpCisgICAgYWJvcnQgKCk7CisgIGlmIChzdmR1cF9uZW9ucV90ZXN0 ICgpID09IDEpCisgICAgYWJvcnQgKCk7CisgIHJldHVybiAwOworfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfYmYxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9iZjE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI0Yjc2 MmJmMTMzODNjODEyYjkwN2RlYmZkMDRjY2IxMDdiNzc2OQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfYmYx Ni5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2Rp ZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNs ZS5oIgorCisvKgorKiogZHVwX25lb25xX2JmMTZfejA6CisqKglkdXAJejAucSwgejQucVxbMFxd CisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2JmMTZfejAsIGJmbG9hdDE2 eDhfdCwgc3ZiZmxvYXQxNl90LAorCSAgejAgPSBzdmR1cF9uZW9ucV9iZjE2ICh6NCksCisJICB6 MCA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfYmYxNl96NDoKKyoqCWR1 cAl6NC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFf YmYxNl96NCwgYmZsb2F0MTZ4OF90LCBzdmJmbG9hdDE2X3QsCisJICB6NF9yZXMgPSBzdmR1cF9u ZW9ucV9iZjE2ICh6NCksCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiog ZHVwX25lb25xX2JmMTZfejU6CisqKglkdXAJejUucSwgejQucVxbMFxdCisqKglyZXQKKyovCitU RVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX2JmMTZfejUsIGJmbG9hdDE2eDhfdCwgc3ZiZmxvYXQx Nl90LAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnFfYmYxNiAoejQpLAorCSAgejVfcmVzID0gc3Zk dXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfZjE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2YxNi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OWU5 NjZjMmFmMTdlZDA1MWE3MmYzOGY1ZDRiMWRlOWE1ODMyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2Yx Ni5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2Rp ZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNs ZS5oIgorCisvKgorKiogZHVwX25lb25xX2YxNl96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0K KyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfZjE2X3owLCBmbG9hdDE2eDhf dCwgc3ZmbG9hdDE2X3QsCisJICB6MCA9IHN2ZHVwX25lb25xX2YxNiAoejQpLAorCSAgejAgPSBz dmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX2YxNl96NDoKKyoqCWR1cAl6NC5x LCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfZjE2X3o0 LCBmbG9hdDE2eDhfdCwgc3ZmbG9hdDE2X3QsCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucV9mMTYg KHo0KSwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFf ZjE2X3o1OgorKioJZHVwCXo1LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVP TlEgKGR1cF9uZW9ucV9mMTZfejUsIGZsb2F0MTZ4OF90LCBzdmZsb2F0MTZfdCwKKwkgIHo1X3Jl cyA9IHN2ZHVwX25lb25xX2YxNiAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2Fz bS9kdXBfbmVvbnFfZjMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZHVwX25lb25xX2YzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNjA2ZWYwZDBjNGYwMGMyZjNj MjA1NzE0OGY3MjRmNjBhNmM3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2YzMi5jCkBAIC0wLDAgKzEs MzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURD SEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiog ZHVwX25lb25xX2YzMl96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RF U1RfRFVQX05FT05RIChkdXBfbmVvbnFfZjMyX3owLCBmbG9hdDMyeDRfdCwgc3ZmbG9hdDMyX3Qs CisJICB6MCA9IHN2ZHVwX25lb25xX2YzMiAoejQpLAorCSAgejAgPSBzdmR1cF9uZW9ucSAoejQp KQorCisvKgorKiogZHVwX25lb25xX2YzMl96NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoq CXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfZjMyX3o0LCBmbG9hdDMyeDRfdCwg c3ZmbG9hdDMyX3QsCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucV9mMzIgKHo0KSwKKwkgIHo0X3Jl cyA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfZjMyX3o1OgorKioJZHVw CXo1LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9m MzJfejUsIGZsb2F0MzJ4NF90LCBzdmZsb2F0MzJfdCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25x X2YzMiAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfZjY0 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25l b25xX2Y2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZDNlNTA3ZWEzM2Q1MWExZjNkZDZlYTc5OTUxYWNhYjc2 YzM3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX2Y2NC5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGct ZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAq LworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZHVwX25lb25xX2Y2NF96 MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChk dXBfbmVvbnFfZjY0X3owLCBmbG9hdDY0eDJfdCwgc3ZmbG9hdDY0X3QsCisJICB6MCA9IHN2ZHVw X25lb25xX2Y2NCAoejQpLAorCSAgejAgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVw X25lb25xX2Y2NF96NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1Rf RFVQX05FT05RIChkdXBfbmVvbnFfZjY0X3o0LCBmbG9hdDY0eDJfdCwgc3ZmbG9hdDY0X3QsCisJ ICB6NF9yZXMgPSBzdmR1cF9uZW9ucV9mNjQgKHo0KSwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25x ICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfZjY0X3o1OgorKioJZHVwCXo1LnEsIHo0LnFcWzBc XQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9mNjRfejUsIGZsb2F0NjR4 Ml90LCBzdmZsb2F0NjRfdCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xX2Y2NCAoejQpLAorCSAg ejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfczE2LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3MxNi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLmU3MGU0NTRhMTYwMjk1YWYxMWFkN2I2MTAyMzU5MDNhNDEwMTFlMjEKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20v ZHVwX25lb25xX3MxNi5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1m dW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAi dGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZHVwX25lb25xX3MxNl96MDoKKyoqCWR1cAl6MC5x LCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczE2X3ow LCBpbnQxNng4X3QsIHN2aW50MTZfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFfczE2ICh6NCksCisJ ICB6MCA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfczE2X3o0OgorKioJ ZHVwCXo0LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9u cV9zMTZfejQsIGludDE2eDhfdCwgc3ZpbnQxNl90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFf czE2ICh6NCksCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25l b25xX3MxNl96NToKKyoqCWR1cAl6NS5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQ X05FT05RIChkdXBfbmVvbnFfczE2X3o1LCBpbnQxNng4X3QsIHN2aW50MTZfdCwKKwkgIHo1X3Jl cyA9IHN2ZHVwX25lb25xX3MxNiAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2Fz bS9kdXBfbmVvbnFfczMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZHVwX25lb25xX3MzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZjkyMjhkNTI5OGU4NWNkOGI0 MTM5M2MyZWYwM2NhZGUwZmNmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3MzMi5jCkBAIC0wLDAgKzEs MzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURD SEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiog ZHVwX25lb25xX3MzMl96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RF U1RfRFVQX05FT05RIChkdXBfbmVvbnFfczMyX3owLCBpbnQzMng0X3QsIHN2aW50MzJfdCwKKwkg IHowID0gc3ZkdXBfbmVvbnFfczMyICh6NCksCisJICB6MCA9IHN2ZHVwX25lb25xICh6NCkpCisK Ky8qCisqKiBkdXBfbmVvbnFfczMyX3o0OgorKioJZHVwCXo0LnEsIHo0LnFcWzBcXQorKioJcmV0 CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9zMzJfejQsIGludDMyeDRfdCwgc3ZpbnQz Ml90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFfczMyICh6NCksCisJICB6NF9yZXMgPSBzdmR1 cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVwX25lb25xX3MzMl96NToKKyoqCWR1cAl6NS5xLCB6 NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczMyX3o1LCBp bnQzMng0X3QsIHN2aW50MzJfdCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xX3MzMiAoejQpLAor CSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfczY0LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3M2NC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmQzZWQyMjIyMGZhZTI4MGJkMGE4MjhlOGQzYWZlMWRmMDNjYzcwYmUKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9h c20vZHVwX25lb25xX3M2NC5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVj ay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVk ZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZHVwX25lb25xX3M2NF96MDoKKyoqCWR1cAl6 MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczY0 X3owLCBpbnQ2NHgyX3QsIHN2aW50NjRfdCwKKwkgIHowID0gc3ZkdXBfbmVvbnFfczY0ICh6NCks CisJICB6MCA9IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfczY0X3o0Ogor KioJZHVwCXo0LnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9u ZW9ucV9zNjRfejQsIGludDY0eDJfdCwgc3ZpbnQ2NF90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVv bnFfczY0ICh6NCksCisJICB6NF9yZXMgPSBzdmR1cF9uZW9ucSAoejQpKQorCisvKgorKiogZHVw X25lb25xX3M2NF96NToKKyoqCWR1cAl6NS5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1Rf RFVQX05FT05RIChkdXBfbmVvbnFfczY0X3o1LCBpbnQ2NHgyX3QsIHN2aW50NjRfdCwKKwkgIHo1 X3JlcyA9IHN2ZHVwX25lb25xX3M2NCAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0 KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xl L2FzbS9kdXBfbmVvbnFfczguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2 ZS9hY2xlL2FzbS9kdXBfbmVvbnFfczguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDM3Zjg1OGE0Y2UzMjAwZGZh ZmI2NDdkZTY4NmZiODNlNDNiYWUzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV9zOC5jCkBAIC0wLDAgKzEs MzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURD SEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiog ZHVwX25lb25xX3M4X3owOgorKioJZHVwCXowLnEsIHo0LnFcWzBcXQorKioJcmV0CisqLworVEVT VF9EVVBfTkVPTlEgKGR1cF9uZW9ucV9zOF96MCwgaW50OHgxNl90LCBzdmludDhfdCwKKwkgIHow ID0gc3ZkdXBfbmVvbnFfczggKHo0KSwKKwkgIHowID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoK KyoqIGR1cF9uZW9ucV9zOF96NDoKKyoqCWR1cAl6NC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8K K1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczhfejQsIGludDh4MTZfdCwgc3ZpbnQ4X3QsCisJ ICB6NF9yZXMgPSBzdmR1cF9uZW9ucV9zOCAoejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEg KHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV9zOF96NToKKyoqCWR1cAl6NS5xLCB6NC5xXFswXF0K KyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfczhfejUsIGludDh4MTZfdCwg c3ZpbnQ4X3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV9zOCAoejQpLAorCSAgejVfcmVzID0g c3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfdTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3UxNi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVl N2IyMjMwYzE5Y2UwZTc2M2UxYWY2M2JhZjI4NzQzYzM0ZmI3NmEKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25x X3UxNi5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1i b2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVf YWNsZS5oIgorCisvKgorKiogZHVwX25lb25xX3UxNl96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFsw XF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFfdTE2X3owLCB1aW50MTZ4 OF90LCBzdnVpbnQxNl90LAorCSAgejAgPSBzdmR1cF9uZW9ucV91MTYgKHo0KSwKKwkgIHowID0g c3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV91MTZfejQ6CisqKglkdXAJejQu cSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3UxNl96 NCwgdWludDE2eDhfdCwgc3Z1aW50MTZfdCwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xX3UxNiAo ejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV91 MTZfejU6CisqKglkdXAJejUucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9O USAoZHVwX25lb25xX3UxNl96NSwgdWludDE2eDhfdCwgc3Z1aW50MTZfdCwKKwkgIHo1X3JlcyA9 IHN2ZHVwX25lb25xX3UxNiAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9k dXBfbmVvbnFfdTMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZHVwX25lb25xX3UzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMzRkNGYyMTNmN2NhYjE5NzI5NDYz YzRlMzQ5OGQ0OWZiOGM0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3UzMi5jCkBAIC0wLDAgKzEsMzAg QEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVD S19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZHVw X25lb25xX3UzMl96MDoKKyoqCWR1cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1Rf RFVQX05FT05RIChkdXBfbmVvbnFfdTMyX3owLCB1aW50MzJ4NF90LCBzdnVpbnQzMl90LAorCSAg ejAgPSBzdmR1cF9uZW9ucV91MzIgKHo0KSwKKwkgIHowID0gc3ZkdXBfbmVvbnEgKHo0KSkKKwor LyoKKyoqIGR1cF9uZW9ucV91MzJfejQ6CisqKglkdXAJejQucSwgejQucVxbMFxdCisqKglyZXQK KyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3UzMl96NCwgdWludDMyeDRfdCwgc3Z1aW50 MzJfdCwKKwkgIHo0X3JlcyA9IHN2ZHVwX25lb25xX3UzMiAoejQpLAorCSAgejRfcmVzID0gc3Zk dXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV91MzJfejU6CisqKglkdXAJejUucSwg ejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3UzMl96NSwg dWludDMyeDRfdCwgc3Z1aW50MzJfdCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xX3UzMiAoejQp LAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfdTY0LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZHVwX25lb25xX3U2NC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjEwMDg3NDA4OTBiNjc1OTUyNTA3ODI0MGM5NjQ3NjEyYmFlOTFhNzQKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vZHVwX25lb25xX3U2NC5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBj aGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5j bHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZHVwX25lb25xX3U2NF96MDoKKyoqCWR1 cAl6MC5xLCB6NC5xXFswXF0KKyoqCXJldAorKi8KK1RFU1RfRFVQX05FT05RIChkdXBfbmVvbnFf dTY0X3owLCB1aW50NjR4Ml90LCBzdnVpbnQ2NF90LAorCSAgejAgPSBzdmR1cF9uZW9ucV91NjQg KHo0KSwKKwkgIHowID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoKKyoqIGR1cF9uZW9ucV91NjRf ejQ6CisqKglkdXAJejQucSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAo ZHVwX25lb25xX3U2NF96NCwgdWludDY0eDJfdCwgc3Z1aW50NjRfdCwKKwkgIHo0X3JlcyA9IHN2 ZHVwX25lb25xX3U2NCAoejQpLAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKKworLyoK KyoqIGR1cF9uZW9ucV91NjRfejU6CisqKglkdXAJejUucSwgejQucVxbMFxdCisqKglyZXQKKyov CitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3U2NF96NSwgdWludDY0eDJfdCwgc3Z1aW50NjRf dCwKKwkgIHo1X3JlcyA9IHN2ZHVwX25lb25xX3U2NCAoejQpLAorCSAgejVfcmVzID0gc3ZkdXBf bmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfdTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L3N2ZS9hY2xlL2FzbS9kdXBfbmVvbnFfdTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjdmZjhmMzRh NzVmNDI2OTIzZTc3ZGMwNWFjOWVmZjNmMGZhMjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2R1cF9uZW9ucV91OC5jCkBA IC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioq IiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgor CisvKgorKiogZHVwX25lb25xX3U4X3owOgorKioJZHVwCXowLnEsIHo0LnFcWzBcXQorKioJcmV0 CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91OF96MCwgdWludDh4MTZfdCwgc3Z1aW50 OF90LAorCSAgejAgPSBzdmR1cF9uZW9ucV91OCAoejQpLAorCSAgejAgPSBzdmR1cF9uZW9ucSAo ejQpKQorCisvKgorKiogZHVwX25lb25xX3U4X3o0OgorKioJZHVwCXo0LnEsIHo0LnFcWzBcXQor KioJcmV0CisqLworVEVTVF9EVVBfTkVPTlEgKGR1cF9uZW9ucV91OF96NCwgdWludDh4MTZfdCwg c3Z1aW50OF90LAorCSAgejRfcmVzID0gc3ZkdXBfbmVvbnFfdTggKHo0KSwKKwkgIHo0X3JlcyA9 IHN2ZHVwX25lb25xICh6NCkpCisKKy8qCisqKiBkdXBfbmVvbnFfdThfejU6CisqKglkdXAJejUu cSwgejQucVxbMFxdCisqKglyZXQKKyovCitURVNUX0RVUF9ORU9OUSAoZHVwX25lb25xX3U4X3o1 LCB1aW50OHgxNl90LCBzdnVpbnQ4X3QsCisJICB6NV9yZXMgPSBzdmR1cF9uZW9ucV91OCAoejQp LAorCSAgejVfcmVzID0gc3ZkdXBfbmVvbnEgKHo0KSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfYmYxNi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9iZjE2 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uNDdkNWM4ZGY4MGQxOGI1ZmJkZGQxN2VkMTAxNzViMzIwMDY4YmQ5Ygot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2FzbS9nZXRfbmVvbnFfYmYxNi5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwg eyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisj aW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX2JmMTZfejA6Cisq Kgltb3YJdjAuMTZiLCB2NC4xNmIKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfYmYx Nl96MCwgc3ZiZmxvYXQxNl90LCBiZmxvYXQxNng4X3QsCisJICB6MCA9IHN2Z2V0X25lb25xX2Jm MTYgKHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV9i ZjE2X3o0OgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9iZjE2X3o0LCBzdmJmbG9h dDE2X3QsIGJmbG9hdDE2eDhfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xX2JmMTYgKHo0KSwK KwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfYmYxNl96 NToKKyoqCSgKKyoqCW1vdgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIK KyoqCSkKKyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfYmYxNl96NSwgc3ZiZmxvYXQx Nl90LCBiZmxvYXQxNng4X3QsCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucV9iZjE2ICh6NCksCisJ ICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2Fz bS9nZXRfbmVvbnFfZjE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZ2V0X25lb25xX2YxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZjQ3NGEwYTRhNDMwOGM4Mzcy M2UzZTcwMjhlYTFiNDQyODUzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2YxNi5jCkBAIC0wLDAgKzEs MzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURD SEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiog Z2V0X25lb25xX2YxNl96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVT VF9HRVQgKGdldF9uZW9ucV9mMTZfejAsIHN2ZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwKKwkgIHow ID0gc3ZnZXRfbmVvbnFfZjE2ICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8q CisqKiBnZXRfbmVvbnFfZjE2X3o0OgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9m MTZfejQsIHN2ZmxvYXQxNl90LCBmbG9hdDE2eDhfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25x X2YxNiAoejQpLAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoqIGdldF9u ZW9ucV9mMTZfejU6CisqKgkoCisqKgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92CXY1LjE2 YiwgdjQuMTZiCisqKgkpCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX2YxNl96NSwg c3ZmbG9hdDE2X3QsIGZsb2F0MTZ4OF90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfZjE2ICh6 NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2FzbS9nZXRfbmVvbnFfZjMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2YzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTI2ZmU3MTIxNTJl ODIyMDk3OGI0MmNmMGY5MzdhMmM4MzgwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2YzMi5jCkBAIC0w LDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAi IiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisv KgorKiogZ2V0X25lb25xX2YzMl96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0Cisq LworVEVTVF9HRVQgKGdldF9uZW9ucV9mMzJfejAsIHN2ZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwK KwkgIHowID0gc3ZnZXRfbmVvbnFfZjMyICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25xICh6NCkp CisKKy8qCisqKiBnZXRfbmVvbnFfZjMyX3o0OgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9u ZW9ucV9mMzJfejQsIHN2ZmxvYXQzMl90LCBmbG9hdDMyeDRfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0 X25lb25xX2YzMiAoejQpLAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKKworLyoKKyoq IGdldF9uZW9ucV9mMzJfejU6CisqKgkoCisqKgltb3YJejUuZCwgejQuZAorKioJfAorKioJbW92 CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX2Yz Ml96NSwgc3ZmbG9hdDMyX3QsIGZsb2F0MzJ4NF90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFf ZjMyICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfZjY0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2Y2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNTYyMWMx MTUyYmIzZTBkMmJiNGZjZGQ4MjQ5ZDFiMDNjZGIyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX2Y2NC5j CkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMg IioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5o IgorCisvKgorKiogZ2V0X25lb25xX2Y2NF96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJ cmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9mNjRfejAsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0 eDJfdCwKKwkgIHowID0gc3ZnZXRfbmVvbnFfZjY0ICh6NCksCisJICB6MCA9IHN2Z2V0X25lb25x ICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfZjY0X3o0OgorKioJcmV0CisqLworVEVTVF9HRVQg KGdldF9uZW9ucV9mNjRfejQsIHN2ZmxvYXQ2NF90LCBmbG9hdDY0eDJfdCwKKwkgIHo0X3JlcyA9 IHN2Z2V0X25lb25xX2Y2NCAoejQpLAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnEgKHo0KSkKKwor LyoKKyoqIGdldF9uZW9ucV9mNjRfejU6CisqKgkoCisqKgltb3YJejUuZCwgejQuZAorKioJfAor KioJbW92CXY1LjE2YiwgdjQuMTZiCisqKgkpCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25l b25xX2Y2NF96NSwgc3ZmbG9hdDY0X3QsIGZsb2F0NjR4Ml90LAorCSAgejVfcmVzID0gc3ZnZXRf bmVvbnFfZjY0ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfczE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3MxNi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdl ODQ4MjAzYWYzZTQ0ZjUwMDcxMWU5OTVmZWYwMGM0MmYzMWZiMzUKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25x X3MxNi5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1i b2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVf YWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX3MxNl96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2 YgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zMTZfejAsIHN2aW50MTZfdCwgaW50 MTZ4OF90LAorCSAgejAgPSBzdmdldF9uZW9ucV9zMTYgKHo0KSwKKwkgIHowID0gc3ZnZXRfbmVv bnEgKHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV9zMTZfejQ6CisqKglyZXQKKyovCitURVNUX0dF VCAoZ2V0X25lb25xX3MxNl96NCwgc3ZpbnQxNl90LCBpbnQxNng4X3QsCisJICB6NF9yZXMgPSBz dmdldF9uZW9ucV9zMTYgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8q CisqKiBnZXRfbmVvbnFfczE2X3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoq CW1vdgl2NS4xNmIsIHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9u cV9zMTZfejUsIHN2aW50MTZfdCwgaW50MTZ4OF90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFf czE2ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfczMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3MzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZTdhYjM2 ZGQ1NDU0ZWVmZTc5ZTA3YTkzNDZjZTBkMzAzYzg5MjMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3MzMi5j CkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMg IioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5o IgorCisvKgorKiogZ2V0X25lb25xX3MzMl96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJ cmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zMzJfejAsIHN2aW50MzJfdCwgaW50MzJ4NF90 LAorCSAgejAgPSBzdmdldF9uZW9ucV9zMzIgKHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0 KSkKKworLyoKKyoqIGdldF9uZW9ucV9zMzJfejQ6CisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0 X25lb25xX3MzMl96NCwgc3ZpbnQzMl90LCBpbnQzMng0X3QsCisJICB6NF9yZXMgPSBzdmdldF9u ZW9ucV9zMzIgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBn ZXRfbmVvbnFfczMyX3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoqCW1vdgl2 NS4xNmIsIHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zMzJf ejUsIHN2aW50MzJfdCwgaW50MzJ4NF90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfczMyICh6 NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2FzbS9nZXRfbmVvbnFfczY0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3M2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZmQ3YWZlM2Q5ZjUy MzU3Y2U1ODc3YTI5ZjEwMzI5ZGY5ZDE0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3M2NC5jCkBAIC0w LDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAi IiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisv KgorKiogZ2V0X25lb25xX3M2NF96MDoKKyoqCW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0Cisq LworVEVTVF9HRVQgKGdldF9uZW9ucV9zNjRfejAsIHN2aW50NjRfdCwgaW50NjR4Ml90LAorCSAg ejAgPSBzdmdldF9uZW9ucV9zNjQgKHo0KSwKKwkgIHowID0gc3ZnZXRfbmVvbnEgKHo0KSkKKwor LyoKKyoqIGdldF9uZW9ucV9zNjRfejQ6CisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25x X3M2NF96NCwgc3ZpbnQ2NF90LCBpbnQ2NHgyX3QsCisJICB6NF9yZXMgPSBzdmdldF9uZW9ucV9z NjQgKHo0KSwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVv bnFfczY0X3o1OgorKioJKAorKioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoqCW1vdgl2NS4xNmIs IHY0LjE2YgorKioJKQorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zNjRfejUsIHN2 aW50NjRfdCwgaW50NjR4Ml90LAorCSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfczY0ICh6NCksCisJ ICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2Fz bS9nZXRfbmVvbnFfczguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2FzbS9nZXRfbmVvbnFfczguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzJjMzg5YTdkZDdhMTZmNjdjMzMz YjQwN2IzZTBjYzQ1YjRlOWM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL2dldF9uZW9ucV9zOC5jCkBAIC0wLDAgKzEsMzMg QEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVD S19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0 X25lb25xX3M4X3owOgorKioJbW92CXYwLjE2YiwgdjQuMTZiCisqKglyZXQKKyovCitURVNUX0dF VCAoZ2V0X25lb25xX3M4X3owLCBzdmludDhfdCwgaW50OHgxNl90LAorCSAgejAgPSBzdmdldF9u ZW9ucV9zOCAoejQpLAorCSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25l b25xX3M4X3o0OgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zOF96NCwgc3ZpbnQ4 X3QsIGludDh4MTZfdCwKKwkgIHo0X3JlcyA9IHN2Z2V0X25lb25xX3M4ICh6NCksCisJICB6NF9y ZXMgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3M4X3o1OgorKioJKAor KioJbW92CXo1LmQsIHo0LmQKKyoqCXwKKyoqCW1vdgl2NS4xNmIsIHY0LjE2YgorKioJKQorKioJ cmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV9zOF96NSwgc3ZpbnQ4X3QsIGludDh4MTZfdCwK KwkgIHo1X3JlcyA9IHN2Z2V0X25lb25xX3M4ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9u cSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTE2LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3Ux Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjE2OGVmMzZiZjUzMWFiMGI1MjA3OGEzNmY0MWM5MTQ2ODFmNGQ3NDEK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZ2V0X25lb25xX3UxNi5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwg eyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisj aW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX3UxNl96MDoKKyoq CW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV91MTZf ejAsIHN2dWludDE2X3QsIHVpbnQxNng4X3QsCisJICB6MCA9IHN2Z2V0X25lb25xX3UxNiAoejQp LAorCSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3UxNl96NDoK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTE2X3o0LCBzdnVpbnQxNl90LCB1aW50 MTZ4OF90LAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnFfdTE2ICh6NCksCisJICB6NF9yZXMgPSBz dmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3UxNl96NToKKyoqCSgKKyoqCW1v dgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAor Ki8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTE2X3o1LCBzdnVpbnQxNl90LCB1aW50MTZ4OF90LAor CSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfdTE2ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9u cSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTMyLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3Uz Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmFjYWJjMDNhZTNkZGFjZjMxOTc2ZmZmMTk0MTBiN2E1NmMzOWVkNTAK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZ2V0X25lb25xX3UzMi5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwg eyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisj aW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX3UzMl96MDoKKyoq CW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV91MzJf ejAsIHN2dWludDMyX3QsIHVpbnQzMng0X3QsCisJICB6MCA9IHN2Z2V0X25lb25xX3UzMiAoejQp LAorCSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3UzMl96NDoK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTMyX3o0LCBzdnVpbnQzMl90LCB1aW50 MzJ4NF90LAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnFfdTMyICh6NCksCisJICB6NF9yZXMgPSBz dmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3UzMl96NToKKyoqCSgKKyoqCW1v dgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAor Ki8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTMyX3o1LCBzdnVpbnQzMl90LCB1aW50MzJ4NF90LAor CSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfdTMyICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9u cSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTY0LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vZ2V0X25lb25xX3U2 NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjQyYjQ1YWJlZGMxODM2MjAwMDU1Y2Y0ZTVkYWM4MmM2M2MxNzk3NDgK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUv YWNsZS9hc20vZ2V0X25lb25xX3U2NC5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwg eyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisj aW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX3U2NF96MDoKKyoq CW1vdgl2MC4xNmIsIHY0LjE2YgorKioJcmV0CisqLworVEVTVF9HRVQgKGdldF9uZW9ucV91NjRf ejAsIHN2dWludDY0X3QsIHVpbnQ2NHgyX3QsCisJICB6MCA9IHN2Z2V0X25lb25xX3U2NCAoejQp LAorCSAgejAgPSBzdmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3U2NF96NDoK KyoqCXJldAorKi8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTY0X3o0LCBzdnVpbnQ2NF90LCB1aW50 NjR4Ml90LAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnFfdTY0ICh6NCksCisJICB6NF9yZXMgPSBz dmdldF9uZW9ucSAoejQpKQorCisvKgorKiogZ2V0X25lb25xX3U2NF96NToKKyoqCSgKKyoqCW1v dgl6NS5kLCB6NC5kCisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAor Ki8KK1RFU1RfR0VUIChnZXRfbmVvbnFfdTY0X3o1LCBzdnVpbnQ2NF90LCB1aW50NjR4Ml90LAor CSAgejVfcmVzID0gc3ZnZXRfbmVvbnFfdTY0ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9u cSAoejQpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTguYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9nZXRfbmVvbnFfdTgu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4wNWQ0MmYyODU2YzEyMzMxNWI0MTllZmZkYzJlYTdkYzBkZGU4ZGM1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2Fj bGUvYXNtL2dldF9uZW9ucV91OC5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZmluYWwgeyBj aGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5j bHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogZ2V0X25lb25xX3U4X3owOgorKioJbW92 CXYwLjE2YiwgdjQuMTZiCisqKglyZXQKKyovCitURVNUX0dFVCAoZ2V0X25lb25xX3U4X3owLCBz dnVpbnQ4X3QsIHVpbnQ4eDE2X3QsCisJICB6MCA9IHN2Z2V0X25lb25xX3U4ICh6NCksCisJICB6 MCA9IHN2Z2V0X25lb25xICh6NCkpCisKKy8qCisqKiBnZXRfbmVvbnFfdThfejQ6CisqKglyZXQK KyovCitURVNUX0dFVCAoZ2V0X25lb25xX3U4X3o0LCBzdnVpbnQ4X3QsIHVpbnQ4eDE2X3QsCisJ ICB6NF9yZXMgPSBzdmdldF9uZW9ucV91OCAoejQpLAorCSAgejRfcmVzID0gc3ZnZXRfbmVvbnEg KHo0KSkKKworLyoKKyoqIGdldF9uZW9ucV91OF96NToKKyoqCSgKKyoqCW1vdgl6NS5kLCB6NC5k CisqKgl8CisqKgltb3YJdjUuMTZiLCB2NC4xNmIKKyoqCSkKKyoqCXJldAorKi8KK1RFU1RfR0VU IChnZXRfbmVvbnFfdThfejUsIHN2dWludDhfdCwgdWludDh4MTZfdCwKKwkgIHo1X3JlcyA9IHN2 Z2V0X25lb25xX3U4ICh6NCksCisJICB6NV9yZXMgPSBzdmdldF9uZW9ucSAoejQpKQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfYmYxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9iZjE2LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uYjEyY2UxZDQ2YjQ2ODM1OTcyOGE3ZmVmNWFlNDY0YjllODBjMmU1MgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRf bmVvbnFfYmYxNi5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5j dGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVz dF9zdmVfYWNsZS5oIgorCisvKgorKiogc2V0X25lb25xX2JmMTZfejI0OgorKioJcHRydWUJcDMu aCwgdmw4CisqKglzZWwJejI0LmgsIHAzLCB6MC5oLCB6NC5oCisqKglyZXQKKyovCitURVNUX1NF VF9ORU9OUSAoc2V0X25lb25xX2JmMTZfejI0LCBzdmJmbG9hdDE2X3QsIGJmbG9hdDE2eDhfdCwK KwkgIHoyNCA9IHN2c2V0X25lb25xX2JmMTYgKHo0LCB6MCksCisJICB6MjQgPSBzdnNldF9uZW9u cSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9ucV9iZjE2X3o0OgorKioJcHRydWUJcDMuaCwg dmw4CisqKglzZWwJKHowLmh8ejQuaCksIHAzLCB6MC5oLCB6NC5oCisqKglyZXQKKyovCitURVNU X1NFVF9ORU9OUSAoc2V0X25lb25xX2JmMTZfejQsIHN2YmZsb2F0MTZfdCwgYmZsb2F0MTZ4OF90 LAorCSAgejQgPSBzdnNldF9uZW9ucV9iZjE2ICh6NCwgejApLAorCSAgejQgPSBzdnNldF9uZW9u cSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX2YxNi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9u cV9mMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi44MmU1ZTE2ZTc1YWFhYzU3YmQxMjRhZWZkOTBiNzdlMDM2ZjUx ZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9mMTYuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWZp bmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0gKi8K KworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV9mMTZfejI0 OgorKioJcHRydWUJcDMuaCwgdmw4CisqKglzZWwJejI0LmgsIHAzLCB6MC5oLCB6NC5oCisqKgly ZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX2YxNl96MjQsIHN2ZmxvYXQxNl90LCBm bG9hdDE2eDhfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX2YxNiAoejQsIHowKSwKKwkgIHoyNCA9 IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX2YxNl96NDoKKyoqCXB0 cnVlCXAzLmgsIHZsOAorKioJc2VsCSh6MC5ofHo0LmgpLCBwMywgejAuaCwgejQuaAorKioJcmV0 CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9mMTZfejQsIHN2ZmxvYXQxNl90LCBmbG9h dDE2eDhfdCwKKwkgIHo0ID0gc3ZzZXRfbmVvbnFfZjE2ICh6NCwgejApLAorCSAgejQgPSBzdnNl dF9uZW9ucSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25x X2YzMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Nl dF9uZW9ucV9mMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzU0ZGZjMzllZDJhZmIwNmQzZTYwNGE5NWI2ZDYy MDQ2ZDgwZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9mMzIuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7 IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9 IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV9m MzJfejI0OgorKioJcHRydWUJcDMucywgdmw0CisqKglzZWwJejI0LnMsIHAzLCB6MC5zLCB6NC5z CisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX2YzMl96MjQsIHN2ZmxvYXQz Ml90LCBmbG9hdDMyeDRfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX2YzMiAoejQsIHowKSwKKwkg IHoyNCA9IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX2YzMl96NDoK KyoqCXB0cnVlCXAzLnMsIHZsNAorKioJc2VsCSh6MC5zfHo0LnMpLCBwMywgejAucywgejQucwor KioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9mMzJfejQsIHN2ZmxvYXQzMl90 LCBmbG9hdDMyeDRfdCwKKwkgIHo0ID0gc3ZzZXRfbmVvbnFfZjMyICh6NCwgejApLAorCSAgejQg PSBzdnNldF9uZW9ucSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0 X25lb25xX2Y2NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUv YXNtL3NldF9uZW9ucV9mNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWM3MTg4MDAyOWQ0NjBkMGFjN2NlYTNi Y2QyMzhhMmUyZDIyZWVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9mNjQuYwpAQCAtMCwwICsxLDIzIEBA CisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tf QVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9u ZW9ucV9mNjRfejI0OgorKioJcHRydWUJcDMuZCwgdmwyCisqKglzZWwJejI0LmQsIHAzLCB6MC5k LCB6NC5kCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX2Y2NF96MjQsIHN2 ZmxvYXQ2NF90LCBmbG9hdDY0eDJfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX2Y2NCAoejQsIHow KSwKKwkgIHoyNCA9IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX2Y2 NF96NDoKKyoqCXB0cnVlCXAzLmQsIHZsMgorKioJc2VsCSh6MC5kfHo0LmQpLCBwMywgejAuZCwg ejQuZAorKioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9mNjRfejQsIHN2Zmxv YXQ2NF90LCBmbG9hdDY0eDJfdCwKKwkgIHo0ID0gc3ZzZXRfbmVvbnFfZjY0ICh6NCwgejApLAor CSAgejQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9h c20vc2V0X25lb25xX3MxNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2FjbGUvYXNtL3NldF9uZW9ucV9zMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2RjNDJlMTZkNWE3ZWUyZWYy M2Q1ODhhMzZiNGI2ODcxMjgyOTdjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV9zMTYuYwpAQCAtMCwwICsx LDIzIEBACisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1E Q0hFQ0tfQVNNIiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoq IHNldF9uZW9ucV9zMTZfejI0OgorKioJcHRydWUJcDMuaCwgdmw4CisqKglzZWwJejI0LmgsIHAz LCB6MC5oLCB6NC5oCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3MxNl96 MjQsIHN2aW50MTZfdCwgaW50MTZ4OF90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfczE2ICh6NCwg ejApLAorCSAgejI0ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFf czE2X3o0OgorKioJcHRydWUJcDMuaCwgdmw4CisqKglzZWwJKHowLmh8ejQuaCksIHAzLCB6MC5o LCB6NC5oCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3MxNl96NCwgc3Zp bnQxNl90LCBpbnQxNng4X3QsCisJICB6NCA9IHN2c2V0X25lb25xX3MxNiAoejQsIHowKSwKKwkg IHo0ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNt L3NldF9uZW9ucV9zMzIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9h Y2xlL2FzbS9zZXRfbmVvbnFfczMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE2NGM2YjFhNWI4NWJlZTcxODY0 OTQ0MDE2NDk5N2FkOTVjZjNiZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfczMyLmMKQEAgLTAsMCArMSwy MyBAQAorLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICItRENI RUNLX0FTTSIgfSB9ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBz ZXRfbmVvbnFfczMyX3oyNDoKKyoqCXB0cnVlCXAzLnMsIHZsNAorKioJc2VsCXoyNC5zLCBwMywg ejAucywgejQucworKioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9zMzJfejI0 LCBzdmludDMyX3QsIGludDMyeDRfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX3MzMiAoejQsIHow KSwKKwkgIHoyNCA9IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX3Mz Ml96NDoKKyoqCXB0cnVlCXAzLnMsIHZsNAorKioJc2VsCSh6MC5zfHo0LnMpLCBwMywgejAucywg ejQucworKioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV9zMzJfejQsIHN2aW50 MzJfdCwgaW50MzJ4NF90LAorCSAgejQgPSBzdnNldF9uZW9ucV9zMzIgKHo0LCB6MCksCisJICB6 NCA9IHN2c2V0X25lb25xICh6NCwgejApKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9z ZXRfbmVvbnFfczY0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNs ZS9hc20vc2V0X25lb25xX3M2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMjE0ZWQ1NDViMzQ3NDdjNjQ1MDNj N2IyNDhhM2VlODlhNDRmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3M2NC5jCkBAIC0wLDAgKzEsMjMg QEAKKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVD S19BU00iIH0gfSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogc2V0 X25lb25xX3M2NF96MjQ6CisqKglwdHJ1ZQlwMy5kLCB2bDIKKyoqCXNlbAl6MjQuZCwgcDMsIHow LmQsIHo0LmQKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfczY0X3oyNCwg c3ZpbnQ2NF90LCBpbnQ2NHgyX3QsCisJICB6MjQgPSBzdnNldF9uZW9ucV9zNjQgKHo0LCB6MCks CisJICB6MjQgPSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9ucV9zNjRf ejQ6CisqKglwdHJ1ZQlwMy5kLCB2bDIKKyoqCXNlbAkoejAuZHx6NC5kKSwgcDMsIHowLmQsIHo0 LmQKKyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfczY0X3o0LCBzdmludDY0 X3QsIGludDY0eDJfdCwKKwkgIHo0ID0gc3ZzZXRfbmVvbnFfczY0ICh6NCwgejApLAorCSAgejQg PSBzdnNldF9uZW9ucSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0 X25lb25xX3M4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9h c20vc2V0X25lb25xX3M4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk3ZDFjMThiNzJiYjI5OTBhYTU5OGQ2NWY5 NmFkODNjOTljZWZiYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfczguYwpAQCAtMCwwICsxLDIzIEBACisv KiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNN IiB9IH0gKi8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9u cV9zOF96MjQ6CisqKglwdHJ1ZQlwMy5iLCB2bDE2CisqKglzZWwJejI0LmIsIHAzLCB6MC5iLCB6 NC5iCisqKglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3M4X3oyNCwgc3ZpbnQ4 X3QsIGludDh4MTZfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX3M4ICh6NCwgejApLAorCSAgejI0 ID0gc3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfczhfejQ6CisqKglw dHJ1ZQlwMy5iLCB2bDE2CisqKglzZWwJKHowLmJ8ejQuYiksIHAzLCB6MC5iLCB6NC5iCisqKgly ZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3M4X3o0LCBzdmludDhfdCwgaW50OHgx Nl90LAorCSAgejQgPSBzdnNldF9uZW9ucV9zOCAoejQsIHowKSwKKwkgIHo0ID0gc3ZzZXRfbmVv bnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV91MTYu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVv bnFfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQyZjg2MzQwYWZjMDE5YzJkZjgyZWU2YWNlZTZlMmM0MTBl YmJmMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFfdTE2LmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1m aW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICItRENIRUNLX0FTTSIgfSB9ICov CisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBzZXRfbmVvbnFfdTE2X3oy NDoKKyoqCXB0cnVlCXAzLmgsIHZsOAorKioJc2VsCXoyNC5oLCBwMywgejAuaCwgejQuaAorKioJ cmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV91MTZfejI0LCBzdnVpbnQxNl90LCB1 aW50MTZ4OF90LAorCSAgejI0ID0gc3ZzZXRfbmVvbnFfdTE2ICh6NCwgejApLAorCSAgejI0ID0g c3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfdTE2X3o0OgorKioJcHRy dWUJcDMuaCwgdmw4CisqKglzZWwJKHowLmh8ejQuaCksIHAzLCB6MC5oLCB6NC5oCisqKglyZXQK KyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3UxNl96NCwgc3Z1aW50MTZfdCwgdWludDE2 eDhfdCwKKwkgIHo0ID0gc3ZzZXRfbmVvbnFfdTE2ICh6NCwgejApLAorCSAgejQgPSBzdnNldF9u ZW9ucSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3Uz Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9u ZW9ucV91MzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGFiMzYxMjExNzE4NDhhODUwYWQ2NDg3MjkwNTE3OGE4 ZTE3YTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9ucV91MzIuYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRn LWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIi1EQ0hFQ0tfQVNNIiB9IH0g Ki8KKworI2luY2x1ZGUgInRlc3Rfc3ZlX2FjbGUuaCIKKworLyoKKyoqIHNldF9uZW9ucV91MzJf ejI0OgorKioJcHRydWUJcDMucywgdmw0CisqKglzZWwJejI0LnMsIHAzLCB6MC5zLCB6NC5zCisq KglyZXQKKyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3UzMl96MjQsIHN2dWludDMyX3Qs IHVpbnQzMng0X3QsCisJICB6MjQgPSBzdnNldF9uZW9ucV91MzIgKHo0LCB6MCksCisJICB6MjQg PSBzdnNldF9uZW9ucSAoejQsIHowKSkKKworLyoKKyoqIHNldF9uZW9ucV91MzJfejQ6CisqKglw dHJ1ZQlwMy5zLCB2bDQKKyoqCXNlbAkoejAuc3x6NC5zKSwgcDMsIHowLnMsIHo0LnMKKyoqCXJl dAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfdTMyX3o0LCBzdnVpbnQzMl90LCB1aW50 MzJ4NF90LAorCSAgejQgPSBzdnNldF9uZW9ucV91MzIgKHo0LCB6MCksCisJICB6NCA9IHN2c2V0 X25lb25xICh6NCwgejApKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS9zZXRfbmVvbnFf dTY0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vc2V0 X25lb25xX3U2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZmFlZGZmM2IxMWE2MDU5Y2JiNGI5Yjc3M2JhZWZj YmM1YjBlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3U2NC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsg ZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiLURDSEVDS19BU00iIH0g fSAqLworCisjaW5jbHVkZSAidGVzdF9zdmVfYWNsZS5oIgorCisvKgorKiogc2V0X25lb25xX3U2 NF96MjQ6CisqKglwdHJ1ZQlwMy5kLCB2bDIKKyoqCXNlbAl6MjQuZCwgcDMsIHowLmQsIHo0LmQK KyoqCXJldAorKi8KK1RFU1RfU0VUX05FT05RIChzZXRfbmVvbnFfdTY0X3oyNCwgc3Z1aW50NjRf dCwgdWludDY0eDJfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX3U2NCAoejQsIHowKSwKKwkgIHoy NCA9IHN2c2V0X25lb25xICh6NCwgejApKQorCisvKgorKiogc2V0X25lb25xX3U2NF96NDoKKyoq CXB0cnVlCXAzLmQsIHZsMgorKioJc2VsCSh6MC5kfHo0LmQpLCBwMywgejAuZCwgejQuZAorKioJ cmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV91NjRfejQsIHN2dWludDY0X3QsIHVp bnQ2NHgyX3QsCisJICB6NCA9IHN2c2V0X25lb25xX3U2NCAoejQsIHowKSwKKwkgIHo0ID0gc3Zz ZXRfbmVvbnEgKHo0LCB6MCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3NldF9uZW9u cV91OC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Nl dF9uZW9ucV91OC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNjBmZGMxNTVjYWFlNmU0MjBmODA0ZWUxMzJhOTIx ODMwMTU4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvYWNsZS9hc20vc2V0X25lb25xX3U4LmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBk Zy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICItRENIRUNLX0FTTSIgfSB9 ICovCisKKyNpbmNsdWRlICJ0ZXN0X3N2ZV9hY2xlLmgiCisKKy8qCisqKiBzZXRfbmVvbnFfdThf ejI0OgorKioJcHRydWUJcDMuYiwgdmwxNgorKioJc2VsCXoyNC5iLCBwMywgejAuYiwgejQuYgor KioJcmV0CisqLworVEVTVF9TRVRfTkVPTlEgKHNldF9uZW9ucV91OF96MjQsIHN2dWludDhfdCwg dWludDh4MTZfdCwKKwkgIHoyNCA9IHN2c2V0X25lb25xX3U4ICh6NCwgejApLAorCSAgejI0ID0g c3ZzZXRfbmVvbnEgKHo0LCB6MCkpCisKKy8qCisqKiBzZXRfbmVvbnFfdThfejQ6CisqKglwdHJ1 ZQlwMy5iLCB2bDE2CisqKglzZWwJKHowLmJ8ejQuYiksIHAzLCB6MC5iLCB6NC5iCisqKglyZXQK KyovCitURVNUX1NFVF9ORU9OUSAoc2V0X25lb25xX3U4X3o0LCBzdnVpbnQ4X3QsIHVpbnQ4eDE2 X3QsCisJICB6NCA9IHN2c2V0X25lb25xX3U4ICh6NCwgejApLAorCSAgejQgPSBzdnNldF9uZW9u cSAoejQsIHowKSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vdGVzdF9zdmVfYWNsZS5o IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvYXNtL3Rlc3Rfc3Zl X2FjbGUuaAppbmRleCBmYmYzOTJiM2VkNDliZTM3MTU4NzkwZDNkYjY2ODliZGIzYWM3MmVmLi44 NzkyOTE0ZThhNzZlODUwN2U2MDQzODk3YWQ0NGMzNDUwMWFlY2Y1IDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9hc20vdGVzdF9zdmVfYWNsZS5o CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2FzbS90ZXN0 X3N2ZV9hY2xlLmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIFRFU1RfU1ZFX0FDTEVfSAogI2Rl ZmluZSBURVNUX1NWRV9BQ0xFX0ggMQogCi0jaW5jbHVkZSA8YXJtX3N2ZS5oPgorI2luY2x1ZGUg PGFybV9uZW9uX3N2ZV9icmlkZ2UuaD4KIAogI2lmIGRlZmluZWQgKFRFU1RfT1ZFUkxPQURTKQog I2RlZmluZSBJTlZPS0UoQ09ERTEsIENPREUyKSBDT0RFMgpAQCAtNDA1LDYgKzQwNSwyNyBAQAog ICAgIF9fYXNtIHZvbGF0aWxlICgiIiA6OiAidyIgKHo0KSwgInciICh6MjQpKTsJCQlcCiAgIH0K IAorI2RlZmluZSBURVNUX1NFVF9ORU9OUShOQU1FLCBUVFlQRSwgWlRZUEUsIENPREUxLCBDT0RF MikJXAorICBQUk9UTyAoTkFNRSwgdm9pZCwgKFpUWVBFIHowLCBaVFlQRSB6MSwgWlRZUEUgejIs IFpUWVBFIHozLAlcCisJCSAgICAgIFRUWVBFIHo0KSkJCQkJXAorICB7CQkJCQkJCQlcCisgICAg cmVnaXN0ZXIgVFRZUEUgejI0IF9fYXNtICgiejI0Iik7CQkJCVwKKyAgICBJTlZPS0UgKENPREUx LCBDT0RFMik7CQkJCQlcCisgICAgX19hc20gdm9sYXRpbGUgKCIiIDo6ICJ3IiAoejQpLCAidyIg KHoyNCkpOwkJCVwKKyAgfQorCisjZGVmaW5lIFRFU1RfRFVQX05FT05RKE5BTUUsIFRUWVBFLCBa VFlQRSwgQ09ERTEsIENPREUyKQlcCisgIFBST1RPIChOQU1FLCB2b2lkLCAoWlRZUEUgdW51c2Vk MCwgWlRZUEUgdW51c2VkMSwJCVwKKwkJICAgICAgWlRZUEUgdW51c2VkMiwgWlRZUEUgdW51c2Vk MywgVFRZUEUgejQpKQlcCisgIHsJCQkJCQkJCVwKKyAgICByZWdpc3RlciBaVFlQRSB6MCBfX2Fz bSAoInowIik7CQkJCVwKKyAgICByZWdpc3RlciBaVFlQRSB6NF9yZXMgX19hc20gKCJ6NCIpOwkJ CQlcCisgICAgcmVnaXN0ZXIgWlRZUEUgejVfcmVzIF9fYXNtICgiejUiKTsJCQkJXAorICAgIElO Vk9LRSAoQ09ERTEsIENPREUyKTsJCQkJCVwKKyAgICBfX2FzbSB2b2xhdGlsZSAoIiIgOjogInci ICh6MCksICJ3IiAoejRfcmVzKSwJCVwKKwkJICAgICJ3IiAoejVfcmVzKSk7CQkJCVwKKyAgfQor CiAjZGVmaW5lIFRFU1RfVEJMMihOQU1FLCBUVFlQRSwgWlRZUEUsIFVUWVBFLCBDT0RFMSwgQ09E RTIpCVwKICAgUFJPVE8gKE5BTUUsIFpUWVBFLCAoVFRZUEUgejAsIFRUWVBFIHoyLCBVVFlQRSB6 NCkpCQlcCiAgIHsJCQkJCQkJCVwKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9hY2xlL2dlbmVyYWwtYy9kdXBfbmVvbnFfMS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvZ2VuZXJhbC1jL2R1cF9uZW9ucV8xLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uYTA3MTU4ZjZiYThkYzczOWZmNmUzYTVhMTRlNDRjNjE5MTU3ZTJiOQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2dl bmVyYWwtYy9kdXBfbmVvbnFfMS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPWFybXY4LjItYStzdmUg LXN0ZD1jOTkgLVdhbGwgLVdleHRyYSIgfSAqLworCisjaW5jbHVkZSA8YXJtX25lb25fc3ZlX2Jy aWRnZS5oPgorCitmbG9hdDY0eDJfdAorZjEgKGludDh4MTZfdCBzOCwgc3ZpbnQ4X3Qgc3ZlUzgs IGludDY0eDJfdCBzNjQsIGludDh4OHgyX3Qgczh4MikKK3sKKyAgZmxvYXQ2NHgyX3QgZjY0Owor CisgIHN2ZVM4ID0gc3ZkdXBfbmVvbnEgKHM4KTsKKyAgc3ZlUzggPSBzdmR1cF9uZW9ucSAoKTsg LyogeyBkZy1lcnJvciB7dG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ3N2ZHVwX25lb25x J30gfSAqLworICBzdmVTOCA9IHN2ZHVwX25lb25xIChzOCwgMSk7IC8qIHsgZGctZXJyb3Ige3Rv byBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnc3ZkdXBfbmVvbnEnfSB9ICovCisgIHN2ZVM4 ID0gc3ZkdXBfbmVvbnEgKHN2ZVM4KTsgLyogeyBkZy1lcnJvciB7cGFzc2luZyAnc3ZpbnQ4X3Qn IHRvIGFyZ3VtZW50IDEgb2YgJ3N2ZHVwX25lb25xJywgd2hpY2ggZXhwZWN0cyBhIDEyOCBiaXQg TkVPTiB2ZWN0b3IgdHlwZX0gfSAqLworICBmNjQgPSBzdmR1cF9uZW9ucSAoczgpOyAvKiB7IGRn LWVycm9yIHtpbmNvbXBhdGlibGUgdHlwZXMgd2hlbiBhc3NpZ25pbmcgdG8gdHlwZSAnZmxvYXQ2 NHgyX3QnIGZyb20gdHlwZSAnc3ZpbnQ4X3QnfSB9ICovCisgIHN2ZVM4ID0gc3ZkdXBfbmVvbnEg KHM4eDIpOyAvKiB7IGRnLWVycm9yIHtwYXNzaW5nICdpbnQ4eDh4Ml90JyB0byBhcmd1bWVudCAx IG9mICdzdmR1cF9uZW9ucScsIHdoaWNoIGV4cGVjdHMgYSAxMjggYml0IE5FT04gdmVjdG9yIHR5 cGV9IH0gKi8KKyAgc3ZlUzggPSBzdmR1cF9uZW9ucSAoczY0KTsgLyogeyBkZy1lcnJvciB7aW5j b21wYXRpYmxlIHR5cGVzIHdoZW4gYXNzaWduaW5nIHRvIHR5cGUgJ3N2aW50OF90JyBmcm9tIHR5 cGUgJ3N2aW50NjRfdCd9IH0gKi8KKworICByZXR1cm4gZjY0OworfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3N2ZS9hY2xlL2dlbmVyYWwtYy9nZXRfbmVvbnFfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2FjbGUvZ2VuZXJhbC1jL2dldF9uZW9ucV8xLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u OWNjYjQ3YTM4MDlkNzhjOTRkMDRhNmE2MzkxNjNlODYzNTFlNzgxMwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9hY2xlL2dlbmVyYWwtYy9n ZXRfbmVvbnFfMS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPWFybXY4LjItYStzdmUgLXN0ZD1jOTkg LVdhbGwgLVdleHRyYSIgfSAqLworCisjaW5jbHVkZSA8YXJtX25lb25fc3ZlX2JyaWRnZS5oPgor CitmbG9hdDY0eDJfdAorZjEgKGludDh4MTZfdCBzOCwgc3ZpbnQ4X3Qgc3ZlUzgsIHN2aW50OHgy X3Qgc3ZlUzh4Miwgc3ZpbnQ2NF90IHN2ZVM2NCkKK3sKKyAgZmxvYXQ2NHgyX3QgZjY0OworCisg IHM4ID0gc3ZnZXRfbmVvbnEgKHN2ZVM4KTsKKyAgczggPSBzdmdldF9uZW9ucSAoKTsgLyogeyBk Zy1lcnJvciB7dG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ3N2Z2V0X25lb25xJ30gfSAq LworICBzOCA9IHN2Z2V0X25lb25xIChzdmVTOCwgMSk7IC8qIHsgZGctZXJyb3Ige3RvbyBtYW55 IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnc3ZnZXRfbmVvbnEnfSB9ICovCisgIHM4ID0gc3ZnZXRf bmVvbnEgKHM4KTsgLyogeyBkZy1lcnJvciB7cGFzc2luZyAnaW50OHgxNl90JyB0byBhcmd1bWVu dCAxIG9mICdzdmdldF9uZW9ucScsIHdoaWNoIGV4cGVjdHMgYW4gU1ZFIHZlY3RvciB0eXBlfSB9 ICovCisgIGY2NCA9IHN2Z2V0X25lb25xIChzdmVTOCk7IC8qIHsgZGctZXJyb3Ige2luY29tcGF0 aWJsZSB0eXBlcyB3aGVuIGFzc2lnbmluZyB0byB0eXBlICdmbG9hdDY0eDJfdCcgZnJvbSB0eXBl ICdfX0ludDh4MTZfdCd9IH0gKi8KKyAgczggPSBzdmdldF9uZW9ucSAoc3ZlUzh4Mik7IC8qIHsg ZGctZXJyb3Ige3Bhc3NpbmcgJ3N2aW50OHgyX3QnIHRvIGFyZ3VtZW50IDEgb2YgJ3N2Z2V0X25l b25xJywgd2hpY2ggZXhwZWN0cyBhIHNpbmdsZSBTVkUgdmVjdG9yIHJhdGhlciB0aGFuIGEgdHVw bGV9IH0gKi8KKyAgczggPSBzdmdldF9uZW9ucSAoc3ZlUzY0KTsgLyogeyBkZy1lcnJvciB7aW5j b21wYXRpYmxlIHR5cGVzIHdoZW4gYXNzaWduaW5nIHRvIHR5cGUgJ2ludDh4MTZfdCcgZnJvbSB0 eXBlICdfX0ludDY0eDJfdH0gfSAqLworCisgIHJldHVybiBmNjQ7Cit9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvc3ZlL2FjbGUvZ2VuZXJhbC1jL3NldF9uZW9ucV8xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9zdmUvYWNsZS9nZW5lcmFsLWMvc2V0X25lb25xXzEuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5mMDgxNzI4NDJhNzFkMzhhMDE4NTdmM2E4ODA2NjJjYjk5MDg0MmQ5Ci0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FjbGUvZ2VuZXJhbC1j L3NldF9uZW9ucV8xLmMKQEAgLTAsMCArMSwyNyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFyY2g9YXJtdjguMi1hK3N2ZSAtc3RkPWM5 OSAtV2FsbCAtV2V4dHJhIiB9ICovCisKKyNpbmNsdWRlIDxhcm1fbmVvbl9zdmVfYnJpZGdlLmg+ CisKK2Zsb2F0NjR4Ml90CitmMSAoaW50OHgxNl90IHM4LCBzdmludDhfdCBzdmVTOCwgc3ZpbnQ4 eDJfdCBzdmVTOHgyLCBzdmludDY0X3Qgc3ZlUzY0LAorICAgIGludDY0eDJfdCBzNjQsIHN2YmZs b2F0MTZfdCBzdmVCRjE2LCBiZmxvYXQxNng4X3QgYmYxNiwgaW50OHg4X3QgczhfNjRiaXQsCisg ICAgc3Zib29sX3Qgc3Zib29sKQoreworICBmbG9hdDY0eDJfdCBmNjQ7CisKKyAgc3ZlUzggPSBz dnNldF9uZW9ucSAoc3ZlUzgsIHM4KTsKKyAgc3ZlUzY0ID0gc3ZzZXRfbmVvbnEgKHN2ZVM2NCwg czY0KTsKKyAgc3ZlQkYxNiA9IHN2c2V0X25lb25xIChzdmVCRjE2LCBiZjE2KTsKKyAgc3ZlUzgg PSBzdnNldF9uZW9ucSAoKTsgLyogeyBkZy1lcnJvciB7dG9vIGZldyBhcmd1bWVudHMgdG8gZnVu Y3Rpb24gJ3N2c2V0X25lb25xJ30gfSAqLworICBzdmVTOCA9IHN2c2V0X25lb25xIChzdmVTOCwg czgsIDEpOyAvKiB7IGRnLWVycm9yIHt0b28gbWFueSBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ3N2 c2V0X25lb25xJ30gfSAqLworICBzdmVTOCA9IHN2c2V0X25lb25xIChzOCwgczgpOyAvKiB7IGRn LWVycm9yIHtpbmNvbXBhdGlibGUgdHlwZSBmb3IgYXJndW1lbnQgMSBvZiAnc3ZzZXRfbmVvbnFf czgnfSB9ICovCisgIGY2NCA9IHN2c2V0X25lb25xIChzdmVTOCwgczgpOyAvKiB7IGRnLWVycm9y IHtpbmNvbXBhdGlibGUgdHlwZXMgd2hlbiBhc3NpZ25pbmcgdG8gdHlwZSAnZmxvYXQ2NHgyX3Qn IGZyb20gdHlwZSAnc3ZpbnQ4X3QnfSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHN2ZVM4 eDIsIHM4KTsgLyogeyBkZy1lcnJvciB7aW5jb21wYXRpYmxlIHR5cGUgZm9yIGFyZ3VtZW50IDEg b2YgJ3N2c2V0X25lb25xX3M4J30gfSAqLworICBzdmVTOCA9IHN2c2V0X25lb25xIChzdmVTOCwg c3ZlUzgpOyAvKiB7IGRnLWVycm9yIHtwYXNzaW5nICdzdmludDhfdCcgdG8gYXJndW1lbnQgMiBv ZiAnc3ZzZXRfbmVvbnEnLCB3aGljaCBleHBlY3RzIGEgMTI4IGJpdCBORU9OIHZlY3RvciB0eXBl fSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHN2ZVM4LCBzOF82NGJpdCk7IC8qIHsgZGct ZXJyb3Ige3Bhc3NpbmcgJ2ludDh4OF90JyB0byBhcmd1bWVudCAyIG9mICdzdnNldF9uZW9ucScs IHdoaWNoIGV4cGVjdHMgYSAxMjggYml0IE5FT04gdmVjdG9yIHR5cGV9IH0gKi8KKyAgc3ZlUzgg PSBzdnNldF9uZW9ucSAoc3ZlUzY0LCBzNjQpOyAvKiB7IGRnLWVycm9yIHtpbmNvbXBhdGlibGUg dHlwZXMgd2hlbiBhc3NpZ25pbmcgdG8gdHlwZSAnc3ZpbnQ4X3QnIGZyb20gdHlwZSAnc3ZpbnQ2 NF90fSB9ICovCisgIHN2ZVM4ID0gc3ZzZXRfbmVvbnEgKHN2Ym9vbCwgc3Zib29sKTsgLyogeyBk Zy1lcnJvciB7cGFzc2luZyAnc3Zib29sX3QnIHRvIGFyZ3VtZW50IDIgb2YgJ3N2c2V0X25lb25x Jywgd2hpY2ggZXhwZWN0cyBhIDEyOCBiaXQgTkVPTiB2ZWN0b3IgdHlwZX0gfSAqLworCisgIHJl dHVybiBmNjQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo= --------------aoa0PIkDOmIxH0DONIcbughr--