From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by sourceware.org (Postfix) with ESMTPS id 13DF93858D39 for ; Mon, 17 Oct 2022 06:27:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 13DF93858D39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665988045; x=1697524045; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=0ubB++/dymkwpO68qTue4CsLm0epgwutmd1MozMjY5E=; b=BSMx5USmJOKBSdTvMFQ6LOfmk+JK0FXBrFrU3V7tQLI5iqG4mbjP0K/l SrgtLkraepS2vYfzZguNFmxJLgcg5fNCjPuBz4fAfkdWHSvyDJEmK9t7O pr7hikhoCxyKCj5Im6i9wqMi63nMX5/+l58fwTdHCt1dH/vK0UTdH7L+T 492alOW/Stu8h31CuX5tO32wtOm7Zjf4I98c7Q5HeVGsZlzXswKt5GwbX hYrQJSOjHnsWEphySXB6UHcLul+++sN4vTairCx7ZlJTmf60qkAX61JQM p0YzHulyHIOj6ouCqqRgpxEHahoou8BsfXt9oZSbVMNqCKdUpnoKs8Cjh w==; X-IronPort-AV: E=McAfee;i="6500,9779,10502"; a="289008016" X-IronPort-AV: E=Sophos;i="5.95,190,1661842800"; d="scan'208";a="289008016" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Oct 2022 23:27:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10502"; a="803234690" X-IronPort-AV: E=Sophos;i="5.95,190,1661842800"; d="scan'208";a="803234690" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 16 Oct 2022 23:27:23 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 16 Oct 2022 23:27:23 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 16 Oct 2022 23:27:22 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 16 Oct 2022 23:27:22 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.108) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 16 Oct 2022 23:27:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kNJUj9l9NwCQvklcvNED7xeapCD6zHvt4MdAdQbffbpMnfUi2sFacf2vAUaieo1Od94wp1vSI3LOUnT7fyxVHaOUz+EbY6o0w+H0vY1HrQbLB8lUR9c/iI6atNB1JBC4ehF/TBZhd4Syn2C1c9vfXd+xaLOCprEK6VvzsCtOH4E+rd70UyL3VDQ0OUtQlgrmQDLw9J4M+4TBe4DtRnLGa7O0TV4dxYr1fXRijCCUuacqIiLwKdcgLWU73wCxmtu7KgDzvW4HlvyiMGzbMUVmTWDxZYnuC7lI/KmhpfxXtPTJ7UMKPXXWiWatDxPatuu+fNswN7EV1ejp3bFFShJ1rw== 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=0ubB++/dymkwpO68qTue4CsLm0epgwutmd1MozMjY5E=; b=gKECOV2ug7H6Xmt3QmQiajJeje9M02JFzFQdTaTjEwFiclitWov8Y8rxj1IFwCqVbbM2grRfvPoBnt7oRCxKW0A7ivStiu7c3RlR968Wa+AjeHhW3HDoFFQl11TXhIW7Th9NVb1SgD5gJ576d0oCXwSoHTcTN3rQJWYCZ7BfSxyCgRXg9NAd577m8Z0k20Y3qUQdvdfyJURFVsfGJMFbkyR/g6OCXeweRxKF8RoM1Ti7V9G26zv+bw53XMbijNp/8vwDAXw43b+J6IUjb203njACMXse6W0XSq5zU4y5q3PoP2jSwYG3XsXeP4b0x9epOEoDIGb2qfNea5Cb8JO7/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SA1PR11MB5946.namprd11.prod.outlook.com (2603:10b6:806:23a::9) by PH8PR11MB7069.namprd11.prod.outlook.com (2603:10b6:510:217::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Mon, 17 Oct 2022 06:27:19 +0000 Received: from SA1PR11MB5946.namprd11.prod.outlook.com ([fe80::3580:2e13:aa4b:d98d]) by SA1PR11MB5946.namprd11.prod.outlook.com ([fe80::3580:2e13:aa4b:d98d%3]) with mapi id 15.20.5723.033; Mon, 17 Oct 2022 06:27:18 +0000 From: "Jiang, Haochen" To: Hongtao Liu , "Kong, Lingling" CC: "gcc-patches@gcc.gnu.org" , "Liu, Hongtao" Subject: RE: [PATCH 2/6] Support Intel AVX-VNNI-INT8 Thread-Topic: [PATCH 2/6] Support Intel AVX-VNNI-INT8 Thread-Index: AQHY36JzDLYmP08wQ0+E9rt492giaK4R+/sAgAAngvA= Date: Mon, 17 Oct 2022 06:27:18 +0000 Message-ID: References: <20221014075445.7938-1-haochen.jiang@intel.com> <20221014075445.7938-3-haochen.jiang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR11MB5946:EE_|PH8PR11MB7069:EE_ x-ms-office365-filtering-correlation-id: 3e10d47f-c88e-4569-3d56-08dab008a448 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lFWam+CjQ2C2jLyRrOu0SSxOgQEGH/Y/hHvQO83cggrVipXaapJCY1vLptA24aiFtMWKYGsIABAyZjAge7f540d0TbxxII+KwzCL+5thd9tUd9/k8urE1Pp0FypIt5pkzJtUirno63aiUq4eL16LORkibsqT4TiSS/J0QR14C+/rjKI2RSTdIIrj6griZX1vJl/UpkOuorZUWtmxibRiMi6ML9JBa30QE7ST1s1mU++gJ7pZMqxXQUMilx9BK23ItaXSxcIprWHdQj34kcMp4OPCbxabjH0OHmpE/UNMUjoegMgylyxDBQeL7Z6b00fyQhNiwB5mAby9Wryg+t9HApuOf3b+XCRAscy46RqCP7lkApz6zA3n4C5T32Kyxnd2rZ2Ca1ajdZsJKBM/H1yl/PH3MdyfoekxyLQj4IwtKy++kZyzMCwloW7tk0pgEsVigkG8Rk7HvWgu6JH2GQy3mbdofCjmCT4pX3N/EKjYfpU11avX7mnygrPUDDlfAYDKAFrZ4zU7dfpQ59BPcCrnY/kXjw2Rn6O82+bwDEIz6PyahPAGtpS1Jzu9B7pv0EhYPIN6KXr0eQfiWMQcq4YeNT+HUxj85w+ilxZCqrimdYFR5sL31B2uXpIXx9Pqec9dGUHzvbg4yKDtfv0/WKWOkAa27kVyby/dlup2tH3Ze/bEB8QFgeqCe1ZdDrklAnEahngrfkdZeu+X0eK34sOxvare10mijSURyzAMAVsOATT6rFpDvv52jxaVCVxobc9DiQHTfp6EgVwF1VLW98Yv+PlWcVS16i3+2/6hE+jqLes/K8NksiV/iGSjUbE68Guy x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR11MB5946.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(396003)(366004)(39860400002)(136003)(376002)(451199015)(7696005)(6506007)(41300700001)(53546011)(186003)(2906002)(30864003)(83380400001)(52536014)(8936002)(9686003)(38070700005)(33656002)(26005)(122000001)(82960400001)(38100700002)(5660300002)(55016003)(478600001)(71200400001)(316002)(64756008)(66446008)(66476007)(66556008)(66946007)(76116006)(4326008)(8676002)(84970400001)(107886003)(86362001)(110136005)(54906003)(6636002)(2004002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aEhHcXY1djBKbFhSVVJVMk1GcnVSUXVlQmdhVVlLZkF0dXFsTmZJZmoxdFNo?= =?utf-8?B?NlpORHV5aDQ2THlCSGVFRTFsdHNsN0oxY3Y3cHVpcW9Lei9hTEFEREhodmZE?= =?utf-8?B?SHlvOXhxMGtlR05XTTM2dmYrZG9RM25wc2hZR1BtNzJoWVRvL1IrZVhxQWxI?= =?utf-8?B?Q3RTK2pSWDZSNnE5S1QyMFVrbnNkUlF0c0U5TDZPbTZacWdxSm5DbDl3SS9S?= =?utf-8?B?UnZqcVh0dGpwRG5wa2E5cnoxcEttb3VSZXZNV1p2c1RYejk0K2VndzBNcHRH?= =?utf-8?B?R1JxN1NNdnVyT3U0QWhmaWNBZms2czlzUFc3UTZ1Z3NrM0I4V1R5SDBzMEtN?= =?utf-8?B?RmJsRnc3ZWxZRkYzU0hJdjlYWVFOcERybFFFOEFXWTJwY2lkZjh6aUF2eE5B?= =?utf-8?B?K3Y2WVRMbzJvaTJnYU9NWXY0d2FuQzc2eERCTENWWEd4TDVJL3lFUHA3eFpo?= =?utf-8?B?SktyY1lEU05qUDhGaFVEU0FaMHh3d1h2c3B4bU5xN2VURkdhbTU0Vlc0RXZJ?= =?utf-8?B?Q3lQaUhVaC9VYW9lK0g2WG1sTkhjTnVWSUVYOW9sZzU4VUtpbVA5Qnh0d21B?= =?utf-8?B?MFhtb3BHdGtqUHB4MitFY0dNalhSQmlMK3VPVXRrN3FkM0pSOVZjUS80dTNT?= =?utf-8?B?WXI5cjBuMzVkbmFjbm0zR1VuRWh0L3JnZDZacUlSczZ4YW5mYjRnSjRrSWtz?= =?utf-8?B?R3RPdXYxMUVZVDZMUDdTT09NbGduaEE1WmlYbU05TXpZZ3JHd1h3RVR0aUF4?= =?utf-8?B?Rzc0UHQyc1RCNVBBSmpZcUdDMVF0cUJ5OWZPdmhwb1R5NzhkNGI5d3R1RjJ2?= =?utf-8?B?a2dab1lGNFJOL01JUSs0MVFXZlpyQStyV21HdCtqMzJzU044eWxWenM4cG1p?= =?utf-8?B?YVRFUXRPTHRCVTFGU0pGUFlIcVhjVTRMaFdsSTVzNVZhdzA4blIyMXRMQUZl?= =?utf-8?B?aEdrMWt1ZjJQZ0tUY0NBckpwN1RHczZRM09CSUVaWmUvRzdFMjN5cXpRVWla?= =?utf-8?B?QnBKVDhXdTFqTmNjZnJpenhQbk4wYlZITkVHTUV2dWVjZWwwOHpwV1dxQmph?= =?utf-8?B?bFVTVS85dHpzYlp1WW9kS0xIc0lkVjJUbFFzdHQ1NVpleWc5NDdYZWZGY2Zp?= =?utf-8?B?Z0UreTEwV0RhQTRMWmVuQXArR1ZuaDlqcmVxUThhZHpYQTFjamxDT3MvWUxQ?= =?utf-8?B?aUpwdDZVWjJnOWRWeUJrTjVJN2s0T05ySFJOY01RczJKZ1FEZzh2M0l4RmRq?= =?utf-8?B?Q1k4VjJOQytnOXg0UklibFZvYUtEZ2JQY3lNdUp3bUpoYlJmdHFsQ3F0ZkNT?= =?utf-8?B?bGNmOHFCK1BkcXV5OXB2T1d3c3JPWENiN2JRdDArVzhZRmIyRVhvUmJiMHVJ?= =?utf-8?B?WmdCQW5sY3pDWGdvZ3dnQkc0bmpHemY5QksrNHNZTVRRZUNKSWxHMS90WVZP?= =?utf-8?B?aFNuaE11eVFOYVdib1Y4K085RkVEN2UvaDVsdEVkUHB0TWt4Z2Z1V1hXOFlx?= =?utf-8?B?cjhCdzlJUkJ3eUNLeVVieGtqbVVZdlZGT2ovL1N5L0x4T1h0RHJ3Y3lFL2RN?= =?utf-8?B?SjJMakdnTXBpVE1rNlArMG5sVGFJTGpaNFhOS0VHUDdadkJ3Ylg2bjZJMlNQ?= =?utf-8?B?SmhvV1JJU0dxOUhxcnovWUxDeEd4bnBRNE5zVWE4LzMrVlROcHZKTW40ZEF5?= =?utf-8?B?T0xvZTMwcTZoU1dvVjd0UWRXZUtsSVhWdHlnOTVVTzBKL2lOZFVEaDZhaTNp?= =?utf-8?B?L0tHYk10b3ZQU2RCYStlN1hUbmxRS3ZTQ3RLc01FaDFWNytnVW8wUEJhZTdS?= =?utf-8?B?V2sxbmxNRVZiNlRpTkNmc0ZOL21hL3ZXcWRMRzZnaVBEd0dsQWRCTHRydGRw?= =?utf-8?B?cXFjWjNya25iaEJWOFM3cHhPM2tFZzhBVUU1Qll6cmFQZWwvQVpxODZuZHNo?= =?utf-8?B?WXE5SzFFUGkrTG13ckg2UDNXMUZiVUFVYlBSdVEwWHR6YXNicUN2a2d2UjNn?= =?utf-8?B?MlBudllrR1hDa2VYeUpqeDA0VldUYW0xclNJelJVZWJMbzEvK2JPeDFQYkRX?= =?utf-8?B?UWtYZXo1ckhhcjBiSFdrSGQxeGUxZXB5ekxwM2FSNlc4YTVPd0NUZlZESEdN?= =?utf-8?Q?c1b3ZeNhm0aMSCCzbxk9odJ1T?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR11MB5946.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e10d47f-c88e-4569-3d56-08dab008a448 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Oct 2022 06:27:18.8302 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tvnajqI92USEp9VrSnI/WE+DWlY6J9cOOwurqM8qIsG4AQbAhjK/i8orwFD4IAJ7nq98bOc7ooshDGryS3ejuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB7069 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_NUMSUBJECT,KAM_SHORT,SPF_HELO_NONE,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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIb25ndGFvIExpdSA8Y3Jhenls aHRAZ21haWwuY29tPg0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTcsIDIwMjIgMTI6MDUgUE0N Cj4gVG86IEppYW5nLCBIYW9jaGVuIDxoYW9jaGVuLmppYW5nQGludGVsLmNvbT4NCj4gQ2M6IGdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnOyBMaXUsIEhvbmd0YW8gPGhvbmd0YW8ubGl1QGludGVsLmNv bT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAyLzZdIFN1cHBvcnQgSW50ZWwgQVZYLVZOTkktSU5U OA0KPiANCj4gT24gRnJpLCBPY3QgMTQsIDIwMjIgYXQgMzo1NyBQTSBIYW9jaGVuIEppYW5nIHZp YSBHY2MtcGF0Y2hlcyA8Z2NjLQ0KPiBwYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90ZToNCj4gPg0K PiA+IEZyb206IEtvbmcgTGluZ2xpbmcgPGxpbmdsaW5nLmtvbmdAaW50ZWwuY29tPg0KPiA+DQo+ ID4gZ2NjL0NoYW5nZUxvZw0KPiA+DQo+ID4gICAgICAgICAqIGNvbW1vbi9jb25maWcvaTM4Ni9j cHVpbmZvLmggKGdldF9hdmFpbGFibGVfZmVhdHVyZXMpOiBEZXRlY3QNCj4gPiAgICAgICAgIGF2 eHZubmlpbnQ4Lg0KPiA+ICAgICAgICAgKiBjb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24u Y2MNCj4gPiAgICAgICAgIChPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4X1NFVCk6IE5ldy4N Cj4gPiAgICAgICAgIChPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4X1VOU0VUKTogRGl0dG8u DQo+ID4gICAgICAgICAoaXg4Nl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIC1tYXZ4dm5uaWludDgu DQo+ID4gICAgICAgICAqIGNvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNwdWluZm8uaCAoZW51bSBw cm9jZXNzb3JfZmVhdHVyZXMpOg0KPiA+ICAgICAgICAgQWRkIEZFQVRVUkVfQVZYVk5OSUlOVDgu DQo+ID4gICAgICAgICAqIGNvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWlzYXMuaDogQWRkIElTQV9O QU1FX1RBQkxFX0VOVFJZIGZvcg0KPiA+ICAgICAgICAgYXZ4dm5uaWludDguDQo+ID4gICAgICAg ICAqIGNvbmZpZy5nY2M6IEFkZCBhdnh2bm5paW50OGludHJpbi5oLg0KPiA+ICAgICAgICAgKiBj b25maWcvaTM4Ni9hdnh2bm5paW50OGludHJpbi5oOiBOZXcgZmlsZS4NCj4gPiAgICAgICAgICog Y29uZmlnL2kzODYvY3B1aWQuaCAoYml0X0FWWFZOTklJTlQ4KTogTmV3Lg0KPiA+ICAgICAgICAg KiBjb25maWcvaTM4Ni9pMzg2LWJ1aWx0aW4uZGVmOiBBZGQgbmV3IGJ1aWx0aW5zLg0KPiA+ICAg ICAgICAgKiBjb25maWcvaTM4Ni9pMzg2LWMuY2MgKGl4ODZfdGFyZ2V0X21hY3Jvc19pbnRlcm5h bCk6IERlZmluZQ0KPiA+ICAgICAgICAgX19BVlhWTk5JSU5UOF9fLg0KPiA+ICAgICAgICAgKiBj b25maWcvaTM4Ni9pMzg2LW9wdGlvbnMuY2MgKGlzYTJfb3B0cyk6IEFkZCAtbWF2eHZubmlpbnQ4 Lg0KPiA+ICAgICAgICAgKGl4ODZfdmFsaWRfdGFyZ2V0X2F0dHJpYnV0ZV9pbm5lcl9wKTogSGFu ZGxlIGF2eHZubmlpbnQ4Lg0KPiA+ICAgICAgICAgKiBjb25maWcvaTM4Ni9pMzg2LWlzYS5kZWY6 IEFkZCBERUZfUFRBKEFWWFZOTklJTlQ4KSBOZXcuLg0KPiA+ICAgICAgICAgKiBjb25maWcvaTM4 Ni9pMzg2Lm9wdDogQWRkIG9wdGlvbiAtbWF2eHZubmlpbnQ4Lg0KPiA+ICAgICAgICAgKiBjb25m aWcvaTM4Ni9pbW1pbnRyaW4uaDogSW5jbHVkZSBhdnh2bm5paW50OGludHJpbi5oLg0KPiA+ICAg ICAgICAgKiBjb25maWcvaTM4Ni9zc2UubWQNCj4gPiAgICAgICAgICh2cGRwPHZwZG90cHJvZHR5 cGU+Xzxtb2RlPik6IE5ldyBkZWZpbmVfaW5zbi4NCj4gPiAgICAgICAgICogZG9jL2V4dGVuZC50 ZXhpOiBEb2N1bWVudCBhdnh2bm5paW50OC4NCj4gPiAgICAgICAgICogZG9jL2ludm9rZS50ZXhp OiBEb2N1bWVudCAtbWF2eHZubmlpbnQ4Lg0KPiA+ICAgICAgICAgKiBkb2Mvc291cmNlYnVpbGQu dGV4aTogRG9jdW1lbnQgdGFyZ2V0IGF2eHZubmlpbnQ4Lg0KPiA+DQo+ID4gZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cNCj4gPg0KPiA+ICAgICAgICAgKiBnKysuZGcvb3RoZXIvaTM4Ni0yLkM6IEFk ZCAtbWF2eHZubmlpbnQ4Lg0KPiA+ICAgICAgICAgKiBnKysuZGcvb3RoZXIvaTM4Ni0zLkM6IERp dHRvLg0KPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYXZ4LWNoZWNrLmg6IEFkZCBhdnh2 bm5paW50OCBjaGVjay4NCj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZS0xMi5jOiBB ZGQgLW1hdnh2bm5paW50OC4NCj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5j OiBEaXR0by4NCj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZS0xNC5jOiBEaXR0by4N Cj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZS0yMi5jOiBEaXR0by4NCj4gPiAgICAg ICAgICogZ2NjLnRhcmdldC9pMzg2L3NzZS0yMy5jOiBEaXR0by4NCj4gPiAgICAgICAgICogZ2Nj LnRhcmdldC9pMzg2L2Z1bmNzcGVjLTU2LmluYzogQWRkIG5ldyB0YXJnZXQgYXR0cmlidXRlLg0K PiA+ICAgICAgICAgKiBsaWIvdGFyZ2V0LXN1cHBvcnRzLmV4cA0KPiA+ICAgICAgICAgKGNoZWNr X2VmZmVjdGl2ZV90YXJnZXRfYXZ4dm5uaWludDgpOiBOZXcuDQo+ID4gICAgICAgICAqIGdjYy50 YXJnZXQvaTM4Ni9hdnh2bm5paW50OC0xLmM6IERpdHRvLg0KPiA+ICAgICAgICAgKiBnY2MudGFy Z2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJzc2QtMi5jOiBEaXR0by4NCj4gPiAgICAgICAgICog Z2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3Nkcy0yLmM6IERpdHRvLg0KPiA+ICAg ICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJzdWQtMi5jOiBEaXR0by4N Cj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3Vkcy0yLmM6 IERpdHRvLg0KPiA+ICAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJ1 dWQtMi5jOiBEaXR0by4NCj4gPiAgICAgICAgICogZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4 LXZwZHBidXVkcy0yLmM6IERpdHRvLg0KPiA+DQo+ID4gQ28tYXV0aG9yZWQtYnk6IEhvbmd5dSBX YW5nIDxob25neXUud2FuZ0BpbnRlbC5jb20+DQo+ID4gQ28tYXV0aG9yZWQtYnk6IEhhb2NoZW4g SmlhbmcgPGhhb2NoZW4uamlhbmdAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBnY2MvY29tbW9u L2NvbmZpZy9pMzg2L2NwdWluZm8uaCAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBnY2MvY29t bW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNjICAgICAgICAgfCAgMjIgKystDQo+ID4gIGdj Yy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1jcHVpbmZvLmggICAgICAgICB8ICAgMSArDQo+ID4g IGdjYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1pc2FzLmggICAgICAgICAgICB8ICAgMiArDQo+ ID4gIGdjYy9jb25maWcuZ2NjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQ0KPiA+ICBnY2MvY29uZmlnL2kzODYvYXZ4dm5uaWludDhpbnRyaW4uaCAgICAgICAgICAgfCAx MzggKysrKysrKysrKysrKysrKysrDQo+ID4gIGdjYy9jb25maWcvaTM4Ni9jcHVpZC5oICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gIGdjYy9jb25maWcvaTM4Ni9pMzg2LWJ1aWx0 aW4uZGVmICAgICAgICAgICAgICB8ICAxNCArKw0KPiA+ICBnY2MvY29uZmlnL2kzODYvaTM4Ni1j LmNjICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBnY2MvY29uZmlnL2kzODYvaTM4 Ni1pc2EuZGVmICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBnY2MvY29uZmlnL2kzODYv aTM4Ni1vcHRpb25zLmNjICAgICAgICAgICAgICAgfCAgIDQgKy0NCj4gPiAgZ2NjL2NvbmZpZy9p Mzg2L2kzODYub3B0ICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gPiAgZ2NjL2NvbmZp Zy9pMzg2L2ltbWludHJpbi5oICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiAgZ2NjL2Nv bmZpZy9pMzg2L3NzZS5tZCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKysNCj4gPiAg Z2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4g PiAgZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICst DQo+ID4gIGdjYy9kb2Mvc291cmNlYnVpbGQudGV4aSAgICAgICAgICAgICAgICAgICAgICB8ICAg MyArDQo+ID4gIGdjYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kzODYtMi5DICAgICAgICAgICB8 ICAgMiArLQ0KPiA+ICBnY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTMuQyAgICAgICAg ICAgfCAgIDIgKy0NCj4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4LWNoZWNr LmggICAgIHwgICAzICsNCj4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5u aWludDgtMS5jIHwgIDQzICsrKysrKw0KPiA+IC4uLi9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWlu dDgtdnBkcGJzc2QtMi5jICB8ICA3MiArKysrKysrKysNCj4gPiAuLi4vZ2NjLnRhcmdldC9pMzg2 L2F2eHZubmlpbnQ4LXZwZHBic3Nkcy0yLmMgfCAgNzIgKysrKysrKysrDQo+ID4gLi4uL2djYy50 YXJnZXQvaTM4Ni9hdnh2bm5paW50OC12cGRwYnN1ZC0yLmMgIHwgIDcyICsrKysrKysrKw0KPiA+ IC4uLi9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJzdWRzLTIuYyB8ICA3MiArKysr KysrKysNCj4gPiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBidXVkLTIuYyAg fCAgNzIgKysrKysrKysrDQo+ID4gLi4uL2djYy50YXJnZXQvaTM4Ni9hdnh2bm5paW50OC12cGRw YnV1ZHMtMi5jIHwgIDcyICsrKysrKysrKw0KPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9mdW5jc3BlYy01Ni5pbmMgfCAgIDIgKw0KPiA+ICBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2UtMTIuYyAgICAgICAgfCAgIDIgKy0NCj4gPiAgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlLTEzLmMgICAgICAgIHwgICAyICstDQo+ID4gIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3NzZS0xNC5jICAgICAgICB8ICAgMiArLQ0KPiA+ICBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMjIuYyAgICAgICAgfCAgIDQgKy0NCj4gPiAgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIzLmMgICAgICAgIHwgICAyICstDQo+ID4gIGdj Yy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAgICAgICAgICB8ICAxMiArKw0KPiA+ ICAzNCBmaWxlcyBjaGFuZ2VkLCA3MzggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pICBj cmVhdGUgbW9kZQ0KPiA+IDEwMDY0NCBnY2MvY29uZmlnL2kzODYvYXZ4dm5uaWludDhpbnRyaW4u aA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXZ4dm5uaWludDgtMS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3NkLTIuYw0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdnh2bm5paW50 OC12cGRwYnNzZHMtMi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3VkLTIuYw0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdnh2bm5paW50 OC12cGRwYnN1ZHMtMi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBidXVkLTIuYw0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdnh2bm5paW50 OC12cGRwYnV1ZHMtMi5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi9jb25maWcv aTM4Ni9jcHVpbmZvLmgNCj4gPiBiL2djYy9jb21tb24vY29uZmlnL2kzODYvY3B1aW5mby5oDQo+ ID4gaW5kZXggOWJiMjFjNmNhY2MuLmJlZDg4MDAzZjhlIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9j b21tb24vY29uZmlnL2kzODYvY3B1aW5mby5oDQo+ID4gKysrIGIvZ2NjL2NvbW1vbi9jb25maWcv aTM4Ni9jcHVpbmZvLmgNCj4gPiBAQCAtNzk1LDYgKzc5NSw4IEBAIGdldF9hdmFpbGFibGVfZmVh dHVyZXMgKHN0cnVjdCBfX3Byb2Nlc3Nvcl9tb2RlbA0KPiAqY3B1X21vZGVsLA0KPiA+ICAgICAg ICAgICAgIHNldF9mZWF0dXJlIChGRUFUVVJFX0FWWFZOTkkpOw0KPiA+ICAgICAgICAgICBpZiAo ZWF4ICYgYml0X0FWWElGTUEpDQo+ID4gICAgICAgICAgICAgc2V0X2ZlYXR1cmUgKEZFQVRVUkVf QVZYSUZNQSk7DQo+ID4gKyAgICAgICAgIGlmIChlZHggJiBiaXRfQVZYVk5OSUlOVDgpDQo+ID4g KyAgICAgICAgICAgc2V0X2ZlYXR1cmUgKEZFQVRVUkVfQVZYVk5OSUlOVDgpOw0KPiA+ICAgICAg ICAgfQ0KPiA+ICAgICAgICBpZiAoYXZ4NTEyX3VzYWJsZSkNCj4gPiAgICAgICAgIHsNCj4gPiBk aWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYw0KPiA+IGIv Z2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYw0KPiA+IGluZGV4IDRkZTc5MDZi MjQ3Li42YTJhN2UzZDI1YSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2 L2kzODYtY29tbW9uLmNjDQo+ID4gKysrIGIvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNv bW1vbi5jYw0KPiA+IEBAIC0xMDgsNiArMTA4LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCj4gPiAjZGVmaW5lIE9QVElPTl9NQVNLX0lTQTJf QU1YX1RJTEVfU0VUDQo+IE9QVElPTl9NQVNLX0lTQTJfQU1YX1RJTEUNCj4gPiAjZGVmaW5lIE9Q VElPTl9NQVNLX0lTQTJfQU1YX0lOVDhfU0VUDQo+IE9QVElPTl9NQVNLX0lTQTJfQU1YX0lOVDgN Cj4gPiAjZGVmaW5lIE9QVElPTl9NQVNLX0lTQTJfQU1YX0JGMTZfU0VUDQo+IE9QVElPTl9NQVNL X0lTQTJfQU1YX0JGMTYNCj4gPiArI2RlZmluZSBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4 X1NFVA0KPiBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4DQo+ID4NCj4gPiAgLyogU1NFNCBp bmNsdWRlcyBib3RoIFNTRTQuMSBhbmQgU1NFNC4yLiAtbXNzZTQgc2hvdWxkIGJlIHRoZSBzYW1l DQo+ID4gICAgIGFzIC1tc3NlNC4yLiAgKi8NCj4gPiBAQCAtMjE0LDcgKzIxNSw3IEBAIGFsb25n IHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQo+ID4gICAgKE9Q VElPTl9NQVNLX0lTQV9BVlgyIHwgT1BUSU9OX01BU0tfSVNBX0FWWDUxMkZfVU5TRVQpDQo+ICNk ZWZpbmUNCj4gPiBPUFRJT05fTUFTS19JU0EyX0FWWDJfVU5TRVQgXA0KPiA+ICAgIChPUFRJT05f TUFTS19JU0EyX0FWWElGTUFfVU5TRVQgfA0KPiBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklfVU5T RVQgXA0KPiA+IC0gICB8IE9QVElPTl9NQVNLX0lTQTJfQVZYNTEyRl9VTlNFVCkNCj4gPiArICAg fCBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4X1VOU0VUIHwNCj4gPiArIE9QVElPTl9NQVNL X0lTQTJfQVZYNTEyRl9VTlNFVCkNCj4gPiAgI2RlZmluZSBPUFRJT05fTUFTS19JU0FfQVZYNTEy Rl9VTlNFVCBcDQo+ID4gICAgKE9QVElPTl9NQVNLX0lTQV9BVlg1MTJGIHwgT1BUSU9OX01BU0tf SVNBX0FWWDUxMkNEX1VOU0VUDQo+IFwNCj4gPiAgICAgfCBPUFRJT05fTUFTS19JU0FfQVZYNTEy UEZfVU5TRVQgfA0KPiBPUFRJT05fTUFTS19JU0FfQVZYNTEyRVJfVU5TRVQNCj4gPiBcIEBAIC0y NzgsNiArMjc5LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdA0KPiA+IHNlZSAgI2RlZmluZSBPUFRJT05fTUFTS19JU0EyX0tMX1VOU0VUIFwNCj4gPiAg ICAoT1BUSU9OX01BU0tfSVNBMl9LTCB8IE9QVElPTl9NQVNLX0lTQTJfV0lERUtMX1VOU0VUKQ0K PiAjZGVmaW5lDQo+ID4gT1BUSU9OX01BU0tfSVNBMl9XSURFS0xfVU5TRVQgT1BUSU9OX01BU0tf SVNBMl9XSURFS0wNCj4gPiArI2RlZmluZSBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4X1VO U0VUDQo+ID4gK09QVElPTl9NQVNLX0lTQTJfQVZYVk5OSUlOVDgNCj4gPg0KPiA+ICAvKiBTU0U0 IGluY2x1ZGVzIGJvdGggU1NFNC4xIGFuZCBTU0U0LjIuICAtbW5vLXNzZTQgc2hvdWxkIHRoZSBz YW1lDQo+ID4gICAgIGFzIC1tbm8tc3NlNC4xLiAqLw0KPiA+IEBAIC0xMTQyLDYgKzExNDQsMjQg QEAgaXg4Nl9oYW5kbGVfb3B0aW9uIChzdHJ1Y3QgZ2NjX29wdGlvbnMgKm9wdHMsDQo+ID4gICAg ICAgICB9DQo+ID4gICAgICAgIHJldHVybiB0cnVlOw0KPiA+DQo+ID4gKyAgICBjYXNlIE9QVF9t YXZ4dm5uaWludDg6DQo+ID4gKyAgICAgIGlmICh2YWx1ZSkNCj4gPiArICAgICAgIHsNCj4gPiAr ICAgICAgICAgb3B0cy0+eF9peDg2X2lzYV9mbGFnczIgfD0gT1BUSU9OX01BU0tfSVNBMl9BVlhW Tk5JSU5UOF9TRVQ7DQo+ID4gKyAgICAgICAgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MyX2V4cGxp Y2l0IHw9DQo+ID4gKyAgICAgICAgICAgT1BUSU9OX01BU0tfSVNBMl9BVlhWTk5JSU5UOF9TRVQ7 DQo+ID4gKyAgICAgICAgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MgfD0gT1BUSU9OX01BU0tfSVNB X0FWWDJfU0VUOw0KPiA+ICsgICAgICAgICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzX2V4cGxpY2l0 IHw9IE9QVElPTl9NQVNLX0lTQV9BVlgyX1NFVDsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAg ZWxzZQ0KPiA+ICsgICAgICAgew0KPiA+ICsgICAgICAgICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdz MiAmPQ0KPiA+ICsgICAgICAgICAgIH5PUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4X1VOU0VU Ow0KPiA+ICsgICAgICAgICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMl9leHBsaWNpdCB8PQ0KPiA+ ICsgICAgICAgICAgIE9QVElPTl9NQVNLX0lTQTJfQVZYVk5OSUlOVDhfVU5TRVQ7DQo+ID4gKyAg ICAgICB9DQo+ID4gKyAgICAgIHJldHVybiB0cnVlOw0KPiA+ICsNCj4gPiAgICAgIGNhc2UgT1BU X21mbWE6DQo+ID4gICAgICAgIGlmICh2YWx1ZSkNCj4gPiAgICAgICAgIHsNCj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNwdWluZm8uaA0KPiA+IGIvZ2NjL2Nv bW1vbi9jb25maWcvaTM4Ni9pMzg2LWNwdWluZm8uaA0KPiA+IGluZGV4IDk2OGY5YTU2YTZjLi45 YTZiOTJmYWI3OSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYt Y3B1aW5mby5oDQo+ID4gKysrIGIvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNwdWluZm8u aA0KPiA+IEBAIC0yNDEsNiArMjQxLDcgQEAgZW51bSBwcm9jZXNzb3JfZmVhdHVyZXMNCj4gPiAg ICBGRUFUVVJFX1g4Nl82NF9WMywNCj4gPiAgICBGRUFUVVJFX1g4Nl82NF9WNCwNCj4gPiAgICBG RUFUVVJFX0FWWElGTUEsDQo+ID4gKyAgRkVBVFVSRV9BVlhWTk5JSU5UOCwNCj4gPiAgICBDUFVf RkVBVFVSRV9NQVgNCj4gPiAgfTsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9nY2MvY29tbW9uL2Nv bmZpZy9pMzg2L2kzODYtaXNhcy5oDQo+ID4gYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYt aXNhcy5oDQo+ID4gaW5kZXggYjA1YjRiYjhmMGQuLjhjMWYzNTEwNTZjIDEwMDY0NA0KPiA+IC0t LSBhL2djYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1pc2FzLmgNCj4gPiArKysgYi9nY2MvY29t bW9uL2NvbmZpZy9pMzg2L2kzODYtaXNhcy5oDQo+ID4gQEAgLTE3Niw0ICsxNzYsNiBAQCBJU0Ff TkFNRVNfVEFCTEVfU1RBUlQNCj4gPiAgICBJU0FfTkFNRVNfVEFCTEVfRU5UUlkoIng4Ni02NC12 MyIsIEZFQVRVUkVfWDg2XzY0X1YzLA0KPiBQX1g4Nl82NF9WMywgTlVMTCkNCj4gPiAgICBJU0Ff TkFNRVNfVEFCTEVfRU5UUlkoIng4Ni02NC12NCIsIEZFQVRVUkVfWDg2XzY0X1Y0LA0KPiBQX1g4 Nl82NF9WNCwgTlVMTCkNCj4gPiAgICBJU0FfTkFNRVNfVEFCTEVfRU5UUlkoImF2eGlmbWEiLCBG RUFUVVJFX0FWWElGTUEsIFBfTk9ORSwNCj4gPiAiLW1hdnhpZm1hIikNCj4gPiArICBJU0FfTkFN RVNfVEFCTEVfRU5UUlkoImF2eHZubmlpbnQ4IiwgRkVBVFVSRV9BVlhWTk5JSU5UOCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBQX05PTkUsICItbWF2eHZubmlpbnQ4IikNCj4gPiAgSVNB X05BTUVTX1RBQkxFX0VORA0KPiA+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9j b25maWcuZ2NjIGluZGV4DQo+ID4gMTIzNjVhYmJmODYuLjRkZjc4MjM4OTEwIDEwMDY0NA0KPiA+ IC0tLSBhL2djYy9jb25maWcuZ2NjDQo+ID4gKysrIGIvZ2NjL2NvbmZpZy5nY2MNCj4gPiBAQCAt NDIyLDcgKzQyMiw3IEBAIGlbMzQ1NjddODYtKi0qIHwgeDg2XzY0LSotKikNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgIGFteGJmMTZpbnRyaW4uaCB4ODZncHJpbnRyaW4uaCB1aW50cmludHJp bi5oDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICBocmVzZXRpbnRyaW4uaCBrZXlsb2NrZXJp bnRyaW4uaCBhdnh2bm5paW50cmluLmgNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgIG13YWl0 aW50cmluLmggYXZ4NTEyZnAxNmludHJpbi5oIGF2eDUxMmZwMTZ2bGludHJpbi5oDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICBhdnhpZm1haW50cmluLmgiDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBhdnhpZm1haW50cmluLmggYXZ4dm5uaWludDhpbnRyaW4uaCINCj4gPiAgICAgICAg IDs7DQo+ID4gIGlhNjQtKi0qKQ0KPiA+ICAgICAgICAgZXh0cmFfaGVhZGVycz1pYTY0aW50cmlu LmgNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2F2eHZubmlpbnQ4aW50cmluLmgN Cj4gPiBiL2djYy9jb25maWcvaTM4Ni9hdnh2bm5paW50OGludHJpbi5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uMzYyZTZmNjVjMmENCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2F2eHZubmlpbnQ4aW50cmluLmgN Cj4gPiBAQCAtMCwwICsxLDEzOCBAQA0KPiA+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ID4gKw0KPiA+ICsgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHQ0MuDQo+ID4gKw0KPiA+ICsgICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiA+ICsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiA+ICsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91ciBvcHRpb24pDQo+ID4gKyAgIGFueSBsYXRlciB2ZXJzaW9uLg0KPiA+ICsNCj4gPiArICAg R0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ ID4gKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQo+ID4gKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiArICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgIFVuZGVyIFNlY3Rpb24gNyBv ZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbA0KPiA+ICsgICBwZXJt aXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2 ZXJzaW9uDQo+ID4gKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uDQo+ID4gKw0KPiA+ICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQNCj4gPiArICAgYSBjb3B5IG9m IHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsNCj4gPiArICAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJl c3BlY3RpdmVseS4gIElmIG5vdCwgc2VlDQo+ID4gKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovDQo+ID4gKw0KPiA+ICsjaWYgIWRlZmluZWQgX0lNTUlOVFJJTl9IX0lOQ0xV REVEDQo+ID4gKyNlcnJvciAiTmV2ZXIgdXNlIDxhdnh2bm5paW50OHZsaW50cmluLmg+IGRpcmVj dGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4NCj4gaW5zdGVhZC4iDQo+ID4gKyNlbmRpZg0KPiA+ ICsNCj4gPiArI2lmbmRlZiBfQVZYVk5OSUlOVDhJTlRSSU5fSF9JTkNMVURFRCAjZGVmaW5lDQo+ ID4gK19BVlhWTk5JSU5UOElOVFJJTl9IX0lOQ0xVREVEDQo+ID4gKw0KPiA+ICsjaWYgIWRlZmlu ZWQoX19BVlhWTk5JSU5UOF9fKQ0KPiA+ICsjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMNCj4gPiAr I3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdnh2bm5paW50OCIpDQo+ID4gKyNkZWZpbmUgX19ESVNBQkxF X0FWWFZOTklJTlQ4X18NCj4gPiArI2VuZGlmIC8qIF9fQVZYVk5OSUlOVDhfXyAqLw0KPiA+ICsN Cj4gPiArZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkNCj4gPiArX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQo+ID4gK19tbV9k cGJzc2RfZXBpMzIgKF9fbTEyOGkgX19XLCBfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpIHsNCj4g PiArICByZXR1cm4gKF9fbTEyOGkpDQo+ID4gKyAgICBfX2J1aWx0aW5faWEzMl92cGRwYnNzZDEy OCAoKF9fdjRzaSkgX19XLCAoX192NHNpKSBfX0EsIChfX3Y0c2kpDQo+ID4gK19fQik7IH0NCj4g PiArDQo+ID4gK2V4dGVybiBfX2lubGluZSBfX20xMjhpDQo+ID4gK19fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiA+ICtf bW1fZHBic3Nkc19lcGkzMiAoX19tMTI4aSBfX1csIF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikg ew0KPiA+ICsgIHJldHVybiAoX19tMTI4aSkNCj4gPiArICAgIF9fYnVpbHRpbl9pYTMyX3ZwZHBi c3NkczEyOCAoKF9fdjRzaSkgX19XLCAoX192NHNpKSBfX0EsIChfX3Y0c2kpDQo+ID4gK19fQik7 IH0NCj4gPiArDQo+ID4gK2V4dGVybiBfX2lubGluZSBfX20xMjhpDQo+ID4gK19fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0K PiA+ICtfbW1fZHBic3VkX2VwaTMyIChfX20xMjhpIF9fVywgX19tMTI4aSBfX0EsIF9fbTEyOGkg X19CKSB7DQo+ID4gKyAgcmV0dXJuIChfX20xMjhpKQ0KPiA+ICsgICAgX19idWlsdGluX2lhMzJf dnBkcGJzdWQxMjggKChfX3Y0c2kpIF9fVywgKF9fdjRzaSkgX19BLCAoX192NHNpKQ0KPiA+ICtf X0IpOyB9DQo+ID4gKw0KPiA+ICtleHRlcm4gX19pbmxpbmUgX19tMTI4aQ0KPiA+ICtfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkNCj4gPiArX21tX2RwYnN1ZHNfZXBpMzIgKF9fbTEyOGkgX19XLCBfX20xMjhpIF9fQSwgX19t MTI4aSBfX0IpIHsNCj4gPiArICByZXR1cm4gKF9fbTEyOGkpDQo+ID4gKyAgICBfX2J1aWx0aW5f aWEzMl92cGRwYnN1ZHMxMjggKChfX3Y0c2kpIF9fVywgKF9fdjRzaSkgX19BLCAoX192NHNpKQ0K PiA+ICtfX0IpOyB9DQo+ID4gKw0KPiA+ICtleHRlcm4gX19pbmxpbmUgX19tMTI4aQ0KPiA+ICtf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkNCj4gPiArX21tX2RwYnV1ZF9lcGkzMiAoX19tMTI4aSBfX1csIF9fbTEyOGkgX19B LCBfX20xMjhpIF9fQikgew0KPiA+ICsgIHJldHVybiAoX19tMTI4aSkNCj4gPiArICAgIF9fYnVp bHRpbl9pYTMyX3ZwZHBidXVkMTI4ICgoX192NHNpKSBfX1csIChfX3Y0c2kpIF9fQSwgKF9fdjRz aSkNCj4gPiArX19CKTsgfQ0KPiA+ICsNCj4gPiArZXh0ZXJuIF9faW5saW5lIF9fbTEyOGkNCj4g PiArX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpDQo+ID4gK19tbV9kcGJ1dWRzX2VwaTMyIChfX20xMjhpIF9fVywgX19tMTI4 aSBfX0EsIF9fbTEyOGkgX19CKSB7DQo+ID4gKyAgcmV0dXJuIChfX20xMjhpKQ0KPiA+ICsgICAg X19idWlsdGluX2lhMzJfdnBkcGJ1dWRzMTI4ICgoX192NHNpKSBfX1csIChfX3Y0c2kpIF9fQSwg KF9fdjRzaSkNCj4gPiArX19CKTsgfQ0KPiA+ICsNCj4gPiArZXh0ZXJuIF9faW5saW5lIF9fbTI1 NmkNCj4gPiArX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpDQo+ID4gK19tbTI1Nl9kcGJzc2RfZXBpMzIgKF9fbTI1NmkgX19X LCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsNCj4gPiArICByZXR1cm4gKF9fbTI1NmkpDQo+ ID4gKyAgICBfX2J1aWx0aW5faWEzMl92cGRwYnNzZDI1NiAoKF9fdjhzaSkgX19XLCAoX192OHNp KSBfX0EsIChfX3Y4c2kpDQo+ID4gK19fQik7IH0NCj4gPiArDQo+ID4gK2V4dGVybiBfX2lubGlu ZSBfX20yNTZpDQo+ID4gK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiA+ICtfbW0yNTZfZHBic3Nkc19lcGkzMiAoX19t MjU2aSBfX1csIF9fbTI1NmkgX19BLCBfX20yNTZpIF9fQikgew0KPiA+ICsgIHJldHVybiAoX19t MjU2aSkNCj4gPiArICAgIF9fYnVpbHRpbl9pYTMyX3ZwZHBic3NkczI1NiAoKF9fdjhzaSkgX19X LCAoX192OHNpKSBfX0EsIChfX3Y4c2kpDQo+ID4gK19fQik7IH0NCj4gPiArDQo+ID4gK2V4dGVy biBfX2lubGluZSBfX20yNTZpDQo+ID4gK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiA+ICtfbW0yNTZfZHBic3VkX2Vw aTMyIChfX20yNTZpIF9fVywgX19tMjU2aSBfX0EsIF9fbTI1NmkgX19CKSB7DQo+ID4gKyAgcmV0 dXJuIChfX20yNTZpKQ0KPiA+ICsgICAgX19idWlsdGluX2lhMzJfdnBkcGJzdWQyNTYgKChfX3Y4 c2kpIF9fVywgKF9fdjhzaSkgX19BLCAoX192OHNpKQ0KPiA+ICtfX0IpOyB9DQo+ID4gKw0KPiA+ ICtleHRlcm4gX19pbmxpbmUgX19tMjU2aQ0KPiA+ICtfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gPiArX21tMjU2X2Rw YnN1ZHNfZXBpMzIgKF9fbTI1NmkgX19XLCBfX20yNTZpIF9fQSwgX19tMjU2aSBfX0IpIHsNCj4g PiArICByZXR1cm4gKF9fbTI1NmkpDQo+ID4gKyAgICBfX2J1aWx0aW5faWEzMl92cGRwYnN1ZHMy NTYgKChfX3Y4c2kpIF9fVywgKF9fdjhzaSkgX19BLCAoX192OHNpKQ0KPiA+ICtfX0IpOyB9DQo+ ID4gKw0KPiA+ICtleHRlcm4gX19pbmxpbmUgX19tMjU2aQ0KPiA+ICtfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gPiAr X21tMjU2X2RwYnV1ZF9lcGkzMiAoX19tMjU2aSBfX1csIF9fbTI1NmkgX19BLCBfX20yNTZpIF9f Qikgew0KPiA+ICsgIHJldHVybiAoX19tMjU2aSkNCj4gPiArICAgIF9fYnVpbHRpbl9pYTMyX3Zw ZHBidXVkMjU2ICgoX192OHNpKSBfX1csIChfX3Y4c2kpIF9fQSwgKF9fdjhzaSkNCj4gPiArX19C KTsgfQ0KPiA+ICsNCj4gPiArZXh0ZXJuIF9faW5saW5lIF9fbTI1NmkNCj4gPiArX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp DQo+ID4gK19tbTI1Nl9kcGJ1dWRzX2VwaTMyIChfX20yNTZpIF9fVywgX19tMjU2aSBfX0EsIF9f bTI1NmkgX19CKSB7DQo+ID4gKyAgcmV0dXJuIChfX20yNTZpKQ0KPiA+ICsgICAgX19idWlsdGlu X2lhMzJfdnBkcGJ1dWRzMjU2ICgoX192OHNpKSBfX1csIChfX3Y4c2kpIF9fQSwgKF9fdjhzaSkN Cj4gPiArX19CKTsgfQ0KPiA+ICsNCj4gPiArI2lmZGVmIF9fRElTQUJMRV9BVlhWTk5JSU5UOF9f DQo+ID4gKyN1bmRlZiBfX0RJU0FCTEVfQVZYVk5OSUlOVDhfXw0KPiA+ICsjcHJhZ21hIEdDQyBw b3Bfb3B0aW9ucw0KPiA+ICsjZW5kaWYgLyogX19ESVNBQkxFX0FWWFZOTklJTlQ4X18gKi8NCj4g PiArDQo+ID4gKyNlbmRpZiAvKiBfX0FWWFZOTklJTlQ4SU5UUklOX0hfSU5DTFVERUQgKi8NCj4g PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2NwdWlkLmggYi9nY2MvY29uZmlnL2kzODYv Y3B1aWQuaCBpbmRleA0KPiA+IDk4ODU2OTllZmQ1Li5mNWZhZDIyMTQ5YSAxMDA2NDQNCj4gPiAt LS0gYS9nY2MvY29uZmlnL2kzODYvY3B1aWQuaA0KPiA+ICsrKyBiL2djYy9jb25maWcvaTM4Ni9j cHVpZC5oDQo+ID4gQEAgLTQ5LDYgKzQ5LDcgQEANCj4gPiAgI2RlZmluZSBiaXRfUkRSTkQgICAg ICAoMSA8PCAzMCkNCj4gPg0KPiA+ICAvKiAlZWR4ICovDQo+ID4gKyNkZWZpbmUgYml0X0FWWFZO TklJTlQ4ICgxIDw8IDQpDQo+ID4gICNkZWZpbmUgYml0X0NNUFhDSEc4QiAgKDEgPDwgOCkNCj4g PiAgI2RlZmluZSBiaXRfQ01PViAgICAgICAoMSA8PCAxNSkNCj4gPiAgI2RlZmluZSBiaXRfTU1Y ICAgICAgICAgICAgICAgICgxIDw8IDIzKQ0KPiA+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kz ODYvaTM4Ni1idWlsdGluLmRlZg0KPiA+IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtYnVpbHRpbi5k ZWYNCj4gPiBpbmRleCA0YTg5MDk5YTAwZi4uZTZlZGFlNTcyOGIgMTAwNjQ0DQo+ID4gLS0tIGEv Z2NjL2NvbmZpZy9pMzg2L2kzODYtYnVpbHRpbi5kZWYNCj4gPiArKysgYi9nY2MvY29uZmlnL2kz ODYvaTM4Ni1idWlsdGluLmRlZg0KPiA+IEBAIC0yNjk2LDYgKzI2OTYsMjAgQEAgQkRFU0MgKE9Q VElPTl9NQVNLX0lTQV9BVlg1MTJWTk5JIHwNCj4gPiBPUFRJT05fTUFTS19JU0FfQVZYNTEyVkws IE9QVElPTl9NQVNLX0lTQTJfQSAgQkRFU0MNCj4gPiAoT1BUSU9OX01BU0tfSVNBX0FWWDUxMlZO TkkgfCBPUFRJT05fTUFTS19JU0FfQVZYNTEyVkwsIDAsDQo+ID4gQ09ERV9GT1JfdnBkcHdzc2Rz X3Y0c2lfbWFzaywNCj4gIl9fYnVpbHRpbl9pYTMyX3ZwZHB3c3Nkc192NHNpX21hc2siLA0KPiA+ IElYODZfQlVJTFRJTl9WUERQV1NTRFNWNFNJX01BU0ssIFVOS05PV04sIChpbnQpDQo+ID4gVjRT SV9GVFlQRV9WNFNJX1Y0U0lfVjRTSV9VUUkpICBCREVTQw0KPiAoT1BUSU9OX01BU0tfSVNBX0FW WDUxMlZOTkkgfA0KPiA+IE9QVElPTl9NQVNLX0lTQV9BVlg1MTJWTCwgMCwgQ09ERV9GT1JfdnBk cHdzc2RzX3Y0c2lfbWFza3osDQo+ID4gIl9fYnVpbHRpbl9pYTMyX3ZwZHB3c3Nkc192NHNpX21h c2t6IiwNCj4gPiBJWDg2X0JVSUxUSU5fVlBEUFdTU0RTVjRTSV9NQVNLWiwgVU5LTk9XTiwgKGlu dCkNCj4gPiBWNFNJX0ZUWVBFX1Y0U0lfVjRTSV9WNFNJX1VRSSkNCj4gPg0KPiA+ICsvKiBBVlhW Tk5JSU5UOCAqLw0KPiA+ICtCREVTQyAoMCwgT1BUSU9OX01BU0tfSVNBMl9BVlhWTk5JSU5UOCwN Cj4gQ09ERV9GT1JfdnBkcGJzc2RfdjhzaSwNCj4gPiArIl9fYnVpbHRpbl9pYTMyX3ZwZHBic3Nk MjU2IiwgSVg4Nl9CVUlMVElOX1ZQRFBCU1NEVjhTSSwNCj4gVU5LTk9XTiwNCj4gPiArKGludCkg VjhTSV9GVFlQRV9WOFNJX1Y4U0lfVjhTSSkgQkRFU0MgKDAsDQo+ID4gK09QVElPTl9NQVNLX0lT QTJfQVZYVk5OSUlOVDgsIENPREVfRk9SX3ZwZHBic3Nkc192OHNpLA0KPiA+ICsiX19idWlsdGlu X2lhMzJfdnBkcGJzc2RzMjU2IiwgSVg4Nl9CVUlMVElOX1ZQRFBCU1NEU1Y4U0ksDQo+IFVOS05P V04sDQo+ID4gKyhpbnQpIFY4U0lfRlRZUEVfVjhTSV9WOFNJX1Y4U0kpIEJERVNDICgwLA0KPiA+ ICtPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4LCBDT0RFX0ZPUl92cGRwYnN1ZF92OHNpLA0K PiA+ICsiX19idWlsdGluX2lhMzJfdnBkcGJzdWQyNTYiLCBJWDg2X0JVSUxUSU5fVlBEUEJTVURW OFNJLA0KPiBVTktOT1dOLA0KPiA+ICsoaW50KSBWOFNJX0ZUWVBFX1Y4U0lfVjhTSV9WOFNJKSBC REVTQyAoMCwNCj4gPiArT1BUSU9OX01BU0tfSVNBMl9BVlhWTk5JSU5UOCwgQ09ERV9GT1JfdnBk cGJzdWRzX3Y4c2ksDQo+ID4gKyJfX2J1aWx0aW5faWEzMl92cGRwYnN1ZHMyNTYiLCBJWDg2X0JV SUxUSU5fVlBEUEJTVURTVjhTSSwNCj4gVU5LTk9XTiwNCj4gPiArKGludCkgVjhTSV9GVFlQRV9W OFNJX1Y4U0lfVjhTSSkgQkRFU0MgKDAsDQo+ID4gK09QVElPTl9NQVNLX0lTQTJfQVZYVk5OSUlO VDgsIENPREVfRk9SX3ZwZHBidXVkX3Y4c2ksDQo+ID4gKyJfX2J1aWx0aW5faWEzMl92cGRwYnV1 ZDI1NiIsIElYODZfQlVJTFRJTl9WUERQQlVVRFY4U0ksDQo+IFVOS05PV04sDQo+ID4gKyhpbnQp IFY4U0lfRlRZUEVfVjhTSV9WOFNJX1Y4U0kpIEJERVNDICgwLA0KPiA+ICtPUFRJT05fTUFTS19J U0EyX0FWWFZOTklJTlQ4LCBDT0RFX0ZPUl92cGRwYnV1ZHNfdjhzaSwNCj4gPiArIl9fYnVpbHRp bl9pYTMyX3ZwZHBidXVkczI1NiIsIElYODZfQlVJTFRJTl9WUERQQlVVRFNWOFNJLA0KPiBVTktO T1dOLA0KPiA+ICsoaW50KSBWOFNJX0ZUWVBFX1Y4U0lfVjhTSV9WOFNJKSBCREVTQyAoMCwNCj4g PiArT1BUSU9OX01BU0tfSVNBMl9BVlhWTk5JSU5UOCwgQ09ERV9GT1JfdnBkcGJzc2RfdjRzaSwN Cj4gPiArIl9fYnVpbHRpbl9pYTMyX3ZwZHBic3NkMTI4IiwgSVg4Nl9CVUlMVElOX1ZQRFBCU1NE VjRTSSwNCj4gVU5LTk9XTiwNCj4gPiArKGludCkgVjRTSV9GVFlQRV9WNFNJX1Y0U0lfVjRTSSkg QkRFU0MgKDAsDQo+ID4gK09QVElPTl9NQVNLX0lTQTJfQVZYVk5OSUlOVDgsIENPREVfRk9SX3Zw ZHBic3Nkc192NHNpLA0KPiA+ICsiX19idWlsdGluX2lhMzJfdnBkcGJzc2RzMTI4IiwgSVg4Nl9C VUlMVElOX1ZQRFBCU1NEU1Y0U0ksDQo+IFVOS05PV04sDQo+ID4gKyhpbnQpIFY0U0lfRlRZUEVf VjRTSV9WNFNJX1Y0U0kpIEJERVNDICgwLA0KPiA+ICtPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJ TlQ4LCBDT0RFX0ZPUl92cGRwYnN1ZF92NHNpLA0KPiA+ICsiX19idWlsdGluX2lhMzJfdnBkcGJz dWQxMjgiLCBJWDg2X0JVSUxUSU5fVlBEUEJTVURWNFNJLA0KPiBVTktOT1dOLA0KPiA+ICsoaW50 KSBWNFNJX0ZUWVBFX1Y0U0lfVjRTSV9WNFNJKSBCREVTQyAoMCwNCj4gPiArT1BUSU9OX01BU0tf SVNBMl9BVlhWTk5JSU5UOCwgQ09ERV9GT1JfdnBkcGJzdWRzX3Y0c2ksDQo+ID4gKyJfX2J1aWx0 aW5faWEzMl92cGRwYnN1ZHMxMjgiLCBJWDg2X0JVSUxUSU5fVlBEUEJTVURTVjRTSSwNCj4gVU5L Tk9XTiwNCj4gPiArKGludCkgVjRTSV9GVFlQRV9WNFNJX1Y0U0lfVjRTSSkgQkRFU0MgKDAsDQo+ ID4gK09QVElPTl9NQVNLX0lTQTJfQVZYVk5OSUlOVDgsIENPREVfRk9SX3ZwZHBidXVkX3Y0c2ks DQo+ID4gKyJfX2J1aWx0aW5faWEzMl92cGRwYnV1ZDEyOCIsIElYODZfQlVJTFRJTl9WUERQQlVV RFY0U0ksDQo+IFVOS05PV04sDQo+ID4gKyhpbnQpIFY0U0lfRlRZUEVfVjRTSV9WNFNJX1Y0U0kp IEJERVNDICgwLA0KPiA+ICtPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4LCBDT0RFX0ZPUl92 cGRwYnV1ZHNfdjRzaSwNCj4gPiArIl9fYnVpbHRpbl9pYTMyX3ZwZHBidXVkczEyOCIsIElYODZf QlVJTFRJTl9WUERQQlVVRFNWNFNJLA0KPiBVTktOT1dOLA0KPiA+ICsoaW50KSBWNFNJX0ZUWVBF X1Y0U0lfVjRTSV9WNFNJKQ0KPiA+ICsNCj4gPiAgLyogVlBDTE1VTFFEUSAqLw0KPiA+ICBCREVT QyAoT1BUSU9OX01BU0tfSVNBX1ZQQ0xNVUxRRFEgfA0KPiBPUFRJT05fTUFTS19JU0FfQVZYNTEy VkwsIDAsDQo+ID4gQ09ERV9GT1JfdnBjbG11bHFkcV92MmRpLCAiX19idWlsdGluX2lhMzJfdnBj bG11bHFkcV92MmRpIiwNCj4gPiBJWDg2X0JVSUxUSU5fVlBDTE1VTFFEUTIsIFVOS05PV04sIChp bnQpDQo+IFYyRElfRlRZUEVfVjJESV9WMkRJX0lOVCkNCj4gPiBCREVTQyAoT1BUSU9OX01BU0tf SVNBX1ZQQ0xNVUxRRFEgfCBPUFRJT05fTUFTS19JU0FfQVZYLCAwLA0KPiA+IENPREVfRk9SX3Zw Y2xtdWxxZHFfdjRkaSwgIl9fYnVpbHRpbl9pYTMyX3ZwY2xtdWxxZHFfdjRkaSIsDQo+ID4gSVg4 Nl9CVUlMVElOX1ZQQ0xNVUxRRFE0LCBVTktOT1dOLCAoaW50KQ0KPiBWNERJX0ZUWVBFX1Y0RElf VjRESV9JTlQpDQo+ID4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWMuY2MgYi9n Y2MvY29uZmlnL2kzODYvaTM4Ni1jLmNjDQo+ID4gaW5kZXggMzQ5NGVjMDM1ZDUuLmE5YTM1YzBh MThhIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWMuY2MNCj4gPiArKysg Yi9nY2MvY29uZmlnL2kzODYvaTM4Ni1jLmNjDQo+ID4gQEAgLTYzNSw2ICs2MzUsOCBAQCBpeDg2 X3RhcmdldF9tYWNyb3NfaW50ZXJuYWwgKEhPU1RfV0lERV9JTlQNCj4gaXNhX2ZsYWcsDQo+ID4g ICAgICBkZWZfb3JfdW5kZWYgKHBhcnNlX2luLCAiX19BVlhWTk5JX18iKTsNCj4gPiAgICBpZiAo aXNhX2ZsYWcyICYgT1BUSU9OX01BU0tfSVNBMl9BVlhJRk1BKQ0KPiA+ICAgICAgZGVmX29yX3Vu ZGVmIChwYXJzZV9pbiwgIl9fQVZYSUZNQV9fIik7DQo+ID4gKyAgaWYgKGlzYV9mbGFnMiAmIE9Q VElPTl9NQVNLX0lTQTJfQVZYVk5OSUlOVDgpDQo+ID4gKyAgICBkZWZfb3JfdW5kZWYgKHBhcnNl X2luLCAiX19BVlhWTk5JSU5UOF9fIik7DQo+ID4gICAgaWYgKFRBUkdFVF9JQU1DVSkNCj4gPiAg ICAgIHsNCj4gPiAgICAgICAgZGVmX29yX3VuZGVmIChwYXJzZV9pbiwgIl9faWFtY3UiKTsgZGlm ZiAtLWdpdA0KPiA+IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtaXNhLmRlZiBiL2djYy9jb25maWcv aTM4Ni9pMzg2LWlzYS5kZWYgaW5kZXgNCj4gPiA2ZTAyNTRjZTQxOC4uYzk1YjkxN2M2Y2UgMTAw NjQ0DQo+ID4gLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtaXNhLmRlZg0KPiA+ICsrKyBiL2dj Yy9jb25maWcvaTM4Ni9pMzg2LWlzYS5kZWYNCj4gPiBAQCAtMTEwLDMgKzExMCw0IEBAIERFRl9Q VEEoV0lERUtMKQ0KPiA+ICBERUZfUFRBKEFWWFZOTkkpDQo+ID4gIERFRl9QVEEoQVZYNTEyRlAx NikNCj4gPiAgREVGX1BUQShBVlhJRk1BKQ0KPiA+ICtERUZfUFRBKEFWWFZOTklJTlQ4KQ0KPiA+ IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRpb25zLmNjDQo+ID4gYi9nY2Mv Y29uZmlnL2kzODYvaTM4Ni1vcHRpb25zLmNjIGluZGV4IDVmYWNiNjRjMmE4Li4zZTZkMDQ0MzNh Ng0KPiA+IDEwMDY0NA0KPiA+IC0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdGlvbnMuY2MN Cj4gPiArKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRpb25zLmNjDQo+ID4gQEAgLTIyNyw3 ICsyMjcsOCBAQCBzdGF0aWMgc3RydWN0IGl4ODZfdGFyZ2V0X29wdHMgaXNhMl9vcHRzW10gPQ0K PiA+ICAgIHsgIi1td2lkZWtsIiwgICAgICAgIE9QVElPTl9NQVNLX0lTQTJfV0lERUtMIH0sDQo+ ID4gICAgeyAiLW1hdnh2bm5pIiwgICAgICAgT1BUSU9OX01BU0tfSVNBMl9BVlhWTk5JIH0sDQo+ ID4gICAgeyAiLW1hdng1MTJmcDE2IiwgICAgT1BUSU9OX01BU0tfSVNBMl9BVlg1MTJGUDE2IH0s DQo+ID4gLSAgeyAiLW1hdnhpZm1hIiwgICAgICAgT1BUSU9OX01BU0tfSVNBMl9BVlhJRk1BIH0N Cj4gPiArICB7ICItbWF2eGlmbWEiLCAgICAgICBPUFRJT05fTUFTS19JU0EyX0FWWElGTUEgfSwN Cj4gPiArICB7ICItbWF2eHZubmlpbnQ4IiwgICBPUFRJT05fTUFTS19JU0EyX0FWWFZOTklJTlQ4 IH0NCj4gPiAgfTsNCj4gPiAgc3RhdGljIHN0cnVjdCBpeDg2X3RhcmdldF9vcHRzIGlzYV9vcHRz W10gPSAgeyBAQCAtMTA3NCw2ICsxMDc1LDcgQEANCj4gPiBpeDg2X3ZhbGlkX3RhcmdldF9hdHRy aWJ1dGVfaW5uZXJfcCAodHJlZSBmbmRlY2wsIHRyZWUgYXJncywgY2hhcg0KPiAqcF9zdHJpbmdz W10sDQo+ID4gICAgICBJWDg2X0FUVFJfSVNBICgiYXZ4dm5uaSIsICAgT1BUX21hdnh2bm5pKSwN Cj4gPiAgICAgIElYODZfQVRUUl9JU0EgKCJhdng1MTJmcDE2IiwgT1BUX21hdng1MTJmcDE2KSwN Cj4gPiAgICAgIElYODZfQVRUUl9JU0EgKCJhdnhpZm1hIiwgT1BUX21hdnhpZm1hKSwNCj4gPiAr ICAgIElYODZfQVRUUl9JU0EgKCJhdnh2bm5paW50OCIsIE9QVF9tYXZ4dm5uaWludDgpLA0KPiA+ DQo+ID4gICAgICAvKiBlbnVtIG9wdGlvbnMgKi8NCj4gPiAgICAgIElYODZfQVRUUl9FTlVNICgi ZnBtYXRoPSIsIE9QVF9tZnBtYXRoXyksIGRpZmYgLS1naXQNCj4gPiBhL2djYy9jb25maWcvaTM4 Ni9pMzg2Lm9wdCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCBpbmRleA0KPiA+IDM2ZTI4Yjcw NjNkLi41M2Q1MzRmNjM5MiAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5v cHQNCj4gPiArKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQNCj4gPiBAQCAtMTIxOSwzICsx MjE5LDggQEAgbWF2eGlmbWENCj4gPiAgVGFyZ2V0IE1hc2soSVNBMl9BVlhJRk1BKSBWYXIoaXg4 Nl9pc2FfZmxhZ3MyKSBTYXZlICBTdXBwb3J0IE1NWCwNCj4gPiBTU0UsIFNTRTIsIFNTRTMsIFNT U0UzLCBTU0U0LjEsIFNTRTQuMiwgQVZYLCBBVlgyLCBhbmQgIEFWWElGTUENCj4gPiBidWlsdC1p biBmdW5jdGlvbnMgYW5kIGNvZGUgZ2VuZXJhdGlvbi4NCj4gPiArDQo+ID4gK21hdnh2bm5paW50 OA0KPiA+ICtUYXJnZXQgTWFzayhJU0EyX0FWWFZOTklJTlQ4KSBWYXIoaXg4Nl9pc2FfZmxhZ3My KSBTYXZlIFN1cHBvcnQNCj4gTU1YLA0KPiA+ICtTU0UsIFNTRTIsIFNTRTMsIFNTU0UzLCBTU0U0 LjEsIFNTRTQuMiwgQVZYLCBBVlgyIGFuZA0KPiA+ICtBVlhWTk5JSU5UOCBidWlsdC1pbiBmdW5j dGlvbnMgYW5kIGNvZGUgZ2VuZXJhdGlvbi4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L2ltbWludHJpbi5oIGIvZ2NjL2NvbmZpZy9pMzg2L2ltbWludHJpbi5oDQo+ID4gaW5kZXgg ZTlkNGU5NzUyNDMuLmRkZWEyNDlkMDliIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9jb25maWcvaTM4 Ni9pbW1pbnRyaW4uaA0KPiA+ICsrKyBiL2djYy9jb25maWcvaTM4Ni9pbW1pbnRyaW4uaA0KPiA+ IEBAIC00Niw2ICs0Niw4IEBADQo+ID4NCj4gPiAgI2luY2x1ZGUgPGF2eGlmbWFpbnRyaW4uaD4N Cj4gPg0KPiA+ICsjaW5jbHVkZSA8YXZ4dm5uaWludDhpbnRyaW4uaD4NCj4gPiArDQo+ID4gICNp bmNsdWRlIDxhdngyaW50cmluLmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUgPGF2eDUxMmZpbnRyaW4u aD4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZCBiL2djYy9jb25maWcv aTM4Ni9zc2UubWQgaW5kZXgNCj4gPiAzMzEzNDc1NjllYS4uNDk0OTBhMjEzZWEgMTAwNjQ0DQo+ ID4gLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZA0KPiA+ICsrKyBiL2djYy9jb25maWcvaTM4 Ni9zc2UubWQNCj4gPiBAQCAtMjAwLDYgKzIwMCwxMyBAQA0KPiA+ICAgIFVOU1BFQ19DT01QTEVY X0ZDTVVMDQo+ID4gICAgVU5TUEVDX0NPTVBMRVhfTUFTSw0KPiA+DQo+ID4gKyAgOzsgRm9yIEFW WC1WTk5JLUlOVDggc3VwcG9ydA0KPiA+ICsgIFVOU1BFQ19WUERQQlNTRA0KPiA+ICsgIFVOU1BF Q19WUERQQlNTRFMNCj4gPiArICBVTlNQRUNfVlBEUEJTVUQNCj4gPiArICBVTlNQRUNfVlBEUEJT VURTDQo+ID4gKyAgVU5TUEVDX1ZQRFBCVVVEDQo+ID4gKyAgVU5TUEVDX1ZQRFBCVVVEUw0KPiA+ ICBdKQ0KPiBDYW4gd2UgaGF2ZSB1bmlmaWVkIG5hbWluZyBjb252ZXJzaW9uIGZvciB0aGUgVU5T UEVDcyBhbmQgdGhvc2UgaW4NCj4gQVZYNTEyKEFWWClfVk5OSSwgc2luY2UgdGhleSBoYXZlIHNp bWlsYXIgc2VtYW50aWNzLg0KPiBNYXliZSBjaGFuZ2UgdGhlIG9sZCBVTlNQRUNfVlBNQUREVUJT V0FDQ0QgdG8gdGhlICJuZXctc3R5bGUiDQo+IFVOU1BFQ19WUERQQlVTRD8gU2ltaWxhciBmb3Ig b3RoZXIgVU5TUEVDX1ZQTUFERCoqKi4NCkkgc3VwcG9zZSB3ZSBjYW4gZG8gdGhhdCBpbiB0aGlz IHBhdGNoIHRvIGF2b2lkIGNvbmZ1c2lvbi4NCj4gPg0KPiA+ICAoZGVmaW5lX2NfZW51bSAidW5z cGVjdiIgWw0KPiA+IEBAIC0yOTI0MSwzICsyOTI0OCwyNyBAQA0KPiA+ICAgICAgZ2NjX3VucmVh Y2hhYmxlICgpOw0KPiA+ICAgIERPTkU7DQo+ID4gIH0pDQo+ID4gKw0KPiA+ICsoZGVmaW5lX2lu dF9pdGVyYXRvciBWUERPVFBST0QNCj4gPiArICBbVU5TUEVDX1ZQRFBCU1NEDQo+ID4gKyAgIFVO U1BFQ19WUERQQlNTRFMNCj4gPiArICAgVU5TUEVDX1ZQRFBCU1VEDQo+ID4gKyAgIFVOU1BFQ19W UERQQlNVRFMNCj4gPiArICAgVU5TUEVDX1ZQRFBCVVVEDQo+ID4gKyAgIFVOU1BFQ19WUERQQlVV RFNdKQ0KPiA+ICsNCj4gPiArKGRlZmluZV9pbnRfYXR0ciB2cGRvdHByb2R0eXBlDQo+ID4gKyAg WyhVTlNQRUNfVlBEUEJTU0QgImJzc2QiKSAoVU5TUEVDX1ZQRFBCU1NEUyAiYnNzZHMiKQ0KPiA+ ICsgICAoVU5TUEVDX1ZQRFBCU1VEICJic3VkIikgKFVOU1BFQ19WUERQQlNVRFMgImJzdWRzIikN Cj4gPiArICAgKFVOU1BFQ19WUERQQlVVRCAiYnV1ZCIpIChVTlNQRUNfVlBEUEJVVURTICJidXVk cyIpXSkNCj4gPiArDQo+ID4gKyhkZWZpbmVfaW5zbiAidnBkcDx2cGRvdHByb2R0eXBlPl88bW9k ZT4iDQo+ID4gKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vkk0X0FWWCAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXgiKQ0KPiA+ICsgICAgICAgKHVuc3BlYzpWSTRfQVZYDQo+ID4gKyAgICAgICAgIFso bWF0Y2hfb3BlcmFuZDpWSTRfQVZYIDEgInJlZ2lzdGVyX29wZXJhbmQiICIwIikNCj4gPiArICAg ICAgICAgIChtYXRjaF9vcGVyYW5kOlZJNF9BVlggMiAicmVnaXN0ZXJfb3BlcmFuZCIgIngiKQ0K PiA+ICsgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6Vkk0X0FWWCAzICJub25pbW1lZGlhdGVfb3Bl cmFuZCIgInhtIildDQo+ID4gKyAgICAgICAgIFZQRE9UUFJPRCkpXQ0KPiA+ICsgICJUQVJHRVRf QVZYVk5OSUlOVDgiDQo+ID4gKyAgInZwZHA8dnBkb3Rwcm9kdHlwZT5cdHslMywgJTIsICUwfCUw LCAlMiwgJTN9Ig0KPiA+ICsgICBbKHNldF9hdHRyICJwcmVmaXgiICJ2ZXgiKV0pDQo+ID4gZGlm ZiAtLWdpdCBhL2djYy9kb2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpIGluZGV4 DQo+ID4gZWRlY2Y1YzAwNzAuLjlhOGRlOWZjMjI2IDEwMDY0NA0KPiA+IC0tLSBhL2djYy9kb2Mv ZXh0ZW5kLnRleGkNCj4gPiArKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpDQo+ID4gQEAgLTcwNjUs NiArNzA2NSwxMSBAQCBFbmFibGUvZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgQVZYVk5O SQ0KPiBpbnN0cnVjdGlvbnMuDQo+ID4gIEBjaW5kZXggQGNvZGV7dGFyZ2V0KCJhdnhpZm1hIil9 IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2DQo+ID4gRW5hYmxlL2Rpc2FibGUgdGhlIGdlbmVyYXRp b24gb2YgdGhlIEFWWElGTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ID4gK0BpdGVtIGF2eHZubmlp bnQ4DQo+ID4gK0BpdGVteCBuby1hdnh2bm5paW50OA0KPiA+ICtAY2luZGV4IEBjb2Rle3Rhcmdl dCgiYXZ4dm5uaWludDgiKX0gZnVuY3Rpb24gYXR0cmlidXRlLCB4ODYNCj4gPiArRW5hYmxlL2Rp c2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIEFWWFZOTklJTlQ4IGluc3RydWN0aW9ucy4NCj4g PiArDQo+ID4gIEBpdGVtIGNsZA0KPiA+ICBAaXRlbXggbm8tY2xkDQo+ID4gIEBjaW5kZXggQGNv ZGV7dGFyZ2V0KCJjbGQiKX0gZnVuY3Rpb24gYXR0cmlidXRlLCB4ODYgZGlmZiAtLWdpdA0KPiA+ IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkgaW5kZXgNCj4gPiA4 ODZmYzFkMDE2NC4uZDRmZjc1NDliZjMgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL2RvYy9pbnZva2Uu dGV4aQ0KPiA+ICsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkNCj4gPiBAQCAtMTQzNiw3ICsxNDM2 LDcgQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4NCj4gPiAgLW1hdng1MTI0Zm1h cHMgIC1tYXZ4NTEydm5uaSAgLW1hdng1MTI0dm5uaXcgIC1tcHJmY2h3ICAtbXJkcGlkDQo+IEBn b2wNCj4gPiAtbXJkc2VlZCAgLW1zZ3ggLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUg LW10c3hsZHRya0Bnb2wNCj4gPiAtbWFteC10aWxlICAtbWFteC1pbnQ4ICAtbWFteC1iZjE2IC1t dWludHIgLW1ocmVzZXQgLW1hdnh2bm5pQGdvbA0KPiA+IC0tbWF2eDUxMmZwMTYgLW1hdnhpZm1h IEBnb2wNCj4gPiArLW1hdng1MTJmcDE2IC1tYXZ4aWZtYSAtbWF2eHZubmlpbnQ4IEBnb2wNCj4g PiAgLW1jbGRlbW90ZSAgLW1tcy1iaXRmaWVsZHMgIC1tbm8tYWxpZ24tc3RyaW5nb3BzDQo+ID4g LW1pbmxpbmUtYWxsLXN0cmluZ29wcyBAZ29sICAtbWlubGluZS1zdHJpbmdvcHMtZHluYW1pY2Fs bHkNCj4gPiAtbXN0cmluZ29wLXN0cmF0ZWd5PUB2YXJ7YWxnfSBAZ29sICAtbWtsIC1td2lkZWts IEBnb2wgQEAgLTMyODk2LDYNCj4gPiArMzI4OTYsOSBAQCBwcmVmZXJyZWQgYWxpZ25tZW50IHRv IEBvcHRpb257LW1wcmVmZXJyZWQtc3RhY2stDQo+IGJvdW5kYXJ5PTJ9Lg0KPiA+ICBAbmVlZCAy MDANCj4gPiAgQGl0ZW14IC1tYXZ4aWZtYQ0KPiA+ICBAb3BpbmRleCBtYXZ4aWZtYQ0KPiA+ICtA bmVlZCAyMDANCj4gPiArQGl0ZW14IC1tYXZ4dm5uaWludDgNCj4gPiArQG9waW5kZXggbWF2eHZu bmlpbnQ4DQo+ID4gIFRoZXNlIHN3aXRjaGVzIGVuYWJsZSB0aGUgdXNlIG9mIGluc3RydWN0aW9u cyBpbiB0aGUgTU1YLCBTU0UsICBTU0UyLA0KPiA+IFNTRTMsIFNTU0UzLCBTU0U0LCBTU0U0QSwg U1NFNC4xLCBTU0U0LjIsIEFWWCwgQVZYMiwgQVZYNTEyRiwNCj4gPiBBVlg1MTJQRiwgIEFWWDUx MkVSLCBBVlg1MTJDRCwgQVZYNTEyVkwsIEFWWDUxMkJXLCBBVlg1MTJEUSwNCj4gPiBBVlg1MTJJ Rk1BLCBBVlg1MTJWQk1JLCBTSEEsIEBAIC0zMjkwNiw4ICszMjkwOSw4IEBAIFhTQVZFT1BULA0K PiBYU0FWRUMsDQo+ID4gWFNBVkVTLCBSVE0sIEhMRSwgVEJNLCBNV0FJVFgsIENMWkVSTywgUEtV LCBBVlg1MTJWQk1JMiwgIEdGTkksDQo+IFZBRVMsDQo+ID4gV0FJVFBLRywgVlBDTE1VTFFEUSwg QVZYNTEyQklUQUxHLCBNT1ZESVJJLCBNT1ZESVI2NEIsDQo+IEFWWDUxMkJGMTYsDQo+ID4gRU5R Q01ELCBBVlg1MTJWUE9QQ05URFEsIEFWWDUxMjRGTUFQUywgQVZYNTEyVk5OSSwNCj4gQVZYNTEy NFZOTklXLA0KPiA+IFNFUklBTElaRSwgIFVJTlRSLCBIUkVTRVQsIEFNWFRJTEUsIEFNWElOVDgs IEFNWEJGMTYsIEtMLCBXSURFS0wsDQo+ID4gQVZYVk5OSSwgQVZYNTEyRlAxNiwgLUFWWElGTUEg b3IgQ0xERU1PVEUgZXh0ZW5kZWQgaW5zdHJ1Y3Rpb24gc2V0cy4NCj4gRWFjaCBoYXMgYSBjb3Jy ZXNwb25kaW5nIC1Ab3B0aW9uey1tbm8tfSBvcHRpb24gdG8gZGlzYWJsZSB1c2Ugb2YgdGhlc2UN Cj4gaW5zdHJ1Y3Rpb25zLg0KPiA+ICtBVlhJRk1BLCBBVlhWTk5JSU5UOCBvciBDTERFTU9URSBl eHRlbmRlZCBpbnN0cnVjdGlvbiBzZXRzLiBFYWNoDQo+IGhhcw0KPiA+ICthIGNvcnJlc3BvbmRp bmcgQG9wdGlvbnstbW5vLX0gb3B0aW9uIHRvIGRpc2FibGUgdXNlIG9mIHRoZXNlDQo+IGluc3Ry dWN0aW9ucy4NCj4gPg0KPiA+ICBUaGVzZSBleHRlbnNpb25zIGFyZSBhbHNvIGF2YWlsYWJsZSBh cyBidWlsdC1pbiBmdW5jdGlvbnM6IHNlZQ0KPiA+ICBAcmVme3g4NiBCdWlsdC1pbiBGdW5jdGlv bnN9LCBmb3IgZGV0YWlscyBvZiB0aGUgZnVuY3Rpb25zIGVuYWJsZWQNCj4gPiBhbmQgZGlmZiAt LWdpdCBhL2djYy9kb2Mvc291cmNlYnVpbGQudGV4aSBiL2djYy9kb2Mvc291cmNlYnVpbGQudGV4 aQ0KPiA+IGluZGV4IDAxNzNhY2Y0YTY1Li5lMjFhMWQzODFlMCAxMDA2NDQNCj4gPiAtLS0gYS9n Y2MvZG9jL3NvdXJjZWJ1aWxkLnRleGkNCj4gPiArKysgYi9nY2MvZG9jL3NvdXJjZWJ1aWxkLnRl eGkNCj4gPiBAQCAtMjQ5Myw2ICsyNDkzLDkgQEAgVGFyZ2V0IHN1cHBvcnRzIHRoZSBleGVjdXRp b24gb2YNCj4gQGNvZGV7YXZ4NTEydnAyaW50ZXJzZWN0fSBpbnN0cnVjdGlvbnMuDQo+ID4gIEBp dGVtIGF2eGlmbWENCj4gPiAgVGFyZ2V0IHN1cHBvcnRzIHRoZSBleGVjdXRpb24gb2YgQGNvZGV7 YXZ4aWZtYX0gaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ID4gK0BpdGVtIGF2eHZubmlpbnQ4DQo+ID4g K1RhcmdldCBzdXBwb3J0cyB0aGUgZXhlY3V0aW9uIG9mIEBjb2Rle2F2eHZubmlpbnQ4fSBpbnN0 cnVjdGlvbnMuDQo+ID4gKw0KPiA+ICBAaXRlbSBhbXhfdGlsZQ0KPiA+ICBUYXJnZXQgc3VwcG9y dHMgdGhlIGV4ZWN1dGlvbiBvZiBAY29kZXthbXgtdGlsZX0gaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kzODYtMi5DDQo+ID4g Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTIuQw0KPiA+IGluZGV4IDUzODg2MDY3 NzliLi5lYmQwMWZlNDdiYyAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9v dGhlci9pMzg2LTIuQw0KPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kzODYt Mi5DDQo+ID4gQEAgLTEsNSArMSw1IEBADQo+ID4gIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLw0KPiA+IC0vKiB7IGRnLW9wdGlvbnMgIi1PIC1w ZWRhbnRpYy1lcnJvcnMgLW1hcmNoPWs4IC1tc3NlNGEgLW0zZG5vdyAtbWF2eA0KPiA+IC1tYXZ4 MiAtbWZtYTQgLW14b3AgLW1hZXMgLW1wY2xtdWwgLW1wb3BjbnQgLW1hYm0gLW1semNudCAtbWJt aSAtDQo+IG1ibWkyDQo+ID4gLW10Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAt bWZtYSAtbXJ0bSAtbXJkc2VlZCAtDQo+IG1wcmZjaHcNCj4gPiAtbWFkeCAtbWZ4c3IgLW14c2F2 ZW9wdCAtbWF2eDUxMmYgLW1hdng1MTJlciAtbWF2eDUxMmNkIC1tYXZ4NTEycGYNCj4gPiAtbXNo YSAtbXByZWZldGNod3QxIC1teHNhdmVjIC1teHNhdmVzIC1tY2xmbHVzaG9wdCAgLW1hdng1MTJk cQ0KPiA+IC1tYXZ4NTEyYncgLW1hdng1MTJ2bCAtbWF2eDUxMmlmbWEgLW1hdng1MTJ2Ym1pIC1t YXZ4NTEydmJtaTINCj4gPiAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAtbWF2eDUxMnZw b3BjbnRkcSAtbWNsd2IgLW1td2FpdHgNCj4gPiAtbWNsemVybyAtbXBrdSAtbXNneCAtbXJkcGlk IC1tZ2ZuaSAtbWF2eDUxMmJpdGFsZyAtbXBjb25maWcNCj4gPiAtbXdibm9pbnZkIC1tYXZ4NTEy YmYxNiAtbWVucWNtZCAtbWF2eDUxMnZwMmludGVyc2VjdCAtbXNlcmlhbGl6ZQ0KPiA+IC1tdHN4 bGR0cmsgLW1hbXgtdGlsZSAtbWFteC1pbnQ4IC1tYW14LWJmMTYgLW1rbCAtbXdpZGVrbCAtbWF2 eHZubmkNCj4gPiAtbWF2eDUxMmZwMTYgLW1hdnhpZm1hIiB9ICovDQo+ID4gKy8qIHsgZGctb3B0 aW9ucyAiLU8gLXBlZGFudGljLWVycm9ycyAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93IC1tYXZ4 DQo+ID4gKy1tYXZ4MiAtbWZtYTQgLW14b3AgLW1hZXMgLW1wY2xtdWwgLW1wb3BjbnQgLW1hYm0g LW1semNudCAtbWJtaQ0KPiA+ICstbWJtaTIgLW10Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5k IC1tZjE2YyAtbWZtYSAtbXJ0bSAtDQo+IG1yZHNlZWQNCj4gPiArLW1wcmZjaHcgLW1hZHggLW1m eHNyIC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEyZXIgLW1hdng1MTJjZA0KPiA+ICstbWF2 eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2ZWMgLW14c2F2ZXMgLW1jbGZsdXNob3B0 DQo+ID4gKy1tYXZ4NTEyZHEgLW1hdng1MTJidyAtbWF2eDUxMnZsIC1tYXZ4NTEyaWZtYSAtbWF2 eDUxMnZibWkNCj4gPiArLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5p dyAtbWF2eDUxMnZwb3BjbnRkcSAtDQo+IG1jbHdiDQo+ID4gKy1tbXdhaXR4IC1tY2x6ZXJvIC1t cGt1IC1tc2d4IC1tcmRwaWQgLW1nZm5pIC1tYXZ4NTEyYml0YWxnIC0NCj4gbXBjb25maWcNCj4g PiArLW13Ym5vaW52ZCAtbWF2eDUxMmJmMTYgLW1lbnFjbWQgLW1hdng1MTJ2cDJpbnRlcnNlY3Qg LW1zZXJpYWxpemUNCj4gPiArLW10c3hsZHRyayAtbWFteC10aWxlIC1tYW14LWludDggLW1hbXgt YmYxNiAtbWtsIC1td2lkZWtsIC1tYXZ4dm5uaQ0KPiA+ICstbWF2eDUxMmZwMTYgLW1hdnhpZm1h IC1tYXZ4dm5uaWludDgiIH0gKi8NCj4gPg0KPiA+ICAvKiBUZXN0IHRoYXQgeyx4LGUscCx0LHMs dyxhLGIsaX1tbWludHJpbi5oLCBtbTNkbm93LmgsIGZtYTRpbnRyaW4uaCwNCj4gPiAgICAgeG9w aW50cmluLmgsIGFibWludHJpbi5oLCBibWlpbnRyaW4uaCwgdGJtaW50cmluLmgsIGx3cGludHJp bi5oLA0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTMu Qw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3RoZXIvaTM4Ni0zLkMNCj4gPiBpbmRleCA4 NmNlZGQzZDMyZi4uYjY2NDk4ZjFkNGMgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvb3RoZXIvaTM4Ni0zLkMNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhl ci9pMzg2LTMuQw0KPiA+IEBAIC0xLDUgKzEsNSBAQA0KPiA+ICAvKiB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8NCj4gPiAtLyogeyBkZy1vcHRpb25z ICItTyAtZmtlZXAtaW5saW5lLWZ1bmN0aW9ucyAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93DQo+ ID4gLW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFi bSAtbWx6Y250IC0NCj4gbWJtaQ0KPiA+IC1tYm1pMiAtbXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1t cmRybmQgLW1mMTZjIC1tZm1hIC1tcnRtIC1tcmRzZWVkDQo+ID4gLW1wcmZjaHcgLW1hZHggLW1m eHNyIC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEyZXIgLW1hdng1MTJjZA0KPiA+IC1tYXZ4 NTEycGYgLW1zaGEgLW1wcmVmZXRjaHd0MSAtbXhzYXZlYyAtbXhzYXZlcyAtbWNsZmx1c2hvcHQN Cj4gPiAtbWF2eDUxMmRxIC1tYXZ4NTEyYncgLW1hdng1MTJ2bCAtbWF2eDUxMmlmbWEgLW1hdng1 MTJ2Ym1pDQo+ID4gLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAt bWF2eDUxMnZwb3BjbnRkcSAtDQo+IG1jbHdiDQo+ID4gLW1td2FpdHggLW1jbHplcm8gLW1wa3Ug LW1zZ3ggLW1yZHBpZCAtbWdmbmkgLW1hdng1MTJiaXRhbGcgLW1wY29uZmlnDQo+ID4gLW13Ym5v aW52ZCAtbWF2eDUxMmJmMTYgLW1lbnFjbWQgLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxp emUNCj4gPiAtbXRzeGxkdHJrIC1tYW14LXRpbGUgLW1hbXgtaW50OCAtbWFteC1iZjE2IC1ta2wg LW13aWRla2wgLW1hdnh2bm5pDQo+ID4gLW1hdng1MTJmcDE2IC1tYXZ4aWZtYSIgfSAqLw0KPiA+ ICsvKiB7IGRnLW9wdGlvbnMgIi1PIC1ma2VlcC1pbmxpbmUtZnVuY3Rpb25zIC1tYXJjaD1rOCAt bXNzZTRhIC1tM2Rub3cNCj4gPiArLW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBj bG11bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC0NCj4gbWJtaQ0KPiA+ICstbWJtaTIgLW10Ym0g LW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtbWZtYSAtbXJ0bSAtDQo+IG1yZHNlZWQN Cj4gPiArLW1wcmZjaHcgLW1hZHggLW1meHNyIC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEy ZXIgLW1hdng1MTJjZA0KPiA+ICstbWF2eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2 ZWMgLW14c2F2ZXMgLW1jbGZsdXNob3B0DQo+ID4gKy1tYXZ4NTEyZHEgLW1hdng1MTJidyAtbWF2 eDUxMnZsIC1tYXZ4NTEyaWZtYSAtbWF2eDUxMnZibWkNCj4gPiArLW1hdng1MTJ2Ym1pMiAtbWF2 eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAtbWF2eDUxMnZwb3BjbnRkcSAtDQo+IG1jbHdiDQo+ ID4gKy1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQgLW1nZm5pIC1tYXZ4NTEy Yml0YWxnIC0NCj4gbXBjb25maWcNCj4gPiArLW13Ym5vaW52ZCAtbWF2eDUxMmJmMTYgLW1lbnFj bWQgLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUNCj4gPiArLW10c3hsZHRyayAtbWFt eC10aWxlIC1tYW14LWludDggLW1hbXgtYmYxNiAtbWtsIC1td2lkZWtsIC1tYXZ4dm5uaQ0KPiA+ ICstbWF2eDUxMmZwMTYgLW1hdnhpZm1hIC1tYXZ4dm5uaWludDgiIH0gKi8NCj4gPg0KPiA+ICAv KiBUZXN0IHRoYXQgeyx4LGUscCx0LHMsdyxhLGIsaX1tbWludHJpbi5oLCBtbTNkbm93LmgsIGZt YTRpbnRyaW4uaCwNCj4gPiAgICAgeG9waW50cmluLmgsIGFibWludHJpbi5oLCBibWlpbnRyaW4u aCwgdGJtaW50cmluLmgsIGx3cGludHJpbi5oLA0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdngtY2hlY2suaA0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXZ4LWNoZWNrLmgNCj4gPiBpbmRleCAyNGVlNmFiNGVmZC4uNzc1MDdjYTJl ZGMgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4LWNo ZWNrLmgNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngtY2hlY2su aA0KPiA+IEBAIC0yNSw2ICsyNSw5IEBAIG1haW4gKCkNCj4gPiAgICAgICAgJiYgYXZ4X29zX3N1 cHBvcnQgKCkNCj4gPiAgI2lmZGVmIEFWWElGTUENCj4gPiAgICAgICAgJiYgX19idWlsdGluX2Nw dV9zdXBwb3J0cyAoImF2eGlmbWEiKQ0KPiA+ICsjZW5kaWYNCj4gPiArI2lmZGVmIEFWWFZOTklJ TlQ4DQo+ID4gKyAgICAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdnh2bm5paW50OCIp DQo+ID4gICNlbmRpZg0KPiA+ICAgICAgICApDQo+ID4gICAgICB7DQo+ID4gZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LTEuYw0KPiA+IGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtMS5jDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uZDY5NDJmMzRkNmUNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5u aWludDgtMS5jDQo+ID4gQEAgLTAsMCArMSw0MyBAQA0KPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlvbnMgIi1tYXZ4dm5uaWludDggLU8yIiB9ICovDQo+ID4g Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBkcGJzc2RcWw0KPiA+ICtc XHRcXStcW15ce1xuXF0qJXltbVxbMC05XF0rXFteXG5ccl0qJXltbVxbMC0NCj4gOVxdK1xbXlxu XHJdKiV5bW1cWzAtOVxdDQo+ID4gKysoPzpcbnxcWyBcXHRcXSsjKSIgMSB9IH0gKi8NCj4gPiAr LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cGRwYnNzZFxbDQo+ID4gK1xc dFxdK1xbXlx7XG5cXSoleG1tXFswLTlcXStcW15cblxyXSoleG1tXFswLQ0KPiA5XF0rXFteXG5c cl0qJXhtbVxbMC05XF0NCj4gPiArKyg/OlxufFxbIFxcdFxdKyMpIiAxIH0gfSAqLw0KPiA+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwZHBic3Nkc1xbDQo+ID4gK1xc dFxdK1xbXlx7XG5cXSoleW1tXFswLTlcXStcW15cblxyXSoleW1tXFswLQ0KPiA5XF0rXFteXG5c cl0qJXltbVxbMC05XF0NCj4gPiArKyg/OlxufFxbIFxcdFxdKyMpIiAxIH0gfSAqLw0KPiA+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwZHBic3Nkc1xbDQo+ID4gK1xc dFxdK1xbXlx7XG5cXSoleG1tXFswLTlcXStcW15cblxyXSoleG1tXFswLQ0KPiA5XF0rXFteXG5c cl0qJXhtbVxbMC05XF0NCj4gPiArKyg/OlxufFxbIFxcdFxdKyMpIiAxIH0gfSAqLw0KPiA+ICsv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwZHBic3VkXFsNCj4gPiArXFx0 XF0rXFteXHtcblxdKiV5bW1cWzAtOVxdK1xbXlxuXHJdKiV5bW1cWzAtDQo+IDlcXStcW15cblxy XSoleW1tXFswLTlcXQ0KPiA+ICsrKD86XG58XFsgXFx0XF0rIykiIDEgfSB9ICovDQo+ID4gKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBkcGJzdWRcWw0KPiA+ICtcXHRc XStcW15ce1xuXF0qJXhtbVxbMC05XF0rXFteXG5ccl0qJXhtbVxbMC0NCj4gOVxdK1xbXlxuXHJd KiV4bW1cWzAtOVxdDQo+ID4gKysoPzpcbnxcWyBcXHRcXSsjKSIgMSB9IH0gKi8NCj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cGRwYnN1ZHNcWw0KPiA+ICtcXHRc XStcW15ce1xuXF0qJXltbVxbMC05XF0rXFteXG5ccl0qJXltbVxbMC0NCj4gOVxdK1xbXlxuXHJd KiV5bW1cWzAtOVxdDQo+ID4gKysoPzpcbnxcWyBcXHRcXSsjKSIgMSB9IH0gKi8NCj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cGRwYnN1ZHNcWw0KPiA+ICtcXHRc XStcW15ce1xuXF0qJXhtbVxbMC05XF0rXFteXG5ccl0qJXhtbVxbMC0NCj4gOVxdK1xbXlxuXHJd KiV4bW1cWzAtOVxdDQo+ID4gKysoPzpcbnxcWyBcXHRcXSsjKSIgMSB9IH0gKi8NCj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cGRwYnV1ZFxbDQo+ID4gK1xcdFxd K1xbXlx7XG5cXSoleW1tXFswLTlcXStcW15cblxyXSoleW1tXFswLQ0KPiA5XF0rXFteXG5ccl0q JXltbVxbMC05XF0NCj4gPiArKyg/OlxufFxbIFxcdFxdKyMpIiAxIH0gfSAqLw0KPiA+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwZHBidXVkXFsNCj4gPiArXFx0XF0r XFteXHtcblxdKiV4bW1cWzAtOVxdK1xbXlxuXHJdKiV4bW1cWzAtDQo+IDlcXStcW15cblxyXSol eG1tXFswLTlcXQ0KPiA+ICsrKD86XG58XFsgXFx0XF0rIykiIDEgfSB9ICovDQo+ID4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBkcGJ1dWRzXFsNCj4gPiArXFx0XF0r XFteXHtcblxdKiV5bW1cWzAtOVxdK1xbXlxuXHJdKiV5bW1cWzAtDQo+IDlcXStcW15cblxyXSol eW1tXFswLTlcXQ0KPiA+ICsrKD86XG58XFsgXFx0XF0rIykiIDEgfSB9ICovDQo+ID4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBkcGJ1dWRzXFsNCj4gPiArXFx0XF0r XFteXHtcblxdKiV4bW1cWzAtOVxdK1xbXlxuXHJdKiV4bW1cWzAtDQo+IDlcXStcW15cblxyXSol eG1tXFswLTlcXQ0KPiA+ICsrKD86XG58XFsgXFx0XF0rIykiIDEgfSB9ICovDQo+ID4gKw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPGltbWludHJpbi5oPg0KPiA+ICsNCj4gPiArdm9sYXRpbGUgX19t MjU2aSB4LHksejsNCj4gPiArdm9sYXRpbGUgX19tMTI4aSB4Xyx5Xyx6XzsNCj4gPiArdm9sYXRp bGUgX19tbWFzazggbTsNCj4gPiArDQo+ID4gK3ZvaWQgZXh0ZXJuDQo+ID4gK2F2eHZubmlpbnQ4 X3Rlc3QgKHZvaWQpDQo+ID4gK3sNCj4gPiArICB4ID0gX21tMjU2X2RwYnNzZF9lcGkzMiAoeCwg eSwgeik7DQo+ID4gKyAgeF8gPSBfbW1fZHBic3NkX2VwaTMyICh4XywgeV8sIHpfKTsNCj4gPiAr DQo+ID4gKyAgeCA9IF9tbTI1Nl9kcGJzc2RzX2VwaTMyICh4LCB5LCB6KTsgIHhfID0gX21tX2Rw YnNzZHNfZXBpMzIgKHhfLA0KPiA+ICsgeV8sIHpfKTsNCj4gPiArDQo+ID4gKyAgeCA9IF9tbTI1 Nl9kcGJzdWRfZXBpMzIgKHgsIHksIHopOw0KPiA+ICsgIHhfID0gX21tX2RwYnN1ZF9lcGkzMiAo eF8sIHlfLCB6Xyk7DQo+ID4gKw0KPiA+ICsgIHggPSBfbW0yNTZfZHBic3Vkc19lcGkzMiAoeCwg eSwgeik7ICB4XyA9IF9tbV9kcGJzdWRzX2VwaTMyICh4XywNCj4gPiArIHlfLCB6Xyk7DQo+ID4g Kw0KPiA+ICsgIHggPSBfbW0yNTZfZHBidXVkX2VwaTMyICh4LCB5LCB6KTsNCj4gPiArICB4XyA9 IF9tbV9kcGJ1dWRfZXBpMzIgKHhfLCB5Xywgel8pOw0KPiA+ICsNCj4gPiArICB4ID0gX21tMjU2 X2RwYnV1ZHNfZXBpMzIgKHgsIHksIHopOw0KPiA+ICsgIHhfID0gX21tX2RwYnV1ZHNfZXBpMzIg KHhfLCB5Xywgel8pOyB9DQo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3NkLTIuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJzc2QtMi5jDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uNTAxNmRlMzk2MjENCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgt dnBkcGJzc2QtMi5jDQo+ID4gQEAgLTAsMCArMSw3MiBAQA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9 ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4dm5uaWludDgiIH0gKi8NCj4gPiAr LyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4dm5uaWludDggfSAqLyAjZGVmaW5l IEFWWFZOTklJTlQ4DQo+ID4gKyNpZm5kZWYgQ0hFQ0sgI2RlZmluZSBDSEVDSyAiYXZ4LWNoZWNr LmgiDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmbmRlZiBURVNUDQo+ID4gKyNkZWZpbmUg VEVTVCBhdnhfdGVzdA0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpbmNsdWRlIENIRUNLDQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtDQUxDIChpbnQgKnIsIGludCAqZHN0LCBjaGFy ICpzMSwgY2hhciAqczIsIGludCBzaXplKSB7DQo+ID4gKyAgc2hvcnQgdGVtcHJlc1szMl07DQo+ ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsNCj4gPiArICAgIHRlbXByZXNb aV0gPSAoc2hvcnQpIHMxW2ldICogKHNob3J0KSBzMltpXTsNCj4gPiArICB9DQo+ID4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBzaXplIC8gNDsgaSsrKSB7DQo+ID4gKyAgICBsb25nIGxvbmcgdGVz dCA9IChsb25nIGxvbmcpIGRzdFtpXSArIHRlbXByZXNbaSAqIDRdICsgdGVtcHJlc1tpICogNCAr IDFdDQo+ID4gKyAgICAgICAgICAgICAgICAgICArIHRlbXByZXNbaSAqIDQgKyAyXSArIHRlbXBy ZXNbaSAqIDQgKyAzXTsNCj4gPiArICAgIHJbaV0gPSB0ZXN0Ow0KPiA+ICsgIH0NCj4gPiArfQ0K PiA+ICsNCj4gPiArdm9pZA0KPiA+ICtURVNUICh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgaW50IGk7 DQo+ID4gKyAgdW5pb24yNTZpX2QgcmVzXzI1NjsNCj4gPiArICB1bmlvbjI1NmlfYiBzcmMyXzI1 NjsNCj4gPiArICB1bmlvbjI1NmlfYiBzcmMxXzI1NjsNCj4gPiArICBpbnQgcmVzX3JlZl8yNTZb OF07DQo+ID4gKw0KPiA+ICsgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQ0KPiA+ICsgICAgew0K PiA+ICsgICAgICBpbnQgc2lnbiA9IGkgJSAyID8gMSA6IC0xOw0KPiA+ICsgICAgICBzcmMxXzI1 Ni5hW2ldID0gMTAgKyAzICogaSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMjU2LmFbaV0gPSBz aWduICogMTAgKiBpICogaTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykNCj4gPiArICAgIHJlc18yNTYuYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ID4gKw0K PiA+ICsgIENBTEMgKHJlc19yZWZfMjU2LCByZXNfMjU2LmEsIHNyYzFfMjU2LmEsIHNyYzJfMjU2 LmEsIDMyKTsNCj4gPiArIHJlc18yNTYueCA9IF9tbTI1Nl9kcGJzc2RfZXBpMzIgKHJlc18yNTYu eCwgc3JjMV8yNTYueCwgc3JjMl8yNTYueCk7DQo+ID4gKyBpZiAoY2hlY2tfdW5pb24yNTZpX2Qg KHJlc18yNTYsIHJlc19yZWZfMjU2KSkNCj4gPiArICAgIGFib3J0ICgpOw0KPiA+ICsNCj4gPiAr ICB1bmlvbjEyOGlfZCByZXNfMTI4Ow0KPiA+ICsgIHVuaW9uMTI4aV9iIHNyYzJfMTI4Ow0KPiA+ ICsgIHVuaW9uMTI4aV9iIHNyYzFfMTI4Ow0KPiA+ICsgIGludCByZXNfcmVmXzEyOFs0XTsNCj4g PiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspDQo+ID4gKyAgICB7DQo+ID4gKyAg ICAgIGludCBzaWduID0gaSAlIDIgPyAxIDogLTE7DQo+ID4gKyAgICAgIHNyYzFfMTI4LmFbaV0g PSAxMCArIDMgKiBpICogaSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMTI4LmFbaV0gPSBzaWdu ICogMTAgKiBpICogaTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8 IDQ7IGkrKykNCj4gPiArICAgIHJlc18xMjguYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ID4gKw0KPiA+ ICsgIENBTEMgKHJlc19yZWZfMTI4LCByZXNfMTI4LmEsIHNyYzFfMTI4LmEsIHNyYzJfMTI4LmEs IDE2KTsNCj4gPiArICByZXNfMTI4LnggPSBfbW1fZHBic3NkX2VwaTMyIChyZXNfMTI4LngsIHNy YzFfMTI4LngsIHNyYzJfMTI4LngpOw0KPiA+ICsgIGlmIChjaGVja191bmlvbjEyOGlfZCAocmVz XzEyOCwgcmVzX3JlZl8xMjgpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gK30NCj4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJz c2RzLTIuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgt dnBkcGJzc2RzLTIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMDAuLjZkZTUwNjJlOTE3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3Nkcy0yLmMNCj4gPiBAQCAt MCwwICsxLDcyIEBADQo+ID4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gPiArLyogeyBkZy1vcHRp b25zICItTzIgLW1hdnh2bm5paW50OCIgfSAqLw0KPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhdnh2bm5paW50OCB9ICovICNkZWZpbmUgQVZYVk5OSUlOVDgNCj4gPiArI2lm bmRlZiBDSEVDSyAjZGVmaW5lIENIRUNLICJhdngtY2hlY2suaCINCj4gPiArI2VuZGlmDQo+ID4g Kw0KPiA+ICsjaWZuZGVmIFRFU1QNCj4gPiArI2RlZmluZSBURVNUIGF2eF90ZXN0DQo+ID4gKyNl bmRpZg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgQ0hFQ0sNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lk DQo+ID4gK0NBTEMgKGludCAqciwgaW50ICpkc3QsIGNoYXIgKnMxLCBjaGFyICpzMiwgaW50IHNp emUpIHsNCj4gPiArICBzaG9ydCB0ZW1wcmVzWzMyXTsNCj4gPiArICBmb3IgKGludCBpID0gMDsg aSA8IHNpemU7IGkrKykgew0KPiA+ICsgICAgdGVtcHJlc1tpXSA9IChzaG9ydCkgczFbaV0gKiAo c2hvcnQpIHMyW2ldOw0KPiA+ICsgIH0NCj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IHNpemUg LyA0OyBpKyspIHsNCj4gPiArICAgIGxvbmcgbG9uZyB0ZXN0ID0gKGxvbmcgbG9uZykgZHN0W2ld ICsgdGVtcHJlc1tpICogNF0gKyB0ZW1wcmVzW2kgKiA0ICsgMV0NCj4gPiArICAgICAgICAgICAg ICAgICAgICsgdGVtcHJlc1tpICogNCArIDJdICsgdGVtcHJlc1tpICogNCArIDNdOw0KPiA+ICsg ICAgcltpXSA9IHRlc3QgPiAweDdGRkZGRkZGID8gMHg3RkZGRkZGRiA6IHRlc3Q7DQo+ID4gKyAg fQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkDQo+ID4gK1RFU1QgKHZvaWQpDQo+ID4gK3sNCj4g PiArICBpbnQgaTsNCj4gPiArICB1bmlvbjI1NmlfZCByZXNfMjU2Ow0KPiA+ICsgIHVuaW9uMjU2 aV9iIHNyYzJfMjU2Ow0KPiA+ICsgIHVuaW9uMjU2aV9iIHNyYzFfMjU2Ow0KPiA+ICsgIGludCBy ZXNfcmVmXzI1Nls4XTsNCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspDQo+ ID4gKyAgICB7DQo+ID4gKyAgICAgIGludCBzaWduID0gaSAlIDIgPyAxIDogLTE7DQo+ID4gKyAg ICAgIHNyYzFfMjU2LmFbaV0gPSAxMCArIDMgKiBpICsgc2lnbjsNCj4gPiArICAgICAgc3JjMl8y NTYuYVtpXSA9IHNpZ24gKiAxMCAqIGkgKiBpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBm b3IgKGkgPSAwOyBpIDwgODsgaSsrKQ0KPiA+ICsgICAgcmVzXzI1Ni5hW2ldID0gMHg3ZmZmZmZm ZjsNCj4gPiArDQo+ID4gKyAgQ0FMQyAocmVzX3JlZl8yNTYsIHJlc18yNTYuYSwgc3JjMV8yNTYu YSwgc3JjMl8yNTYuYSwgMzIpOw0KPiA+ICsgcmVzXzI1Ni54ID0gX21tMjU2X2RwYnNzZHNfZXBp MzIgKHJlc18yNTYueCwgc3JjMV8yNTYueCwNCj4gPiArIHNyYzJfMjU2LngpOyAgaWYgKGNoZWNr X3VuaW9uMjU2aV9kIChyZXNfMjU2LCByZXNfcmVmXzI1NikpDQo+ID4gKyAgICBhYm9ydCAoKTsN Cj4gPiArDQo+ID4gKyAgdW5pb24xMjhpX2QgcmVzXzEyODsNCj4gPiArICB1bmlvbjEyOGlfYiBz cmMyXzEyODsNCj4gPiArICB1bmlvbjEyOGlfYiBzcmMxXzEyODsNCj4gPiArICBpbnQgcmVzX3Jl Zl8xMjhbNF07DQo+ID4gKw0KPiA+ICsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KPiA+ICsg ICAgew0KPiA+ICsgICAgICBpbnQgc2lnbiA9IGkgJSAyID8gMSA6IC0xOw0KPiA+ICsgICAgICBz cmMxXzEyOC5hW2ldID0gMTAgKyAzICogaSAqIGkgKyBzaWduOw0KPiA+ICsgICAgICBzcmMyXzEy OC5hW2ldID0gc2lnbiAqIDEwICogaSAqIGk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIGZv ciAoaSA9IDA7IGkgPCA0OyBpKyspDQo+ID4gKyAgICByZXNfMTI4LmFbaV0gPSAweDdmZmZmZmZm Ow0KPiA+ICsNCj4gPiArICBDQUxDIChyZXNfcmVmXzEyOCwgcmVzXzEyOC5hLCBzcmMxXzEyOC5h LCBzcmMyXzEyOC5hLCAxNik7DQo+ID4gKyAgcmVzXzEyOC54ID0gX21tX2RwYnNzZHNfZXBpMzIg KHJlc18xMjgueCwgc3JjMV8xMjgueCwgc3JjMl8xMjgueCk7DQo+ID4gKyAgaWYgKGNoZWNrX3Vu aW9uMTI4aV9kIChyZXNfMTI4LCByZXNfcmVmXzEyOCkpDQo+ID4gKyAgICBhYm9ydCAoKTsNCj4g PiArfQ0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdnh2 bm5paW50OC12cGRwYnN1ZC0yLmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F2eHZubmlpbnQ4LXZwZHBic3VkLTIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXggMDAwMDAwMDAwMDAuLjZlNGZmZDFjN2JlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3VkLTIu Yw0KPiA+IEBAIC0wLDAgKzEsNzIgQEANCj4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ICsv KiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eHZubmlpbnQ4IiB9ICovDQo+ID4gKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eHZubmlpbnQ4IH0gKi8gI2RlZmluZSBBVlhWTk5JSU5U OA0KPiA+ICsjaWZuZGVmIENIRUNLICNkZWZpbmUgQ0hFQ0sgImF2eC1jaGVjay5oIg0KPiA+ICsj ZW5kaWYNCj4gPiArDQo+ID4gKyNpZm5kZWYgVEVTVA0KPiA+ICsjZGVmaW5lIFRFU1QgYXZ4X3Rl c3QNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSBDSEVDSw0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQNCj4gPiArQ0FMQyAoaW50ICpyLCBpbnQgKmRzdCwgY2hhciAqczEsIHVuc2ln bmVkIGNoYXIgKnMyLCBpbnQgc2l6ZSkgew0KPiA+ICsgIHNob3J0IHRlbXByZXNbMzJdOw0KPiA+ ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7DQo+ID4gKyAgICB0ZW1wcmVzW2ld ID0gKHNob3J0KSBzMVtpXSAqICh1bnNpZ25lZCBzaG9ydCkgczJbaV07DQo+ID4gKyAgfQ0KPiA+ ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZSAvIDQ7IGkrKykgew0KPiA+ICsgICAgbG9uZyBs b25nIHRlc3QgPSAobG9uZyBsb25nKSBkc3RbaV0gKyB0ZW1wcmVzW2kgKiA0XSArIHRlbXByZXNb aSAqIDQgKyAxXQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgKyB0ZW1wcmVzW2kgKiA0ICsgMl0g KyB0ZW1wcmVzW2kgKiA0ICsgM107DQo+ID4gKyAgICByW2ldID0gdGVzdDsNCj4gPiArICB9DQo+ ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQNCj4gPiArVEVTVCAodm9pZCkNCj4gPiArew0KPiA+ICsg IGludCBpOw0KPiA+ICsgIHVuaW9uMjU2aV9kIHJlc18yNTY7DQo+ID4gKyAgdW5pb24yNTZpX2Ig c3JjMV8yNTY7DQo+ID4gKyAgdW5pb24yNTZpX3ViIHNyYzJfMjU2Ow0KPiA+ICsgIGludCByZXNf cmVmXzI1Nls4XTsNCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspDQo+ID4g KyAgICB7DQo+ID4gKyAgICAgIGludCBzaWduID0gaSAlIDIgPyAxIDogLTE7DQo+ID4gKyAgICAg IHNyYzFfMjU2LmFbaV0gPSAxMCArIDMgKiBpICsgc2lnbjsNCj4gPiArICAgICAgc3JjMl8yNTYu YVtpXSA9IHNpZ24gKiAxMCAqIGkgKiBpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKQ0KPiA+ICsgICAgcmVzXzI1Ni5hW2ldID0gMHg3ZmZmZmZmZjsN Cj4gPiArDQo+ID4gKyAgQ0FMQyAocmVzX3JlZl8yNTYsIHJlc18yNTYuYSwgc3JjMV8yNTYuYSwg c3JjMl8yNTYuYSwgMzIpOw0KPiA+ICsgcmVzXzI1Ni54ID0gX21tMjU2X2RwYnN1ZF9lcGkzMiAo cmVzXzI1Ni54LCBzcmMxXzI1Ni54LCBzcmMyXzI1Ni54KTsNCj4gPiArIGlmIChjaGVja191bmlv bjI1NmlfZCAocmVzXzI1NiwgcmVzX3JlZl8yNTYpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4g Kw0KPiA+ICsgIHVuaW9uMTI4aV9kIHJlc18xMjg7DQo+ID4gKyAgdW5pb24xMjhpX2Igc3JjMV8x Mjg7DQo+ID4gKyAgdW5pb24xMjhpX3ViIHNyYzJfMTI4Ow0KPiA+ICsgIGludCByZXNfcmVmXzEy OFs0XTsNCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspDQo+ID4gKyAgICB7 DQo+ID4gKyAgICAgIGludCBzaWduID0gaSAlIDIgPyAxIDogLTE7DQo+ID4gKyAgICAgIHNyYzFf MTI4LmFbaV0gPSAxMCArIDMgKiBpICogaSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMTI4LmFb aV0gPSBzaWduICogMTAgKiBpICogaTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykNCj4gPiArICAgIHJlc18xMjguYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ ID4gKw0KPiA+ICsgIENBTEMgKHJlc19yZWZfMTI4LCByZXNfMTI4LmEsIHNyYzFfMTI4LmEsIHNy YzJfMTI4LmEsIDE2KTsNCj4gPiArICByZXNfMTI4LnggPSBfbW1fZHBic3VkX2VwaTMyIChyZXNf MTI4LngsIHNyYzFfMTI4LngsIHNyYzJfMTI4LngpOw0KPiA+ICsgIGlmIChjaGVja191bmlvbjEy OGlfZCAocmVzXzEyOCwgcmVzX3JlZl8xMjgpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWlu dDgtdnBkcGJzdWRzLTIuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4 dm5uaWludDgtdnBkcGJzdWRzLTIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMDAwMDAuLmFkNGI2MDQ3ZWNkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBic3Vkcy0yLmMN Cj4gPiBAQCAtMCwwICsxLDcyIEBADQo+ID4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gPiArLyog eyBkZy1vcHRpb25zICItTzIgLW1hdnh2bm5paW50OCIgfSAqLw0KPiA+ICsvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCBhdnh2bm5paW50OCB9ICovICNkZWZpbmUgQVZYVk5OSUlOVDgN Cj4gPiArI2lmbmRlZiBDSEVDSyAjZGVmaW5lIENIRUNLICJhdngtY2hlY2suaCINCj4gPiArI2Vu ZGlmDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFRFU1QNCj4gPiArI2RlZmluZSBURVNUIGF2eF90ZXN0 DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgQ0hFQ0sNCj4gPiArDQo+ID4gK3N0 YXRpYyB2b2lkDQo+ID4gK0NBTEMgKGludCAqciwgaW50ICpkc3QsIGNoYXIgKnMxLCB1bnNpZ25l ZCBjaGFyICpzMiwgaW50IHNpemUpIHsNCj4gPiArICBzaG9ydCB0ZW1wcmVzWzMyXTsNCj4gPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgew0KPiA+ICsgICAgdGVtcHJlc1tpXSA9 IChzaG9ydCkgczFbaV0gKiAodW5zaWduZWQgc2hvcnQpIHMyW2ldOw0KPiA+ICsgIH0NCj4gPiAr ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemUgLyA0OyBpKyspIHsNCj4gPiArICAgIGxvbmcgbG9u ZyB0ZXN0ID0gKGxvbmcgbG9uZykgZHN0W2ldICsgdGVtcHJlc1tpICogNF0gKyB0ZW1wcmVzW2kg KiA0ICsgMV0NCj4gPiArICAgICAgICAgICAgICAgICAgICsgdGVtcHJlc1tpICogNCArIDJdICsg dGVtcHJlc1tpICogNCArIDNdOw0KPiA+ICsgICAgcltpXSA9IHRlc3QgPiAweDdGRkZGRkZGID8g MHg3RkZGRkZGRiA6IHRlc3Q7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkDQo+ ID4gK1RFU1QgKHZvaWQpDQo+ID4gK3sNCj4gPiArICBpbnQgaTsNCj4gPiArICB1bmlvbjI1Nmlf ZCByZXNfMjU2Ow0KPiA+ICsgIHVuaW9uMjU2aV9iIHNyYzFfMjU2Ow0KPiA+ICsgIHVuaW9uMjU2 aV91YiBzcmMyXzI1NjsNCj4gPiArICBpbnQgcmVzX3JlZl8yNTZbOF07DQo+ID4gKw0KPiA+ICsg IGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBpbnQgc2ln biA9IGkgJSAyID8gMSA6IC0xOw0KPiA+ICsgICAgICBzcmMxXzI1Ni5hW2ldID0gMTAgKyAzICog aSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMjU2LmFbaV0gPSBzaWduICogMTAgKiBpICogaTsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykNCj4gPiAr ICAgIHJlc18yNTYuYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ID4gKw0KPiA+ICsgIENBTEMgKHJlc19y ZWZfMjU2LCByZXNfMjU2LmEsIHNyYzFfMjU2LmEsIHNyYzJfMjU2LmEsIDMyKTsNCj4gPiArIHJl c18yNTYueCA9IF9tbTI1Nl9kcGJzdWRzX2VwaTMyIChyZXNfMjU2LngsIHNyYzFfMjU2LngsDQo+ ID4gKyBzcmMyXzI1Ni54KTsgIGlmIChjaGVja191bmlvbjI1NmlfZCAocmVzXzI1NiwgcmVzX3Jl Zl8yNTYpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gKw0KPiA+ICsgIHVuaW9uMTI4aV9kIHJl c18xMjg7DQo+ID4gKyAgdW5pb24xMjhpX2Igc3JjMV8xMjg7DQo+ID4gKyAgdW5pb24xMjhpX3Vi IHNyYzJfMTI4Ow0KPiA+ICsgIGludCByZXNfcmVmXzEyOFs0XTsNCj4gPiArDQo+ID4gKyAgZm9y IChpID0gMDsgaSA8IDE2OyBpKyspDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIGludCBzaWduID0g aSAlIDIgPyAxIDogLTE7DQo+ID4gKyAgICAgIHNyYzFfMTI4LmFbaV0gPSAxMCArIDMgKiBpICog aSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMTI4LmFbaV0gPSBzaWduICogMTAgKiBpICogaTsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykNCj4gPiAr ICAgIHJlc18xMjguYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ID4gKw0KPiA+ICsgIENBTEMgKHJlc19y ZWZfMTI4LCByZXNfMTI4LmEsIHNyYzFfMTI4LmEsIHNyYzJfMTI4LmEsIDE2KTsNCj4gPiArICBy ZXNfMTI4LnggPSBfbW1fZHBic3Vkc19lcGkzMiAocmVzXzEyOC54LCBzcmMxXzEyOC54LCBzcmMy XzEyOC54KTsNCj4gPiArICBpZiAoY2hlY2tfdW5pb24xMjhpX2QgKHJlc18xMjgsIHJlc19yZWZf MTI4KSkNCj4gPiArICAgIGFib3J0ICgpOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBidXVkLTIuYw0KPiA+IGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5uaWludDgtdnBkcGJ1dWQtMi5jDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uNjU5MDkxNWE0 NTkNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXZ4dm5uaWludDgtdnBkcGJ1dWQtMi5jDQo+ID4gQEAgLTAsMCArMSw3MiBAQA0KPiA+ ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4dm5u aWludDgiIH0gKi8NCj4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4dm5u aWludDggfSAqLyAjZGVmaW5lIEFWWFZOTklJTlQ4DQo+ID4gKyNpZm5kZWYgQ0hFQ0sgI2RlZmlu ZSBDSEVDSyAiYXZ4LWNoZWNrLmgiDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmbmRlZiBU RVNUDQo+ID4gKyNkZWZpbmUgVEVTVCBhdnhfdGVzdA0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4g KyNpbmNsdWRlIENIRUNLDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtDQUxDICh1bnNp Z25lZCBpbnQgKnIsIHVuc2lnbmVkIGludCAqZHN0LCB1bnNpZ25lZCBjaGFyICpzMSwgdW5zaWdu ZWQNCj4gPiArY2hhciAqczIsIGludCBzaXplKSB7DQo+ID4gKyAgdW5zaWduZWQgc2hvcnQgdGVt cHJlc1szMl07DQo+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsNCj4gPiAr ICAgIHRlbXByZXNbaV0gPSAodW5zaWduZWQgc2hvcnQpIHMxW2ldICogKHVuc2lnbmVkIHNob3J0 KSBzMltpXTsNCj4gPiArICB9DQo+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplIC8gNDsg aSsrKSB7DQo+ID4gKyAgICB1bnNpZ25lZCBpbnQgdGVzdCA9ICh1bnNpZ25lZCBpbnQpIGRzdFtp XSArIHRlbXByZXNbaSAqIDRdICsgdGVtcHJlc1tpICogNA0KPiArIDFdDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgKyB0ZW1wcmVzW2kgKiA0ICsgMl0gKyB0ZW1wcmVzW2kgKiA0ICsgM107 DQo+ID4gKyAgICByW2ldID0gdGVzdDsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3Zv aWQNCj4gPiArVEVTVCAodm9pZCkNCj4gPiArew0KPiA+ICsgIGludCBpOw0KPiA+ICsgIHVuaW9u MjU2aV91ZCByZXNfMjU2Ow0KPiA+ICsgIHVuaW9uMjU2aV91YiBzcmMyXzI1NjsNCj4gPiArICB1 bmlvbjI1NmlfdWIgc3JjMV8yNTY7DQo+ID4gKyAgdW5zaWduZWQgaW50IHJlc19yZWZfMjU2Wzhd Ow0KPiA+ICsNCj4gPiArICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykNCj4gPiArICAgIHsNCj4g PiArICAgICAgaW50IHNpZ24gPSBpICUgMiA/IDEgOiAtMTsNCj4gPiArICAgICAgc3JjMV8yNTYu YVtpXSA9IDEwICsgMyAqIGkgKyBzaWduOw0KPiA+ICsgICAgICBzcmMyXzI1Ni5hW2ldID0gc2ln biAqIDEwICogaSAqIGk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIGZvciAoaSA9IDA7IGkg PCA4OyBpKyspDQo+ID4gKyAgICByZXNfMjU2LmFbaV0gPSAweDdmZmZmZmZmOw0KPiA+ICsNCj4g PiArICBDQUxDIChyZXNfcmVmXzI1NiwgcmVzXzI1Ni5hLCBzcmMxXzI1Ni5hLCBzcmMyXzI1Ni5h LCAzMik7DQo+ID4gKyByZXNfMjU2LnggPSBfbW0yNTZfZHBidXVkX2VwaTMyIChyZXNfMjU2Lngs IHNyYzFfMjU2LngsIHNyYzJfMjU2LngpOw0KPiA+ICsgaWYgKGNoZWNrX3VuaW9uMjU2aV91ZCAo cmVzXzI1NiwgcmVzX3JlZl8yNTYpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gKw0KPiA+ICsg IHVuaW9uMTI4aV91ZCByZXNfMTI4Ow0KPiA+ICsgIHVuaW9uMTI4aV91YiBzcmMyXzEyODsNCj4g PiArICB1bmlvbjEyOGlfdWIgc3JjMV8xMjg7DQo+ID4gKyAgdW5zaWduZWQgaW50IHJlc19yZWZf MTI4WzRdOw0KPiA+ICsNCj4gPiArICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykNCj4gPiArICAg IHsNCj4gPiArICAgICAgaW50IHNpZ24gPSBpICUgMiA/IDEgOiAtMTsNCj4gPiArICAgICAgc3Jj MV8xMjguYVtpXSA9IDEwICsgMyAqIGkgKiBpICsgc2lnbjsNCj4gPiArICAgICAgc3JjMl8xMjgu YVtpXSA9IHNpZ24gKiAxMCAqIGkgKiBpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBmb3Ig KGkgPSAwOyBpIDwgNDsgaSsrKQ0KPiA+ICsgICAgcmVzXzEyOC5hW2ldID0gMHg3ZmZmZmZmZjsN Cj4gPiArDQo+ID4gKyAgQ0FMQyAocmVzX3JlZl8xMjgsIHJlc18xMjguYSwgc3JjMV8xMjguYSwg c3JjMl8xMjguYSwgMTYpOw0KPiA+ICsgIHJlc18xMjgueCA9IF9tbV9kcGJ1dWRfZXBpMzIgKHJl c18xMjgueCwgc3JjMV8xMjgueCwgc3JjMl8xMjgueCk7DQo+ID4gKyAgaWYgKGNoZWNrX3VuaW9u MTI4aV91ZCAocmVzXzEyOCwgcmVzX3JlZl8xMjgpKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4g K30NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4dm5u aWludDgtdnBkcGJ1dWRzLTIuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXZ4dm5uaWludDgtdnBkcGJ1dWRzLTIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXggMDAwMDAwMDAwMDAuLjk3MGU0YTVkNDA4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eHZubmlpbnQ4LXZwZHBidXVkcy0y LmMNCj4gPiBAQCAtMCwwICsxLDcyIEBADQo+ID4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gPiAr LyogeyBkZy1vcHRpb25zICItTzIgLW1hdnh2bm5paW50OCIgfSAqLw0KPiA+ICsvKiB7IGRnLXJl cXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhdnh2bm5paW50OCB9ICovICNkZWZpbmUgQVZYVk5OSUlO VDgNCj4gPiArI2lmbmRlZiBDSEVDSyAjZGVmaW5lIENIRUNLICJhdngtY2hlY2suaCINCj4gPiAr I2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFRFU1QNCj4gPiArI2RlZmluZSBURVNUIGF2eF90 ZXN0DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgQ0hFQ0sNCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkDQo+ID4gK0NBTEMgKHVuc2lnbmVkIGludCAqciwgdW5zaWduZWQgaW50ICpk c3QsIHVuc2lnbmVkIGNoYXIgKnMxLCB1bnNpZ25lZA0KPiA+ICtjaGFyICpzMiwgaW50IHNpemUp IHsNCj4gPiArICB1bnNpZ25lZCBzaG9ydCB0ZW1wcmVzWzMyXTsNCj4gPiArICBmb3IgKGludCBp ID0gMDsgaSA8IHNpemU7IGkrKykgew0KPiA+ICsgICAgdGVtcHJlc1tpXSA9ICh1bnNpZ25lZCBz aG9ydCkgczFbaV0gKiAodW5zaWduZWQgc2hvcnQpIHMyW2ldOw0KPiA+ICsgIH0NCj4gPiArICBm b3IgKGludCBpID0gMDsgaSA8IHNpemUgLyA0OyBpKyspIHsNCj4gPiArICAgIHVuc2lnbmVkIGlu dCB0ZXN0ID0gKHVuc2lnbmVkIGludCkgZHN0W2ldICsgdGVtcHJlc1tpICogNF0gKyB0ZW1wcmVz W2kgKiA0DQo+ICsgMV0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICArIHRlbXByZXNbaSAq IDQgKyAyXSArIHRlbXByZXNbaSAqIDQgKyAzXTsNCj4gPiArICAgIHJbaV0gPSB0ZXN0ID4gMHhG RkZGRkZGRiA/IDB4RkZGRkZGRkYgOiB0ZXN0Ow0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4g PiArdm9pZA0KPiA+ICtURVNUICh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgaW50IGk7DQo+ID4gKyAg dW5pb24yNTZpX3VkIHJlc18yNTY7DQo+ID4gKyAgdW5pb24yNTZpX3ViIHNyYzJfMjU2Ow0KPiA+ ICsgIHVuaW9uMjU2aV91YiBzcmMxXzI1NjsNCj4gPiArICB1bnNpZ25lZCBpbnQgcmVzX3JlZl8y NTZbOF07DQo+ID4gKw0KPiA+ICsgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQ0KPiA+ICsgICAg ew0KPiA+ICsgICAgICBpbnQgc2lnbiA9IGkgJSAyID8gMSA6IC0xOw0KPiA+ICsgICAgICBzcmMx XzI1Ni5hW2ldID0gMTAgKyAzICogaSArIHNpZ247DQo+ID4gKyAgICAgIHNyYzJfMjU2LmFbaV0g PSBzaWduICogMTAgKiBpICogaTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpID0g MDsgaSA8IDg7IGkrKykNCj4gPiArICAgIHJlc18yNTYuYVtpXSA9IDB4N2ZmZmZmZmY7DQo+ID4g Kw0KPiA+ICsgIENBTEMgKHJlc19yZWZfMjU2LCByZXNfMjU2LmEsIHNyYzFfMjU2LmEsIHNyYzJf MjU2LmEsIDMyKTsNCj4gPiArIHJlc18yNTYueCA9IF9tbTI1Nl9kcGJ1dWRzX2VwaTMyIChyZXNf MjU2LngsIHNyYzFfMjU2LngsDQo+ID4gKyBzcmMyXzI1Ni54KTsgIGlmIChjaGVja191bmlvbjI1 NmlfdWQgKHJlc18yNTYsIHJlc19yZWZfMjU2KSkNCj4gPiArICAgIGFib3J0ICgpOw0KPiA+ICsN Cj4gPiArICB1bmlvbjEyOGlfdWQgcmVzXzEyODsNCj4gPiArICB1bmlvbjEyOGlfdWIgc3JjMl8x Mjg7DQo+ID4gKyAgdW5pb24xMjhpX3ViIHNyYzFfMTI4Ow0KPiA+ICsgIHVuc2lnbmVkIGludCBy ZXNfcmVmXzEyOFs0XTsNCj4gPiArDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspDQo+ ID4gKyAgICB7DQo+ID4gKyAgICAgIGludCBzaWduID0gaSAlIDIgPyAxIDogLTE7DQo+ID4gKyAg ICAgIHNyYzFfMTI4LmFbaV0gPSAxMCArIDMgKiBpICogaSArIHNpZ247DQo+ID4gKyAgICAgIHNy YzJfMTI4LmFbaV0gPSBzaWduICogMTAgKiBpICogaTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4g KyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykNCj4gPiArICAgIHJlc18xMjguYVtpXSA9IDB4N2Zm ZmZmZmY7DQo+ID4gKw0KPiA+ICsgIENBTEMgKHJlc19yZWZfMTI4LCByZXNfMTI4LmEsIHNyYzFf MTI4LmEsIHNyYzJfMTI4LmEsIDE2KTsNCj4gPiArICByZXNfMTI4LnggPSBfbW1fZHBidXVkc19l cGkzMiAocmVzXzEyOC54LCBzcmMxXzEyOC54LCBzcmMyXzEyOC54KTsNCj4gPiArICBpZiAoY2hl Y2tfdW5pb24xMjhpX3VkIChyZXNfMTI4LCByZXNfcmVmXzEyOCkpDQo+ID4gKyAgICBhYm9ydCAo KTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9mdW5jc3BlYy01Ni5pbmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1 bmNzcGVjLTU2LmluYw0KPiA+IGluZGV4IDQ2NjU1NWMwZDA2Li5hNjgxYmZmZTNlNyAxMDA2NDQN Cj4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy01Ni5pbmMN Cj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy01Ni5pbmMN Cj4gPiBAQCAtODEsNiArODEsNyBAQCBleHRlcm4gdm9pZCB0ZXN0X3dpZGVrbCAodm9pZCkNCj4g X19hdHRyaWJ1dGVfXygoX190YXJnZXRfXygid2lkZWtsIikpKTsNCj4gPiAgZXh0ZXJuIHZvaWQg dGVzdF9hdnh2bm5pICh2b2lkKQ0KPiBfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJhdnh2bm5p IikpKTsNCj4gPiAgZXh0ZXJuIHZvaWQgdGVzdF9hdng1MTJmcDE2ICh2b2lkKQ0KPiBfX2F0dHJp YnV0ZV9fKChfX3RhcmdldF9fKCJhdng1MTJmcDE2IikpKTsNCj4gPiAgZXh0ZXJuIHZvaWQgdGVz dF9hdnhpZm1hICh2b2lkKQ0KPiBfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJhdnhpZm1hIikp KTsNCj4gPiArZXh0ZXJuIHZvaWQgdGVzdF9hdnh2bm5paW50OCAodm9pZCkNCj4gX19hdHRyaWJ1 dGVfXygoX190YXJnZXRfXygiYXZ4dm5uaWludDgiKSkpOw0KPiA+DQo+ID4gIGV4dGVybiB2b2lk IHRlc3Rfbm9fc2d4ICh2b2lkKSAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX190YXJn ZXRfXygibm8tDQo+IHNneCIpKSk7DQo+ID4gIGV4dGVybiB2b2lkIHRlc3Rfbm9fYXZ4NTEyNGZt YXBzKHZvaWQpDQo+IF9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oIm5vLWF2eDUxMjRmbWFwcyIp KSk7DQo+ID4gQEAgLTE2Myw2ICsxNjQsNyBAQCBleHRlcm4gdm9pZCB0ZXN0X25vX3dpZGVrbCAo dm9pZCkNCj4gX19hdHRyaWJ1dGVfXygoX190YXJnZXRfXygibm8td2lkZWtsIikpKTsNCj4gPiAg ZXh0ZXJuIHZvaWQgdGVzdF9ub19hdnh2bm5pICh2b2lkKSAgICAgICAgICAgICBfX2F0dHJpYnV0 ZV9fKChfX3RhcmdldF9fKCJuby0NCj4gYXZ4dm5uaSIpKSk7DQo+ID4gIGV4dGVybiB2b2lkIHRl c3Rfbm9fYXZ4NTEyZnAxNiAodm9pZCkNCj4gX19hdHRyaWJ1dGVfXygoX190YXJnZXRfXygibm8t YXZ4NTEyZnAxNiIpKSk7DQo+ID4gIGV4dGVybiB2b2lkIHRlc3Rfbm9fYXZ4aWZtYSAodm9pZCkg ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX190YXJnZXRfXygibm8tDQo+IGF2eGlmbWEiKSkp Ow0KPiA+ICtleHRlcm4gdm9pZCB0ZXN0X25vX2F2eHZubmlpbnQ4ICh2b2lkKQ0KPiBfX2F0dHJp YnV0ZV9fKChfX3RhcmdldF9fKCJuby1hdnh2bm5paW50OCIpKSk7DQo+ID4NCj4gPiAgZXh0ZXJu IHZvaWQgdGVzdF9hcmNoX25vY29uYSAodm9pZCkNCj4gX19hdHRyaWJ1dGVfXygoX190YXJnZXRf XygiYXJjaD1ub2NvbmEiKSkpOw0KPiA+ICBleHRlcm4gdm9pZCB0ZXN0X2FyY2hfY29yZTIgKHZv aWQpDQo+IF9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oImFyY2g9Y29yZTIiKSkpOw0KPiA+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTIuYw0KPiA+IGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTEyLmMNCj4gPiBpbmRleCBmZGU1NjI2 MWQ4Zi4uZGRkZTJkZjY2NTcgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvc3NlLTEyLmMNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9zc2UtMTIuYw0KPiA+IEBAIC0zLDcgKzMsNyBAQA0KPiA+ICAgICBwb3BjbnRpbnRyaW4uaCBn Zm5paW50cmluLmggYW5kIG1tX21hbGxvYy5oIGFyZSB1c2FibGUNCj4gPiAgICAgd2l0aCAtTyAt c3RkPWM4OSAtcGVkYW50aWMtZXJyb3JzLiAgKi8NCj4gPiAgLyogeyBkZy1kbyBjb21waWxlIH0g Ki8NCj4gPiAtLyogeyBkZy1vcHRpb25zICItTyAtc3RkPWM4OSAtcGVkYW50aWMtZXJyb3JzIC1t YXJjaD1rOCAtbXNzZTRhDQo+ID4gLW0zZG5vdyAtbWF2eCAtbWF2eDIgLW1mbWE0IC1teG9wIC1t YWVzIC1tcGNsbXVsIC1tcG9wY250IC1tYWJtDQo+ID4gLW1semNudCAtbWJtaSAtbWJtaTIgLW10 Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtbWZtYSAtDQo+IG1ydG0NCj4gPiAt bXJkc2VlZCAtbXByZmNodyAtbWFkeCAtbWZ4c3IgLW14c2F2ZW9wdCAtbWF2eDUxMmYgLW1hdng1 MTJlcg0KPiA+IC1tYXZ4NTEyY2QgLW1hdng1MTJwZiAtbXNoYSAtbXByZWZldGNod3QxIC1teHNh dmVjIC1teHNhdmVzDQo+ID4gLW1jbGZsdXNob3B0IC1tYXZ4NTEyYncgLW1hdng1MTJkcSAtbWF2 eDUxMnZsIC1tYXZ4NTEydmJtaQ0KPiA+IC1tYXZ4NTEydmJtaTIgLW1hdng1MTJpZm1hIC1tYXZ4 NTEyNGZtYXBzIC1tYXZ4NTEyNHZubml3DQo+ID4gLW1hdng1MTJ2cG9wY250ZHEgLW1jbHdiIC1t bXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQgLQ0KPiBtZ2ZuaQ0KPiA+IC1tYXZ4 NTEyYml0YWxnIC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEyYmYxNiAtbWVucWNtZA0KPiA+ IC1tYXZ4NTEydnAyaW50ZXJzZWN0IC1tc2VyaWFsaXplIC1tdHN4bGR0cmsgLW1hbXgtdGlsZSAt bWFteC1pbnQ4DQo+ID4gLW1hbXgtYmYxNiAtbWtsIC1td2lkZWtsIC1tYXZ4dm5uaSAtbWF2eGlm bWEiIH0gKi8NCj4gPiArLyogeyBkZy1vcHRpb25zICItTyAtc3RkPWM4OSAtcGVkYW50aWMtZXJy b3JzIC1tYXJjaD1rOCAtbXNzZTRhDQo+ID4gKy1tM2Rub3cgLW1hdnggLW1hdngyIC1tZm1hNCAt bXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtDQo+IG1hYm0NCj4gPiArLW1semNudCAtbWJt aSAtbWJtaTIgLW10Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtbWZtYQ0KPiA+ ICstbXJ0bSAtbXJkc2VlZCAtbXByZmNodyAtbWFkeCAtbWZ4c3IgLW14c2F2ZW9wdCAtbWF2eDUx MmYgLQ0KPiBtYXZ4NTEyZXINCj4gPiArLW1hdng1MTJjZCAtbWF2eDUxMnBmIC1tc2hhIC1tcHJl ZmV0Y2h3dDEgLW14c2F2ZWMgLW14c2F2ZXMNCj4gPiArLW1jbGZsdXNob3B0IC1tYXZ4NTEyYncg LW1hdng1MTJkcSAtbWF2eDUxMnZsIC1tYXZ4NTEydmJtaQ0KPiA+ICstbWF2eDUxMnZibWkyIC1t YXZ4NTEyaWZtYSAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdw0KPiA+ICstbWF2eDUxMnZw b3BjbnRkcSAtbWNsd2IgLW1td2FpdHggLW1jbHplcm8gLW1wa3UgLW1zZ3ggLW1yZHBpZCAtDQo+ IG1nZm5pDQo+ID4gKy1tYXZ4NTEyYml0YWxnIC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEy YmYxNiAtbWVucWNtZA0KPiA+ICstbWF2eDUxMnZwMmludGVyc2VjdCAtbXNlcmlhbGl6ZSAtbXRz eGxkdHJrIC1tYW14LXRpbGUgLW1hbXgtaW50OA0KPiA+ICstbWFteC1iZjE2IC1ta2wgLW13aWRl a2wgLW1hdnh2bm5pIC1tYXZ4aWZtYSAtbWF2eHZubmlpbnQ4IiB9ICovDQo+ID4NCj4gPiAgI2lu Y2x1ZGUgPHg4NmludHJpbi5oPg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9zc2UtMTMuYw0KPiA+IGluZGV4IGJiMjk1NTViYWJlLi4yYjI5MzIxNmM2ZiAxMDA2NDQN Cj4gPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTMuYw0KPiA+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jDQo+ID4gQEAgLTEsNSAr MSw1IEBADQo+ID4gIC8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gLS8qIHsgZGctb3B0aW9u cyAiLU8yIC1XZXJyb3ItaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLW1hcmNoPWs4DQo+ ID4gLW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1tYXZ4MiAtbWZtYTQgLW14b3AgLW1hZXMgLW1wY2xt dWwgLQ0KPiBtcG9wY250DQo+ID4gLW1hYm0gLW1semNudCAtbWJtaSAtbWJtaTIgLW10Ym0gLW1s d3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtDQo+IG1mbWENCj4gPiAtbXJ0bSAtbXJkc2Vl ZCAtbXByZmNodyAtbWFkeCAtbWZ4c3IgLW14c2F2ZW9wdCAtbWF2eDUxMmYgLQ0KPiBtYXZ4NTEy ZXINCj4gPiAtbWF2eDUxMmNkIC1tYXZ4NTEycGYgLW1zaGEgLW1wcmVmZXRjaHd0MSAtbXhzYXZl YyAtbXhzYXZlcw0KPiA+IC1tY2xmbHVzaG9wdCAtbWF2eDUxMnZsIC1tYXZ4NTEyZHEgLW1hdng1 MTJidyAtbWF2eDUxMnZibWkNCj4gPiAtbWF2eDUxMnZibWkyIC1tYXZ4NTEyaWZtYSAtbWF2eDUx MjRmbWFwcyAtbWF2eDUxMjR2bm5pdw0KPiA+IC1tYXZ4NTEydnBvcGNudGRxIC1tYXZ4NTEydnAy aW50ZXJzZWN0IC1tY2x3YiAtbW13YWl0eCAtbWNsemVybyAtDQo+IG1wa3UNCj4gPiAtbXNneCAt bXJkcGlkIC1tZ2ZuaSAtbWF2eDUxMmJpdGFsZyAtbXBjb25maWcgLW13Ym5vaW52ZCAtDQo+IG1h dng1MTJiZjE2DQo+ID4gLW1lbnFjbWQgLW1zZXJpYWxpemUgLW10c3hsZHRyayAtbWFteC10aWxl IC1tYW14LWludDggLW1hbXgtYmYxNiAtbWtsDQo+ID4gLW13aWRla2wgLW1hdnh2bm5pIC1tYXZ4 NTEyZnAxNiAtbWF2eGlmbWEiIH0gKi8NCj4gPiArLyogeyBkZy1vcHRpb25zICItTzIgLVdlcnJv ci1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtbWFyY2g9azgNCj4gPiArLW1zc2U0YSAt bTNkbm93IC1tYXZ4IC1tYXZ4MiAtbWZtYTQgLW14b3AgLW1hZXMgLW1wY2xtdWwgLQ0KPiBtcG9w Y250DQo+ID4gKy1tYWJtIC1tbHpjbnQgLW1ibWkgLW1ibWkyIC1tdGJtIC1tbHdwIC1tZnNnc2Jh c2UgLW1yZHJuZCAtbWYxNmMNCj4gPiArLW1mbWEgLW1ydG0gLW1yZHNlZWQgLW1wcmZjaHcgLW1h ZHggLW1meHNyIC1teHNhdmVvcHQgLW1hdng1MTJmDQo+ID4gKy1tYXZ4NTEyZXIgLW1hdng1MTJj ZCAtbWF2eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2ZWMNCj4gPiArLW14c2F2ZXMg LW1jbGZsdXNob3B0IC1tYXZ4NTEydmwgLW1hdng1MTJkcSAtbWF2eDUxMmJ3IC0NCj4gbWF2eDUx MnZibWkNCj4gPiArLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMmlmbWEgLW1hdng1MTI0Zm1hcHMgLW1h dng1MTI0dm5uaXcNCj4gPiArLW1hdng1MTJ2cG9wY250ZHEgLW1hdng1MTJ2cDJpbnRlcnNlY3Qg LW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC0NCj4gbXBrdQ0KPiA+ICstbXNneCAtbXJkcGlkIC1t Z2ZuaSAtbWF2eDUxMmJpdGFsZyAtbXBjb25maWcgLW13Ym5vaW52ZCAtDQo+IG1hdng1MTJiZjE2 DQo+ID4gKy1tZW5xY21kIC1tc2VyaWFsaXplIC1tdHN4bGR0cmsgLW1hbXgtdGlsZSAtbWFteC1p bnQ4IC1tYW14LWJmMTYgLQ0KPiBta2wNCj4gPiArLW13aWRla2wgLW1hdnh2bm5pIC1tYXZ4NTEy ZnAxNiAtbWF2eGlmbWEgLW1hdnh2bm5paW50OCIgfSAqLw0KPiA+ICAvKiB7IGRnLWFkZC1vcHRp b25zIGJpbmRfcGljX2xvY2FsbHkgfSAqLw0KPiA+DQo+ID4gICNpbmNsdWRlIDxtbV9tYWxsb2Mu aD4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0 LmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xNC5jDQo+ID4gaW5k ZXggZjI3MDFkZGFhZjkuLjc4YjUxMDQ4YjkwIDEwMDY0NA0KPiA+IC0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xNC5jDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlLTE0LmMNCj4gPiBAQCAtMSw1ICsxLDUgQEANCj4gPiAgLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gPiAtLyogeyBkZy1vcHRpb25zICItTzAgLVdlcnJvci1pbXBsaWNp dC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtbWFyY2g9azgNCj4gPiAtbXNzZTRhIC1tM2Rub3cgLW1h dnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtDQo+IG1wb3BjbnQNCj4gPiAt bWFibSAtbWx6Y250IC1tYm1pIC1tYm1pMiAtbXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQg LW1mMTZjIC0NCj4gbWZtYQ0KPiA+IC1tcnRtIC1tcmRzZWVkIC1tcHJmY2h3IC1tYWR4IC1tZnhz ciAtbXhzYXZlb3B0IC1tYXZ4NTEyZiAtDQo+IG1hdng1MTJlcg0KPiA+IC1tYXZ4NTEyY2QgLW1h dng1MTJwZiAtbXNoYSAtbXByZWZldGNod3QxIC1teHNhdmVjIC1teHNhdmVzDQo+ID4gLW1jbGZs dXNob3B0IC1tYXZ4NTEyZHEgLW1hdng1MTJidyAtbWF2eDUxMnZsIC1tYXZ4NTEyaWZtYQ0KPiA+ IC1tYXZ4NTEydmJtaSAtbWF2eDUxMnZibWkyIC1tYXZ4NTEyNGZtYXBzIC1tYXZ4NTEyNHZubml3 DQo+ID4gLW1hdng1MTJ2cG9wY250ZHEgLW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1t c2d4IC1tcmRwaWQgLQ0KPiBtZ2ZuaQ0KPiA+IC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEy dmwgLW1hdng1MTJiZjE2IC1tZW5xY21kDQo+ID4gLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJp YWxpemUgLW10c3hsZHRyayAtbWFteC10aWxlIC1tYW14LWludDgNCj4gPiAtbWFteC1iZjE2IC1t a2wgLW13aWRla2wgLW1hdnh2bm5pIC1tYXZ4NTEyZnAxNiAtbWF2eGlmbWEiIH0gKi8NCj4gPiAr LyogeyBkZy1vcHRpb25zICItTzAgLVdlcnJvci1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlv biAtbWFyY2g9azgNCj4gPiArLW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1tYXZ4MiAtbWZtYTQgLW14 b3AgLW1hZXMgLW1wY2xtdWwgLQ0KPiBtcG9wY250DQo+ID4gKy1tYWJtIC1tbHpjbnQgLW1ibWkg LW1ibWkyIC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2UgLW1yZHJuZCAtbWYxNmMNCj4gPiArLW1mbWEg LW1ydG0gLW1yZHNlZWQgLW1wcmZjaHcgLW1hZHggLW1meHNyIC1teHNhdmVvcHQgLW1hdng1MTJm DQo+ID4gKy1tYXZ4NTEyZXIgLW1hdng1MTJjZCAtbWF2eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3 dDEgLW14c2F2ZWMNCj4gPiArLW14c2F2ZXMgLW1jbGZsdXNob3B0IC1tYXZ4NTEyZHEgLW1hdng1 MTJidyAtbWF2eDUxMnZsIC0NCj4gbWF2eDUxMmlmbWENCj4gPiArLW1hdng1MTJ2Ym1pIC1tYXZ4 NTEydmJtaTIgLW1hdng1MTI0Zm1hcHMgLW1hdng1MTI0dm5uaXcNCj4gPiArLW1hdng1MTJ2cG9w Y250ZHEgLW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQgLQ0KPiBt Z2ZuaQ0KPiA+ICstbXBjb25maWcgLW13Ym5vaW52ZCAtbWF2eDUxMnZsIC1tYXZ4NTEyYmYxNiAt bWVucWNtZA0KPiA+ICstbWF2eDUxMnZwMmludGVyc2VjdCAtbXNlcmlhbGl6ZSAtbXRzeGxkdHJr IC1tYW14LXRpbGUgLW1hbXgtaW50OA0KPiA+ICstbWFteC1iZjE2IC1ta2wgLW13aWRla2wgLW1h dnh2bm5pIC1tYXZ4NTEyZnAxNiAtbWF2eGlmbWENCj4gPiArLW1hdnh2bm5paW50OCIgfSAqLw0K PiA+ICAvKiB7IGRnLWFkZC1vcHRpb25zIGJpbmRfcGljX2xvY2FsbHkgfSAqLw0KPiA+DQo+ID4g ICNpbmNsdWRlIDxtbV9tYWxsb2MuaD4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvc3NlLTIyLmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3NzZS0yMi5jDQo+ID4gaW5kZXggM2QxOTY5NzViMWUuLmNjMWM4Y2ZhNGJlIDEwMDY0NA0K PiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0yMi5jDQo+ID4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIyLmMNCj4gPiBAQCAtMTAzLDcg KzEwMyw3IEBADQo+ID4NCj4gPg0KPiA+ICAjaWZuZGVmIERJRkZFUkVOVF9QUkFHTUFTDQo+ID4g LSNwcmFnbWEgR0NDIHRhcmdldA0KPiA+ICgic3NlNGEsM2Rub3csYXZ4LGF2eDIsZm1hNCx4b3As YWVzLHBjbG11bCxwb3BjbnQsYWJtLGx6Y250LGJtaSxibWkyLHQNCj4gPiBibSxsd3AsZnNnc2Jh c2UscmRybmQsZjE2YyxydG0scmRzZWVkLHByZmNodyxhZHgsZnhzcix4c2F2ZW9wdCxhdng1MTJm DQo+ID4gLGF2eDUxMmVyLGF2eDUxMmNkLGF2eDUxMnBmLHNoYSxwcmVmZXRjaHd0MSxhdng1MTJ2 bCxhdng1MTJidyxhdng1MTJkDQo+IHENCj4gPiAsYXZ4NTEydmJtaSxhdng1MTJ2Ym1pMixhdng1 MTJpZm1hLGF2eDUxMjRmbWFwcyxhdng1MTI0dm5uaXcsYXZ4NTEyDQo+IHZwbw0KPiA+IHBjbnRk cSxnZm5pLGF2eDUxMmJpdGFsZyxhdng1MTJiZjE2LGF2eDUxMnZwMmludGVyc2VjdCxzZXJpYWxp emUsdHN4bGQNCj4gPiB0cmssYW14LXRpbGUsYW14LWludDgsYW14LWJmMTYsa2wsd2lkZWtsLGF2 eHZubmksYXZ4NTEyZnAxNixhdnhpZm1hIikNCj4gPiArI3ByYWdtYSBHQ0MgdGFyZ2V0DQo+ID4g Kygic3NlNGEsM2Rub3csYXZ4LGF2eDIsZm1hNCx4b3AsYWVzLHBjbG11bCxwb3BjbnQsYWJtLGx6 Y250LGJtaSxibWkyLA0KPiA+ICt0Ym0sbHdwLGZzZ3NiYXNlLHJkcm5kLGYxNmMscnRtLHJkc2Vl ZCxwcmZjaHcsYWR4LGZ4c3IseHNhdmVvcHQsYXZ4NTENCj4gPg0KPiArMmYsYXZ4NTEyZXIsYXZ4 NTEyY2QsYXZ4NTEycGYsc2hhLHByZWZldGNod3QxLGF2eDUxMnZsLGF2eDUxMmJ3LGF2eDUxDQo+ ID4NCj4gKzJkcSxhdng1MTJ2Ym1pLGF2eDUxMnZibWkyLGF2eDUxMmlmbWEsYXZ4NTEyNGZtYXBz LGF2eDUxMjR2bm5pdyxhdngNCj4gNTENCj4gPiArMnZwb3BjbnRkcSxnZm5pLGF2eDUxMmJpdGFs Zyxhdng1MTJiZjE2LGF2eDUxMnZwMmludGVyc2VjdCxzZXJpYWxpemUsDQo+ID4gK3RzeGxkdHJr LGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2LGtsLHdpZGVrbCxhdnh2bm5pLGF2eDUxMmZwMTYs YXZ4aQ0KPiA+ICtmbWEsYXZ4dm5uaWludDgiKQ0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+ICAvKiBG b2xsb3dpbmcgaW50cmluc2ljcyByZXF1aXJlIGltbWVkaWF0ZSBhcmd1bWVudHMuICBUaGV5IEBA IC0yMjAsNw0KPiA+ICsyMjAsNyBAQCB0ZXN0XzQgKF9tbV9jbXBlc3RyeiwgaW50LCBfX20xMjhp LCBpbnQsIF9fbTEyOGksIGludCwgMSkNCj4gPg0KPiA+ICAvKiBpbW1pbnRyaW4uaCAoQVZYL0FW WDIvUkRSTkQvRlNHU0JBU0UvRjE2Qy9SVE0vQVZYNTEyRi9TSEEpDQo+ICovDQo+ID4gI2lmZGVm IERJRkZFUkVOVF9QUkFHTUFTIC0jcHJhZ21hIEdDQyB0YXJnZXQNCj4gPiAoImF2eCxhdngyLHJk cm5kLGZzZ3NiYXNlLGYxNmMscnRtLGF2eDUxMmYsYXZ4NTEyZXIsYXZ4NTEyY2QsYXZ4NTEycGYs DQo+ID4NCj4gc2hhLGF2eDUxMnZsLGF2eDUxMmJ3LGF2eDUxMmRxLGF2eDUxMmlmbWEsYXZ4NTEy dmJtaSxhdng1MTJ2Ym1pMixhdng1DQo+IDENCj4gPg0KPiAyNGZtYXBzLGF2eDUxMjR2bm5pdyxh dng1MTJ2cG9wY250ZHEsZ2ZuaSxhdng1MTJiaXRhbGcsYXZ4NTEyYmYxNixhdng1DQo+ID4gMTJ2 cDJpbnRlcnNlY3Qsc2VyaWFsaXplLHRzeGxkdHJrLGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2 LGtsLHdpZGVrbA0KPiA+ICxhdnh2bm5pLGF2eDUxMmZwMTYsYXZ4aWZtYSIpDQo+ID4gKyNwcmFn bWEgR0NDIHRhcmdldA0KPiA+ICsoImF2eCxhdngyLHJkcm5kLGZzZ3NiYXNlLGYxNmMscnRtLGF2 eDUxMmYsYXZ4NTEyZXIsYXZ4NTEyY2QsYXZ4NTEycGYNCj4gPg0KPiArLHNoYSxhdng1MTJ2bCxh dng1MTJidyxhdng1MTJkcSxhdng1MTJpZm1hLGF2eDUxMnZibWksYXZ4NTEydmJtaTIsYXYNCj4g eA0KPiA+DQo+ICs1MTI0Zm1hcHMsYXZ4NTEyNHZubml3LGF2eDUxMnZwb3BjbnRkcSxnZm5pLGF2 eDUxMmJpdGFsZyxhdng1MTJiZjE2LGENCj4gPiArdng1MTJ2cDJpbnRlcnNlY3Qsc2VyaWFsaXpl LHRzeGxkdHJrLGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2LGtsLHdpDQo+ID4gK2Rla2wsYXZ4 dm5uaSxhdng1MTJmcDE2LGF2eGlmbWEsYXZ4dm5uaWludDgiKQ0KPiA+ICAjZW5kaWYNCj4gPiAg I2luY2x1ZGUgPGltbWludHJpbi5oPg0KPiA+ICB0ZXN0XzEgKF9jdnRzc19zaCwgdW5zaWduZWQg c2hvcnQsIGZsb2F0LCAxKSBkaWZmIC0tZ2l0DQo+ID4gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2UtMjMuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3Nl LTIzLmMNCj4gPiBpbmRleCBkM2EyMzNmOTBmYy4uMjcwZjQ0ODM0OTEgMTAwNjQ0DQo+ID4gLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIzLmMNCj4gPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMjMuYw0KPiA+IEBAIC04NDMsNiArODQzLDYg QEANCj4gPiAgI2RlZmluZSBfX2J1aWx0aW5faWEzMl92cGNsbXVscWRxX3YyZGkoQSwgQiwgQykN Cj4gPiBfX2J1aWx0aW5faWEzMl92cGNsbXVscWRxX3YyZGkoQSwgQiwgMSkgICNkZWZpbmUNCj4g PiBfX2J1aWx0aW5faWEzMl92cGNsbXVscWRxX3Y4ZGkoQSwgQiwgQykNCj4gPiBfX2J1aWx0aW5f aWEzMl92cGNsbXVscWRxX3Y4ZGkoQSwgQiwgMSkNCj4gPg0KPiA+IC0jcHJhZ21hIEdDQyB0YXJn ZXQNCj4gPiAoInNzZTRhLDNkbm93LGF2eCxhdngyLGZtYTQseG9wLGFlcyxwY2xtdWwscG9wY250 LGFibSxsemNudCxibWksYm1pMix0DQo+ID4gYm0sbHdwLGZzZ3NiYXNlLHJkcm5kLGYxNmMsZm1h LHJ0bSxyZHNlZWQscHJmY2h3LGFkeCxmeHNyLHhzYXZlb3B0LGF2eA0KPiA+IDUxMmYsYXZ4NTEy ZXIsYXZ4NTEyY2QsYXZ4NTEycGYsc2hhLHByZWZldGNod3QxLHhzYXZlYyx4c2F2ZXMsY2xmbHVz aG8NCj4gPg0KPiBwdCxhdng1MTJidyxhdng1MTJkcSxhdng1MTJ2bCxhdng1MTJ2Ym1pLGF2eDUx MmlmbWEsYXZ4NTEyNGZtYXBzLGF2eDUNCj4gMQ0KPiA+IDI0dm5uaXcsYXZ4NTEydnBvcGNudGRx LGNsd2IsbXdhaXR4LGNsemVybyxwa3Usc2d4LHJkcGlkLGdmbmksYXZ4NTEydmINCj4gPg0KPiBt aTIsdnBjbG11bHFkcSxhdng1MTJiaXRhbGcscGNvbmZpZyx3Ym5vaW52ZCxhdng1MTJiZjE2LGVu cWNtZCxhdng1MTJ2DQo+ID4gcDJpbnRlcnNlY3Qsc2VyaWFsaXplLHRzeGxkdHJrLGFteC10aWxl LGFteC1pbnQ4LGFteC1iZjE2LGtsLHdpZGVrbCxhdg0KPiA+IHh2bm5pLGF2eDUxMmZwMTYsYXZ4 aWZtYSIpDQo+ID4gKyNwcmFnbWEgR0NDIHRhcmdldA0KPiA+ICsoInNzZTRhLDNkbm93LGF2eCxh dngyLGZtYTQseG9wLGFlcyxwY2xtdWwscG9wY250LGFibSxsemNudCxibWksYm1pMiwNCj4gPiAr dGJtLGx3cCxmc2dzYmFzZSxyZHJuZCxmMTZjLGZtYSxydG0scmRzZWVkLHByZmNodyxhZHgsZnhz cix4c2F2ZW9wdCxhDQo+ID4gK3Z4NTEyZixhdng1MTJlcixhdng1MTJjZCxhdng1MTJwZixzaGEs cHJlZmV0Y2h3dDEseHNhdmVjLHhzYXZlcyxjbGZsdQ0KPiA+DQo+ICtzaG9wdCxhdng1MTJidyxh dng1MTJkcSxhdng1MTJ2bCxhdng1MTJ2Ym1pLGF2eDUxMmlmbWEsYXZ4NTEyNGZtYXBzLA0KPiBh DQo+ID4gK3Z4NTEyNHZubml3LGF2eDUxMnZwb3BjbnRkcSxjbHdiLG13YWl0eCxjbHplcm8scGt1 LHNneCxyZHBpZCxnZm5pLGF2eA0KPiA+DQo+ICs1MTJ2Ym1pMix2cGNsbXVscWRxLGF2eDUxMmJp dGFsZyxwY29uZmlnLHdibm9pbnZkLGF2eDUxMmJmMTYsZW5xY21kLA0KPiBhDQo+ID4gK3Z4NTEy dnAyaW50ZXJzZWN0LHNlcmlhbGl6ZSx0c3hsZHRyayxhbXgtdGlsZSxhbXgtaW50OCxhbXgtYmYx NixrbCx3aQ0KPiA+ICtkZWtsLGF2eHZubmksYXZ4NTEyZnAxNixhdnhpZm1hLGF2eHZubmlpbnQ4 IikNCj4gPg0KPiA+ICAjaW5jbHVkZSA8eDg2aW50cmluLmg+DQo+ID4gZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHANCj4gPiBiL2djYy90ZXN0c3VpdGUv bGliL3RhcmdldC1zdXBwb3J0cy5leHANCj4gPiBpbmRleCA2OWRlM2I5NmJmYy4uNjRjY2ZjNzQ2 YmQgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4 cA0KPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHANCj4gPiBA QCAtOTUxOCw2ICs5NTE4LDE4IEBAIHByb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hdnhpZm1h IHsgfSB7DQo+ID4gICAgICB9ICItTzAgLW1hdnhpZm1hIiBdDQo+ID4gIH0NCj4gPg0KPiA+ICsj IFJldHVybiAxIGlmIGF2eHZubmlpbnQ4IGluc3RydWN0aW9ucyBjYW4gYmUgY29tcGlsZWQuDQo+ ID4gK3Byb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hdnh2bm5paW50OCB7IH0gew0KPiA+ICsg ICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdlcyBhdnh2bm5paW50OCBvYmplY3Qg ew0KPiA+ICsgICAgICAgdHlwZWRlZiBpbnQgX192OHNpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rv cl9zaXplX18gKDMyKSkpOw0KPiA+ICsgICAgICAgX192OHNpDQo+ID4gKyAgICAgICBfbW0yNTZf ZHBic3NkX2VwaTMyICAoX192OHNpIF9fQSwgX192OHNpIF9fQiwgX192OHNpIF9fQykNCj4gPiAr ICAgICAgICB7DQo+ID4gKyAgICAgICAgICByZXR1cm4gX19idWlsdGluX2lhMzJfdnBkcGJzc2Qy NTYgKF9fQSwgX19CLCBfX0MpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgfSAiLU8wIC1tYXZ4 dm5uaWludDgiIF0NCj4gPiArfQ0KPiA+ICsNCj4gPiAgIyBSZXR1cm4gMSBpZiBzc2UgaW5zdHJ1 Y3Rpb25zIGNhbiBiZSBjb21waWxlZC4NCj4gPiAgcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0 X3NzZSB7IH0gew0KPiA+ICAgICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdlcyBz c2Ugb2JqZWN0IHsNCj4gPiAtLQ0KPiA+IDIuMTguMQ0KPiA+DQo+IA0KPiANCj4gLS0NCj4gQlIs DQo+IEhvbmd0YW8NCg==