From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2047.outbound.protection.outlook.com [40.107.20.47]) by sourceware.org (Postfix) with ESMTPS id 23E86385454B for ; Wed, 30 Nov 2022 13:24:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 23E86385454B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MHePPxEkcL7fYw6dzUdz3/4TzghBjmJieb8IMTaJ2x9NM37niDe7/bzcorQC1C799mPsc0Mr8TjgBpikP9cnuiiXgX3cWmqhldap4z7mw+Gf6++sWN6P3BKZsGXRATyePuPuSB9xcbYJV7KyqqouC3R+UdSe3ZF4Ctq9xtrJtd5trCCOIP8a3wEHSFy0wZVJGPrILPKf63bCgVTtxPi/+s9XkEpbpjapKgFf24ttvd/ivbOYvFrAXYxHhG6dR1yHjbV3KibuGl9mWGdPkPK7WcnxYSzHPkaKf/Iu/aK6e7QDn5OoRLA2l0V6A1ydTtlhKawhCjZ5XcQzjFvGO6oPcQ== 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=vGbhg/XJ6glI3XOFErznpfXs+EneH7/P48i/joZlets=; b=c7xqvs6GpeyemE1w3+IV9SU5X8fuF/FwU9/YCHHYcm4I0GE9z4CVc0a3u9SrGRb3M0kRqSgk30uE5vsx77kOgzNQhVuMQnLLVKXI8k6WjhKrqZkvFEr8LbFn3imv077uM4UpK8ohvpdZd5n8BCXUO0ENHFnNBzpV3RaSTsS4MP9fKX6kbXSTEO0hJQR/NAW91UDcCyq64z94Oqp1jyx0ejbDf8ON4bJDHyvFR+lKfIIOpIUZWyIN1Xa3iByLWSf71O2iG2ovrmGScqw4KXUIem1sJkS2d0uuErxfOiRWOYbbrjmEh8a/JgOv2ko1b5em0ajjmmJ2xfflIxdKruFRtQ== 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=vGbhg/XJ6glI3XOFErznpfXs+EneH7/P48i/joZlets=; b=bo4jdHjptM0WIca933YxcfLjsI8a4GKEb2EfWYnZ5QADiwXyW9hpDrlJuQuwocH0UaBshFIhiA7eCv5CPrgl/Aaitjw/V+nZOBp1KI/KQEwyxezCS56mnNgdDWW+i18LkMTfXtYkDIp+ZLVUAmtL3FLEAQbEA3NL8jq+YGJ9sFg= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AM0PR08MB5347.eurprd08.prod.outlook.com (2603:10a6:208:17f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Wed, 30 Nov 2022 13:24:01 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7%5]) with mapi id 15.20.5880.008; Wed, 30 Nov 2022 13:24:01 +0000 From: Tamar Christina To: Richard Biener , Manolis Tsamis CC: "gcc-patches@gcc.gnu.org" , Philipp Tomsich , "jiangning.liu@amperecomputing.com" , Christoph Muellner Subject: RE: [PATCH v2] Add pattern to convert vector shift + bitwise and + multiply to vector compare in some cases. Thread-Topic: [PATCH v2] Add pattern to convert vector shift + bitwise and + multiply to vector compare in some cases. Thread-Index: AQHZA9omtSuGJf4EJ0mOVwvQE3HgmK5XF0qAgAAU1oCAAEjUgIAAAGYg Date: Wed, 30 Nov 2022 13:24:01 +0000 Message-ID: References: <20221129100446.3875697-1-manolis.tsamis@vrull.eu> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 451CDF4A2877ED439FFBE385BAE725AA.0 x-checkrecipientchecked: true authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AM0PR08MB5347:EE_ x-ms-office365-filtering-correlation-id: b4386c16-ae78-4c6a-f269-08dad2d624f9 nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /BEf3sHDzMiWKywFDh9NS+h5fk/THplaljWSaxqNr+xk9gwzdkAIvwPbxcnKzH3E3Cj78jIDutFXXxo71WNEIWdVdQ5fFmxx1EevIYigwf454EJpJACufWE9Rut3TxTxlGBOCY+O/c2kkHBxdOjVdZRjDx3JD9bYY09gfqKDeTK4/wwQYJD5Z2fAmvlQ1VLwqhzjg8Ggc3X6LwWN5Bfj5ITpY+nen7VzhSkGIoOTzSmRyx27wf5SjDjfvTufLV3FBiZkQ//S+4IQJgZLQQa/WfqTSTTlAMqAxPThGlfkmgKhd/Q1hut0p1Ym5m2N9tDf2p3CYqi6/v8xJgawz1t+dSA9EYaGoyBTqPaYNI2oMFcdkdsywMAez1aUW/3YC8bfiHZXxbntG9o86CBtpwehaNRN3E0PwtF23JUzXBZ8fpea3naK8oSXm4817n/NJKZzJMbhz50NegYtQJxbe0Zadn3Vnen5DQZ4zmTLR3bfQ7nTulUC49UCahbQmkbK0CmXZF3Ej/7Uanno2vcbzJMn0dap9FKZAlwCucMdxgE8AtMH50W0dCyJj9PmZ+UiVgFDL9VnaByE7Kp0oWg8HQ9UJl6xVw4ty+Qx4jeh+PhMEmOC2TQ4zuCxSwu9z22FlJIdSvKNnHQApRD9nZ+J70VSDds5Wq4NFAfuaHxU/RnqJFjYvjoJ8kwO69RrMWpjjoMOrzyFoL8ELxKLlH88K084ogvYP7y/J51tG+l/p0EDJxM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(136003)(396003)(376002)(366004)(451199015)(71200400001)(478600001)(66556008)(53546011)(122000001)(26005)(38100700002)(6506007)(9686003)(7696005)(64756008)(66476007)(66446008)(41300700001)(33656002)(76116006)(8676002)(66946007)(38070700005)(86362001)(4326008)(316002)(52536014)(54906003)(55016003)(30864003)(110136005)(5660300002)(8936002)(186003)(83380400001)(2906002)(84970400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K3JEcFUraHFUY0ZHS0JGZmM5RkFYVFU3OHdrMExGSE1SOVpYbkxXdUtGOVF4?= =?utf-8?B?ZlQxTnR4SFBhYmVWZkdiTjNRNmlRT0xkNkJXQ3B0OXduSDljbHJnZ2RZR2Vq?= =?utf-8?B?WlJKUzJDWGI2MFFRRU1PVlZlNDYrbGRwR0ptMzlvTXV6Q29odG4zbG0rQkJu?= =?utf-8?B?Y2Qzd3FWT0FhMVZVM1ZTTElvWW1HZVpTV0NZbTdTdEdISE1LazZ2Ym1vdmR1?= =?utf-8?B?UnE1RE9haWdRM1RYTG9mNjJZK2poNFd0QUZWNVQwa0pVaXBYSDlMbmZMSG9O?= =?utf-8?B?aElVbXhrd2tqaERjWGRNeWxvL0pCT0JxcUViTnB5TTIvbENaVEdwWjdqRWJq?= =?utf-8?B?UXl3UTVhU0lCSHdVSGM3ektJT1dGUUtjRE9YKzIvUzR6RTVRR1FGQlVaOW1Z?= =?utf-8?B?ZU5IRElDekJKZGdCMXFWMVNySk5hT2Q5cm5XNWJIMkk1RkhRQlFUNytkWTZz?= =?utf-8?B?eUJ3TlYxNzB6NXU2eHlEM1czZEtnWitLYXhUTHNvb3dHMHkrM2tLZGVLNDVO?= =?utf-8?B?U2t2M0NZOWJzSGJRbGo3Rk9lQk8xZWIwYnJaNDBQbWtrRmxWc1R5czFKM016?= =?utf-8?B?NWVKNmZjL1NXNHBIUkhNdktJVktCdlJyVVN5WXNHdlFGWFNteGh4TllUVzFu?= =?utf-8?B?eVhaV0FYUm9IR2JIcDIrNXNHdFFlYW1jV2h0M2VyREFZLzBsNVdOZnZjN0Jn?= =?utf-8?B?QURmdE44OVFRNlFjWE9QcU9sQzF3YjBtSUNXZk9VemZ4aC9sSkNiRVpCM2xx?= =?utf-8?B?T09VV1AwS0ZobE9hYWhINzRzcWhvUmV6b0FRamU1eHozRlFta1EreUF4ODlo?= =?utf-8?B?Und5MkVtelFXendQQzRlcXVUUTNQVVlYUlptOXdKWnY0QlFEZk43bU1CZWZZ?= =?utf-8?B?dzdZMGJJTS9ha0txWEhJc2s4Q285OENKTVJ0VzZmMnRXL0lrZjlUTGlmaCtU?= =?utf-8?B?TUlSTVhaczlVYTZyT1o0N3lnZFB5V3l6NDUzRGJIdUF4OE1Jd3lNZ2UxUWpi?= =?utf-8?B?Nm1XNFVwRGZYS0hsT0hVdXNxcXhuTEJjWmlvdDZUM0t1bE1Jbktpb2tmSFlY?= =?utf-8?B?WG56QkdKRkFIa1JKclhhcnZCbmdTNm5pSHJ6Yk5sSlk0STFRcjJFNWJ0VFRn?= =?utf-8?B?NVZ6YndOTUo3OGgvZ1JmZG85d1lIUUNneFp5bWZaZUVsOEJHTXpxV0dabGpj?= =?utf-8?B?WEx6RkFLSGxYTDZxT2VVOW9kUHhZNlU2UXNXWDl4OTFlT2FGVU1hblhNSjVF?= =?utf-8?B?WG9DY0phOGk3YU55Yyt0aXdxK3VXWGxKSS9hRjFLdCt1SnF0RU5NV0dkN1dE?= =?utf-8?B?Q0JsTXpJS3VLU0puNFhqY1NmdmZPT0pNeCtHL0REMGh4QVlIZzFMbmlZYkhH?= =?utf-8?B?QlV6UlphalhWZkVwREF4SG9PSkNJanMrMEhoUDIrOHpyMkxMQkNNdHpwemVM?= =?utf-8?B?ZnR0SEVVNkovakMveEFRWDdGbmhBNTJMS1hZeHA2NjRRZ0ZXZmZyalVnTjRN?= =?utf-8?B?UytqTGxmQ1RXSXRHampPZEMvVk5DazNHOG95cGhxM3lMWjE4Tm1nZWwwdjBp?= =?utf-8?B?OVljYkVoVHR3U29CN3RydmZXakE5anRRM0VTSVdpOWxZbDJtTUhkZy94MmR5?= =?utf-8?B?LzhwQkErZEJJRU9CWURsb3pHdTJvV0dKUlphTU9BNGhGblFEK2lRcEFFUSs0?= =?utf-8?B?YmdtUEFFYS9SNWxzTFpiaGVhaFpCc3p5Tk43RHg3U1dUdEdhSTJqNGJqZW1B?= =?utf-8?B?cDBFQm9lTEZNSjhKNVpJOC94YzJvK0JwUU90ZTUzNEFsV2NRWk8ycHNyVlhi?= =?utf-8?B?NGJUblNsMnBzTXByYnkzQkdseEpDL3FRY1ZIbmg2QVVtVlp2a2tmV2hjcnk3?= =?utf-8?B?NjZRQ1h3aFJXbWNMd0VXQzFIR2c1VTlacU1SQ0ZETHNVaTJCR0pPSVhCUXZu?= =?utf-8?B?WmlUU3V5OUlRaHkwK3p5VUgwRlZHV1RQT0hLMjdCamxWQTVhdEhDRE1xenkr?= =?utf-8?B?MGFHSWNHOFU0QnFUcUFZcndwbE1zNTZyV3U3WWV3bzVKK3ZVMHVCVWd5N3Qr?= =?utf-8?B?WGVaUHI1ZzRVUWJES0VYQktmN2swVjhkUXZlYVZFT3JTN1hkWDM0UGYzZHJ3?= =?utf-8?Q?5c1iLJNYrECdvkXTUR4kHO6/y?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR08MB5325.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4386c16-ae78-4c6a-f269-08dad2d624f9 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2022 13:24:01.1072 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sEZdzIMMkvh9xc+T35fbsFt2kOA8jJqjMqnsSuJNVNgQF5U95vav7mp8YI4O5+n9FK3PE+gyCOC1AzeyzXiX0g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5347 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP 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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmlj aGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMzAs IDIwMjIgMToxOSBQTQ0KPiBUbzogTWFub2xpcyBUc2FtaXMgPG1hbm9saXMudHNhbWlzQHZydWxs LmV1Pg0KPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IFBoaWxpcHAgVG9tc2ljaCA8cGhp bGlwcC50b21zaWNoQHZydWxsLmV1PjsNCj4gVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3Rp bmFAYXJtLmNvbT47DQo+IGppYW5nbmluZy5saXVAYW1wZXJlY29tcHV0aW5nLmNvbTsgQ2hyaXN0 b3BoIE11ZWxsbmVyDQo+IDxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+DQo+IFN1YmplY3Q6 IFJlOiBbUEFUQ0ggdjJdIEFkZCBwYXR0ZXJuIHRvIGNvbnZlcnQgdmVjdG9yIHNoaWZ0ICsgYml0 d2lzZSBhbmQgKw0KPiBtdWx0aXBseSB0byB2ZWN0b3IgY29tcGFyZSBpbiBzb21lIGNhc2VzLg0K PiANCj4gT24gV2VkLCBOb3YgMzAsIDIwMjIgYXQgOTo1OSBBTSBNYW5vbGlzIFRzYW1pcyA8bWFu b2xpcy50c2FtaXNAdnJ1bGwuZXU+DQo+IHdyb3RlOg0KPiA+DQo+ID4gT24gV2VkLCBOb3YgMzAs IDIwMjIgYXQgOTo0NCBBTSBSaWNoYXJkIEJpZW5lcg0KPiA+IDxyaWNoYXJkLmd1ZW50aGVyQGdt YWlsLmNvbT4gd3JvdGU6DQo+ID4gPg0KPiA+ID4gT24gVHVlLCBOb3YgMjksIDIwMjIgYXQgMTE6 MDUgQU0gTWFub2xpcyBUc2FtaXMNCj4gPG1hbm9saXMudHNhbWlzQHZydWxsLmV1PiB3cm90ZToN Cj4gPiA+ID4NCj4gPiA+ID4gV2hlbiB1c2luZyBTV0FSIChTSU1EIGluIGEgcmVnaXN0ZXIpIHRl Y2huaXF1ZXMgYSBjb21wYXJpc29uDQo+ID4gPiA+IG9wZXJhdGlvbiB3aXRoaW4gc3VjaCBhIHJl Z2lzdGVyIGNhbiBiZSBtYWRlIGJ5IHVzaW5nIGENCj4gPiA+ID4gY29tYmluYXRpb24gb2Ygc2hp ZnRzLCBiaXR3aXNlIGFuZCBhbmQgbXVsdGlwbGljYXRpb24uIElmIGNvZGUNCj4gPiA+ID4gdXNp bmcgdGhpcyBzY2hlbWUgaXMgdmVjdG9yaXplZCB0aGVuIHRoZXJlIGlzIHBvdGVudGlhbCB0byBy ZXBsYWNlDQo+ID4gPiA+IGFsbCB0aGVzZSBvcGVyYXRpb25zIHdpdGggYSBzaW5nbGUgdmVjdG9y IGNvbXBhcmlzb24sIGJ5IHJlaW50ZXJwcmV0aW5nDQo+IHRoZSB2ZWN0b3IgdHlwZXMgdG8gbWF0 Y2ggdGhlIHdpZHRoIG9mIHRoZSBTV0FSIHJlZ2lzdGVyLg0KPiA+ID4gPg0KPiA+ID4gPiBGb3Ig ZXhhbXBsZSwgZm9yIHRoZSB0ZXN0IGZ1bmN0aW9uIHBhY2tlZF9jbXBfMTZfMzIsIHRoZSBvcmln aW5hbA0KPiBnZW5lcmF0ZWQgY29kZSBpczoNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBsZHIg ICAgIHEwLCBbeDBdDQo+ID4gPiA+ICAgICAgICAgYWRkICAgICB3MSwgdzEsIDENCj4gPiA+ID4g ICAgICAgICB1c2hyICAgIHYwLjRzLCB2MC40cywgMTUNCj4gPiA+ID4gICAgICAgICBhbmQgICAg IHYwLjE2YiwgdjAuMTZiLCB2Mi4xNmINCj4gPiA+ID4gICAgICAgICBzaGwgICAgIHYxLjRzLCB2 MC40cywgMTYNCj4gPiA+ID4gICAgICAgICBzdWIgICAgIHYwLjRzLCB2MS40cywgdjAuNHMNCj4g PiA+ID4gICAgICAgICBzdHIgICAgIHEwLCBbeDBdLCAxNg0KPiA+ID4gPiAgICAgICAgIGNtcCAg ICAgdzIsIHcxDQo+ID4gPiA+ICAgICAgICAgYmhpICAgICAuTDIwDQo+ID4gPiA+DQo+ID4gPiA+ IHdpdGggdGhpcyBwYXR0ZXJuIHRoZSBhYm92ZSBjYW4gYmUgb3B0aW1pemVkIHRvOg0KPiA+ID4g Pg0KPiA+ID4gPiAgICAgICAgIGxkciAgICAgcTAsIFt4MF0NCj4gPiA+ID4gICAgICAgICBhZGQg ICAgIHcxLCB3MSwgMQ0KPiA+ID4gPiAgICAgICAgIGNtbHQgICAgdjAuOGgsIHYwLjhoLCAjMA0K PiA+ID4gPiAgICAgICAgIHN0ciAgICAgcTAsIFt4MF0sIDE2DQo+ID4gPiA+ICAgICAgICAgY21w ICAgICB3MiwgdzENCj4gPiA+ID4gICAgICAgICBiaGkgICAgIC5MMjANCj4gPiA+ID4NCj4gPiA+ ID4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIGZvciB4ODYtNjQuDQo+ID4gPiA+DQo+ID4gPiA+IFNp Z25lZC1vZmYtYnk6IE1hbm9saXMgVHNhbWlzIDxtYW5vbGlzLnRzYW1pc0B2cnVsbC5ldT4NCj4g PiA+ID4NCj4gPiA+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICAq IG1hdGNoLnBkOiBTaW1wbGlmeSB2ZWN0b3Igc2hpZnQgKyBiaXRfYW5kICsgbXVsdGlwbHkgaW4g c29tZSBjYXNlcy4NCj4gPiA+ID4NCj4gPiA+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2FhcmNoNjQvc3dhcl90b192ZWNf Y21wLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gPiA+ID4g Q2hhbmdlcyBpbiB2MjoNCj4gPiA+ID4gICAgICAgICAtIENoYW5nZWQgcGF0dGVybiB0byB1c2Ug dmVjX2NvbmRfZXhwci4NCj4gPiA+ID4gICAgICAgICAtIENoYW5nZWQgcGF0dGVybiB0byB3b3Jr IHdpdGggVkxBIHZlY3Rvci4NCj4gPiA+ID4gICAgICAgICAtIEFkZGVkIG1vcmUgY2hlY2tzIGFu ZCBjb21tZW50cy4NCj4gPiA+ID4NCj4gPiA+ID4gIGdjYy9tYXRjaC5wZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysNCj4gPiA+ID4gIC4uLi9n Y2MudGFyZ2V0L2FhcmNoNjQvc3dhcl90b192ZWNfY21wLmMgICAgICB8IDcyDQo+ICsrKysrKysr KysrKysrKysrKysNCj4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKykg IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zd2FyX3RvX3ZlY19jbXAuYw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2Nj L21hdGNoLnBkIGIvZ2NjL21hdGNoLnBkIGluZGV4DQo+ID4gPiA+IDY3YTBhNjgyZjMxLi4wNWU3 ZmM3OWJhOCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL21hdGNoLnBkDQo+ID4gPiA+ICsrKyBi L2djYy9tYXRjaC5wZA0KPiA+ID4gPiBAQCAtMzAxLDYgKzMwMSw2NiBAQCBERUZJTkVfSU5UX0FO RF9GTE9BVF9ST1VORF9GTiAoUklOVCkNCj4gPiA+ID4gICAgICAodmlld19jb252ZXJ0IChiaXRf YW5kOml0eXBlICh2aWV3X2NvbnZlcnQgQDApDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChuZSBAMSB7IGJ1aWxkX3plcm9fY3N0ICh0eXBlKTsNCj4gPiA+ID4gfSkp KSkpKSkNCj4gPiA+ID4NCj4gPiA+ID4gKy8qIEluIFNXQVIgKFNJTUQgaW4gYSByZWdpc3Rlcikg Y29kZSBhIHNpZ25lZCBjb21wYXJpc29uIG9mIHBhY2tlZA0KPiBkYXRhIGNhbg0KPiA+ID4gPiAr ICAgYmUgY29uc3RydWN0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgY29tYmluYXRpb24gb2Ygc2hpZnQs IGJpdHdpc2UgYW5kLA0KPiA+ID4gPiArICAgYW5kIG11bHRpcGxpY2F0aW9uIGJ5IGNvbnN0YW50 cy4gIElmIHRoYXQgY29kZSBpcyB2ZWN0b3JpemVkIHdlIGNhbg0KPiA+ID4gPiArICAgY29udmVy dCB0aGlzIHBhdHRlcm4gaW50byBhIG1vcmUgZWZmaWNpZW50IHZlY3RvciBjb21wYXJpc29uLg0K PiA+ID4gPiArKi8gKHNpbXBsaWZ5ICAobXVsdCAoYml0X2FuZCAocnNoaWZ0IEAwIHVuaWZvcm1f aW50ZWdlcl9jc3RfcEAxKQ0KPiA+ID4gPiArICAgICAgICAgICB1bmlmb3JtX2ludGVnZXJfY3N0 X3BAMikNCj4gPiA+ID4gKyAgICB1bmlmb3JtX2ludGVnZXJfY3N0X3BAMykNCj4gPiA+DQo+ID4g PiBQbGVhc2UgdXNlIFZFQ1RPUl9DU1QgaW4gdGhlIG1hdGNoIGluc3RlYWQgb2YgdW5pZm9ybV9p bnRlZ2VyX2NzdF9wDQo+ID4gPiBhbmQgaW5zdGVhZCAuLi4NCj4gPiA+DQo+ID4NCj4gPiBXaWxs IGRvLg0KPiA+DQo+ID4gPiA+ICsgKHdpdGggew0KPiA+ID4gPiArICAgdHJlZSByc2hpZnRfY3N0 ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChAMSk7DQo+ID4gPiA+ICsgICB0cmVlIGJpdF9hbmRf Y3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChAMik7DQo+ID4gPiA+ICsgICB0cmVlIG11bHRf Y3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChAMyk7ICB9DQo+ID4gPiA+ICsgIC8qIE1ha2Ug c3VyZSB3ZSdyZSB3b3JraW5nIHdpdGggdmVjdG9ycyBhbmQgdW5pZm9ybSB2ZWN0b3INCj4gPiA+ ID4gKyBjb25zdGFudHMuICAqLyAgKGlmIChWRUNUT1JfVFlQRV9QICh0eXBlKQ0KPiA+ID4NCj4g PiA+IC4uLiB0ZXN0IGZvciBub24tTlVMTCAqX2NzdCBoZXJlIHdoZXJlIHlvdSBjYW4gdXNlIHVu aWZvcm1fdmVjdG9yX3ANCj4gPiA+IGluc3RlYWQgb2YgdW5pZm9ybV9pbnRlZ2VyX2NzdF9wLiAg WW91IGNhbiBlbGlkZSB0aGUgVkVDVE9SX1RZUEVfUA0KPiA+ID4gY2hlY2sgdGhlbiBhbmQgaW5z dGVhZCBkbyBJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAodHlwZSkpLg0KPiA+ID4NCj4gPg0K PiA+IFdpbGwgZG8uDQo+ID4NCj4gPiA+ID4gKyAgICAgICAmJiB0cmVlX2ZpdHNfdWh3aV9wIChy c2hpZnRfY3N0KQ0KPiA+ID4gPiArICAgICAgICYmIHRyZWVfZml0c191aHdpX3AgKG11bHRfY3N0 KQ0KPiA+ID4gPiArICAgICAgICYmIHRyZWVfZml0c191aHdpX3AgKGJpdF9hbmRfY3N0KSkNCj4g PiA+ID4gKyAgIC8qIENvbXB1dGUgd2hhdCBjb25zdGFudHMgd291bGQgYmUgbmVlZGVkIGZvciB0 aGlzIHRvIHJlcHJlc2VudCBhDQo+IHBhY2tlZA0KPiA+ID4gPiArICAgICAgY29tcGFyaXNvbiBi YXNlZCBvbiB0aGUgc2hpZnQgYW1vdW50IGRlbm90ZWQgYnkgUlNISUZUX0NTVC4gICovDQo+ID4g PiA+ICsgICAod2l0aCB7DQo+ID4gPiA+ICsgICAgIEhPU1RfV0lERV9JTlQgdmVjX2VsZW1fYml0 cyA9IHZlY3Rvcl9lbGVtZW50X2JpdHMgKHR5cGUpOw0KPiA+ID4gPiArICAgICBwb2x5X2ludDY0 IHZlY19uZWx0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0eXBlKTsNCj4gPiA+ID4gKyAgICAg cG9seV9pbnQ2NCB2ZWNfYml0cyA9IHZlY19lbGVtX2JpdHMgKiB2ZWNfbmVsdHM7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBjbXBfYml0c19pLCBiaXRf YW5kX2ksIG11bHRfaTsNCj4gPiA+ID4gKyAgICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCB0YXJn ZXRfbXVsdF9pLCB0YXJnZXRfYml0X2FuZF9pOw0KPiA+ID4gPiArICAgICBjbXBfYml0c19pID0g dHJlZV90b191aHdpIChyc2hpZnRfY3N0KSArIDE7DQo+ID4gPiA+ICsgICAgIHRhcmdldF9tdWx0 X2kgPSAoSE9TVF9XSURFX0lOVF8xVSA8PCBjbXBfYml0c19pKSAtIDE7DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgICAgbXVsdF9pID0gdHJlZV90b191aHdpIChtdWx0X2NzdCk7DQo+ID4gPiA+ICsg ICAgIGJpdF9hbmRfaSA9IHRyZWVfdG9fdWh3aSAoYml0X2FuZF9jc3QpOw0KPiA+ID4gPiArICAg ICB0YXJnZXRfYml0X2FuZF9pID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAvKiBUaGUg Yml0IHBhdHRlcm4gaW4gQklUX0FORF9JIHNob3VsZCBiZSBhIG1hc2sgZm9yIHRoZSBsZWFzdA0K PiA+ID4gPiArICAgICAgICBzaWduaWZpY2FudCBiaXQgb2YgZWFjaCBwYWNrZWQgZWxlbWVudCB0 aGF0IGlzIENNUF9CSVRTIHdpZGUuICAqLw0KPiA+ID4gPiArICAgICBmb3IgKHVuc2lnbmVkIGkg PSAwOyBpIDwgdmVjX2VsZW1fYml0cyAvIGNtcF9iaXRzX2k7IGkrKykNCj4gPiA+ID4gKyAgICAg ICB0YXJnZXRfYml0X2FuZF9pID0gKHRhcmdldF9iaXRfYW5kX2kgPDwgY21wX2JpdHNfaSkgfCAx VTsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsgICAgKGlmICgoZXhhY3RfbG9nMiAoY21wX2Jp dHNfaSkpID49IDANCj4gPiA+ID4gKyAgICAgICAgJiYgY21wX2JpdHNfaSA8IEhPU1RfQklUU19Q RVJfV0lERV9JTlQNCj4gPiA+ID4gKyAgICAgICAgJiYgbXVsdGlwbGVfcCAodmVjX2JpdHMsIGNt cF9iaXRzX2kpDQo+ID4gPiA+ICsgICAgICAgICYmIHZlY19lbGVtX2JpdHMgPD0gSE9TVF9CSVRT X1BFUl9XSURFX0lOVA0KPiA+ID4gPiArICAgICAgICAmJiB0YXJnZXRfbXVsdF9pID09IG11bHRf aQ0KPiA+ID4gPiArICAgICAgICAmJiB0YXJnZXRfYml0X2FuZF9pID09IGJpdF9hbmRfaSkNCj4g PiA+ID4gKyAgICAgLyogQ29tcHV0ZSB0aGUgdmVjdG9yIHNoYXBlIGZvciB0aGUgY29tcGFyaXNv biBhbmQgY2hlY2sgaWYgdGhlDQo+IHRhcmdldCBpcw0KPiA+ID4gPiArICAgICAgIGFibGUgdG8g ZXhwYW5kIHRoZSBjb21wYXJpc29uIHdpdGggdGhhdCB0eXBlLiAgKi8NCj4gPiA+ID4gKyAgICAg KHdpdGggew0KPiA+ID4gPiArICAgICAgIC8qIFdlJ3JlIGRvaW5nIGEgc2lnbmVkIGNvbXBhcmlz b24uICAqLw0KPiA+ID4gPiArICAgICAgIHRyZWUgY21wX3R5cGUgPSBidWlsZF9ub25zdGFuZGFy ZF9pbnRlZ2VyX3R5cGUgKGNtcF9iaXRzX2ksIDApOw0KPiA+ID4gPiArICAgICAgIHBvbHlfaW50 NjQgdmVjdG9yX3R5cGVfbmVsdHMgPSBleGFjdF9kaXYgKHZlY19iaXRzLCBjbXBfYml0c19pKTsN Cj4gPiA+ID4gKyAgICAgICB0cmVlIHZlY3Rvcl9jbXBfdHlwZSA9IGJ1aWxkX3ZlY3Rvcl90eXBl IChjbXBfdHlwZSwNCj4gdmVjdG9yX3R5cGVfbmVsdHMpOw0KPiA+ID4gPiArICAgICAgIHRyZWUg emVyb3MgPSBidWlsZF96ZXJvX2NzdCAodmVjdG9yX2NtcF90eXBlKTsNCj4gPiA+ID4gKyAgICAg ICB0cmVlIG9uZXMgPSBidWlsZF9hbGxfb25lc19jc3QgKHZlY3Rvcl9jbXBfdHlwZSk7DQo+ID4g PiA+ICsgICAgICB9DQo+ID4gPiA+ICsgICAgICAoaWYgKGV4cGFuZF92ZWNfY21wX2V4cHJfcCAo dmVjdG9yX2NtcF90eXBlLA0KPiB2ZWN0b3JfY21wX3R5cGUsIExUX0VYUFIpKQ0KPiA+ID4gPiAr ICAgICAgICh2aWV3X2NvbnZlcnQ6dHlwZSAodmVjX2NvbmQgKGx0DQo+ICh2aWV3X2NvbnZlcnQ6 dmVjdG9yX2NtcF90eXBlIEAwKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB6ZXJvczsgfSkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyBvbmVzOyB9IHsgemVyb3M7IH0pKSkpKSkpKSkNCj4gPiA+DQo+ID4gPiBZb3UgYXJlIHRlc3Rp bmcgd2hldGhlciB3ZSBjYW4gZXhwYW5kIHRoZSBjb21wYXJpc29uIGJ1dCBub3Qgd2hldGhlcg0K PiA+ID4gd2UgY2FuIGV4cGFuZCB0aGUgdmVjdG9yIGNvbmRpdGlvbiBoZXJlPyAgVGhlIHNldCBv ZiBjb21iaW5hdGlvbnMNCj4gPiA+IHN1cHBvcnRlZCBhcmUgdHJpY2t5LCBJIHRoaW5rIHlvdXIg dGVzdCBpcyBjb25zZXJ2YXRpdmVseSBPSyBidXQgaXQNCj4gPiA+IG1pZ2h0IGZhaWwgdG8gbWF0 Y2ggQVZYNTEyIGFuZCB3aWxsIGZhaWwgdGFyZ2V0cyB3aXRoIG1hc2tzIChTVkUsDQo+ID4gPiBH Q04/KS4gIEkgdGhpbmsgYWRkaW5nDQo+ID4gPg0KPiA+ID4gICB8fCBleHBhbmRfdmVjX2NvbmRf ZXhwcl9wICh2ZWN0b3JfY21wX3R5cGUsIHZlY3Rvcl9jbXBfdHlwZSwNCj4gPiA+IExUX0VYUFIp DQo+ID4gPg0KPiA+ID4gd291bGQgZml4IHRoYXQgKGJ1dCB0aGVyZSB3aWxsIGJlIGV4dHJhIGNv c3QgaW4gcHJvZHVjaW5nIHRoZSBmaW5hbA0KPiA+ID4gcmVzdWx0IHZlY3RvciBmcm9tIHRoZSBj b21wYXJpc29uIG1hc2spLg0KPiA+ID4NCj4gPg0KPiA+IEkgZGlkbid0IHVuZGVyc3RhbmQgdGhh dCB0aGVzZSBuZWVkZWQgc2VwYXJhdGUgY2hlY2tzLCB0aGFua3MgZm9yDQo+ID4gcG9pbnRpbmcg aXQgb3V0Lg0KPiA+IFdpbGwgZG8uDQo+ID4NCj4gPiA+IEkgZG8gd29uZGVyIGlmLCBhcyB0aGlz IGlzIHRhcmdldGVkIGF0IHZlY3Rvcml6YXRpb24sIHRoaXMgc2hvdWxkbid0DQo+ID4gPiBiZSBh IHZlY3Rvcml6ZXIgcGF0dGVybiBpbnN0ZWFkIG9mIGEgcG9zdC1wcm9jZXNzaW5nIHRyYW5zZm9y bT8NCj4gPiA+IFRoYXQNCj4gPg0KPiA+IE15IGluaXRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRo aXMgd2FzIGFjdHVhbGx5IHRhcmdldGluZyB0aGUNCj4gPiB2ZWN0b3JpemF0aW9uIHBhdHRlcm5z IGJ1dCBpdCBkaWRuJ3QgZml0IHdpdGggaXQgdmVyeSB3ZWxsLiBPbmUgaXNzdWUNCj4gPiB0aGF0 IHdhcyByYWlzZWQgaXMgdGhhdCB0aGVzZSBwYXR0ZXJucyBuZWVkIHRoZSBpbnRlcm5hbCB2ZWMg Y2FsbHMgYW5kDQo+ID4gYWRkaW5nIG9uZSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgdGhpcyBvcHRp bWl6YXRpb24gd291bGQgYmUgaGFyZGx5DQo+ID4ganVzdGlmaWFibGUgYW5kIHBvc3NpYmx5IHVn bHkuIFRoZSB3YXkgSSBzZWUgaXQgdGhpcyBpcyBhIHBlZXBob2xlDQo+ID4gb3B0aW1pemF0aW9u IGFuZCBub3Qgc29tZXRoaW5nIHRvIG1ha2UgYSBwYXR0ZXJuIGZvci4NCj4gPiBBZnRlciB0aGF0 IG1hdGNoLnBkIHdhcyBsb29raW5nIGxpa2UgYSBiZXR0ZXIgcGxhY2UgdG8gYWNoaWV2ZSB0aGUN Cj4gPiBvcHRpbWl6YXRpb24gaW4gYSBjbGVhbiB3YXkgYW5kIG5vdCBwb2xsdXRlIHRoZSB2ZWN0 b3JpemVyLg0KPiA+IE15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHZlY3Rvcml6YXRpb24gbWFjaGlu ZXJ5IGlzIGxpbWl0ZWQgc28gcGxlYXNlDQo+ID4gY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcuDQo+ ID4NCj4gPiA+IHdheSB3ZSB3b3VsZA0KPiA+ID4gZ2V0IHRoZSBjb3N0aW5nIGluIHRoZSB2ZWN0 b3JpemVyIGNvcnJlY3QgYW5kIG5vdCByZWx5IG9uIGludGVnZXINCj4gPiA+IHZlY3RvciBzaGlm dCBvciBtdWx0aXBsaWNhdGlvbiBhbmQgYWxzbyBnZXQgdGhlIGNvc3Qgb2YgcHJvZHVjaW5nDQo+ ID4gPiB0aGUgcmVzdWx0IHZlY3RvciBjb3JyZWN0PyAgSSBjYW4ndCBmdWxseSBkZWNpcGhlciB0 aGUgdHJpY2sgdGhvdWdoLA0KPiA+ID4gYnV0IGFzc3VtZSB0aGF0IHZlY3Rvcl9jbXBfdHlwZSBh bHdheXMgaGFzIHNtYWxsZXIgZWxlbWVudHMgdGhhbg0KPiA+ID4gJ3R5cGUnLg0KPiA+ID4NCj4g Pg0KPiA+IFRoYXQgaXMgY29ycmVjdCwgYWxsIHRoaXMgYXBwbGllcyB3aGVuIHZlY3Rvcl9jbXBf dHlwZSBoYXMgc21hbGxlcg0KPiA+IGVsZW1lbnRzIHRoYW4gdHlwZS4gT3RoZXJ3aXNlIGlmIHZl Y3Rvcl9jbXBfdHlwZSA9PSB0eXBlIHRoZXJlIGlzIG5vDQo+ID4gU1dBUiBhbmQgR0NDIG9wdGlt aXplcyBpdCBuaWNlbHkgYWxyZWFkeSkuIEJ1dCBJIGhhdmVuJ3QgYWRkZWQgYW55DQo+ID4gc3Bl Y2lhbCBjYXNlIGZvciB0aGF0IGFzIHRoZSBwYXR0ZXJuIGlzIGdlbmVyYWwgYW5kIHdvcmtzIG5p Y2VseSBpbiBib3RoDQo+IGNhc2VzLg0KPiANCj4gU28gYSB2ZWN0b3JpemVyIHBhdHRlcm4gd291 bGQgYmUgdG8gcmVwbGFjZSB0aGUgbXVsdGlwbGljYXRpb24gd2l0aCAod2l0aA0KPiBzbWFsbGVy IHR5cGUgVCBhbmQgb3JpZ2luYWwgdHlwZSBVKQ0KPiANCj4gICAoVClAMCA8IDAgPyAoVSktMSA6 KFUpMA0KPiANCj4gPyAgVGhhdCBpcywgdGhpcyBzaG91bGQgYWxzbyB3b3JrIG9uIHRoZSBzY2Fs YXIgc2lkZT8gIChpZiBpdCBkb2Vzbid0IHRoZW4gaXQgaW5kZWVkDQo+IGdldHMgbW9yZSB0cmlj a3kpDQoNCkhtbSBkb24ndCB0aGluayBpdCBkb2VzLCBhcyB0aGUgbmFycm93aW5nIG9uIHRoZSBz Y2FsYXIgc2l6ZSB3aWxsIHJlc3VsdCBpbiBwYWNrL3VucGFjaw0Kb3BlcmF0aW9ucyBkdXJpbmcg dmVjdG9yaXphdGlvbiB3b3VsZCBpdCBub3Q/IFRoZSA8IG5lZWRzIHRvIGJlIGRvbmUgd2l0aG91 dCBjaGFuZ2luZyB0aGUgVkYuDQoNCmkuZS4gaXQncyBvbmx5IHZhbGlkIGFzIGEgdmVjdG9yIC0+ IHZlY3RvciB0cmFuc2Zvcm0gYnkgcmVpbnRlcnByZXRpbmcgdGhlIGJpdHMgaW4gdGhlIHZlY3Rv ci4NCg0KVGFtYXINCg0KPiANCj4gPiBUaGUgdHJpY2sgaXMgdGhhdCBpbiBzY2FsYXIgY29kZSB3 aGVyZSBzaW1kLXdpdGhpbi1hLXJlZ2lzdGVyDQo+ID4gdGVjaG5pcXVlcyBhcmUgdXNlZCBhIHNp Z25lZCBjb21wYXJpc29uIGNhbiBiZSBjcmVhdGVkIGJ5IDEpIHJpZ2h0DQo+ID4gc2hpZnRpbmcg dGhlIHNpZ24gYml0cyB0byB0aGUgbHNiDQo+ID4gMikgbWFza2luZyBvZmYgZXZlcnl0aGluZyBl bHNlIGFuZCAzKSBtdWx0aXBseSBieSBhbiBhcHByb3ByaWF0ZQ0KPiA+IDB4ZmZmZi4uLiBjb25z dGFudCB0byBjcmVhdGUgYSBtYXNrLiBHQ0MgY29tcHV0ZXMgdGhpcyBhcyA0DQo+ID4gaW5zdHJ1 Y3Rpb25zIHNpbmNlIHRoZSBtdWx0aXBseSBpcyB1c3VhbGx5IHJlcGxhY2VkIGJ5IHNoaWZ0IGFu ZA0KPiA+IHN1YnRyYWN0LiBCdXQgaWYgdGhpcyBzZXF1ZW5jZSBnZXRzIHZlY3Rvcml6ZWQgdGhl biBhbGwgdGhpcyBzZXF1ZW5jZQ0KPiA+IGNhbiBiZSByZXBsYWNlZCBieSBhIHNpbmdsZSB2ZWN0 b3IgY29tcGFyZS1sZXNzLCBzaW5jZSB0aGUgb3JpZ2luYWwNCj4gPiBjb2RlIHdhcyBlbXVsYXRp bmcgd2hhdCBhIHZlY3RvciBjb21hcHJlLWxlc3MgZG9lcyBhbnl3YXkuDQo+ID4NCj4gPiBUaGFu a3MhDQo+ID4gTWFub2xpcw0KPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBSaWNoYXJkLg0KPiA+ ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiAgKGZvciBjbXAgKGd0IGdlIGx0IGxlKQ0KPiA+ID4gPiAg ICAgICBvdXRwIChjb252ZXJ0IGNvbnZlcnQgbmVnYXRlIG5lZ2F0ZSkNCj4gPiA+ID4gICAgICAg b3V0biAobmVnYXRlIG5lZ2F0ZSBjb252ZXJ0IGNvbnZlcnQpIGRpZmYgLS1naXQNCj4gPiA+ID4g YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zd2FyX3RvX3ZlY19jbXAuYw0KPiA+ ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N3YXJfdG9fdmVjX2NtcC5j DQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAw Li4yNmY5YWQ5ZWYyOA0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N3YXJfdG9fdmVjX2NtcC5jDQo+ID4gPiA+IEBA IC0wLDAgKzEsNzIgQEANCj4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIiB9ICovDQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90Ow0KPiA+ID4gPiArdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsNCj4gPiA+ID4gK3R5cGVkZWYgdW5zaWduZWQgaW50 IHVpbnQzMl90Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiA4LWJpdCBTV0FSIHRlc3RzLiAgKi8N Cj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHVpbnQ4X3QgcGFja2VkX2NtcF84XzgodWludDhf dCBhKSB7DQo+ID4gPiA+ICsgIHJldHVybiAoKGEgPj4gNykgJiAweDFVKSAqIDB4ZmZVOyB9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKy8qIDE2LWJpdCBTV0FSIHRlc3RzLiAgKi8NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIHVpbnQxNl90IHBhY2tlZF9jbXBfOF8xNih1aW50MTZfdCBhKSB7DQo+ ID4gPiA+ICsgIHJldHVybiAoKGEgPj4gNykgJiAweDEwMVUpICogMHhmZlU7IH0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArc3RhdGljIHVpbnQxNl90IHBhY2tlZF9jbXBfMTZfMTYodWludDE2X3QgYSkg ew0KPiA+ID4gPiArICByZXR1cm4gKChhID4+IDE1KSAmIDB4MVUpICogMHhmZmZmVTsgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKiAzMi1iaXQgU1dBUiB0ZXN0cy4gICovDQo+ID4gPiA+ICsNCj4g PiA+ID4gK3N0YXRpYyB1aW50MzJfdCBwYWNrZWRfY21wXzhfMzIodWludDMyX3QgYSkgew0KPiA+ ID4gPiArICByZXR1cm4gKChhID4+IDcpICYgMHgxMDEwMTAxVSkgKiAweGZmVTsgfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICtzdGF0aWMgdWludDMyX3QgcGFja2VkX2NtcF8xNl8zMih1aW50MzJfdCBh KSB7DQo+ID4gPiA+ICsgIHJldHVybiAoKGEgPj4gMTUpICYgMHgxMDAwMVUpICogMHhmZmZmVTsg fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdWludDMyX3QgcGFja2VkX2NtcF8zMl8zMih1 aW50MzJfdCBhKSB7DQo+ID4gPiA+ICsgIHJldHVybiAoKGEgPj4gMzEpICYgMHgxVSkgKiAweGZm ZmZmZmZmVTsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBEcml2ZXIgZnVuY3Rpb24gdG8gdGVz dCB0aGUgdmVjdG9yaXplZCBjb2RlIGdlbmVyYXRlZCBmb3IgdGhlDQo+IGRpZmZlcmVudA0KPiA+ ID4gPiArICAgcGFja2VkX2NtcCB2YXJpYW50cy4gICovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNk ZWZpbmUgVkVDVE9SSVpFRF9QQUNLRURfQ01QKFQsIEZVTkMpICAgICAgICAgXA0KPiA+ID4gPiAr ICB2b2lkIHZlY3Rvcml6ZWRfY21wXyMjRlVOQyhUKiBhLCBpbnQgbikgICAgICBcDQo+ID4gPiA+ ICsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiA+ ID4gKyAgICBuID0gKG4gLyAzMikgKiAzMjsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ ID4gPiArICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpICs9IDQpICAgICAgICAgICAgICBcDQo+ ID4gPiA+ICsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gPiA+ID4gKyAgICAgIGFbaSArIDBdID0gRlVOQyhhW2kgKyAwXSk7ICAgICAgICAgICAgICAg XA0KPiA+ID4gPiArICAgICAgYVtpICsgMV0gPSBGVU5DKGFbaSArIDFdKTsgICAgICAgICAgICAg ICBcDQo+ID4gPiA+ICsgICAgICBhW2kgKyAyXSA9IEZVTkMoYVtpICsgMl0pOyAgICAgICAgICAg ICAgIFwNCj4gPiA+ID4gKyAgICAgIGFbaSArIDNdID0gRlVOQyhhW2kgKyAzXSk7ICAgICAgICAg ICAgICAgXA0KPiA+ID4gPiArICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArVkVDVE9SSVpFRF9Q QUNLRURfQ01QKHVpbnQ4X3QsIHBhY2tlZF9jbXBfOF84KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr VkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQxNl90LCBwYWNrZWRfY21wXzhfMTYpOw0KPiA+ID4g PiArVkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQxNl90LCBwYWNrZWRfY21wXzE2XzE2KTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArVkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQzMl90LCBwYWNrZWRf Y21wXzhfMzIpOw0KPiA+ID4gPiArVkVDVE9SSVpFRF9QQUNLRURfQ01QKHVpbnQzMl90LCBwYWNr ZWRfY21wXzE2XzMyKTsNCj4gPiA+ID4gK1ZFQ1RPUklaRURfUEFDS0VEX0NNUCh1aW50MzJfdCwg cGFja2VkX2NtcF8zMl8zMik7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciB7XHRjbWx0XHR9IH0gfSAqLw0KPiA+ID4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHR1c2hyXHR9IH0gfSAqLw0KPiA+ID4gPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHRzaGxcdH0gfSB9ICovDQo+ID4gPiA+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdG11bFx0fSB9IH0gKi8NCj4gPiA+ID4g LS0NCj4gPiA+ID4gMi4zNC4xDQo+ID4gPiA+DQo=