From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2073.outbound.protection.outlook.com [40.107.104.73]) by sourceware.org (Postfix) with ESMTPS id 0E2963858C56 for ; Tue, 21 Jun 2022 13:43:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0E2963858C56 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=mv64TljLMu6pKKaZ3gfzJB5pxyLzoALOB1c7cE9SbjHTW5ha4HKLT8BU1TvdmU/ZVuzNOnRgC8kf+wwFttHfUhLG7JS5++ow8Sny3NoEnBmPIxcGSfA9U4VJdQ1g+/Y4Cdc0d+rhGmQ7PhcHnWa99+arDcylw0T1/q8MCae6uTgjs99mfptgAmhg0sn5M2jpW9C89mdq5SFy6UDs3HCBQqGSrPEdoSNoLwsXWQLfhkhkD2qzvefVNU0DBoO0T1e62ueR3PGYcPYsttAr4cdtf6zpWv3TFisUvBRnpSzwYtfPPP6L5t20aTY9ibTwZk9k1Z5wlJq0S0PleACgvXxQag== 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=lYi7Dnhs/z4Gs61QF8N2AOcOX5z5IP2L6BJ30E6B/KQ=; b=AbZoimmpjIUi/6iZsGfX6IqIFKTAMxGSTmRTjvUrIr9U6fGU+heDRTU1dY3cPZZPOnM+8vXXPUDRdkFjIxX4paIErpfmJproZ3stZHnqwkmfm8xwFjqaiA9s30MnoojKl3dfw669+5ofTFbXV5Dq7+q5STzkDpbycFgQn0BpYCMww4cTiHOO6nyck18Vd+QXZ3BubecUhddOMJ0/wNelAxGmnw5KrYCqGhCTywZ8nLAK9Z4lZgvtk1ZThUjBSgY1PxablqzWvYJjCscisKQf1tD/cDYsdCGG2BKE/+9I7bQRVbAhX4DWWGzvCCVqepKya1IOOqsyZdCXx7jIggWDzQ== 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]) Received: from AM6PR02CA0019.eurprd02.prod.outlook.com (2603:10a6:20b:6e::32) by AM8PR08MB5569.eurprd08.prod.outlook.com (2603:10a6:20b:1de::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Tue, 21 Jun 2022 13:43:06 +0000 Received: from AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:6e::4) by AM6PR02CA0019.outlook.office365.com (2603:10a6:20b:6e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22 via Frontend Transport; Tue, 21 Jun 2022 13:43:06 +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 AM5EUR03FT018.mail.protection.outlook.com (10.152.16.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14 via Frontend Transport; Tue, 21 Jun 2022 13:43:05 +0000 Received: ("Tessian outbound ff2e13d26e0f:v120"); Tue, 21 Jun 2022 13:42:57 +0000 X-CR-MTA-TID: 64aa7808 Received: from d6b0c021482d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id CB59A020-FE33-45CF-88F8-2CB6C6A3807E.1; Tue, 21 Jun 2022 13:42:51 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d6b0c021482d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 21 Jun 2022 13:42:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UKU1ZYRDMFvezgqmVdgTbgsQJgQo7J2N0N2tqoiUdTtbbD75V0/eVYoCgolcjuWIscTeVWkwJ8USKlyrcIH1sxOvC+cWhV4FpmdSvW/OsISFfugd5Gxt0qemO3mln8WIa/+qmuAaOjXJqj8mHI24UGr+njobNs/BuhC1PUGnw08MV8UUhdKXYqtHQ+li3rQbLc7zJZgQ3KSlNqM5gltOsHOgI97mnLcgUuebGpuoSZB4NylQ8BSh13sid1Nsvl2aYoukFP4Pohd0X6yV8V+LOsxhIFYA8yLJgtba4DKtFNMMYrq/zx+BVbV1ceeMC5Qed0GH2iVc72+dXswlDBhqbQ== 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=lYi7Dnhs/z4Gs61QF8N2AOcOX5z5IP2L6BJ30E6B/KQ=; b=FQEBPheWUnEMqtqqc3vl7bKade9zA/d5bicSdSNcvXQd5I6ib80ZT0PUWcGKaGzN5tJgzV6PnYo2vkNjk7DW+SgpsVlH7hRI4ymZd83rl5Xfydo8mAySbdOxw+LR+vMEOzD1GvGUhM+ZipZz0k/5JoMlyYrZ10bbRbNLMrHq2ei0Kigrxcro2cvaJAXAhUFr1hB+UhSHg1XsGfPi5J3wFUXef/uqaCObNCoNBAsDUIxx5GEAjedaiZprgyp0ynJ/aL3rKBS9GYf7O7b9EQkRPDYbMU/9XHhM7IU78GkI2CA6QIpVUwucCZL2uxfJbxL9hK5aKRhfiH/gU8dlmvoiCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DBBPR08MB5929.eurprd08.prod.outlook.com (2603:10a6:10:208::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Tue, 21 Jun 2022 13:42:49 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%8]) with mapi id 15.20.5353.022; Tue, 21 Jun 2022 13:42:49 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "jakub@redhat.com" Subject: RE: [PATCH 2/2]middle-end: Support recognition of three-way max/min. Thread-Topic: [PATCH 2/2]middle-end: Support recognition of three-way max/min. Thread-Index: AQHYgXGf5qeydB2BT0ON9B9LcfwJDa1X/qYAgAAFiKCAAdrdAIAAA7nQ Date: Tue, 21 Jun 2022 13:42:49 +0000 Message-ID: References: <29n37062-n3s3-71o9-8411-r851o15ss72@fhfr.qr> <9qs4961-654o-286-rn16-36q85pro9q@fhfr.qr> In-Reply-To: <9qs4961-654o-286-rn16-36q85pro9q@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: BFAB725C0A40EC4C9B1869CD2383466A.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: bf143574-7d88-46e9-b007-08da538bf82f x-ms-traffictypediagnostic: DBBPR08MB5929:EE_|AM5EUR03FT018:EE_|AM8PR08MB5569:EE_ X-Microsoft-Antispam-PRVS: 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: 7Gq//F+cI1Zw2YE+y6I2izS/QlcuyUGq3/5MYusWl9y6e/Xr2x3V8K+758yIr6TVy49RrnvxV+s1FatqQsNmvA9e4RWYJJiy8aWfZ3M+NKCVbkkhq9LkmwnKckwsvj1P7hO79qOaiojzWBaNjruGYaCDiCRPIXjqgqmMQn+jUfy3h7U3UZBONEzicZMcNlAfnFAPBhCYHzyj0pee7U0FB4g9pLTyvDnAMGhQ3NEDP0XI2CetI5U/ugOoze6sEUzCAO7Rq+2dSkvhXkU1H0teUphgeolYa1lDUYKjdJ5O2fdcRoTsk/C5gIg8D3xssdsHaeCcHrKOrTVM4VGo875c3Lx3XjRd6v0XQJdVYUzGeEoNvtfrP0HCoeDoFuDDV7sWaiG7DSiz7PBzwbl64Btl0rWp+Lkhmb31oK1AI9EZ0AEHSfCweem57uCnvvC/BoTYruh7yFnwGAhBVl8DXdXMEva6VyeZiz48lOfd1coXeM/47YSz0dxnyAiojoavlUJ6+maXzpa5SM8Hnb1s6dP93GY8HzLk7FLpK16+wAITtBqhAlbtJ2NsWmIjo5dMBoXxgYvnWkHUexcsgq83oB5FiHkELNnCdOKrjljPi7N75okH7NyncoEdrVMOwVGyBYgxMZRVvQO8RiC0XnH/DWS61O757m2to968iTIhqNs5vVgK6WoDRRZSlblftUZ7qCvNUgXFLrhc975Q3T/J2mLcL+LqXw7M5yIjiBbykgMcDYjpTHFIOIg+QO5waKiWZfKrnpgE62R3EOCSP6AC9r5KInwYyLloWP6Xigt03w2wnP340Z4HNKrPZwunkC2Wq7+nPw7zGsh5se+BlbEabyQnhQ== 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:(13230016)(4636009)(376002)(366004)(39860400002)(346002)(396003)(136003)(478600001)(6506007)(26005)(71200400001)(38100700002)(7696005)(53546011)(84970400001)(9686003)(38070700005)(186003)(122000001)(41300700001)(83380400001)(30864003)(66574015)(64756008)(66446008)(52536014)(66476007)(8676002)(66556008)(76116006)(66946007)(4326008)(33656002)(2906002)(8936002)(54906003)(55016003)(5660300002)(316002)(86362001)(6916009)(559001)(579004); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5929 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: AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 272158b9-d031-4968-cc3e-08da538bee88 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LPIEbcycAzFJMxulDY/jo5OD2iAnYcc6HQOa+D7K1/gkq+XpzrtZL4cysrpscaqv17NNmvQZ4LLmOVKSx2wIBPZYokCNLGDrjUHd0ZZNj0kQXqfhL95Us6KnlNxNbO/q80PeLChEFDLraRIsJL311Dq1Pc4hIcP2lmhBuieidGptiW4pTI/adcn40Zm1zoxoVMiRCq+jZF6VCnVYFJKG55IC6cpGrrccN0ueuxof9jT2kHYPgBPc2a3KdDZhDCPwnEWszLjyr1ZeasBrNGvfHQz90s33OKh+O79U3leGHnFvVc844lnUIBE26x0Gt2koJzNJV5AR8IUULqmTsVwzPBJIPsELv72ZKMeliX5nr7fQAYm5hJXQnfN5M17290048jUDtVdvUX3yjioFttFlQw9ihtgTLn/iAkt7tOF2TOSKvgKO7yUaOaGV256mSyiqFyt/kxNkEfGRLKq9nqi8RyQ4tUbVrGpY8NHJiYl5LO7ywmGLFC3nXJaf5WlJu8D24hGKa9PekQd8EAL6W6mO+nxnMpOUYK10fHGNeEGbvPGp5Azc2D7Cgl2Y+lR8X22f09Lgykual6pT9PF9VJgSAV7G5Rsmp98en0sBMANZ6nMTmllyKOAeZpvHnm5TcQVGFUwFKYGGfO4jlrC6fVM+lkzxDc23/VGFQbmeAmhICNd0jglRH23YGMS2BDHlnrTxDcWJV2oci3QqCeC/eaSxPQd1uiu3uqZtJmG90Ss+jXApNH/TTMPymhmw1ItP/vzaQ6sFkfZDj8aigfwiE6gB76dtnWXjeg+FlEOLLU3dvRmCaQMyMGmFnP+EyIc/3Z+Apn1fnbEHr1M3McCoudG6zA== 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:(13230016)(4636009)(396003)(136003)(39860400002)(346002)(376002)(36840700001)(40470700004)(46966006)(26005)(316002)(6506007)(84970400001)(356005)(70206006)(53546011)(82740400003)(86362001)(83380400001)(186003)(7696005)(40460700003)(41300700001)(107886003)(47076005)(9686003)(336012)(81166007)(36860700001)(66574015)(5660300002)(52536014)(6862004)(70586007)(82310400005)(40480700001)(55016003)(30864003)(54906003)(478600001)(8676002)(4326008)(2906002)(8936002)(33656002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2022 13:43:05.3874 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf143574-7d88-46e9-b007-08da538bf82f 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: AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5569 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jun 2022 13:43:17 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IFR1ZXNkYXksIEp1bmUgMjEsIDIwMjIgMjoxNSBQTQ0K PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6IGdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IGpha3ViQHJlZGhhdC5jb20N Cj4gU3ViamVjdDogUkU6IFtQQVRDSCAyLzJdbWlkZGxlLWVuZDogU3VwcG9ydCByZWNvZ25pdGlv biBvZiB0aHJlZS13YXkNCj4gbWF4L21pbi4NCj4gDQo+IE9uIE1vbiwgMjAgSnVuIDIwMjIsIFRh bWFyIENocmlzdGluYSB3cm90ZToNCj4gDQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+ID4gRnJvbTogUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiA+ID4g U2VudDogTW9uZGF5LCBKdW5lIDIwLCAyMDIyIDk6MzYgQU0NCj4gPiA+IFRvOiBUYW1hciBDaHJp c3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPg0KPiA+ID4gQ2M6IGdjYy1wYXRjaGVzQGdj Yy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IGpha3ViQHJlZGhhdC5jb20NCj4gPiA+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0ggMi8yXW1pZGRsZS1lbmQ6IFN1cHBvcnQgcmVjb2duaXRpb24gb2YgdGhy ZWUtd2F5DQo+ID4gPiBtYXgvbWluLg0KPiA+ID4NCj4gPiA+IE9uIFRodSwgMTYgSnVuIDIwMjIs IFRhbWFyIENocmlzdGluYSB3cm90ZToNCj4gPiA+DQo+ID4gPiA+IEhpIEFsbCwNCj4gPiA+ID4N Cj4gPiA+ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRocmVlLXdheSBtaW4vbWF4IHJl Y29nbml0aW9uIGluIHBoaS1vcHRzLg0KPiA+ID4gPg0KPiA+ID4gPiBDb25jcmV0ZWx5IGZvciBl LmcuDQo+ID4gPiA+DQo+ID4gPiA+ICNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiA+ID4NCj4gPiA+ ID4gdWludDhfdCB0aHJlZV9taW4gKHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkp IHsNCj4gPiA+ID4gCXVpbnQ4X3QJIHhrOw0KPiA+ID4gPiAgICAgaWYgKHhjIDwgeG0pIHsNCj4g PiA+ID4gICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPCB4eSA/IHhjIDogeHkpOw0KPiA+ID4g PiAgICAgfSBlbHNlIHsNCj4gPiA+ID4gICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/ IHhtIDogeHkpOw0KPiA+ID4gPiAgICAgfQ0KPiA+ID4gPiAgICAgcmV0dXJuIHhrOw0KPiA+ID4g PiB9DQo+ID4gPiA+DQo+ID4gPiA+IHdlIGdlbmVyYXRlOg0KPiA+ID4gPg0KPiA+ID4gPiAgIDxi YiAyPiBbbG9jYWwgY291bnQ6IDEwNzM3NDE4MjRdOg0KPiA+ID4gPiAgIF81ID0gTUlOX0VYUFIg PHhjXzEoRCksIHh5XzMoRCk+Ow0KPiA+ID4gPiAgIF83ID0gTUlOX0VYUFIgPHhtXzIoRCksIF81 PjsNCj4gPiA+ID4gICByZXR1cm4gXzc7DQo+ID4gPiA+DQo+ID4gPiA+IGluc3RlYWQgb2YNCj4g PiA+ID4NCj4gPiA+ID4gICA8YmIgMj46DQo+ID4gPiA+ICAgaWYgKHhjXzIoRCkgPCB4bV8zKEQp KQ0KPiA+ID4gPiAgICAgZ290byA8YmIgMz47DQo+ID4gPiA+ICAgZWxzZQ0KPiA+ID4gPiAgICAg Z290byA8YmIgND47DQo+ID4gPiA+DQo+ID4gPiA+ICAgPGJiIDM+Og0KPiA+ID4gPiAgIHhrXzUg PSBNSU5fRVhQUiA8eGNfMihEKSwgeHlfNChEKT47DQo+ID4gPiA+ICAgZ290byA8YmIgNT47DQo+ ID4gPiA+DQo+ID4gPiA+ICAgPGJiIDQ+Og0KPiA+ID4gPiAgIHhrXzYgPSBNSU5fRVhQUiA8eG1f MyhEKSwgeHlfNChEKT47DQo+ID4gPiA+DQo+ID4gPiA+ICAgPGJiIDU+Og0KPiA+ID4gPiAgICMg eGtfMSA9IFBISSA8eGtfNSgzKSwgeGtfNig0KT4NCj4gPiA+ID4gICByZXR1cm4geGtfMTsNCj4g PiA+ID4NCj4gPiA+ID4gVGhlIHNhbWUgZnVuY3Rpb24gYWxzbyBpbW1lZGlhdGVseSBkZWFscyB3 aXRoIHR1cm5pbmcgYQ0KPiA+ID4gPiBtaW5pbWl6YXRpb24gcHJvYmxlbSBpbnRvIGEgbWF4aW1p emF0aW9uIG9uZSBpZiB0aGUgcmVzdWx0cyBhcmUNCj4gPiA+ID4gaW52ZXJ0ZWQuICBXZSBkbyB0 aGlzIGhlcmUgc2luY2UgZG9pbmcgaXQgaW4gbWF0Y2gucGQgd291bGQgZW5kIHVwDQo+ID4gPiA+ IGNoYW5naW5nIHRoZSBzaGFwZSBvZiB0aGUgQkJzIGFuZCBhZGRpbmcgYWRkaXRpb25hbCBpbnN0 cnVjdGlvbnMNCj4gPiA+ID4gd2hpY2ggd291bGQgcHJldmVudCB2YXJpb3VzDQo+ID4gPiBvcHRp bWl6YXRpb25zIGZyb20gd29ya2luZy4NCj4gPiA+DQo+ID4gPiBDYW4geW91IGV4cGxhaW4gYSBi aXQgbW9yZT8NCj4gPg0KPiA+IEknbGwgcmVzcG9uZCB0byB0aGlzIG9uZSBmaXJzdCBJbiBjYXNl IGl0IGNoYW5nZXMgaG93IHlvdSB3YW50IG1lIHRvIHByb2NlZWQuDQo+ID4NCj4gPiBJIGluaXRp YWxseSBoYWQgdXNlZCBhIG1hdGNoLnBkIHJ1bGUgdG8gZG8gdGhlIG1pbiB0byBtYXggY29udmVy c2lvbiwNCj4gPiBidXQgYSBudW1iZXIgb2YgdGVzdGNhc2VzIHN0YXJ0ZWQgdG8gZmFpbC4gIFRo ZSByZWFzb24gd2FzIHRoYXQgYSBsb3QNCj4gPiBvZiB0aGUgZm9sZGluZ3MgY2hlY2tlZCB0aGF0 IHRoZSBCQiBjb250YWlucyBvbmx5IGEgc2luZ2xlIFNTQSBhbmQgdGhhdCB0aGF0DQo+IFNTQSBp cyBhIHBoaSBub2RlLg0KPiA+DQo+ID4gQnkgY2hhbmdpbmcgdGhlIG1pbiBpbnRvIG1heCwgdGhl IG5lZ2F0aW9uIG9mIHRoZSByZXN1bHQgZW5kcyB1cCBJbg0KPiA+IHRoZSBzYW1lIEJCIGFuZCBz byB0aGUgb3B0aW1pemF0aW9ucyBhcmUgc2tpcHBlZCBsZWFkaW5nIHRvIGxlc3Mgb3B0aW1hbA0K PiBjb2RlLg0KPiA+DQo+ID4gSSBkaWQgbG9vayBpbnRvIHJlbGF4aW5nIHRob3NlIHBoaSBvcHRz IGJ1dCBpdCBmZWx0IGxpa2UgSSdkIG1ha2UgYQ0KPiA+IHJhdGhlciBhcmJpdHJhcnkgZXhjZXB0 aW9uIGZvciBtaW51cyBhbmQgc2VlbWVkIGJldHRlciB0byBoYW5kbGUgaXQgaW4gdGhlDQo+IG1p bm1heCBmb2xkaW5nLg0KPiANCj4gVGhhdCdzIGEgcG9zc2liaWxpdHkgYnV0IHdlIHRyeSB0byBt YWludGFpbiBhIHNpbmdsZSBwbGFjZSBmb3IgYSB0cmFuc2Zvcm0gd2hpY2gNCj4gbWlnaHQgYmUg aW4gbWF0Y2gucGQgd2hpY2ggd291bGQgdGhlbiBhbHNvIGhhbmRsZSB0aGlzIHdoZW4gdGhlcmUn cyBhIFJIUw0KPiBDT05EX0VYUFIgY29ubmVjdGluZyB0aGUgc3RtdHMgcmF0aGVyIHRoYW4gYSBQ SEkgbm9kZS4NCg0KU29ycnksIEkgYW0gcHJvYmFibHkgbWlzc2luZyBzb21ldGhpbmcgaGVyZS4g IEp1c3QgdG8gYmUgY2xlYXIgYXQgdGhlIG1vbWVudCBJIGp1c3QgZG8gaXQgYWxsIGluDQptaW5t YXhfcmVwbGFjZW1lbnQsIHNvIGV2ZXJ5dGhpbmcgaXMgYWxyZWFkeSBpbiBvbmUgcGxhY2UuICBJ dCdzIGEgc2ltcGxlIGV4dGVuc2lvbiBvZiB0aGUgY29kZQ0KYWxyZWFkeSB0aGVyZS4NCg0KQXJl IHlvdSBzdWdnZXN0aW5nIEkgaGF2ZSB0byBtb3ZlIGl0IGFsbCB0byBtYXRjaC5wZD8gIFRoYXQn cyBub24tdHJpdmlhbC4uDQoNClRoYW5rcywNClRhbWFyDQoNCj4gDQo+IFJpY2hhcmQuDQo+IA0K PiA+IFRoYW5rcywNCj4gPiBUYW1hcg0KPiA+DQo+ID4gPg0KPiA+ID4gPiBCb290c3RyYXBwZWQg UmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1saW51eC1nbnUgYW5kIG5vIGlzc3Vlcy4NCj4gPiA+ ID4NCj4gPiA+ID4gT2sgZm9yIG1hc3Rlcj8NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmtzLA0KPiA+ ID4gPiBUYW1hcg0KPiA+ID4gPg0KPiA+ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gPg0KPiA+ ID4gPiAJKiB0cmVlLXNzYS1waGlvcHQuY2MgKG1pbm1heF9yZXBsYWNlbWVudCk6IE9wdGlvbmFs bHkgc2VhcmNoIGZvcg0KPiA+ID4gdGhlIHBoaQ0KPiA+ID4gPiAJc2VxdWVuY2Ugb2YgYSB0aHJl ZS13YXkgY29uZGl0aW9uYWwuDQo+ID4gPiA+IAkocmVwbGFjZV9waGlfZWRnZV93aXRoX3Zhcmlh YmxlKTogU3VwcG9ydCBkZWZlcnJpbmcgb2YgQkIgcmVtb3ZhbC4NCj4gPiA+ID4gCSh0cmVlX3Nz YV9waGlvcHRfd29ya2VyKTogRGV0ZWN0IGRpYW1vbmQgcGhpIHN0cnVjdHVyZSBmb3IgdGhyZWUt DQo+ID4gPiB3YXkNCj4gPiA+ID4gCW1pbi9tYXguDQo+ID4gPiA+IAkoc3RyaXBfYml0X25vdCwg aW52ZXJ0X21pbm1heF9jb2RlKTogTmV3Lg0KPiA+ID4gPg0KPiA+ID4gPiBnY2MvdGVzdHN1aXRl L0NoYW5nZUxvZzoNCj4gPiA+ID4NCj4gPiA+ID4gCSogZ2NjLmRnL3RyZWUtc3NhL3NwbGl0LXBh dGgtMS5jOiBEaXNhYmxlIHBoaS1vcHRzIHNvIHdlIGRvbid0DQo+ID4gPiBvcHRpbWl6ZQ0KPiA+ ID4gPiAJY29kZSBhd2F5Lg0KPiA+ID4gPiAJKiBnY2MuZGcvdHJlZS1zc2EvbWlubWF4LTMuYzog TmV3IHRlc3QuDQo+ID4gPiA+IAkqIGdjYy5kZy90cmVlLXNzYS9taW5tYXgtNC5jOiBOZXcgdGVz dC4NCj4gPiA+ID4gCSogZ2NjLmRnL3RyZWUtc3NhL21pbm1heC01LmM6IE5ldyB0ZXN0Lg0KPiA+ ID4gPiAJKiBnY2MuZGcvdHJlZS1zc2EvbWlubWF4LTYuYzogTmV3IHRlc3QuDQo+ID4gPiA+IAkq IGdjYy5kZy90cmVlLXNzYS9taW5tYXgtNy5jOiBOZXcgdGVzdC4NCj4gPiA+ID4gCSogZ2NjLmRn L3RyZWUtc3NhL21pbm1heC04LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPg0KPiA+ID4gPiAtLS0gaW5s aW5lIGNvcHkgb2YgcGF0Y2ggLS0NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL21pbm1heC0zLmMNCj4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90cmVlLXNzYS9taW5tYXgtMy5jDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+IGluZGV4DQo+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5kZTNiMmU5NDZlODE3MDFlM2I3NWY1ODBlDQo+ID4gPiA2YTgNCj4gPiA+ ID4gNDM2OTVhMDU3ODZlDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTMuYw0KPiA+ID4gPiBAQCAtMCwwICsx LDE3IEBADQo+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiArLyogeyBk Zy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1waGlvcHQiIH0gKi8NCj4gPiA+ID4gKw0KPiA+ID4g PiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ID4gPiArDQo+ID4gPiA+ICt1aW50OF90IHRocmVl X21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0KPiA+ID4gPiArCXVp bnQ4X3QJIHhrOw0KPiA+ID4gPiArICAgIGlmICh4YyA8IHhtKSB7DQo+ID4gPiA+ICsgICAgICAg IHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7DQo+ID4gPiA+ICsgICAgfSBlbHNl IHsNCj4gPiA+ID4gKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsN Cj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsgICAgcmV0dXJuIHhrOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1J Tl9FWFBSIiAzICJwaGlvcHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4gPiA+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1BWF9FWFBSIiAwICJwaGlvcHQxIiB9IH0NCj4g PiA+ID4gKyovDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS9taW5tYXgtNC5jDQo+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev bWlubWF4LTQuYw0KPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleA0K PiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMGI2ZDY2N2JlODY4YzI0MDVlYWVmZDE3Yw0KPiA+ID4gYjUyDQo+ID4gPiA+IDJkYTQ0YmFm YTBlMg0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL21pbm1heC00LmMNCj4gPiA+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ ID4gPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gPiA+ID4gKy8qIHsgZGctb3B0aW9ucyAi LU8gLWZkdW1wLXRyZWUtcGhpb3B0IiB9ICovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRl IDxzdGRpbnQuaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiArdWludDhfdCB0aHJlZV9tYXggKHVpbnQ4 X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCj4gPiA+ID4gKyAgICB1aW50OF90CSB4 azsNCj4gPiA+ID4gKyAgICBpZiAoeGMgPiB4bSkgew0KPiA+ID4gPiArICAgICAgICB4ayA9ICh1 aW50OF90KSAoeGMgPiB4eSA/IHhjIDogeHkpOw0KPiA+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4g PiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA+IHh5ID8geG0gOiB4eSk7DQo+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiArICAgIHJldHVybiB4azsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIg MCAicGhpb3B0MSIgfSB9DQo+ID4gPiA+ICsqLw0KPiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMyAicGhpb3B0MSIgfSB9DQo+ID4gPiA+ICsq Lw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlu bWF4LTUuYw0KPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC01 LmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXgNCj4gPiA+ID4N Cj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MDYw MWEzY2M3NWQwOWE5ZTZlNTRhMzVmDQo+ID4gPiA1Yg0KPiA+ID4gPiA5OTkzMDc0Zjg1MTANCj4g PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 cmVlLXNzYS9taW5tYXgtNS5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMTcgQEANCj4gPiA+ID4gKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ICsvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVt cC10cmVlLXBoaW9wdCIgfSAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSA8c3RkaW50 Lmg+DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3VpbnQ4X3QgdGhyZWVfbWlubWF4MSAodWludDhfdCB4 YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0KPiA+ID4gPiArCXVpbnQ4X3QJIHhrOw0KPiA+ ID4gPiArICAgIGlmICh4YyA+IHhtKSB7DQo+ID4gPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3Qp ICh4YyA8IHh5ID8geGMgOiB4eSk7DQo+ID4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ID4gKyAg ICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCj4gPiA+ID4gKyAgICB9 DQo+ID4gPiA+ICsgICAgcmV0dXJuIHhrOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1JTl9FWFBSIiAyICJwaGlv cHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNi5j DQo+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTYuYw0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleA0KPiA+ID4gPg0KPiA+ID4N Cj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYyOGY2ZDk5MjIy OTU4Y2ZkOGM0MTBmMGUNCj4gPiA+IDg1DQo+ID4gPiA+IDYzOWUzYTQ5ZGQ0Yg0KPiA+ID4gPiAt LS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L21pbm1heC02LmMNCj4gPiA+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ID4gPiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gPiA+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUt cGhpb3B0IiB9ICovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4g PiA+ID4gKw0KPiA+ID4gPiArdWludDhfdCB0aHJlZV9taW5tYXgzICh1aW50OF90IHhjLCB1aW50 OF90IHhtLCB1aW50OF90IHh5KSB7DQo+ID4gPiA+ICsgICAgICAgIHVpbnQ4X3QgIHhrOw0KPiA+ ID4gPiArICAgIGlmICh4YyA+IHhtKSB7DQo+ID4gPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3Qp ICh4eSA8IHhjID8geGMgOiB4eSk7DQo+ID4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ID4gKyAg ICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCj4gPiA+ID4gKyAgICB9 DQo+ID4gPiA+ICsgICAgcmV0dXJuIHhrOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1JTl9FWFBSIiAxICJwaGlv cHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNy5j DQo+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTcuYw0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleA0KPiA+ID4gPg0KPiA+ID4N Cj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I0MjQxMmM0YWRh NDMzYjJmNTlkZjBhOGINCj4gPiA+IGVmDQo+ID4gPiA+IDlmYTdiMWM1ZTEwNA0KPiA+ID4gPiAt LS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L21pbm1heC03LmMNCj4gPiA+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ID4gPiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gPiA+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUt cGhpb3B0IiB9ICovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4g PiA+ID4gKw0KPiA+ID4gPiArdWludDhfdCB0aHJlZV9taW5tYXgyICh1aW50OF90IHhjLCB1aW50 OF90IHhtLCB1aW50OF90IHh5KSB7DQo+ID4gPiA+ICsJdWludDhfdAkgeGs7DQo+ID4gPiA+ICsg ICAgaWYgKHhjID4geG0pIHsNCj4gPiA+ID4gKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhjID4g eHkgPyB4YyA6IHh5KTsNCj4gPiA+ID4gKyAgICB9IGVsc2Ugew0KPiA+ID4gPiArICAgICAgICB4 ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDogeHkpOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ ID4gKyAgICByZXR1cm4geGs7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgIk1JTl9FWFBSIiAxICJwaGlvcHQxIiB9IH0NCj4gPiA+ID4g KyovDQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1BWF9F WFBSIiAxICJwaGlvcHQxIiB9IH0NCj4gPiA+ID4gKyovDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtOC5jDQo+ID4gPiA+IGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTguYw0KPiA+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4gPiBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNkMDUwZTkzMjM3NmJjNTBiZDZhZTYwYw0KPiA+ ID4gYjY1DQo+ID4gPiA+IDRmY2FiMGJmZGQxYw0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC04LmMNCj4gPiA+ ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ID4gPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4g PiA+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtcGhpb3B0IiB9ICovDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr dWludDhfdCB0aHJlZV9taW5tYXgxMSAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4 eSkgew0KPiA+ID4gPiArICAgICAgICB1aW50OF90ICB4azsNCj4gPiA+ID4gKyAgICBpZiAoeGMg PCB4bSkgew0KPiA+ID4gPiArICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPiB4eSA/IHhjIDog eHkpOw0KPiA+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4 X3QpICh4bSA+IHh5ID8geG0gOiB4eSk7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIHJl dHVybiB4azsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMSAicGhpb3B0MSIgfSB9DQo+ID4gPiA+ ICsqLw0KPiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhf RVhQUiIgMiAicGhpb3B0MSIgfSB9DQo+ID4gPiA+ICsqLw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3BsaXQtcGF0aC0xLmMNCj4gPiA+ID4gYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zcGxpdC1wYXRoLTEuYw0KPiA+ID4gPiBpbmRl eA0KPiA+ID4gPg0KPiA+ID4NCj4gOGIyM2VmNGM3YTM0ODRjZGMxNjQ3ZWU2ZDFiMTUwZjE1Njg1 YmVmZi4uOTAyZGRlNDRhNTBlMTcxYjRmMzRiYTcyNA0KPiA+ID4gN2Q3DQo+ID4gPiA+IDVhMzJk MmM4NjBlZCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1z c2Evc3BsaXQtcGF0aC0xLmMNCj4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2Evc3BsaXQtcGF0aC0xLmMNCj4gPiA+ID4gQEAgLTEsNSArMSw1IEBADQo+ID4gPiA+ICAv KiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gPiA+IC0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnNwbGl0 LXBhdGhzDQo+ID4gPiA+IC1mZHVtcC10cmVlLXNwbGl0LXBhdGhzLWRldGFpbHMgLS1wYXJhbQ0K PiA+ID4gPiBtYXgtanVtcC10aHJlYWQtZHVwbGljYXRpb24tc3RtdHM9MjAiIH0gKi8NCj4gPiA+ ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3BsaXQtcGF0aHMNCj4gPiA+ID4gKy1mZHVtcC10 cmVlLXNwbGl0LXBhdGhzLWRldGFpbHMgLS1wYXJhbQ0KPiA+ID4gPiArbWF4LWp1bXAtdGhyZWFk LWR1cGxpY2F0aW9uLXN0bXRzPTIwIC1mbm8tc3NhLXBoaW9wdCIgfSAqLw0KPiA+ID4gPg0KPiA+ ID4gPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtcGhpb3B0LmNjIGIvZ2NjL3RyZWUtc3Nh LXBoaW9wdC5jYyBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4gNTYyNDY4YjdmMDJhOWZmZTI3MTMz MThhZGQ1NTE5MDJjMTRmODljMy4uNjI0NmYwNTQwMDZmZjE2ZTczNjAyZTdjZTINCj4gPiA+IGUN Cj4gPiA+IDMNCj4gPiA+ID4gNjdkMmQyMTQyMWIxIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9nY2Mv dHJlZS1zc2EtcGhpb3B0LmNjDQo+ID4gPiA+ICsrKyBiL2djYy90cmVlLXNzYS1waGlvcHQuY2MN Cj4gPiA+ID4gQEAgLTYyLDggKzYyLDggQEAgc3RhdGljIGdwaGkgKmZhY3Rvcl9vdXRfY29uZGl0 aW9uYWxfY29udmVyc2lvbg0KPiA+ID4gPiAoZWRnZSwNCj4gPiA+IGVkZ2UsIGdwaGkgKiwgdHJl ZSwgdHJlZSwNCj4gPiA+ID4gIAkJCQkJCWdpbXBsZSAqKTsNCj4gPiA+ID4gIHN0YXRpYyBpbnQg dmFsdWVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiA+ID4gIAkJ CSAgICAgIGVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJlZSk7IC1zdGF0aWMgYm9vbA0KPiA+ ID4gPiBtaW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiA+ ID4gLQkJCQllZGdlLCBlZGdlLCBncGhpICosIHRyZWUsIHRyZWUpOw0KPiA+ID4gPiArc3RhdGlj IGJvb2wgbWlubWF4X3JlcGxhY2VtZW50IChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2ssDQo+IGJh c2ljX2Jsb2NrLA0KPiA+ID4gPiArCQkJCWVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJlZSwg Ym9vbCk7DQo+ID4gPiA+ICBzdGF0aWMgYm9vbCBzcGFjZXNoaXBfcmVwbGFjZW1lbnQgKGJhc2lj X2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiA+ID4gIAkJCQkgICBlZGdlLCBlZGdlLCBncGhpICos IHRyZWUsIHRyZWUpOyAgc3RhdGljIGJvb2wNCj4gPiA+ID4gY29uZF9yZW1vdmFsX2luX2J1aWx0 aW5femVyb19wYXR0ZXJuIChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2ssIEBADQo+ID4gPiA+IC03 Myw3ICs3Myw3IEBAIHN0YXRpYyBib29sIGNvbmRfc3RvcmVfcmVwbGFjZW1lbnQgKGJhc2ljX2Js b2NrLA0KPiA+ID4gYmFzaWNfYmxvY2ssIGVkZ2UsIGVkZ2UsDQo+ID4gPiA+ICAJCQkJICAgIGhh c2hfc2V0PHRyZWU+ICopOw0KPiA+ID4gPiAgc3RhdGljIGJvb2wgY29uZF9pZl9lbHNlX3N0b3Jl X3JlcGxhY2VtZW50IChiYXNpY19ibG9jaywNCj4gPiA+ID4gYmFzaWNfYmxvY2ssIGJhc2ljX2Js b2NrKTsgIHN0YXRpYyBoYXNoX3NldDx0cmVlPiAqDQo+ID4gPiA+IGdldF9ub25fdHJhcHBpbmcg KCk7IC1zdGF0aWMgdm9pZCByZXBsYWNlX3BoaV9lZGdlX3dpdGhfdmFyaWFibGUNCj4gPiA+ID4g KGJhc2ljX2Jsb2NrLCBlZGdlLCBncGhpICosIHRyZWUpOw0KPiA+ID4gPiArc3RhdGljIHZvaWQg cmVwbGFjZV9waGlfZWRnZV93aXRoX3ZhcmlhYmxlIChiYXNpY19ibG9jaywgZWRnZSwNCj4gPiA+ ID4gK2dwaGkgKiwgdHJlZSwgYm9vbCk7DQo+ID4gPiA+ICBzdGF0aWMgdm9pZCBob2lzdF9hZGph Y2VudF9sb2FkcyAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrLA0KPiA+ID4gPiAgCQkJCSAgYmFz aWNfYmxvY2ssIGJhc2ljX2Jsb2NrKTsNCj4gPiA+ID4gIHN0YXRpYyBib29sIGdhdGVfaG9pc3Rf bG9hZHMgKHZvaWQpOyBAQCAtMTk5LDYgKzE5OSw3IEBADQo+ID4gPiA+IHRyZWVfc3NhX3BoaW9w dF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwgYm9vbA0KPiA+ID4gZG9faG9pc3RfbG9hZHMs IGJvb2wgZWFybHlfcCkNCj4gPiA+ID4gICAgICAgIGJhc2ljX2Jsb2NrIGJiMSwgYmIyOw0KPiA+ ID4gPiAgICAgICAgZWRnZSBlMSwgZTI7DQo+ID4gPiA+ICAgICAgICB0cmVlIGFyZzAsIGFyZzE7 DQo+ID4gPiA+ICsgICAgICBib29sIGRpYW1vbmRfbWlubWF4X3AgPSBmYWxzZTsNCj4gPiA+ID4N Cj4gPiA+ID4gICAgICAgIGJiID0gYmJfb3JkZXJbaV07DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0y NjUsNiArMjY2LDI5IEBAIHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxp bSwNCj4gPiA+IGJvb2wgZG9faG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkNCj4gPiA+ID4gIAkg ICAgaG9pc3RfYWRqYWNlbnRfbG9hZHMgKGJiLCBiYjEsIGJiMiwgYmIzKTsNCj4gPiA+ID4gIAkg IGNvbnRpbnVlOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gKyAgICAgIGVsc2UgaWYgKEVER0VfU1VD QyAoYmIxLCAwKS0+ZGVzdCA9PSBFREdFX1NVQ0MgKGJiMiwgMCktPmRlc3QNCj4gPiA+ID4gKwkg ICAgICAgJiYgc2luZ2xlX3N1Y2NfcCAoYmIxKQ0KPiA+ID4gPiArCSAgICAgICAmJiBzaW5nbGVf c3VjY19wIChiYjIpDQo+ID4gPiA+ICsJICAgICAgICYmIHNpbmdsZV9wcmVkX3AgKGJiMSkNCj4g PiA+ID4gKwkgICAgICAgJiYgc2luZ2xlX3ByZWRfcCAoYmIyKQ0KPiA+ID4gPiArCSAgICAgICAm JiBzaW5nbGVfc3VjY19wIChFREdFX1NVQ0MgKGJiMSwgMCktPmRlc3QpKQ0KPiA+ID4NCj4gPiA+ IHBsZWFzZSBkbyB0aGUgc2luZ2xlX3N1Y2MvcHJlZCBjaGVja3MgYmVsb3cgd2hlcmUgYXBwcm9w cmlhdGUsIGFsc28NCj4gPiA+IHdoYXQncyB0aGUgbGFzdCBjaGVjayBhYm91dD8gIHdoeSBkb2Vz IHRoZSBtZXJnZSBibG9jayBuZWVkIGEgc2luZ2xlDQo+IHN1Y2Nlc3Nvcj8NCj4gPiA+DQo+ID4g PiA+ICsJew0KPiA+ID4gPiArCSAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaXQxID0gZ3NpX3N0YXJ0 X25vbmRlYnVnX2FmdGVyX2xhYmVsc19iYg0KPiA+ID4gKGJiMSk7DQo+ID4gPiA+ICsJICBnaW1w bGVfc3RtdF9pdGVyYXRvciBpdDIgPSBnc2lfc3RhcnRfbm9uZGVidWdfYWZ0ZXJfbGFiZWxzX2Ji DQo+ID4gPiAoYmIyKTsNCj4gPiA+ID4gKwkgIGlmIChnc2lfb25lX2JlZm9yZV9lbmRfcCAoaXQx KSAmJiBnc2lfb25lX2JlZm9yZV9lbmRfcCAoaXQyKSkNCj4gPiA+ID4gKwkgICAgew0KPiA+ID4g PiArCSAgICAgIGdpbXBsZSAqc3RtdDEgPSBnc2lfc3RtdCAoaXQxKTsNCj4gPiA+ID4gKwkgICAg ICBnaW1wbGUgKnN0bXQyID0gZ3NpX3N0bXQgKGl0Mik7DQo+ID4gPiA+ICsJICAgICAgaWYgKGlz X2dpbXBsZV9hc3NpZ24gKHN0bXQxKSAmJiBpc19naW1wbGVfYXNzaWduIChzdG10MikpDQo+ID4g PiA+ICsJCXsNCj4gPiA+ID4gKwkJICBlbnVtIHRyZWVfY29kZSBjb2RlMSA9IGdpbXBsZV9hc3Np Z25fcmhzX2NvZGUgKHN0bXQxKTsNCj4gPiA+ID4gKwkJICBlbnVtIHRyZWVfY29kZSBjb2RlMiA9 IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQyKTsNCj4gPiA+ID4gKwkJICBkaWFtb25kX21p bm1heF9wDQo+ID4gPiA+ICsJCSAgICA9IChjb2RlMSA9PSBNSU5fRVhQUiB8fCBjb2RlMSA9PSBN QVhfRVhQUikNCj4gPiA+ID4gKwkJICAgICAgJiYgKGNvZGUyID09IE1JTl9FWFBSIHx8IGNvZGUy ID09IE1BWF9FWFBSKTsNCj4gPiA+ID4gKwkJfQ0KPiA+ID4gPiArCSAgICB9DQo+ID4gPiA+ICsJ fQ0KPiA+ID4NCj4gPiA+IEknZCBnZW5lcmFsaXplIHRoaXMgdG8gZ2VuZXJhbCBkaWFtb25kIGRl dGVjdGlvbiwgc2ltcGx5IGN1dHRpbmcgb2ZmDQo+ID4gPiAqX3JlcGxhY2VtZW50IHdvcmtlcnMg dGhhdCBkbyBub3QgaGFuZGxlIGRpYW1vbmRzIGFuZCBkbyBhcHByb3ByaWF0ZQ0KPiA+ID4gY2hl Y2tzIGluIG1pbm1heF9yZXBsYWNlbWVudCBvbmx5Lg0KPiA+ID4NCj4gPiA+ID4gICAgICAgIGVs c2UNCj4gPiA+ID4gIAljb250aW51ZTsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTMxNiw2ICszNDAs MTMgQEAgdHJlZV9zc2FfcGhpb3B0X3dvcmtlciAoYm9vbCBkb19zdG9yZV9lbGltLA0KPiA+ID4g Ym9vbCBkb19ob2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQ0KPiA+ID4gPiAgCSAgaWYgKCFjYW5k b3Jlc3QpDQo+ID4gPiA+ICAJICAgIGNvbnRpbnVlOw0KPiA+ID4gPg0KPiA+ID4gPiArCSAgLyog Q2hlY2sgdGhhdCB3ZSdyZSBsb29raW5nIGZvciBuZXN0ZWQgcGhpcy4gICovDQo+ID4gPiA+ICsJ ICBpZiAocGhpcyA9PSBOVUxMICYmIGRpYW1vbmRfbWlubWF4X3ApDQo+ID4gPiA+ICsJICAgIHsN Cj4gPiA+ID4gKwkgICAgICBwaGlzID0gcGhpX25vZGVzIChFREdFX1NVQ0MgKGJiMiwgMCktPmRl c3QpOw0KPiA+ID4gPiArCSAgICAgIGUyID0gRURHRV9TVUNDIChiYjIsIDApOw0KPiA+ID4gPiAr CSAgICB9DQo+ID4gPiA+ICsNCj4gPiA+DQo+ID4gPiBpbnN0ZWFkDQo+ID4gPg0KPiA+ID4gICAg ICAgICAgIGJhc2ljX2Jsb2NrIG1lcmdlID0gZGlhbW9uZF9wID8gRURHRV9TVUNDIChiYjIsIDAp LT5kZXN0IDogYmIyOw0KPiA+ID4gICAgICAgICAgIGdpbXBsZV9zZXEgcGhpcyA9IHBoaV9ub2Rl cyAobWVyZ2UpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+ICAJICBwaGkgPSBzaW5nbGVfbm9uX3Np bmdsZXRvbl9waGlfZm9yX2VkZ2VzIChwaGlzLCBlMSwgZTIpOw0KPiA+ID4gPiAgCSAgaWYgKCFw aGkpDQo+ID4gPiA+ICAJICAgIGNvbnRpbnVlOw0KPiA+ID4gPiBAQCAtMzI5LDYgKzM2MCw3IEBA IHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwNCj4gPiA+ID4gYm9v bCBkb19ob2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQ0KPiA+ID4gPg0KPiA+ID4gPiAgCSAgZ3Bo aSAqbmV3cGhpOw0KPiA+ID4gPiAgCSAgaWYgKHNpbmdsZV9wcmVkX3AgKGJiMSkNCj4gPiA+ID4g KwkgICAgICAmJiAhZGlhbW9uZF9taW5tYXhfcA0KPiA+ID4gPiAgCSAgICAgICYmIChuZXdwaGkg PSBmYWN0b3Jfb3V0X2NvbmRpdGlvbmFsX2NvbnZlcnNpb24gKGUxLCBlMiwgcGhpLA0KPiA+ID4g PiAgCQkJCQkJCSAgICAgIGFyZzAsIGFyZzEsDQo+ID4gPiA+ICAJCQkJCQkJICAgICAgY29uZF9z dG10KSkpDQo+ID4gPiA+IEBAIC0zNDMsMjAgKzM3NSwyNSBAQCB0cmVlX3NzYV9waGlvcHRfd29y a2VyIChib29sDQo+IGRvX3N0b3JlX2VsaW0sDQo+ID4gPiBib29sIGRvX2hvaXN0X2xvYWRzLCBi b29sIGVhcmx5X3ApDQo+ID4gPiA+ICAJICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gIAkgIC8qIERv IHRoZSByZXBsYWNlbWVudCBvZiBjb25kaXRpb25hbCBpZiBpdCBjYW4gYmUgZG9uZS4gICovDQo+ ID4gPiA+IC0JICBpZiAoIWVhcmx5X3AgJiYgdHdvX3ZhbHVlX3JlcGxhY2VtZW50IChiYiwgYmIx LCBlMiwgcGhpLCBhcmcwLA0KPiA+ID4gYXJnMSkpDQo+ID4gPiA+ICsJICBpZiAoIWVhcmx5X3AN Cj4gPiA+ID4gKwkgICAgICAmJiAhZGlhbW9uZF9taW5tYXhfcA0KPiA+ID4gPiArCSAgICAgICYm IHR3b192YWx1ZV9yZXBsYWNlbWVudCAoYmIsIGJiMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSkpDQo+ ID4gPiA+ICAJICAgIGNmZ2NoYW5nZWQgPSB0cnVlOw0KPiA+ID4gPiAtCSAgZWxzZSBpZiAobWF0 Y2hfc2ltcGxpZnlfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLA0KPiA+ID4gPiAt CQkJCQkgICAgICAgYXJnMCwgYXJnMSwNCj4gPiA+ID4gLQkJCQkJICAgICAgIGVhcmx5X3ApKQ0K PiA+ID4gPiArCSAgZWxzZSBpZiAoIWRpYW1vbmRfbWlubWF4X3ANCj4gPiA+ID4gKwkJICAgJiYg bWF0Y2hfc2ltcGxpZnlfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLA0KPiA+ID4g PiArCQkJCQkJICBhcmcwLCBhcmcxLCBlYXJseV9wKSkNCj4gPiA+ID4gIAkgICAgY2ZnY2hhbmdl ZCA9IHRydWU7DQo+ID4gPiA+ICAJICBlbHNlIGlmICghZWFybHlfcA0KPiA+ID4gPiArCQkgICAm JiAhZGlhbW9uZF9taW5tYXhfcA0KPiA+ID4gPiAgCQkgICAmJiBzaW5nbGVfcHJlZF9wIChiYjEp DQo+ID4gPiA+ICAJCSAgICYmIGNvbmRfcmVtb3ZhbF9pbl9idWlsdGluX3plcm9fcGF0dGVybiAo YmIsIGJiMSwgZTEsDQo+ID4gPiBlMiwNCj4gPiA+ID4gIAkJCQkJCQkgICAgcGhpLCBhcmcwLCBh cmcxKSkNCj4gPiA+ID4gIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQo+ID4gPiA+IC0JICBlbHNl IGlmIChtaW5tYXhfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLCBhcmcwLCBhcmcx KSkNCj4gPiA+ID4gKwkgIGVsc2UgaWYgKG1pbm1heF9yZXBsYWNlbWVudCAoYmIsIGJiMSwgYmIy LCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSwNCj4gPiA+ID4gKwkJCQkgICAgICAgZGlhbW9uZF9t aW5tYXhfcCkpDQo+ID4gPiA+ICAJICAgIGNmZ2NoYW5nZWQgPSB0cnVlOw0KPiA+ID4gPiAgCSAg ZWxzZSBpZiAoc2luZ2xlX3ByZWRfcCAoYmIxKQ0KPiA+ID4gPiArCQkgICAmJiAhZGlhbW9uZF9t aW5tYXhfcA0KPiA+ID4gPiAgCQkgICAmJiBzcGFjZXNoaXBfcmVwbGFjZW1lbnQgKGJiLCBiYjEs IGUxLCBlMiwgcGhpLCBhcmcwLA0KPiA+ID4gYXJnMSkpDQo+ID4gPiA+ICAJICAgIGNmZ2NoYW5n ZWQgPSB0cnVlOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gQEAgLTM4NSw3ICs0MjIsNyBAQCB0cmVl X3NzYV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3JlX2VsaW0sDQo+ID4gPiA+IGJvb2wgZG9f aG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkNCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyB2b2lk DQo+ID4gPiA+ICByZXBsYWNlX3BoaV9lZGdlX3dpdGhfdmFyaWFibGUgKGJhc2ljX2Jsb2NrIGNv bmRfYmxvY2ssDQo+ID4gPiA+IC0JCQkJZWRnZSBlLCBncGhpICpwaGksIHRyZWUgbmV3X3RyZWUp DQo+ID4gPiA+ICsJCQkJZWRnZSBlLCBncGhpICpwaGksIHRyZWUgbmV3X3RyZWUsIGJvb2wNCj4g PiA+IGRlbGV0ZV9iYiA9IHRydWUpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAgIGJhc2ljX2Jsb2Nr IGJiID0gZ2ltcGxlX2JiIChwaGkpOw0KPiA+ID4gPiAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBn c2k7DQo+ID4gPiA+IEBAIC00MjgsNyArNDY1LDcgQEAgcmVwbGFjZV9waGlfZWRnZV93aXRoX3Zh cmlhYmxlIChiYXNpY19ibG9jaw0KPiA+ID4gY29uZF9ibG9jaywNCj4gPiA+ID4gICAgICBlZGdl X3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMSk7DQo+ID4gPiA+ICAgIGVsc2UN Cj4gPiA+ID4gICAgICBlZGdlX3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMCk7 DQo+ID4gPiA+IC0gIGlmIChFREdFX0NPVU5UIChlZGdlX3RvX3JlbW92ZS0+ZGVzdC0+cHJlZHMp ID09IDEpDQo+ID4gPiA+ICsgIGlmIChFREdFX0NPVU5UIChlZGdlX3RvX3JlbW92ZS0+ZGVzdC0+ cHJlZHMpID09IDEgJiYNCj4gZGVsZXRlX2JiKQ0KPiA+ID4NCj4gPiA+IHdoeSBkbyB5b3UgbmVl ZCB0aGlzIGNoYW5nZT8NCj4gPiA+DQo+ID4gPiBEaWQgeW91IGNoZWNrIHdoZXRoZXIgdGhlIG5l dyBjYXNlIHdvcmtzIHdoZW4gdGhlIG1lcmdlIGJsb2NrIGhhcw0KPiA+ID4gbW9yZSB0aGFuIHR3 byBpbmNvbWluZyBlZGdlcz8NCj4gPiA+DQo+ID4gPiA+ICAgICAgew0KPiA+ID4gPiAgICAgICAg ZS0+ZmxhZ3MgfD0gRURHRV9GQUxMVEhSVTsNCj4gPiA+ID4gICAgICAgIGUtPmZsYWdzICY9IH4o RURHRV9UUlVFX1ZBTFVFIHwgRURHRV9GQUxTRV9WQUxVRSk7IEBAIC0NCj4gPiA+IDE1NjQsMTUN Cj4gPiA+ID4gKzE2MDEsNTIgQEAgdmFsdWVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrIGNvbmRf YmIsIGJhc2ljX2Jsb2NrDQo+ID4gPiBtaWRkbGVfYmIsDQo+ID4gPiA+ICAgIHJldHVybiAwOw0K PiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArLyogSWYgVkFSIGlzIGFuIFNTQV9OQU1FIHRo YXQgcG9pbnRzIHRvIGEgQklUX05PVF9FWFBSIHRoZW4NCj4gPiA+ID4gK3JldHVybiB0aGUNCj4g PiA+IFRSRUUgZm9yDQo+ID4gPiA+ICsgICB0aGUgdmFsdWUgYmVpbmcgaW52ZXJ0ZWQuICAqLw0K PiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdHJlZQ0KPiA+ID4gPiArc3RyaXBfYml0X25vdCAo dHJlZSB2YXIpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIGlmIChUUkVFX0NPREUgKHZhcikgIT0g U1NBX05BTUUpDQo+ID4gPiA+ICsgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBnaW1wbGUgKmFzc2lnbiA9IFNTQV9OQU1FX0RFRl9TVE1UICh2YXIpOyAgaWYgKGdp bXBsZV9jb2RlDQo+ID4gPiA+ICsgKGFzc2lnbikgIT0gR0lNUExFX0FTU0lHTikNCj4gPiA+ID4g KyAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChnaW1wbGVf YXNzaWduX3Joc19jb2RlIChhc3NpZ24pICE9IEJJVF9OT1RfRVhQUikNCj4gPiA+ID4gKyAgICBy ZXR1cm4gTlVMTF9UUkVFOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIHJldHVybiBnaW1wbGVfYXNz aWduX3JoczEgKGFzc2lnbik7IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyogSW52ZXJ0IGEgTUlO IHRvIGEgTUFYIG9yIGEgTUFYIHRvIGEgTUlOIGV4cHJlc3Npb24gQ09ERS4gICovDQo+ID4gPiA+ ICsNCj4gPiA+ID4gK2VudW0gdHJlZV9jb2RlDQo+ID4gPiA+ICtpbnZlcnRfbWlubWF4X2NvZGUg KGVudW0gdHJlZV9jb2RlIGNvZGUpIHsNCj4gPiA+ID4gKyAgc3dpdGNoIChjb2RlKSB7DQo+ID4g PiA+ICsgIGNhc2UgTUlOX0VYUFI6DQo+ID4gPiA+ICsgICAgcmV0dXJuIE1BWF9FWFBSOw0KPiA+ ID4gPiArICBjYXNlIE1BWF9FWFBSOg0KPiA+ID4gPiArICAgIHJldHVybiBNSU5fRVhQUjsNCj4g PiA+ID4gKyAgZGVmYXVsdDoNCj4gPiA+ID4gKyAgICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAgLyogIFRoZSBmdW5jdGlv biBtaW5tYXhfcmVwbGFjZW1lbnQgZG9lcyB0aGUgbWFpbiB3b3JrIG9mIGRvaW5nDQo+ID4gPiA+ IHRoZQ0KPiA+ID4gbWlubWF4DQo+ID4gPiA+ICAgICAgcmVwbGFjZW1lbnQuICBSZXR1cm4gdHJ1 ZSBpZiB0aGUgcmVwbGFjZW1lbnQgaXMgZG9uZS4gIE90aGVyd2lzZQ0KPiByZXR1cm4NCj4gPiA+ ID4gICAgICBmYWxzZS4NCj4gPiA+ID4gICAgICBCQiBpcyB0aGUgYmFzaWMgYmxvY2sgd2hlcmUg dGhlIHJlcGxhY2VtZW50IGlzIGdvaW5nIHRvIGJlIGRvbmUgb24uDQo+ID4gPiBBUkcwDQo+ID4g PiA+IC0gICAgaXMgYXJndW1lbnQgMCBmcm9tIHRoZSBQSEkuICBMaWtld2lzZSBmb3IgQVJHMS4g ICovDQo+ID4gPiA+ICsgICAgaXMgYXJndW1lbnQgMCBmcm9tIHRoZSBQSEkuICBMaWtld2lzZSBm b3IgQVJHMS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIElmIFRIUkVFV0FZX1AgdGhlbiBleHBl Y3QgdGhlIEJCIHRvIGJlIGxhaWQgb3V0IGluIGRpYW1vbmQNCj4gPiA+ID4gKyBzaGFwZSB3aXRo DQo+ID4gPiBlYWNoDQo+ID4gPiA+ICsgICAgQkIgY29udGFpbmluZyBvbmx5IGEgTUlOIG9yIE1B WCBleHByZXNzaW9uLiAgKi8NCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyBib29sDQo+ID4gPiA+ IC1taW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrIGNvbmRfYmIsIGJhc2ljX2Jsb2NrIG1p ZGRsZV9iYiwNCj4gPiA+ID4gLQkJICAgIGVkZ2UgZTAsIGVkZ2UgZTEsIGdwaGkgKnBoaSwgdHJl ZSBhcmcwLCB0cmVlIGFyZzEpDQo+ID4gPiA+ICttaW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Js b2NrIGNvbmRfYmIsIGJhc2ljX2Jsb2NrIG1pZGRsZV9iYiwNCj4gPiA+IGJhc2ljX2Jsb2NrIGFs dF9taWRkbGVfYmIsDQo+ID4gPiA+ICsJCSAgICBlZGdlIGUwLCBlZGdlIGUxLCBncGhpICpwaGks IHRyZWUgYXJnMCwgdHJlZSBhcmcxLCBib29sDQo+ID4gPiA+ICt0aHJlZXdheV9wKQ0KPiA+ID4g PiAgew0KPiA+ID4gPiAgICB0cmVlIHJlc3VsdDsNCj4gPiA+ID4gICAgZWRnZSB0cnVlX2VkZ2Us IGZhbHNlX2VkZ2U7DQo+ID4gPiA+IEBAIC0xNzI3LDkgKzE4MDEsMTQgQEAgbWlubWF4X3JlcGxh Y2VtZW50IChiYXNpY19ibG9jayBjb25kX2JiLA0KPiA+ID4gYmFzaWNfYmxvY2sgbWlkZGxlX2Ji LA0KPiA+ID4gPiAgICBpZiAoZmFsc2VfZWRnZS0+ZGVzdCA9PSBtaWRkbGVfYmIpDQo+ID4gPiA+ ICAgICAgZmFsc2VfZWRnZSA9IEVER0VfU1VDQyAoZmFsc2VfZWRnZS0+ZGVzdCwgMCk7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIC8qIFdoZW4gVEhSRUVXQVlfUCB0aGVuIGUxIHdpbGwgcG9pbnQgdG8g dGhlIGVkZ2Ugb2YgdGhlIGZpbmFsDQo+ID4gPiB0cmFuc2l0aW9uDQo+ID4gPiA+ICsgICAgIGZy b20gbWlkZGxlLWJiIHRvIGVuZC4gICovDQo+ID4gPiA+ICAgIGlmICh0cnVlX2VkZ2UgPT0gZTAp DQo+ID4gPiA+ICAgICAgew0KPiA+ID4gPiAtICAgICAgZ2NjX2Fzc2VydCAoZmFsc2VfZWRnZSA9 PSBlMSk7DQo+ID4gPiA+ICsgICAgICBpZiAodGhyZWV3YXlfcCkNCj4gPiA+ID4gKwlnY2NfYXNz ZXJ0IChmYWxzZV9lZGdlID09IEVER0VfUFJFRCAoZTEtPnNyYywgMCkpOw0KPiA+ID4gPiArICAg ICAgZWxzZQ0KPiA+ID4gPiArCWdjY19hc3NlcnQgKGZhbHNlX2VkZ2UgPT0gZTEpOw0KPiA+ID4g PiAgICAgICAgYXJnX3RydWUgPSBhcmcwOw0KPiA+ID4gPiAgICAgICAgYXJnX2ZhbHNlID0gYXJn MTsNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+IEBAIC0xNzY4LDYgKzE4NDcsMTMzIEBAIG1pbm1h eF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sNCj4gY29uZF9iYiwNCj4gPiA+IGJhc2ljX2Jsb2Nr IG1pZGRsZV9iYiwNCj4gPiA+ID4gICAgICAgIGVsc2UNCj4gPiA+ID4gIAlyZXR1cm4gZmFsc2U7 DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiArICBlbHNlIGlmIChtaWRkbGVfYmIgIT0gYWx0X21p ZGRsZV9iYiAmJiB0aHJlZXdheV9wKQ0KPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gKyAgICAgIC8q IFJlY29nbml6ZSB0aGUgZm9sbG93aW5nIGNhc2U6DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkgaWYg KHNtYWxsZXIgPCBsYXJnZXIpDQo+ID4gPiA+ICsJICAgYSA9IE1JTiAoc21hbGxlciwgYyk7DQo+ ID4gPiA+ICsJIGVsc2UNCj4gPiA+ID4gKwkgICBiID0gTUlOIChsYXJnZXIsIGMpOw0KPiA+ID4g PiArCSB4ID0gUEhJIDxhLCBiPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsJIFRoaXMgaXMgZXF1aXZh bGVudCB0bw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJIGEgPSBNSU4gKHNtYWxsZXIsIGMpOw0KPiA+ ID4gPiArCSB4ID0gTUlOIChsYXJnZXIsIGEpOyAgKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAg ICAgZ2ltcGxlICphc3NpZ24gPSBsYXN0X2FuZF9vbmx5X3N0bXQgKG1pZGRsZV9iYik7DQo+ID4g PiA+ICsgICAgICB0cmVlIGxocywgb3AwLCBvcDEsIGJvdW5kOw0KPiA+ID4gPiArICAgICAgdHJl ZSBhbHRfbGhzLCBhbHRfb3AwLCBhbHRfb3AxOw0KPiA+ID4gPiArICAgICAgYm9vbCBpbnZlcnQg PSBmYWxzZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgaWYgKCFzaW5nbGVfcHJlZF9wICht aWRkbGVfYmIpDQo+ID4gPiA+ICsJICB8fCAhc2luZ2xlX3ByZWRfcCAoYWx0X21pZGRsZV9iYikp DQo+ID4gPiA+ICsJcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICBpZiAo IWFzc2lnbg0KPiA+ID4gPiArCSAgfHwgZ2ltcGxlX2NvZGUgKGFzc2lnbikgIT0gR0lNUExFX0FT U0lHTikNCj4gPiA+ID4gKwlyZXR1cm4gZmFsc2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAg IGxocyA9IGdpbXBsZV9hc3NpZ25fbGhzIChhc3NpZ24pOw0KPiA+ID4gPiArICAgICAgYXNzX2Nv ZGUgPSBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChhc3NpZ24pOw0KPiA+ID4gPiArICAgICAgaWYg KGFzc19jb2RlICE9IE1BWF9FWFBSICYmIGFzc19jb2RlICE9IE1JTl9FWFBSKQ0KPiA+ID4gPiAr CXJldHVybiBmYWxzZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgb3AwID0gZ2ltcGxlX2Fz c2lnbl9yaHMxIChhc3NpZ24pOw0KPiA+ID4gPiArICAgICAgb3AxID0gZ2ltcGxlX2Fzc2lnbl9y aHMyIChhc3NpZ24pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICBhc3NpZ24gPSBsYXN0X2Fu ZF9vbmx5X3N0bXQgKGFsdF9taWRkbGVfYmIpOw0KPiA+ID4gPiArICAgICAgaWYgKCFhc3NpZ24N Cj4gPiA+ID4gKwkgIHx8IGdpbXBsZV9jb2RlIChhc3NpZ24pICE9IEdJTVBMRV9BU1NJR04pDQo+ ID4gPiA+ICsJcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICBhbHRfbGhz ID0gZ2ltcGxlX2Fzc2lnbl9saHMgKGFzc2lnbik7DQo+ID4gPiA+ICsgICAgICBpZiAoYXNzX2Nv ZGUgIT0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoYXNzaWduKSkNCj4gPiA+ID4gKwlyZXR1cm4g ZmFsc2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIGFsdF9vcDAgPSBnaW1wbGVfYXNzaWdu X3JoczEgKGFzc2lnbik7DQo+ID4gPiA+ICsgICAgICBhbHRfb3AxID0gZ2ltcGxlX2Fzc2lnbl9y aHMyIChhc3NpZ24pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICBpZiAoIW9wZXJhbmRfZXF1 YWxfZm9yX3BoaV9hcmdfcCAobGhzLCBhcmdfdHJ1ZSkNCj4gPiA+ID4gKwkgfHwgIW9wZXJhbmRf ZXF1YWxfZm9yX3BoaV9hcmdfcCAoYWx0X2xocywgYXJnX2ZhbHNlKSkNCj4gPiA+ID4gKwlyZXR1 cm4gZmFsc2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIGlmICgob3BlcmFuZF9lcXVhbF9m b3JfcGhpX2FyZ19wIChvcDAsIHNtYWxsZXIpDQo+ID4gPiA+ICsJCXx8IChhbHRfc21hbGxlcg0K PiA+ID4gPiArCQkgICAgJiYgb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChvcDAsIGFsdF9z bWFsbGVyKSkpDQo+ID4gPiA+ICsJICAgICAgICYmIChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJn X3AgKGFsdF9vcDAsIGxhcmdlcikNCj4gPiA+ID4gKwkJICAgfHwgKGFsdF9sYXJnZXINCj4gPiA+ ID4gKwkJICAgICAgICYmIG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgYWx0 X2xhcmdlcikpKSkNCj4gPiA+ID4gKwl7DQo+ID4gPiA+ICsJICAvKiBXZSBnb3QgaGVyZSBpZiB0 aGUgY29uZGl0aW9uIGlzIHRydWUsIGkuZS4sIFNNQUxMRVIgPCBMQVJHRVIuICAqLw0KPiA+ID4g PiArCSAgaWYgKCFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMSwgYWx0X29wMSkpDQo+ ID4gPiA+ICsJICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCSAgaWYgKChh cmcwID0gc3RyaXBfYml0X25vdCAob3AwKSkgIT0gTlVMTA0KPiA+ID4gPiArCSAgICAgICYmIChh cmcxID0gc3RyaXBfYml0X25vdCAoYWx0X29wMCkpICE9IE5VTEwNCj4gPiA+ID4gKwkgICAgICAm JiAoYm91bmQgPSBzdHJpcF9iaXRfbm90IChvcDEpKSAhPSBOVUxMKQ0KPiA+ID4gPiArCSAgICB7 DQo+ID4gPiA+ICsJICAgICAgbWlubWF4ID0gTUFYX0VYUFI7DQo+ID4gPiA+ICsJICAgICAgYXNz X2NvZGUgPSBpbnZlcnRfbWlubWF4X2NvZGUgKGFzc19jb2RlKTsNCj4gPiA+ID4gKwkgICAgICBp bnZlcnQgPSB0cnVlOw0KPiA+ID4gPiArCSAgICB9DQo+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ ICsJICAgIHsNCj4gPiA+ID4gKwkgICAgICBib3VuZCA9IG9wMTsNCj4gPiA+ID4gKwkgICAgICBt aW5tYXggPSBNSU5fRVhQUjsNCj4gPiA+ID4gKwkgICAgICBhcmcwID0gb3AwOw0KPiA+ID4gPiAr CSAgICAgIGFyZzEgPSBhbHRfb3AwOw0KPiA+ID4gPiArCSAgICAgfQ0KPiA+ID4gPiArCX0NCj4g PiA+ID4gKyAgICAgIGVsc2UgaWYgKChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMCwg bGFyZ2VyKQ0KPiA+ID4gPiArCQl8fCAoYWx0X2xhcmdlcg0KPiA+ID4gPiArCQkgICAgJiYgb3Bl cmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChvcDAsIGFsdF9sYXJnZXIpKSkNCj4gPiA+ID4gKwkg ICAgICAgJiYgKG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgc21hbGxlcikN Cj4gPiA+ID4gKwkJICAgfHwgKGFsdF9zbWFsbGVyDQo+ID4gPiA+ICsJCSAgICAgICAmJiBvcGVy YW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9vcDAsDQo+ID4gPiBhbHRfc21hbGxlcikpKSkN Cj4gPiA+ID4gKwl7DQo+ID4gPiA+ICsJICAvKiBXZSBnb3QgaGVyZSBpZiB0aGUgY29uZGl0aW9u IGlzIHRydWUsIGkuZS4sIFNNQUxMRVIgPiBMQVJHRVIuICAqLw0KPiA+ID4gPiArCSAgaWYgKCFv cGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMSwgYWx0X29wMSkpDQo+ID4gPiA+ICsJICAg IHJldHVybiBmYWxzZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCSAgaWYgKChhcmcwID0gc3RyaXBf Yml0X25vdCAob3AwKSkgIT0gTlVMTA0KPiA+ID4gPiArCSAgICAgICYmIChhcmcxID0gc3RyaXBf Yml0X25vdCAoYWx0X29wMCkpICE9IE5VTEwNCj4gPiA+ID4gKwkgICAgICAmJiAoYm91bmQgPSBz dHJpcF9iaXRfbm90IChvcDEpKSAhPSBOVUxMKQ0KPiA+ID4gPiArCSAgICB7DQo+ID4gPiA+ICsJ ICAgICAgbWlubWF4ID0gTUlOX0VYUFI7DQo+ID4gPiA+ICsJICAgICAgYXNzX2NvZGUgPSBpbnZl cnRfbWlubWF4X2NvZGUgKGFzc19jb2RlKTsNCj4gPiA+ID4gKwkgICAgICBpbnZlcnQgPSB0cnVl Ow0KPiA+ID4gPiArCSAgICB9DQo+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ICsJICAgIHsNCj4g PiA+ID4gKwkgICAgICBib3VuZCA9IG9wMTsNCj4gPiA+ID4gKwkgICAgICBtaW5tYXggPSBNQVhf RVhQUjsNCj4gPiA+ID4gKwkgICAgICBhcmcwID0gb3AwOw0KPiA+ID4gPiArCSAgICAgIGFyZzEg PSBhbHRfb3AwOw0KPiA+ID4gPiArCSAgICAgfQ0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKyAgICAg IGVsc2UNCj4gPiA+ID4gKwlyZXR1cm4gZmFsc2U7DQo+ID4gPg0KPiA+ID4gRGlkIHlvdSBjaGVj ayB5b3UgaGF2ZSBjb3ZlcmFnZSBmb3IgYWxsIGNhc2VzIGFib3ZlIGluIHlvdXIgdGVzdGNhc2Vz Pw0KPiA+ID4NCj4gPiA+ID4gKyAgICAgIC8qIFJlc2V0IGFueSByYW5nZSBpbmZvcm1hdGlvbiBm cm9tIHRoZSBiYXNpYyBibG9jay4gICovDQo+ID4gPiA+ICsgICAgICByZXNldF9mbG93X3NlbnNp dGl2ZV9pbmZvX2luX2JiIChjb25kX2JiKTsNCj4gPiA+DQo+ID4gPiBIdWguICBZb3UgbmVlZCB0 byByZXNldCBmbG93LXNlbnNpdGl2ZSBpbmZvIG9mIHRoZSBtaWRkbGUtYmIgc3RtdA0KPiA+ID4g dGhhdCBwcmV2YWlscyBvbmx5Li4uDQo+ID4gPg0KPiA+ID4gPiArICAgICAgLyogRW1pdCB0aGUg c3RhdGVtZW50IHRvIGNvbXB1dGUgbWluL21heC4gICovDQo+ID4gPiA+ICsgICAgICBnaW1wbGVf c2VxIHN0bXRzID0gTlVMTDsNCj4gPiA+ID4gKyAgICAgIHRyZWUgcGhpX3Jlc3VsdCA9IFBISV9S RVNVTFQgKHBoaSk7DQo+ID4gPiA+ICsgICAgICByZXN1bHQgPSBnaW1wbGVfYnVpbGQgKCZzdG10 cywgbWlubWF4LCBUUkVFX1RZUEUNCj4gPiA+ID4gKyAocGhpX3Jlc3VsdCksIGFyZzAsDQo+ID4g PiBib3VuZCk7DQo+ID4gPiA+ICsgICAgICByZXN1bHQgPSBnaW1wbGVfYnVpbGQgKCZzdG10cywg YXNzX2NvZGUsIFRSRUVfVFlQRQ0KPiA+ID4gPiArIChwaGlfcmVzdWx0KSwgcmVzdWx0LCBhcmcx KTsNCj4gPiA+DQo+ID4gPiAuLi4gYnV0IHlvdSBhcmUgcmUtYnVpbGRpbmcgYm90aCBoZXJlLiAg QW5kIGFsc28geW91IGRyb3AgbG9jYXRpb25zLA0KPiA+ID4gdGhlIHByZXNlcnZlZCBtaW4vbWF4 IHNob3VsZCBrZWVwIHRoZSBvbGQsIHRoZSBuZXcgc2hvdWxkIGdldCB0aGUNCj4gPiA+IGxvY2F0 aW9uIG9mIC4uLiBobW0sIHRoZSBjb25kaXRpb24gcG9zc2libHk/DQo+ID4gPg0KPiA+ID4gPiAr ICAgICAgaWYgKGludmVydCkNCj4gPiA+ID4gKwlyZXN1bHQgPSBnaW1wbGVfYnVpbGQgKCZzdG10 cywgQklUX05PVF9FWFBSLCBUUkVFX1RZUEUNCj4gPiA+IChwaGlfcmVzdWx0KSwNCj4gPiA+ID4g K3Jlc3VsdCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIGdzaSA9IGdzaV9sYXN0X2JiIChj b25kX2JiKTsNCj4gPiA+ID4gKyAgICAgIGdzaV9pbnNlcnRfc2VxX2JlZm9yZSAoJmdzaSwgc3Rt dHMsIEdTSV9ORVdfU1RNVCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIHJlcGxhY2VfcGhp X2VkZ2Vfd2l0aF92YXJpYWJsZSAoY29uZF9iYiwgZTEsIHBoaSwgcmVzdWx0LCBmYWxzZSk7DQo+ ID4gPiA+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICAgIGVs c2UNCj4gPiA+ID4gICAgICB7DQo+ID4gPiA+ICAgICAgICAvKiBSZWNvZ25pemUgdGhlIGZvbGxv d2luZyBjYXNlLCBhc3N1bWluZyBkIDw9IHU6DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IFJpY2hhcmQgQmllbmVyIDxy Z3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkg R21iSCwgRnJhbmtlbnN0cmHDn2UgMTQ2LCA5MDQ2MQ0KPiA+ID4gTnVlcm5iZXJnLCBHZXJtYW55 OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwNCj4gPiA+IEJv dWRpZW4gTW9lcm1hbjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+ID4NCj4gDQo+IC0tDQo+ IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gU1VTRSBTb2Z0d2FyZSBTb2x1 dGlvbnMgR2VybWFueSBHbWJILCBGcmFua2Vuc3RyYcOfZSAxNDYsIDkwNDYxDQo+IE51ZXJuYmVy ZywgR2VybWFueTsgR0Y6IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQs DQo+IEJvdWRpZW4gTW9lcm1hbjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo=