From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2081.outbound.protection.outlook.com [40.107.20.81]) by sourceware.org (Postfix) with ESMTPS id 554823854830 for ; Mon, 31 Oct 2022 11:35:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 554823854830 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=lu3Yj9PMUar+cnlISGPYVnCiCq+wZjxlcw/PQWPqZjRgoTOa2ME+16fgv4M2J4ZbNFtIAdZsJHcmJFSMFBjHEoCsRSOypjFhoyjYcLDYesvJ3pcwRamU9jHGY3uzgrCAkL/mTtIJFBH/5OUAJ7/rY8yk6Ib20uuxsTB0Kxv3VV4v834AinERRvZy0id2gfHjHH82fv0WoYbRGE0Ach46t+j+eYbD4xkIZyMxVe7aEyeSSt1bTEvAWHaprSi7iJSavE/Jlj2dNA+JXV+QW0+sc/aYCLFlOD+ZzpV9HcluXgJaTdzF6wLcPeh7S2b4jvAgRf28xRFulNdisuLOEktexA== 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=CTGvjcbJ64n74AdIGXVnOfBoRvnN4x3JTgi1YafHH1o=; b=PRShAEpve1lLz5N83PPH0Jm0iQm/37PcFF7kPKlgXqwWxY9yLOW9BMto2MhkZQ/3HdAoTGNU/Hs4Ff/ZhsT3VdiMPVcODCnAaxayAjVw89c1SAgQ2QldM4y2W9Ax3NXDo6fk13arAbuOOmPWf0GpoTmYCtRSICZ7spbDyjW03mMOK+xhGclEJsCsLolqWMWr/fEGtFaBCqFke+oVrkZCXHCA0G/duTQIb++5fHKVCg5tYS/Vz0x/vkBKh/mu1UJjJoLY5xOOA9mQgInWUrNlZiWtDZTzXt4sb3Kf+y9jHO3rOSXSS0jc4diPO16F7UHKsx2lGjofrCofmgUOmJN+tA== 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=CTGvjcbJ64n74AdIGXVnOfBoRvnN4x3JTgi1YafHH1o=; b=4dn/+WD9H76Qs2v+X020C3WFLZaEZO/eN6UKFrSvid7mX5bYyFC/LQgUAByXJKDo5mOo6OyXilwkoeZH/dpwd0x7FYqz3JcSg6J6KdwD0N7snEOKo1lvJH2amGcODJEJMGTNx6PKTPvlyYDPfmwXt6io6ZhaeRYoW3AQXx2V/jk= Received: from DUZPR01CA0014.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c3::7) by DB3PR08MB9134.eurprd08.prod.outlook.com (2603:10a6:10:42b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Mon, 31 Oct 2022 11:35:01 +0000 Received: from DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:3c3:cafe::f0) by DUZPR01CA0014.outlook.office365.com (2603:10a6:10:3c3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.23 via Frontend Transport; Mon, 31 Oct 2022 11:35:01 +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 DBAEUR03FT035.mail.protection.outlook.com (100.127.142.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.14 via Frontend Transport; Mon, 31 Oct 2022 11:35:01 +0000 Received: ("Tessian outbound 73ab5f36653e:v130"); Mon, 31 Oct 2022 11:35:01 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5016c3417959.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D52F547E-C75B-4BEC-BE15-F25127C95F83.1; Mon, 31 Oct 2022 11:34:51 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5016c3417959.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 31 Oct 2022 11:34:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NIRz7gXiLW6hLdskQUN2fBTleTJ4yugrZ2Iq8Rme166wOtQaEdLCnCwotrIMOlLifi6aNk/N9AaG954MV4VJOTSsoMpLn8gaQwim+KIess79tHWGk+llPYTkdK7IHZ5jupNY4GESlfQvai+RuKPyCB2QBE6gvvXMCk7QnizTxYB8gBHzm5XyEjr6OEwFi6t75xAtxgf/4oYxHpy7bJcRoF2j79AloQV7yrQ/Zy1g0E2ScsZtshqXuujsund/S1drNn/r3BRyev8NIwNg3ZBG2nAwtP6stRWCIQRosr5IghjYMVQyXIKxUgckQqQDEuzYXg1Nq2TVu1bXzTmobXm4lw== 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=CTGvjcbJ64n74AdIGXVnOfBoRvnN4x3JTgi1YafHH1o=; b=PLLDAX02ruvQaNjKUOpf5ggZZps1tTjhqNQJVPXFKz1t7inV45n68Q5aO72tI0+JVwiPCWvxgeDpdcDSh6EJ/bd7wFaPJLnfQHENgLhyTKJNoBk/t+hdsNfxlyowuuMObtgdzc/FJM1lyBxvjcMJC5GzTrEOWiz29bGp3o1Feq6sDbcVNT1gWTY5GeVQZze5ZD84YfBf8fIh4mhs65Mkz9HJyWGchP1bXUYoVgTMrXZ+ywJRW0rI3VgX9YB0owGgvMSxYI0JYKHHb6hnUswFlAC6CgAIhCUoOJuRVpjXJdsBg+FA7jmxmO/3lTE2MQ6IU8ys6bdCPsR1AXTcr5I1MQ== 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=CTGvjcbJ64n74AdIGXVnOfBoRvnN4x3JTgi1YafHH1o=; b=4dn/+WD9H76Qs2v+X020C3WFLZaEZO/eN6UKFrSvid7mX5bYyFC/LQgUAByXJKDo5mOo6OyXilwkoeZH/dpwd0x7FYqz3JcSg6J6KdwD0N7snEOKo1lvJH2amGcODJEJMGTNx6PKTPvlyYDPfmwXt6io6ZhaeRYoW3AQXx2V/jk= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DU0PR08MB9439.eurprd08.prod.outlook.com (2603:10a6:10:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Mon, 31 Oct 2022 11:34:45 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52%4]) with mapi id 15.20.5769.019; Mon, 31 Oct 2022 11:34:45 +0000 From: Tamar Christina To: Tamar Christina , "gcc-patches@gcc.gnu.org" CC: nd , Richard Earnshaw , Marcus Shawcroft , Kyrylo Tkachov , Richard Sandiford Subject: RE: [PATCH 2/4]AArch64 Add implementation for pow2 bitmask division. Thread-Topic: [PATCH 2/4]AArch64 Add implementation for pow2 bitmask division. Thread-Index: AQHYzy+Kfb5k+Bz5BUWOgiTGQFH6ta4omxcw Date: Mon, 31 Oct 2022 11:34:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 0442B47A546AA940B6BD3EC6FF6A29BC.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|DU0PR08MB9439:EE_|DBAEUR03FT035:EE_|DB3PR08MB9134:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ec25447-7f14-49be-aa7e-08dabb33f272 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: 5erIlNVQ7VtLI5p71cy54FT3MzhWIPKfdB1IHbWcMzJFSyfE6Z/B+wi+7/O8Kh+9vwvU+Il2At2yqnxPaXqjONX399J6u1USKh9zybTs0h9Jl2MaWxdqdlb07BO8iL0h3ej18JPNJGTqvNdNdvA2/xuX4437EeQ2vjGbCPGf1qm6dHN68EwXI76HRxYaXdhhyNOk5u29Rx8u8ci/nZcHMgtUeIWf7pJNLGl1YNDz6UZhVUTGngxHVf9Vx7wMiRzG1o7jlf6uwzoGSYklLElQZLvP0Qs3d5QNgviDAUFWkJDUAOxsECXMSUhkdjV9X03BTgLR1vuCL3+Q+QHftiwUWN750pMyjP0bcY0wxBnd+Dgc/g87zKBnk6T/WbA9gO7rmF09PY0KmXOpo7YnI8TXQ73APEfO4EzRyQJuFIuyU3jKgottAwlnOzpCepFu5o7QxIX+PRs1D5pAcMLmg7RZGOyRIB2t3ebNuRqECT+6iiRfh4bY5aVqajbEMQR0YeDQbgYCwv9SdAcVJ0Zqns0khTDi9tRfGA2n7f83Pj7HUmyobI6nmPHDKlE8fj+Kxc3aoGWPm7AkduBY830NZ/EpOj4LWXq9K8DPWnyDc8+OSWLeVDIHBbWoBa99ZFqfRVG+ZpHwsDYgbbNUjd2B4L7gJWhkfLv1CXgROsLA58Z0HaRHBL4b8O5F6BuLl9oztWYhOL80rAYHWlqXL34ruhuuKttQif6UY1BFg72dgUJMWtzhHhSf2nBkKiG340OEg6LVaDnB6oYU/lh/FmnQNLsn95hn4VnEBTMfPTbkeK+Kr8pMqQ9/Uq5jpUqp4m3xxyo3 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(346002)(366004)(376002)(396003)(39860400002)(451199015)(76116006)(38070700005)(186003)(8676002)(4326008)(66946007)(66556008)(66476007)(55016003)(64756008)(66446008)(110136005)(54906003)(33656002)(5660300002)(316002)(6506007)(4743002)(9686003)(8936002)(52536014)(26005)(30864003)(7696005)(86362001)(53546011)(41300700001)(83380400001)(122000001)(99936003)(478600001)(71200400001)(2906002)(84970400001)(38100700002)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB5325644C591522E3DB62466BFF379VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9439 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: DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3799fb96-7e9f-427f-f81d-08dabb33e891 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sq/SSLVEhUBQwosjaBZ6znPGlLU6WnLxGwl2l791oLHqxr7eD8Pjp5mtNwz2+Xp3WveQKFFx/8OtY9XoKTpnQhiRLk1SmGN26CgbGfYj6jEcjOKJxn869L+W91krZvLS4gXtIitVmrek/JiN+8TM5WAeK+sJ1d/5Y383cjk+mWOfnXF97Qu3BvSNmeH6TDIRyoiWDWnCBU765bk+MdYCg/GTZnkkHhFsTbACJPmY2sAjkfJCs4n8KmxPk+k2itrK6uEgLuao0wE5mZ6wtEzcZDOfILWCGpT5AyB/FWRbFgI0ymdsnhmev1CXTMDWnELT1PKRB6Qtc+LShknC+lD1+CZTu/Oy83piW8YGaw0aU1nVKySA+8ySSrK717fXz0XVrtclTtuTwKX8F5A8s/FxeROwzg9RaxGu+doenKJ1JyqpQ4RaPGwdqr4lNXQJpsBp+uYo+D3sO6LkLA+bdfbGS8RzxgR9ryYJ/cxaQSP9LnGFaZ0hErHJhxgZsPzavh8EBA3Z5kZpK8k+Pzb6wdQJlwcIe4pjPX9Sj0h99U/RIymbMuLi2aoraZECMkGj90o+KBQQISgByJ9GtI0VyQ2FT6ilLaQlY0XlqtGZcEx7OS1A3A++AXPg2uGcXIAMc8aEl2LM/soj9bAaQOSfht0HJqjG3euQcBp0HxkLpDM6Wpr2b9m/ujkBsDEZ3IemHJleTdDDIPFqu1ItOWYhEewsXiNLj2/+KKo8UhHfsM616kt2joi37KaKaPjpcKufJ+Y8cYVqCNaxgwB2mIOgqgP2MA== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(346002)(39850400004)(136003)(376002)(396003)(451199015)(36840700001)(46966006)(82740400003)(478600001)(84970400001)(47076005)(2906002)(336012)(36860700001)(83380400001)(99936003)(356005)(4326008)(70206006)(70586007)(8676002)(55016003)(40480700001)(81166007)(82310400005)(186003)(53546011)(41300700001)(86362001)(235185007)(5660300002)(6506007)(7696005)(33964004)(54906003)(33656002)(110136005)(9686003)(8936002)(30864003)(316002)(26005)(4743002)(52536014);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2022 11:35:01.1673 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9ec25447-7f14-49be-aa7e-08dabb33f272 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: DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB9134 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_VI1PR08MB5325644C591522E3DB62466BFF379VI1PR08MB5325eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQWxsLA0KDQpQaW5nLCBhbmQgdXBkYXRlZCBwYXRjaCBiYXNlZCBvbiBtaWQtZW5kIGNoYW5n ZXMuDQoNCkJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQgb24gYWFyY2g2NC1ub25lLWxpbnV4LWdudSBh bmQgbm8gaXNzdWVzLg0KDQpPayBmb3IgbWFzdGVyPw0KDQpUaGFua3MsDQpUYW1hcg0KDQpnY2Mv Q2hhbmdlTG9nOg0KDQoJKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgKEBhYXJjaDY0 X2JpdG1hc2tfdWRpdjxtb2RlPjMpOiBOZXcuDQoJKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LmNj IChhYXJjaDY0X3ZlY3Rvcml6ZV9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3RhbnQpOiBOZXcuDQoN CmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KDQoJKiBnY2MudGFyZ2V0L2FhcmNoNjQvZGl2LWJ5 LWJpdG1hc2suYzogTmV3IHRlc3QuDQoNCi0tLSBpbmxpbmUgY29weSBvZiBwYXRjaCAtLS0NCg0K ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kDQppbmRleCA1ODdhNDVkNzc3MjFlMWIzOWFjY2Jh ZDdkYmVjYTRkNzQxZWNjYjEwLi5mNDE1MjE2MDA4NGQ2YjZmMzRiZDY5ZjBiYTYzODZjMWFiNTBm NzdlIDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZA0KKysr IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZA0KQEAgLTQ4MzEsNiArNDgzMSw2 NSBAQCAoZGVmaW5lX2V4cGFuZCAiYWFyY2g2NF88c3VyPjxhZGRzdWI+aG4yPG1vZGU+Ig0KICAg fQ0KICkNCiANCis7OyBkaXYgb3B0aW1pemF0aW9ucyB1c2luZyBuYXJyb3dpbmdzDQorOzsgd2Ug Y2FuIGRvIHRoZSBkaXZpc2lvbiBlLmcuIHNob3J0cyBieSAyNTUgZmFzdGVyIGJ5IGNhbGN1bGF0 aW5nIGl0IGFzDQorOzsgKHggKyAoKHggKyAyNTcpID4+IDgpKSA+PiA4IGFzc3VtaW5nIHRoZSBv cGVyYXRpb24gaXMgZG9uZSBpbg0KKzs7IGRvdWJsZSB0aGUgcHJlY2lzaW9uIG9mIHguDQorOzsN Cis7OyBJZiB3ZSBpbWFnaW5lIGEgc2hvcnQgYXMgYmVpbmcgY29tcG9zZWQgb2YgdHdvIGJsb2Nr cyBvZiBieXRlcyB0aGVuDQorOzsgYWRkaW5nIDI1NyBvciAwYjAwMDBfMDAwMV8wMDAwXzAwMDEg dG8gdGhlIG51bWJlciBpcyBlcXVpdmFsZW4gdG8NCis7OyBhZGRpbmcgMSB0byBlYWNoIHN1YiBj b21wb25lbnQ6DQorOzsNCis7OyAgICAgIHNob3J0IHZhbHVlIG9mIDE2LWJpdHMNCis7OyDilIzi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCis7OyDilIIgICAgICAgICAg ICAgIOKUgiAgICAgICAgICAgICAgICDilIINCis7OyDilJTilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilJgNCis7OyAgIDgtYml0IHBhcnQxIOKWsiAgOC1iaXQgcGFydDIgICDi lrINCis7OyAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCis7OyAgICAgICAg ICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCis7OyAgICAgICAgICAgICAgKzEgICAgICAg ICAgICAgICArMQ0KKzs7DQorOzsgYWZ0ZXIgdGhlIGZpcnN0IGFkZGl0aW9uLCB3ZSBoYXZlIHRv IHNoaWZ0IHJpZ2h0IGJ5IDgsIGFuZCBuYXJyb3cgdGhlDQorOzsgcmVzdWx0cyBiYWNrIHRvIGEg Ynl0ZS4gIFJlbWVtYmVyIHRoYXQgdGhlIGFkZGl0aW9uIG11c3QgYmUgZG9uZSBpbg0KKzs7IGRv dWJsZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSBpbnB1dC4gIFNpbmNlIDggaXMgaGFsZiB0aGUgc2l6 ZSBvZiBhIHNob3J0DQorOzsgd2UgY2FuIHVzZSBhIG5hcnJvd2luZyBoYWxmaW5nIGluc3RydWN0 aW9uIGluIEFBcmNoNjQsIGFkZGhuIHdoaWNoIGFsc28NCis7OyBkb2VzIHRoZSBhZGRpdGlvbiBp biBhIHdpZGVyIHByZWNpc2lvbiBhbmQgbmFycm93cyBiYWNrIHRvIGEgYnl0ZS4gIFRoZQ0KKzs7 IHNoaWZ0IGl0c2VsZiBpcyBpbXBsaWNpdCBpbiB0aGUgb3BlcmF0aW9uIGFzIGl0IHdyaXRlcyBi YWNrIG9ubHkgdGhlIHRvcA0KKzs7IGhhbGYgb2YgdGhlIHJlc3VsdC4gaS5lLiBiaXRzIDIqZXNp emUtMTplc2l6ZS4NCis7Ow0KKzs7IFNpbmNlIHdlIGhhdmUgbmFycm93ZWQgdGhlIHJlc3VsdCBv ZiB0aGUgZmlyc3QgcGFydCBiYWNrIHRvIGEgYnl0ZSwgZm9yDQorOzsgdGhlIHNlY29uZCBhZGRp dGlvbiB3ZSBjYW4gdXNlIGEgd2lkZW5pbmcgYWRkaXRpb24sIHVhZGR3Lg0KKzs7DQorOzsgRm9y IHRoZSBmaW5hbHkgc2hpZnQsIHNpbmNlIGl0J3MgdW5zaWduZWQgYXJpdGhtYXRpYyB3ZSBlbWl0 IGFuIHVzaHIgYnkgOA0KKzs7IHRvIHNoaWZ0IGFuZCB0aGUgdmVjdG9yaXplci4NCis7Ow0KKzs7 IFRoZSBzaGlmdCBpcyBsYXRlciBvcHRpbWl6ZWQgYnkgY29tYmluZSB0byBhIHV6cDIgd2l0aCBt b3ZpICMwLg0KKyhkZWZpbmVfZXhwYW5kICJAYWFyY2g2NF9iaXRtYXNrX3VkaXY8bW9kZT4zIg0K KyAgWyhtYXRjaF9vcGVyYW5kOlZRTiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCisgICAobWF0Y2hf b3BlcmFuZDpWUU4gMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQorICAgKG1hdGNoX29wZXJhbmQ6VlFO IDIgImltbWVkaWF0ZV9vcGVyYW5kIildDQorICAiVEFSR0VUX1NJTUQiDQorew0KKyAgdW5zaWdu ZWQgSE9TVF9XSURFX0lOVCBzaXplDQorICAgID0gKDFVTEwgPDwgR0VUX01PREVfVU5JVF9CSVRT SVpFICg8Vk5BUlJPV1E+bW9kZSkpIC0gMTsNCisgIGlmICghQ09OU1RfVkVDVE9SX1AgKG9wZXJh bmRzWzJdKQ0KKyAgICAgIHx8IGNvbnN0X3ZlY3Rvcl9lbmNvZGVkX25lbHRzIChvcGVyYW5kc1sy XSkgIT0gMQ0KKyAgICAgIHx8IHNpemUgIT0gVUlOVFZBTCAoQ09OU1RfVkVDVE9SX0VMVCAob3Bl cmFuZHNbMl0sIDApKSkNCisgICAgRkFJTDsNCisNCisgIHJ0eCBhZGRlbmQgPSBnZW5fcmVnX3J0 eCAoPE1PREU+bW9kZSk7DQorICBydHggdmFsID0gYWFyY2g2NF9zaW1kX2dlbl9jb25zdF92ZWN0 b3JfZHVwICg8Vk5BUlJPV1EyPm1vZGUsIDEpOw0KKyAgZW1pdF9tb3ZlX2luc24gKGFkZGVuZCwg bG93cGFydF9zdWJyZWcgKDxNT0RFPm1vZGUsIHZhbCwgPFZOQVJST1dRMj5tb2RlKSk7DQorICBy dHggdG1wMSA9IGdlbl9yZWdfcnR4ICg8Vk5BUlJPV1E+bW9kZSk7DQorICBydHggdG1wMiA9IGdl bl9yZWdfcnR4ICg8TU9ERT5tb2RlKTsNCisgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYWRkaG48 bW9kZT4gKHRtcDEsIG9wZXJhbmRzWzFdLCBhZGRlbmQpKTsNCisgIHVuc2lnbmVkIGJpdHNpemUg PSBHRVRfTU9ERV9VTklUX0JJVFNJWkUgKDxWTkFSUk9XUT5tb2RlKTsNCisgIHJ0eCBzaGlmdF92 ZWN0b3IgPSBhYXJjaDY0X3NpbWRfZ2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKDxNT0RFPm1vZGUsIGJp dHNpemUpOw0KKyAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF91YWRkdzxWbmFycm93cT4gKHRtcDIs IG9wZXJhbmRzWzFdLCB0bXAxKSk7DQorICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X3NpbWRfbHNo cjxtb2RlPiAob3BlcmFuZHNbMF0sIHRtcDIsIHNoaWZ0X3ZlY3RvcikpOw0KKyAgRE9ORTsNCit9 KQ0KKw0KIDs7IHBtdWwuDQogDQogKGRlZmluZV9pbnNuICJhYXJjaDY0X3BtdWw8bW9kZT4iDQpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jYw0KaW5kZXggNGI0ODZhZWVhOTBlYTJhZmI5Y2RkOTZhNGRiZTE1YzVi YjJhYmQ3YS4uZDNjMzY1MGQ3ZDcyOGY1NmFkYjY1MTU0MTI3ZGM3YjcyMzg2YzVhNyAxMDA2NDQN Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQorKysgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jYw0KQEAgLTI0MTQ2LDYgKzI0MTQ2LDQwIEBAIGFhcmNoNjRfdmVjdG9y aXplX3ZlY19wZXJtX2NvbnN0IChtYWNoaW5lX21vZGUgdm1vZGUsIG1hY2hpbmVfbW9kZSBvcF9t b2RlLA0KICAgcmV0dXJuIHJldDsNCiB9DQogDQorLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJ WkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NPTlNULiAgKi8NCisNCitib29sDQorYWFyY2g2NF92ZWN0 b3JpemVfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLA0K KwkJCQkJICAgICAgIHRyZWUgdmVjdHlwZSwgd2lkZV9pbnQgY3N0LA0KKwkJCQkJICAgICAgIHJ0 eCAqb3V0cHV0LCBydHggaW4wLCBydHggaW4xKQ0KK3sNCisgIGlmIChjb2RlICE9IFRSVU5DX0RJ Vl9FWFBSDQorICAgICAgfHwgIVRZUEVfVU5TSUdORUQgKHZlY3R5cGUpKQ0KKyAgICByZXR1cm4g ZmFsc2U7DQorDQorICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSBhYXJjaDY0X2NsYXNzaWZ5X3ZlY3Rv cl9tb2RlIChUWVBFX01PREUgKHZlY3R5cGUpKTsNCisgIGlmICgoZmxhZ3MgJiBWRUNfQU5ZX1NW RSkgJiYgIVRBUkdFVF9TVkUyKQ0KKyAgICByZXR1cm4gZmFsc2U7DQorDQorICBpZiAoaW4wID09 IE5VTExfUlRYICYmIGluMSA9PSBOVUxMX1JUWCkNCisgICAgew0KKyAgICAgIHdpZGVfaW50IHZh bCA9IHdpOjphZGQgKGNzdCwgMSk7DQorICAgICAgaW50IHBvdyA9IHdpOjpleGFjdF9sb2cyICh2 YWwpOw0KKyAgICAgIHJldHVybiBwb3cgPT0gKGludCkoZWxlbWVudF9wcmVjaXNpb24gKHZlY3R5 cGUpIC8gMik7DQorICAgIH0NCisNCisgIGlmICghVkVDVE9SX1RZUEVfUCAodmVjdHlwZSkpDQor ICAgcmV0dXJuIGZhbHNlOw0KKw0KKyAgZ2NjX2Fzc2VydCAob3V0cHV0KTsNCisNCisgIGlmICgh Km91dHB1dCkNCisgICAgKm91dHB1dCA9IGdlbl9yZWdfcnR4IChUWVBFX01PREUgKHZlY3R5cGUp KTsNCisNCisgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYml0bWFza191ZGl2MyAoVFlQRV9NT0RF ICh2ZWN0eXBlKSwgKm91dHB1dCwgaW4wLCBpbjEpKTsNCisgIHJldHVybiB0cnVlOw0KK30NCisN CiAvKiBHZW5lcmF0ZSBhIGJ5dGUgcGVybXV0ZSBtYXNrIGZvciBhIHJlZ2lzdGVyIG9mIG1vZGUg TU9ERSwNCiAgICB3aGljaCBoYXMgTlVOSVRTIHVuaXRzLiAgKi8NCiANCkBAIC0yNzYwNiw2ICsy NzY0MCwxMCBAQCBhYXJjaDY0X2xpYmdjY19mbG9hdGluZ19tb2RlX3N1cHBvcnRlZF9wDQogI3Vu ZGVmIFRBUkdFVF9WRUNUT1JfQUxJR05NRU5UDQogI2RlZmluZSBUQVJHRVRfVkVDVE9SX0FMSUdO TUVOVCBhYXJjaDY0X3NpbWRfdmVjdG9yX2FsaWdubWVudA0KIA0KKyN1bmRlZiBUQVJHRVRfVkVD VE9SSVpFX0NBTl9TUEVDSUFMX0RJVl9CWV9DT05TVA0KKyNkZWZpbmUgVEFSR0VUX1ZFQ1RPUkla RV9DQU5fU1BFQ0lBTF9ESVZfQllfQ09OU1QgXA0KKyAgYWFyY2g2NF92ZWN0b3JpemVfY2FuX3Nw ZWNpYWxfZGl2X2J5X2NvbnN0YW50DQorDQogI3VuZGVmIFRBUkdFVF9WRUNUT1JJWkVfUFJFRkVS UkVEX1ZFQ1RPUl9BTElHTk1FTlQNCiAjZGVmaW5lIFRBUkdFVF9WRUNUT1JJWkVfUFJFRkVSUkVE X1ZFQ1RPUl9BTElHTk1FTlQgXA0KICAgYWFyY2g2NF92ZWN0b3JpemVfcHJlZmVycmVkX3ZlY3Rv cl9hbGlnbm1lbnQNCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9kaXYtYnktYml0bWFzay5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZGl2 LWJ5LWJpdG1hc2suYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNTM1NzkxYmE3MjU4MzAyZTBjMmNmNDRhYjIx MWNkMjQ2ZDgyZDUNCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2Rpdi1ieS1iaXRtYXNrLmMNCkBAIC0wLDAgKzEsNjEgQEANCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLw0KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItTzMgLXN0ZD1jOTki IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIiIg eyB0YXJnZXQgeyBsZSB9IH0gfSB9ICovDQorDQorI2luY2x1ZGUgPHN0ZGludC5oPg0KKw0KKyNw cmFnbWEgR0NDIHRhcmdldCAiK25vc3ZlIg0KKw0KKy8qDQorKiogZHJhd19iaXRtYXAxOg0KKyoq IC4uLg0KKyoqIAlhZGRobgl2WzAtOV0rLjhiLCB2WzAtOV0rLjhoLCB2WzAtOV0rLjhoDQorKiog CWFkZGhuCXZbMC05XSsuOGIsIHZbMC05XSsuOGgsIHZbMC05XSsuOGgNCisqKiAJdWFkZHcJdlsw LTldKy44aCwgdlswLTldKy44aCwgdlswLTldKy44Yg0KKyoqIAl1YWRkdwl2WzAtOV0rLjhoLCB2 WzAtOV0rLjhoLCB2WzAtOV0rLjhiDQorKiogCXV6cDIJdlswLTldKy4xNmIsIHZbMC05XSsuMTZi LCB2WzAtOV0rLjE2Yg0KKyoqIC4uLg0KKyovDQordm9pZCBkcmF3X2JpdG1hcDEodWludDhfdCog cmVzdHJpY3QgcGl4ZWwsIHVpbnQ4X3QgbGV2ZWwsIGludCBuKQ0KK3sNCisgIGZvciAoaW50IGkg PSAwOyBpIDwgKG4gJiAtMTYpOyBpKz0xKQ0KKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqIGxl dmVsKSAvIDB4ZmY7DQorfQ0KKw0KK3ZvaWQgZHJhd19iaXRtYXAyKHVpbnQ4X3QqIHJlc3RyaWN0 IHBpeGVsLCB1aW50OF90IGxldmVsLCBpbnQgbikNCit7DQorICBmb3IgKGludCBpID0gMDsgaSA8 IChuICYgLTE2KTsgaSs9MSkNCisgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0gKiBsZXZlbCkgLyAw eGZlOw0KK30NCisNCisvKg0KKyoqIGRyYXdfYml0bWFwMzoNCisqKiAuLi4NCisqKiAJYWRkaG4J dlswLTldKy40aCwgdlswLTldKy40cywgdlswLTldKy40cw0KKyoqIAlhZGRobgl2WzAtOV0rLjRo LCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzDQorKiogCXVhZGR3CXZbMC05XSsuNHMsIHZbMC05XSsu NHMsIHZbMC05XSsuNGgNCisqKiAJdWFkZHcJdlswLTldKy40cywgdlswLTldKy40cywgdlswLTld Ky40aA0KKyoqIAl1enAyCXZbMC05XSsuOGgsIHZbMC05XSsuOGgsIHZbMC05XSsuOGgNCisqKiAu Li4NCisqLw0KK3ZvaWQgZHJhd19iaXRtYXAzKHVpbnQxNl90KiByZXN0cmljdCBwaXhlbCwgdWlu dDE2X3QgbGV2ZWwsIGludCBuKQ0KK3sNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYp OyBpKz0xKQ0KKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqIGxldmVsKSAvIDB4ZmZmZlU7DQor fQ0KKw0KKy8qDQorKiogZHJhd19iaXRtYXA0Og0KKyoqIC4uLg0KKyoqIAlhZGRobgl2WzAtOV0r LjJzLCB2WzAtOV0rLjJkLCB2WzAtOV0rLjJkDQorKiogCWFkZGhuCXZbMC05XSsuMnMsIHZbMC05 XSsuMmQsIHZbMC05XSsuMmQNCisqKiAJdWFkZHcJdlswLTldKy4yZCwgdlswLTldKy4yZCwgdlsw LTldKy4ycw0KKyoqIAl1YWRkdwl2WzAtOV0rLjJkLCB2WzAtOV0rLjJkLCB2WzAtOV0rLjJzDQor KiogCXV6cDIJdlswLTldKy40cywgdlswLTldKy40cywgdlswLTldKy40cw0KKyoqIC4uLg0KKyov DQordm9pZCBkcmF3X2JpdG1hcDQodWludDMyX3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50MzJfdCBs ZXZlbCwgaW50IG4pDQorew0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrPTEp DQorICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogKHVpbnQ2NF90KWxldmVsKSAvIDB4ZmZmZmZm ZmZVTDsNCit9DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGFtYXIg Q2hyaXN0aW5hIDx0YW1hci5jaHJpc3RpbmFAYXJtLmNvbT4NCj4gU2VudDogRnJpZGF5LCBTZXB0 ZW1iZXIgMjMsIDIwMjIgMTA6MzQgQU0NCj4gVG86IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnDQo+ IENjOiBuZCA8bmRAYXJtLmNvbT47IFJpY2hhcmQgRWFybnNoYXcgPFJpY2hhcmQuRWFybnNoYXdA YXJtLmNvbT47DQo+IE1hcmN1cyBTaGF3Y3JvZnQgPE1hcmN1cy5TaGF3Y3JvZnRAYXJtLmNvbT47 IEt5cnlsbyBUa2FjaG92DQo+IDxLeXJ5bG8uVGthY2hvdkBhcm0uY29tPjsgUmljaGFyZCBTYW5k aWZvcmQNCj4gPFJpY2hhcmQuU2FuZGlmb3JkQGFybS5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCAy LzRdQUFyY2g2NCBBZGQgaW1wbGVtZW50YXRpb24gZm9yIHBvdzIgYml0bWFzayBkaXZpc2lvbi4N Cj4gDQo+IEhpIEFsbCwNCj4gDQo+IFRoaXMgYWRkcyBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhl IG5ldyBvcHRhYiBmb3IgdW5zaWduZWQgcG93MiBiaXRtYXNrDQo+IGZvciBBQXJjaDY0Lg0KPiAN Cj4gVGhlIGltcGxlbWVudGF0aW9uIHJld3JpdGVzOg0KPiANCj4gICAgeCA9IHkgLyAoMiBeIChz aXplb2YgKHkpLzIpLTENCj4gDQo+IGludG8gZS5nLiAoZm9yIGJ5dGVzKQ0KPiANCj4gICAgKHgg KyAoKHggKyAyNTcpID4+IDgpKSA+PiA4DQo+IA0KPiB3aGVyZSBpdCdzIHJlcXVpcmVkIHRoYXQg dGhlIGFkZGl0aW9ucyBiZSBkb25lIGluIGRvdWJsZSB0aGUgcHJlY2lzaW9uIG9mIHgNCj4gc3Vj aCB0aGF0IHdlIGRvbid0IGxvc2UgYW55IGJpdHMgZHVyaW5nIGFuIG92ZXJmbG93Lg0KPiANCj4g RXNzZW50aWFsbHkgdGhlIHNlcXVlbmNlIGRlY29tcG9zZXMgdGhlIGRpdmlzaW9uIGludG8gZG9p bmcgdHdvIHNtYWxsZXINCj4gZGl2aXNpb25zLCBvbmUgZm9yIHRoZSB0b3AgYW5kIGJvdHRvbSBw YXJ0cyBvZiB0aGUgbnVtYmVyIGFuZCBhZGRpbmcgdGhlDQo+IHJlc3VsdHMgYmFjayB0b2dldGhl ci4NCj4gDQo+IFRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgc2hpZnQgYnkgOCB3b3VsZCBi ZSBkaXZpc2lvbiBieSAyNTYgd2UgYWRkIDEgdG8NCj4gYm90aCBwYXJ0cyBvZiB4IHN1Y2ggdGhh dCB3aGVuIDI1NSB3ZSBzdGlsbCBnZXQgMSBhcyB0aGUgYW5zd2VyLg0KPiANCj4gQmVjYXVzZSB0 aGUgYW1vdW50IHdlIHNoaWZ0IGFyZSBoYWxmIHRoZSBvcmlnaW5hbCBkYXRhdHlwZSB3ZSBjYW4g dXNlIHRoZQ0KPiBoYWxmaW5nIGluc3RydWN0aW9ucyB0aGUgSVNBIHByb3ZpZGVzIHRvIGRvIHRo ZSBvcGVyYXRpb24gaW5zdGVhZCBvZiB1c2luZw0KPiBhY3R1YWwgc2hpZnRzLg0KPiANCj4gRm9y IEFBcmNoNjQgdGhpcyBtZWFucyB3ZSBnZW5lcmF0ZSBmb3I6DQo+IA0KPiB2b2lkIGRyYXdfYml0 bWFwMSh1aW50OF90KiByZXN0cmljdCBwaXhlbCwgdWludDhfdCBsZXZlbCwgaW50IG4pIHsNCj4g ICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSs9MSkNCj4gICAgIHBpeGVsW2ldID0g KHBpeGVsW2ldICogbGV2ZWwpIC8gMHhmZjsgfQ0KPiANCj4gdGhlIGZvbGxvd2luZzoNCj4gDQo+ IAltb3ZpICAgIHYzLjE2YiwgMHgxDQo+IAl1bXVsbDIgIHYxLjhoLCB2MC4xNmIsIHYyLjE2Yg0K PiAJdW11bGwgICB2MC44aCwgdjAuOGIsIHYyLjhiDQo+IAlhZGRobiAgIHY1LjhiLCB2MS44aCwg djMuOGgNCj4gCWFkZGhuICAgdjQuOGIsIHYwLjhoLCB2My44aA0KPiAJdWFkZHcgICB2MS44aCwg djEuOGgsIHY1LjhiDQo+IAl1YWRkdyAgIHYwLjhoLCB2MC44aCwgdjQuOGINCj4gCXV6cDIgICAg djAuMTZiLCB2MC4xNmIsIHYxLjE2Yg0KPiANCj4gaW5zdGVhZCBvZjoNCj4gDQo+IAl1bXVsbCAg IHYyLjhoLCB2MS44YiwgdjUuOGINCj4gCXVtdWxsMiAgdjEuOGgsIHYxLjE2YiwgdjUuMTZiDQo+ IAl1bXVsbCAgIHYwLjRzLCB2Mi40aCwgdjMuNGgNCj4gCXVtdWxsMiAgdjIuNHMsIHYyLjhoLCB2 My44aA0KPiAJdW11bGwgICB2NC40cywgdjEuNGgsIHYzLjRoDQo+IAl1bXVsbDIgIHYxLjRzLCB2 MS44aCwgdjMuOGgNCj4gCXV6cDIgICAgdjAuOGgsIHYwLjhoLCB2Mi44aA0KPiAJdXpwMiAgICB2 MS44aCwgdjQuOGgsIHYxLjhoDQo+IAlzaHJuICAgIHYwLjhiLCB2MC44aCwgNw0KPiAJc2hybjIg ICB2MC4xNmIsIHYxLjhoLCA3DQo+IA0KPiBXaGljaCByZXN1bHRzIGluIHNpZ25pZmljYW50bHkg ZmFzdGVyIGNvZGUuDQo+IA0KPiBUaGFua3MgZm9yIFdpbGNvIGZvciB0aGUgY29uY2VwdC4NCj4g DQo+IEJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQgb24gYWFyY2g2NC1ub25lLWxpbnV4LWdudSBhbmQg bm8gaXNzdWVzLg0KPiANCj4gT2sgZm9yIG1hc3Rlcj8NCj4gDQo+IFRoYW5rcywNCj4gVGFtYXIN Cj4gDQo+IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAJKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LXNp bWQubWQNCj4gKEBhYXJjaDY0X2JpdG1hc2tfdWRpdjxtb2RlPjMpOiBOZXcuDQo+IAkqIGNvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuY2MNCj4gKGFhcmNoNjRfdmVjdG9yaXplX2Nhbl9zcGVjaWFsX2Rp dl9ieV9jb25zdGFudCk6IE5ldy4NCj4gDQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiAN Cj4gCSogZ2NjLnRhcmdldC9hYXJjaDY0L2Rpdi1ieS1iaXRtYXNrLmM6IE5ldyB0ZXN0Lg0KPiAN Cj4gLS0tIGlubGluZSBjb3B5IG9mIHBhdGNoIC0tDQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kDQo+IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c2ltZC5tZA0KPiBpbmRleA0KPiA1ODdhNDVkNzc3MjFlMWIzOWFjY2JhZDdkYmVjYTRkNzQxZWNj YjEwLi5mNDE1MjE2MDA4NGQ2YjZmMzRiZDY5ZjBiDQo+IGE2Mzg2YzFhYjUwZjc3ZSAxMDA2NDQN Cj4gLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZA0KPiArKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kDQo+IEBAIC00ODMxLDYgKzQ4MzEsNjUgQEAg KGRlZmluZV9leHBhbmQNCj4gImFhcmNoNjRfPHN1cj48YWRkc3ViPmhuMjxtb2RlPiINCj4gICAg fQ0KPiAgKQ0KPiANCj4gKzs7IGRpdiBvcHRpbWl6YXRpb25zIHVzaW5nIG5hcnJvd2luZ3MNCj4g Kzs7IHdlIGNhbiBkbyB0aGUgZGl2aXNpb24gZS5nLiBzaG9ydHMgYnkgMjU1IGZhc3RlciBieSBj YWxjdWxhdGluZyBpdA0KPiArYXMgOzsgKHggKyAoKHggKyAyNTcpID4+IDgpKSA+PiA4IGFzc3Vt aW5nIHRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbiA7Ow0KPiArZG91YmxlIHRoZSBwcmVjaXNpb24g b2YgeC4NCj4gKzs7DQo+ICs7OyBJZiB3ZSBpbWFnaW5lIGEgc2hvcnQgYXMgYmVpbmcgY29tcG9z ZWQgb2YgdHdvIGJsb2NrcyBvZiBieXRlcyB0aGVuDQo+ICs7OyBhZGRpbmcgMjU3IG9yIDBiMDAw MF8wMDAxXzAwMDBfMDAwMSB0byB0aGUgbnVtYmVyIGlzIGVxdWl2YWxlbiB0byA7Ow0KPiArYWRk aW5nIDEgdG8gZWFjaCBzdWIgY29tcG9uZW50Og0KPiArOzsNCj4gKzs7ICAgICAgc2hvcnQgdmFs dWUgb2YgMTYtYml0cw0KPiArOzsg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQDQo+ICs7OyDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4g Kzs7IOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KPiArOzsgICA4 LWJpdCBwYXJ0MSDilrIgIDgtYml0IHBhcnQyICAg4payDQo+ICs7OyAgICAgICAgICAgICAgIOKU giAgICAgICAgICAgICAgICDilIINCj4gKzs7ICAgICAgICAgICAgICAg4pSCICAgICAgICAgICAg ICAgIOKUgg0KPiArOzsgICAgICAgICAgICAgICsxICAgICAgICAgICAgICAgKzENCj4gKzs7DQo+ ICs7OyBhZnRlciB0aGUgZmlyc3QgYWRkaXRpb24sIHdlIGhhdmUgdG8gc2hpZnQgcmlnaHQgYnkg OCwgYW5kIG5hcnJvdw0KPiArdGhlIDs7IHJlc3VsdHMgYmFjayB0byBhIGJ5dGUuICBSZW1lbWJl ciB0aGF0IHRoZSBhZGRpdGlvbiBtdXN0IGJlIGRvbmUNCj4gK2luIDs7IGRvdWJsZSB0aGUgcHJl Y2lzaW9uIG9mIHRoZSBpbnB1dC4gIFNpbmNlIDggaXMgaGFsZiB0aGUgc2l6ZSBvZiBhDQo+ICtz aG9ydCA7OyB3ZSBjYW4gdXNlIGEgbmFycm93aW5nIGhhbGZpbmcgaW5zdHJ1Y3Rpb24gaW4gQUFy Y2g2NCwgYWRkaG4NCj4gK3doaWNoIGFsc28gOzsgZG9lcyB0aGUgYWRkaXRpb24gaW4gYSB3aWRl ciBwcmVjaXNpb24gYW5kIG5hcnJvd3MgYmFjaw0KPiArdG8gYSBieXRlLiAgVGhlIDs7IHNoaWZ0 IGl0c2VsZiBpcyBpbXBsaWNpdCBpbiB0aGUgb3BlcmF0aW9uIGFzIGl0DQo+ICt3cml0ZXMgYmFj ayBvbmx5IHRoZSB0b3AgOzsgaGFsZiBvZiB0aGUgcmVzdWx0LiBpLmUuIGJpdHMgMiplc2l6ZS0x OmVzaXplLg0KPiArOzsNCj4gKzs7IFNpbmNlIHdlIGhhdmUgbmFycm93ZWQgdGhlIHJlc3VsdCBv ZiB0aGUgZmlyc3QgcGFydCBiYWNrIHRvIGEgYnl0ZSwNCj4gK2ZvciA7OyB0aGUgc2Vjb25kIGFk ZGl0aW9uIHdlIGNhbiB1c2UgYSB3aWRlbmluZyBhZGRpdGlvbiwgdWFkZHcuDQo+ICs7Ow0KPiAr OzsgRm9yIHRoZSBmaW5hbHkgc2hpZnQsIHNpbmNlIGl0J3MgdW5zaWduZWQgYXJpdGhtYXRpYyB3 ZSBlbWl0IGFuIHVzaHINCj4gK2J5IDggOzsgdG8gc2hpZnQgYW5kIHRoZSB2ZWN0b3JpemVyLg0K PiArOzsNCj4gKzs7IFRoZSBzaGlmdCBpcyBsYXRlciBvcHRpbWl6ZWQgYnkgY29tYmluZSB0byBh IHV6cDIgd2l0aCBtb3ZpICMwLg0KPiArKGRlZmluZV9leHBhbmQgIkBhYXJjaDY0X2JpdG1hc2tf dWRpdjxtb2RlPjMiDQo+ICsgIFsobWF0Y2hfb3BlcmFuZDpWUU4gMCAicmVnaXN0ZXJfb3BlcmFu ZCIpDQo+ICsgICAobWF0Y2hfb3BlcmFuZDpWUU4gMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsg ICAobWF0Y2hfb3BlcmFuZDpWUU4gMiAiaW1tZWRpYXRlX29wZXJhbmQiKV0NCj4gKyAgIlRBUkdF VF9TSU1EIg0KPiArew0KPiArICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHNpemUNCj4gKyAgICA9 ICgxVUxMIDw8IEdFVF9NT0RFX1VOSVRfQklUU0laRSAoPFZOQVJST1dRPm1vZGUpKSAtIDE7DQo+ ICsgIGlmICghQ09OU1RfVkVDVE9SX1AgKG9wZXJhbmRzWzJdKQ0KPiArICAgICAgfHwgY29uc3Rf dmVjdG9yX2VuY29kZWRfbmVsdHMgKG9wZXJhbmRzWzJdKSAhPSAxDQo+ICsgICAgICB8fCBzaXpl ICE9IFVJTlRWQUwgKENPTlNUX1ZFQ1RPUl9FTFQgKG9wZXJhbmRzWzJdLCAwKSkpDQo+ICsgICAg RkFJTDsNCj4gKw0KPiArICBydHggYWRkZW5kID0gZ2VuX3JlZ19ydHggKDxNT0RFPm1vZGUpOw0K PiArICBydHggdmFsID0gYWFyY2g2NF9zaW1kX2dlbl9jb25zdF92ZWN0b3JfZHVwICg8Vk5BUlJP V1EyPm1vZGUsIDEpOw0KPiArICBlbWl0X21vdmVfaW5zbiAoYWRkZW5kLCBsb3dwYXJ0X3N1YnJl ZyAoPE1PREU+bW9kZSwgdmFsLA0KPiArPFZOQVJST1dRMj5tb2RlKSk7DQo+ICsgIHJ0eCB0bXAx ID0gZ2VuX3JlZ19ydHggKDxWTkFSUk9XUT5tb2RlKTsNCj4gKyAgcnR4IHRtcDIgPSBnZW5fcmVn X3J0eCAoPE1PREU+bW9kZSk7DQo+ICsgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYWRkaG48bW9k ZT4gKHRtcDEsIG9wZXJhbmRzWzFdLCBhZGRlbmQpKTsNCj4gKyAgdW5zaWduZWQgYml0c2l6ZSA9 IEdFVF9NT0RFX1VOSVRfQklUU0laRSAoPFZOQVJST1dRPm1vZGUpOw0KPiArICBydHggc2hpZnRf dmVjdG9yID0gYWFyY2g2NF9zaW1kX2dlbl9jb25zdF92ZWN0b3JfZHVwICg8TU9ERT5tb2RlLA0K PiArYml0c2l6ZSk7DQo+ICsgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfdWFkZHc8Vm5hcnJvd3E+ ICh0bXAyLCBvcGVyYW5kc1sxXSwgdG1wMSkpOw0KPiArICBlbWl0X2luc24gKGdlbl9hYXJjaDY0 X3NpbWRfbHNocjxtb2RlPiAob3BlcmFuZHNbMF0sIHRtcDIsDQo+ICtzaGlmdF92ZWN0b3IpKTsN Cj4gKyAgRE9ORTsNCj4gK30pDQo+ICsNCj4gIDs7IHBtdWwuDQo+IA0KPiAgKGRlZmluZV9pbnNu ICJhYXJjaDY0X3BtdWw8bW9kZT4iDQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5jYyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQo+IGluZGV4DQo+IDRi NDg2YWVlYTkwZWEyYWZiOWNkZDk2YTRkYmUxNWM1YmIyYWJkN2EuLjkxYmI3ZDMwNmYzNmRjNGM5 ZWVhYWZjMw0KPiA3NDg0YjZmYzY5MDFiZmI0IDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jYw0KPiArKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYw0K PiBAQCAtMjQxNDYsNiArMjQxNDYsNTEgQEAgYWFyY2g2NF92ZWN0b3JpemVfdmVjX3Blcm1fY29u c3QNCj4gKG1hY2hpbmVfbW9kZSB2bW9kZSwgbWFjaGluZV9tb2RlIG9wX21vZGUsDQo+ICAgIHJl dHVybiByZXQ7DQo+ICB9DQo+IA0KPiArLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJWkVfQ0FO X1NQRUNJQUxfRElWX0JZX0NPTlNULiAgKi8NCj4gKw0KPiArYm9vbA0KPiArYWFyY2g2NF92ZWN0 b3JpemVfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLA0K PiArCQkJCQkgICAgICAgdHJlZSB2ZWN0eXBlLA0KPiArCQkJCQkgICAgICAgdHJlZSB0cmVlb3Aw LCB0cmVlIHRyZWVvcDEsDQo+ICsJCQkJCSAgICAgICBydHggKm91dHB1dCwgcnR4IGluMCwgcnR4 IGluMSkgew0KPiArDQo+ICsgIGlmICgoIXRyZWVvcDAgfHwgIXRyZWVvcDEpICYmIChpbjAgPT0g TlVMTF9SVFggfHwgaW4xID09IE5VTExfUlRYKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsN Cj4gKyAgdHJlZSBjc3QgPSB1bmlmb3JtX2ludGVnZXJfY3N0X3AgKHRyZWVvcDEpOyAgdHJlZSB0 eXBlOyAgaWYgKGNvZGUgIT0NCj4gKyBUUlVOQ19ESVZfRVhQUg0KPiArICAgICAgfHwgIWNzdA0K PiArICAgICAgfHwgIVRZUEVfVU5TSUdORUQgKCh0eXBlID0gVFJFRV9UWVBFIChjc3QpKSkNCj4g KyAgICAgIHx8IHRyZWVfaW50X2NzdF9zZ24gKGNzdCkgIT0gMSkNCj4gKyAgICByZXR1cm4gZmFs c2U7DQo+ICsNCj4gKyAgdW5zaWduZWQgaW50IGZsYWdzID0gYWFyY2g2NF9jbGFzc2lmeV92ZWN0 b3JfbW9kZSAoVFlQRV9NT0RFDQo+ICsgKHZlY3R5cGUpKTsgIGlmICgoZmxhZ3MgJiBWRUNfQU5Z X1NWRSkgJiYgIVRBUkdFVF9TVkUyKQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICBp ZiAoaW4wID09IE5VTExfUlRYICYmIGluMSA9PSBOVUxMX1JUWCkNCj4gKyAgICB7DQo+ICsgICAg ICBnY2NfYXNzZXJ0ICh0cmVlb3AwICYmIHRyZWVvcDEpOw0KPiArICAgICAgd2lkZV9pbnQgaWNz dCA9IHdpOjp0b193aWRlIChjc3QpOw0KPiArICAgICAgd2lkZV9pbnQgdmFsID0gd2k6OmFkZCAo aWNzdCwgMSk7DQo+ICsgICAgICBpbnQgcG93ID0gd2k6OmV4YWN0X2xvZzIgKHZhbCk7DQo+ICsg ICAgICByZXR1cm4gcG93ID09IChUWVBFX1BSRUNJU0lPTiAodHlwZSkgLyAyKTsNCj4gKyAgICB9 DQo+ICsNCj4gKyAgaWYgKCFWRUNUT1JfVFlQRV9QICh2ZWN0eXBlKSkNCj4gKyAgIHJldHVybiBm YWxzZTsNCj4gKw0KPiArICBnY2NfYXNzZXJ0IChvdXRwdXQpOw0KPiArDQo+ICsgIGlmICghKm91 dHB1dCkNCj4gKyAgICAqb3V0cHV0ID0gZ2VuX3JlZ19ydHggKFRZUEVfTU9ERSAodmVjdHlwZSkp Ow0KPiArDQo+ICsgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYml0bWFza191ZGl2MyAoVFlQRV9N T0RFICh2ZWN0eXBlKSwgKm91dHB1dCwNCj4gK2luMCwgaW4xKSk7DQo+ICsgIHJldHVybiB0cnVl Ow0KPiArfQ0KPiArDQo+ICAvKiBHZW5lcmF0ZSBhIGJ5dGUgcGVybXV0ZSBtYXNrIGZvciBhIHJl Z2lzdGVyIG9mIG1vZGUgTU9ERSwNCj4gICAgIHdoaWNoIGhhcyBOVU5JVFMgdW5pdHMuICAqLw0K PiANCj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvdG0udGV4aSBiL2djYy9kb2MvdG0udGV4aSBpbmRl eA0KPiA5MmJkYTFhN2UxNGEzYzllYTYzZTE1MWU0YTQ5YTgxOGJmNGQxYmRiLi5hZGJhOWZlOTdh OWI0MzcyOWM1ZTg2ZDINCj4gNDRhMmEyM2U3NmNhYzA5NyAxMDA2NDQNCj4gLS0tIGEvZ2NjL2Rv Yy90bS50ZXhpDQo+ICsrKyBiL2djYy9kb2MvdG0udGV4aQ0KPiBAQCAtNjExMiw2ICs2MTEyLDIy IEBAIGluc3RydWN0aW9uIHBhdHRlcm4uICBUaGVyZSBpcyBubyBuZWVkIGZvciB0aGUgaG9vaw0K PiB0byBoYW5kbGUgdGhlc2UgdHdvICBpbXBsZW1lbnRhdGlvbiBhcHByb2FjaGVzIGl0c2VsZi4N Cj4gIEBlbmQgZGVmdHlwZWZuDQo+IA0KPiArQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGJvb2wN Cj4gVEFSR0VUX1ZFQ1RPUklaRV9DQU5fU1BFQ0lBTF9ESVZfQllfQ09OU1QNCj4gKyhlbnVtIEB2 YXJ7dHJlZV9jb2RlfSwgdHJlZSBAdmFye3ZlY3R5cGV9LCB0cmVlIEB2YXJ7dHJlZW9wMH0sIHRy ZWUNCj4gK0B2YXJ7dHJlZW9wMX0sIHJ0eCAqQHZhcntvdXRwdXR9LCBydHggQHZhcntpbjB9LCBy dHggQHZhcntpbjF9KSBUaGlzDQo+ICtob29rIGlzIHVzZWQgdG8gdGVzdCB3aGV0aGVyIHRoZSB0 YXJnZXQgaGFzIGEgc3BlY2lhbCBtZXRob2Qgb2YNCj4gK2RpdmlzaW9uIG9mIHZlY3RvcnMgb2Yg dHlwZSBAdmFye3ZlY3R5cGV9IHVzaW5nIHRoZSB0d28gb3BlcmFuZHMNCj4gQGNvZGV7dHJlZW9w MH0sIGFuZCBAY29kZXt0cmVlb3AxfSBhbmQgcHJvZHVjaW5nIGEgdmVjdG9yIG9mIHR5cGUNCj4g QHZhcnt2ZWN0eXBlfS4gIFRoZSBkaXZpc2lvbiB3aWxsIHRoZW4gbm90IGJlIGRlY29tcG9zZWQg YnkgdGhlIGFuZCBrZXB0IGFzDQo+IGEgZGl2Lg0KPiArDQo+ICtXaGVuIHRoZSBob29rIGlzIGJl aW5nIHVzZWQgdG8gdGVzdCB3aGV0aGVyIHRoZSB0YXJnZXQgc3VwcG9ydHMgYQ0KPiArc3BlY2lh bCBkaXZpZGUsIEB2YXJ7aW4wfSwgQHZhcntpbjF9LCBhbmQgQHZhcntvdXRwdXR9IGFyZSBhbGwg bnVsbC4NCj4gK1doZW4gdGhlIGhvb2sgaXMgYmVpbmcgdXNlZCB0byBlbWl0IGEgZGl2aXNpb24s IEB2YXJ7aW4wfSBhbmQgQHZhcntpbjF9DQo+ICthcmUgdGhlIHNvdXJjZSB2ZWN0b3JzIG9mIHR5 cGUgQHZhcnt2ZWN0dHlwZX0gYW5kIEB2YXJ7b3V0cHV0fSBpcyB0aGUNCj4gK2Rlc3RpbmF0aW9u IHZlY3RvciBvZiB0eXBlIEB2YXJ7dmVjdHlwZX0uDQo+ICsNCj4gK1JldHVybiB0cnVlIGlmIHRo ZSBvcGVyYXRpb24gaXMgcG9zc2libGUsIGVtaXR0aW5nIGluc3RydWN0aW9ucyBmb3IgaXQNCj4g K2lmIHJ0eGVzIGFyZSBwcm92aWRlZCBhbmQgdXBkYXRpbmcgQHZhcntvdXRwdXR9Lg0KPiArQGVu ZCBkZWZ0eXBlZm4NCj4gKw0KPiAgQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IHRyZWUNCj4gVEFS R0VUX1ZFQ1RPUklaRV9CVUlMVElOX1ZFQ1RPUklaRURfRlVOQ1RJT04gKHVuc2lnbmVkDQo+IEB2 YXJ7Y29kZX0sIHRyZWUgQHZhcnt2ZWNfdHlwZV9vdXR9LCB0cmVlIEB2YXJ7dmVjX3R5cGVfaW59 KSAgVGhpcyBob29rDQo+IHNob3VsZCByZXR1cm4gdGhlIGRlY2wgb2YgYSBmdW5jdGlvbiB0aGF0 IGltcGxlbWVudHMgdGhlICB2ZWN0b3JpemVkIHZhcmlhbnQNCj4gb2YgdGhlIGZ1bmN0aW9uIHdp dGggdGhlIEBjb2Rle2NvbWJpbmVkX2ZufSBjb2RlIGRpZmYgLS1naXQNCj4gYS9nY2MvZG9jL3Rt LnRleGkuaW4gYi9nY2MvZG9jL3RtLnRleGkuaW4gaW5kZXgNCj4gMTEyNDYyMzEwYjEzNDcwNWQ4 NjAxNTMyOTQyODdjZmQ3ZDRhZjgxZC4uZDVhNzQ1YTAyYWNkZjA1MWVhMWRhMWIwNA0KPiAwNzZk MDU4YzI0Y2UwOTMgMTAwNjQ0DQo+IC0tLSBhL2djYy9kb2MvdG0udGV4aS5pbg0KPiArKysgYi9n Y2MvZG9jL3RtLnRleGkuaW4NCj4gQEAgLTQxNjQsNiArNDE2NCw4IEBAIGFkZHJlc3M7ICBidXQg b2Z0ZW4gYSBtYWNoaW5lLWRlcGVuZGVudCBzdHJhdGVneQ0KPiBjYW4gZ2VuZXJhdGUgYmV0dGVy IGNvZGUuDQo+IA0KPiAgQGhvb2sgVEFSR0VUX1ZFQ1RPUklaRV9WRUNfUEVSTV9DT05TVA0KPiAN Cj4gK0Bob29rIFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NPTlNUDQo+ICsN Cj4gIEBob29rIFRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9WRUNUT1JJWkVEX0ZVTkNUSU9ODQo+ IA0KPiAgQGhvb2sgVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX01EX1ZFQ1RPUklaRURfRlVOQ1RJ T04NCj4gZGlmZiAtLWdpdCBhL2djYy9leHBsb3cuY2MgYi9nY2MvZXhwbG93LmNjIGluZGV4DQo+ IGRkYjRkNmFlMzYwMDU0MmY4ZDJiYjU2MTdjZGQzOTMzYTlmYWU2YzAuLjU2OGUwZWIxYTE1OGM2 OTY0NThhZTY3OGYNCj4gNWUzNDZiZjM0YmEwMDM2IDEwMDY0NA0KPiAtLS0gYS9nY2MvZXhwbG93 LmNjDQo+ICsrKyBiL2djYy9leHBsb3cuY2MNCj4gQEAgLTEwMzcsNyArMTAzNyw3IEBAIHJvdW5k X3B1c2ggKHJ0eCBzaXplKQ0KPiAgICAgICBUUlVOQ19ESVZfRVhQUi4gICovDQo+ICAgIHNpemUg PSBleHBhbmRfYmlub3AgKFBtb2RlLCBhZGRfb3B0YWIsIHNpemUsIGFsaWdubTFfcnR4LA0KPiAg CQkgICAgICAgTlVMTF9SVFgsIDEsIE9QVEFCX0xJQl9XSURFTik7DQo+IC0gIHNpemUgPSBleHBh bmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgUG1vZGUsIHNpemUsIGFsaWduX3J0eCwNCj4g KyAgc2l6ZSA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwgTlVMTCwg TlVMTCwgc2l6ZSwNCj4gKyBhbGlnbl9ydHgsDQo+ICAJCQlOVUxMX1JUWCwgMSk7DQo+ICAgIHNp emUgPSBleHBhbmRfbXVsdCAoUG1vZGUsIHNpemUsIGFsaWduX3J0eCwgTlVMTF9SVFgsIDEpOw0K PiANCj4gQEAgLTEyMDMsNyArMTIwMyw3IEBAIGFsaWduX2R5bmFtaWNfYWRkcmVzcyAocnR4IHRh cmdldCwgdW5zaWduZWQNCj4gcmVxdWlyZWRfYWxpZ24pDQo+ICAJCQkgZ2VuX2ludF9tb2RlIChy ZXF1aXJlZF9hbGlnbiAvIEJJVFNfUEVSX1VOSVQgLSAxLA0KPiAgCQkJCSAgICAgICBQbW9kZSks DQo+ICAJCQkgTlVMTF9SVFgsIDEsIE9QVEFCX0xJQl9XSURFTik7DQo+IC0gIHRhcmdldCA9IGV4 cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwgdGFyZ2V0LA0KPiArICB0YXJn ZXQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgUG1vZGUsIE5VTEwsIE5VTEws DQo+IHRhcmdldCwNCj4gIAkJCSAgZ2VuX2ludF9tb2RlIChyZXF1aXJlZF9hbGlnbiAvIEJJVFNf UEVSX1VOSVQsDQo+ICAJCQkJCVBtb2RlKSwNCj4gIAkJCSAgTlVMTF9SVFgsIDEpOw0KPiBkaWZm IC0tZ2l0IGEvZ2NjL2V4cG1lZC5oIGIvZ2NjL2V4cG1lZC5oIGluZGV4DQo+IDBiMjUzOGM0YzZi ZDUxZGZkYzc3MmVmNzBiZGY2MzFjMGJlZDg3MTcuLjBkYjI5ODZmMTFmZjRhNGIxMGI1OTUwMWM2 DQo+IGYzM2NiMzU5NTY1OWI1IDEwMDY0NA0KPiAtLS0gYS9nY2MvZXhwbWVkLmgNCj4gKysrIGIv Z2NjL2V4cG1lZC5oDQo+IEBAIC03MDgsOCArNzA4LDkgQEAgZXh0ZXJuIHJ0eCBleHBhbmRfdmFy aWFibGVfc2hpZnQgKGVudW0gdHJlZV9jb2RlLA0KPiBtYWNoaW5lX21vZGUsICBleHRlcm4gcnR4 IGV4cGFuZF9zaGlmdCAoZW51bSB0cmVlX2NvZGUsIG1hY2hpbmVfbW9kZSwNCj4gcnR4LCBwb2x5 X2ludDY0LCBydHgsDQo+ICAJCQkgaW50KTsNCj4gICNpZmRlZiBHQ0NfT1BUQUJTX0gNCj4gLWV4 dGVybiBydHggZXhwYW5kX2Rpdm1vZCAoaW50LCBlbnVtIHRyZWVfY29kZSwgbWFjaGluZV9tb2Rl LCBydHgsIHJ0eCwNCj4gLQkJCSAgcnR4LCBpbnQsIGVudW0gb3B0YWJfbWV0aG9kcyA9DQo+IE9Q VEFCX0xJQl9XSURFTik7DQo+ICtleHRlcm4gcnR4IGV4cGFuZF9kaXZtb2QgKGludCwgZW51bSB0 cmVlX2NvZGUsIG1hY2hpbmVfbW9kZSwgdHJlZSwNCj4gdHJlZSwNCj4gKwkJCSAgcnR4LCBydHgs IHJ0eCwgaW50LA0KPiArCQkJICBlbnVtIG9wdGFiX21ldGhvZHMgPSBPUFRBQl9MSUJfV0lERU4p Ow0KPiAgI2VuZGlmDQo+ICAjZW5kaWYNCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvZXhwbWVkLmNj IGIvZ2NjL2V4cG1lZC5jYyBpbmRleA0KPiA4ZDc0MThiZTQxODQwNmU3MmE4OTVlY2RkZjJkYzdm ZGI5NTBjNzZjLi5iNjRlYTVhYzQ2YTlkYTg1NzcwYTViYjA5DQo+IDkwZGI4Yjk3ZDNhZjQxNCAx MDA2NDQNCj4gLS0tIGEvZ2NjL2V4cG1lZC5jYw0KPiArKysgYi9nY2MvZXhwbWVkLmNjDQo+IEBA IC00MjIyLDggKzQyMjIsOCBAQCBleHBhbmRfc2Rpdl9wb3cyIChzY2FsYXJfaW50X21vZGUgbW9k ZSwgcnR4DQo+IG9wMCwgSE9TVF9XSURFX0lOVCBkKQ0KPiANCj4gIHJ0eA0KPiAgZXhwYW5kX2Rp dm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtIHRyZWVfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUNCj4g bW9kZSwNCj4gLQkgICAgICAgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHRhcmdldCwgaW50IHVuc2ln bmVkcCwNCj4gLQkgICAgICAgZW51bSBvcHRhYl9tZXRob2RzIG1ldGhvZHMpDQo+ICsJICAgICAg IHRyZWUgdHJlZW9wMCwgdHJlZSB0cmVlb3AxLCBydHggb3AwLCBydHggb3AxLCBydHggdGFyZ2V0 LA0KPiArCSAgICAgICBpbnQgdW5zaWduZWRwLCBlbnVtIG9wdGFiX21ldGhvZHMgbWV0aG9kcykN Cj4gIHsNCj4gICAgbWFjaGluZV9tb2RlIGNvbXB1dGVfbW9kZTsNCj4gICAgcnR4IHRxdW90aWVu dDsNCj4gQEAgLTQzNzUsNiArNDM3NSwxNCBAQCBleHBhbmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcs IGVudW0gdHJlZV9jb2RlDQo+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiANCj4gICAgbGFz dF9kaXZfY29uc3QgPSAhIHJlbV9mbGFnICYmIG9wMV9pc19jb25zdGFudCA/IElOVFZBTCAob3Ax KSA6IDA7DQo+IA0KPiArICAvKiBDaGVjayBpZiB0aGUgdGFyZ2V0IGhhcyBzcGVjaWZpYyBleHBh bnNpb25zIGZvciB0aGUgZGl2aXNpb24uICAqLw0KPiArICBpZiAodHJlZW9wMA0KPiArICAgICAg JiYgdGFyZ2V0bS52ZWN0b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChjb2RlLCBUUkVF X1RZUEUNCj4gKHRyZWVvcDApLA0KPiArCQkJCQkJICAgICB0cmVlb3AwLCB0cmVlb3AxLA0KPiAr CQkJCQkJICAgICAmdGFyZ2V0LCBvcDAsIG9wMSkpDQo+ICsgICAgcmV0dXJuIHRhcmdldDsNCj4g Kw0KPiArDQo+ICAgIC8qIE5vdyBjb252ZXJ0IHRvIHRoZSBiZXN0IG1vZGUgdG8gdXNlLiAgKi8N Cj4gICAgaWYgKGNvbXB1dGVfbW9kZSAhPSBtb2RlKQ0KPiAgICAgIHsNCj4gQEAgLTQ2MTgsOCAr NDYyNiw4IEBAIGV4cGFuZF9kaXZtb2QgKGludCByZW1fZmxhZywgZW51bSB0cmVlX2NvZGUNCj4g Y29kZSwgbWFjaGluZV9tb2RlIG1vZGUsDQo+ICAJCQkgICAgfHwgKG9wdGFiX2hhbmRsZXIgKHNk aXZtb2Rfb3B0YWIsIGludF9tb2RlKQ0KPiAgCQkJCSE9IENPREVfRk9SX25vdGhpbmcpKSkNCj4g IAkJICAgICAgcXVvdGllbnQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwNCj4g LQkJCQkJCWludF9tb2RlLCBvcDAsDQo+IC0JCQkJCQlnZW5faW50X21vZGUgKGFic19kLA0KPiAr CQkJCQkJaW50X21vZGUsIHRyZWVvcDAsIHRyZWVvcDEsDQo+ICsJCQkJCQlvcDAsIGdlbl9pbnRf bW9kZSAoYWJzX2QsDQo+ICAJCQkJCQkJICAgICAgaW50X21vZGUpLA0KPiAgCQkJCQkJTlVMTF9S VFgsIDApOw0KPiAgCQkgICAgZWxzZQ0KPiBAQCAtNDgwOCw4ICs0ODE2LDggQEAgZXhwYW5kX2Rp dm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtIHRyZWVfY29kZQ0KPiBjb2RlLCBtYWNoaW5lX21vZGUg bW9kZSwNCj4gIAkJCQkgICAgICBzaXplIC0gMSwgTlVMTF9SVFgsIDApOw0KPiAgCQl0MyA9IGZv cmNlX29wZXJhbmQgKGdlbl9ydHhfTUlOVVMgKGludF9tb2RlLCB0MSwgbnNpZ24pLA0KPiAgCQkJ CSAgICBOVUxMX1JUWCk7DQo+IC0JCXQ0ID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VY UFIsIGludF9tb2RlLCB0MywNCj4gb3AxLA0KPiAtCQkJCSAgICBOVUxMX1JUWCwgMCk7DQo+ICsJ CXQ0ID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIGludF9tb2RlLA0KPiB0cmVl b3AwLA0KPiArCQkJCSAgICB0cmVlb3AxLCB0Mywgb3AxLCBOVUxMX1JUWCwgMCk7DQo+ICAJCWlm ICh0NCkNCj4gIAkJICB7DQo+ICAJCSAgICBydHggdDU7DQo+IGRpZmYgLS1naXQgYS9nY2MvZXhw ci5jYyBiL2djYy9leHByLmNjDQo+IGluZGV4DQo+IDgwYmIxYjhhNGM1YjgzNTBmYjFiOGY1N2E5 OWZkNTJlNTg4MmZjYjYuLmI3ODZmMWQ3NWUyNWYzNDEwYzA2NDBjZDk2DQo+IGE4YWJjMDU1ZmEz NGQ5IDEwMDY0NA0KPiAtLS0gYS9nY2MvZXhwci5jYw0KPiArKysgYi9nY2MvZXhwci5jYw0KPiBA QCAtODAyOCwxNiArODAyOCwxNyBAQCBmb3JjZV9vcGVyYW5kIChydHggdmFsdWUsIHJ0eCB0YXJn ZXQpDQo+ICAJICAgIHJldHVybiBleHBhbmRfZGl2bW9kICgwLA0KPiAgCQkJCSAgRkxPQVRfTU9E RV9QIChHRVRfTU9ERSAodmFsdWUpKQ0KPiAgCQkJCSAgPyBSRElWX0VYUFIgOiBUUlVOQ19ESVZf RVhQUiwNCj4gLQkJCQkgIEdFVF9NT0RFICh2YWx1ZSksIG9wMSwgb3AyLCB0YXJnZXQsIDApOw0K PiArCQkJCSAgR0VUX01PREUgKHZhbHVlKSwgTlVMTCwgTlVMTCwgb3AxLCBvcDIsDQo+ICsJCQkJ ICB0YXJnZXQsIDApOw0KPiAgCWNhc2UgTU9EOg0KPiAtCSAgcmV0dXJuIGV4cGFuZF9kaXZtb2Qg KDEsIFRSVU5DX01PRF9FWFBSLCBHRVRfTU9ERSAodmFsdWUpLA0KPiBvcDEsIG9wMiwNCj4gLQkJ CQl0YXJnZXQsIDApOw0KPiArCSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9F WFBSLCBHRVRfTU9ERSAodmFsdWUpLA0KPiBOVUxMLCBOVUxMLA0KPiArCQkJCW9wMSwgb3AyLCB0 YXJnZXQsIDApOw0KPiAgCWNhc2UgVURJVjoNCj4gLQkgIHJldHVybiBleHBhbmRfZGl2bW9kICgw LCBUUlVOQ19ESVZfRVhQUiwgR0VUX01PREUgKHZhbHVlKSwNCj4gb3AxLCBvcDIsDQo+IC0JCQkJ dGFyZ2V0LCAxKTsNCj4gKwkgIHJldHVybiBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQ UiwgR0VUX01PREUgKHZhbHVlKSwNCj4gTlVMTCwgTlVMTCwNCj4gKwkJCQlvcDEsIG9wMiwgdGFy Z2V0LCAxKTsNCj4gIAljYXNlIFVNT0Q6DQo+IC0JICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwg VFJVTkNfTU9EX0VYUFIsIEdFVF9NT0RFICh2YWx1ZSksDQo+IG9wMSwgb3AyLA0KPiAtCQkJCXRh cmdldCwgMSk7DQo+ICsJICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNfTU9EX0VYUFIs IEdFVF9NT0RFICh2YWx1ZSksDQo+IE5VTEwsIE5VTEwsDQo+ICsJCQkJb3AxLCBvcDIsIHRhcmdl dCwgMSk7DQo+ICAJY2FzZSBBU0hJRlRSVDoNCj4gIAkgIHJldHVybiBleHBhbmRfc2ltcGxlX2Jp bm9wIChHRVRfTU9ERSAodmFsdWUpLCBjb2RlLCBvcDEsIG9wMiwNCj4gIAkJCQkgICAgICB0YXJn ZXQsIDAsIE9QVEFCX0xJQl9XSURFTik7DQo+IEBAIC04OTkwLDExICs4OTkxLDEzIEBAIGV4cGFu ZF9leHByX2Rpdm1vZCAodHJlZV9jb2RlIGNvZGUsDQo+IG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVl IHRyZWVvcDAsDQo+ICAgICAgICBib29sIHNwZWVkX3AgPSBvcHRpbWl6ZV9pbnNuX2Zvcl9zcGVl ZF9wICgpOw0KPiAgICAgICAgZG9fcGVuZGluZ19zdGFja19hZGp1c3QgKCk7DQo+ICAgICAgICBz dGFydF9zZXF1ZW5jZSAoKTsNCj4gLSAgICAgIHJ0eCB1bnNfcmV0ID0gZXhwYW5kX2Rpdm1vZCAo bW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLCB0YXJnZXQsIDEpOw0KPiArICAgICAgcnR4IHVu c19yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgdHJlZW9wMCwgdHJlZW9w MSwNCj4gKwkJCQkgICBvcDAsIG9wMSwgdGFyZ2V0LCAxKTsNCj4gICAgICAgIHJ0eF9pbnNuICp1 bnNfaW5zbnMgPSBnZXRfaW5zbnMgKCk7DQo+ICAgICAgICBlbmRfc2VxdWVuY2UgKCk7DQo+ICAg ICAgICBzdGFydF9zZXF1ZW5jZSAoKTsNCj4gLSAgICAgIHJ0eCBzZ25fcmV0ID0gZXhwYW5kX2Rp dm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLCB0YXJnZXQsIDApOw0KPiArICAgICAg cnR4IHNnbl9yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgdHJlZW9wMCwg dHJlZW9wMSwNCj4gKwkJCQkgICBvcDAsIG9wMSwgdGFyZ2V0LCAwKTsNCj4gICAgICAgIHJ0eF9p bnNuICpzZ25faW5zbnMgPSBnZXRfaW5zbnMgKCk7DQo+ICAgICAgICBlbmRfc2VxdWVuY2UgKCk7 DQo+ICAgICAgICB1bnNpZ25lZCB1bnNfY29zdCA9IHNlcV9jb3N0ICh1bnNfaW5zbnMsIHNwZWVk X3ApOyBAQCAtOTAxNiw3ICs5MDE5LDgNCj4gQEAgZXhwYW5kX2V4cHJfZGl2bW9kICh0cmVlX2Nv ZGUgY29kZSwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUNCj4gdHJlZW9wMCwNCj4gICAgICAgIGVt aXRfaW5zbiAoc2duX2luc25zKTsNCj4gICAgICAgIHJldHVybiBzZ25fcmV0Ow0KPiAgICAgIH0N Cj4gLSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKG1vZF9wLCBjb2RlLCBtb2RlLCBvcDAsIG9wMSwg dGFyZ2V0LCB1bnNpZ25lZHApOw0KPiArICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNv ZGUsIG1vZGUsIHRyZWVvcDAsIHRyZWVvcDEsDQo+ICsJCQlvcDAsIG9wMSwgdGFyZ2V0LCB1bnNp Z25lZHApOw0KPiAgfQ0KPiANCj4gIHJ0eA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy5jYyBi L2djYy9vcHRhYnMuY2MgaW5kZXgNCj4gMTY1ZjhkMWZhMjI0MzJiOTY5NjdjNjlhNThkYmI3YjRi ZjE4MTIwZC4uY2ZmMzdjY2IwZGZjM2RkNzliOTdkMGFiZmQNCj4gODcyZjM0MDg1NWRjOTYgMTAw NjQ0DQo+IC0tLSBhL2djYy9vcHRhYnMuY2MNCj4gKysrIGIvZ2NjL29wdGFicy5jYw0KPiBAQCAt MTEwNCw4ICsxMTA0LDkgQEAgZXhwYW5kX2RvdWJsZXdvcmRfbW9kIChtYWNoaW5lX21vZGUgbW9k ZSwNCj4gcnR4IG9wMCwgcnR4IG9wMSwgYm9vbCB1bnNpZ25lZHApDQo+ICAJCXJldHVybiBOVUxM X1JUWDsNCj4gIAkgICAgfQ0KPiAgCX0NCj4gLSAgICAgIHJ0eCByZW1haW5kZXIgPSBleHBhbmRf ZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgd29yZF9tb2RlLA0KPiBzdW0sDQo+IC0JCQkJICAg ICBnZW5faW50X21vZGUgKElOVFZBTCAob3AxKSwNCj4gd29yZF9tb2RlKSwNCj4gKyAgICAgIHJ0 eCByZW1haW5kZXIgPSBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgd29yZF9tb2Rl LA0KPiBOVUxMLCBOVUxMLA0KPiArCQkJCSAgICAgc3VtLCBnZW5faW50X21vZGUgKElOVFZBTCAo b3AxKSwNCj4gKwkJCQkJCQl3b3JkX21vZGUpLA0KPiAgCQkJCSAgICAgTlVMTF9SVFgsIDEsIE9Q VEFCX0RJUkVDVCk7DQo+ICAgICAgICBpZiAocmVtYWluZGVyID09IE5VTExfUlRYKQ0KPiAgCXJl dHVybiBOVUxMX1JUWDsNCj4gQEAgLTEyMDgsOCArMTIwOSw4IEBAIGV4cGFuZF9kb3VibGV3b3Jk X2Rpdm1vZCAobWFjaGluZV9tb2RlDQo+IG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCAqcmVt LA0KPiANCj4gICAgaWYgKG9wMTEgIT0gY29uc3QxX3J0eCkNCj4gICAgICB7DQo+IC0gICAgICBy dHggcmVtMiA9IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBtb2RlLCBxdW90MSwg b3AxMSwNCj4gLQkJCQlOVUxMX1JUWCwgdW5zaWduZWRwLCBPUFRBQl9ESVJFQ1QpOw0KPiArICAg ICAgcnR4IHJlbTIgPSBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgbW9kZSwgTlVM TCwgTlVMTCwNCj4gcXVvdDEsDQo+ICsJCQkJb3AxMSwgTlVMTF9SVFgsIHVuc2lnbmVkcCwNCj4g T1BUQUJfRElSRUNUKTsNCj4gICAgICAgIGlmIChyZW0yID09IE5VTExfUlRYKQ0KPiAgCXJldHVy biBOVUxMX1JUWDsNCj4gDQo+IEBAIC0xMjIzLDggKzEyMjQsOCBAQCBleHBhbmRfZG91Ymxld29y ZF9kaXZtb2QgKG1hY2hpbmVfbW9kZQ0KPiBtb2RlLCBydHggb3AwLCBydHggb3AxLCBydHggKnJl bSwNCj4gICAgICAgIGlmIChyZW0yID09IE5VTExfUlRYKQ0KPiAgCXJldHVybiBOVUxMX1JUWDsN Cj4gDQo+IC0gICAgICBydHggcXVvdDIgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQ UiwgbW9kZSwgcXVvdDEsIG9wMTEsDQo+IC0JCQkJIE5VTExfUlRYLCB1bnNpZ25lZHAsIE9QVEFC X0RJUkVDVCk7DQo+ICsgICAgICBydHggcXVvdDIgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19E SVZfRVhQUiwgbW9kZSwgTlVMTCwgTlVMTCwNCj4gcXVvdDEsDQo+ICsJCQkJIG9wMTEsIE5VTExf UlRYLCB1bnNpZ25lZHAsDQo+IE9QVEFCX0RJUkVDVCk7DQo+ICAgICAgICBpZiAocXVvdDIgPT0g TlVMTF9SVFgpDQo+ICAJcmV0dXJuIE5VTExfUlRYOw0KPiANCj4gZGlmZiAtLWdpdCBhL2djYy90 YXJnZXQuZGVmIGIvZ2NjL3RhcmdldC5kZWYgaW5kZXgNCj4gMmE3ZmE2OGY4M2RkMTVkY2RkMmMz MzJlODQzMWU2MTQyZWM3ZDMwNS4uOTJlYmQyYWYxOGZlOGFiYjZlZDk1YjA3MA0KPiA4MWNkZDcw MTEzZGI5YjEgMTAwNjQ0DQo+IC0tLSBhL2djYy90YXJnZXQuZGVmDQo+ICsrKyBiL2djYy90YXJn ZXQuZGVmDQo+IEBAIC0xOTAyLDYgKzE5MDIsMjUgQEAgaW1wbGVtZW50YXRpb24gYXBwcm9hY2hl cyBpdHNlbGYuIiwNCj4gIAljb25zdCB2ZWNfcGVybV9pbmRpY2VzICZzZWwpLA0KPiAgIE5VTEwp DQo+IA0KPiArREVGSE9PSw0KPiArKGNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCwNCj4gKyAiVGhp cyBob29rIGlzIHVzZWQgdG8gdGVzdCB3aGV0aGVyIHRoZSB0YXJnZXQgaGFzIGEgc3BlY2lhbCBt ZXRob2QNCj4gK29mXG5cIGRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZSBAdmFye3ZlY3R5cGV9 IHVzaW5nIHRoZSB0d28gb3BlcmFuZHMNCj4gK0Bjb2Rle3RyZWVvcDB9LFxuXCBhbmQgQGNvZGV7 dHJlZW9wMX0gYW5kIHByb2R1Y2luZyBhIHZlY3RvciBvZiB0eXBlDQo+ICtAdmFye3ZlY3R5cGV9 LiAgVGhlIGRpdmlzaW9uXG5cIHdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieSB0aGUgYW5k DQo+ICtrZXB0IGFzIGEgZGl2LlxuXCBcblwgV2hlbiB0aGUgaG9vayBpcyBiZWluZyB1c2VkIHRv IHRlc3Qgd2hldGhlciB0aGUNCj4gK3RhcmdldCBzdXBwb3J0cyBhIHNwZWNpYWxcblwgZGl2aWRl LCBAdmFye2luMH0sIEB2YXJ7aW4xfSwgYW5kDQo+ICtAdmFye291dHB1dH0gYXJlIGFsbCBudWxs LiAgV2hlbiB0aGUgaG9va1xuXCBpcyBiZWluZyB1c2VkIHRvIGVtaXQgYQ0KPiArZGl2aXNpb24s IEB2YXJ7aW4wfSBhbmQgQHZhcntpbjF9IGFyZSB0aGUgc291cmNlXG5cIHZlY3RvcnMgb2YgdHlw ZQ0KPiArQHZhcnt2ZWN0dHlwZX0gYW5kIEB2YXJ7b3V0cHV0fSBpcyB0aGUgZGVzdGluYXRpb24g dmVjdG9yIG9mXG5cIHR5cGUNCj4gK0B2YXJ7dmVjdHlwZX0uXG5cIFxuXCBSZXR1cm4gdHJ1ZSBp ZiB0aGUgb3BlcmF0aW9uIGlzIHBvc3NpYmxlLA0KPiArZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zIGZv ciBpdFxuXCBpZiBydHhlcyBhcmUgcHJvdmlkZWQgYW5kIHVwZGF0aW5nDQo+ICtAdmFye291dHB1 dH0uIiwgIGJvb2wsIChlbnVtIHRyZWVfY29kZSwgdHJlZSB2ZWN0eXBlLCB0cmVlIHRyZWVvcDAs DQo+ICt0cmVlIHRyZWVvcDEsIHJ0eCAqb3V0cHV0LA0KPiArCXJ0eCBpbjAsIHJ0eCBpbjEpLA0K PiArIGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0KQ0KPiArDQo+ICAvKiBSZXR1cm4g dHJ1ZSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIG1pc2FsaWduZWQgc3RvcmUvbG9hZCBvZiBhDQo+ ICAgICBzcGVjaWZpYyBmYWN0b3IgZGVub3RlZCBpbiB0aGUgdGhpcmQgcGFyYW1ldGVyLiAgVGhl IGxhc3QgcGFyYW1ldGVyDQo+ICAgICBpcyB0cnVlIGlmIHRoZSBhY2Nlc3MgaXMgZGVmaW5lZCBp biBhIHBhY2tlZCBzdHJ1Y3QuICAqLyBkaWZmIC0tZ2l0IGEvZ2NjL3RhcmdldC5oDQo+IGIvZ2Nj L3RhcmdldC5oIGluZGV4DQo+IGQ2ZmE2OTMxNDk5ZDE1ZWRmZjNlNWFmM2U0Mjk1NDBkMDAxYzcw NTguLmM4MzYwMzZhYzdmYTc5MTBkNjJiZDNkYTU2DQo+IGYzOWMwNjFmNjhiNjY1IDEwMDY0NA0K PiAtLS0gYS9nY2MvdGFyZ2V0LmgNCj4gKysrIGIvZ2NjL3RhcmdldC5oDQo+IEBAIC01MSw2ICs1 MSw3IEBADQo+ICAjaW5jbHVkZSAiaW5zbi1jb2Rlcy5oIg0KPiAgI2luY2x1ZGUgInRtLmgiDQo+ ICAjaW5jbHVkZSAiaGFyZC1yZWctc2V0LmgiDQo+ICsjaW5jbHVkZSAidHJlZS1jb3JlLmgiDQo+ IA0KPiAgI2lmIENIRUNLSU5HX1ANCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvdGFyZ2hvb2tzLmgg Yi9nY2MvdGFyZ2hvb2tzLmggaW5kZXgNCj4gZWNjZTU1ZWJlNzk3Y2VkYzk0MDYyMGU4ZDg5ODE2 OTczYTA0NWQ0OS4uNDI0NTFhM2UyMmU4NmZlZTlkYTJmNTZlDQo+IDI2NDBkNjNmOTM2YjMzNmQg MTAwNjQ0DQo+IC0tLSBhL2djYy90YXJnaG9va3MuaA0KPiArKysgYi9nY2MvdGFyZ2hvb2tzLmgN Cj4gQEAgLTIwNyw2ICsyMDcsOCBAQCBleHRlcm4gdm9pZCBkZWZhdWx0X2FkZHJfc3BhY2VfZGlh Z25vc2VfdXNhZ2UNCj4gKGFkZHJfc3BhY2VfdCwgbG9jYXRpb25fdCk7ICBleHRlcm4gcnR4IGRl ZmF1bHRfYWRkcl9zcGFjZV9jb252ZXJ0IChydHgsDQo+IHRyZWUsIHRyZWUpOyAgZXh0ZXJuIHVu c2lnbmVkIGludCBkZWZhdWx0X2Nhc2VfdmFsdWVzX3RocmVzaG9sZCAodm9pZCk7DQo+IGV4dGVy biBib29sIGRlZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24gKHZvaWQpOw0KPiArZXh0 ZXJuIGJvb2wgZGVmYXVsdF9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKGVudW0gdHJlZV9jb2Rl LCB0cmVlLA0KPiB0cmVlLCB0cmVlLA0KPiArCQkJCQkgICAgICBydHggKiwgcnR4LCBydHgpOw0K PiANCj4gIGV4dGVybiBib29sIGRlZmF1bHRfbGliY19oYXNfZnVuY3Rpb24gKGVudW0gZnVuY3Rp b25fY2xhc3MsIHRyZWUpOyAgZXh0ZXJuDQo+IGJvb2wgZGVmYXVsdF9saWJjX2hhc19mYXN0X2Z1 bmN0aW9uIChpbnQgZmNvZGUpOyBkaWZmIC0tZ2l0IGEvZ2NjL3Rhcmdob29rcy5jYw0KPiBiL2dj Yy90YXJnaG9va3MuY2MgaW5kZXgNCj4gYjE1YWUxOWJjYjYwYzU5YWU4MTEyZTY3YjVmMDZhMjQx YTliZGJmMS4uODIwNjUzMzM4MjYxMWE3NjQwZWZiYTI0MQ0KPiAyNzk5MzZjZWQ0MWVlOTUgMTAw NjQ0DQo+IC0tLSBhL2djYy90YXJnaG9va3MuY2MNCj4gKysrIGIvZ2NjL3Rhcmdob29rcy5jYw0K PiBAQCAtMTgwNyw2ICsxODA3LDE0IEBAIGRlZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRp b24gKHZvaWQpDQo+ICAgIHJldHVybiBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbjsNCj4gIH0N Cj4gDQo+ICsvKiBEZWZhdWx0IHRoYXQgbm8gZGl2aXNpb24gYnkgY29uc3RhbnQgb3BlcmF0aW9u cyBhcmUgc3BlY2lhbC4gICovDQo+ICtib29sIGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5X2Nv bnN0IChlbnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwNCj4gK3RyZWUsIHJ0eCAqLCBydHgsDQo+ ICsJCQkJICBydHgpDQo+ICt7DQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiAgLyog QnkgZGVmYXVsdCB3ZSBhc3N1bWUgdGhhdCBjOTkgZnVuY3Rpb25zIGFyZSBwcmVzZW50IGF0IHRo ZSBydW50aW1lLA0KPiAgICAgYnV0IHNpbmNvcyBpcyBub3QuICAqLw0KPiAgYm9vbA0KPiBkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTEuYw0K PiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay0xLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uNDcyY2Q3MTA1MzRiYzhhYTliMWI0OTE2ZjMNCj4gZDdiNGQ1YjY0YTE5 YjkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3QtZGl2LWJpdG1hc2stMS5jDQo+IEBAIC0wLDAgKzEsMjUgQEANCj4gKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlu dC5oPg0KPiArI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0KPiArDQo+ICsjZGVmaW5lIE4gNTANCj4g KyNkZWZpbmUgVFlQRSB1aW50OF90DQo+ICsNCj4gK19fYXR0cmlidXRlX18oKG5vaXBhLCBub2lu bGluZSwgb3B0aW1pemUoIk8xIikpKSB2b2lkIGZ1bjEoVFlQRSoNCj4gK3Jlc3RyaWN0IHBpeGVs LCBUWVBFIGxldmVsLCBpbnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEp DQo+ICsgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0gKiBsZXZlbCkgLyAweGZmOyB9DQo+ICsNCj4g K19fYXR0cmlidXRlX18oKG5vaXBhLCBub2lubGluZSwgb3B0aW1pemUoIk8zIikpKSB2b2lkIGZ1 bjIoVFlQRSoNCj4gK3Jlc3RyaWN0IHBpeGVsLCBUWVBFIGxldmVsLCBpbnQgbikgew0KPiArICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEpDQo+ICsgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0g KiBsZXZlbCkgLyAweGZmOyB9DQo+ICsNCj4gKyNpbmNsdWRlICJ2ZWN0LWRpdi1iaXRtYXNrLmgi DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInZlY3RfcmVjb2df ZGl2bW9kX3BhdHRlcm46DQo+ICtkZXRlY3RlZCIgInZlY3QiIHsgdGFyZ2V0IGFhcmNoNjQqLSot KiB9IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0 LWRpdi1iaXRtYXNrLTIuYw0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYt Yml0bWFzay0yLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkwNGE3MTg4NWIyZTg0ODc1OTNhMmNk Mw0KPiBkYjc1YjNlNDExMmUyY2MNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMi5jDQo+IEBAIC0wLDAgKzEsMjUgQEAN Cj4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gKw0K PiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0KPiArDQo+ ICsjZGVmaW5lIE4gNTANCj4gKyNkZWZpbmUgVFlQRSB1aW50MTZfdA0KPiArDQo+ICtfX2F0dHJp YnV0ZV9fKChub2lwYSwgbm9pbmxpbmUsIG9wdGltaXplKCJPMSIpKSkgdm9pZCBmdW4xKFRZUEUq DQo+ICtyZXN0cmljdCBwaXhlbCwgVFlQRSBsZXZlbCwgaW50IG4pIHsNCj4gKyAgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyBpKz0xKQ0KPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogbGV2ZWwp IC8gMHhmZmZmVTsgfQ0KPiArDQo+ICtfX2F0dHJpYnV0ZV9fKChub2lwYSwgbm9pbmxpbmUsIG9w dGltaXplKCJPMyIpKSkgdm9pZCBmdW4yKFRZUEUqDQo+ICtyZXN0cmljdCBwaXhlbCwgVFlQRSBs ZXZlbCwgaW50IG4pIHsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKz0xKQ0KPiArICAg IHBpeGVsW2ldID0gKHBpeGVsW2ldICogbGV2ZWwpIC8gMHhmZmZmVTsgfQ0KPiArDQo+ICsjaW5j bHVkZSAidmVjdC1kaXYtYml0bWFzay5oIg0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtbm90ICJ2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJuOg0KPiArZGV0ZWN0ZWQiICJ2 ZWN0IiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay0zLmMNCj4gYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stMy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmExNDE4ZWJiZjVlYTg3MzFlZDRlM2U3MjANCj4gMTU3NzAxZDlkMWNmODUyDQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNr LTMuYw0KPiBAQCAtMCwwICsxLDI2IEBADQo+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCB2ZWN0X2ludCB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZuby12 ZWN0LWNvc3QtbW9kZWwiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKg0KPiArfSB9ICovDQo+ICsNCj4g KyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKyNpbmNsdWRlICJ0cmVlLXZlY3QuaCINCj4gKw0KPiAr I2RlZmluZSBOIDUwDQo+ICsjZGVmaW5lIFRZUEUgdWludDMyX3QNCj4gKw0KPiArX19hdHRyaWJ1 dGVfXygobm9pcGEsIG5vaW5saW5lLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMShUWVBFKg0K PiArcmVzdHJpY3QgcGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7DQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqICh1aW50NjRf dClsZXZlbCkgLyAweGZmZmZmZmZmVUw7IH0NCj4gKw0KPiArX19hdHRyaWJ1dGVfXygobm9pcGEs IG5vaW5saW5lLCBvcHRpbWl6ZSgiTzMiKSkpIHZvaWQgZnVuMihUWVBFKg0KPiArcmVzdHJpY3Qg cGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg aSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqICh1aW50NjRfdClsZXZlbCkgLyAw eGZmZmZmZmZmVUw7IH0NCj4gKw0KPiArI2luY2x1ZGUgInZlY3QtZGl2LWJpdG1hc2suaCINCj4g Kw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAidmVjdF9yZWNvZ19kaXZt b2RfcGF0dGVybjoNCj4gK2RldGVjdGVkIiAidmVjdCIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0g fSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2 LWJpdG1hc2suaA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFz ay5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5YTE2NzM5YWE0YjcwNjYxNjM2N2JmZDENCj4gODMy ZjI4ZWJkMDc5OTNlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLmgNCj4gQEAgLTAsMCArMSw0MyBAQA0KPiArI2luY2x1 ZGUgPHN0ZGlvLmg+DQo+ICsNCj4gKyNpZm5kZWYgTg0KPiArI2RlZmluZSBOIDY1DQo+ICsjZW5k aWYNCj4gKw0KPiArI2lmbmRlZiBUWVBFDQo+ICsjZGVmaW5lIFRZUEUgdWludDMyX3QNCj4gKyNl bmRpZg0KPiArDQo+ICsjaWZuZGVmIERFQlVHDQo+ICsjZGVmaW5lIERFQlVHIDANCj4gKyNlbmRp Zg0KPiArDQo+ICsjZGVmaW5lIEJBU0UgKChUWVBFKSAtMSA8IDAgPyAtMTI2IDogNCkNCj4gKw0K PiAraW50IG1haW4gKCkNCj4gK3sNCj4gKyAgVFlQRSBhW05dOw0KPiArICBUWVBFIGJbTl07DQo+ ICsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpDQo+ICsgICAgew0KPiArICAgICAg YVtpXSA9IEJBU0UgKyBpICogMTM7DQo+ICsgICAgICBiW2ldID0gQkFTRSArIGkgKiAxMzsNCj4g KyAgICAgIGlmIChERUJVRykNCj4gKyAgICAgICAgcHJpbnRmICgiJWQ6IDB4JXhcbiIsIGksIGFb aV0pOw0KPiArICAgIH0NCj4gKw0KPiArICBmdW4xIChhLCBOIC8gMiwgTik7DQo+ICsgIGZ1bjIg KGIsIE4gLyAyLCBOKTsNCj4gKw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkNCj4g KyAgICB7DQo+ICsgICAgICBpZiAoREVCVUcpDQo+ICsgICAgICAgIHByaW50ZiAoIiVkID0gMHgl eCA9PSAweCV4XG4iLCBpLCBhW2ldLCBiW2ldKTsNCj4gKw0KPiArICAgICAgaWYgKGFbaV0gIT0g YltpXSkNCj4gKyAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICAgIH0NCj4gKyAgcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2Rpdi1ieS1iaXRtYXNrLmMNCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9kaXYtYnktYml0bWFzay5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNTM1NzkxYmE3 MjU4MzAyZTBjMmNmNDRhDQo+IGIyMTFjZDI0NmQ4MmQ1DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZGl2LWJ5LWJpdG1hc2suYw0KPiBA QCAtMCwwICsxLDYxIEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtc3RkPWM5OSIgfSAqLw0KPiArLyogeyBkZy1maW5hbCB7 IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFyZ2V0IHsgbGUgfSB9IH0gfQ0K PiArKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArDQo+ICsjcHJhZ21hIEdDQyB0 YXJnZXQgIitub3N2ZSINCj4gKw0KPiArLyoNCj4gKyoqIGRyYXdfYml0bWFwMToNCj4gKyoqIC4u Lg0KPiArKiogCWFkZGhuCXZbMC05XSsuOGIsIHZbMC05XSsuOGgsIHZbMC05XSsuOGgNCj4gKyoq IAlhZGRobgl2WzAtOV0rLjhiLCB2WzAtOV0rLjhoLCB2WzAtOV0rLjhoDQo+ICsqKiAJdWFkZHcJ dlswLTldKy44aCwgdlswLTldKy44aCwgdlswLTldKy44Yg0KPiArKiogCXVhZGR3CXZbMC05XSsu OGgsIHZbMC05XSsuOGgsIHZbMC05XSsuOGINCj4gKyoqIAl1enAyCXZbMC05XSsuMTZiLCB2WzAt OV0rLjE2YiwgdlswLTldKy4xNmINCj4gKyoqIC4uLg0KPiArKi8NCj4gK3ZvaWQgZHJhd19iaXRt YXAxKHVpbnQ4X3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50OF90IGxldmVsLCBpbnQgbikgew0KPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9 IChwaXhlbFtpXSAqIGxldmVsKSAvIDB4ZmY7IH0NCj4gKw0KPiArdm9pZCBkcmF3X2JpdG1hcDIo dWludDhfdCogcmVzdHJpY3QgcGl4ZWwsIHVpbnQ4X3QgbGV2ZWwsIGludCBuKSB7DQo+ICsgIGZv ciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKz0xKQ0KPiArICAgIHBpeGVsW2ldID0gKHBp eGVsW2ldICogbGV2ZWwpIC8gMHhmZTsgfQ0KPiArDQo+ICsvKg0KPiArKiogZHJhd19iaXRtYXAz Og0KPiArKiogLi4uDQo+ICsqKiAJYWRkaG4JdlswLTldKy40aCwgdlswLTldKy40cywgdlswLTld Ky40cw0KPiArKiogCWFkZGhuCXZbMC05XSsuNGgsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMNCj4g KyoqIAl1YWRkdwl2WzAtOV0rLjRzLCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRoDQo+ICsqKiAJdWFk ZHcJdlswLTldKy40cywgdlswLTldKy40cywgdlswLTldKy40aA0KPiArKiogCXV6cDIJdlswLTld Ky44aCwgdlswLTldKy44aCwgdlswLTldKy44aA0KPiArKiogLi4uDQo+ICsqLw0KPiArdm9pZCBk cmF3X2JpdG1hcDModWludDE2X3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50MTZfdCBsZXZlbCwgaW50 IG4pIHsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrPTEpDQo+ICsgICAg cGl4ZWxbaV0gPSAocGl4ZWxbaV0gKiBsZXZlbCkgLyAweGZmZmZVOyB9DQo+ICsNCj4gKy8qDQo+ ICsqKiBkcmF3X2JpdG1hcDQ6DQo+ICsqKiAuLi4NCj4gKyoqIAlhZGRobgl2WzAtOV0rLjJzLCB2 WzAtOV0rLjJkLCB2WzAtOV0rLjJkDQo+ICsqKiAJYWRkaG4JdlswLTldKy4ycywgdlswLTldKy4y ZCwgdlswLTldKy4yZA0KPiArKiogCXVhZGR3CXZbMC05XSsuMmQsIHZbMC05XSsuMmQsIHZbMC05 XSsuMnMNCj4gKyoqIAl1YWRkdwl2WzAtOV0rLjJkLCB2WzAtOV0rLjJkLCB2WzAtOV0rLjJzDQo+ ICsqKiAJdXpwMgl2WzAtOV0rLjRzLCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzDQo+ICsqKiAuLi4N Cj4gKyovDQo+ICt2b2lkIGRyYXdfYml0bWFwNCh1aW50MzJfdCogcmVzdHJpY3QgcGl4ZWwsIHVp bnQzMl90IGxldmVsLCBpbnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2 KTsgaSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSAqICh1aW50NjRfdClsZXZlbCkg LyAweGZmZmZmZmZmVUw7IH0NCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5j YyBiL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYyBpbmRleA0KPiAzNTAxMjk1NTVhMGM3MWMwODk2 YzRmMTAwMzE2M2YzYjM1NTdjMTFiLi5lYmVlNWUyNGIxODY5MTVlYmNiM2E4MTdjDQo+IDlhMTIw NDZiNmVjOTRmMyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjDQo+ICsr KyBiL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYw0KPiBAQCAtMTIzNyw2ICsxMjM3LDE0IEBAIGV4 cGFuZF92ZWN0b3Jfb3BlcmF0aW9uIChnaW1wbGVfc3RtdF9pdGVyYXRvcg0KPiAqZ3NpLCB0cmVl IHR5cGUsIHRyZWUgY29tcHV0ZV90eXBlDQo+ICAJICB0cmVlIHJoczIgPSBnaW1wbGVfYXNzaWdu X3JoczIgKGFzc2lnbik7DQo+ICAJICB0cmVlIHJldDsNCj4gDQo+ICsJICAvKiBDaGVjayBpZiB0 aGUgdGFyZ2V0IHdhcyBnb2luZyB0byBoYW5kbGUgaXQgdGhyb3VnaCB0aGUgc3BlY2lhbA0KPiAr CSAgICAgZGl2aXNpb24gY2FsbGJhY2sgaG9vay4gICovDQo+ICsJICBpZiAodGFyZ2V0bS52ZWN0 b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChjb2RlLCB0eXBlLCByaHMxLA0KPiArCQkJ CQkJCSAgcmhzMiwgTlVMTCwNCj4gKwkJCQkJCQkgIE5VTExfUlRYLA0KPiBOVUxMX1JUWCkpDQo+ ICsJICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ICsNCj4gKw0KPiAgCSAgaWYgKCFvcHRpbWl6ZQ0K PiAgCSAgICAgIHx8ICFWRUNUT1JfSU5URUdFUl9UWVBFX1AgKHR5cGUpDQo+ICAJICAgICAgfHwg VFJFRV9DT0RFIChyaHMyKSAhPSBWRUNUT1JfQ1NUIGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0 LQ0KPiBwYXR0ZXJucy5jYyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgaW5kZXgNCj4gMDk1 NzRiYjFhMjY5NmIzNDM4YTRjZTlmMDlmNzRiNDJlNzg0YWNhMC4uNjA3YWNkZjk1ZWIzMDMzNWQ4 YmMwZTg1YWYNCj4gMGIxYmZlYTEwZmU0NDMgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Qt cGF0dGVybnMuY2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jYw0KPiBAQCAtMzU5 Niw2ICszNTk2LDEyIEBAIHZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm4gKHZlY19pbmZvICp2aW5m bywNCj4gDQo+ICAgICAgICByZXR1cm4gcGF0dGVybl9zdG10Ow0KPiAgICAgIH0NCj4gKyAgZWxz ZSBpZiAodGFyZ2V0bS52ZWN0b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChyaHNfY29k ZSwgdmVjdHlwZSwNCj4gKwkJCQkJCSAgICAgICBvcHJuZDAsIG9wcm5kMSwgTlVMTCwNCj4gKwkJ CQkJCSAgICAgICBOVUxMX1JUWCwgTlVMTF9SVFgpKQ0KPiArICAgIHsNCj4gKyAgICAgIHJldHVy biBOVUxMOw0KPiArICAgIH0NCj4gDQo+ICAgIGlmIChwcmVjID4gSE9TVF9CSVRTX1BFUl9XSURF X0lOVA0KPiAgICAgICAgfHwgaW50ZWdlcl96ZXJvcCAob3BybmQxKSkNCj4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGluZGV4DQo+ IGM5ZGFiMjE3ZjA1OWYxN2U5MWU5YTc1ODI1MjNlNjI3ZDdhNDViNjYuLjZkMDVjNDhhNzMzOWRl MDk0ZDcyODhiZDYNCj4gOGUwZTFjMWU5M2ZhYWZlIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12 ZWN0LXN0bXRzLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTYyNjAs NiArNjI2MCwxMSBAQCB2ZWN0b3JpemFibGVfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sDQo+ ICAJfQ0KPiAgICAgICAgdGFyZ2V0X3N1cHBvcnRfcCA9IChvcHRhYl9oYW5kbGVyIChvcHRhYiwg dmVjX21vZGUpDQo+ICAJCQkgICE9IENPREVfRk9SX25vdGhpbmcpOw0KPiArICAgICAgaWYgKCF0 YXJnZXRfc3VwcG9ydF9wKQ0KPiArCXRhcmdldF9zdXBwb3J0X3ANCj4gKwkgID0gdGFyZ2V0bS52 ZWN0b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChjb2RlLCB2ZWN0eXBlLA0KPiArCQkJ CQkJCW9wMCwgb3AxLCBOVUxMLA0KPiArCQkJCQkJCU5VTExfUlRYLA0KPiBOVUxMX1JUWCk7DQo+ ICAgICAgfQ0KPiANCj4gICAgYm9vbCB1c2luZ19lbXVsYXRlZF92ZWN0b3JzX3AgPSB2ZWN0X2Vt dWxhdGVkX3ZlY3Rvcl9wICh2ZWN0eXBlKTsNCj4gDQo+IA0KPiANCj4gDQo+IC0tDQo= --_002_VI1PR08MB5325644C591522E3DB62466BFF379VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb15780.patch" Content-Description: rb15780.patch Content-Disposition: attachment; filename="rb15780.patch"; size=7000; creation-date="Mon, 31 Oct 2022 11:27:39 GMT"; modification-date="Mon, 31 Oct 2022 11:34:43 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4IDU4N2E0NWQ3NzcyMWUxYjM5YWNjYmFk N2RiZWNhNGQ3NDFlY2NiMTAuLmY0MTUyMTYwMDg0ZDZiNmYzNGJkNjlmMGJhNjM4NmMxYWI1MGY3 N2UgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtNDgzMSw2ICs0ODMxLDY1IEBA IChkZWZpbmVfZXhwYW5kICJhYXJjaDY0XzxzdXI+PGFkZHN1Yj5objI8bW9kZT4iCiAgIH0KICkK IAorOzsgZGl2IG9wdGltaXphdGlvbnMgdXNpbmcgbmFycm93aW5ncworOzsgd2UgY2FuIGRvIHRo ZSBkaXZpc2lvbiBlLmcuIHNob3J0cyBieSAyNTUgZmFzdGVyIGJ5IGNhbGN1bGF0aW5nIGl0IGFz Cis7OyAoeCArICgoeCArIDI1NykgPj4gOCkpID4+IDggYXNzdW1pbmcgdGhlIG9wZXJhdGlvbiBp cyBkb25lIGluCis7OyBkb3VibGUgdGhlIHByZWNpc2lvbiBvZiB4LgorOzsKKzs7IElmIHdlIGlt YWdpbmUgYSBzaG9ydCBhcyBiZWluZyBjb21wb3NlZCBvZiB0d28gYmxvY2tzIG9mIGJ5dGVzIHRo ZW4KKzs7IGFkZGluZyAyNTcgb3IgMGIwMDAwXzAwMDFfMDAwMF8wMDAxIHRvIHRoZSBudW1iZXIg aXMgZXF1aXZhbGVuIHRvCis7OyBhZGRpbmcgMSB0byBlYWNoIHN1YiBjb21wb25lbnQ6Cis7Owor OzsgICAgICBzaG9ydCB2YWx1ZSBvZiAxNi1iaXRzCis7OyDilIzilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJAKKzs7IOKUgiAgICAgICAgICAgICAg4pSCICAgICAgICAgICAg ICAgIOKUggorOzsg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYCis7 OyAgIDgtYml0IHBhcnQxIOKWsiAgOC1iaXQgcGFydDIgICDilrIKKzs7ICAgICAgICAgICAgICAg 4pSCICAgICAgICAgICAgICAgIOKUggorOzsgICAgICAgICAgICAgICDilIIgICAgICAgICAgICAg ICAg4pSCCis7OyAgICAgICAgICAgICAgKzEgICAgICAgICAgICAgICArMQorOzsKKzs7IGFmdGVy IHRoZSBmaXJzdCBhZGRpdGlvbiwgd2UgaGF2ZSB0byBzaGlmdCByaWdodCBieSA4LCBhbmQgbmFy cm93IHRoZQorOzsgcmVzdWx0cyBiYWNrIHRvIGEgYnl0ZS4gIFJlbWVtYmVyIHRoYXQgdGhlIGFk ZGl0aW9uIG11c3QgYmUgZG9uZSBpbgorOzsgZG91YmxlIHRoZSBwcmVjaXNpb24gb2YgdGhlIGlu cHV0LiAgU2luY2UgOCBpcyBoYWxmIHRoZSBzaXplIG9mIGEgc2hvcnQKKzs7IHdlIGNhbiB1c2Ug YSBuYXJyb3dpbmcgaGFsZmluZyBpbnN0cnVjdGlvbiBpbiBBQXJjaDY0LCBhZGRobiB3aGljaCBh bHNvCis7OyBkb2VzIHRoZSBhZGRpdGlvbiBpbiBhIHdpZGVyIHByZWNpc2lvbiBhbmQgbmFycm93 cyBiYWNrIHRvIGEgYnl0ZS4gIFRoZQorOzsgc2hpZnQgaXRzZWxmIGlzIGltcGxpY2l0IGluIHRo ZSBvcGVyYXRpb24gYXMgaXQgd3JpdGVzIGJhY2sgb25seSB0aGUgdG9wCis7OyBoYWxmIG9mIHRo ZSByZXN1bHQuIGkuZS4gYml0cyAyKmVzaXplLTE6ZXNpemUuCis7OworOzsgU2luY2Ugd2UgaGF2 ZSBuYXJyb3dlZCB0aGUgcmVzdWx0IG9mIHRoZSBmaXJzdCBwYXJ0IGJhY2sgdG8gYSBieXRlLCBm b3IKKzs7IHRoZSBzZWNvbmQgYWRkaXRpb24gd2UgY2FuIHVzZSBhIHdpZGVuaW5nIGFkZGl0aW9u LCB1YWRkdy4KKzs7Cis7OyBGb3IgdGhlIGZpbmFseSBzaGlmdCwgc2luY2UgaXQncyB1bnNpZ25l ZCBhcml0aG1hdGljIHdlIGVtaXQgYW4gdXNociBieSA4Cis7OyB0byBzaGlmdCBhbmQgdGhlIHZl Y3Rvcml6ZXIuCis7OworOzsgVGhlIHNoaWZ0IGlzIGxhdGVyIG9wdGltaXplZCBieSBjb21iaW5l IHRvIGEgdXpwMiB3aXRoIG1vdmkgIzAuCisoZGVmaW5lX2V4cGFuZCAiQGFhcmNoNjRfYml0bWFz a191ZGl2PG1vZGU+MyIKKyAgWyhtYXRjaF9vcGVyYW5kOlZRTiAwICJyZWdpc3Rlcl9vcGVyYW5k IikKKyAgIChtYXRjaF9vcGVyYW5kOlZRTiAxICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgIChtYXRj aF9vcGVyYW5kOlZRTiAyICJpbW1lZGlhdGVfb3BlcmFuZCIpXQorICAiVEFSR0VUX1NJTUQiCit7 CisgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgc2l6ZQorICAgID0gKDFVTEwgPDwgR0VUX01PREVf VU5JVF9CSVRTSVpFICg8Vk5BUlJPV1E+bW9kZSkpIC0gMTsKKyAgaWYgKCFDT05TVF9WRUNUT1Jf UCAob3BlcmFuZHNbMl0pCisgICAgICB8fCBjb25zdF92ZWN0b3JfZW5jb2RlZF9uZWx0cyAob3Bl cmFuZHNbMl0pICE9IDEKKyAgICAgIHx8IHNpemUgIT0gVUlOVFZBTCAoQ09OU1RfVkVDVE9SX0VM VCAob3BlcmFuZHNbMl0sIDApKSkKKyAgICBGQUlMOworCisgIHJ0eCBhZGRlbmQgPSBnZW5fcmVn X3J0eCAoPE1PREU+bW9kZSk7CisgIHJ0eCB2YWwgPSBhYXJjaDY0X3NpbWRfZ2VuX2NvbnN0X3Zl Y3Rvcl9kdXAgKDxWTkFSUk9XUTI+bW9kZSwgMSk7CisgIGVtaXRfbW92ZV9pbnNuIChhZGRlbmQs IGxvd3BhcnRfc3VicmVnICg8TU9ERT5tb2RlLCB2YWwsIDxWTkFSUk9XUTI+bW9kZSkpOworICBy dHggdG1wMSA9IGdlbl9yZWdfcnR4ICg8Vk5BUlJPV1E+bW9kZSk7CisgIHJ0eCB0bXAyID0gZ2Vu X3JlZ19ydHggKDxNT0RFPm1vZGUpOworICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X2FkZGhuPG1v ZGU+ICh0bXAxLCBvcGVyYW5kc1sxXSwgYWRkZW5kKSk7CisgIHVuc2lnbmVkIGJpdHNpemUgPSBH RVRfTU9ERV9VTklUX0JJVFNJWkUgKDxWTkFSUk9XUT5tb2RlKTsKKyAgcnR4IHNoaWZ0X3ZlY3Rv ciA9IGFhcmNoNjRfc2ltZF9nZW5fY29uc3RfdmVjdG9yX2R1cCAoPE1PREU+bW9kZSwgYml0c2l6 ZSk7CisgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfdWFkZHc8Vm5hcnJvd3E+ICh0bXAyLCBvcGVy YW5kc1sxXSwgdG1wMSkpOworICBlbWl0X2luc24gKGdlbl9hYXJjaDY0X3NpbWRfbHNocjxtb2Rl PiAob3BlcmFuZHNbMF0sIHRtcDIsIHNoaWZ0X3ZlY3RvcikpOworICBET05FOworfSkKKwogOzsg cG11bC4KIAogKGRlZmluZV9pbnNuICJhYXJjaDY0X3BtdWw8bW9kZT4iCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LmNjCmluZGV4IDRiNDg2YWVlYTkwZWEyYWZiOWNkZDk2YTRkYmUxNWM1YmIyYWJkN2EuLmQzYzM2 NTBkN2Q3MjhmNTZhZGI2NTE1NDEyN2RjN2I3MjM4NmM1YTcgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LmNjCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNj CkBAIC0yNDE0Niw2ICsyNDE0Niw0MCBAQCBhYXJjaDY0X3ZlY3Rvcml6ZV92ZWNfcGVybV9jb25z dCAobWFjaGluZV9tb2RlIHZtb2RlLCBtYWNoaW5lX21vZGUgb3BfbW9kZSwKICAgcmV0dXJuIHJl dDsKIH0KIAorLyogSW1wbGVtZW50IFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZ X0NPTlNULiAgKi8KKworYm9vbAorYWFyY2g2NF92ZWN0b3JpemVfY2FuX3NwZWNpYWxfZGl2X2J5 X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLAorCQkJCQkgICAgICAgdHJlZSB2ZWN0eXBl LCB3aWRlX2ludCBjc3QsCisJCQkJCSAgICAgICBydHggKm91dHB1dCwgcnR4IGluMCwgcnR4IGlu MSkKK3sKKyAgaWYgKGNvZGUgIT0gVFJVTkNfRElWX0VYUFIKKyAgICAgIHx8ICFUWVBFX1VOU0lH TkVEICh2ZWN0eXBlKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgdW5zaWduZWQgaW50IGZsYWdz ID0gYWFyY2g2NF9jbGFzc2lmeV92ZWN0b3JfbW9kZSAoVFlQRV9NT0RFICh2ZWN0eXBlKSk7Cisg IGlmICgoZmxhZ3MgJiBWRUNfQU5ZX1NWRSkgJiYgIVRBUkdFVF9TVkUyKQorICAgIHJldHVybiBm YWxzZTsKKworICBpZiAoaW4wID09IE5VTExfUlRYICYmIGluMSA9PSBOVUxMX1JUWCkKKyAgICB7 CisgICAgICB3aWRlX2ludCB2YWwgPSB3aTo6YWRkIChjc3QsIDEpOworICAgICAgaW50IHBvdyA9 IHdpOjpleGFjdF9sb2cyICh2YWwpOworICAgICAgcmV0dXJuIHBvdyA9PSAoaW50KShlbGVtZW50 X3ByZWNpc2lvbiAodmVjdHlwZSkgLyAyKTsKKyAgICB9CisKKyAgaWYgKCFWRUNUT1JfVFlQRV9Q ICh2ZWN0eXBlKSkKKyAgIHJldHVybiBmYWxzZTsKKworICBnY2NfYXNzZXJ0IChvdXRwdXQpOwor CisgIGlmICghKm91dHB1dCkKKyAgICAqb3V0cHV0ID0gZ2VuX3JlZ19ydHggKFRZUEVfTU9ERSAo dmVjdHlwZSkpOworCisgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYml0bWFza191ZGl2MyAoVFlQ RV9NT0RFICh2ZWN0eXBlKSwgKm91dHB1dCwgaW4wLCBpbjEpKTsKKyAgcmV0dXJuIHRydWU7Cit9 CisKIC8qIEdlbmVyYXRlIGEgYnl0ZSBwZXJtdXRlIG1hc2sgZm9yIGEgcmVnaXN0ZXIgb2YgbW9k ZSBNT0RFLAogICAgd2hpY2ggaGFzIE5VTklUUyB1bml0cy4gICovCiAKQEAgLTI3NjA2LDYgKzI3 NjQwLDEwIEBAIGFhcmNoNjRfbGliZ2NjX2Zsb2F0aW5nX21vZGVfc3VwcG9ydGVkX3AKICN1bmRl ZiBUQVJHRVRfVkVDVE9SX0FMSUdOTUVOVAogI2RlZmluZSBUQVJHRVRfVkVDVE9SX0FMSUdOTUVO VCBhYXJjaDY0X3NpbWRfdmVjdG9yX2FsaWdubWVudAogCisjdW5kZWYgVEFSR0VUX1ZFQ1RPUkla RV9DQU5fU1BFQ0lBTF9ESVZfQllfQ09OU1QKKyNkZWZpbmUgVEFSR0VUX1ZFQ1RPUklaRV9DQU5f U1BFQ0lBTF9ESVZfQllfQ09OU1QgXAorICBhYXJjaDY0X3ZlY3Rvcml6ZV9jYW5fc3BlY2lhbF9k aXZfYnlfY29uc3RhbnQKKwogI3VuZGVmIFRBUkdFVF9WRUNUT1JJWkVfUFJFRkVSUkVEX1ZFQ1RP Ul9BTElHTk1FTlQKICNkZWZpbmUgVEFSR0VUX1ZFQ1RPUklaRV9QUkVGRVJSRURfVkVDVE9SX0FM SUdOTUVOVCBcCiAgIGFhcmNoNjRfdmVjdG9yaXplX3ByZWZlcnJlZF92ZWN0b3JfYWxpZ25tZW50 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9kaXYtYnktYml0 bWFzay5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZGl2LWJ5LWJpdG1hc2su YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4yYTUzNTc5MWJhNzI1ODMwMmUwYzJjZjQ0YWIyMTFjZDI0NmQ4MmQ1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvZGl2LWJ5 LWJpdG1hc2suYwpAQCAtMCwwICsxLDYxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtc3RkPWM5OSIgfSAqLworLyogeyBkZy1maW5h bCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFyZ2V0IHsgbGUgfSB9IH0g fSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNwcmFnbWEgR0NDIHRhcmdldCAiK25vc3Zl IgorCisvKgorKiogZHJhd19iaXRtYXAxOgorKiogLi4uCisqKiAJYWRkaG4JdlswLTldKy44Yiwg dlswLTldKy44aCwgdlswLTldKy44aAorKiogCWFkZGhuCXZbMC05XSsuOGIsIHZbMC05XSsuOGgs IHZbMC05XSsuOGgKKyoqIAl1YWRkdwl2WzAtOV0rLjhoLCB2WzAtOV0rLjhoLCB2WzAtOV0rLjhi CisqKiAJdWFkZHcJdlswLTldKy44aCwgdlswLTldKy44aCwgdlswLTldKy44YgorKiogCXV6cDIJ dlswLTldKy4xNmIsIHZbMC05XSsuMTZiLCB2WzAtOV0rLjE2YgorKiogLi4uCisqLwordm9pZCBk cmF3X2JpdG1hcDEodWludDhfdCogcmVzdHJpY3QgcGl4ZWwsIHVpbnQ4X3QgbGV2ZWwsIGludCBu KQoreworICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSs9MSkKKyAgICBwaXhlbFtp XSA9IChwaXhlbFtpXSAqIGxldmVsKSAvIDB4ZmY7Cit9CisKK3ZvaWQgZHJhd19iaXRtYXAyKHVp bnQ4X3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50OF90IGxldmVsLCBpbnQgbikKK3sKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrPTEpCisgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0g KiBsZXZlbCkgLyAweGZlOworfQorCisvKgorKiogZHJhd19iaXRtYXAzOgorKiogLi4uCisqKiAJ YWRkaG4JdlswLTldKy40aCwgdlswLTldKy40cywgdlswLTldKy40cworKiogCWFkZGhuCXZbMC05 XSsuNGgsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMKKyoqIAl1YWRkdwl2WzAtOV0rLjRzLCB2WzAt OV0rLjRzLCB2WzAtOV0rLjRoCisqKiAJdWFkZHcJdlswLTldKy40cywgdlswLTldKy40cywgdlsw LTldKy40aAorKiogCXV6cDIJdlswLTldKy44aCwgdlswLTldKy44aCwgdlswLTldKy44aAorKiog Li4uCisqLwordm9pZCBkcmF3X2JpdG1hcDModWludDE2X3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50 MTZfdCBsZXZlbCwgaW50IG4pCit7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBp Kz0xKQorICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICogbGV2ZWwpIC8gMHhmZmZmVTsKK30KKwor LyoKKyoqIGRyYXdfYml0bWFwNDoKKyoqIC4uLgorKiogCWFkZGhuCXZbMC05XSsuMnMsIHZbMC05 XSsuMmQsIHZbMC05XSsuMmQKKyoqIAlhZGRobgl2WzAtOV0rLjJzLCB2WzAtOV0rLjJkLCB2WzAt OV0rLjJkCisqKiAJdWFkZHcJdlswLTldKy4yZCwgdlswLTldKy4yZCwgdlswLTldKy4ycworKiog CXVhZGR3CXZbMC05XSsuMmQsIHZbMC05XSsuMmQsIHZbMC05XSsuMnMKKyoqIAl1enAyCXZbMC05 XSsuNHMsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMKKyoqIC4uLgorKi8KK3ZvaWQgZHJhd19iaXRt YXA0KHVpbnQzMl90KiByZXN0cmljdCBwaXhlbCwgdWludDMyX3QgbGV2ZWwsIGludCBuKQorewor ICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSs9MSkKKyAgICBwaXhlbFtpXSA9IChw aXhlbFtpXSAqICh1aW50NjRfdClsZXZlbCkgLyAweGZmZmZmZmZmVUw7Cit9Cg== --_002_VI1PR08MB5325644C591522E3DB62466BFF379VI1PR08MB5325eurp_--