From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.32258.1606119059458118066 for ; Mon, 23 Nov 2020 00:10:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=sp1sjqwA; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: w.sheng@intel.com) IronPort-SDR: btB/u6knr2zh+yrxpArSzsIGj4qFeYfWtuc8x8aKq7mDAjGBmZsGqpUjToPtKSDT9Q+K8WqWKf PhML/bhq8IVg== X-IronPort-AV: E=McAfee;i="6000,8403,9813"; a="159488750" X-IronPort-AV: E=Sophos;i="5.78,361,1599548400"; d="scan'208";a="159488750" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2020 00:10:58 -0800 IronPort-SDR: tkJJfi8zod77qEC/OceXp4W26XmEO35Lz143+eW6ZVfva1IeXQxXN0lOiqUHQgF1dV8O/Hjl9O ea23c0gdecrQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,361,1599548400"; d="scan'208";a="358377464" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga008.jf.intel.com with ESMTP; 23 Nov 2020 00:10:58 -0800 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) 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.1713.5; Mon, 23 Nov 2020 00:10:57 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 23 Nov 2020 00:10:57 -0800 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.36.54) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 23 Nov 2020 00:10:53 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RULpX6tmQ5tt6TsS1dCApw0CiMWYZhXbnP3g0gHyWWwAhEGiT81hOtNermpeKk5/fB3tntb8zEcBd6Vx13SWkEcfAdk1R/aX39Lx/qSKJ31Z94GgfhjO7MH3p2RV0nRnKk1gw4UEdzjH9B+hVR1662Rztq0TtO7CDWLTKbE34zS/vdvFQFN0bQ9tNcFmIOK6vcEfHSrKmVJakzutSkptrag/OpLr6HK/OhIUJ4wPxEDVMQBsqdsEAGdRgJ+6pEbDKhYLk2a7e5xUlCvxeNqmb8zCZZJKBCtOlssNVjAzci8njZwIPdAqSFeJP1LMf2+9xB6Y7sRDyJDVH1hVHkCCJA== 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-SenderADCheck; bh=LQlGLHGEMNZrPYoa+YeusDRMPUnEFJ/cs+s3wvgOX+k=; b=TowVUh6hPEKtrWm4ElKJdginLj3JAEFAxsypqPHg8AKb/sm+LKKy/jqVO0yR5eqpe1Sc9R97zOuFmNyJQKoFCDiPvih8uV8wB4+i5k9ywVewBa4jtNqO8T57yeFGXawhxE1YcNjB8db+CgmLprkl6eM5cHaEuou6g12r1yTiBxFv1ZB0BWqjTjv1OvFACKmiUgjB6f8y+nqNUwZ6FRSmxeSc18MAZu0DFwC2XyK1E+5XhBZQKg/3BNLBXqh5Cc//ucF0Xc7TONSI/5a5XxVXUzlZVcq/DSj370eJVQ2zwMLo+N9h3+C/LMvz9UnCnxtqJT4AUQ+wZYUa0Dr+oWO76w== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LQlGLHGEMNZrPYoa+YeusDRMPUnEFJ/cs+s3wvgOX+k=; b=sp1sjqwAaI0iaFkGarfk75bH3NaFsF9HmmwozuRg86SRdDXBWC5Pc9bDxW1j9eAdmNzrDlmqif2IVu8F0hoEhEvP9aMXj4IcncZ3XWF+FxW1q+VimC+JtZffl8H3Sy6oYmWpim0ipy0T+25bPUoORuMqoEyPIp/abG0rEnYEJNg= Received: from CY4PR11MB1928.namprd11.prod.outlook.com (2603:10b6:903:11e::18) by CY4PR11MB0021.namprd11.prod.outlook.com (2603:10b6:910:7c::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3589.22; Mon, 23 Nov 2020 08:10:50 +0000 Received: from CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::d922:f6a:d769:b5]) by CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::d922:f6a:d769:b5%12]) with mapi id 15.20.3589.025; Mon, 23 Nov 2020 08:10:50 +0000 From: "Sheng Wei" To: "Yao, Jiewen" , "devel@edk2.groups.io" , "Ni, Ray" , "Huang, Jenny" , "Chaganty, Rangasai V" Subject: Re: [edk2-devel] [PATCH v3] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Topic: [edk2-devel] [PATCH v3] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Index: AQHWvUiqP8rAhooazkGUHtUeC8kg4anNGfxAgAAPRdCAAAVPQIAABPpwgAgxreA= Date: Mon, 23 Nov 2020 08:10:50 +0000 Message-ID: References: <20201118011755.13732-1-w.sheng@intel.com> <16487A52A9CBAF90.960@groups.io> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a5c2bf93-3123-4a78-cf1f-08d88f874aa2 x-ms-traffictypediagnostic: CY4PR11MB0021: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3ig9LrnDZfItqRo2GVlZWjBWkApy9tLCUdmnOePqr4IHDiFjekd/EgW+6ZUA+pHWj7Rvfz7mA2+REqjWNn8AZGaeq264JJ+kuHSrKg2r2YfLtJR2BGDM9MSZdCJXVjAkRadUawpmdotmGdxP+S5aYzNFa69LS15IBkMgIj6cVdD8l/By40OLWRfUSCrWz6ywt7ldrMnCEG+vrL7t4847oPrr+/K5pu2KppKJXhMzRUxa/nWNjGxPyk+pPnwz+fZuHgDEDFRV80LJtVehyU+4EfSlTzsUocJyRu4gG5NbD4lzXOo7cIVqWaohO2InGpQcZbpWq065MZiI15SNmxAnv6Ws07Ca3wb1x3/6W9KGbi/ewiO3cTnX/QKfqpEoZrzoIuW7GfeceVCjVGyopnxSdQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1928.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(396003)(39860400002)(366004)(136003)(346002)(71200400001)(19627235002)(55016002)(966005)(8936002)(186003)(53546011)(478600001)(316002)(26005)(2906002)(6636002)(8676002)(7696005)(9686003)(6506007)(110136005)(64756008)(66946007)(33656002)(66556008)(86362001)(66446008)(83380400001)(52536014)(30864003)(66476007)(5660300002)(76116006)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: PpUDsycRMrv9DYpHtXKHKN0Lo95F4C1uag0hLe/wNijS3WuE5XGuBiBmw0nUtF/NfW4kKPTq4rIWWv22EodPOVx8lEy5AiL+cuFsLshehBn0wPZkmvD/e74W8TRWBjt78akqPhvwIZl9br28zRx0kpe3nwj13pr1xO1rv10kVcGw4nlLa3kzwASJ1XM/ZkL8TWtf2ICDvqGj3NcO02uRhsCJDFc98fhMy/EeHBFbW4RhmzCQOp4IQnTLoWTv5rM+4HUA6ASVuNneik8KfVODdNC2ITmXd5CKrD2gTRnVrokVjoHTem8SA0+D1ibE15u5CR8nBdjdBsIC5I9zuYmmmlg4RaK6gdw1nwRllfN2kGr5W2AkG3yiDR8diVpb/DJxMwh2ieZo/hYi5DsM9xQoDNWCzr8AACVHJDKEIhVkf3F7E/yCpkLtbxG3dx3qXT6ymYUP4gPPsrQzMlbUz5bzMOL7vk/BA0++Pdmcb9LNWoT/uzcWL//6calgjXvQUCACnbdaPcv/cEWHRt2a/CLxxdHYwyhPDgvKUgSdvhVQkvu2RXvj+AE5DXQwXJPj5RAU9OjV+uK3VJ2OCdL3zEwfdU1pIX3FUziLE9AGDZM5PdZAw6MCutLEapIPaWMi+VRlMFYukb9g5OaOAcI3MKMTKtW6630+9Z59oUz9OGQDUX1xSVdgSzbTH5h80hfDDFV6tiSzVbBWeSLio/B2iMmCw2zEyqlSnrXXHj7b4J8f4hkyLvso/fK7NXVWC+V8pzquH4MBMjsUkdkjFDqrqacOo7ibed4DZcV2Ki1HkuUKENGBerDgyfZhch3NKgNiGLJL8O3SY0KXi/EAHIIR2V8SqPa5OX2nqqaDYy+dCpLwbbUTPFKnR5zua6aG5/P98SnNEg0IV0tWosi1RWZFJOgZkA== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1928.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a5c2bf93-3123-4a78-cf1f-08d88f874aa2 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2020 08:10:50.6276 (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: qL2VVi3ieRA+ilbzNg2vA25oK1ynEEbq3rRXD9KPrgImUpRAGaM1sQXRJnfWlfNwVlmP9WWsYcLTR/tMGI7iyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB0021 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgQWxsLCANCkkgaGF2ZSB1cGRhdGVkIHRoZSBwYXRjaCBmb3Igc3VwcG9ydCBpb21tdSA1IGxl dmVsIHBhZ2luZy4NCkNvdWxkIHlvdSBoZWxwIHRvIHJldmlldyB0aGUgVjQgcGF0Y2ggPw0KaHR0 cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvNjc3OTI/cD0sLCwyMCwwLDAsMDo6 cmVsZXZhbmNlLCxwb3N0ZXJpZCUzQTI1NTg1NTgsMjAsMiwwLDc4NDQ5MDc5DQpUaGFuayB5b3Uu DQpCUg0KU2hlbmcgV2VpDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog WWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTZW50OiAyMDIwxOoxMdTCMTjI 1SAxMTowNA0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFlhbywgSmlld2VuIDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IFNoZW5nLCBXDQo+IDx3LnNoZW5nQGludGVsLmNvbT4NCj4gQ2M6IE5p LCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBDaGFnYW50eSwgUmFuZ2FzYWkgVg0KPiA8cmFuZ2Fz YWkudi5jaGFnYW50eUBpbnRlbC5jb20+OyBIdWFuZywgSmVubnkgPGplbm55Lmh1YW5nQGludGVs LmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjNdIEludGVsU2lsaWNv blBrZy9WVGQ6IEFkZCBpb21tdSA1IGxldmVsDQo+IHBhZ2luZyBzdXBwb3J0DQo+IA0KPiBKdXN0 IGNoZWNrZWQgUElTTU0gQ1BVIGRyaXZlciwgd2hpY2ggdXNlIGJlbG93IGNvZGUgdG8gZGVjaWRl IGlmIDUgbGV2ZWwNCj4gcGFnaW5nIGlzIG5lZWRlZC4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyL2Jsb2IvbWFzdGVyL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbQ0KPiBtL1g2 NC9QYWdlVGJsLmMjTDc1DQo+IA0KPiBDYW4gd2UgdXNlIHRoZSBzaW1pbGFyIGFsZ29yaXRobT8g SXQganVzdCBpbmNsdWRlcyBjaGVjayBmb3IgOg0KPiAxKSBIYXJkd2FyZSBDYXBhYmlsaXR5DQo+ IDIpIEhhcmR3YXJlIEFkZHJlc3MgUmFuZ2UNCj4gMykgU29mdHdhcmUgRXhlY3V0aW9uIE1vZGUN Cj4gDQo+IEFuZCBpdCBjYW4gYmUgZG9uZSBhdXRvbWF0aWNhbGx5Lg0KPiANCj4gPT09PT09PT09 PT09PT09PT09PQ0KPiBCT09MRUFODQo+IElzNUxldmVsUGFnaW5nTmVlZGVkICgNCj4gICBWT0lE DQo+ICAgKQ0KPiB7DQo+ICAgQ1BVSURfVklSX1BIWV9BRERSRVNTX1NJWkVfRUFYICAgICAgICAg ICAgICBWaXJQaHlBZGRyZXNzU2l6ZTsNCj4gICBDUFVJRF9TVFJVQ1RVUkVEX0VYVEVOREVEX0ZF QVRVUkVfRkxBR1NfRUNYIEV4dEZlYXR1cmVFY3g7DQo+ICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNYXhFeHRlbmRlZEZ1bmN0aW9uSWQ7DQo+IA0KPiAgIEFz bUNwdWlkIChDUFVJRF9FWFRFTkRFRF9GVU5DVElPTiwgJk1heEV4dGVuZGVkRnVuY3Rpb25JZCwg TlVMTCwNCj4gTlVMTCwgTlVMTCk7DQo+ICAgaWYgKE1heEV4dGVuZGVkRnVuY3Rpb25JZCA+PSBD UFVJRF9WSVJfUEhZX0FERFJFU1NfU0laRSkgew0KPiAgICAgQXNtQ3B1aWQgKENQVUlEX1ZJUl9Q SFlfQUREUkVTU19TSVpFLCAmVmlyUGh5QWRkcmVzc1NpemUuVWludDMyLA0KPiBOVUxMLCBOVUxM LCBOVUxMKTsNCj4gICB9IGVsc2Ugew0KPiAgICAgVmlyUGh5QWRkcmVzc1NpemUuQml0cy5QaHlz aWNhbEFkZHJlc3NCaXRzID0gMzY7DQo+ICAgfQ0KPiAgIEFzbUNwdWlkRXggKA0KPiAgICAgQ1BV SURfU1RSVUNUVVJFRF9FWFRFTkRFRF9GRUFUVVJFX0ZMQUdTLA0KPiAgICAgQ1BVSURfU1RSVUNU VVJFRF9FWFRFTkRFRF9GRUFUVVJFX0ZMQUdTX1NVQl9MRUFGX0lORk8sDQo+ICAgICBOVUxMLCBO VUxMLCAmRXh0RmVhdHVyZUVjeC5VaW50MzIsIE5VTEwNCj4gICAgICk7DQo+ICAgREVCVUcgKCgN Cj4gICAgIERFQlVHX0lORk8sICJQaHlzaWNhbEFkZHJlc3NCaXRzID0gJWQsIDVMUGFnZVRhYmxl ID0gJWQuXG4iLA0KPiAgICAgVmlyUGh5QWRkcmVzc1NpemUuQml0cy5QaHlzaWNhbEFkZHJlc3NC aXRzLCBFeHRGZWF0dXJlRWN4LkJpdHMuRml2ZUxldmVsUGFnZQ0KPiAgICAgKSk7DQo+IA0KPiAg IGlmIChWaXJQaHlBZGRyZXNzU2l6ZS5CaXRzLlBoeXNpY2FsQWRkcmVzc0JpdHMgPiA0ICogOSAr IDEyKSB7DQo+ICAgICBBU1NFUlQgKEV4dEZlYXR1cmVFY3guQml0cy5GaXZlTGV2ZWxQYWdlID09 IDEpOw0KPiAgICAgcmV0dXJuIFRSVUU7DQo+ICAgfSBlbHNlIHsNCj4gICAgIHJldHVybiBGQUxT RTsNCj4gICB9DQo+IH0NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBG cm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFs ZiBPZiBZYW8sDQo+ID4gSmlld2VuDQo+ID4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAxOCwg MjAyMCAxMDo0OSBBTQ0KPiA+IFRvOiBTaGVuZywgVyA8dy5zaGVuZ0BpbnRlbC5jb20+OyBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgQ2hh Z2FudHksIFJhbmdhc2FpIFYNCj4gPiA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+OyBI dWFuZywgSmVubnkgPGplbm55Lmh1YW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW2Vk azItZGV2ZWxdIFtQQVRDSCB2M10gSW50ZWxTaWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2 ZWwNCj4gPiBwYWdpbmcgc3VwcG9ydA0KPiA+DQo+ID4gU29ycnkgSSBkaWQgbm90IHNheSBjbGVh cmx5Lg0KPiA+DQo+ID4gMSkgSSBtZWFuIHRoZSAoU0FHQVcgJiBCSVQyKSBjaGVjayBzaG91bGQg YWxzbyBoYXBwZW4gaW5zaWRlIG9mIChTQUdBVyAmDQo+ID4gQklUMyksIHRoZSBmaXJzdCBpZi4N Cj4gPg0KPiA+IE90aGVyd2lzZSwgdGhlIGxvZ2ljIGlzOg0KPiA+DQo+ID4gSWYgKDUgbGV2ZWwg c3VwcG9ydCkgew0KPiA+ICAgSWYgKG5lZWQgNCBsZXZlbCkgew0KPiA+ICAgICBEbyA0IGxldmVs DQo+ID4gICB9DQo+ID4gfQ0KPiA+DQo+ID4gVGhhdCBpcyBvZGQuDQo+ID4NCj4gPiAyKSBJbiBn ZW5lcmFsLCBJIHJlY29tbWVuZCB3ZSBoYXZlIGEgYmV0dGVyIHdheSB0byBtYW5hZ2UgdGVzdC9k ZWJ1ZyBjb2RlDQo+ID4gaW50byBwcm9kdWN0aW9uLiBUaGUgUENEIHNob3VsZCBiZSB1c2VkIHdo ZW4gaXQgaXMgYWJzb2x1dGVseSBuZWNlc3NhcnkuDQo+ID4gSSB0aGluayB0aGUgcG9saWN5IHNo b3VsZCBiZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIE90aGVyd2lzZSwgdGhlIHByb2R1Y3Rpb24N Cj4gPiB0ZWFtIHdvbnQga25vdyBob3cgdG8gY2hvb3NlLg0KPiA+DQo+ID4NCj4gPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBTaGVuZywgVyA8dy5zaGVuZ0BpbnRl bC5jb20+DQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDE4LCAyMDIwIDEwOjMzIEFN DQo+ID4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgQ2hhZ2Fu dHksIFJhbmdhc2FpIFYNCj4gPiA+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IEh1 YW5nLCBKZW5ueSA8amVubnkuaHVhbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtQ QVRDSCB2M10gSW50ZWxTaWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nDQo+ ID4gPiBzdXBwb3J0DQo+ID4gPg0KPiA+ID4gSGkgSmVpd2VuLA0KPiA+ID4gRm9yIGNvbW1lbnQg MToNCj4gPiA+IFRoZSBjb2RlIGFib3V0IChTQUdBVyAmIEJJVDIpIGlzIGp1c3QgYmVoYW5kIChT QUdBVyAmIEJJVDMpDQo+ID4gPg0KPiA+ID4gPiA+ICsgICAgICAgICAgREVCVUcoKERFQlVHX0VS Uk9SLCAiVXNpbmcgNC1sZXZlbCBwYWdlLXRhYmxlIG9uDQo+IFZURCAlZFxuIiwNCj4gPiA+ID4g PiBWdGRJbmRleCkpOw0KPiA+ID4gPiA+ICsgICAgICAgICAgRXh0Q29udGV4dEVudHJ5LT5CaXRz LkFkZHJlc3NXaWR0aCA9IDB4MjsNCj4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ID4gKyAg ICAgIH0NCj4gPiA+ID4gPiArICAgIH0gZWxzZSBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRk SW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYNCj4gPiA+ID4gPiArIEJJVDIpICE9DQo+ID4gPiA+ ID4gMCkgew0KPiA+ID4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICJVc2luZyA0LWxl dmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4g PiA+ID4gKyAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7DQo+ ID4gPiA+ID4gKyAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJS T1IsICIhISEhIFBhZ2UtdGFibGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIG9uDQo+ID4gPiA+ID4g VlREICVkICEhISFcbiIsIFZ0ZEluZGV4KSk7DQo+ID4gPiA+ID4gICAgICAgIHJldHVybiBFRklf VU5TVVBQT1JURUQ7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gLSAgICBFeHRDb250ZXh0 RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gPiA+ICAgIH0NCj4gPiA+DQo+ ID4gPiBGb3IgY29tbWVudCAyOg0KPiA+ID4gPiAgICMgIEJJVDM6IEZvcmNlIHRvIHVzZSA0IGxl dmVsIHBhZ2luZy4NCj4gPiA+ID4gICAjICBCSVQ0OiBJZiBpb21tdSBzdXBwb3J0IDUgbGV2ZWwg cGFnaW5nLCBmb3JjZSB0byB1c2UgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiA+ICAgIyAgICAoSWYg Ym90aCBCSVQzIGFuZCBCSVQ0IGFyZSBzZXQsIGZvcmNlIHRvIHVzZSA0IGxldmVsIHBhZ2luZy4p DQo+ID4gPiBNb3N0bHksIHRoZXNlIDIgYml0cyBhcmUgZm9yIGRlYnVnL3Rlc3QgcHVycG9zZSwg aXQgY291bGQgYmUgdXNlZCB0byBmb3JjZQ0KPiA+IHRoZQ0KPiA+ID4gcGFnZSB0YWJsZSBkZXB0 aC4NCj4gPiA+IERvIHlvdSB0aGluayBpdCBpcyBubyBuZWNlc3Nhcnk/IE9yIHdlIGNvdWxkIGZp bmQgYW5vdGhlciBzb2x1dGlvbiA/DQo+ID4gPg0KPiA+ID4gVGhhbmsgeW91DQo+ID4gPiBCUg0K PiA+ID4gU2hlbmcgV2VpDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29t Pg0KPiA+ID4gPiBTZW50OiAyMDIwxOoxMdTCMTjI1SA5OjM5DQo+ID4gPiA+IFRvOiBTaGVuZywg VyA8dy5zaGVuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gPiBDYzog TmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+ID4gPiA+ IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IEh1YW5nLCBKZW5ueQ0KPiA+IDxqZW5u eS5odWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjNdIEludGVs U2lsaWNvblBrZy9WVGQ6IEFkZCBpb21tdSA1IGxldmVsIHBhZ2luZw0KPiA+ID4gc3VwcG9ydA0K PiA+ID4gPg0KPiA+ID4gPiBIaQ0KPiA+ID4gPiBJIGhhdmUgMiBjb21tZW50czoNCj4gPiA+ID4N Cj4gPiA+ID4gMSkgYmVsb3cgY2FwYWJpbGl0eSBjaGVjayBzZWVtcyBub3QgY29ycmVjdC4NCj4g PiA+ID4NCj4gPiA+ID4gKFNBR0FXICYgQklUMykgaXMgZm9yIDUgbGV2ZWwgb25seS4NCj4gPiA+ ID4gV2UgbmVlZCBjaGVjayAoU0FHQVcgJiBCSVQyKSBmb3IgNCBsZXZlbC4gQnV0IEkgZG8gbm90 IHNlZSB0aGUgY29kZS4gRG8gSQ0KPiA+ID4gbWlzcw0KPiA+ID4gPiBzb21ldGhpbmc/DQo+ID4g PiA+DQo+ID4gPiA+ICAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJl Zy5CaXRzLlNBR0FXICYgQklUMykgIT0gMCkgew0KPiA+ID4gPiAgICAgICBpZiAoKFBjZEdldDgo UGNkVlRkUG9saWN5UHJvcGVydHlNYXNrKSAmIEJJVDMpICE9IDApIHsNCj4gPiA+ID4gICAgICAg ICBERUJVRygoREVCVUdfRVJST1IsICJGb3JjZSB0byB1c2UgNC1sZXZlbCBwYWdlLXRhYmxlIG9u DQo+ID4gPiBWVEQgJWRcbiIsDQo+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ICAgICAgICAg Q29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4MjsNCj4gPiA+ID4gICAgICAgfSBp ZiAoKFBjZEdldDgoUGNkVlRkUG9saWN5UHJvcGVydHlNYXNrKSAmIEJJVDQpICE9IDApIHsNCj4g PiA+ID4gICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJGb3JjZSB0byB1c2UgNS1sZXZlbCBw YWdlLXRhYmxlIG9uDQo+ID4gPiBWVEQgJWRcbiIsDQo+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4g PiA+ICAgICAgICAgQ29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4MzsNCj4gPiA+ ID4gICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9 IFRSVUU7DQo+ID4gPiA+ICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ICAgICAgICAgaWYgKG1BY3Bp RG1hclRhYmxlLT5Ib3N0QWRkcmVzc1dpZHRoID4gNDgpIHsNCj4gPiA+ID4gICAgICAgICAgIERF QlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDUtbGV2ZWwgcGFnZS10YWJsZSBvbiBWVEQgJWRcbiIs DQo+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ICAgICAgICAgICBDb250ZXh0RW50cnktPkJp dHMuQWRkcmVzc1dpZHRoID0gMHgzOw0KPiA+ID4gPiAgICAgICAgICAgbVZ0ZFVuaXRJbmZvcm1h dGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBUUlVFOw0KPiA+ID4gPiAgICAgICAgIH0g ZWxzZSB7DQo+ID4gPiA+ICAgICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJVc2luZyA0LWxl dmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4g PiAgICAgICAgICAgQ29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4MjsNCj4gPiA+ ID4gICAgICAgICB9DQo+ID4gPiA+ICAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gMikgSSBhbSB3 b25kZXJpbmcsIGRvIHdlIHJlYWxseSBuZWVkIDIgYml0IGZvciBsZXZlbCBzZWxlY3Rpb24gPw0K PiA+ID4gPiBXaGF0IGlmIGZvcmNlIDQgbGV2ZWwsIGJ1dCB0aGUgcGxhdGZvcm0gZG9lcyBub3Qg c3VwcG9ydD8NCj4gPiA+ID4gV2hhdCBpZiBmb3JjZSA1IGxldmVsLCBidXQgdGhlIHBsYXRmb3Jt IGRvZXMgbm90IHN1cHBvcnQ/DQo+ID4gPiA+DQo+ID4gPiA+ICAgIyAgQklUMzogRm9yY2UgdG8g dXNlIDQgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gPiAgICMgIEJJVDQ6IElmIGlvbW11IHN1cHBvcnQg NSBsZXZlbCBwYWdpbmcsIGZvcmNlIHRvIHVzZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4gICAj ICAgIChJZiBib3RoIEJJVDMgYW5kIEJJVDQgYXJlIHNldCwgZm9yY2UgdG8gdXNlIDQgbGV2ZWwg cGFnaW5nLikNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gZ0ludGVsU2lsaWNvblBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFZUZFBvbGljeVByb3BlcnR5TWFza3wxfFVJTlQ4fDB4MDAwDQo+ID4g PiAwMA0KPiA+ID4gPiAwMDINCj4gPiA+ID4NCj4gPiA+ID4gQ2FuIHdlIGFsaWduIHRoZSBzb2x1 dGlvbiBpbiBEWEUvU01NIHBhZ2luZyBzb2x1dGlvbj8NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206 IFNoZW5nLCBXIDx3LnNoZW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBXZWRuZXNkYXks IE5vdmVtYmVyIDE4LCAyMDIwIDk6MTggQU0NCj4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPiA+ID4gPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5 LCBSYW5nYXNhaSBWDQo+ID4gPiA+ID4gPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsg WWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsNCj4gPiA+ID4gPiBIdWFuZywgSmVu bnkgPGplbm55Lmh1YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjNd IEludGVsU2lsaWNvblBrZy9WVGQ6IEFkZCBpb21tdSA1IGxldmVsIHBhZ2luZw0KPiA+ID4gPiA+ IHN1cHBvcnQNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFN1cHBvcnQgaW9tbXUgNSBsZXZlbCBwYWdp bmcgZm9yIHRyYW5zbGF0aW9uIHRhYmxlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gUkVGOiBodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjcNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFNoZW5nIFdlaSA8dy5zaGVuZ0BpbnRlbC5jb20+ DQo+ID4gPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ID4gPiBDYzog UmFuZ2FzYWkgViBDaGFnYW50eSA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+DQo+ID4g PiA+ID4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gPiA+IENj OiBKZW5ueSBIdWFuZyA8amVubnkuaHVhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ ID4gPiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi5jICAgICAg ICB8ICAgNCArLQ0KPiA+ID4gPiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJv dGVjdGlvbi5oICAgICAgICB8ICAxOSArLQ0KPiA+ID4gPiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50 ZWxWVGREeGUvVHJhbnNsYXRpb25UYWJsZS5jICAgICB8IDI4Nw0KPiA+ID4gKysrKysrKysrKysr KysrLS0NCj4gPiA+ID4gPiAtLS0tDQo+ID4gPiA+ID4gIC4uLi9GZWF0dXJlL1ZUZC9JbnRlbFZU ZER4ZS9UcmFuc2xhdGlvblRhYmxlRXguYyAgIHwgIDM1ICsrLQ0KPiA+ID4gPiA+ICAuLi4vRmVh dHVyZS9WVGQvSW50ZWxWVGREeGUvVnRkUmVnLmMgICAgICAgICAgICAgICB8ICAxMCArLQ0KPiA+ ID4gPiA+ICBTaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZGVj ICB8ICAgMyArDQo+ID4gPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMjU4IGluc2VydGlvbnMoKyks IDEwMCBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50 ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+ID4gPiBjDQo+ID4gPiA+ID4NCj4gPiBiL1Np bGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVBy b3RlY3Rpb24uDQo+ID4gPiA+ID4gYw0KPiA+ID4gPiA+IGluZGV4IDliNjEzNWVmLi42Mjg1NjVl ZSAxMDA2NDQNCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9J bnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4g PiA+ID4gPiBjDQo+ID4gPiA+ID4gKysrDQo+ID4gPiA+ID4NCj4gPiBiL1NpbGljb24vSW50ZWwv SW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uDQo+ ID4gPiA+ID4gYw0KPiA+ID4gPiA+IEBAIC01MjMsMTAgKzUyMywxMCBAQCBTZXR1cFZ0ZCAoDQo+ ID4gPiA+ID4gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgbVZ0ZFVuaXROdW1iZXI7IEluZGV4 KyspIHsNCj4gPiA+ID4gPiAgICAgIERFQlVHICgoREVCVUdfSU5GTywiVlREIFVuaXQgJWQgKFNl Z21lbnQ6ICUwNHgpXG4iLCBJbmRleCwNCj4gPiA+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW0lu ZGV4XS5TZWdtZW50KSk7DQo+ID4gPiA+ID4gICAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJ bmRleF0uRXh0Um9vdEVudHJ5VGFibGUgIT0gTlVMTCkgew0KPiA+ID4gPiA+IC0gICAgICBEdW1w RG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+ID4gKG1WdGRVbml0SW5mb3JtYXRpb25b SW5kZXhdLkV4dFJvb3RFbnRyeVRhYmxlKTsNCj4gPiA+ID4gPiArICAgICAgRHVtcERtYXJFeHRD b250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gPiA+IChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5F eHRSb290RW50cnlUYWJsZSwNCj4gPiA+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5J czVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gICAgICBpZiAobVZ0 ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uUm9vdEVudHJ5VGFibGUgIT0gTlVMTCkgew0KPiA+ID4g PiA+IC0gICAgICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+ID4gKG1WdGRVbml0 SW5mb3JtYXRpb25bSW5kZXhdLlJvb3RFbnRyeVRhYmxlKTsNCj4gPiA+ID4gPiArICAgICAgRHVt cERtYXJDb250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gPiA+IChtVnRkVW5pdEluZm9ybWF0aW9uW0lu ZGV4XS5Sb290RW50cnlUYWJsZSwNCj4gPiA+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4 XS5JczVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gICAgfQ0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+DQo+ID4gYS9TaWxpY29uL0lu dGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9u Lg0KPiA+ID4gPiA+IGgNCj4gPiA+ID4gPg0KPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGlj b25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+ID4gPiBo DQo+ID4gPiA+ID4gaW5kZXggYTMzMzFkYjguLmY2NDFjZWEwIDEwMDY0NA0KPiA+ID4gPiA+IC0t LQ0KPiA+ID4gPiA+DQo+ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJl L1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9uLg0KPiA+ID4gPiA+IGgNCj4gPiA+ID4gPiAr KysNCj4gPiA+ID4gPg0KPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVy ZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+ID4gPiBoDQo+ID4gPiA+ID4g QEAgLTc3LDYgKzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4gPiA+ICAgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIEhhc0RpcnR5Q29udGV4dDsNCj4gPiA+ID4gPiAgICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eVBhZ2VzOw0KPiA+ID4gPiA+ ICAgIFBDSV9ERVZJQ0VfSU5GT1JNQVRJT04gICAgICAgICAgIFBjaURldmljZUluZm87DQo+ID4g PiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgSXM1TGV2ZWxQYWdpbmc7 DQo+ID4gPiA+ID4gIH0gVlREX1VOSVRfSU5GT1JNQVRJT047DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgLy8NCj4gPiA+ID4gPiBAQCAtMzc1LDMxICszNzYsMzcgQEAgUGFyc2VEbWFyQWNwaVRhYmxl Um1yciAoDQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4gPiA+ICAgIER1bXAgRE1BUiBjb250ZXh0IGVu dHJ5IHRhYmxlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSAgQHBhcmFtW2luXSAgUm9vdEVudHJ5 IERNQVIgcm9vdCBlbnRyeS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBSb290RW50cnkgICAg ICAgRE1BUiByb290IGVudHJ5Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFn aW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiA+ID4gICoqLw0KPiA+ID4g PiA+ICBWT0lEDQo+ID4gPiA+ID4gIER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUgKA0KPiA+ID4g PiA+IC0gIElOIFZURF9ST09UX0VOVFJZICpSb290RW50cnkNCj4gPiA+ID4gPiArICBJTiBWVERf Uk9PVF9FTlRSWSAqUm9vdEVudHJ5LA0KPiA+ID4gPiA+ICsgIElOIEJPT0xFQU4gSXM1TGV2ZWxQ YWdpbmcNCj4gPiA+ID4gPiAgICApOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4g PiA+ICAgIER1bXAgRE1BUiBleHRlbmRlZCBjb250ZXh0IGVudHJ5IHRhYmxlLg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gLSAgQHBhcmFtW2luXSAgRXh0Um9vdEVudHJ5IERNQVIgZXh0ZW5kZWQgcm9v dCBlbnRyeS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFeHRSb290RW50cnkgICAgRE1BUiBl eHRlbmRlZCByb290IGVudHJ5Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFn aW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiA+ID4gICoqLw0KPiA+ID4g PiA+ICBWT0lEDQo+ID4gPiA+ID4gIER1bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKA0KPiA+ ID4gPiA+IC0gIElOIFZURF9FWFRfUk9PVF9FTlRSWSAqRXh0Um9vdEVudHJ5DQo+ID4gPiA+ID4g KyAgSU4gVlREX0VYVF9ST09UX0VOVFJZICpFeHRSb290RW50cnksICBJTiBCT09MRUFODQo+ID4g SXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gPiAgICApOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIC8q Kg0KPiA+ID4gPiA+ICAgIER1bXAgRE1BUiBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gLSAgQHBhcmFtW2luXSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSBU aGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICBUaGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4g PiA+ID4gPiArICBAcGFyYW1baW5dICBJczVMZXZlbFBhZ2luZyAgICAgICAgICBJZiBpdCBpcyB0 aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiA+ID4gICoqLw0KPiA+ID4gPiA+ICBWT0lEDQo+ID4g PiA+ID4gIER1bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICgNCj4gPiA+ID4gPiAtICBJTiBWT0lE ICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5DQo+ID4gPiA+ID4gKyAgSU4gVk9JRCAqU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSwNCj4gPiA+ID4gPiArICBJTiBCT09MRUFOIElzNUxldmVsUGFnaW5nDQo+ ID4gPiA+ID4gICAgKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAvKioNCj4gPiA+ID4gPiBkaWZm IC0tZ2l0DQo+ID4gPiA+ID4NCj4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0Zl YXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFiDQo+ID4gPiA+ID4gbGUuYw0KPiA+ ID4gPiA+DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9J bnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYg0KPiA+ID4gPiA+IGxlLmMNCj4gPiA+ID4gPiBpbmRl eCAyMDFkNjYzZC4uY2I1OTg2MGEgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4NCj4g PiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhl L1RyYW5zbGF0aW9uVGFiDQo+ID4gPiA+ID4gbGUuYw0KPiA+ID4gPiA+ICsrKw0KPiA+ID4gPiA+ DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZU ZER4ZS9UcmFuc2xhdGlvblRhYg0KPiA+ID4gPiA+IGxlLmMgQEAgLTEyOCwxMSArMTI4LDMyIEBA IENyZWF0ZUNvbnRleHRFbnRyeSAoDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICAgIERFQlVHICgo REVCVUdfSU5GTywiU291cmNlOiBTJTA0eCBCJTAyeCBEJTAyeCBGJTAyeFxuIiwNCj4gPiA+ID4g PiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5TZWdtZW50LCBTb3VyY2VJZC5CaXRzLkJ1 cywNCj4gPiA+ID4gPiBTb3VyY2VJZC5CaXRzLkRldmljZSwgU291cmNlSWQuQml0cy5GdW5jdGlv bikpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25b VnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgPT0gMCkNCj4gPiA+IHsNCj4gPiA+ ID4gPiAtICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISA0LWxldmVsIHBhZ2UtdGFibGUg aXMgbm90IHN1cHBvcnRlZCBvbg0KPiA+ID4gPiA+IFZURCAlZCAhISEhXG4iLCBWdGRJbmRleCkp Ow0KPiA+ID4gPiA+ICsgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQ YWdpbmcgPSBGQUxTRTsNCj4gPiA+ID4gPiArICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQzKSAhPSAwKQ0KPiA+ID4gew0KPiA+ID4g PiA+ICsgICAgICBpZiAoKFBjZEdldDgoUGNkVlRkUG9saWN5UHJvcGVydHlNYXNrKSAmIEJJVDMp ICE9IDApIHsNCj4gPiA+ID4gPiArICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJGb3JjZSB0 byB1c2UgNC1sZXZlbCBwYWdlLXRhYmxlIG9uIFZURA0KPiA+ID4gPiA+ICsgJWRcbiIsDQo+ID4g PiA+ID4gVnRkSW5kZXgpKTsNCj4gPiA+ID4gPiArICAgICAgICBDb250ZXh0RW50cnktPkJpdHMu QWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gPiA+ICsgICAgICB9IGlmICgoUGNkR2V0OChQY2RW VGRQb2xpY3lQcm9wZXJ0eU1hc2spICYgQklUNCkgIT0gMCkgew0KPiA+ID4gPiA+ICsgICAgICAg IERFQlVHKChERUJVR19FUlJPUiwgIkZvcmNlIHRvIHVzZSA1LWxldmVsIHBhZ2UtdGFibGUgb24g VlREDQo+ID4gPiA+ID4gKyAlZFxuIiwNCj4gPiA+ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4gPiA+ ICsgICAgICAgIENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDM7DQo+ID4gPiA+ ID4gKyAgICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcg PSBUUlVFOw0KPiA+ID4gPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgICAgIGlm IChtQWNwaURtYXJUYWJsZS0+SG9zdEFkZHJlc3NXaWR0aCA+IDQ4KSB7DQo+ID4gPiA+ID4gKyAg ICAgICAgICBERUJVRygoREVCVUdfRVJST1IsICJVc2luZyA1LWxldmVsIHBhZ2UtdGFibGUgb24N Cj4gVlREICVkXG4iLA0KPiA+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ID4gKyAgICAgICAg ICBDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgzOw0KPiA+ID4gPiA+ICsgICAg ICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBUUlVF Ow0KPiA+ID4gPiA+ICsgICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICBERUJV RygoREVCVUdfRVJST1IsICJVc2luZyA0LWxldmVsIHBhZ2UtdGFibGUgb24NCj4gVlREICVkXG4i LA0KPiA+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ID4gKyAgICAgICAgICBDb250ZXh0RW50 cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgfSBlbHNlIGlmICgobVZ0ZFVuaXRJbmZvcm1h dGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJg0KPiA+ID4gPiA+ICsgQklUMikgIT0N Cj4gPiA+ID4gPiAwKSB7DQo+ID4gPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVz aW5nIDQtbGV2ZWwgcGFnZS10YWJsZSBvbiBWVEQgJWRcbiIsDQo+ID4gPiA+ID4gVnRkSW5kZXgp KTsNCj4gPiA+ID4gPiArICAgICAgQ29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4 MjsNCj4gPiA+ID4gPiArICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICAgIERFQlVHKChERUJV R19FUlJPUiwgIiEhISEgUGFnZS10YWJsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgb24NCj4gPiA+ ID4gPiBWVEQgJWQgISEhIVxuIiwgVnRkSW5kZXgpKTsNCj4gPiA+ID4gPiAgICAgICAgcmV0dXJu IEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gPiAtICAgIENvbnRl eHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7DQo+ID4gPiA+ID4gICAgfQ0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LA0KPiA+ID4g PiA+IChVSU5UTiltVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5Sb290RW50cnlUYWJsZSwN Cj4gPiA+ID4gPiBFRklfUEFHRVNfVE9fU0laRShFbnRyeVRhYmxlUGFnZXMpKTsNCj4gPiA+ID4g PiBAQCAtMTQ4LDYgKzE2OSw3IEBAIENyZWF0ZUNvbnRleHRFbnRyeSAoDQo+ID4gPiA+ID4gICAg QHBhcmFtW2luXSAgTWVtb3J5QmFzZSAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG9mIHRoZSBt ZW1vcnkuDQo+ID4gPiA+ID4gICAgQHBhcmFtW2luXSAgTWVtb3J5TGltaXQgICAgICAgICAgICAg ICAgIFRoZSBsaW1pdCBvZiB0aGUgbWVtb3J5Lg0KPiA+ID4gPiA+ICAgIEBwYXJhbVtpbl0gIElv TW11QWNjZXNzICAgICAgICAgICAgICAgICBUaGUgSU9NTVUgYWNjZXNzLg0KPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICAgICAgICAgICAgICBJZiBpdCBpcyB0aGUgNSBs ZXZlbCBwYWdpbmcuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICBAcmV0dXJuIFRoZSBzZWNvbmQg bGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ID4gPiA+ICAqKi8NCj4gPiA+ID4gPiBAQCAtMTU3LDE2 ICsxNzksMjMgQEAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgNCj4gPiA+ID4g PiAgICBJTiBWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqU2Vjb25kTGV2ZWxQYWdpbmdF bnRyeSwNCj4gPiA+ID4gPiAgICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICBNZW1v cnlCYXNlLA0KPiA+ID4gPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIE1l bW9yeUxpbWl0LA0KPiA+ID4gPiA+IC0gIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAg IElvTW11QWNjZXNzDQo+ID4gPiA+ID4gKyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg ICAgSW9NbXVBY2Nlc3MsDQo+ID4gPiA+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAg ICAgICAgSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gPiAgICApDQo+ID4gPiA+ID4gIHsNCj4gPiA+ ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg1Ow0KPiA+ID4gPiA+ ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDQ7DQo+ID4gPiA+ID4gICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4MzsNCj4gPiA+ID4gPiAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgyOw0KPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICBMdmw1U3RhcnQ7DQo+ID4gPiA+ID4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIEx2bDVFbmQ7DQo+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgIEx2bDRQYWdlc1N0YXJ0Ow0KPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICBMdmw0UGFnZXNFbmQ7DQo+ID4gPiA+ID4gICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDRTdGFydDsNCj4gPiA+ID4gPiAgICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgTHZsNEVuZDsNCj4gPiA+ID4gPiAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgTHZsM1N0YXJ0Ow0KPiA+ID4gPiA+ICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBMdmwzRW5kOw0KPiA+ID4gPiA+ICsgIFZURF9TRUNPTkRfTEVW RUxfUEFHSU5HX0VOVFJZICAqTHZsNVB0RW50cnk7DQo+ID4gPiA+ID4gICAgVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgICpMdmw0UHRFbnRyeTsNCj4gPiA+ID4gPiAgICBWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2bDNQdEVudHJ5Ow0KPiA+ID4gPiA+ICAgIFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZICAqTHZsMlB0RW50cnk7IEBAIC0xODQsNw0KPiA+ICsyMTMs Nw0KPiA+ID4gPiBAQA0KPiA+ID4gPiA+IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnlUYWJs ZSAoDQo+ID4gPiA+ID4gICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVMTCkgew0K PiA+ID4gPiA+ICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IEFsbG9jYXRlWmVyb1BhZ2Vz ICgxKTsNCj4gPiA+ID4gPiAgICAgIGlmIChTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IE5VTEwp IHsNCj4gPiA+ID4gPiAtICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiQ291bGQgbm90IEFsbG9j IExWTDQgUFQuIFxuIikpOw0KPiA+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCJD b3VsZCBub3QgQWxsb2MgTFZMNCBvciBMVkw1IFBULiBcbiIpKTsNCj4gPiA+ID4gPiAgICAgICAg cmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gICAgICBGbHVzaFBhZ2VU YWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0KPiA+ ID4gPiA+IEVGSV9QQUdFU19UT19TSVpFKDEpKTsgQEAgLTE5Nyw2NiArMjI2LDEwOSBAQA0KPiA+ ID4gPiA+IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnlUYWJsZSAoDQo+ID4gPiA+ID4gICAg ICByZXR1cm4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ID4gPiAgICB9DQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiAtICBMdmw0U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCAzOSkg JiAweDFGRjsNCj4gPiA+ID4gPiAtICBMdmw0RW5kID0gUlNoaWZ0VTY0IChFbmRBZGRyZXNzIC0g MSwgMzkpICYgMHgxRkY7DQo+ID4gPiA+ID4gKyAgaWYgKElzNUxldmVsUGFnaW5nKSB7DQo+ID4g PiA+ID4gKyAgICBMdmw1U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCA0OCkgJiAweDFG RjsNCj4gPiA+ID4gPiArICAgIEx2bDVFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCA0 OCkgJiAweDFGRjsNCj4gPiA+ID4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw1U3Rh cnQgLSAweCV4LCBMdmw1RW5kIC0gMHgleFxuIiwNCj4gPiA+ID4gPiArIEx2bDVTdGFydCwNCj4g PiA+ID4gPiBMdmw1RW5kKSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtICBERUJVRyAoKERFQlVH X0lORk8sIiAgTHZsNFN0YXJ0IC0gMHgleCwgTHZsNEVuZCAtIDB4JXhcbiIsDQo+ID4gPiA+ID4g THZsNFN0YXJ0LCBMdmw0RW5kKSk7DQo+ID4gPiA+ID4gKyAgICBMdmw0U3RhcnQgPSBSU2hpZnRV NjQgKEJhc2VBZGRyZXNzLCAzOSkgJiAweDFGRjsNCj4gPiA+ID4gPiArICAgIEx2bDRFbmQgPSBS U2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFGRjsNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IC0gIEx2bDRQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4g PiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ID4gPiA+IC0gIGZvciAoSW5kZXg0 ID0gTHZsNFN0YXJ0OyBJbmRleDQgPD0gTHZsNEVuZDsgSW5kZXg0KyspIHsNCj4gPiA+ID4gPiAt ICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gLSAg ICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVa ZXJvUGFnZXMgKDEpOw0KPiA+ID4gPiA+IC0gICAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5V aW50NjQgPT0gMCkgew0KPiA+ID4gPiA+IC0gICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIiEh ISEhISBBTExPQ0FURSBMVkw0IFBBR0UgRkFJTA0KPiA+ID4gPiA+ICgweCV4KSEhISEhIVxuIiwg SW5kZXg0KSk7DQo+ID4gPiA+ID4gLSAgICAgICAgQVNTRVJUKEZBTFNFKTsNCj4gPiA+ID4gPiAt ICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiAtICAgICAgfQ0KPiA+ID4gPiA+IC0gICAg ICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiAoVUlOVE4pTHZsNFB0RW50 cnlbSW5kZXg0XS5VaW50NjQsDQo+ID4gPiA+ID4gU0laRV80S0IpOw0KPiA+ID4gPiA+IC0gICAg ICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmlidXRlICgmTHZsNFB0RW50cnlbSW5kZXg0 XSwNCj4gPiA+ID4gPiBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJX0lPTU1VX0FDQ0VT U19XUklURSk7DQo+ID4gPiA+ID4gLSAgICB9DQo+ID4gPiA+ID4gKyAgICBMdmw0UGFnZXNTdGFy dCA9IChMdmw1U3RhcnQ8PDkpIHwgTHZsNFN0YXJ0Ow0KPiA+ID4gPiA+ICsgICAgTHZsNFBhZ2Vz RW5kID0gKEx2bDVFbmQ8PDkpIHwgTHZsNEVuZDsNCj4gPiA+ID4gPiArICAgIERFQlVHICgoREVC VUdfSU5GTywiICBMdmw0UGFnZXNTdGFydCAtIDB4JXgsIEx2bDRQYWdlc0VuZCAtDQo+ID4gPiA+ ID4gKyAweCV4XG4iLA0KPiA+ID4gPiA+IEx2bDRQYWdlc1N0YXJ0LCBMdmw0UGFnZXNFbmQpKTsN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IC0gICAgTHZsM1N0YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRk cmVzcywgMzApICYgMHgxRkY7DQo+ID4gPiA+ID4gLSAgICBpZiAoQUxJR05fVkFMVUVfTE9XKEJh c2VBZGRyZXNzICsgU0laRV8xR0IsIFNJWkVfMUdCKSA8PQ0KPiA+ID4gPiA+IEVuZEFkZHJlc3Mp IHsNCj4gPiA+ID4gPiAtICAgICAgTHZsM0VuZCA9IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSkgLQ0KPiAxOw0KPiA+ID4gPiA+IC0gICAgfSBlbHNlIHsNCj4g PiA+ID4gPiAtICAgICAgTHZsM0VuZCA9IFJTaGlmdFU2NCAoRW5kQWRkcmVzcyAtIDEsIDMwKSAm IDB4MUZGOw0KPiA+ID4gPiA+ICsgICAgTHZsNVB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkNCj4gPiA+ID4gPiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ ID4gKyAgfSBlbHNlIHsNCj4gPiA+ID4gPiArICAgIEx2bDVTdGFydCA9IFJTaGlmdFU2NCAoQmFz ZUFkZHJlc3MsIDQ4KSAmIDB4MUZGOw0KPiA+ID4gPiA+ICsgICAgTHZsNUVuZCA9IEx2bDVTdGFy dDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICBMdmw0U3RhcnQgPSBSU2hpZnRVNjQgKEJh c2VBZGRyZXNzLCAzOSkgJiAweDFGRjsNCj4gPiA+ID4gPiArICAgIEx2bDRFbmQgPSBSU2hpZnRV NjQgKEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFGRjsNCj4gPiA+ID4gPiArICAgIERFQlVHICgo REVCVUdfSU5GTywiICBMdmw0U3RhcnQgLSAweCV4LCBMdmw0RW5kIC0gMHgleFxuIiwNCj4gPiA+ ID4gPiArIEx2bDRTdGFydCwNCj4gPiA+ID4gPiBMdmw0RW5kKSk7DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkN Cj4gPiA+ID4gPiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArICBmb3IgKEluZGV4NSA9IEx2bDVTdGFydDsgSW5kZXg1IDw9 IEx2bDVFbmQ7IEluZGV4NSsrKSB7DQo+ID4gPiA+ID4gKyAgICBpZiAoSXM1TGV2ZWxQYWdpbmcp IHsNCj4gPiA+ID4gPiArICAgICAgaWYgKEx2bDVQdEVudHJ5W0luZGV4NV0uVWludDY0ID09IDAp IHsNCj4gPiA+ID4gPiArICAgICAgICBMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCA9IChVSU5U NjQpKFVJTlROKUFsbG9jYXRlWmVyb1BhZ2VzDQo+ID4gKDEpOw0KPiA+ID4gPiA+ICsgICAgICAg IGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAg ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NBVEUgTFZMNCBQQUdFIEZBSUwN Cj4gPiA+ID4gPiAoMHgleCkhISEhISFcbiIsIEluZGV4NSkpOw0KPiA+ID4gPiA+ICsgICAgICAg ICAgQVNTRVJUKEZBTFNFKTsNCj4gPiA+ID4gPiArICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiArICAgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9y eSAoVnRkSW5kZXgsDQo+ID4gPiA+ID4gKyAoVUlOVE4pTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50 NjQsDQo+ID4gPiA+ID4gU0laRV80S0IpOw0KPiA+ID4gPiA+ICsgICAgICAgIFNldFNlY29uZExl dmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZMdmw1UHRFbnRyeVtJbmRleDVdLA0KPiA+ID4gPiA+ IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsNCj4g PiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgICBMdmw0U3RhcnQgPSBMdmw0UGFnZXNT dGFydCAmIDB4MUZGOw0KPiA+ID4gPiA+ICsgICAgICBpZiAoKChJbmRleDUrMSk8PDkpID4gTHZs NFBhZ2VzRW5kKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgTHZsNEVuZCA9IFNJWkVfNEtCL3NpemVv ZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSkNCj4gLQ0KPiA+ID4gMTs7DQo+ID4gPiA+ ID4gKyAgICAgICAgTHZsNFBhZ2VzU3RhcnQgPSAoSW5kZXg1KzEpPDw5Ow0KPiA+ID4gPiA+ICsg ICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAgICAgIEx2bDRFbmQgPSBMdmw0UGFnZXNFbmQg JiAweDFGRjsNCj4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgICBERUJVRyAoKERF QlVHX0lORk8sIiAgTHZsNSgweCV4KTogTHZsNFN0YXJ0IC0gMHgleCwgTHZsNEVuZCAtDQo+ID4g PiA+ID4gKyAweCV4XG4iLA0KPiA+ID4gPiA+IEluZGV4NSwgTHZsNFN0YXJ0LCBMdmw0RW5kKSk7 DQo+ID4gPiA+ID4gKyAgICAgIEx2bDRQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5H X0VOVFJZDQo+ID4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDVQdEVudHJ5 W0luZGV4NV0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+ID4gTHZsNVB0RW50cnlbSW5kZXg1XS5C aXRzLkFkZHJlc3NIaSk7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gLSAgICBERUJVRyAo KERFQlVHX0lORk8sIiAgTHZsNCgweCV4KTogTHZsM1N0YXJ0IC0gMHgleCwgTHZsM0VuZCAtDQo+ ID4gPiAweCV4XG4iLA0KPiA+ID4gPiA+IEluZGV4NCwgTHZsM1N0YXJ0LCBMdmwzRW5kKSk7DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAtICAgIEx2bDNQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxf UEFHSU5HX0VOVFJZDQo+ID4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDRQ dEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+ID4gTHZsNFB0RW50cnlbSW5k ZXg0XS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiA+ID4gLSAgICBmb3IgKEluZGV4MyA9IEx2bDNT dGFydDsgSW5kZXgzIDw9IEx2bDNFbmQ7IEluZGV4MysrKSB7DQo+ID4gPiA+ID4gLSAgICAgIGlm IChMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gLSAgICAgICAg THZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9Q YWdlcw0KPiA+ICgxKTsNCj4gPiA+ID4gPiAtICAgICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgz XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gPiA+IC0gICAgICAgICAgREVCVUcgKChERUJVR19FUlJP UiwiISEhISEhIEFMTE9DQVRFIExWTDMgUEFHRSBGQUlMICgweCV4LA0KPiA+ID4gPiA+IDB4JXgp ISEhISEhXG4iLCBJbmRleDQsIEluZGV4MykpOw0KPiA+ID4gPiA+ICsgICAgZm9yIChJbmRleDQg PSBMdmw0U3RhcnQ7IEluZGV4NCA8PSBMdmw0RW5kOyBJbmRleDQrKykgew0KPiA+ID4gPiA+ICsg ICAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gPiA+ICsg ICAgICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2Nh dGVaZXJvUGFnZXMNCj4gPiAoMSk7DQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKEx2bDRQdEVudHJ5 W0luZGV4NF0uVWludDY0ID09IDApIHsNCj4gPiA+ID4gPiArICAgICAgICAgIERFQlVHICgoREVC VUdfRVJST1IsIiEhISEhISBBTExPQ0FURSBMVkw0IFBBR0UgRkFJTA0KPiA+ID4gPiA+ICgweCV4 KSEhISEhIVxuIiwgSW5kZXg0KSk7DQo+ID4gPiA+ID4gICAgICAgICAgICBBU1NFUlQoRkFMU0Up Ow0KPiA+ID4gPiA+ICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gICAgICAgICAg fQ0KPiA+ID4gPiA+IC0gICAgICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwNCj4g PiA+IChVSU5UTilMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCwNCj4gPiA+ID4gPiBTSVpFXzRL Qik7DQo+ID4gPiA+ID4gLSAgICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0 ZSAoJkx2bDNQdEVudHJ5W0luZGV4M10sDQo+ID4gPiA+ID4gRURLSUlfSU9NTVVfQUNDRVNTX1JF QUQgfCBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KPiA+ID4gPiA+ICsgICAgICAgIEZsdXNo UGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwNCj4gPiA+ID4gPiArIChVSU5UTilMdmw0UHRFbnRy eVtJbmRleDRdLlVpbnQ2NCwNCj4gPiA+ID4gPiBTSVpFXzRLQik7DQo+ID4gPiA+ID4gKyAgICAg ICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAoJkx2bDRQdEVudHJ5W0luZGV4 NF0sDQo+ID4gPiA+ID4gRURLSUlfSU9NTVVfQUNDRVNTX1JFQUQgfCBFREtJSV9JT01NVV9BQ0NF U1NfV1JJVEUpOw0KPiA+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtICAg ICAgTHZsMlB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4g PiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsM1B0RW50cnlbSW5kZXgzXS5CaXRzLkFk ZHJlc3NMbywNCj4gPiA+ID4gPiBMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0hpKTsN Cj4gPiA+ID4gPiAtICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIgPA0KPiA+ID4gPiA+IFNJ WkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4MisrKSB7 DQo+ID4gPiA+ID4gLSAgICAgICAgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPSBCYXNlQWRk cmVzczsNCj4gPiA+ID4gPiAtICAgICAgICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmli dXRlICgmTHZsMlB0RW50cnlbSW5kZXgyXSwNCj4gPiA+ID4gPiBJb01tdUFjY2Vzcyk7DQo+ID4g PiA+ID4gLSAgICAgICAgTHZsMlB0RW50cnlbSW5kZXgyXS5CaXRzLlBhZ2VTaXplID0gMTsNCj4g PiA+ID4gPiAtICAgICAgICBCYXNlQWRkcmVzcyArPSBTSVpFXzJNQjsNCj4gPiA+ID4gPiArICAg ICAgTHZsM1N0YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRkcmVzcywgMzApICYgMHgxRkY7DQo+ID4g PiA+ID4gKyAgICAgIGlmIChBTElHTl9WQUxVRV9MT1coQmFzZUFkZHJlc3MgKyBTSVpFXzFHQiwg U0laRV8xR0IpIDw9DQo+ID4gPiA+ID4gRW5kQWRkcmVzcykgew0KPiA+ID4gPiA+ICsgICAgICAg IEx2bDNFbmQgPSBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkp DQo+IC0NCj4gPiAxOw0KPiA+ID4gPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ICsgICAg ICAgIEx2bDNFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzMCkgJiAweDFGRjsNCj4g PiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sIiAg THZsNCgweCV4KTogTHZsM1N0YXJ0IC0gMHgleCwgTHZsM0VuZCAtDQo+ID4gPiA+ID4gKyAweCV4 XG4iLA0KPiA+ID4gPiA+IEluZGV4NCwgTHZsM1N0YXJ0LCBMdmwzRW5kKSk7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgICAgICBMdmwzUHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lO R19FTlRSWQ0KPiA+ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhMdmw0UHRFbnRy eVtJbmRleDRdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gPiA+IEx2bDRQdEVudHJ5W0luZGV4NF0u Qml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gPiA+ICsgICAgICBmb3IgKEluZGV4MyA9IEx2bDNTdGFy dDsgSW5kZXgzIDw9IEx2bDNFbmQ7IEluZGV4MysrKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgaWYg KEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID09IDApIHsNCj4gPiA+ID4gPiArICAgICAgICAg IEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJv UGFnZXMNCj4gPiA+ICgxKTsNCj4gPiA+ID4gPiArICAgICAgICAgIGlmIChMdmwzUHRFbnRyeVtJ bmRleDNdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIERFQlVHICgoREVC VUdfRVJST1IsIiEhISEhISBBTExPQ0FURSBMVkwzIFBBR0UgRkFJTA0KPiA+ID4gPiA+ICsgKDB4 JXgsDQo+ID4gPiA+ID4gMHgleCkhISEhISFcbiIsIEluZGV4NCwgSW5kZXgzKSk7DQo+ID4gPiA+ ID4gKyAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIHJl dHVybiBOVUxMOw0KPiA+ID4gPiA+ICsgICAgICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgICAgICAg Rmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LA0KPiA+ID4gPiA+ICsgKFVJTlROKUx2bDNQ dEVudHJ5W0luZGV4M10uVWludDY0LA0KPiA+ID4gPiA+IFNJWkVfNEtCKTsNCj4gPiA+ID4gPiAr ICAgICAgICAgIFNldFNlY29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZMdmwzUHRFbnRy eVtJbmRleDNdLA0KPiA+ID4gPiA+IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9N TVVfQUNDRVNTX1dSSVRFKTsNCj4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgICAgICAgIEx2bDJQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VO VFJZDQo+ID4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDNQdEVudHJ5W0lu ZGV4M10uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+ID4gTHZsM1B0RW50cnlbSW5kZXgzXS5CaXRz LkFkZHJlc3NIaSk7DQo+ID4gPiA+ID4gKyAgICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIg PA0KPiA+ID4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRS WSk7IEluZGV4MisrKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICBMdmwyUHRFbnRyeVtJbmRleDJd LlVpbnQ2NCA9IEJhc2VBZGRyZXNzOw0KPiA+ID4gPiA+ICsgICAgICAgICAgU2V0U2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAoJkx2bDJQdEVudHJ5W0luZGV4Ml0sDQo+ID4gPiA+ID4g SW9NbXVBY2Nlc3MpOw0KPiA+ID4gPiA+ICsgICAgICAgICAgTHZsMlB0RW50cnlbSW5kZXgyXS5C aXRzLlBhZ2VTaXplID0gMTsNCj4gPiA+ID4gPiArICAgICAgICAgIEJhc2VBZGRyZXNzICs9IFNJ WkVfMk1COw0KPiA+ID4gPiA+ICsgICAgICAgICAgaWYgKEJhc2VBZGRyZXNzID49IE1lbW9yeUxp bWl0KSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ICsgICAgICAg ICAgfQ0KPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiArICAgICAgICBGbHVzaFBhZ2VU YWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTilMdmwyUHRFbnRyeSwNCj4gPiA+ID4gPiArIFNJ WkVfNEtCKTsNCj4gPiA+ID4gPiAgICAgICAgICBpZiAoQmFzZUFkZHJlc3MgPj0gTWVtb3J5TGlt aXQpIHsNCj4gPiA+ID4gPiAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ICAgICAgICAgIH0N Cj4gPiA+ID4gPiAgICAgICAgfQ0KPiA+ID4gPiA+IC0gICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9y eSAoVnRkSW5kZXgsIChVSU5UTilMdmwyUHRFbnRyeSwgU0laRV80S0IpOw0KPiA+ID4gPiA+ICsg ICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsM1B0RW50cnlb THZsM1N0YXJ0XSwNCj4gPiA+ID4gPiAoVUlOVE4pJkx2bDNQdEVudHJ5W0x2bDNFbmQgKyAxXSAt IChVSU5UTikmTHZsM1B0RW50cnlbTHZsM1N0YXJ0XSk7DQo+ID4gPiA+ID4gICAgICAgIGlmIChC YXNlQWRkcmVzcyA+PSBNZW1vcnlMaW1pdCkgew0KPiA+ID4gPiA+ICAgICAgICAgIGJyZWFrOw0K PiA+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gLSAgICBGbHVz aFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsM1B0RW50cnlbTHZsM1N0YXJ0 XSwNCj4gPiA+ID4gPiAoVUlOVE4pJkx2bDNQdEVudHJ5W0x2bDNFbmQgKyAxXSAtIChVSU5UTikm THZsM1B0RW50cnlbTHZsM1N0YXJ0XSk7DQo+ID4gPiA+ID4gLSAgICBpZiAoQmFzZUFkZHJlc3Mg Pj0gTWVtb3J5TGltaXQpIHsNCj4gPiA+ID4gPiAtICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gLSAg ICB9DQo+ID4gPiA+ID4gKyAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5U TikmTHZsNFB0RW50cnlbTHZsNFN0YXJ0XSwNCj4gPiA+ID4gPiAoVUlOVE4pJkx2bDRQdEVudHJ5 W0x2bDRFbmQgKyAxXSAtIChVSU5UTikmTHZsNFB0RW50cnlbTHZsNFN0YXJ0XSk7DQo+ID4gPiA+ ID4gICAgfQ0KPiA+ID4gPiA+IC0gIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJ TlROKSZMdmw0UHRFbnRyeVtMdmw0U3RhcnRdLA0KPiA+ID4gPiA+IChVSU5UTikmTHZsNFB0RW50 cnlbTHZsNEVuZCArIDFdIC0gKFVJTlROKSZMdmw0UHRFbnRyeVtMdmw0U3RhcnRdKTsNCj4gPiA+ ID4gPiArICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsNVB0RW50 cnlbTHZsNVN0YXJ0XSwNCj4gPiA+ID4gPiAoVUlOVE4pJkx2bDVQdEVudHJ5W0x2bDVFbmQgKyAx XSAtIChVSU5UTikmTHZsNVB0RW50cnlbTHZsNVN0YXJ0XSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgICByZXR1cm4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ID4gPiAgfQ0KPiA+ID4g PiA+IEBAIC0yNjYsMjYgKzMzOCwyOCBAQCBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFi bGUgKA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgQHBhcmFtW2luXSAgVnRkSW5kZXggICAgICAg ICAgICAgICAgICAgIFRoZSBpbmRleCBvZiB0aGUgVlRkIGVuZ2luZS4NCj4gPiA+ID4gPiAgICBA cGFyYW1baW5dICBJb01tdUFjY2VzcyAgICAgICAgICAgICAgICAgVGhlIElPTU1VIGFjY2Vzcy4N Cj4gPiA+ID4gPiArICBAcGFyYW1baW5dICBJczVMZXZlbFBhZ2luZyAgICAgICAgICAgICAgSWYg aXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgQHJldHVy biBUaGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ID4gPiAgKiovDQo+ID4gPiA+ ID4gIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICoNCj4gPiA+ID4gPiAgQ3JlYXRlU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeSAoDQo+ID4gPiA+ID4gICAgSU4gVUlOVE4gICBWdGRJbmRleCwN Cj4gPiA+ID4gPiAtICBJTiBVSU5UNjQgIElvTW11QWNjZXNzDQo+ID4gPiA+ID4gKyAgSU4gVUlO VDY0ICBJb01tdUFjY2VzcywNCj4gPiA+ID4gPiArICBJTiBCT09MRUFOIElzNUxldmVsUGFnaW5n DQo+ID4gPiA+ID4gICAgKQ0KPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gICAgVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgKlNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gTlVMTDsNCj4gPiA+ID4gPiAtICBT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxl DQo+ID4gPiA+ID4gKFZ0ZEluZGV4LCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCAwLCBtQmVsb3c0 R01lbW9yeUxpbWl0LA0KPiA+ID4gPiA+IElvTW11QWNjZXNzKTsNCj4gPiA+ID4gPiArICBTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlDQo+ ID4gPiA+ID4gKyAoVnRkSW5kZXgsDQo+ID4gPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwg MCwgbUJlbG93NEdNZW1vcnlMaW1pdCwgSW9NbXVBY2Nlc3MsDQo+ID4gPiA+ID4gSXM1TGV2ZWxQ YWdpbmcpOw0KPiA+ID4gPiA+ICAgIGlmIChTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IE5VTEwp IHsNCj4gPiA+ID4gPiAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ICAgIH0NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICAgIGlmIChtQWJvdmU0R01lbW9yeUxpbWl0ICE9IDApIHsNCj4gPiA+ID4g PiAgICAgIEFTU0VSVCAobUFib3ZlNEdNZW1vcnlMaW1pdCA+IEJBU0VfNEdCKTsNCj4gPiA+ID4g PiAtICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0Vu dHJ5VGFibGUNCj4gPiA+IChWdGRJbmRleCwNCj4gPiA+ID4gPiBTZWNvbmRMZXZlbFBhZ2luZ0Vu dHJ5LCBTSVpFXzRHQiwgbUFib3ZlNEdNZW1vcnlMaW1pdCwNCj4gPiA+IElvTW11QWNjZXNzKTsN Cj4gPiA+ID4gPiArICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5VGFibGUNCj4gPiA+ID4gPiArIChWdGRJbmRleCwNCj4gPiA+ID4gPiBTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5LCBTSVpFXzRHQiwgbUFib3ZlNEdNZW1vcnlMaW1pdCwNCj4gPiA+ IElvTW11QWNjZXNzLA0KPiA+ID4gPiA+IElzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gPiAgICAg IGlmIChTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IE5VTEwpIHsNCj4gPiA+ID4gPiAgICAgICAg cmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gQEAgLTMyNiwxMSArNDAw LDEzIEBAIFNldHVwVHJhbnNsYXRpb25UYWJsZSAoDQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4gPiA+ ICAgIER1bXAgRE1BUiBjb250ZXh0IGVudHJ5IHRhYmxlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g LSAgQHBhcmFtW2luXSAgUm9vdEVudHJ5IERNQVIgcm9vdCBlbnRyeS4NCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICBSb290RW50cnkgICAgICAgRE1BUiByb290IGVudHJ5Lg0KPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcu DQo+ID4gPiA+ID4gICoqLw0KPiA+ID4gPiA+ICBWT0lEDQo+ID4gPiA+ID4gIER1bXBEbWFyQ29u dGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gPiA+IC0gIElOIFZURF9ST09UX0VOVFJZICpSb290RW50 cnkNCj4gPiA+ID4gPiArICBJTiBWVERfUk9PVF9FTlRSWSAqUm9vdEVudHJ5LA0KPiA+ID4gPiA+ ICsgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gPiAgICApDQo+ID4gPiA+ID4g IHsNCj4gPiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiA+ID4g QEAgLTM1OSw3ICs0MzUsNyBAQCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+ID4g PiAgICAgICAgaWYgKENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuUHJlc2VudCA9PSAwKSB7DQo+ ID4gPiA+ID4gICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gICAgICAgIH0NCj4gPiA+ID4g PiAtICAgICAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKChWT0lEDQo+ID4gPiA+ID4NCj4g PiA+DQo+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKENvbnRleHRFbnRyeVtJbmRleDJd LkJpdHMuU2Vjb25kTGV2ZWxQYWdlDQo+ID4gPiA+ID4gVHJhbnNsYXRpb25Qb2ludGVyTG8sDQo+ ID4gPiA+ID4gQ29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xh dGlvblBvaW50ZXJIaSkpOw0KPiA+ID4gPiA+ICsgICAgICBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdF bnRyeSAoKFZPSUQNCj4gPiA+ID4gPg0KPiA+ID4NCj4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FE RFJFU1MoQ29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2UNCj4gPiA+ID4g PiBUcmFuc2xhdGlvblBvaW50ZXJMbywNCj4gPiA+ID4gPiBDb250ZXh0RW50cnlbSW5kZXgyXS5C aXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckhpKSwNCj4gPiA+ID4gPiBJczVM ZXZlbFBhZ2luZyk7DQo+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gICAgfQ0KPiA+ID4gPiA+ ICAgIERFQlVHICgoREVCVUdfSU5GTywiPT09PT09PT09PT09PT09PT09PT09PT09PVxuIikpOw0K PiA+ID4gPiA+IEBAIC0zNjgsMTcgKzQ0NCwyMiBAQCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxl ICgNCj4gPiA+ID4gPiAgLyoqDQo+ID4gPiA+ID4gICAgRHVtcCBETUFSIHNlY29uZCBsZXZlbCBw YWdpbmcgZW50cnkuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtICBAcGFyYW1baW5dICBTZWNvbmRM ZXZlbFBhZ2luZ0VudHJ5IFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIFNlY29uZExldmVsUGFnaW5nRW50cnkgIFRoZSBzZWNvbmQgbGV2ZWwg cGFnaW5nIGVudHJ5Lg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICAg ICAgICAgIElmIGl0IGlzIHRoZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4gPiAgKiovDQo+ID4g PiA+ID4gIFZPSUQNCj4gPiA+ID4gPiAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKA0KPiA+ ID4gPiA+IC0gIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5nRW50cnkNCj4gPiA+ID4gPiArICBJ TiBWT0lEICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0KPiA+ID4gPiA+ICsgIElOIEJPT0xFQU4g SXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gPiAgICApDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg1Ow0KPiA+ID4gPiA+ICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDQ7DQo+ID4gPiA+ID4gICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4MzsNCj4gPiA+ID4gPiAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXgyOw0KPiA+ID4gPiA+ICAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleDE7DQo+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIEx2bDVJbmRleEVuZDsNCj4gPiA+ID4gPiArICBWVERfU0VDT05EX0xFVkVM X1BBR0lOR19FTlRSWSAgKkx2bDVQdEVudHJ5Ow0KPiA+ID4gPiA+ICAgIFZURF9TRUNPTkRfTEVW RUxfUEFHSU5HX0VOVFJZICAqTHZsNFB0RW50cnk7DQo+ID4gPiA+ID4gICAgVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgICpMdmwzUHRFbnRyeTsNCj4gPiA+ID4gPiAgICBWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2bDJQdEVudHJ5OyBAQCAtMzg2LDM4DQo+ID4gPiArNDY3 LDUzDQo+ID4gPiA+IEBADQo+ID4gPiA+ID4gRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKA0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgREVCVUcgKChERUJVR19WRVJCT1NFLCI9PT09PT09PT09 PT09PT09XG4iKSk7DQo+ID4gPiA+ID4gICAgREVCVUcgKChERUJVR19WRVJCT1NFLCJETUFSIFNl Y29uZCBMZXZlbCBQYWdlIFRhYmxlOlxuIikpOw0KPiA+ID4gPiA+ICsgIERFQlVHICgoREVCVUdf VkVSQk9TRSwiU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSBCYXNlIC0gMHgleCwNCj4gPiA+ID4gPiBJ czVMZXZlbFBhZ2luZyAtICVkXG4iLCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCBJczVMZXZlbFBh Z2luZykpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSAgREVCVUcgKChERUJVR19WRVJCT1NFLCJT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IEJhc2UgLSAweCV4XG4iLA0KPiA+ID4gPiA+IFNlY29uZExl dmVsUGFnaW5nRW50cnkpKTsNCj4gPiA+ID4gPiArICBMdmw1SW5kZXhFbmQgPSBJczVMZXZlbFBh Z2luZyA/DQo+ID4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5H X0VOVFJZKSA6IDE7DQo+ID4gPiA+ID4gICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZF TF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4gPiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4g PiA+ID4gLSAgZm9yIChJbmRleDQgPSAwOyBJbmRleDQgPA0KPiA+ID4gPiA+IFNJWkVfNEtCL3Np emVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4NCsrKSB7DQo+ID4gPiA+ ID4gLSAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgIT0gMCkgew0KPiA+ID4gPiA+ IC0gICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgTHZsNFB0IEVudHJ5KDB4JTAzeCkgLSAw eCUwMTZseFxuIiwNCj4gPiA+IEluZGV4NCwNCj4gPiA+ID4gPiBMdmw0UHRFbnRyeVtJbmRleDRd LlVpbnQ2NCkpOw0KPiA+ID4gPiA+IC0gICAgfQ0KPiA+ID4gPiA+IC0gICAgaWYgKEx2bDRQdEVu dHJ5W0luZGV4NF0uVWludDY0ID09IDApIHsNCj4gPiA+ID4gPiAtICAgICAgY29udGludWU7DQo+ ID4gPiA+ID4gLSAgICB9DQo+ID4gPiA+ID4gLSAgICBMdmwzUHRFbnRyeSA9IChWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVT UyhMdmw0UHRFbnRyeVtJbmRleDRdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gPiA+IEx2bDRQdEVu dHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gPiA+IC0gICAgZm9yIChJbmRleDMg PSAwOyBJbmRleDMgPA0KPiA+ID4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVM X1BBR0lOR19FTlRSWSk7IEluZGV4MysrKSB7DQo+ID4gPiA+ID4gLSAgICAgIGlmIChMdmwzUHRF bnRyeVtJbmRleDNdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiA+ID4gLSAgICAgICAgREVCVUcgKChE RUJVR19WRVJCT1NFLCIgICAgTHZsM1B0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwNCj4g PiA+ID4gPiBJbmRleDMsIEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0KSk7DQo+ID4gPiA+ID4g KyAgTHZsNVB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4g PiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIGZv ciAoSW5kZXg1ID0gMDsgSW5kZXg1IDwgTHZsNUluZGV4RW5kOyBJbmRleDUrKykgew0KPiA+ID4g PiA+ICsgICAgaWYgKElzNUxldmVsUGFnaW5nKSB7DQo+ID4gPiA+ID4gKyAgICAgIGlmIChMdmw1 UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgREVCVUcg KChERUJVR19WRVJCT1NFLCIgIEx2bDVQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIsDQo+ ID4gPiA+ID4gSW5kZXg1LCBMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCkpOw0KPiA+ID4gPiA+ ICAgICAgICB9DQo+ID4gPiA+ID4gLSAgICAgIGlmIChMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2 NCA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgIGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2 NCA9PSAwKSB7DQo+ID4gPiA+ID4gICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gICAgICAg IH0NCj4gPiA+ID4gPiArICAgICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJ TkdfRU5UUlkNCj4gPiA+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsNVB0RW50 cnlbSW5kZXg1XS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+ID4gPiBMdmw1UHRFbnRyeVtJbmRleDVd LkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IC0gICAgICBMdmwyUHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhMdmwzUHRFbnRyeVtJbmRleDNdLkJp dHMuQWRkcmVzc0xvLA0KPiA+ID4gPiA+IEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNz SGkpOw0KPiA+ID4gPiA+IC0gICAgICBmb3IgKEluZGV4MiA9IDA7IEluZGV4MiA8DQo+ID4gPiA+ ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgy KyspIHsNCj4gPiA+ID4gPiAtICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQg IT0gMCkgew0KPiA+ID4gPiA+IC0gICAgICAgICAgREVCVUcgKChERUJVR19WRVJCT1NFLCIgICAg ICBMdmwyUHQgRW50cnkoMHglMDN4KSAtDQo+ID4gMHglMDE2bHhcbiIsDQo+ID4gPiA+ID4gSW5k ZXgyLCBMdmwyUHRFbnRyeVtJbmRleDJdLlVpbnQ2NCkpOw0KPiA+ID4gPiA+ICsgICAgZm9yIChJ bmRleDQgPSAwOyBJbmRleDQgPA0KPiA+ID4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4NCsrKSB7DQo+ID4gPiA+ID4gKyAgICAgIGlmIChM dmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgREVC VUcgKChERUJVR19WRVJCT1NFLCIgIEx2bDRQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIs DQo+ID4gPiA+ID4gSW5kZXg0LCBMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCkpOw0KPiA+ID4g PiA+ICsgICAgICB9DQo+ID4gPiA+ID4gKyAgICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVp bnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gKyAg ICAgIH0NCj4gPiA+ID4gPiArICAgICAgTHZsM1B0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkNCj4gPiA+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsNFB0 RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+ID4gPiBMdmw0UHRFbnRyeVtJbmRl eDRdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gPiArICAgICAgZm9yIChJbmRleDMgPSAwOyBJ bmRleDMgPA0KPiA+ID4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lO R19FTlRSWSk7IEluZGV4MysrKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKEx2bDNQdEVudHJ5 W0luZGV4M10uVWludDY0ICE9IDApIHsNCj4gPiA+ID4gPiArICAgICAgICAgIERFQlVHICgoREVC VUdfVkVSQk9TRSwiICAgTHZsM1B0IEVudHJ5KDB4JTAzeCkgLQ0KPiAweCUwMTZseFxuIiwNCj4g PiA+ID4gPiBJbmRleDMsIEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0KSk7DQo+ID4gPiA+ID4g ICAgICAgICAgfQ0KPiA+ID4gPiA+IC0gICAgICAgIGlmIChMdmwyUHRFbnRyeVtJbmRleDJdLlVp bnQ2NCA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10u VWludDY0ID09IDApIHsNCj4gPiA+ID4gPiAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiA+ ICAgICAgICAgIH0NCj4gPiA+ID4gPiAtICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5C aXRzLlBhZ2VTaXplID09IDApIHsNCj4gPiA+ID4gPiAtICAgICAgICAgIEx2bDFQdEVudHJ5ID0g KFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ID4gKikoVUlOVE4pVlREXzY0 QklUU19BRERSRVNTKEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+ ID4gTHZsMlB0RW50cnlbSW5kZXgyXS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiA+ID4gLSAgICAg ICAgICBmb3IgKEluZGV4MSA9IDA7IEluZGV4MSA8DQo+ID4gPiA+ID4gU0laRV80S0Ivc2l6ZW9m KFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgxKyspIHsNCj4gPiA+ID4gPiAt ICAgICAgICAgICAgaWYgKEx2bDFQdEVudHJ5W0luZGV4MV0uVWludDY0ICE9IDApIHsNCj4gPiA+ ID4gPiAtICAgICAgICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgICAgICAgTHZsMVB0 IEVudHJ5KDB4JTAzeCkgLQ0KPiA+ID4gPiAweCUwMTZseFxuIiwNCj4gPiA+ID4gPiBJbmRleDEs IEx2bDFQdEVudHJ5W0luZGV4MV0uVWludDY0KSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgICAgIEx2bDJQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4g PiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDNQdEVudHJ5W0luZGV4M10uQml0 cy5BZGRyZXNzTG8sDQo+ID4gPiA+ID4gTHZsM1B0RW50cnlbSW5kZXgzXS5CaXRzLkFkZHJlc3NI aSk7DQo+ID4gPiA+ID4gKyAgICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIgPA0KPiA+ID4g PiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4 MisrKSB7DQo+ID4gPiA+ID4gKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50 NjQgIT0gMCkgew0KPiA+ID4gPiA+ICsgICAgICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0Us IiAgICBMdmwyUHQgRW50cnkoMHglMDN4KSAtDQo+ID4gMHglMDE2bHhcbiIsDQo+ID4gPiA+ID4g SW5kZXgyLCBMdmwyUHRFbnRyeVtJbmRleDJdLlVpbnQ2NCkpOw0KPiA+ID4gPiA+ICsgICAgICAg ICAgfQ0KPiA+ID4gPiA+ICsgICAgICAgICAgaWYgKEx2bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0 ID09IDApIHsNCj4gPiA+ID4gPiArICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gKyAg ICAgICAgICB9DQo+ID4gPiA+ID4gKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5C aXRzLlBhZ2VTaXplID09IDApIHsNCj4gPiA+ID4gPiArICAgICAgICAgICAgTHZsMVB0RW50cnkg PSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4gPiAqKShVSU5UTilWVERf NjRCSVRTX0FERFJFU1MoTHZsMlB0RW50cnlbSW5kZXgyXS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+ ID4gPiBMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gPiArICAg ICAgICAgICAgZm9yIChJbmRleDEgPSAwOyBJbmRleDEgPA0KPiA+ID4gPiA+IFNJWkVfNEtCL3Np emVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4MSsrKSB7DQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgaWYgKEx2bDFQdEVudHJ5W0luZGV4MV0uVWludDY0ICE9IDApIHsN Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAgICAg THZsMVB0IEVudHJ5KDB4JTAzeCkgLQ0KPiA+ID4gPiAweCUwMTZseFxuIiwNCj4gPiA+ID4gPiBJ bmRleDEsIEx2bDFQdEVudHJ5W0luZGV4MV0uVWludDY0KSk7DQo+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgfQ0KPiA+ID4gPiA+ICAgICAgICAgICAgICB9DQo+ID4gPiA+ID4gICAgICAgICAgICB9 DQo+ID4gPiA+ID4gICAgICAgICAgfQ0KPiA+ID4gPiA+IEBAIC01MTAsNiArNjA2LDcgQEAgUGFn ZUF0dHJpYnV0ZVRvTGVuZ3RoICgNCj4gPiA+ID4gPiAgICBAcGFyYW1baW5dICAgVnRkSW5kZXgg ICAgICAgICAgICAgICAgIFRoZSBpbmRleCB1c2VkIHRvIGlkZW50aWZ5IGEgVlRkDQo+ID4gZW5n aW5lLg0KPiA+ID4gPiA+ICAgIEBwYXJhbVtpbl0gICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICAg VGhlIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkNCj4gPiBpbg0KPiA+ID4gPiA+IFZUZCB0YWJs ZSBmb3IgdGhlIGRldmljZS4NCj4gPiA+ID4gPiAgICBAcGFyYW1baW5dICAgQWRkcmVzcyAgICAg ICAgICAgICAgICAgIFRoZSBhZGRyZXNzIHRvIGJlIGNoZWNrZWQuDQo+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgIElzNUxldmVsUGFnaW5nICAgICAgICAgICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBw YWdpbmcuDQo+ID4gPiA+ID4gICAgQHBhcmFtW291dF0gIFBhZ2VBdHRyaWJ1dGVzICAgICAgICAg ICBUaGUgcGFnZSBhdHRyaWJ1dGUgb2YgdGhlIHBhZ2UNCj4gPiBlbnRyeS4NCj4gPiA+ID4gPg0K PiA+ID4gPiA+ICAgIEByZXR1cm4gVGhlIHBhZ2UgZW50cnkuDQo+ID4gPiA+ID4gQEAgLTUxOSw2 ICs2MTYsNyBAQCBHZXRTZWNvbmRMZXZlbFBhZ2VUYWJsZUVudHJ5ICgNCj4gPiA+ID4gPiAgICBJ TiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgVnRkSW5kZXgsDQo+ID4gPiA+ID4gICAg SU4gIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 LA0KPiA+ID4gPiA+ICAgIElOICBQSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICBBZGRyZXNz LA0KPiA+ID4gPiA+ICsgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICBJczVMZXZl bFBhZ2luZywNCj4gPiA+ID4gPiAgICBPVVQgUEFHRV9BVFRSSUJVVEUgICAgICAgICAgICAgICAg KlBhZ2VBdHRyaWJ1dGUNCj4gPiA+ID4gPiAgICApDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiBA QCAtNTI2LDE3ICs2MjQsMzggQEAgR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRyeSAoDQo+ID4g PiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4MjsNCj4gPiA+ID4gPiAgICBVSU5U TiAgICAgICAgICAgICAgICAgSW5kZXgzOw0KPiA+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAg ICAgICBJbmRleDQ7DQo+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4NTsN Cj4gPiA+ID4gPiAgICBVSU5UNjQgICAgICAgICAgICAgICAgKkwxUGFnZVRhYmxlOw0KPiA+ID4g PiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDJQYWdlVGFibGU7DQo+ID4gPiA+ID4gICAg VUlOVDY0ICAgICAgICAgICAgICAgICpMM1BhZ2VUYWJsZTsNCj4gPiA+ID4gPiAgICBVSU5UNjQg ICAgICAgICAgICAgICAgKkw0UGFnZVRhYmxlOw0KPiA+ID4gPiA+ICsgIFVJTlQ2NCAgICAgICAg ICAgICAgICAqTDVQYWdlVGFibGU7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiArICBJbmRleDUgPSAo KFVJTlROKVJTaGlmdFU2NCAoQWRkcmVzcywgNDgpKSAmDQo+ID4gPiBQQUdJTkdfVlREX0lOREVY X01BU0s7DQo+ID4gPiA+ID4gICAgSW5kZXg0ID0gKChVSU5UTilSU2hpZnRVNjQgKEFkZHJlc3Ms IDM5KSkgJg0KPiA+ID4gUEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KPiA+ID4gPiA+ICAgIEluZGV4 MyA9ICgoVUlOVE4pQWRkcmVzcyA+PiAzMCkgJiBQQUdJTkdfVlREX0lOREVYX01BU0s7DQo+ID4g PiA+ID4gICAgSW5kZXgyID0gKChVSU5UTilBZGRyZXNzID4+IDIxKSAmIFBBR0lOR19WVERfSU5E RVhfTUFTSzsNCj4gPiA+ID4gPiAgICBJbmRleDEgPSAoKFVJTlROKUFkZHJlc3MgPj4gMTIpICYg UEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSAgTDRQYWdlVGFi bGUgPSAoVUlOVDY0ICopU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ID4gPiArICBpZiAo SXM1TGV2ZWxQYWdpbmcpIHsNCj4gPiA+ID4gPiArICAgIEw1UGFnZVRhYmxlID0gKFVJTlQ2NCAq KVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ID4gKyAgICBpZiAoTDVQYWdlVGFibGVb SW5kZXg1XSA9PSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgIEw1UGFnZVRhYmxlW0luZGV4NV0gPSAo VUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQo+ID4gPiA+ID4gKyAgICAgIGlm IChMNVBhZ2VUYWJsZVtJbmRleDVdID09IDApIHsNCj4gPiA+ID4gPiArICAgICAgICBERUJVRyAo KERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NBVEUgTFZMNSBQQUdFIEZBSUwNCj4gPiA+ID4gPiAo MHgleCkhISEhISFcbiIsIEluZGV4NCkpOw0KPiA+ID4gPiA+ICsgICAgICAgIEFTU0VSVChGQUxT RSk7DQo+ID4gPiA+ID4gKyAgICAgICAgKlBhZ2VBdHRyaWJ1dGUgPSBQYWdlTm9uZTsNCj4gPiA+ ID4gPiArICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ ICsgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTilMNVBhZ2VUYWJs ZVtJbmRleDVdLA0KPiA+ID4gPiA+IFNJWkVfNEtCKTsNCj4gPiA+ID4gPiArICAgICAgU2V0U2Vj b25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZQ0KPiA+ID4gPiA+ICgoVlREX1NFQ09ORF9MRVZF TF9QQUdJTkdfRU5UUlkgKikmTDVQYWdlVGFibGVbSW5kZXg1XSwNCj4gPiA+ID4gPiBFREtJSV9J T01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQo+ID4gPiA+ID4g KyAgICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJTlROKSZMNVBhZ2VUYWJs ZVtJbmRleDVdLA0KPiA+ID4gPiA+IHNpemVvZihMNVBhZ2VUYWJsZVtJbmRleDVdKSk7DQo+ID4g PiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKyAgICBMNFBhZ2VUYWJsZSA9IChVSU5UNjQgKikoVUlO VE4pKEw1UGFnZVRhYmxlW0luZGV4NV0gJg0KPiA+ID4gPiA+IFBBR0lOR180S19BRERSRVNTX01B U0tfNjQpOw0KPiA+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICBMNFBhZ2VUYWJs ZSA9IChVSU5UNjQgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5OyAgfQ0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiAgICBpZiAoTDRQYWdlVGFibGVbSW5kZXg0XSA9PSAwKSB7DQo+ID4gPiA+ID4gICAg ICBMNFBhZ2VUYWJsZVtJbmRleDRdID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJvUGFnZXMg KDEpOw0KPiA+ID4gPiA+ICAgICAgaWYgKEw0UGFnZVRhYmxlW0luZGV4NF0gPT0gMCkgew0KPiA+ ID4gPiA+IEBAIC03ODUsNyArOTA0LDcgQEAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdBdHRyaWJ1dGUg KA0KPiA+ID4gPiA+ICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgIHdoaWxlIChMZW5ndGgg IT0gMCkgew0KPiA+ID4gPiA+IC0gICAgUGFnZUVudHJ5ID0gR2V0U2Vjb25kTGV2ZWxQYWdlVGFi bGVFbnRyeSAoVnRkSW5kZXgsDQo+ID4gPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgQmFz ZUFkZHJlc3MsICZQYWdlQXR0cmlidXRlKTsNCj4gPiA+ID4gPiArICAgIFBhZ2VFbnRyeSA9IEdl dFNlY29uZExldmVsUGFnZVRhYmxlRW50cnkgKFZ0ZEluZGV4LA0KPiA+ID4gPiA+IFNlY29uZExl dmVsUGFnaW5nRW50cnksIEJhc2VBZGRyZXNzLA0KPiA+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRp b25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nLCAmUGFnZUF0dHJpYnV0ZSk7DQo+ID4gPiA+ID4g ICAgICBpZiAoUGFnZUVudHJ5ID09IE5VTEwpIHsNCj4gPiA+ID4gPiAgICAgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIlBhZ2VFbnRyeSAtIE5VTExcbiIpKTsNCj4gPiA+ID4gPiAgICAgICAgcmV0 dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsNCj4gPiA+ID4gPiBAQCAtOTEzLDcgKzEwMzIsNyBAQCBT ZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgaWYgKEV4dENvbnRl eHRFbnRyeSAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gICAgICBpZiAoRXh0Q29udGV4dEVudHJ5LT5C aXRzLlByZXNlbnQgPT0gMCkgew0KPiA+ID4gPiA+IC0gICAgICBTZWNvbmRMZXZlbFBhZ2luZ0Vu dHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoVnRkSW5kZXgsDQo+ID4gPiAwKTsN Cj4gPiA+ID4gPiArICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExl dmVsUGFnaW5nRW50cnkNCj4gPiA+ID4gPiArIChWdGRJbmRleCwgMCwNCj4gPiA+ID4gPiBtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ID4gICAg ICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAtIDB4JXgg KFMlMDR4DQo+ID4gPiA+ID4gQiUwMnggRCUwMnggRiUwMngpIE5ld1xuIiwgU2Vjb25kTGV2ZWxQ YWdpbmdFbnRyeSwgU2VnbWVudCwNCj4gPiA+ID4gPiBTb3VyY2VJZC5CaXRzLkJ1cywgU291cmNl SWQuQml0cy5EZXZpY2UsIFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24pKTsNCj4gPiA+ID4gPiAgICAg ICAgUHQgPSAoVUlOVDY0KVJTaGlmdFU2NCAoKFVJTlQ2NCkoVUlOVE4pU2Vjb25kTGV2ZWxQYWdp bmdFbnRyeSwNCj4gPiA+ID4gPiAxMik7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBAQCAtOTIyLDcg KzEwNDEsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gPiA+ICAgICAgICBFeHRDb250 ZXh0RW50cnktPkJpdHMuRG9tYWluSWRlbnRpZmllciA9IERvbWFpbklkZW50aWZpZXI7DQo+ID4g PiA+ID4gICAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5QcmVzZW50ID0gMTsNCj4gPiA+ID4g PiAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pRXh0Q29udGV4 dEVudHJ5LA0KPiA+ID4gPiA+IHNpemVvZigqRXh0Q29udGV4dEVudHJ5KSk7DQo+ID4gPiA+ID4g LSAgICAgIER1bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUNCj4gPiA+ID4gPiAobVZ0ZFVuaXRJ bmZvcm1hdGlvbltWdGRJbmRleF0uRXh0Um9vdEVudHJ5VGFibGUpOw0KPiA+ID4gPiA+ICsgICAg ICBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+ID4gKG1WdGRVbml0SW5mb3Jt YXRpb25bVnRkSW5kZXhdLkV4dFJvb3RFbnRyeVRhYmxlLA0KPiA+ID4gPiA+IG1WdGRVbml0SW5m b3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gPiAgICAgICAgbVZ0 ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSGFzRGlydHlDb250ZXh0ID0gVFJVRTsNCj4gPiA+ ID4gPiAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gICAgICAgIFNlY29uZExldmVsUGFnaW5nRW50 cnkgPSAoVk9JRA0KPiA+ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhFeHRDb250 ZXh0RW50cnktDQo+ID4gPiA+ID4gPkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2lu dGVyTG8sIEV4dENvbnRleHRFbnRyeS0NCj4gPiA+ID4gPiA+Qml0cy5TZWNvbmRMZXZlbFBhZ2VU cmFuc2xhdGlvblBvaW50ZXJIaSk7DQo+ID4gPiA+ID4gQEAgLTkzMCw3ICsxMDQ5LDcgQEAgU2V0 QWNjZXNzQXR0cmlidXRlICgNCj4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gPiAgICB9IGVsc2Ug aWYgKENvbnRleHRFbnRyeSAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gICAgICBpZiAoQ29udGV4dEVu dHJ5LT5CaXRzLlByZXNlbnQgPT0gMCkgew0KPiA+ID4gPiA+IC0gICAgICBTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoVnRkSW5kZXgsDQo+ID4g PiAwKTsNCj4gPiA+ID4gPiArICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNl Y29uZExldmVsUGFnaW5nRW50cnkNCj4gPiA+ID4gPiArIChWdGRJbmRleCwgMCwNCj4gPiA+ID4g PiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ ID4gICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAt IDB4JXggKFMlMDR4DQo+ID4gPiA+ID4gQiUwMnggRCUwMnggRiUwMngpIE5ld1xuIiwgU2Vjb25k TGV2ZWxQYWdpbmdFbnRyeSwgU2VnbWVudCwNCj4gPiA+ID4gPiBTb3VyY2VJZC5CaXRzLkJ1cywg U291cmNlSWQuQml0cy5EZXZpY2UsIFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24pKTsNCj4gPiA+ID4g PiAgICAgICAgUHQgPSAoVUlOVDY0KVJTaGlmdFU2NCAoKFVJTlQ2NCkoVUlOVE4pU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSwNCj4gPiA+ID4gPiAxMik7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBAQCAt OTM5LDcgKzEwNTgsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gPiA+ICAgICAgICBD b250ZXh0RW50cnktPkJpdHMuRG9tYWluSWRlbnRpZmllciA9IERvbWFpbklkZW50aWZpZXI7DQo+ ID4gPiA+ID4gICAgICAgIENvbnRleHRFbnRyeS0+Qml0cy5QcmVzZW50ID0gMTsNCj4gPiA+ID4g PiAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pQ29udGV4dEVu dHJ5LA0KPiA+ID4gPiA+IHNpemVvZigqQ29udGV4dEVudHJ5KSk7DQo+ID4gPiA+ID4gLSAgICAg IER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUNCj4gPiA+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlv bltWdGRJbmRleF0uUm9vdEVudHJ5VGFibGUpOw0KPiA+ID4gPiA+ICsgICAgICBEdW1wRG1hckNv bnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+ID4gKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhd LlJvb3RFbnRyeVRhYmxlLA0KPiA+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhd LklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gPiAgICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uSGFzRGlydHlDb250ZXh0ID0gVFJVRTsNCj4gPiA+ID4gPiAgICAgIH0gZWxzZSB7 DQo+ID4gPiA+ID4gICAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSAoVk9JRA0KPiA+ID4g PiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhDb250ZXh0RW50cnktDQo+ID4gPiA+ID4g PkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2ludGVyTG8sIENvbnRleHRFbnRyeS0N Cj4gPiA+ID4gPiA+Qml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSk7DQo+ ID4gPiA+ID4gQEAgLTEwMDAsNyArMTExOSw3IEBAIEFsd2F5c0VuYWJsZVBhZ2VBdHRyaWJ1dGUg KA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgaWYgKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5k ZXhdLkZpeGVkU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9PSAwKQ0KPiA+IHsNCj4gPiA+ID4gPiAg ICAgIERFQlVHKChERUJVR19JTkZPLCAiQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAtICVk XG4iLA0KPiA+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ID4gLSAgICBtVnRkVW5pdEluZm9y bWF0aW9uW1Z0ZEluZGV4XS5GaXhlZFNlY29uZExldmVsUGFnaW5nRW50cnkgPQ0KPiA+ID4gPiA+ IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LA0KPiBFREtJSV9JT01NVV9B Q0NFU1NfUkVBRA0KPiA+IHwNCj4gPiA+ID4gPiBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0K PiA+ID4gPiA+ICsgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uRml4ZWRTZWNvbmRM ZXZlbFBhZ2luZ0VudHJ5ID0NCj4gPiA+ID4gPiBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 IChWdGRJbmRleCwNCj4gRURLSUlfSU9NTVVfQUNDRVNTX1JFQUQNCj4gPiB8DQo+ID4gPiA+ID4g RURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFLA0KPiA+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25b VnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gPiAgICB9DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0NCj4gPiA+ID4gPiBtVnRkVW5pdElu Zm9ybWF0aW9uW1Z0ZEluZGV4XS5GaXhlZFNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRl bFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25UYWJsZUV4Lg0K PiA+ID4gPiA+IGMNCj4gPiA+ID4gPg0KPiA+ID4NCj4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxT aWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFibGVFeC4NCj4g PiA+ID4gPiBjDQo+ID4gPiA+ID4gaW5kZXggMGVkOWUzY2EuLjM5MThlZWVlIDEwMDY0NA0KPiA+ ID4gPiA+IC0tLQ0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNp bGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25UYWJsZUV4Lg0KPiA+ ID4gPiA+IGMNCj4gPiA+ID4gPiArKysNCj4gPiA+ID4gPg0KPiA+ID4NCj4gPiBiL1NpbGljb24v SW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9u VGFibGVFeC4NCj4gPiA+ID4gPiBjDQo+ID4gPiA+ID4gQEAgLTc4LDExICs3OCwzMiBAQCBDcmVh dGVFeHRDb250ZXh0RW50cnkgKA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgICBERUJVRyAoKERF QlVHX0lORk8sIkRPTUFJTjogUyUwNHgsIEIlMDJ4IEQlMDJ4IEYlMDJ4XG4iLA0KPiA+ID4gPiA+ IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLlNlZ21lbnQsIFNvdXJjZUlkLkJpdHMuQnVz LA0KPiA+ID4gPiA+IFNvdXJjZUlkLkJpdHMuRGV2aWNlLCBTb3VyY2VJZC5CaXRzLkZ1bmN0aW9u KSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQyKSA9PSAwKQ0KPiA+ID4gew0KPiA+ID4g PiA+IC0gICAgICBERUJVRygoREVCVUdfRVJST1IsICIhISEhIDQtbGV2ZWwgcGFnZS10YWJsZSBp cyBub3Qgc3VwcG9ydGVkIG9uDQo+ID4gPiA+ID4gVlREICVkICEhISFcbiIsIFZ0ZEluZGV4KSk7 DQo+ID4gPiA+ID4gKyAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBh Z2luZyA9IEZBTFNFOw0KPiA+ID4gPiA+ICsgICAgaWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0 ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDMpICE9IDApDQo+ID4gPiB7DQo+ID4gPiA+ ID4gKyAgICAgIGlmICgoUGNkR2V0OChQY2RWVGRQb2xpY3lQcm9wZXJ0eU1hc2spICYgQklUMykg IT0gMCkgew0KPiA+ID4gPiA+ICsgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIkZvcmNlIHRv IHVzZSA0LWxldmVsIHBhZ2UtdGFibGUgb24gVlREDQo+ID4gPiA+ID4gKyAlZFxuIiwNCj4gPiA+ ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4gPiA+ICsgICAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0 cy5BZGRyZXNzV2lkdGggPSAweDI7DQo+ID4gPiA+ID4gKyAgICAgIH0gaWYgKChQY2RHZXQ4KFBj ZFZUZFBvbGljeVByb3BlcnR5TWFzaykgJiBCSVQ0KSAhPSAwKSB7DQo+ID4gPiA+ID4gKyAgICAg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiRm9yY2UgdG8gdXNlIDUtbGV2ZWwgcGFnZS10YWJsZSBv biBWVEQNCj4gPiA+ID4gPiArICVkXG4iLA0KPiA+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ ID4gKyAgICAgICAgRXh0Q29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4MzsNCj4g PiA+ID4gPiArICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBh Z2luZyA9IFRSVUU7DQo+ID4gPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICAg ICAgaWYgKG1BY3BpRG1hclRhYmxlLT5Ib3N0QWRkcmVzc1dpZHRoID4gNDgpIHsNCj4gPiA+ID4g PiArICAgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDUtbGV2ZWwgcGFnZS10YWJs ZSBvbg0KPiBWVEQgJWRcbiIsDQo+ID4gPiA+ID4gVnRkSW5kZXgpKTsNCj4gPiA+ID4gPiArICAg ICAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDM7DQo+ID4gPiA+ ID4gKyAgICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2lu ZyA9IFRSVUU7DQo+ID4gPiA+ID4gKyAgICAgICAgfSBlbHNlIHsNCj4gPiA+ID4gPiArICAgICAg ICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDQtbGV2ZWwgcGFnZS10YWJsZSBvbg0KPiBW VEQgJWRcbiIsDQo+ID4gPiA+ID4gVnRkSW5kZXgpKTsNCj4gPiA+ID4gPiArICAgICAgICAgIEV4 dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7DQo+ID4gPiA+ID4gKyAgICAg ICAgfQ0KPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gKyAgICB9IGVsc2UgaWYgKChtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmDQo+ID4gPiA+ID4g KyBCSVQyKSAhPQ0KPiA+ID4gPiA+IDApIHsNCj4gPiA+ID4gPiArICAgICAgREVCVUcoKERFQlVH X0VSUk9SLCAiVXNpbmcgNC1sZXZlbCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwNCj4gPiA+ID4g PiBWdGRJbmRleCkpOw0KPiA+ID4gPiA+ICsgICAgICBFeHRDb250ZXh0RW50cnktPkJpdHMuQWRk cmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ID4gPiArICAg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISBQYWdlLXRhYmxlIHR5cGUgaXMgbm90IHN1cHBv cnRlZCBvbg0KPiA+ID4gPiA+IFZURCAlZCAhISEhXG4iLCBWdGRJbmRleCkpOw0KPiA+ID4gPiA+ ICAgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4g PiA+IC0gICAgRXh0Q29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4MjsNCj4gPiA+ ID4gPiAgICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAo VnRkSW5kZXgsDQo+ID4gPiA+ID4gKFVJTlROKW1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhd LkV4dFJvb3RFbnRyeVRhYmxlLA0KPiA+ID4gPiA+IEVGSV9QQUdFU19UT19TSVpFKEVudHJ5VGFi bGVQYWdlcykpOw0KPiA+ID4gPiA+IEBAIC05MywxMSArMTE0LDEzIEBAIENyZWF0ZUV4dENvbnRl eHRFbnRyeSAoDQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4gPiA+ICAgIER1bXAgRE1BUiBleHRlbmRl ZCBjb250ZXh0IGVudHJ5IHRhYmxlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLSAgQHBhcmFtW2lu XSAgRXh0Um9vdEVudHJ5IERNQVIgZXh0ZW5kZWQgcm9vdCBlbnRyeS4NCj4gPiA+ID4gPiArICBA cGFyYW1baW5dICBFeHRSb290RW50cnkgICAgRE1BUiBleHRlbmRlZCByb290IGVudHJ5Lg0KPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZl bCBwYWdpbmcuDQo+ID4gPiA+ID4gICoqLw0KPiA+ID4gPiA+ICBWT0lEDQo+ID4gPiA+ID4gIER1 bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gPiA+IC0gIElOIFZURF9FWFRfUk9P VF9FTlRSWSAqRXh0Um9vdEVudHJ5DQo+ID4gPiA+ID4gKyAgSU4gVlREX0VYVF9ST09UX0VOVFJZ ICpFeHRSb290RW50cnksICBJTiBCT09MRUFODQo+ID4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4g PiAgICApDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAg SW5kZXg7DQo+ID4gPiA+ID4gQEAgLTEyNyw3ICsxNTAsNyBAQCBEdW1wRG1hckV4dENvbnRleHRF bnRyeVRhYmxlICgNCj4gPiA+ID4gPiAgICAgICAgaWYgKEV4dENvbnRleHRFbnRyeVtJbmRleDJd LkJpdHMuUHJlc2VudCA9PSAwKSB7DQo+ID4gPiA+ID4gICAgICAgICAgY29udGludWU7DQo+ID4g PiA+ID4gICAgICAgIH0NCj4gPiA+ID4gPiAtICAgICAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50 cnkgKChWT0lEDQo+ID4gPiA+ID4NCj4gPiA+DQo+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERS RVNTKEV4dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2ZWxQYQ0KPiA+ID4gPiA+ IGdlVHJhbnNsYXRpb25Qb2ludGVyTG8sDQo+ID4gPiA+ID4gRXh0Q29udGV4dEVudHJ5W0luZGV4 Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSkpOw0KPiA+ID4gPiA+ ICsgICAgICBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ID4gPg0KPiA+ ID4NCj4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoRXh0Q29udGV4dEVudHJ5W0luZGV4 Ml0uQml0cy5TZWNvbmRMZXZlbFBhDQo+ID4gPiA+ID4gZ2VUcmFuc2xhdGlvblBvaW50ZXJMbywN Cj4gPiA+ID4gPiBFeHRDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnZVRy YW5zbGF0aW9uUG9pbnRlckhpKSwNCj4gPiA+ID4gPiBJczVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ ID4gICAgICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICAgIGlmIChFeHRSb290RW50cnlbSW5k ZXhdLkJpdHMuVXBwZXJQcmVzZW50ID09IDApIHsgZGlmZiAtLWdpdA0KPiA+ID4gPiA+IGEvU2ls aWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVnRkUmVn LmMNCj4gPiA+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRk L0ludGVsVlRkRHhlL1Z0ZFJlZy5jDQo+ID4gPiA+ID4gaW5kZXggNjk5NjM5YmEuLjY4NmQyMzVm IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0Zl YXR1cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jDQo+ID4gPiA+ID4gKysrIGIvU2lsaWNvbi9J bnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVnRkUmVnLmMNCj4g PiA+ID4gPiBAQCAtMTc0LDggKzE3NCwxNCBAQCBQcmVwYXJlVnRkQ29uZmlnICgNCj4gPiA+ID4g PiAgICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0xMUFMg JiBCSVQwKSA9PSAwKSB7DQo+ID4gPiA+ID4gICAgICAgIERFQlVHKChERUJVR19XQVJOLCAiISEh ISAyTUIgc3VwZXIgcGFnZSBpcyBub3Qgc3VwcG9ydGVkIG9uDQo+ID4gPiBWVEQNCj4gPiA+ID4g PiAlZCAhISEhXG4iLCBJbmRleCkpOw0KPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+IC0gICAg aWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDIp ID09IDApIHsNCj4gPiA+ID4gPiAtICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISA0LWxl dmVsIHBhZ2UtdGFibGUgaXMgbm90IHN1cHBvcnRlZCBvbg0KPiA+ID4gPiA+IFZURCAlZCAhISEh XG4iLCBJbmRleCkpOw0KPiA+ID4gPiA+ICsgICAgaWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW0lu ZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDMpICE9IDApIHsNCj4gPiA+ID4gPiArICAgICAg REVCVUcoKERFQlVHX0lORk8sICJTdXBwb3J0IDUtbGV2ZWwgcGFnZS10YWJsZSBvbiBWVEQgJWRc biIsDQo+ID4gPiA+ID4gSW5kZXgpKTsNCj4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiArICAg IGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQy KSAhPSAwKSB7DQo+ID4gPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19JTkZPLCAiU3VwcG9ydCA0 LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gPiA+IEluZGV4KSk7DQo+ID4g PiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5k ZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgKEJJVDMgfA0KPiA+ID4gPiA+ICsgQklUMikpID09IDAp DQo+ID4gPiA+ID4gew0KPiA+ID4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICIhISEh IFBhZ2UtdGFibGUgdHlwZSAweCVYIGlzIG5vdA0KPiA+IHN1cHBvcnRlZA0KPiA+ID4gPiA+ICsg b24NCj4gPiA+ID4gPiBWVEQgJWQgISEhIVxuIiwgSW5kZXgsDQo+ID4gbVZ0ZFVuaXRJbmZvcm1h dGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcpKTsNCj4gPiA+ID4gPiAgICAgICAgcmV0dXJu IDsNCj4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9T aWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZGVjDQo+ID4gPiA+ ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cuZGVjDQo+ ID4gPiA+ID4gaW5kZXggMjg0ODIwYWYuLjhmMWVkZmUyIDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBh L1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ludGVsU2lsaWNvblBrZy5kZWMNCj4gPiA+ ID4gPiArKysgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbnRlbFNpbGljb25Qa2cu ZGVjDQo+ID4gPiA+ID4gQEAgLTk1LDYgKzk1LDkgQEANCj4gPiA+ID4gPiAgICAjICBCSVQwOiBF bmFibGUgSU9NTVUgZHVyaW5nIGJvb3QgKElmIERNQVIgdGFibGUgaXMgaW5zdGFsbGVkIGluDQo+ ID4gPiA+ID4gRFhFLiBJZiBWVERfSU5GT19QUEkgaXMgaW5zdGFsbGVkIGluIFBFSS4pDQo+ID4g PiA+ID4gICAgIyAgQklUMTogRW5hYmxlIElPTU1VIHdoZW4gdHJhbnNmZXIgY29udHJvbCB0byBP UyAoRXhpdEJvb3RTZXJ2aWNlDQo+ID4gPiA+ID4gaW4gbm9ybWFsIGJvb3QuIEVuZE9mUEVJIGlu IFMzKQ0KPiA+ID4gPiA+ICAgICMgIEJJVDI6IEZvcmNlIG5vIElPTU1VIGFjY2VzcyBhdHRyaWJ1 dGUgcmVxdWVzdCByZWNvcmRpbmcgYmVmb3JlDQo+ID4gPiA+ID4gRE1BUiB0YWJsZSBpcyBpbnN0 YWxsZWQuDQo+ID4gPiA+ID4gKyAgIyAgQklUMzogRm9yY2UgdG8gdXNlIDQgbGV2ZWwgcGFnaW5n Lg0KPiA+ID4gPiA+ICsgICMgIEJJVDQ6IElmIGlvbW11IHN1cHBvcnQgNSBsZXZlbCBwYWdpbmcs IGZvcmNlIHRvIHVzZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4gPiArICAjICAgIChJZiBib3Ro IEJJVDMgYW5kIEJJVDQgYXJlIHNldCwgZm9yY2UgdG8gdXNlIDQgbGV2ZWwgcGFnaW5nLikNCj4g PiA+ID4gPiAgICAjIEBQcm9tcHQgVGhlIHBvbGljeSBmb3IgVlRkIGRyaXZlciBiZWhhdmlvci4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IGdJbnRlbFNpbGljb25Qa2dUb2tlblNw YWNlR3VpZC5QY2RWVGRQb2xpY3lQcm9wZXJ0eU1hc2t8MXxVSU5UOHwweDAwMA0KPiA+ID4gPiA+ IDAwMDAyDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuMTYuMi53aW5kb3dz LjENCj4gPg0KPiA+DQo+ID4NCj4gPiANCj4gPg0KDQo=