From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2076.outbound.protection.outlook.com [40.107.249.76]) by sourceware.org (Postfix) with ESMTPS id 6B58A3858C31 for ; Fri, 10 Feb 2023 10:35:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6B58A3858C31 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=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=F19fb4+jo8pVH19N62TD+nYtH5O/wAVFHcAD+Mc/zws=; b=fAQN54d4G+pUfxxp+jzIgXj8BJ4JPW3i7qVWFRF+biyX+Z1tfDAzSvAJ8n7Vxm9yQLRcNDCnRk0w4AuAJRISnMSGCG4Jb8i/msrAEKTzOj43yDRO4AjFZTy7jxeY/ud7W3Nfuy6PPkAj/LwU3Y5bcgFskHhvjWPOq27Cf3ag9V0= Received: from AS9PR04CA0145.eurprd04.prod.outlook.com (2603:10a6:20b:48a::15) by GV2PR08MB8124.eurprd08.prod.outlook.com (2603:10a6:150:74::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Fri, 10 Feb 2023 10:35:20 +0000 Received: from AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:48a:cafe::72) by AS9PR04CA0145.outlook.office365.com (2603:10a6:20b:48a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.20 via Frontend Transport; Fri, 10 Feb 2023 10:35:20 +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 AM7EUR03FT065.mail.protection.outlook.com (100.127.140.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19 via Frontend Transport; Fri, 10 Feb 2023 10:35:17 +0000 Received: ("Tessian outbound 8038f0863a52:v132"); Fri, 10 Feb 2023 10:35:17 +0000 X-CR-MTA-TID: 64aa7808 Received: from d97a0291540b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9B44F74A-7928-4779-9979-3CFE3E3B497B.1; Fri, 10 Feb 2023 10:35:07 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d97a0291540b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 10 Feb 2023 10:35:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hlTxhMV6VGwJrFnljWXsgduTLXEBBcwkjw7TQ2AIT9UbhjS27VCDWsVXNqVDPTDsBlmJcOL7HFpi3tfWsJ4OEar2VD9VOaCCUloNAqukcLdMBbqq/RG/YybCNexBGQqG2f1bYy0I8ZRA+DSW8jUGijaMM/CBpv7NvN610enOmh7bwbL33mCsjl9lq4AFhcnJmUOEUO+DC3nfHqkwTmV4JwccDhnSzaqKJv1xYwaTrNg3GHC2l1qtRxIfxMG4kiY/ICxxVfWyRLdrB9Rp4Lkd63BzvmxmycoVdv1YVciC3NuX2wAw424Qn1unYWoFVij3OFN+FssDahTQh0uC21wjBg== 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=F19fb4+jo8pVH19N62TD+nYtH5O/wAVFHcAD+Mc/zws=; b=Gi52Kzpm9KKWPjVPh7ZGOfwt129gDwBr2vK2hNiTRLJujCIa9lc63qP5lsYiEDFGMWNiAvbUEz+xA4vwhCHRYE99e6E4l78qhcam+CdxoraEQ+JxOkgKujUba6apezfSlw4kLwHRQBUtmcFKAWQ0/mVPzZl0uD9RaF6VO2wOVmeJ0SlzWk6AVI8ahKh82qHLAx4hKGrR9qJOaHKTeBme686qxEH0GGtFqoA8Yz9EiEW7InMH+XsG+DCDZQaxldOC6Z37J3Y8L7g1Dc711xraNJFQRPMeZ9d1JU/7MznlemGtDhYzExXuVltwRNZQRwQuBe2n7tHs1cIvI+uyfvNnVw== 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=F19fb4+jo8pVH19N62TD+nYtH5O/wAVFHcAD+Mc/zws=; b=fAQN54d4G+pUfxxp+jzIgXj8BJ4JPW3i7qVWFRF+biyX+Z1tfDAzSvAJ8n7Vxm9yQLRcNDCnRk0w4AuAJRISnMSGCG4Jb8i/msrAEKTzOj43yDRO4AjFZTy7jxeY/ud7W3Nfuy6PPkAj/LwU3Y5bcgFskHhvjWPOq27Cf3ag9V0= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PAVPR08MB8894.eurprd08.prod.outlook.com (2603:10a6:102:329::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Fri, 10 Feb 2023 10:35:00 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936%6]) with mapi id 15.20.6086.021; Fri, 10 Feb 2023 10:34:59 +0000 From: Tamar Christina To: Tamar Christina , "gcc-patches@gcc.gnu.org" CC: nd , "rguenther@suse.de" , "jlaw@ventanamicro.com" Subject: RE: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Topic: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Index: AQHZPKpK/SYCPI4EDky3xQ0ADEnbFq7H/U9w Date: Fri, 10 Feb 2023 10:34:59 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 609FC6EA5B57B041B00CAB7214585489.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_|PAVPR08MB8894:EE_|AM7EUR03FT065:EE_|GV2PR08MB8124:EE_ X-MS-Office365-Filtering-Correlation-Id: 264aa59d-8b63-47c6-7a62-08db0b5281eb 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: 835fJLD1935TEoAunIRnugV62hrmhp1xpRkXNC244A4g2Bg57VrJ7hu0x4caoMAywuvyab3vkw5drC6wWlJz1dnAfrXYe0CyXic0nFffaw9zs0KUBPpRJzEBWureOY2MPP7SyKla4Nvf3cxfOAjOzimmSSU/HhFz5fsOxxxAu1+vCzwvChTqaz+H7A+F64kVSdtIrV2JWmgnNKv0TKs+223XmGiKcWTSpYVS5bYfubq9Ey/DeQEER8YNZed5/oQYx7SQcw3w1OoS5oIxr1E3vErnQFBLOTpbq4GEDUy3E/jbCGzp/T80NURjv2ewQDLzgZOCMeU3z+9DAt1UedibqaMPfvxWR5Q7qktE0QPRSuHamiyU886kgfrSVfnR18uzNoMIY3SW7W7Mi3FH+ajfGnWSn/WzAC9i9qMMZbEGziPcw4NYBlQtJs1q7gn1K4tNQrZtSFsznQnmDyltxLf31co+Ns9zGjD08aIX9EW+2UqRkE1+u+j5I8agBQyNcEQtxtDlGfppIMEeujs8uVZQI0y1yDDh51cHDC9Pj8rqk0IvY6Xy4DSVTk+UAv8SvpOrD3qqVCYCKIYYrbn9Us4YNi0coEhuvrERjwp0UnB2lme3G2UmF7H3SUz8UQc7aU1OZid7IOGmSsxJYBEfPFuOwg7N2Y9NDznZSTV3uzqdX6swGWc/Td7mFbgCJkGFKjrvaBvJ0WPmZ81GenKEkSAx3LuBj4NOb/u0mpmu+DwMV0HC0ydTpHUR8HO0MGgsWBfZitHjrQ/cUccW3I8WCDAozw== 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:(13230025)(4636009)(136003)(346002)(376002)(396003)(39860400002)(366004)(451199018)(52536014)(53546011)(6506007)(9686003)(110136005)(316002)(186003)(26005)(478600001)(8936002)(38070700005)(71200400001)(2906002)(33656002)(55016003)(54906003)(83380400001)(5660300002)(7696005)(30864003)(4743002)(64756008)(66446008)(66556008)(66476007)(76116006)(66946007)(84970400001)(4326008)(86362001)(8676002)(38100700002)(41300700001)(122000001)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8894 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: AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f961c2d7-3c18-4168-7075-08db0b5275a8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PMyJ3anhvnimA3S1VUwLwVdKGOM2jQaYEGmL0GMW+t1jqOXBnI/uzgcfvydNqPwruz7whu38ZlAz+7KacNVtwjK2GqRIYY6BWrHFANzy+Ae7IBzMnOVNehbQ9mieDLA/vJSrJSja5pNxMK6NhxNczazpgDFA9T8ZSHhpoeV1nN7Vkx6OeWYHSfr90DJ5dMP32TRtOHVhFrDM/JhhE5xCSUHM8AIpXQZ68/q7sIljMt4YDM7KA4ssxo1zz6KEtPLcCuN4tdPdRcLtHAkUUkPYR93Co46Y+rKqZ1mX0SHW1KD5LBxHN5Ykbx3aSTIHDpIzOFEhrX2TpilKedi4u6lU01wdU8I6bK0zbzUmUB8aISP5NB8vA2SblPsr9FsJgCObyUqIuPvTvQRgrLYJ8iFHLobGsF3+gPGugQpPRuo+HX20mDax4CAbSsdXZuVRYXpN7wCbJTwSHYphuOYdzv8Z7/4RfiUE/+govFddS+rwalgb7kM6nth70RyIR6jTPZGufw5xMQoplHzPLmNsmONI8s5UnH0jbu+gD3tjIunSULK/j3ard6rEY3ySHFrJyIARZBgjn5pXbzVW+VsASa846LG1I2R4ktw5SZVqf9sFRZd7nAlCyvtUUAG8rcgNbhLao2Wws1IVmvuRSTbLjt+yet9e53aKZd/jUzO4wdM7l6VRqOTMuf3vsrac1yg4mUUcKl/GBrTuKCYogW3ebql2RP1FgwW1ULqNRffd45Goww6d0Mwdc9xv5Yi3lSn6M6VHptmnWnpb21n2AEkrauNniw== 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:(13230025)(4636009)(39860400002)(136003)(346002)(376002)(396003)(451199018)(40470700004)(46966006)(36840700001)(30864003)(84970400001)(2906002)(52536014)(186003)(40460700003)(86362001)(47076005)(8936002)(81166007)(336012)(5660300002)(26005)(55016003)(4743002)(7696005)(6506007)(53546011)(478600001)(82310400005)(107886003)(33656002)(83380400001)(9686003)(316002)(4326008)(8676002)(70586007)(82740400003)(40480700001)(41300700001)(54906003)(36860700001)(356005)(70206006)(110136005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 10:35:17.4225 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 264aa59d-8b63-47c6-7a62-08db0b5281eb 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: AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8124 X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,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: T29wcywgcmVhbGl6ZXMgSSBmb3Jnb3QgdG8gZmlsbCBpbiB0aGUgdGVzdCByZXN1bHRzLCB0aGVy ZSB3ZXJlIG5vIGlzc3VlcyDwn5iKDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogR2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzLQ0KPiBib3VuY2VzK3RhbWFyLmNocmlzdGlu YT1hcm0uY29tQGdjYy5nbnUub3JnPiBPbiBCZWhhbGYgT2YgVGFtYXINCj4gQ2hyaXN0aW5hIHZp YSBHY2MtcGF0Y2hlcw0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgOSwgMjAyMyA1OjE3IFBN DQo+IFRvOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZw0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBy Z3VlbnRoZXJAc3VzZS5kZTsgamxhd0B2ZW50YW5hbWljcm8uY29tDQo+IFN1YmplY3Q6IFtQQVRD SCAxLzJdbWlkZGxlLWVuZDogRml4IHdyb25nIG92ZXJtYXRjaGluZyBvZiBkaXYtYml0bWFzayBi eQ0KPiB1c2luZyBuZXcgb3B0YWJzIFtQUjEwODU4M10NCj4gDQo+IEhpIEFsbCwNCj4gDQo+IEFz IGRpc2N1c3NlZCBpbiB0aGUgdGlja2V0LCB0aGlzIHJlcGxhY2VzIHRoZSBhcHByb2FjaCBmb3Ig b3B0aW1pemluZyB0aGUgZGl2IGJ5DQo+IGJpdG1hc2sgb3BlcmF0aW9uIGZyb20gYSBob29rIGlu dG8gb3B0YWJzIGltcGxlbWVudGVkIHRocm91Z2gNCj4gYWRkX2hpZ2hwYXJ0Lg0KPiANCj4gSW4g b3JkZXIgdG8gYmUgYWJsZSB0byB1c2UgdGhpcyB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhl IGN1cnJlbnQNCj4gcHJlY2lzaW9uIGhhcyBlbm91Z2ggYml0cyB0byBkbyB0aGUgb3BlcmF0aW9u IHdpdGhvdXQgYW55IG9mIHRoZSBhZGRpdGlvbnMNCj4gb3ZlcmZsb3dpbmcuDQo+IA0KPiBXZSB1 c2UgcmFuZ2UgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgYW5kIG9ubHkgZG8gdGhlIG9w ZXJhdGlvbiBpZg0KPiB3ZSdyZSBzdXJlIGFtIG92ZXJmbG93IHdvbid0IG9jY3VyLg0KPiANCj4g Qm9vdHN0cmFwcGVkIFJlZ3Rlc3RlZCBvbiBhYXJjaDY0LW5vbmUtbGludXgtZ251IGFuZCA8b24t Z29pbmc+IGlzc3Vlcy4NCj4gDQo+IE9rIGZvciBtYXN0ZXI/DQo+IA0KPiBUaGFua3MsDQo+IFRh bWFyDQo+IA0KPiBnY2MvQ2hhbmdlTG9nOg0KPiANCj4gCVBSIHRhcmdldC8xMDg1ODMNCj4gCSog ZG9jL3RtLnRleGkgKFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NPTlNUKToN Cj4gUmVtb3ZlLg0KPiAJKiBkb2MvdG0udGV4aS5pbjogTGlrZXdpc2UuDQo+IAkqIGV4cGxvdy5j YyAocm91bmRfcHVzaCwgYWxpZ25fZHluYW1pY19hZGRyZXNzKTogUmV2ZXJ0IHByZXZpb3VzDQo+ IHBhdGNoLg0KPiAJKiBleHBtZWQuY2MgKGV4cGFuZF9kaXZtb2QpOiBMaWtld2lzZS4NCj4gCSog ZXhwbWVkLmggKGV4cGFuZF9kaXZtb2QpOiBMaWtld2lzZS4NCj4gCSogZXhwci5jYyAoZm9yY2Vf b3BlcmFuZCwgZXhwYW5kX2V4cHJfZGl2bW9kKTogTGlrZXdpc2UuDQo+IAkqIG9wdGFicy5jYyAo ZXhwYW5kX2RvdWJsZXdvcmRfbW9kLA0KPiBleHBhbmRfZG91Ymxld29yZF9kaXZtb2QpOiBMaWtl d2lzZS4NCj4gCSogaW50ZXJuYWwtZm4uZGVmIChBRERIKTogTmV3Lg0KPiAJKiBvcHRhYnMuZGVm IChzYWRkX2hpZ2hwYXJ0X29wdGFiLCB1YWRkX2hpZ2hwYXJ0X29wdGFiKTogTmV3Lg0KPiAJKiBk b2MvbWQudGV4aTogRG9jdW1lbnQgdGhlbS4NCj4gCSogZG9jL3J0bC50ZXhpOiBMaWtld2lzZS4N Cj4gCSogdGFyZ2V0LmRlZiAoY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0KTogUmVtb3ZlLg0KPiAJ KiB0YXJnZXQuaDogUmVtb3ZlIHRyZWUtY29yZS5oIGluY2x1ZGUNCj4gCSogdGFyZ2hvb2tzLmNj IChkZWZhdWx0X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCk6IFJlbW92ZS4NCj4gCSogdGFyZ2hv b2tzLmggKGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0KTogUmVtb3ZlLg0KPiAJKiB0 cmVlLXZlY3QtZ2VuZXJpYy5jYyAoZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb24pOiBSZW1vdmUgaG9v ay4NCj4gCSogdHJlZS12ZWN0LXBhdHRlcm5zLmNjICh2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJu KTogUmVtb3ZlIGhvb2sNCj4gYW5kDQo+IAlpbXBsZW1lbnQgbmV3IG9idGFiIHJlY29nbml0aW9u IGJhc2VkIG9uIHJhbmdlLg0KPiAJKiB0cmVlLXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9v cGVyYXRpb24pOiBSZW1vdmUgaG9vay4NCj4gDQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0K PiANCj4gCVBSIHRhcmdldC8xMDg1ODMNCj4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFz ay00LmM6IE5ldyB0ZXN0Lg0KPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTUuYzog TmV3IHRlc3QuDQo+IA0KPiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0Y2ggLS0NCj4gZGlmZiAtLWdp dCBhL2djYy9kb2MvbWQudGV4aSBiL2djYy9kb2MvbWQudGV4aSBpbmRleA0KPiA3MjM1ZDM0YzRi MzA5NDlmZWJmYTEwZDVhNjI2YWM5MzU4MjgxY2ZhLi4wMjAwNGM0YjBmNGQ4OGRmZmU5ODBmNzQw ODANCj4gMzg1OTVlMjFhZjM1ZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL2RvYy9tZC50ZXhpDQo+ICsr KyBiL2djYy9kb2MvbWQudGV4aQ0KPiBAQCAtNTY2OCw2ICs1NjY4LDE4IEBAIHJlcHJlc2VudGVk IGluIFJUTCB1c2luZyBhIEBjb2Rle3NtdWxfaGlnaHBhcnR9DQo+IFJUWCBleHByZXNzaW9uLg0K PiAgU2ltaWxhciwgYnV0IHRoZSBtdWx0aXBsaWNhdGlvbiBpcyB1bnNpZ25lZC4gIFRoaXMgbWF5 IGJlIHJlcHJlc2VudGVkICBpbiBSVEwNCj4gdXNpbmcgYW4gQGNvZGV7dW11bF9oaWdocGFydH0g UlRYIGV4cHJlc3Npb24uDQo+IA0KPiArQGNpbmRleCBAY29kZXtzYWRkQHZhcnttfTNfaGlnaHBh cnR9IGluc3RydWN0aW9uIHBhdHRlcm4gQGl0ZW0NCj4gK0BzYW1we3NtdWxAdmFye219M19oaWdo cGFydH0gUGVyZm9ybSBhIHNpZ25lZCBhZGRpdGlvbiBvZiBvcGVyYW5kcyAxDQo+ICthbmQgMiwg d2hpY2ggaGF2ZSBtb2RlIEB2YXJ7bX0sIGFuZCBzdG9yZSB0aGUgbW9zdCBzaWduaWZpY2FudCBo YWxmIG9mDQo+ICt0aGUgcHJvZHVjdCBpbiBvcGVyYW5kIDAuDQo+ICtUaGUgbGVhc3Qgc2lnbmlm aWNhbnQgaGFsZiBvZiB0aGUgcHJvZHVjdCBpcyBkaXNjYXJkZWQuICBUaGlzIG1heSBiZQ0KPiAr cmVwcmVzZW50ZWQgaW4gUlRMIHVzaW5nIGEgQGNvZGV7c2FkZF9oaWdocGFydH0gUlRYIGV4cHJl c3Npb24uDQo+ICsNCj4gK0BjaW5kZXggQGNvZGV7dWFkZEB2YXJ7bX0zX2hpZ2hwYXJ0fSBpbnN0 cnVjdGlvbiBwYXR0ZXJuIEBpdGVtDQo+ICtAc2FtcHt1YWRkQHZhcnttfTNfaGlnaHBhcnR9IFNp bWlsYXIsIGJ1dCB0aGUgYWRkaXRpb24gaXMgdW5zaWduZWQuDQo+ICtUaGlzIG1heSBiZSByZXBy ZXNlbnRlZCBpbiBSVEwgdXNpbmcgYW4gQGNvZGV7dWFkZF9oaWdocGFydH0gUlRYDQo+ICtleHBy ZXNzaW9uLg0KPiArDQo+ICBAY2luZGV4IEBjb2Rle21hZGRAdmFye219QHZhcntufTR9IGluc3Ry dWN0aW9uIHBhdHRlcm4gIEBpdGVtDQo+IEBzYW1we21hZGRAdmFye219QHZhcntufTR9ICBNdWx0 aXBseSBvcGVyYW5kcyAxIGFuZCAyLCBzaWduLWV4dGVuZA0KPiB0aGVtIHRvIG1vZGUgQHZhcntu fSwgYWRkIGRpZmYgLS1naXQgYS9nY2MvZG9jL3J0bC50ZXhpIGIvZ2NjL2RvYy9ydGwudGV4aQ0K PiBpbmRleA0KPiBkMTM4MGUxZWIzYmE2YjI4NTM2ODZmNDFmMmJmOTM3YmZjYmVkMWZlLi42M2E3 ZWY2ZTU2NmVlZWE0ZjE0YzAwMzQzDQo+IGQxNzE5NDBlYzQyMjJmMyAxMDA2NDQNCj4gLS0tIGEv Z2NjL2RvYy9ydGwudGV4aQ0KPiArKysgYi9nY2MvZG9jL3J0bC50ZXhpDQo+IEBAIC0yNTM1LDYg KzI1MzUsMTcgQEAgb3V0IGluIG1hY2hpbmUgbW9kZSBAdmFye219Lg0KPiBAY29kZXtzbXVsX2hp Z2hwYXJ0fSByZXR1cm5zIHRoZSBoaWdoIHBhcnQgIG9mIGEgc2lnbmVkIG11bHRpcGxpY2F0aW9u LA0KPiBAY29kZXt1bXVsX2hpZ2hwYXJ0fSByZXR1cm5zIHRoZSBoaWdoIHBhcnQgIG9mIGFuIHVu c2lnbmVkIG11bHRpcGxpY2F0aW9uLg0KPiANCj4gK0BmaW5kZXggc2FkZF9oaWdocGFydA0KPiAr QGZpbmRleCB1YWRkX2hpZ2hwYXJ0DQo+ICtAY2luZGV4IGhpZ2gtcGFydCBhZGRpdGlvbg0KPiAr QGNpbmRleCBhZGRpdGlvbiBoaWdoIHBhcnQNCj4gK0BpdGVtIChzYWRkX2hpZ2hwYXJ0OkB2YXJ7 bX0gQHZhcnt4fSBAdmFye3l9KSBAaXRlbXgNCj4gKyh1YWRkX2hpZ2hwYXJ0OkB2YXJ7bX0gQHZh cnt4fSBAdmFye3l9KSBSZXByZXNlbnRzIHRoZSBoaWdoLXBhcnQNCj4gK2FkZGl0aW9uIG9mIEB2 YXJ7eH0gYW5kIEB2YXJ7eX0gY2FycmllZCBvdXQgaW4gbWFjaGluZSBtb2RlIEB2YXJ7bX0uDQo+ ICtAY29kZXtzYWRkX2hpZ2hwYXJ0fSByZXR1cm5zIHRoZSBoaWdoIHBhcnQgb2YgYSBzaWduZWQg YWRkaXRpb24sDQo+ICtAY29kZXt1YWRkX2hpZ2hwYXJ0fSByZXR1cm5zIHRoZSBoaWdoIHBhcnQg b2YgYW4gdW5zaWduZWQgYWRkaXRpb24uDQo+ICsNCj4gIEBmaW5kZXggZm1hDQo+ICBAY2luZGV4 IGZ1c2VkIG11bHRpcGx5LWFkZA0KPiAgQGl0ZW0gKGZtYTpAdmFye219IEB2YXJ7eH0gQHZhcnt5 fSBAdmFye3p9KSBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpDQo+IGIvZ2NjL2RvYy90bS50 ZXhpIGluZGV4DQo+IGM2Yzg5MTk3MmQxZTU4Y2QxNjNiMjU5YmE5NmE1OTlkNjIzMjY4NjUuLjNh YjIwMzFhMzM2Yjg3NThkNTc5MTQ4NDANCj4gMTdlNmIwZDYyYWIwNzdlIDEwMDY0NA0KPiAtLS0g YS9nY2MvZG9jL3RtLnRleGkNCj4gKysrIGIvZ2NjL2RvYy90bS50ZXhpDQo+IEBAIC02MTM3LDIy ICs2MTM3LDYgQEAgaW5zdHJ1Y3Rpb24gcGF0dGVybi4gIFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRo ZSBob29rDQo+IHRvIGhhbmRsZSB0aGVzZSB0d28gIGltcGxlbWVudGF0aW9uIGFwcHJvYWNoZXMg aXRzZWxmLg0KPiAgQGVuZCBkZWZ0eXBlZm4NCj4gDQo+IC1AZGVmdHlwZWZuIHtUYXJnZXQgSG9v a30gYm9vbA0KPiBUQVJHRVRfVkVDVE9SSVpFX0NBTl9TUEVDSUFMX0RJVl9CWV9DT05TVCAoZW51 bQ0KPiBAdmFye3RyZWVfY29kZX0sIHRyZWUgQHZhcnt2ZWN0eXBlfSwgd2lkZV9pbnQgQHZhcntj b25zdGFudH0sIHJ0eA0KPiAqQHZhcntvdXRwdXR9LCBydHggQHZhcntpbjB9LCBydHggQHZhcntp bjF9KSAtVGhpcyBob29rIGlzIHVzZWQgdG8gdGVzdA0KPiB3aGV0aGVyIHRoZSB0YXJnZXQgaGFz IGEgc3BlY2lhbCBtZXRob2Qgb2YgLWRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZQ0KPiBAdmFy e3ZlY3R5cGV9IHVzaW5nIHRoZSB2YWx1ZSBAdmFye2NvbnN0YW50fSwgLWFuZCBwcm9kdWNpbmcg YSB2ZWN0b3Igb2YNCj4gdHlwZSBAdmFye3ZlY3R5cGV9LiAgVGhlIGRpdmlzaW9uIC13aWxsIHRo ZW4gbm90IGJlIGRlY29tcG9zZWQgYnkgdGhlDQo+IHZlY3Rvcml6ZXIgYW5kIGtlcHQgYXMgYSBk aXYuDQo+IC0NCj4gLVdoZW4gdGhlIGhvb2sgaXMgYmVpbmcgdXNlZCB0byB0ZXN0IHdoZXRoZXIg dGhlIHRhcmdldCBzdXBwb3J0cyBhIHNwZWNpYWwgLQ0KPiBkaXZpZGUsIEB2YXJ7aW4wfSwgQHZh cntpbjF9LCBhbmQgQHZhcntvdXRwdXR9IGFyZSBhbGwgbnVsbC4gIFdoZW4gdGhlIGhvb2sgLQ0K PiBpcyBiZWluZyB1c2VkIHRvIGVtaXQgYSBkaXZpc2lvbiwgQHZhcntpbjB9IGFuZCBAdmFye2lu MX0gYXJlIHRoZSBzb3VyY2UgLQ0KPiB2ZWN0b3JzIG9mIHR5cGUgQHZhcnt2ZWN0dHlwZX0gYW5k IEB2YXJ7b3V0cHV0fSBpcyB0aGUgZGVzdGluYXRpb24gdmVjdG9yIG9mDQo+IC10eXBlIEB2YXJ7 dmVjdHlwZX0uDQo+IC0NCj4gLVJldHVybiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gaXMgcG9zc2li bGUsIGVtaXR0aW5nIGluc3RydWN0aW9ucyBmb3IgaXQgLWlmIHJ0eGVzDQo+IGFyZSBwcm92aWRl ZCBhbmQgdXBkYXRpbmcgQHZhcntvdXRwdXR9Lg0KPiAtQGVuZCBkZWZ0eXBlZm4NCj4gLQ0KPiAg QGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IHRyZWUNCj4gVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElO X1ZFQ1RPUklaRURfRlVOQ1RJT04gKHVuc2lnbmVkDQo+IEB2YXJ7Y29kZX0sIHRyZWUgQHZhcnt2 ZWNfdHlwZV9vdXR9LCB0cmVlIEB2YXJ7dmVjX3R5cGVfaW59KSAgVGhpcyBob29rDQo+IHNob3Vs ZCByZXR1cm4gdGhlIGRlY2wgb2YgYSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlICB2ZWN0 b3JpemVkIHZhcmlhbnQNCj4gb2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIEBjb2Rle2NvbWJpbmVk X2ZufSBjb2RlIGRpZmYgLS1naXQNCj4gYS9nY2MvZG9jL3RtLnRleGkuaW4gYi9nY2MvZG9jL3Rt LnRleGkuaW4gaW5kZXgNCj4gNjEzYjI1MzQxNDk0MTVmNDQyMTYzZDU5OTUwM2VmYWY0MjNiNjcz Yi4uODc5MGY0ZTQ0Yjk4YjUxYWQ1ZDFlZmVjMA0KPiBhM2FiY2NkMWMyOTNjN2IgMTAwNjQ0DQo+ IC0tLSBhL2djYy9kb2MvdG0udGV4aS5pbg0KPiArKysgYi9nY2MvZG9jL3RtLnRleGkuaW4NCj4g QEAgLTQxNzMsOCArNDE3Myw2IEBAIGFkZHJlc3M7ICBidXQgb2Z0ZW4gYSBtYWNoaW5lLWRlcGVu ZGVudCBzdHJhdGVneQ0KPiBjYW4gZ2VuZXJhdGUgYmV0dGVyIGNvZGUuDQo+IA0KPiAgQGhvb2sg VEFSR0VUX1ZFQ1RPUklaRV9WRUNfUEVSTV9DT05TVA0KPiANCj4gLUBob29rIFRBUkdFVF9WRUNU T1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NPTlNUDQo+IC0NCj4gIEBob29rIFRBUkdFVF9WRUNU T1JJWkVfQlVJTFRJTl9WRUNUT1JJWkVEX0ZVTkNUSU9ODQo+IA0KPiAgQGhvb2sgVEFSR0VUX1ZF Q1RPUklaRV9CVUlMVElOX01EX1ZFQ1RPUklaRURfRlVOQ1RJT04NCj4gZGlmZiAtLWdpdCBhL2dj Yy9leHBsb3cuY2MgYi9nY2MvZXhwbG93LmNjIGluZGV4DQo+IDgzNDM5YjMyYWJlMWI5YWE0Yjc5 ODNlYjYyOTgwNGY5NzQ4NmFjYmQuLmJlOTE5NWIzMzMyM2VlNTU5N2ZjMjEyZjANCj4gYmVmYTAx NmVlYTQ1NzNjIDEwMDY0NA0KPiAtLS0gYS9nY2MvZXhwbG93LmNjDQo+ICsrKyBiL2djYy9leHBs b3cuY2MNCj4gQEAgLTEwMzcsNyArMTAzNyw3IEBAIHJvdW5kX3B1c2ggKHJ0eCBzaXplKQ0KPiAg ICAgICBUUlVOQ19ESVZfRVhQUi4gICovDQo+ICAgIHNpemUgPSBleHBhbmRfYmlub3AgKFBtb2Rl LCBhZGRfb3B0YWIsIHNpemUsIGFsaWdubTFfcnR4LA0KPiAgCQkgICAgICAgTlVMTF9SVFgsIDEs IE9QVEFCX0xJQl9XSURFTik7DQo+IC0gIHNpemUgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19E SVZfRVhQUiwgUG1vZGUsIE5VTEwsIE5VTEwsIHNpemUsDQo+IGFsaWduX3J0eCwNCj4gKyAgc2l6 ZSA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwgc2l6ZSwgYWxpZ25f cnR4LA0KPiAgCQkJTlVMTF9SVFgsIDEpOw0KPiAgICBzaXplID0gZXhwYW5kX211bHQgKFBtb2Rl LCBzaXplLCBhbGlnbl9ydHgsIE5VTExfUlRYLCAxKTsNCj4gDQo+IEBAIC0xMjAzLDcgKzEyMDMs NyBAQCBhbGlnbl9keW5hbWljX2FkZHJlc3MgKHJ0eCB0YXJnZXQsIHVuc2lnbmVkDQo+IHJlcXVp cmVkX2FsaWduKQ0KPiAgCQkJIGdlbl9pbnRfbW9kZSAocmVxdWlyZWRfYWxpZ24gLyBCSVRTX1BF Ul9VTklUIC0gMSwNCj4gIAkJCQkgICAgICAgUG1vZGUpLA0KPiAgCQkJIE5VTExfUlRYLCAxLCBP UFRBQl9MSUJfV0lERU4pOw0KPiAtICB0YXJnZXQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19E SVZfRVhQUiwgUG1vZGUsIE5VTEwsIE5VTEwsDQo+IHRhcmdldCwNCj4gKyAgdGFyZ2V0ID0gZXhw YW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIFBtb2RlLCB0YXJnZXQsDQo+ICAJCQkgIGdl bl9pbnRfbW9kZSAocmVxdWlyZWRfYWxpZ24gLyBCSVRTX1BFUl9VTklULA0KPiAgCQkJCQlQbW9k ZSksDQo+ICAJCQkgIE5VTExfUlRYLCAxKTsNCj4gZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuaCBi L2djYy9leHBtZWQuaCBpbmRleA0KPiAwNDE5ZTJkYWM4NTg1MDg4OWNlMGJlZTU5NTE1ZTMxYTgw YzU4MmRlLi40ZGZlNjM1YzIyZWU0OWYyZGJhNGM1MzY0DQo+IDA5NDE2MjgwNjhmMzkwMSAxMDA2 NDQNCj4gLS0tIGEvZ2NjL2V4cG1lZC5oDQo+ICsrKyBiL2djYy9leHBtZWQuaA0KPiBAQCAtNzEw LDkgKzcxMCw4IEBAIGV4dGVybiBydHggZXhwYW5kX3NoaWZ0IChlbnVtIHRyZWVfY29kZSwNCj4g bWFjaGluZV9tb2RlLCBydHgsIHBvbHlfaW50NjQsIHJ0eCwgIGV4dGVybiBydHggbWF5YmVfZXhw YW5kX3NoaWZ0IChlbnVtDQo+IHRyZWVfY29kZSwgbWFjaGluZV9tb2RlLCBydHgsIGludCwgcnR4 LA0KPiAgCQkJICAgICAgIGludCk7DQo+ICAjaWZkZWYgR0NDX09QVEFCU19IDQo+IC1leHRlcm4g cnR4IGV4cGFuZF9kaXZtb2QgKGludCwgZW51bSB0cmVlX2NvZGUsIG1hY2hpbmVfbW9kZSwgdHJl ZSwNCj4gdHJlZSwNCj4gLQkJCSAgcnR4LCBydHgsIHJ0eCwgaW50LA0KPiAtCQkJICBlbnVtIG9w dGFiX21ldGhvZHMgPSBPUFRBQl9MSUJfV0lERU4pOw0KPiArZXh0ZXJuIHJ0eCBleHBhbmRfZGl2 bW9kIChpbnQsIGVudW0gdHJlZV9jb2RlLCBtYWNoaW5lX21vZGUsIHJ0eCwgcnR4LA0KPiArCQkJ ICBydHgsIGludCwgZW51bSBvcHRhYl9tZXRob2RzID0NCj4gT1BUQUJfTElCX1dJREVOKTsNCj4g ICNlbmRpZg0KPiAgI2VuZGlmDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2V4cG1lZC5jYyBiL2dj Yy9leHBtZWQuY2MgaW5kZXgNCj4gOTE3MzYwMTk5Y2E1NjE1N2NmM2MzNjkzYjY1ZTkzY2Q5ZDhl ZDI0NC4uMTU1M2VhOGUzMWViNjQzMzAyNWFiMThhMw0KPiBhNTljMTY5ZDNiNzY5MmYgMTAwNjQ0 DQo+IC0tLSBhL2djYy9leHBtZWQuY2MNCj4gKysrIGIvZ2NjL2V4cG1lZC5jYw0KPiBAQCAtNDIy Miw4ICs0MjIyLDggQEAgZXhwYW5kX3NkaXZfcG93MiAoc2NhbGFyX2ludF9tb2RlIG1vZGUsIHJ0 eA0KPiBvcDAsIEhPU1RfV0lERV9JTlQgZCkNCj4gDQo+ICBydHgNCj4gIGV4cGFuZF9kaXZtb2Qg KGludCByZW1fZmxhZywgZW51bSB0cmVlX2NvZGUgY29kZSwgbWFjaGluZV9tb2RlDQo+IG1vZGUs DQo+IC0JICAgICAgIHRyZWUgdHJlZW9wMCwgdHJlZSB0cmVlb3AxLCBydHggb3AwLCBydHggb3Ax LCBydHggdGFyZ2V0LA0KPiAtCSAgICAgICBpbnQgdW5zaWduZWRwLCBlbnVtIG9wdGFiX21ldGhv ZHMgbWV0aG9kcykNCj4gKwkgICAgICAgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHRhcmdldCwgaW50 IHVuc2lnbmVkcCwNCj4gKwkgICAgICAgZW51bSBvcHRhYl9tZXRob2RzIG1ldGhvZHMpDQo+ICB7 DQo+ICAgIG1hY2hpbmVfbW9kZSBjb21wdXRlX21vZGU7DQo+ICAgIHJ0eCB0cXVvdGllbnQ7DQo+ IEBAIC00Mzc1LDE3ICs0Mzc1LDYgQEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBlbnVt IHRyZWVfY29kZQ0KPiBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwNCj4gDQo+ICAgIGxhc3RfZGl2 X2NvbnN0ID0gISByZW1fZmxhZyAmJiBvcDFfaXNfY29uc3RhbnQgPyBJTlRWQUwgKG9wMSkgOiAw Ow0KPiANCj4gLSAgLyogQ2hlY2sgaWYgdGhlIHRhcmdldCBoYXMgc3BlY2lmaWMgZXhwYW5zaW9u cyBmb3IgdGhlIGRpdmlzaW9uLiAgKi8NCj4gLSAgdHJlZSBjc3Q7DQo+IC0gIGlmICh0cmVlb3Aw DQo+IC0gICAgICAmJiB0cmVlb3AxDQo+IC0gICAgICAmJiAoY3N0ID0gdW5pZm9ybV9pbnRlZ2Vy X2NzdF9wICh0cmVlb3AxKSkNCj4gLSAgICAgICYmIHRhcmdldG0udmVjdG9yaXplLmNhbl9zcGVj aWFsX2Rpdl9ieV9jb25zdCAoY29kZSwgVFJFRV9UWVBFDQo+ICh0cmVlb3AwKSwNCj4gLQkJCQkJ CSAgICAgd2k6OnRvX3dpZGUgKGNzdCksDQo+IC0JCQkJCQkgICAgICZ0YXJnZXQsIG9wMCwgb3Ax KSkNCj4gLSAgICByZXR1cm4gdGFyZ2V0Ow0KPiAtDQo+IC0NCj4gICAgLyogTm93IGNvbnZlcnQg dG8gdGhlIGJlc3QgbW9kZSB0byB1c2UuICAqLw0KPiAgICBpZiAoY29tcHV0ZV9tb2RlICE9IG1v ZGUpDQo+ICAgICAgew0KPiBAQCAtNDYyOSw4ICs0NjE4LDggQEAgZXhwYW5kX2Rpdm1vZCAoaW50 IHJlbV9mbGFnLCBlbnVtIHRyZWVfY29kZQ0KPiBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwNCj4g IAkJCSAgICB8fCAob3B0YWJfaGFuZGxlciAoc2Rpdm1vZF9vcHRhYiwgaW50X21vZGUpDQo+ICAJ CQkJIT0gQ09ERV9GT1Jfbm90aGluZykpKQ0KPiAgCQkgICAgICBxdW90aWVudCA9IGV4cGFuZF9k aXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLA0KPiAtCQkJCQkJaW50X21vZGUsIHRyZWVvcDAsIHRy ZWVvcDEsDQo+IC0JCQkJCQlvcDAsIGdlbl9pbnRfbW9kZSAoYWJzX2QsDQo+ICsJCQkJCQlpbnRf bW9kZSwgb3AwLA0KPiArCQkJCQkJZ2VuX2ludF9tb2RlIChhYnNfZCwNCj4gIAkJCQkJCQkgICAg ICBpbnRfbW9kZSksDQo+ICAJCQkJCQlOVUxMX1JUWCwgMCk7DQo+ICAJCSAgICBlbHNlDQo+IEBA IC00ODE5LDggKzQ4MDgsOCBAQCBleHBhbmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcsIGVudW0gdHJl ZV9jb2RlDQo+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiAgCQkJCSAgICAgIHNpemUgLSAx LCBOVUxMX1JUWCwgMCk7DQo+ICAJCXQzID0gZm9yY2Vfb3BlcmFuZCAoZ2VuX3J0eF9NSU5VUyAo aW50X21vZGUsIHQxLCBuc2lnbiksDQo+ICAJCQkJICAgIE5VTExfUlRYKTsNCj4gLQkJdDQgPSBl eHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgaW50X21vZGUsDQo+IHRyZWVvcDAsDQo+ IC0JCQkJICAgIHRyZWVvcDEsIHQzLCBvcDEsIE5VTExfUlRYLCAwKTsNCj4gKwkJdDQgPSBleHBh bmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgaW50X21vZGUsIHQzLA0KPiBvcDEsDQo+ICsJ CQkJICAgIE5VTExfUlRYLCAwKTsNCj4gIAkJaWYgKHQ0KQ0KPiAgCQkgIHsNCj4gIAkJICAgIHJ0 eCB0NTsNCj4gZGlmZiAtLWdpdCBhL2djYy9leHByLmNjIGIvZ2NjL2V4cHIuY2MNCj4gaW5kZXgN Cj4gMTViZTFjOGRiOTk5MTAzYmI5ZTVmYTMzZGFhNDRhZTA2ZGU1YWNlOC4uNzhkMzUyOTdlNzU1 MjE2MzM5MDc4ZDViDQo+IDIyODBjNmUyNzdmMjZkNzIgMTAwNjQ0DQo+IC0tLSBhL2djYy9leHBy LmNjDQo+ICsrKyBiL2djYy9leHByLmNjDQo+IEBAIC04MjA3LDE3ICs4MjA3LDE2IEBAIGZvcmNl X29wZXJhbmQgKHJ0eCB2YWx1ZSwgcnR4IHRhcmdldCkNCj4gIAkgICAgcmV0dXJuIGV4cGFuZF9k aXZtb2QgKDAsDQo+ICAJCQkJICBGTE9BVF9NT0RFX1AgKEdFVF9NT0RFICh2YWx1ZSkpDQo+ICAJ CQkJICA/IFJESVZfRVhQUiA6IFRSVU5DX0RJVl9FWFBSLA0KPiAtCQkJCSAgR0VUX01PREUgKHZh bHVlKSwgTlVMTCwgTlVMTCwgb3AxLCBvcDIsDQo+IC0JCQkJICB0YXJnZXQsIDApOw0KPiArCQkJ CSAgR0VUX01PREUgKHZhbHVlKSwgb3AxLCBvcDIsIHRhcmdldCwgMCk7DQo+ICAJY2FzZSBNT0Q6 DQo+IC0JICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNfTU9EX0VYUFIsIEdFVF9NT0RF ICh2YWx1ZSksDQo+IE5VTEwsIE5VTEwsDQo+IC0JCQkJb3AxLCBvcDIsIHRhcmdldCwgMCk7DQo+ ICsJICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNfTU9EX0VYUFIsIEdFVF9NT0RFICh2 YWx1ZSksDQo+IG9wMSwgb3AyLA0KPiArCQkJCXRhcmdldCwgMCk7DQo+ICAJY2FzZSBVRElWOg0K PiAtCSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBHRVRfTU9ERSAo dmFsdWUpLA0KPiBOVUxMLCBOVUxMLA0KPiAtCQkJCW9wMSwgb3AyLCB0YXJnZXQsIDEpOw0KPiAr CSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBHRVRfTU9ERSAodmFs dWUpLA0KPiBvcDEsIG9wMiwNCj4gKwkJCQl0YXJnZXQsIDEpOw0KPiAgCWNhc2UgVU1PRDoNCj4g LQkgIHJldHVybiBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgR0VUX01PREUgKHZh bHVlKSwNCj4gTlVMTCwgTlVMTCwNCj4gLQkJCQlvcDEsIG9wMiwgdGFyZ2V0LCAxKTsNCj4gKwkg IHJldHVybiBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgR0VUX01PREUgKHZhbHVl KSwNCj4gb3AxLCBvcDIsDQo+ICsJCQkJdGFyZ2V0LCAxKTsNCj4gIAljYXNlIEFTSElGVFJUOg0K PiAgCSAgcmV0dXJuIGV4cGFuZF9zaW1wbGVfYmlub3AgKEdFVF9NT0RFICh2YWx1ZSksIGNvZGUs IG9wMSwgb3AyLA0KPiAgCQkJCSAgICAgIHRhcmdldCwgMCwgT1BUQUJfTElCX1dJREVOKTsNCj4g QEAgLTkxNzAsMTMgKzkxNjksMTEgQEAgZXhwYW5kX2V4cHJfZGl2bW9kICh0cmVlX2NvZGUgY29k ZSwNCj4gbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHJlZW9wMCwNCj4gICAgICAgIGJvb2wgc3Bl ZWRfcCA9IG9wdGltaXplX2luc25fZm9yX3NwZWVkX3AgKCk7DQo+ICAgICAgICBkb19wZW5kaW5n X3N0YWNrX2FkanVzdCAoKTsNCj4gICAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOw0KPiAtICAgICAg cnR4IHVuc19yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgdHJlZW9wMCwg dHJlZW9wMSwNCj4gLQkJCQkgICBvcDAsIG9wMSwgdGFyZ2V0LCAxKTsNCj4gKyAgICAgIHJ0eCB1 bnNfcmV0ID0gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLCB0YXJn ZXQsDQo+ICsgMSk7DQo+ICAgICAgICBydHhfaW5zbiAqdW5zX2luc25zID0gZ2V0X2luc25zICgp Ow0KPiAgICAgICAgZW5kX3NlcXVlbmNlICgpOw0KPiAgICAgICAgc3RhcnRfc2VxdWVuY2UgKCk7 DQo+IC0gICAgICBydHggc2duX3JldCA9IGV4cGFuZF9kaXZtb2QgKG1vZF9wLCBjb2RlLCBtb2Rl LCB0cmVlb3AwLCB0cmVlb3AxLA0KPiAtCQkJCSAgIG9wMCwgb3AxLCB0YXJnZXQsIDApOw0KPiAr ICAgICAgcnR4IHNnbl9yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgb3Aw LCBvcDEsIHRhcmdldCwNCj4gKyAwKTsNCj4gICAgICAgIHJ0eF9pbnNuICpzZ25faW5zbnMgPSBn ZXRfaW5zbnMgKCk7DQo+ICAgICAgICBlbmRfc2VxdWVuY2UgKCk7DQo+ICAgICAgICB1bnNpZ25l ZCB1bnNfY29zdCA9IHNlcV9jb3N0ICh1bnNfaW5zbnMsIHNwZWVkX3ApOyBAQCAtOTE5OCw4ICs5 MTk1LDcNCj4gQEAgZXhwYW5kX2V4cHJfZGl2bW9kICh0cmVlX2NvZGUgY29kZSwgbWFjaGluZV9t b2RlIG1vZGUsIHRyZWUNCj4gdHJlZW9wMCwNCj4gICAgICAgIGVtaXRfaW5zbiAoc2duX2luc25z KTsNCj4gICAgICAgIHJldHVybiBzZ25fcmV0Ow0KPiAgICAgIH0NCj4gLSAgcmV0dXJuIGV4cGFu ZF9kaXZtb2QgKG1vZF9wLCBjb2RlLCBtb2RlLCB0cmVlb3AwLCB0cmVlb3AxLA0KPiAtCQkJb3Aw LCBvcDEsIHRhcmdldCwgdW5zaWduZWRwKTsNCj4gKyAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKG1v ZF9wLCBjb2RlLCBtb2RlLCBvcDAsIG9wMSwgdGFyZ2V0LA0KPiArIHVuc2lnbmVkcCk7DQo+ICB9 DQo+IA0KPiAgcnR4DQo+IGRpZmYgLS1naXQgYS9nY2MvaW50ZXJuYWwtZm4uZGVmIGIvZ2NjL2lu dGVybmFsLWZuLmRlZiBpbmRleA0KPiAyMmI0YTJkOTI5NjcwNzZjNjU4OTY1YWZjYWVhZjM5YjQ0 OWE4Y2FmLi4yNzk2ZDM2NjlhMDgwNjUzODA1MjU4NGY1YQ0KPiAzYjhhNzM0YmFhODAwZiAxMDA2 NDQNCj4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZg0KPiArKysgYi9nY2MvaW50ZXJuYWwtZm4u ZGVmDQo+IEBAIC0xNzQsNiArMTc0LDggQEAgREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAo QVZHX0NFSUwsDQo+IEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLCBmaXJzdCwNCj4gDQo+ICBERUZf SU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChNVUxILCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywN Cj4gZmlyc3QsDQo+ICAJCQkgICAgICBzbXVsX2hpZ2hwYXJ0LCB1bXVsX2hpZ2hwYXJ0LCBiaW5h cnkpDQo+ICtERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChBRERILCBFQ0ZfQ09OU1QgfCBF Q0ZfTk9USFJPVywNCj4gZmlyc3QsDQo+ICsJCQkgICAgICBzYWRkX2hpZ2hwYXJ0LCB1YWRkX2hp Z2hwYXJ0LCBiaW5hcnkpDQo+ICBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChNVUxIUywg RUNGX0NPTlNUIHwNCj4gRUNGX05PVEhST1csIGZpcnN0LA0KPiAgCQkJICAgICAgc211bGhzLCB1 bXVsaHMsIGJpbmFyeSkNCj4gIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKE1VTEhSUywg RUNGX0NPTlNUIHwNCj4gRUNGX05PVEhST1csIGZpcnN0LCBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFi cy5jYyBiL2djYy9vcHRhYnMuY2MgaW5kZXgNCj4gY2YyMmJmZWMzZjU1MTNmNTZkMjJjODY2MjMx ZWRiZjMyMmZmNjk0NS4uNDc0Y2NiZDc5MTViNGYxNDRjZWJlMDM2OWE2DQo+IGU3NzA4MmMxZTYx N2IgMTAwNjQ0DQo+IC0tLSBhL2djYy9vcHRhYnMuY2MNCj4gKysrIGIvZ2NjL29wdGFicy5jYw0K PiBAQCAtMTEwNiw5ICsxMTA2LDggQEAgZXhwYW5kX2RvdWJsZXdvcmRfbW9kIChtYWNoaW5lX21v ZGUgbW9kZSwNCj4gcnR4IG9wMCwgcnR4IG9wMSwgYm9vbCB1bnNpZ25lZHApDQo+ICAJCXJldHVy biBOVUxMX1JUWDsNCj4gIAkgICAgfQ0KPiAgCX0NCj4gLSAgICAgIHJ0eCByZW1haW5kZXIgPSBl eHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgd29yZF9tb2RlLA0KPiBOVUxMLCBOVUxM LA0KPiAtCQkJCSAgICAgc3VtLCBnZW5faW50X21vZGUgKElOVFZBTCAob3AxKSwNCj4gLQkJCQkJ CQl3b3JkX21vZGUpLA0KPiArICAgICAgcnR4IHJlbWFpbmRlciA9IGV4cGFuZF9kaXZtb2QgKDEs IFRSVU5DX01PRF9FWFBSLCB3b3JkX21vZGUsDQo+IHN1bSwNCj4gKwkJCQkgICAgIGdlbl9pbnRf bW9kZSAoSU5UVkFMIChvcDEpLA0KPiB3b3JkX21vZGUpLA0KPiAgCQkJCSAgICAgTlVMTF9SVFgs IDEsIE9QVEFCX0RJUkVDVCk7DQo+ICAgICAgICBpZiAocmVtYWluZGVyID09IE5VTExfUlRYKQ0K PiAgCXJldHVybiBOVUxMX1JUWDsNCj4gQEAgLTEyMTEsOCArMTIxMCw4IEBAIGV4cGFuZF9kb3Vi bGV3b3JkX2Rpdm1vZCAobWFjaGluZV9tb2RlDQo+IG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0 eCAqcmVtLA0KPiANCj4gICAgaWYgKG9wMTEgIT0gY29uc3QxX3J0eCkNCj4gICAgICB7DQo+IC0g ICAgICBydHggcmVtMiA9IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBtb2RlLCBO VUxMLCBOVUxMLA0KPiBxdW90MSwNCj4gLQkJCQlvcDExLCBOVUxMX1JUWCwgdW5zaWduZWRwLA0K PiBPUFRBQl9ESVJFQ1QpOw0KPiArICAgICAgcnR4IHJlbTIgPSBleHBhbmRfZGl2bW9kICgxLCBU UlVOQ19NT0RfRVhQUiwgbW9kZSwgcXVvdDEsIG9wMTEsDQo+ICsJCQkJTlVMTF9SVFgsIHVuc2ln bmVkcCwgT1BUQUJfRElSRUNUKTsNCj4gICAgICAgIGlmIChyZW0yID09IE5VTExfUlRYKQ0KPiAg CXJldHVybiBOVUxMX1JUWDsNCj4gDQo+IEBAIC0xMjI2LDggKzEyMjUsOCBAQCBleHBhbmRfZG91 Ymxld29yZF9kaXZtb2QgKG1hY2hpbmVfbW9kZQ0KPiBtb2RlLCBydHggb3AwLCBydHggb3AxLCBy dHggKnJlbSwNCj4gICAgICAgIGlmIChyZW0yID09IE5VTExfUlRYKQ0KPiAgCXJldHVybiBOVUxM X1JUWDsNCj4gDQo+IC0gICAgICBydHggcXVvdDIgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19E SVZfRVhQUiwgbW9kZSwgTlVMTCwgTlVMTCwNCj4gcXVvdDEsDQo+IC0JCQkJIG9wMTEsIE5VTExf UlRYLCB1bnNpZ25lZHAsDQo+IE9QVEFCX0RJUkVDVCk7DQo+ICsgICAgICBydHggcXVvdDIgPSBl eHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgbW9kZSwgcXVvdDEsIG9wMTEsDQo+ICsJ CQkJIE5VTExfUlRYLCB1bnNpZ25lZHAsIE9QVEFCX0RJUkVDVCk7DQo+ICAgICAgICBpZiAocXVv dDIgPT0gTlVMTF9SVFgpDQo+ICAJcmV0dXJuIE5VTExfUlRYOw0KPiANCj4gZGlmZiAtLWdpdCBh L2djYy9vcHRhYnMuZGVmIGIvZ2NjL29wdGFicy5kZWYgaW5kZXgNCj4gNjk1ZjU5MTFiMzAwYzlj YTU3MzdkZTliZTgwOWZhMDFhYWJlNWUwMS4uNzdhMTUyZWMyZDE5NDlkZWNhMmMyZDdhNQ0KPiBj Y2JmNjE0Nzk0NzM1MWEgMTAwNjQ0DQo+IC0tLSBhL2djYy9vcHRhYnMuZGVmDQo+ICsrKyBiL2dj Yy9vcHRhYnMuZGVmDQo+IEBAIC0yNjUsNiArMjY1LDggQEAgT1BUQUJfRCAoc3BhY2VzaGlwX29w dGFiLCAic3BhY2VzaGlwJGEzIikNCj4gDQo+ICBPUFRBQl9EIChzbXVsX2hpZ2hwYXJ0X29wdGFi LCAic211bCRhM19oaWdocGFydCIpICBPUFRBQl9EDQo+ICh1bXVsX2hpZ2hwYXJ0X29wdGFiLCAi dW11bCRhM19oaWdocGFydCIpDQo+ICtPUFRBQl9EIChzYWRkX2hpZ2hwYXJ0X29wdGFiLCAic2Fk ZCRhM19oaWdocGFydCIpIE9QVEFCX0QNCj4gKyh1YWRkX2hpZ2hwYXJ0X29wdGFiLCAidWFkZCRh M19oaWdocGFydCIpDQo+IA0KPiAgT1BUQUJfRCAoY21wbWVtX29wdGFiLCAiY21wbWVtJGEiKQ0K PiAgT1BUQUJfRCAoY21wc3RyX29wdGFiLCAiY21wc3RyJGEiKQ0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3RhcmdldC5kZWYgYi9nY2MvdGFyZ2V0LmRlZiBpbmRleA0KPiBkYjhhZjBjYmU4MTYyNDUxM2Yx MTRmYzliYmQ4YmU2MWQ4NTVmNDA5Li5lMGE1YzdhZGJkOTYyZjVkMDhlZDA4ZDFkDQo+IDgxYWZh MmMyYmFhNjRhNSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RhcmdldC5kZWYNCj4gKysrIGIvZ2NjL3Rh cmdldC5kZWYNCj4gQEAgLTE5MDUsMjUgKzE5MDUsNiBAQCBpbXBsZW1lbnRhdGlvbiBhcHByb2Fj aGVzIGl0c2VsZi4iLA0KPiAgCWNvbnN0IHZlY19wZXJtX2luZGljZXMgJnNlbCksDQo+ICAgTlVM TCkNCj4gDQo+IC1ERUZIT09LDQo+IC0oY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0LA0KPiAtICJU aGlzIGhvb2sgaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBoYXMgYSBzcGVjaWFs IG1ldGhvZCBvZlxuXCAtDQo+IGRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZSBAdmFye3ZlY3R5 cGV9IHVzaW5nIHRoZSB2YWx1ZSBAdmFye2NvbnN0YW50fSxcblwNCj4gLWFuZCBwcm9kdWNpbmcg YSB2ZWN0b3Igb2YgdHlwZSBAdmFye3ZlY3R5cGV9LiAgVGhlIGRpdmlzaW9uXG5cIC13aWxsIHRo ZW4NCj4gbm90IGJlIGRlY29tcG9zZWQgYnkgdGhlIHZlY3Rvcml6ZXIgYW5kIGtlcHQgYXMgYSBk aXYuXG5cIC1cblwgLVdoZW4gdGhlDQo+IGhvb2sgaXMgYmVpbmcgdXNlZCB0byB0ZXN0IHdoZXRo ZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBhIHNwZWNpYWxcblwgLWRpdmlkZSwNCj4gQHZhcntpbjB9 LCBAdmFye2luMX0sIGFuZCBAdmFye291dHB1dH0gYXJlIGFsbCBudWxsLiAgV2hlbiB0aGUgaG9v a1xuXCAtaXMNCj4gYmVpbmcgdXNlZCB0byBlbWl0IGEgZGl2aXNpb24sIEB2YXJ7aW4wfSBhbmQg QHZhcntpbjF9IGFyZSB0aGUgc291cmNlXG5cIC0NCj4gdmVjdG9ycyBvZiB0eXBlIEB2YXJ7dmVj dHR5cGV9IGFuZCBAdmFye291dHB1dH0gaXMgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvcg0KPiBvZlxu XCAtdHlwZSBAdmFye3ZlY3R5cGV9LlxuXCAtXG5cIC1SZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0 aW9uIGlzIHBvc3NpYmxlLA0KPiBlbWl0dGluZyBpbnN0cnVjdGlvbnMgZm9yIGl0XG5cIC1pZiBy dHhlcyBhcmUgcHJvdmlkZWQgYW5kIHVwZGF0aW5nDQo+IEB2YXJ7b3V0cHV0fS4iLA0KPiAtIGJv b2wsIChlbnVtIHRyZWVfY29kZSwgdHJlZSB2ZWN0eXBlLCB3aWRlX2ludCBjb25zdGFudCwgcnR4 ICpvdXRwdXQsDQo+IC0JcnR4IGluMCwgcnR4IGluMSksDQo+IC0gZGVmYXVsdF9jYW5fc3BlY2lh bF9kaXZfYnlfY29uc3QpDQo+IC0NCj4gIC8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgc3Vw cG9ydHMgbWlzYWxpZ25lZCBzdG9yZS9sb2FkIG9mIGENCj4gICAgIHNwZWNpZmljIGZhY3RvciBk ZW5vdGVkIGluIHRoZSB0aGlyZCBwYXJhbWV0ZXIuICBUaGUgbGFzdCBwYXJhbWV0ZXINCj4gICAg IGlzIHRydWUgaWYgdGhlIGFjY2VzcyBpcyBkZWZpbmVkIGluIGEgcGFja2VkIHN0cnVjdC4gICov IGRpZmYgLS1naXQgYS9nY2MvdGFyZ2V0LmgNCj4gYi9nY2MvdGFyZ2V0LmggaW5kZXgNCj4gMDNm ZDAzYTUyMDc1YjQ4MzYxNTkwMzVlYzE0MDc4YzBhZWJkZDdlOS4uOTM2OTE4ODI3NTcyMzJjNTE0 ZmNhODJiOQ0KPiA5ZjkxMzE1OGMyZDQ3YjEgMTAwNjQ0DQo+IC0tLSBhL2djYy90YXJnZXQuaA0K PiArKysgYi9nY2MvdGFyZ2V0LmgNCj4gQEAgLTUxLDcgKzUxLDYgQEANCj4gICNpbmNsdWRlICJp bnNuLWNvZGVzLmgiDQo+ICAjaW5jbHVkZSAidG0uaCINCj4gICNpbmNsdWRlICJoYXJkLXJlZy1z ZXQuaCINCj4gLSNpbmNsdWRlICJ0cmVlLWNvcmUuaCINCj4gDQo+ICAjaWYgQ0hFQ0tJTkdfUA0K PiANCj4gZGlmZiAtLWdpdCBhL2djYy90YXJnaG9va3MuaCBiL2djYy90YXJnaG9va3MuaCBpbmRl eA0KPiBhMWRmMjYwZjU0ODNkYzg0ZjE4ZDhmMTJjNTIwMjQ4NGEzMmQ1YmI3Li5hNmE0ODA5Y2E5 MWJhYTVkN2ZhZDIyNDQ1NA0KPiA5MzE3YTMxMzkwZjBjMiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rh cmdob29rcy5oDQo+ICsrKyBiL2djYy90YXJnaG9va3MuaA0KPiBAQCAtMjA5LDggKzIwOSw2IEBA IGV4dGVybiB2b2lkIGRlZmF1bHRfYWRkcl9zcGFjZV9kaWFnbm9zZV91c2FnZQ0KPiAoYWRkcl9z cGFjZV90LCBsb2NhdGlvbl90KTsgIGV4dGVybiBydHggZGVmYXVsdF9hZGRyX3NwYWNlX2NvbnZl cnQgKHJ0eCwNCj4gdHJlZSwgdHJlZSk7ICBleHRlcm4gdW5zaWduZWQgaW50IGRlZmF1bHRfY2Fz ZV92YWx1ZXNfdGhyZXNob2xkICh2b2lkKTsNCj4gZXh0ZXJuIGJvb2wgZGVmYXVsdF9oYXZlX2Nv bmRpdGlvbmFsX2V4ZWN1dGlvbiAodm9pZCk7IC1leHRlcm4gYm9vbA0KPiBkZWZhdWx0X2Nhbl9z cGVjaWFsX2Rpdl9ieV9jb25zdCAoZW51bSB0cmVlX2NvZGUsIHRyZWUsIHdpZGVfaW50LA0KPiAt CQkJCQkgICAgICBydHggKiwgcnR4LCBydHgpOw0KPiANCj4gIGV4dGVybiBib29sIGRlZmF1bHRf bGliY19oYXNfZnVuY3Rpb24gKGVudW0gZnVuY3Rpb25fY2xhc3MsIHRyZWUpOyAgZXh0ZXJuDQo+ IGJvb2wgZGVmYXVsdF9saWJjX2hhc19mYXN0X2Z1bmN0aW9uIChpbnQgZmNvZGUpOyBkaWZmIC0t Z2l0IGEvZ2NjL3Rhcmdob29rcy5jYw0KPiBiL2djYy90YXJnaG9va3MuY2MgaW5kZXgNCj4gZmUw MTE2NTIxZmVhZjMyMTg3ZTdiYzExM2JmOTNiMTgwNTg1MmM3OS4uMjExNTI1NzIwYTYyMGQ2ZjUz M2UyZGE5MWUNCj4gMDM4NzczMzdhOTMxZTcgMTAwNjQ0DQo+IC0tLSBhL2djYy90YXJnaG9va3Mu Y2MNCj4gKysrIGIvZ2NjL3Rhcmdob29rcy5jYw0KPiBAQCAtMTg0MCwxNCArMTg0MCw2IEBAIGRl ZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24gKHZvaWQpDQo+ICAgIHJldHVybiBIQVZF X2NvbmRpdGlvbmFsX2V4ZWN1dGlvbjsNCj4gIH0NCj4gDQo+IC0vKiBEZWZhdWx0IHRoYXQgbm8g ZGl2aXNpb24gYnkgY29uc3RhbnQgb3BlcmF0aW9ucyBhcmUgc3BlY2lhbC4gICovIC1ib29sIC0N Cj4gZGVmYXVsdF9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKGVudW0gdHJlZV9jb2RlLCB0cmVl LCB3aWRlX2ludCwgcnR4ICosDQo+IHJ0eCwNCj4gLQkJCQkgIHJ0eCkNCj4gLXsNCj4gLSAgcmV0 dXJuIGZhbHNlOw0KPiAtfQ0KPiAtDQo+ICAvKiBCeSBkZWZhdWx0IHdlIGFzc3VtZSB0aGF0IGM5 OSBmdW5jdGlvbnMgYXJlIHByZXNlbnQgYXQgdGhlIHJ1bnRpbWUsDQo+ICAgICBidXQgc2luY29z IGlzIG5vdC4gICovDQo+ICBib29sDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stNC5jDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0K PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODFmODk0NjkyMjI1 MDIzNGJmNzU5ZTBhMA0KPiBhMDRlYThjMWY3M2UzYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay00LmMNCj4gQEAgLTAs MCArMSwyNSBAQA0KPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQg fSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsjaW5jbHVkZSAidHJlZS12ZWN0 LmgiDQo+ICsNCj4gK3R5cGVkZWYgdW5zaWduZWQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6 ZV9fICgxNikpKSBWOw0KPiArDQo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX19ub2Nsb25lX18pKSBWIGZvbw0KPiArKFYgdiwgdW5zaWduZWQg c2hvcnQgaSkgew0KPiArICB2IC89IGk7DQo+ICsgIHJldHVybiB2Ow0KPiArfQ0KPiArDQo+ICtp bnQNCj4gK21haW4gKHZvaWQpDQo+ICt7DQo+ICsgIFYgdiA9IGZvbyAoKFYpIHsgMHhmZmZmZmZm ZiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZiB9LA0KPiArMHhmZmZmKTsNCj4g KyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZiAodikgLyBzaXplb2YgKHZbMF0pOyBp KyspDQo+ICsgICAgaWYgKHZbaV0gIT0gMHgwMDAxMDAwMSkNCj4gKyAgICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC1ub3QgInZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm46DQo+ICtkZXRlY3Rl ZCIgInZlY3QiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTUuYw0KPiBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uYjRlYjFhNGRhY2JhNDgxZTYzMDZiNDk5MQ0KPiA0ZDJhMjliOTMzZGU2MjUNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJp dG1hc2stNS5jDQo+IEBAIC0wLDAgKzEsNTggQEANCj4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiAr I2luY2x1ZGUgPHN0ZGlvLmg+DQo+ICsjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQo+ICsNCj4gKyNk ZWZpbmUgTiA1MA0KPiArI2RlZmluZSBUWVBFIHVpbnQ4X3QNCj4gKw0KPiArI2lmbmRlZiBERUJV Rw0KPiArI2RlZmluZSBERUJVRyAwDQo+ICsjZW5kaWYNCj4gKw0KPiArI2RlZmluZSBCQVNFICgo VFlQRSkgLTEgPCAwID8gLTEyNiA6IDQpDQo+ICsNCj4gKw0KPiArX19hdHRyaWJ1dGVfXygobm9p cGEsIG5vaW5saW5lLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMShUWVBFKg0KPiArcmVzdHJp Y3QgcGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg bjsgaSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0N Cj4gKw0KPiArX19hdHRyaWJ1dGVfXygobm9pcGEsIG5vaW5saW5lLCBvcHRpbWl6ZSgiTzMiKSkp IHZvaWQgZnVuMihUWVBFKg0KPiArcmVzdHJpY3QgcGl4ZWwsIFRZUEUgbGV2ZWwsIGludCBuKSB7 DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSs9MSkNCj4gKyAgICBwaXhlbFtpXSA9IChw aXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0NCj4gKw0KPiAraW50IG1haW4gKCkNCj4gK3sNCj4g KyAgVFlQRSBhW05dOw0KPiArICBUWVBFIGJbTl07DQo+ICsNCj4gKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBOOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtpXSA9IEJBU0UgKyBpICogMTM7DQo+ ICsgICAgICBiW2ldID0gQkFTRSArIGkgKiAxMzsNCj4gKyAgICAgIGlmIChERUJVRykNCj4gKyAg ICAgICAgcHJpbnRmICgiJWQ6IDB4JXhcbiIsIGksIGFbaV0pOw0KPiArICAgIH0NCj4gKw0KPiAr ICBmdW4xIChhLCBOIC8gMiwgTik7DQo+ICsgIGZ1bjIgKGIsIE4gLyAyLCBOKTsNCj4gKw0KPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBpZiAoREVC VUcpDQo+ICsgICAgICAgIHByaW50ZiAoIiVkID0gMHgleCA9PSAweCV4XG4iLCBpLCBhW2ldLCBi W2ldKTsNCj4gKw0KPiArICAgICAgaWYgKGFbaV0gIT0gYltpXSkNCj4gKyAgICAgICAgX19idWls dGluX2Fib3J0ICgpOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiZGl2bW9kIHBhdHRlcm4gcmVjb2duaXplZCIg InZlY3QiIHsNCj4gK3RhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8NCj4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYyBiL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYyBpbmRl eA0KPiAxNjZhMjQ4ZjRiOTUxMmQ0YzZmYzhkNzYwYjQ1OGI3YTQ2N2Y3NzkwLi41MTlhODI0ZWM3 MjdkNGQ0ZjI4YzE0MDc3ZA0KPiBjM2U5NzBiZWQ3NWVmNiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Ry ZWUtdmVjdC1nZW5lcmljLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYw0KPiBA QCAtMTIzNywxNyArMTIzNyw2IEBAIGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uIChnaW1wbGVfc3Rt dF9pdGVyYXRvcg0KPiAqZ3NpLCB0cmVlIHR5cGUsIHRyZWUgY29tcHV0ZV90eXBlDQo+ICAJICB0 cmVlIHJoczIgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ICAJICB0cmVlIHJldDsN Cj4gDQo+IC0JICAvKiBDaGVjayBpZiB0aGUgdGFyZ2V0IHdhcyBnb2luZyB0byBoYW5kbGUgaXQg dGhyb3VnaCB0aGUgc3BlY2lhbA0KPiAtCSAgICAgZGl2aXNpb24gY2FsbGJhY2sgaG9vay4gICov DQo+IC0JICB0cmVlIGNzdCA9IHVuaWZvcm1faW50ZWdlcl9jc3RfcCAocmhzMik7DQo+IC0JICBp ZiAoY3N0ICYmDQo+IC0JICAgICAgdGFyZ2V0bS52ZWN0b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5 X2NvbnN0IChjb2RlLCB0eXBlLA0KPiAtCQkJCQkJCSAgd2k6OnRvX3dpZGUgKGNzdCksDQo+IC0J CQkJCQkJICBOVUxMLA0KPiAtCQkJCQkJCSAgTlVMTF9SVFgsDQo+IE5VTExfUlRYKSkNCj4gLQkg ICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gLQ0KPiAtDQo+ICAJICBpZiAoIW9wdGltaXplDQo+ICAJ ICAgICAgfHwgIVZFQ1RPUl9JTlRFR0VSX1RZUEVfUCAodHlwZSkNCj4gIAkgICAgICB8fCBUUkVF X0NPREUgKHJoczIpICE9IFZFQ1RPUl9DU1QgZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtDQo+ IHBhdHRlcm5zLmNjIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jYyBpbmRleA0KPiA2OTM0YWVi YzY5ZjIzMWFmMjQ2NjhmMGExYzNkMTQwZTk3ZjU1NDg3Li5lMzlkN2U2YjM2MmVmNDRlYjJmYzQ2 N2YzMw0KPiA2OWRlMmFmZWExMzlkNiAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1wYXR0 ZXJucy5jYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmNjDQo+IEBAIC0zOTE0LDEy ICszOTE0LDgyIEBAIHZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywN Cj4gICAgICAgIHJldHVybiBwYXR0ZXJuX3N0bXQ7DQo+ICAgICAgfQ0KPiAgICBlbHNlIGlmICgo Y3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChvcHJuZDEpKQ0KPiAtCSAgICYmIHRhcmdldG0u dmVjdG9yaXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAocmhzX2NvZGUsDQo+IHZlY3R5cGUs DQo+IC0JCQkJCQkJICB3aTo6dG9fd2lkZSAoY3N0KSwNCj4gLQkJCQkJCQkgIE5VTEwsIE5VTExf UlRYLA0KPiAtCQkJCQkJCSAgTlVMTF9SVFgpKQ0KPiArCSAgICYmIFRZUEVfVU5TSUdORUQgKGl0 eXBlKQ0KPiArCSAgICYmIHJoc19jb2RlID09IFRSVU5DX0RJVl9FWFBSDQo+ICsJICAgJiYgdmVj dHlwZQ0KPiArCSAgICYmIGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0FEREgs IHZlY3R5cGUsDQo+ICsJCQkJCSAgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ICAgICAgew0K PiAtICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAgICAvKiBkaXYgb3B0aW1pemF0aW9ucyB1c2lu ZyBuYXJyb3dpbmdzDQo+ICsgICAgICAgd2UgY2FuIGRvIHRoZSBkaXZpc2lvbiBlLmcuIHNob3J0 cyBieSAyNTUgZmFzdGVyIGJ5IGNhbGN1bGF0aW5nIGl0IGFzDQo+ICsgICAgICAgKHggKyAoKHgg KyAyNTcpID4+IDgpKSA+PiA4IGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbg0KPiAr ICAgICAgIGRvdWJsZSB0aGUgcHJlY2lzaW9uIG9mIHguDQo+ICsNCj4gKyAgICAgICBJZiB3ZSBp bWFnaW5lIGEgc2hvcnQgYXMgYmVpbmcgY29tcG9zZWQgb2YgdHdvIGJsb2NrcyBvZiBieXRlcyB0 aGVuDQo+ICsgICAgICAgYWRkaW5nIDI1NyBvciAwYjAwMDBfMDAwMV8wMDAwXzAwMDEgdG8gdGhl IG51bWJlciBpcyBlcXVpdmFsZW50IHRvDQo+ICsgICAgICAgYWRkaW5nIDEgdG8gZWFjaCBzdWIg Y29tcG9uZW50Og0KPiArDQo+ICsJICAgIHNob3J0IHZhbHVlIG9mIDE2LWJpdHMNCj4gKyAgICAg ICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gKyAgICAgICDi lIIgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4gKyAgICAgICDilJTilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgNCj4gKwkgOC1iaXQgcGFydDEg4pay ICA4LWJpdCBwYXJ0MiAgIOKWsg0KPiArCQkgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4g KwkJICAgICDilIIgICAgICAgICAgICAgICAg4pSCDQo+ICsJCSAgICArMSAgICAgICAgICAgICAg ICsxDQo+ICsNCj4gKyAgICAgICBhZnRlciB0aGUgZmlyc3QgYWRkaXRpb24sIHdlIGhhdmUgdG8g c2hpZnQgcmlnaHQgYnkgOCwgYW5kIG5hcnJvdyB0aGUNCj4gKyAgICAgICByZXN1bHRzIGJhY2sg dG8gYSBieXRlLiAgUmVtZW1iZXIgdGhhdCB0aGUgYWRkaXRpb24gbXVzdCBiZSBkb25lIGluDQo+ ICsgICAgICAgZG91YmxlIHRoZSBwcmVjaXNpb24gb2YgdGhlIGlucHV0LiAgSG93ZXZlciBpZiB3 ZSBrbm93IHRoYXQgdGhlIGFkZGl0aW9uDQo+ICsgICAgICAgYHggKyAyNTdgIGRvZXMgbm90IG92 ZXJmbG93IHRoZW4gd2UgY2FuIGRvIHRoZSBvcGVyYXRpb24gaW4gdGhlIGN1cnJlbnQNCj4gKyAg ICAgICBwcmVjaXNpb24uICBJbiB3aGljaCBjYXNlIHdlIGRvbid0IG5lZWQgdGhlIHBhY2sgYW5k IHVucGFja3MuICAqLw0KPiArICAgICAgYXV0byB3Y3N0ID0gd2k6OnRvX3dpZGUgKGNzdCk7DQo+ ICsgICAgICBpbnQgcG93ID0gd2k6OmV4YWN0X2xvZzIgKHdjc3QgKyAxKTsNCj4gKyAgICAgIGlm IChwb3cgPT0gKGludCkgKGVsZW1lbnRfcHJlY2lzaW9uICh2ZWN0eXBlKSAvIDIpKQ0KPiArCXsN Cj4gKwkgIHdpZGVfaW50IG1pbixtYXg7DQo+ICsJICAvKiBJZiB3ZSdyZSBpbiBhIHBhdHRlcm4g d2UgbmVlZCB0byBmaW5kIHRoZSBvcmdpbmFsIGRlZmluaXRpb24uICAqLw0KPiArCSAgdHJlZSBv cDAgPSBvcHJuZDA7DQo+ICsJICBnaW1wbGUgKnN0bXQgPSBTU0FfTkFNRV9ERUZfU1RNVCAob3By bmQwKTsNCj4gKwkgIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvID0gdmluZm8tPmxvb2t1cF9zdG10 IChzdG10KTsNCj4gKwkgIGlmIChpc19wYXR0ZXJuX3N0bXRfcCAoc3RtdF9pbmZvKSkNCj4gKwkg ICAgew0KPiArCSAgICAgIGF1dG8gb3JpZ19zdG10ID0gU1RNVF9WSU5GT19SRUxBVEVEX1NUTVQg KHN0bXRfaW5mbyk7DQo+ICsJICAgICAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKFNUTVRfVklORk9f U1RNVCAob3JpZ19zdG10KSkpDQo+ICsJCW9wMCA9IGdpbXBsZV9hc3NpZ25fbGhzIChTVE1UX1ZJ TkZPX1NUTVQgKG9yaWdfc3RtdCkpOw0KPiArCSAgICB9DQo+ICsNCj4gKwkgIC8qIENoZWNrIHRo YXQgbm8gb3ZlcmZsb3cgd2lsbCBvY2N1ci4gIElmIHdlIGRvbid0IGhhdmUgcmFuZ2UNCj4gKwkg ICAgIGluZm9ybWF0aW9uIHdlIGNhbid0IHBlcmZvcm0gdGhlIG9wdGltaXphdGlvbi4gICovDQo+ ICsJICBpZiAodmVjdF9nZXRfcmFuZ2VfaW5mbyAob3AwLCAmbWluLCAmbWF4KSkNCj4gKwkgICAg ew0KPiArCSAgICAgIHdpZGVfaW50IG9uZSA9IHdpOjp0b193aWRlIChidWlsZF9vbmVfY3N0IChp dHlwZSkpOw0KPiArCSAgICAgIHdpZGVfaW50IGFkZGVyID0gd2k6OmFkZCAob25lLCB3aTo6bHNo aWZ0IChvbmUsIHBvdykpOw0KPiArCSAgICAgIHdpOjpvdmVyZmxvd190eXBlIG92ZjsNCj4gKwkg ICAgICAvKiBXZSBuZWVkIGFkZGVyIGFuZCBtYXggaW4gdGhlIHNhbWUgcHJlY2lzaW9uLiAgKi8N Cj4gKwkgICAgICB3aWRlX2ludCB6YWRkZXINCj4gKwkJPSB3aWRlX2ludF9zdG9yYWdlOjpmcm9t IChhZGRlciwgd2k6OmdldF9wcmVjaXNpb24gKG1heCksDQo+ICsJCQkJCSAgVU5TSUdORUQpOw0K PiArCSAgICAgIHdpOjphZGQgKG1heCwgemFkZGVyLCBVTlNJR05FRCwgJm92Zik7DQo+ICsJICAg ICAgaWYgKG92ZiA9PSB3aTo6T1ZGX05PTkUpDQo+ICsJCXsNCj4gKwkJICAqdHlwZV9vdXQgPSB2 ZWN0eXBlOw0KPiArCQkgIHRyZWUgdGFkZGVyID0gd2lkZV9pbnRfdG9fdHJlZSAoaXR5cGUsIGFk ZGVyKTsNCj4gKwkJICBnY2FsbCAqcGF0dDENCj4gKwkJICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKElGTl9BRERILCAyLCBvcHJuZDAsDQo+IHRhZGRlcik7DQo+ICsJCSAgdHJlZSBs aHMgPSB2ZWN0X3JlY29nX3RlbXBfc3NhX3ZhciAoaXR5cGUsIE5VTEwpOw0KPiArCQkgIGdpbXBs ZV9jYWxsX3NldF9saHMgKHBhdHQxLCBsaHMpOw0KPiArCQkgIGFwcGVuZF9wYXR0ZXJuX2RlZl9z ZXEgKHZpbmZvLCBzdG10X3ZpbmZvLCBwYXR0MSwNCj4gdmVjdHlwZSk7DQo+ICsNCj4gKwkJICBw YXR0ZXJuX3N0bXQNCj4gKwkJICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9B RERILCAyLCBvcHJuZDAsIGxocyk7DQo+ICsJCSAgbGhzID0gdmVjdF9yZWNvZ190ZW1wX3NzYV92 YXIgKGl0eXBlLCBOVUxMKTsNCj4gKwkJICBnaW1wbGVfY2FsbF9zZXRfbGhzIChwYXR0ZXJuX3N0 bXQsIGxocyk7DQo+ICsNCj4gKwkJICByZXR1cm4gcGF0dGVybl9zdG10Ow0KPiArCQl9DQo+ICsJ ICAgIH0NCj4gKwl9DQo+ICAgICAgfQ0KPiANCj4gICAgaWYgKHByZWMgPiBIT1NUX0JJVFNfUEVS X1dJREVfSU5UDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3Ry ZWUtdmVjdC1zdG10cy5jYyBpbmRleA0KPiBlYjRjYTFmMTg0ZTM3NGQxNzdlYjQzZDVlYjkzYWNm NmU2YThmZGU5Li4zYTBmYjVhZDg5OGFkNDJjMzg2N2YwYjk1DQo+IDY0ZmM0ZTA2NmU1MDA4MSAx MDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KPiArKysgYi9nY2MvdHJlZS12 ZWN0LXN0bXRzLmNjDQo+IEBAIC02MjYzLDE1ICs2MjYzLDYgQEAgdmVjdG9yaXphYmxlX29wZXJh dGlvbiAodmVjX2luZm8gKnZpbmZvLA0KPiAgCX0NCj4gICAgICAgIHRhcmdldF9zdXBwb3J0X3Ag PSAob3B0YWJfaGFuZGxlciAob3B0YWIsIHZlY19tb2RlKQ0KPiAgCQkJICAhPSBDT0RFX0ZPUl9u b3RoaW5nKTsNCj4gLSAgICAgIHRyZWUgY3N0Ow0KPiAtICAgICAgaWYgKCF0YXJnZXRfc3VwcG9y dF9wDQo+IC0JICAmJiBvcDENCj4gLQkgICYmIChjc3QgPSB1bmlmb3JtX2ludGVnZXJfY3N0X3Ag KG9wMSkpKQ0KPiAtCXRhcmdldF9zdXBwb3J0X3ANCj4gLQkgID0gdGFyZ2V0bS52ZWN0b3JpemUu Y2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChjb2RlLCB2ZWN0eXBlLA0KPiAtCQkJCQkJCXdpOjp0 b193aWRlIChjc3QpLA0KPiAtCQkJCQkJCU5VTEwsIE5VTExfUlRYLA0KPiAtCQkJCQkJCU5VTExf UlRYKTsNCj4gICAgICB9DQo+IA0KPiAgICBib29sIHVzaW5nX2VtdWxhdGVkX3ZlY3RvcnNfcCA9 IHZlY3RfZW11bGF0ZWRfdmVjdG9yX3AgKHZlY3R5cGUpOw0KPiANCj4gDQo+IA0KPiANCj4gLS0N Cg==